2024-12-17 17:10:26 +00:00
|
|
|
#
|
|
|
|
# spec file for package mold
|
|
|
|
#
|
- Update to version 2.36.0
* The --package-metadata=<string> option has been added to embed a given string
into the .note.package section. This option is designed for build scripts that
generate binary packages, such as .rpm or .deb, to include package metadata in
each executable. It simplifies the process of identifying the corresponding
package for a given executable or core file. (7ddc8f4)
* [ARM][PowerPC] We've improved the algorithm for creating range extension thunks
to reduce memory usage and improve speed. For example, linking clang-19 for
ARM64 is now ~7% faster than before. (9fc0ace)
* [RISC-V][LoongArch] We've improved the algorithm for code-shrinking linker
relaxation to reduce memory usage and improve speed. For example, linking
clang-19 for RISC-V is now ~4% faster than before. (3234d88)
* mold created a bad relocation for an IFUNC if the linker's output file type was
a shared library and the symbol was exported. This bug could cause a
segmentation fault of a linked program. The problem has now been fixed.
(a297859)
* [RISC-V] mold could produce incorrect code as a result of code-shrinking
relaxation for the R_RISCV_HI20 relocation. That type of relocation was used
rarely because it is not PC-relative. That being said, if your program used the
relocation, and the relocation targets were at a low address (from 0x1f800 to
0x20000), your program would crash at runtime due to the linker's bug. The issue
has now been resolved. (eec3f6b)
* [RISC-V][LoongArch] When the linker removed instructions from a function as a
result of code-shrinking relaxation, the function symbol's size in the output
file should be updated to reflect the result of relaxation, even though doing it
is mostly cosmetic. mold did not do that. Now, mold sets correct sizes to output
function symbols. (e6345d5)
* [LoongArch] Binaries linked with mold now work on 64 KiB page systems.
Previously, only up to 16 KiB pages were supported. (2d7b6b2)
* [s390x] The s390x processor-specific ABI requires the linker to reserve the
OBS-URL: https://build.opensuse.org/package/show/devel:tools:compiler/mold?expand=0&rev=136
2025-01-09 08:08:57 +00:00
|
|
|
# Copyright (c) 2025 SUSE LLC
|
2024-12-17 17:10:26 +00:00
|
|
|
#
|
|
|
|
# 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
|
- Update to version 2.36.0
* The --package-metadata=<string> option has been added to embed a given string
into the .note.package section. This option is designed for build scripts that
generate binary packages, such as .rpm or .deb, to include package metadata in
each executable. It simplifies the process of identifying the corresponding
package for a given executable or core file. (7ddc8f4)
* [ARM][PowerPC] We've improved the algorithm for creating range extension thunks
to reduce memory usage and improve speed. For example, linking clang-19 for
ARM64 is now ~7% faster than before. (9fc0ace)
* [RISC-V][LoongArch] We've improved the algorithm for code-shrinking linker
relaxation to reduce memory usage and improve speed. For example, linking
clang-19 for RISC-V is now ~4% faster than before. (3234d88)
* mold created a bad relocation for an IFUNC if the linker's output file type was
a shared library and the symbol was exported. This bug could cause a
segmentation fault of a linked program. The problem has now been fixed.
(a297859)
* [RISC-V] mold could produce incorrect code as a result of code-shrinking
relaxation for the R_RISCV_HI20 relocation. That type of relocation was used
rarely because it is not PC-relative. That being said, if your program used the
relocation, and the relocation targets were at a low address (from 0x1f800 to
0x20000), your program would crash at runtime due to the linker's bug. The issue
has now been resolved. (eec3f6b)
* [RISC-V][LoongArch] When the linker removed instructions from a function as a
result of code-shrinking relaxation, the function symbol's size in the output
file should be updated to reflect the result of relaxation, even though doing it
is mostly cosmetic. mold did not do that. Now, mold sets correct sizes to output
function symbols. (e6345d5)
* [LoongArch] Binaries linked with mold now work on 64 KiB page systems.
Previously, only up to 16 KiB pages were supported. (2d7b6b2)
* [s390x] The s390x processor-specific ABI requires the linker to reserve the
OBS-URL: https://build.opensuse.org/package/show/devel:tools:compiler/mold?expand=0&rev=136
2025-01-09 08:08:57 +00:00
|
|
|
Version: 2.36.0
|
2024-12-17 17:10:26 +00:00
|
|
|
Release: 0
|
|
|
|
Summary: A Modern Linker (mold)
|
|
|
|
License: MIT
|
|
|
|
Group: Development/Tools/Building
|
|
|
|
URL: https://github.com/rui314/mold
|
|
|
|
Source: https://github.com/rui314/mold/archive/v%{version}/mold-%{version}.tar.gz
|
|
|
|
Patch0: build-blake-3-as-static.patch
|
|
|
|
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
|
|
|
|
%ifnarch ppc64
|
|
|
|
BuildRequires: valgrind
|
|
|
|
%endif
|
|
|
|
BuildRequires: zlib-devel
|
|
|
|
BuildRequires: zstd
|
|
|
|
PreReq: update-alternatives
|
|
|
|
|
|
|
|
%if %{suse_version} < 1600
|
|
|
|
%define build_args -DMOLD_USE_MIMALLOC=OFF -DMOLD_USE_MIMALLOC=OFF -DCMAKE_INSTALL_DOCDIR:PATH=%{_docdir}/%{name}
|
|
|
|
%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 %{_docdir}/mold
|
|
|
|
%doc %{_docdir}/mold/LICENSE
|
|
|
|
|
|
|
|
%changelog
|