binutils: update to 2.35.1

- template is now overhauled
- relro by default
- pic by default (avoids rebuild hack)
- 64-bit bfd can be default
- more reliable target dirs
- default hash style is always set
- build in a separate dir
This commit is contained in:
q66 2021-01-07 01:25:10 +01:00 committed by Daniel Kolesa
parent f2f3c6661b
commit e5717ea9a0
2 changed files with 152 additions and 57 deletions

View file

@ -0,0 +1,86 @@
From b1faf99f3e546df2cd302bb1ad36a2078224fe8b Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 30 Oct 2020 16:59:48 -0600
Subject: [PATCH] Revert "PR25882, .gnu.attributes are not checked for shared
libraries"
This reverts commit a8acd6eeb6dc2cc5460ece90f90ebe36b56b20ba.
---
bfd/ChangeLog | 6 ------
bfd/elf32-tic6x.c | 3 ---
ld/ChangeLog | 6 ------
ld/ldlang.c | 9 ++++-----
4 files changed, 4 insertions(+), 20 deletions(-)
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 9fac12538a..b5461494e8 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1422,12 +1422,6 @@
accessing root.u.def of symbols. Also check root.u.def.section
is non-NULL. Reverse tests so as to make the logic positive.
-2020-05-01 Alan Modra <amodra@gmail.com>
-
- PR 25882
- * elf32-tic6x.c (elf32_tic6x_merge_attributes): Don't transfer
- Tag_ABI_PIC or Tag_ABI_PID from dynamic objects to the output.
-
2020-05-01 Alan Modra <amodra@gmail.com>
PR 25882
diff --git a/bfd/elf32-tic6x.c b/bfd/elf32-tic6x.c
index b8b916bfd3..91bb6a10b1 100644
--- a/bfd/elf32-tic6x.c
+++ b/bfd/elf32-tic6x.c
@@ -3748,9 +3748,6 @@ elf32_tic6x_merge_attributes (bfd *ibfd, struct bfd_link_info *info)
case Tag_ABI_PIC:
case Tag_ABI_PID:
- /* Don't transfer these tags from dynamic objects. */
- if ((ibfd->flags & DYNAMIC) != 0)
- continue;
if (out_attr[i].i > in_attr[i].i)
out_attr[i].i = in_attr[i].i;
break;
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 4eec7d2977..b93452f70c 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1319,12 +1319,6 @@
* testsuite/ld-aarch64/farcall-group.d: New test driver.
* testsuite/ld-aarch64/aarch64-elf.exp: Run the new test.
-2020-05-01 Alan Modra <amodra@gmail.com>
-
- PR 25882
- * ldlang.c (lang_check): Call bfd_merge_private_bfd_data for
- shared libraries.
-
2020-05-01 Alan Modra <amodra@gmail.com>
* po/BLD-POTFILES.in: Regenerate.
diff --git a/ld/ldlang.c b/ld/ldlang.c
index 9977195074..173d8ec349 100644
--- a/ld/ldlang.c
+++ b/ld/ldlang.c
@@ -6972,12 +6972,11 @@ lang_check (void)
bfd_printable_name (input_bfd), input_bfd,
bfd_printable_name (link_info.output_bfd));
}
-
- /* If the input bfd has no contents, it shouldn't set the
- private data of the output bfd. */
- else if ((input_bfd->flags & DYNAMIC) != 0
- || bfd_count_sections (input_bfd) != 0)
+ else if (bfd_count_sections (input_bfd))
{
+ /* If the input bfd has no contents, it shouldn't set the
+ private data of the output bfd. */
+
bfd_error_handler_type pfn = NULL;
/* If we aren't supposed to warn about mismatched input
--
2.29.2

View file

@ -1,14 +1,15 @@
# Template file for 'binutils'
pkgname=binutils
version=2.34
revision=2
version=2.35.1
revision=1
bootstrap=yes
short_desc="GNU binary utilities"
maintainer="Enno Boland <gottox@voidlinux.org>"
license="GPL-3.0-or-later"
homepage="http://www.gnu.org/software/binutils/"
distfiles="${GNU_SITE}/$pkgname/$pkgname-$version.tar.xz"
checksum=f00b0e8803dc9bab1e2165bd568528135be734df3fabf8d0161828cd56028952
checksum=3ced91db9bf01182b7e420eab68039f2083aed0a214c0424e257eae3ddee8607
patch_args="-Np1"
makedepends="zlib-devel"
if [ "$CHROOT_READY" ]; then
@ -30,73 +31,86 @@ _get_triplet() {
}
do_configure() {
local CONFIGFLAG="--build=$(_get_triplet)
--prefix=/usr
--enable-threads
--enable-plugins
--enable-secureplt
--with-mmap
--disable-shared
--enable-gold
--disable-werror
--enable-deterministic-archives
--enable-ld=default
--disable-nls"
local conf
if [ "$CHROOT_READY" ]; then
CONFIGFLAG+=" --with-debuginfod"
conf+=" --with-debuginfod"
else
CONFIGFLAG+=" --without-debuginfod"
fi
if [ "$XBPS_TARGET_MACHINE" = "x86_64" ]; then
CONFIGFLAG+=" --enable-64-bit-bfd --enable-multilib"
conf+=" --without-debuginfod"
fi
if [ "$CROSS_BUILD" ]; then
# Do not use configure_args nor build_style=gnu-configure,
# avoiding --with-sysroot to $XBPS_CROSS_BASE.
CONFIGFLAG+=" --host=$XBPS_CROSS_TRIPLET --with-build-sysroot=$XBPS_CROSS_BASE"
# we don't want --with-sysroot=${XBPS_CROSS_BASE} like gnu-configure
conf+=" --host=${XBPS_CROSS_TRIPLET} --with-build-sysroot=${XBPS_CROSS_BASE}"
fi
if [ "$XBPS_TARGET_MACHINE" = "mips-musl" -o "$XBPS_TARGET_MACHINE" = "mipsel-musl" ]; then
CONFIGFLAG+=" --with-float=soft --without-fp"
case "$XBPS_TARGET_MACHINE" in
ppc*)
conf+=" --enable-secureplt"
;;
x86_64*)
conf+=" --enable-targets=x86_64-pep"
;;
i686*)
conf+=" --enable-targets=x86_64-linux-gnu,x86_64-pep"
;;
esac
# enable multilib on x86_64 glibc
if [ "$XBPS_TARGET_MACHINE" = "x86_64" ]; then
conf+=" --enable-multilib"
else
conf+=" --disable-multilib"
fi
if [ "${XBPS_TARGET_MACHINE%-musl}" = "x86_64" ]; then
CONFIGFLAG+=" --enable-targets=x86_64-pep"
elif [ "${XBPS_TARGET_MACHINE%-musl}" = "i686" ]; then
CONFIGFLAG+=" --enable-64-bit-bfd --enable-targets=x86_64-linux-gnu,x86_64-pep"
fi
./configure $CONFIGFLAG
# ensure softfloat on sf mips targets and set the default hash style
case "$XBPS_TARGET_MACHINE" in
mips*hf*) conf+=" --enable-default-hash-style=sysv" ;;
mips*) conf+=" --without-fp --enable-default-hash-style=sysv" ;;
*) conf+=" --enable-default-hash-style=gnu";;
esac
mkdir build && cd build
../configure --build=$(_get_triplet) \
--prefix=/usr \
--libdir=/usr/lib \
--mandir=/usr/share/man \
--infodir=/usr/share/info \
--disable-werror \
--disable-shared \
--disable-nls \
--enable-threads \
--enable-plugins \
--enable-relro \
--enable-gold \
--enable-deterministic-archives \
--enable-64-bit-bfd \
--enable-ld=default \
--with-system-zlib \
--with-mmap \
--with-pic \
$conf
}
do_build() {
make ${makejobs}
# Rebuild libiberty.a with -fPIC
cp -a libiberty libiberty-pic
make -C libiberty-pic clean
make CFLAGS="$CFLAGS -fPIC" -C libiberty-pic
# Rebuild libbfd.a with -fPIC
# hidden visability prevent 3rd party shared libraries exporting bfd non-stable API
cp -a bfd bfd-pic
make -C bfd-pic clean
make CFLAGS="$CFLAGS -fPIC -fvisibility=hidden" -C bfd-pic
# Rebuild libopcodes.a with -fPIC
cp -a opcodes opcodes-pic
make -C opcodes-pic clean
make CFLAGS="$CFLAGS -fPIC" -C opcodes-pic
cd ${wrksrc}/build && make ${makejobs}
}
# if you enable this later, keep it off for [ -z "$CHROOT_READY" ]
# there is a testsuite now, but e.g. ifunc tests all fail on musl and
# also there are other tests that fail on different targets for fairly
# harmless reasons and it's just too much effort to fix it all
do_check() {
# Seems like upstream forgot to include their new
# test-driver executable in their tarball...
:
[ "$CHROOT_READY" ] || return 0
: # cba for now
}
do_install() {
cd ${wrksrc}/build
local _triplet=$(_get_triplet)
make DESTDIR=${DESTDIR} tooldir=/usr install
cd ..
# Remove ld (hardlink) and make a symlink to ld.bfd.
rm -f ${DESTDIR}/usr/bin/ld
ln -sfr ${DESTDIR}/usr/bin/ld.bfd ${DESTDIR}/usr/bin/ld
@ -105,11 +119,6 @@ do_install() {
vinstall include/libiberty.h 644 usr/include
vinstall include/demangle.h 644 usr/include
# install libraries rebuilt with -fPIC
vinstall libiberty-pic/libiberty.a 644 usr/lib
vinstall bfd-pic/libbfd.a 644 usr/lib
vinstall opcodes-pic/libopcodes.a 644 usr/lib
# Remove these symlinks, they are not ABI stable.
# Programs should compile static to the .a file.
rm -f ${DESTDIR}/usr/lib/lib{bfd,opcodes}.so