# Maintainer: Giancarlo Razzolini # Maintainer: Frederik Schwan # Contributor: Bartłomiej Piotrowski # Contributor: Allan McRae # toolchain build order: linux-api-headers->glibc->binutils->gcc->glibc->binutils->gcc pkgname=binutils pkgver=2.42+r91+g6224493e457 _commit=6224493e457e72b11818c87cdc112bdb0fee5f81 pkgrel=1 pkgdesc='A set of programs to assemble and manipulate binary and object files' arch=(x86_64) url='https://www.gnu.org/software/binutils/' license=(GPL-2.0-or-later GPL-3.0-or-later LGPL-2.0-or-later LGPL-3.0-or-later GFDL-1.3 FSFAP) depends=(glibc jansson libelf zlib zstd) makedepends=(git) checkdepends=(dejagnu debuginfod bc) optdepends=('debuginfod: for debuginfod server/client functionality') conflicts=(binutils-multilib) replaces=(binutils-multilib) provides=( libctf.so libgprofng.so libsframe.so ) backup=('etc/gprofng.rc') options=(staticlibs !distcc !ccache) source=(git+https://sourceware.org/git/binutils-gdb.git#commit=${_commit} gold-warn-unsupported.patch) sha256sums=('a36780f5918bf383520f44374b2daa2bc737f55aa2601458b9b35d576b4aa7df' '2d430b66f84a19c154725ec535280c493be1d34f1a90f95208dce02fecd0e4e4') validpgpkeys=(3A24BC1E8FB409FA9F14371813FCEF89DD9E3C4F) pkgver() { cd binutils-gdb git describe --tags | sed 's/[^-]*-//;s/[^-]*-/&r/;s/-/+/g;s/_/./' } prepare() { [[ ! -d binutils-gdb ]] && ln -s binutils-${pkgver} binutils-gdb mkdir -p binutils-build cd binutils-gdb # Turn off development mode (-Werror, gas run-time checks, date in sonames) sed -i '/^development=/s/true/false/' bfd/development.sh # Creds @Fedora # Change the gold configuration script to only warn about # unsupported targets. This allows the binutils to be built with # BPF support enabled. patch -Np1 -i "${srcdir}"/gold-warn-unsupported.patch } build() { cd binutils-build "${srcdir}"/binutils-gdb/configure \ --prefix=/usr \ --sysconfdir="${pkgdir}"/etc \ --with-lib-path=/usr/lib:/usr/local/lib \ --with-bugurl=https://gitlab.archlinux.org/archlinux/packaging/packages/binutils/-/issues \ --enable-cet \ --enable-colored-disassembly \ --enable-default-execstack=no \ --enable-deterministic-archives \ --enable-gold \ --enable-install-libiberty \ --enable-jansson \ --enable-ld=default \ --enable-new-dtags \ --enable-pgo-build=lto \ --enable-plugins \ --enable-relro \ --enable-shared \ --enable-targets=x86_64-pep,bpf-unknown-none \ --enable-threads \ --disable-gdb \ --disable-gdbserver \ --disable-libdecnumber \ --disable-readline \ --disable-sim \ --disable-werror \ --with-debuginfod \ --with-pic \ --with-system-zlib make -O tooldir=/usr # Extract the FSF All Permissive License # # used for some linker scripts. tail -n 5 "${srcdir}"/binutils-gdb/ld/scripttempl/README > FSFAP } check() { cd binutils-build # Use minimal flags for testsuite # ld testsuite uses CFLAGS_FOR_TARGET and requires -g # gold testsuite requires CXXFLAGS/CFLAGS with default PIE/PIC disabled make -O CFLAGS_FOR_TARGET="-O2 -g" \ CXXFLAGS="-O2 -no-pie -fno-PIC" \ CFLAGS="-O2 -no-pie" \ LDFLAGS="" \ check || true } package() { cd binutils-build make prefix="${pkgdir}"/usr tooldir="${pkgdir}"/usr install # install PIC version of libiberty install -m644 libiberty/pic/libiberty.a "${pkgdir}"/usr/lib # Remove unwanted files rm -f "${pkgdir}"/usr/share/man/man1/{dlltool,windres,windmc}* # No shared linking to these files outside binutils rm -f "${pkgdir}"/usr/lib/lib{bfd,opcodes}.so tee "${pkgdir}"/usr/lib/libbfd.so << EOS /* GNU ld script */ INPUT( /usr/lib/libbfd.a -lsframe -liberty -lz -lzstd -ldl ) EOS tee "${pkgdir}"/usr/lib/libopcodes.so << EOS /* GNU ld script */ INPUT( /usr/lib/libopcodes.a -lbfd ) EOS # install FSF All Permissive License install -Dm644 -t "${pkgdir}"/usr/share/licenses/${pkgname}/ FSFAP }