mold/mold.spec
Martin Liška dbddaefcb5 - Update to version 2.3.2
* Remove upstream patch fix-arm.patch.
  * mold no longer emits dynamic relocations against the text segment for GNU ifunc
    symbols. Previously, mold emitted such relocations for position-dependent
    executables. (4cdfc7e)
  * mold no longer reports the "REL-type relocation table is not supported for this
    target" error and instead ignore incompatible relocation tables. LLVM generates
    such non-conforming relocation tables for the .llvm.call-graph-profile section.
    This change was made for compatibility. (3791900)
  * mold now pads unused gaps in the text segment with interrupt or NOP
    instructions, instead of leaving them filled with zeros. This alteration does
    not change the program's semantics but prevents disassemblers from interpreting
    the spaces between functions as valid instructions. (c86a59a)
  * mold now creates the .mold-lock file for MOLD_JOBS not in the home directory but
    in $XDG_RUNTIME_DIR, which is usually /var/user/<uid>. (39cdf61)
  * [ARM32] There was an issue preventing mold from being built on an ARMv8 64-bit
    ARM processor with an ARM32 userland, such as the 32-bit Raspberry Pi OS running
    on a Raspberry Pi 4. This build issue has been resolved. (02ead29)
  * [LoongArch] mold can now handle R_LARCH_PCALA_LO12 relocation for the jirl
    instruction. (d3188e3)

OBS-URL: https://build.opensuse.org/package/show/devel:tools:compiler/mold?expand=0&rev=104
2023-11-05 06:58:57 +00:00

116 lines
3.0 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: 2.3.2
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} < 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
%doc /usr/share/doc/mold/LICENSE.third-party
%changelog