2021-12-21 18:39:05 +00:00
|
|
|
#
|
|
|
|
# spec file for package mold
|
|
|
|
#
|
- Update to version 2.4.1
* mold 2.4.0 or prior may promote weak dynamic symbols to strong ones under a rare
circumstance, which caused "undefined symbol" error at runtime. The bug has been
fixed. (50bdf39)
* Previously, if two or more VERSION clauses in a version script match to the same
symbol, the first one took precedence. This was incompatible with GNU ld, which
gives the last one the highest priority, causing a Qt library link failure. This
compatibility issue has been resolved. (e1e16bf)
* By default, we demangle symbols in error messages so that they are easier to
read. Previously, Rust symbols could accidentally be demangled as C++ symbols.
Now, mold attempts to demangle symbols as Rust ones only for object files
created by rustc. (ea9864b)
* [RISC-V] mold now relaxes a GOT-load instruction sequence into a direct address
materialization if the symbol address is known at link time. This relaxation
eliminates one memory load and slightly improves the linked program's
performance. (2ccaa81)
* [PowerPC64 ELFv2] GCC may emit references to _savegpr0_*, _restgpr0_*,
_savegpr1_* and _restgpr1_* symbols for the -Os command line option to optimize
the output for code size. These symbols are not defined by any object file and
expected to be synthesized by the linker. mold didn't use to synthesize these
symbols, and therefore object files created with -Os sometimes failed due to
missing symbol errors. Now, mold synthesizes these symbols. (d4ff48a)
* [PowerPC64] R_PPC64_DTPREL16_LO_DS relocation type has now been supported.
(6d8e6af)
* [Illumos] On Illumos OS, absolute symbols in DSOs need to be resolved at runtime
because the dynamic linker treats such symbols in a special manner. Previously,
mold directly used absolute symbol addresses at link-time and did not place them
into the dynamic symbol table. That optimization has been removed for
compatibility with Illumos. (bed5b17, 7f8d77d)
OBS-URL: https://build.opensuse.org/package/show/devel:tools:compiler/mold?expand=0&rev=112
2024-03-01 14:53:28 +00:00
|
|
|
# Copyright (c) 2024 SUSE LLC
|
2021-12-21 18:39:05 +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.
|
|
|
|
|
2022-01-04 18:37:29 +00:00
|
|
|
# Please submit bugfixes or comments via https://bugs.opensuse.org/
|
2021-12-21 18:39:05 +00:00
|
|
|
#
|
|
|
|
|
|
|
|
|
|
|
|
Name: mold
|
- Update to version 2.4.1
* mold 2.4.0 or prior may promote weak dynamic symbols to strong ones under a rare
circumstance, which caused "undefined symbol" error at runtime. The bug has been
fixed. (50bdf39)
* Previously, if two or more VERSION clauses in a version script match to the same
symbol, the first one took precedence. This was incompatible with GNU ld, which
gives the last one the highest priority, causing a Qt library link failure. This
compatibility issue has been resolved. (e1e16bf)
* By default, we demangle symbols in error messages so that they are easier to
read. Previously, Rust symbols could accidentally be demangled as C++ symbols.
Now, mold attempts to demangle symbols as Rust ones only for object files
created by rustc. (ea9864b)
* [RISC-V] mold now relaxes a GOT-load instruction sequence into a direct address
materialization if the symbol address is known at link time. This relaxation
eliminates one memory load and slightly improves the linked program's
performance. (2ccaa81)
* [PowerPC64 ELFv2] GCC may emit references to _savegpr0_*, _restgpr0_*,
_savegpr1_* and _restgpr1_* symbols for the -Os command line option to optimize
the output for code size. These symbols are not defined by any object file and
expected to be synthesized by the linker. mold didn't use to synthesize these
symbols, and therefore object files created with -Os sometimes failed due to
missing symbol errors. Now, mold synthesizes these symbols. (d4ff48a)
* [PowerPC64] R_PPC64_DTPREL16_LO_DS relocation type has now been supported.
(6d8e6af)
* [Illumos] On Illumos OS, absolute symbols in DSOs need to be resolved at runtime
because the dynamic linker treats such symbols in a special manner. Previously,
mold directly used absolute symbol addresses at link-time and did not place them
into the dynamic symbol table. That optimization has been removed for
compatibility with Illumos. (bed5b17, 7f8d77d)
OBS-URL: https://build.opensuse.org/package/show/devel:tools:compiler/mold?expand=0&rev=112
2024-03-01 14:53:28 +00:00
|
|
|
Version: 2.4.1
|
2021-12-21 18:39:05 +00:00
|
|
|
Release: 0
|
|
|
|
Summary: A Modern Linker (mold)
|
2023-07-26 13:08:35 +00:00
|
|
|
License: MIT
|
2022-06-18 07:21:47 +00:00
|
|
|
Group: Development/Tools/Building
|
2022-01-04 18:37:29 +00:00
|
|
|
URL: https://github.com/rui314/mold
|
|
|
|
Source: https://github.com/rui314/mold/archive/v%{version}/mold-%{version}.tar.gz
|
2023-09-26 20:11:43 +00:00
|
|
|
Patch0: build-blake-3-as-static.patch
|
2021-12-21 18:39:05 +00:00
|
|
|
BuildRequires: cmake
|
2022-02-24 12:49:12 +00:00
|
|
|
%if %{suse_version} < 1550
|
2022-10-19 08:20:49 +00:00
|
|
|
BuildRequires: gcc11-c++
|
2022-02-24 12:49:12 +00:00
|
|
|
%else
|
2022-02-24 12:50:20 +00:00
|
|
|
# These libraries are not present for openSUSE Leap
|
2021-12-21 18:39:05 +00:00
|
|
|
BuildRequires: gcc-c++
|
2022-04-20 06:51:04 +00:00
|
|
|
BuildRequires: clang
|
2022-04-19 07:21:49 +00:00
|
|
|
BuildRequires: libdwarf-tools
|
2022-04-21 14:24:10 +00:00
|
|
|
BuildRequires: llvm
|
2022-04-20 07:01:37 +00:00
|
|
|
BuildRequires: llvm-gold
|
2022-01-04 18:37:29 +00:00
|
|
|
BuildRequires: tbb-devel
|
2022-04-20 06:53:47 +00:00
|
|
|
%ifarch x86_64
|
2022-04-20 06:53:26 +00:00
|
|
|
BuildRequires: gcc-32bit
|
|
|
|
%endif
|
2022-02-24 12:49:12 +00:00
|
|
|
%endif
|
2022-04-28 12:50:42 +00:00
|
|
|
BuildRequires: gdb
|
2022-04-19 06:44:11 +00:00
|
|
|
BuildRequires: glibc-devel-static
|
2022-09-27 07:24:13 +00:00
|
|
|
BuildRequires: libzstd-devel
|
2022-10-19 08:20:49 +00:00
|
|
|
%ifnarch ppc64
|
2022-05-05 11:17:20 +00:00
|
|
|
BuildRequires: valgrind
|
2022-10-19 08:20:49 +00:00
|
|
|
%endif
|
2021-12-21 18:39:05 +00:00
|
|
|
BuildRequires: zlib-devel
|
2022-09-27 07:24:13 +00:00
|
|
|
BuildRequires: zstd
|
2021-12-21 18:39:05 +00:00
|
|
|
PreReq: update-alternatives
|
|
|
|
|
2022-02-24 12:49:12 +00:00
|
|
|
%if %{suse_version} < 1550
|
2022-10-19 08:20:49 +00:00
|
|
|
%define build_args -DMOLD_USE_MIMALLOC=OFF -DMOLD_USE_MIMALLOC=OFF
|
2022-02-24 12:49:12 +00:00
|
|
|
%else
|
2022-10-19 08:20:49 +00:00
|
|
|
%define build_args -DMOLD_USE_MIMALLOC=OFF -DMOLD_USE_MIMALLOC=OFF -DMOLD_USE_SYSTEM_TBB=ON
|
2022-02-24 12:49:12 +00:00
|
|
|
%endif
|
2021-12-22 19:18:10 +00:00
|
|
|
|
2021-12-21 18:39:05 +00:00
|
|
|
%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
|
2022-01-04 18:37:29 +00:00
|
|
|
%autosetup -p1
|
2021-12-21 18:39:05 +00:00
|
|
|
|
|
|
|
%build
|
2022-02-24 12:49:12 +00:00
|
|
|
%if %{suse_version} < 1550
|
2022-10-19 08:20:49 +00:00
|
|
|
export CC=gcc-11
|
|
|
|
export CXX=g++-11
|
2022-02-24 12:49:12 +00:00
|
|
|
%endif
|
2022-10-19 08:20:49 +00:00
|
|
|
%cmake %{build_args}
|
|
|
|
%cmake_build
|
2022-04-08 15:45:32 +00:00
|
|
|
|
2021-12-21 18:39:05 +00:00
|
|
|
%install
|
2022-10-19 08:20:49 +00:00
|
|
|
%cmake_install
|
2021-12-21 18:39:05 +00:00
|
|
|
|
2022-04-19 06:44:11 +00:00
|
|
|
%check
|
2022-05-13 09:31:45 +00:00
|
|
|
%if %{suse_version} < 1550
|
2022-10-19 08:20:49 +00:00
|
|
|
export TEST_CC=gcc-11
|
|
|
|
export TEST_CXX=g++-11
|
2022-05-13 09:31:45 +00:00
|
|
|
%endif
|
2022-10-19 08:20:49 +00:00
|
|
|
%ctest
|
2022-04-19 06:44:11 +00:00
|
|
|
|
2021-12-21 18:39:05 +00:00
|
|
|
%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
|
2022-01-04 18:37:29 +00:00
|
|
|
%{_libexecdir}/mold/ld
|
|
|
|
%dir %{_libexecdir}/mold
|
2021-12-21 18:39:05 +00:00
|
|
|
%{_libdir}/mold/mold-wrapper.so
|
|
|
|
%{_mandir}/man1/mold.1.gz
|
2022-08-18 09:35:19 +00:00
|
|
|
%{_mandir}/man1/ld.mold.1.gz
|
- Update to version 2.4.1
* mold 2.4.0 or prior may promote weak dynamic symbols to strong ones under a rare
circumstance, which caused "undefined symbol" error at runtime. The bug has been
fixed. (50bdf39)
* Previously, if two or more VERSION clauses in a version script match to the same
symbol, the first one took precedence. This was incompatible with GNU ld, which
gives the last one the highest priority, causing a Qt library link failure. This
compatibility issue has been resolved. (e1e16bf)
* By default, we demangle symbols in error messages so that they are easier to
read. Previously, Rust symbols could accidentally be demangled as C++ symbols.
Now, mold attempts to demangle symbols as Rust ones only for object files
created by rustc. (ea9864b)
* [RISC-V] mold now relaxes a GOT-load instruction sequence into a direct address
materialization if the symbol address is known at link time. This relaxation
eliminates one memory load and slightly improves the linked program's
performance. (2ccaa81)
* [PowerPC64 ELFv2] GCC may emit references to _savegpr0_*, _restgpr0_*,
_savegpr1_* and _restgpr1_* symbols for the -Os command line option to optimize
the output for code size. These symbols are not defined by any object file and
expected to be synthesized by the linker. mold didn't use to synthesize these
symbols, and therefore object files created with -Os sometimes failed due to
missing symbol errors. Now, mold synthesizes these symbols. (d4ff48a)
* [PowerPC64] R_PPC64_DTPREL16_LO_DS relocation type has now been supported.
(6d8e6af)
* [Illumos] On Illumos OS, absolute symbols in DSOs need to be resolved at runtime
because the dynamic linker treats such symbols in a special manner. Previously,
mold directly used absolute symbol addresses at link-time and did not place them
into the dynamic symbol table. That optimization has been removed for
compatibility with Illumos. (bed5b17, 7f8d77d)
OBS-URL: https://build.opensuse.org/package/show/devel:tools:compiler/mold?expand=0&rev=112
2024-03-01 14:53:28 +00:00
|
|
|
%dir %{_docdir}/mold
|
|
|
|
%doc %{_docdir}/mold/LICENSE
|
|
|
|
%doc %{_docdir}/mold/LICENSE.third-party
|
2021-12-21 18:39:05 +00:00
|
|
|
|
|
|
|
%changelog
|