2021-12-21 18:39:05 +00:00
|
|
|
#
|
|
|
|
# spec file for package mold
|
|
|
|
#
|
2023-01-06 09:41:27 +00:00
|
|
|
# Copyright (c) 2023 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.0
* mold gained the --spare-program-headers=<number> option, which adds a specified
number of spare entries at the end of the program header. The option aims to
make post-processing tools to add program header entries very easily. Note that
sorting program header entries after adding new ones may be necessary to meet
the constraints of the ELF file format. For details, see the elf(5) man page.
(eb6c213)
* mold's -z rewrite-endbr option rewrites superflous endbr64 instructions with nop
as a countermeasure against control-flow highjacking attacks. Previously, this
worked exclusively with object files compiled with -ffunction-sections,
requiring each function to be compiled into a separate section. Starting from
this release, -z rewrite-endbr works on object files compiled without it. In
other words, mold is now capable of rewriting endbr64 instructions even if the
instruction is not at the beginning of a section. (3cb8a52)
* Previously, mold couldn't handle object files containing multiple .eh_frame
sections. The .eh_frame is a section containing data for exception handling.
Usually, an object file contains only one .eh_frame which describes how to
handle exceptions for all text sections in the same file. However, on rare
conditions, it seems ld -r creates an object file containing multiple .eh_frame
sections. mold is now able to handle such object files. (f4c5a8a)
* mold -run <command> is an easy way to run the given command with a virtual
environment in which the ld command is replaced with mold. The feature is
implemented using LD_PRELOAD to hook fork(2)-family functions. Before this
release, some invocations of ld were not intercepted correctly because we missed
the posix_spawnp(2) function. Now, the function is intercepted just like other
fork(2)-family functions. (3fd1cec)
* mold used to produce a non-working executable on a rare occasion when all
thread-local variables lacked an initial value and the read-only data required
alignment equal to or greater than the page size. This bug has been resolved.
(de7d37e)
OBS-URL: https://build.opensuse.org/package/show/devel:tools:compiler/mold?expand=0&rev=110
2023-11-30 05:37:22 +00:00
|
|
|
Version: 2.4.0
|
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
|
|
|
|
%dir /usr/share/doc/mold
|
|
|
|
%doc /usr/share/doc/mold/LICENSE
|
2023-08-13 19:41:06 +00:00
|
|
|
%doc /usr/share/doc/mold/LICENSE.third-party
|
2021-12-21 18:39:05 +00:00
|
|
|
|
|
|
|
%changelog
|