* mold now officially supports the --print-dependencies option to print out dependency information between input files. Here is a truncated example output when linking mold itself with the option. There are many use cases of the option; for example, if you want to eliminate the dependency to some library from your program, you can use this option to find out all the functions that use the library's function to fix them. (6fd47db) * [x86-64][s390x] mold now optimizes thread-local variable accesses in shared libraries if the library is linked with -z nodlopen. If your shared library is not intended to be used via dlopen(2) and your library frequently accesses thread-local variables, you might want to pass that option when linking your library. (25d02bb, f32ce33) * [arm64] mold is now able to optimize GOT load by rewriting an ADDR+LDR instruction pair with an ADDR+ADD if the loaded GOT value is known at link-time. (f2311b1) * mold 1.9.0 was up to 10% slower than 1.8.0 on some multicore machines. We fixed the performance regression and made it even faster than 1.8.0. (7132822) * Previously, mold failed to report an undefined symbol error if there's a weak undefined symbol of the same name. That bug resulted in producing a non-working executable instead of reporting a link failure. Now, mold correctly reports such link errors. (8936194) * mold 1.9.0 might crash with SIGSEGV if --emit-relocs is used with object files containing debug info. That bug has been fixed. (e17d7da) OBS-URL: https://build.opensuse.org/package/show/devel:tools:compiler/mold?expand=0&rev=85
115 lines
2.9 KiB
RPMSpec
115 lines
2.9 KiB
RPMSpec
#
|
|
# spec file for package mold
|
|
#
|
|
# Copyright (c) 2023 SUSE LLC
|
|
#
|
|
# All modifications and additions to the file contributed by third parties
|
|
# remain the property of their copyright owners, unless otherwise agreed
|
|
# upon. The license for this file, and modifications and additions to the
|
|
# file, is the same license as for the pristine package itself (unless the
|
|
# license for the pristine package is not an Open Source License, in which
|
|
# case the license is the MIT License). An "Open Source License" is a
|
|
# license that conforms to the Open Source Definition (Version 1.9)
|
|
# published by the Open Source Initiative.
|
|
|
|
# Please submit bugfixes or comments via https://bugs.opensuse.org/
|
|
#
|
|
|
|
|
|
Name: mold
|
|
Version: 1.10.0
|
|
Release: 0
|
|
Summary: A Modern Linker (mold)
|
|
License: AGPL-3.0-or-later
|
|
Group: Development/Tools/Building
|
|
URL: https://github.com/rui314/mold
|
|
Source: https://github.com/rui314/mold/archive/v%{version}/mold-%{version}.tar.gz
|
|
BuildRequires: cmake
|
|
%if %{suse_version} < 1550
|
|
BuildRequires: gcc11-c++
|
|
%else
|
|
# These libraries are not present for openSUSE Leap
|
|
BuildRequires: gcc-c++
|
|
BuildRequires: clang
|
|
BuildRequires: libdwarf-tools
|
|
BuildRequires: llvm
|
|
BuildRequires: llvm-gold
|
|
BuildRequires: tbb-devel
|
|
%ifarch x86_64
|
|
BuildRequires: gcc-32bit
|
|
%endif
|
|
%endif
|
|
BuildRequires: gdb
|
|
BuildRequires: glibc-devel-static
|
|
BuildRequires: libzstd-devel
|
|
BuildRequires: openssl-devel
|
|
%ifnarch ppc64
|
|
BuildRequires: valgrind
|
|
%endif
|
|
BuildRequires: zlib-devel
|
|
BuildRequires: zstd
|
|
PreReq: update-alternatives
|
|
|
|
%if %{suse_version} < 1550
|
|
%define build_args -DMOLD_USE_MIMALLOC=OFF -DMOLD_USE_MIMALLOC=OFF
|
|
%else
|
|
%define build_args -DMOLD_USE_MIMALLOC=OFF -DMOLD_USE_MIMALLOC=OFF -DMOLD_USE_SYSTEM_TBB=ON
|
|
%endif
|
|
|
|
%description
|
|
mold is a faster drop-in replacement for existing Unix linkers.
|
|
It is several times faster than LLVM lld linker, the second-fastest
|
|
open-source linker.
|
|
mold is created for increasing developer productivity by reducing
|
|
build time especially in rapid debug-edit-rebuild cycles.
|
|
|
|
%prep
|
|
%autosetup -p1
|
|
|
|
%build
|
|
%if %{suse_version} < 1550
|
|
export CC=gcc-11
|
|
export CXX=g++-11
|
|
%endif
|
|
%cmake %{build_args}
|
|
%cmake_build
|
|
|
|
%install
|
|
%cmake_install
|
|
|
|
%check
|
|
%if %{suse_version} < 1550
|
|
export TEST_CC=gcc-11
|
|
export TEST_CXX=g++-11
|
|
%endif
|
|
%ctest
|
|
|
|
%post
|
|
"%_sbindir/update-alternatives" --install \
|
|
"%_bindir/ld" ld "%_bindir/ld.mold" 1
|
|
|
|
%pre
|
|
if [ "$1" -gt 0 ] && [ -f %{_sbindir}/update-alternatives ] ; then
|
|
"%_sbindir/update-alternatives" --remove ld "%_bindir/ld.mold";
|
|
fi;
|
|
|
|
%postun
|
|
if [ ! -f %{_bindir}/lld ] ; then
|
|
"%{_sbindir}/update-alternatives" --remove ld "%{_bindir}/ld.mold"
|
|
fi
|
|
|
|
%files
|
|
%ghost %_sysconfdir/alternatives/ld
|
|
%{_bindir}/mold
|
|
%{_bindir}/ld.mold
|
|
%dir %{_libdir}/mold
|
|
%{_libexecdir}/mold/ld
|
|
%dir %{_libexecdir}/mold
|
|
%{_libdir}/mold/mold-wrapper.so
|
|
%{_mandir}/man1/mold.1.gz
|
|
%{_mandir}/man1/ld.mold.1.gz
|
|
%dir /usr/share/doc/mold
|
|
%doc /usr/share/doc/mold/LICENSE
|
|
|
|
%changelog
|