summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorPatrick J Volkerding <volkerdi@slackware.com>2021-08-29 18:23:50 +0000
committerEric Hameleers <alien@slackware.com>2021-08-30 08:59:55 +0200
commit34ba4d05d9d2b7f5d72aded4eb35aa617cb8629d (patch)
treefd24e6dc296552ed8ce520e595a71eea78e88e9c /source
parenta685863802fc9764aefd5b07106f3e3e54b210a3 (diff)
downloadcurrent-20210829182350.tar.gz
Sun Aug 29 18:23:50 UTC 202120210829182350
ap/man-pages-5.13-noarch-1.txz: Upgraded. d/binutils-2.37-x86_64-1.txz: Upgraded. With a few upstream patches to fix some regressions in the release, we no longer get any new FTBFS with this, so we'll take it. d/oprofile-1.4.0-x86_64-8.txz: Rebuilt. Recompiled against binutils-2.37. kde/sddm-0.19.0-x86_64-8.txz: Rebuilt. Patched to fix build. l/libcap-2.54-x86_64-1.txz: Upgraded. l/libssh-0.9.6-x86_64-1.txz: Upgraded. Fix possible heap-buffer overflow when rekeying with different key exchange mechanism. For more information, see: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-3634 (* Security fix *) l/qt5-5.15.3_20210826_21ea9c12-x86_64-1.txz: Upgraded. Switched to the patched qt5 from https://invent.kde.org/qt/qt/qt5.git. Huge thanks to Heinz Wiesinger for the script to create a release tarball. Likely this fixes many security issues. (* Security fix *) x/libglvnd-1.3.3-x86_64-1.txz: Upgraded. Reverted to this version because changes to the header files won't allow the EGL portions of Qt to properly compile.
Diffstat (limited to 'source')
-rwxr-xr-xsource/d/binutils/binutils.SlackBuild68
-rw-r--r--source/d/binutils/patches/0001-ELF-Don-t-generate-unused-section-symbols.patch3696
-rw-r--r--source/d/binutils/patches/binutils-2.20.51.0.10-copy-osabi.patch16
-rw-r--r--source/d/binutils/patches/binutils-2.20.51.0.10-sec-merge-emit.patch11
-rw-r--r--source/d/binutils/patches/binutils-2.24-ldforcele.patch54
-rw-r--r--source/d/binutils/patches/binutils-2.27-aarch64-ifunc.patch11
-rw-r--r--source/d/binutils/patches/binutils-CVE-2019-1010204.patch15
-rw-r--r--source/d/binutils/patches/binutils-bfd-close-fds.patch232
-rw-r--r--source/d/binutils/patches/binutils-do-not-link-with-static-libstdc++.patch83
-rw-r--r--source/d/binutils/patches/binutils-dwarf-5-dir0.patch201
-rw-r--r--source/d/binutils/patches/binutils-export-demangle.h.patch33
-rw-r--r--source/d/binutils/patches/binutils-filename-in-error-messages.patch134
-rw-r--r--source/d/binutils/patches/binutils-fix-testsuite-failures.patch330
-rw-r--r--source/d/binutils/patches/binutils-gold-i386-gnu-property-notes.patch193
-rw-r--r--source/d/binutils/patches/binutils-gold-mismatched-section-flags.patch19
-rw-r--r--source/d/binutils/patches/binutils-gold-warn-unsupported.patch66
-rw-r--r--source/d/binutils/patches/binutils-libtool-lib64.patch (renamed from source/d/binutils/patches/binutils-2.20.51.0.2-libtool-lib64.patch)0
-rw-r--r--source/d/binutils/patches/binutils-missing-man-pages.patch12
-rw-r--r--source/d/binutils/patches/binutils-no-config-h-check.patch28
-rw-r--r--source/d/binutils/patches/binutils-readelf-other-sym-info.patch35
-rw-r--r--source/d/binutils/patches/binutils-revert-PLT-elision.patch243
-rw-r--r--source/d/binutils/patches/binutils-special-sections-in-groups.patch27
-rw-r--r--source/d/binutils/patches/binutils-testsuite-fixes.patch952
-rw-r--r--source/d/binutils/patches/binutils-use-long-long.patch (renamed from source/d/binutils/patches/binutils-2.25-set-long-long.patch)0
-rw-r--r--source/d/binutils/patches/binutils-version.patch (renamed from source/d/binutils/patches/binutils-2.25-version.patch)0
-rw-r--r--source/d/binutils/patches/binutils.export.demangle.h.diff30
-rw-r--r--source/d/binutils/patches/binutils.no-config-h-check.diff14
-rwxr-xr-xsource/d/oprofile/oprofile.SlackBuild2
-rw-r--r--source/kde/kde/build/sddm2
-rw-r--r--source/kde/kde/patch/sddm.patch3
-rw-r--r--source/kde/kde/patch/sddm/sddm.fix.build.diff11
-rw-r--r--source/l/cryfs/041b5baea5a4efceff33df2f316646b47a1cd7c0.patch27
-rw-r--r--source/l/cryfs/27587ea1acec5f939a31217f1c43953378f18821.patch297
-rwxr-xr-xsource/l/cryfs/cryfs.SlackBuild10
-rwxr-xr-xsource/l/libssh/libssh.SlackBuild2
-rw-r--r--source/l/libssh/libssh.url1
-rwxr-xr-xsource/l/qt5/fetch_sources.sh58
-rw-r--r--source/l/qt5/patches/0006-Fix-build-with-GCC-11-include-limits.patch53
-rw-r--r--source/l/qt5/patches/qt5-qtdeclarative-gcc11.patch21
-rw-r--r--source/l/qt5/patches/qtconcurrentthreadengine.h-gcc11.patch14
-rwxr-xr-xsource/l/qt5/qt5.SlackBuild9
-rw-r--r--source/l/qt5/qt5.url1
42 files changed, 2749 insertions, 4265 deletions
diff --git a/source/d/binutils/binutils.SlackBuild b/source/d/binutils/binutils.SlackBuild
index f6ea8bb0..ff401137 100755
--- a/source/d/binutils/binutils.SlackBuild
+++ b/source/d/binutils/binutils.SlackBuild
@@ -26,7 +26,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=binutils
VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
-BUILD=${BUILD:-2}
+BUILD=${BUILD:-1}
# Automatically determine the architecture we're building on:
MARCH=$( uname -m )
@@ -94,24 +94,58 @@ tar xvf $CWD/binutils-$VERSION.tar.?z || exit 1
cd binutils-$VERSION || exit 1
# Various upstream patches:
-zcat $CWD/patches/binutils-2.20.51.0.2-libtool-lib64.patch.gz | patch -p1 --verbose || exit 1
-zcat $CWD/patches/binutils-2.25-version.patch.gz | patch -p1 --verbose || exit 1
-zcat $CWD/patches/binutils-2.25-set-long-long.patch.gz | patch -p1 --verbose || exit 1
-zcat $CWD/patches/binutils-2.20.51.0.10-copy-osabi.patch.gz | patch -p1 --verbose || exit 1
-zcat $CWD/patches/binutils-2.20.51.0.10-sec-merge-emit.patch.gz | patch -p1 --verbose || exit 1
-zcat $CWD/patches/binutils-2.24-ldforcele.patch.gz | patch -p1 --verbose || exit 1
-
-# Export the demangle.h header file:
-zcat $CWD/patches/binutils.export.demangle.h.diff.gz | patch -p1 --verbose || exit 1
-# Don't check to see if "config.h" was included in the installed headers:
-zcat $CWD/patches/binutils.no-config-h-check.diff.gz | patch -p1 --verbose || exit 1
+# (none currently)
+
+# These were shipped empty and will need to be regenerated:
+rm -f binutils/doc/*.1 binutils/doc/*.man gprof/gprof.1 ld/ld.1 gas/doc/as.1
+
+# Export the demangle.h header file (I suspect this is obsolete...):
+zcat $CWD/patches/binutils-export-demangle.h.patch.gz | patch -p1 --verbose || exit 1
-# Revert patch that breaks the kernel build:
-zcat $CWD/patches/0001-ELF-Don-t-generate-unused-section-symbols.patch.gz | patch -p1 -R --verbose || exit 1
+# Don't check to see if "config.h" was included in the installed headers:
+zcat $CWD/patches/binutils-no-config-h-check.patch.gz | patch -p1 --verbose || exit 1
# Set %version to something halfway meaningful:
+zcat $CWD/patches/binutils-version.patch.gz | patch -p1 --verbose || exit 1
sed -i -e 's/%''{release}/slack15/g' bfd/Makefile{.am,.in}
+# Use the "unsigned long long" type for pointers on hosts where long is a
+# 32-bit type but pointers are a 64-bit type. Necessary because users expect
+# to be able to install both the x86 and x86_64 versions of binutils on the
+# same machine, so they need identical versions of the bfd.h header file.
+zcat $CWD/patches/binutils-use-long-long.patch.gz | patch -p1 --verbose || exit 1
+
+# Work around a bug caused by binutils using an ancient libtool:
+zcat $CWD/patches/binutils-libtool-lib64.patch.gz | patch -p1 --verbose || exit 1
+
+# Various regression fixes:
+zcat $CWD/patches/binutils-2.27-aarch64-ifunc.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/binutils-CVE-2019-1010204.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/binutils-bfd-close-fds.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/binutils-do-not-link-with-static-libstdc++.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/binutils-dwarf-5-dir0.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/binutils-filename-in-error-messages.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/binutils-fix-testsuite-failures.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/binutils-gold-i386-gnu-property-notes.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/binutils-gold-mismatched-section-flags.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/binutils-gold-warn-unsupported.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/binutils-missing-man-pages.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/binutils-readelf-other-sym-info.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/binutils-revert-PLT-elision.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/binutils-special-sections-in-groups.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/binutils-testsuite-fixes.patch.gz | patch -p1 --verbose || exit 1
+
+# Thanks to Fedora:
+# Dependencies are not set up to rebuild the configure files
+# in the subdirectories. So we just rebuild the ones we care
+# about after applying the configure patches
+pushd libiberty
+autoconf
+popd
+pushd intl
+autoconf
+popd
+
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -182,6 +216,12 @@ rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
# that use that name:
( cd $PKG/usr/bin ; ln -sf strings strings-GNU )
+## Copy demangle.h, since some things might be looking for it in /usr/include,
+## and others in /usr/include/libiberty:
+#if [ -e $PKG//usr/include/libiberty/demangle.h -a ! -e $PKG//usr/include/demangle.h ]; then
+# cp -a $PKG//usr/include/libiberty/demangle.h $PKG//usr/include/demangle.h
+#fi
+
## OBSOLETE, since we're using tooldir=/usr. But we'll keep this cruft as a
## reference until we get the all clear on the tooldir= changes. :-)
## Move ldscripts to /usr/lib${LIBDIRSUFFIX}, and then put symlinks in place
diff --git a/source/d/binutils/patches/0001-ELF-Don-t-generate-unused-section-symbols.patch b/source/d/binutils/patches/0001-ELF-Don-t-generate-unused-section-symbols.patch
deleted file mode 100644
index 54a2cd06..00000000
--- a/source/d/binutils/patches/0001-ELF-Don-t-generate-unused-section-symbols.patch
+++ /dev/null
@@ -1,3696 +0,0 @@
-From d1bcae833b32f1408485ce69f844dcd7ded093a8 Mon Sep 17 00:00:00 2001
-From: "H.J. Lu" <hjl.tools@gmail.com>
-Date: Thu, 7 Jan 2021 06:42:00 -0800
-Subject: [PATCH] ELF: Don't generate unused section symbols
-
-For ELF targets, section symbols are required only for relocations.
-With -ffunction-sections -fdata-sections, there can be many unused
-section symbols. Sizes of libstdc++.a on Linux/x86-64 in GCC 11 are
-
-With unused section symbols : 39411698 bytes
-Without unused section symbols: 39227002 bytes
-
-The unused section symbols in libstdc++.a occupy more than 180 KB.
-
-Add BSF_SECTION_SYM_USED to indicate if a section symbol should be
-included in the symbol table. The BSF_SECTION_SYM_USED should be set
-if the section symbol is used for relocation or the section symbol is
-always included in the symbol table.
-
-Add keep_unused_section_symbols to bfd_target to indicate if unused
-section symbols should be kept. If TARGET_KEEP_UNUSED_SECTION_SYMBOLS
-is defined as FALSE, unused ection symbols will be removed.
-
-Tested on Linux/x86. Other ELF backends need to:
-
-1. Define TARGET_KEEP_UNUSED_SECTION_SYMBOLS to FALSE.
-2. Mark used section symbols in assembler backend.
-3. Remove unused section symbols from expected assembler and linker
-outputs.
-
-bfd/
-
- PR 27109
- * aix386-core.c (core_aix386_vec): Initialize
- keep_unused_section_symbol to TARGET_KEEP_UNUSED_SECTION_SYMBOLS.
- * aout-target.h (MY (vec)): Likewise.
- * binary.c (binary_vec): Likewise.
- * cisco-core.c (core_cisco_be_vec): Likewise.
- (core_cisco_le_vec): Likewise.
- * coff-alpha.c (alpha_ecoff_le_vec): Likewise.
- * coff-i386.c (TARGET_SYM): Likewise.
- (TARGET_SYM_BIG): Likewise.
- * coff-ia64.c (TARGET_SYM): Likewise.
- * coff-mips.c (mips_ecoff_le_vec): Likewise.
- (mips_ecoff_be_vec): Likewise.
- (mips_ecoff_bele_vec): Likewise.
- * coff-rs6000.c (rs6000_xcoff_vec): Likewise.
- (powerpc_xcoff_vec): Likewise.
- * coff-sh.c (sh_coff_small_vec): Likewise.
- (sh_coff_small_le_vec): Likewise.
- * coff-tic30.c (tic30_coff_vec): Likewise.
- * coff-tic54x.c (tic54x_coff0_vec): Likewise.
- (tic54x_coff0_beh_vec): Likewise.
- (tic54x_coff1_vec): Likewise.
- (tic54x_coff1_beh_vec): Likewise.
- (tic54x_coff2_vec): Likewise.
- (tic54x_coff2_beh_vec): Likewise.
- * coff-x86_64.c (TARGET_SYM): Likewise.
- (TARGET_SYM_BIG): Likewise.
- * coff64-rs6000.c (rs6000_xcoff64_vec): Likewise.
- (rs6000_xcoff64_aix_vec): Likewise.
- * coffcode.h (CREATE_BIG_COFF_TARGET_VEC): Likewise.
- (CREATE_BIGHDR_COFF_TARGET_VEC): Likewise.
- (CREATE_LITTLE_COFF_TARGET_VEC): Likewise.
- * elfxx-target.h (TARGET_BIG_SYM): Likewise.
- (TARGET_LITTLE_SYM): Likewise.
- * hppabsd-core.c (core_hppabsd_vec): Likewise.
- * hpux-core.c (core_hpux_vec): Likewise.
- * i386msdos.c (i386_msdos_vec): Likewise.
- * ihex.c (ihex_vec): Likewise.
- * irix-core.c (core_irix_vec): Likewise.
- * mach-o-target.c (TARGET_NAME): Likewise.
- * mmo.c (mmix_mmo_vec): Likewise.
- * netbsd-core.c (core_netbsd_vec): Likewise.
- * osf-core.c (core_osf_vec): Likewise.
- * pdp11.c (MY (vec)): Likewise.
- * pef.c (pef_vec): Likewise.
- (pef_xlib_vec): Likewise.
- * plugin.c (plugin_vec): Likewise.
- * ppcboot.c (powerpc_boot_vec): Likewise.
- * ptrace-core.c (core_ptrace_vec): Likewise.
- * sco5-core.c (core_sco5_vec): Likewise.
- * som.c (hppa_som_vec): Likewise.
- * srec.c (srec_vec): Likewise.
- (symbolsrec_vec): Likewise.
- * tekhex.c (tekhex_vec): Likewise.
- * trad-core.c (core_trad_vec): Likewise.
- * verilog.c (verilog_vec): Likewise.
- * vms-alpha.c (alpha_vms_vec): Likewise.
- * vms-lib.c (alpha_vms_lib_txt_vec): Likewise.
- * wasm-module.c (wasm_vec): Likewise.
- * xsym.c (sym_vec): Likewise.
- * elf.c (ignore_section_sym): Return TRUE if BSF_SECTION_SYM_USED
- isn't set.
- (elf_map_symbols): Don't include ignored section symbols.
- * elfcode.h (elf_slurp_symbol_table): Also set
- BSF_SECTION_SYM_USED on STT_SECTION symbols.
- * elflink.c (bfd_elf_final_link): Generated section symbols only
- when emitting relocations or reqired.
- * elfxx-x86.h (TARGET_KEEP_UNUSED_SECTION_SYMBOLS): New.
- * syms.c (BSF_SECTION_SYM_USED): New.
- * targets.c (TARGET_KEEP_UNUSED_SECTION_SYMBOLS): New.
- (bfd_target): Add keep_unused_section_symbols.
- (bfd_keep_unused_section_symbols): New.
- * bfd-in2.h: Regenerated.
-
-binutils/
-
- PR 27109
- * objcopy.c (copy_object): Handle section symbols for
- non-relocatable inputs.
- * testsuite/binutils-all/readelf.exp (readelf_test): Check
- is_elf_unused_section_symbols.
- * testsuite/binutils-all/readelf.s-64: Updated.
- * testsuite/binutils-all/readelf.ss: Likewise.
- * testsuite/binutils-all/readelf.ss-64: Likewise.
- * testsuite/binutils-all/readelf.s-64-unused: New file.
- * testsuite/binutils-all/readelf.ss-64-unused: Likewise.
- * testsuite/binutils-all/readelf.ss-unused: Likewise.
- * testsuite/lib/binutils-common.exp
- (is_elf_unused_section_symbols): New proc.
-
-gas/ChangeLog:
-
- PR 27109
- * read.c (s_reloc): Call symbol_mark_used_in_reloc on the
- section symbol.
- * subsegs.c (subseg_set_rest): Set BSF_SECTION_SYM_USED if needed.
- * write.c (adjust_reloc_syms): Call symbol_mark_used_in_reloc
- on the section symbol.
- (set_symtab): Don't generate unused section symbols.
- (maybe_generate_build_notes): Call symbol_mark_used_in_reloc
- on the section symbol.
- * config/obj-elf.c (elf_adjust_symtab): Call
- symbol_mark_used_in_reloc on the group signature symbol.
- * testsuite/gas/cfi/cfi-label.d: Remove unused section symbols
- from expected output.
- * testsuite/gas/elf/elf.exp (run_elf_list_test): Check
- is_elf_unused_section_symbols.
- * testsuite/gas/elf/section2.e: Updated.
- * testsuite/gas/elf/section2.e-unused: New file.
- * testsuite/gas/elf/symver.d: Remove unused section symbols.
- * testsuite/gas/i386/ilp32/elf/symver.d: Likewise.
- * testsuite/gas/i386/ilp32/x86-64-size-1.d: Likewise.
- * testsuite/gas/i386/ilp32/x86-64-size-3.d: Likewise.
- * testsuite/gas/i386/ilp32/x86-64-size-5.d: Likewise.
- * testsuite/gas/i386/ilp32/x86-64-unwind.d: Likewise.
- * testsuite/gas/i386/size-1.d: Likewise.
- * testsuite/gas/i386/size-3.d: Likewise.
- * testsuite/gas/i386/svr4.d: Likewise.
- * testsuite/gas/i386/x86-64-size-1.d: Likewise.
- * testsuite/gas/i386/x86-64-size-3.d: Likewise.
- * testsuite/gas/i386/x86-64-size-5.d: Likewise.
- * testsuite/gas/i386/x86-64-unwind.d: Likewise.
-
-ld/
-
- PR 27109
- * testsuite/ld-elf/export-class.sd: Adjust the expected output.
- * testsuite/ld-elf/loadaddr3b.d: Likewise.
- * testsuite/ld-i386/ibt-plt-1.d: Likewise.
- * testsuite/ld-i386/ibt-plt-2a.d: Likewise.
- * testsuite/ld-i386/ibt-plt-2c.d: Likewise.
- * testsuite/ld-i386/ibt-plt-3a.d: Likewise.
- * testsuite/ld-i386/ibt-plt-3c.d: Likewise.
- * testsuite/ld-i386/pr19636-1d.d: Likewise.
- * testsuite/ld-i386/pr19636-1l.d: Likewise.
- * testsuite/ld-i386/pr19636-2c.d: Likewise.
- * testsuite/ld-ifunc/ifunc-2-i386-now.d: Likewise.
- * testsuite/ld-ifunc/ifunc-2-local-i386-now.d: Likewise.
- * testsuite/ld-ifunc/ifunc-2-local-x86-64-now.d: Likewise.
- * testsuite/ld-ifunc/ifunc-2-x86-64-now.d: Likewise.
- * testsuite/ld-ifunc/ifunc-21-x86-64.d: Likewise.
- * testsuite/ld-ifunc/ifunc-22-x86-64.d: Likewise.
- * testsuite/ld-ifunc/pr17154-i386-now.d: Likewise.
- * testsuite/ld-ifunc/pr17154-i386.d: Likewise.
- * testsuite/ld-ifunc/pr17154-x86-64-now.d: Likewise.
- * testsuite/ld-ifunc/pr17154-x86-64.d: Likewise.
- * testsuite/ld-x86-64/bnd-branch-1-now.d: Likewise.
- * testsuite/ld-x86-64/bnd-ifunc-1-now.d: Likewise.
- * testsuite/ld-x86-64/bnd-ifunc-2-now.d: Likewise.
- * testsuite/ld-x86-64/bnd-ifunc-2.d: Likewise.
- * testsuite/ld-x86-64/bnd-plt-1-now.d: Likewise.
- * testsuite/ld-x86-64/bnd-plt-1.d: Likewise.
- * testsuite/ld-x86-64/ibt-plt-1-x32.d: Likewise.
- * testsuite/ld-x86-64/ibt-plt-1.d: Likewise.
- * testsuite/ld-x86-64/ibt-plt-2a-x32.d: Likewise.
- * testsuite/ld-x86-64/ibt-plt-2a.d: Likewise.
- * testsuite/ld-x86-64/ibt-plt-2c-x32.d: Likewise.
- * testsuite/ld-x86-64/ibt-plt-2c.d: Likewise.
- * testsuite/ld-x86-64/ibt-plt-3a-x32.d: Likewise.
- * testsuite/ld-x86-64/ibt-plt-3a.d: Likewise.
- * testsuite/ld-x86-64/ibt-plt-3c-x32.d: Likewise.
- * testsuite/ld-x86-64/ibt-plt-3c.d: Likewise.
- * testsuite/ld-x86-64/pr19609-4e.d: Likewise.
- * testsuite/ld-x86-64/pr19609-6a.d: Likewise.
- * testsuite/ld-x86-64/pr19609-6b.d: Likewise.
- * testsuite/ld-x86-64/pr19609-7b.d: Likewise.
- * testsuite/ld-x86-64/pr19609-7d.d: Likewise.
- * testsuite/ld-x86-64/pr19636-2l.d: Likewise.
- * testsuite/ld-x86-64/pr20253-1d.d: Likewise.
- * testsuite/ld-x86-64/pr20253-1h.d: Likewise.
- * testsuite/ld-x86-64/pr21038b-now.d: Likewise.
- * testsuite/ld-x86-64/pr21038b.d: Likewise.
- * testsuite/ld-x86-64/pr21038c-now.d: Likewise.
- * testsuite/ld-x86-64/pr21038c.d: Likewise.
- * testsuite/ld-x86-64/pr23854.d: Likewise.
- * testsuite/ld-x86-64/pr25416-3.d: Likewise.
- * testsuite/ld-x86-64/pr25416-4.d: Likewise.
- * testsuite/ld-i386/plt-pic.pd: Likewise.
- * testsuite/ld-i386/plt-pic2.dd: Likewise.
- * testsuite/ld-i386/plt.pd: Likewise.
- * testsuite/ld-i386/plt2.dd: Likewise.
- * testsuite/ld-i386/tlsbin.rd: Likewise.
- * testsuite/ld-i386/tlsbin2.rd: Likewise.
- * testsuite/ld-i386/tlsbindesc.rd: Likewise.
- * testsuite/ld-i386/tlsdesc.rd: Likewise.
- * testsuite/ld-i386/tlsgdesc.rd: Likewise.
- * testsuite/ld-i386/tlsnopic.rd: Likewise.
- * testsuite/ld-i386/tlspic.rd: Likewise.
- * testsuite/ld-i386/tlspic2.rd: Likewise.
- * testsuite/ld-x86-64/mpx3.dd: Likewise.
- * testsuite/ld-x86-64/mpx3n.dd: Likewise.
- * testsuite/ld-x86-64/mpx4.dd: Likewise.
- * testsuite/ld-x86-64/mpx4n.dd: Likewise.
- * testsuite/ld-x86-64/pe-x86-64-1.od: Likewise.
- * testsuite/ld-x86-64/pe-x86-64-2.od: Likewise.
- * testsuite/ld-x86-64/pe-x86-64-3.od: Likewise.
- * testsuite/ld-x86-64/pe-x86-64-4.od: Likewise.
- * testsuite/ld-x86-64/plt.pd: Likewise.
- * testsuite/ld-x86-64/plt2.dd: Likewise.
- * testsuite/ld-x86-64/tlsbin.rd: Likewise.
- * testsuite/ld-x86-64/tlsbin2.rd: Likewise.
- * testsuite/ld-x86-64/tlsbindesc.rd: Likewise.
- * testsuite/ld-x86-64/tlsdesc.rd: Likewise.
- * testsuite/ld-x86-64/tlsgdesc.rd: Likewise.
- * testsuite/ld-x86-64/tlspic.rd: Likewise.
- * testsuite/ld-x86-64/tlspic2.rd: Likewise.
- * testsuite/ld-elf/sec64k.exp: Check
- is_elf_unused_section_symbols.
----
- bfd/ChangeLog | 76 ++++++++++++++++
- bfd/aix386-core.c | 1 +
- bfd/aout-target.h | 1 +
- bfd/bfd-in2.h | 17 ++++
- bfd/binary.c | 1 +
- bfd/cisco-core.c | 2 +
- bfd/coff-alpha.c | 1 +
- bfd/coff-i386.c | 4 +-
- bfd/coff-ia64.c | 1 +
- bfd/coff-mips.c | 3 +
- bfd/coff-rs6000.c | 2 +
- bfd/coff-sh.c | 2 +
- bfd/coff-tic30.c | 1 +
- bfd/coff-tic54x.c | 26 ++++++
- bfd/coff-x86_64.c | 2 +
- bfd/coff64-rs6000.c | 2 +
- bfd/coffcode.h | 3 +
- bfd/elf.c | 15 +++-
- bfd/elfcode.h | 8 +-
- bfd/elflink.c | 61 +++++++------
- bfd/elfxx-target.h | 6 ++
- bfd/elfxx-x86.h | 3 +
- bfd/hppabsd-core.c | 1 +
- bfd/hpux-core.c | 1 +
- bfd/i386msdos.c | 1 +
- bfd/ihex.c | 1 +
- bfd/irix-core.c | 1 +
- bfd/mach-o-target.c | 1 +
- bfd/mmo.c | 1 +
- bfd/netbsd-core.c | 1 +
- bfd/osf-core.c | 1 +
- bfd/pdp11.c | 1 +
- bfd/pef.c | 2 +
- bfd/plugin.c | 1 +
- bfd/ppcboot.c | 1 +
- bfd/ptrace-core.c | 1 +
- bfd/sco5-core.c | 1 +
- bfd/som.c | 1 +
- bfd/srec.c | 2 +
- bfd/syms.c | 3 +
- bfd/targets.c | 14 +++
- bfd/tekhex.c | 1 +
- bfd/trad-core.c | 1 +
- bfd/verilog.c | 1 +
- bfd/vms-alpha.c | 1 +
- bfd/vms-lib.c | 1 +
- bfd/wasm-module.c | 1 +
- bfd/xsym.c | 1 +
- binutils/ChangeLog | 16 ++++
- binutils/objcopy.c | 24 ++++++
- binutils/testsuite/binutils-all/readelf.exp | 6 +-
- binutils/testsuite/binutils-all/readelf.s-64 | 2 +-
- .../binutils-all/readelf.s-64-unused | 27 ++++++
- binutils/testsuite/binutils-all/readelf.ss | 5 +-
- binutils/testsuite/binutils-all/readelf.ss-64 | 5 +-
- .../binutils-all/readelf.ss-64-unused | 18 ++++
- .../testsuite/binutils-all/readelf.ss-unused | 20 +++++
- binutils/testsuite/lib/binutils-common.exp | 31 +++++++
- gas/ChangeLog | 33 +++++++
- gas/config/obj-elf.c | 3 +
- gas/read.c | 3 +
- gas/subsegs.c | 4 +
- gas/testsuite/gas/cfi/cfi-label.d | 4 +-
- gas/testsuite/gas/elf/elf.exp | 6 +-
- gas/testsuite/gas/elf/section2.e | 7 --
- gas/testsuite/gas/elf/section2.e-unused | 8 ++
- gas/testsuite/gas/elf/symver.d | 4 -
- gas/testsuite/gas/i386/ilp32/elf/symver.d | 4 -
- gas/testsuite/gas/i386/ilp32/x86-64-size-1.d | 24 +++---
- gas/testsuite/gas/i386/ilp32/x86-64-size-3.d | 16 ++--
- gas/testsuite/gas/i386/ilp32/x86-64-size-5.d | 12 +--
- gas/testsuite/gas/i386/ilp32/x86-64-unwind.d | 6 +-
- gas/testsuite/gas/i386/size-1.d | 24 +++---
- gas/testsuite/gas/i386/size-3.d | 16 ++--
- gas/testsuite/gas/i386/svr4.d | 3 -
- gas/testsuite/gas/i386/x86-64-size-1.d | 24 +++---
- gas/testsuite/gas/i386/x86-64-size-3.d | 16 ++--
- gas/testsuite/gas/i386/x86-64-size-5.d | 12 +--
- gas/testsuite/gas/i386/x86-64-unwind.d | 10 +--
- gas/write.c | 43 +++++++---
- ld/ChangeLog | 86 +++++++++++++++++++
- ld/testsuite/ld-elf/export-class.sd | 2 -
- ld/testsuite/ld-elf/loadaddr3b.d | 3 -
- ld/testsuite/ld-elf/sec64k.exp | 14 +--
- ld/testsuite/ld-i386/ibt-plt-1.d | 4 +-
- ld/testsuite/ld-i386/ibt-plt-2a.d | 4 +-
- ld/testsuite/ld-i386/ibt-plt-2c.d | 4 +-
- ld/testsuite/ld-i386/ibt-plt-3a.d | 4 +-
- ld/testsuite/ld-i386/ibt-plt-3c.d | 4 +-
- ld/testsuite/ld-i386/plt-pic.pd | 6 +-
- ld/testsuite/ld-i386/plt-pic2.dd | 6 +-
- ld/testsuite/ld-i386/plt.pd | 6 +-
- ld/testsuite/ld-i386/plt2.dd | 6 +-
- ld/testsuite/ld-i386/pr19636-1d.d | 2 +-
- ld/testsuite/ld-i386/pr19636-1l.d | 2 +-
- ld/testsuite/ld-i386/pr19636-2c.d | 2 +-
- ld/testsuite/ld-i386/tlsbin.rd | 13 ---
- ld/testsuite/ld-i386/tlsbin2.rd | 11 ---
- ld/testsuite/ld-i386/tlsbindesc.rd | 11 ---
- ld/testsuite/ld-i386/tlsdesc.rd | 11 ---
- ld/testsuite/ld-i386/tlsgdesc.rd | 10 ---
- ld/testsuite/ld-i386/tlsnopic.rd | 9 --
- ld/testsuite/ld-i386/tlspic.rd | 12 ---
- ld/testsuite/ld-i386/tlspic2.rd | 10 ---
- ld/testsuite/ld-ifunc/ifunc-2-i386-now.d | 4 +-
- .../ld-ifunc/ifunc-2-local-i386-now.d | 4 +-
- .../ld-ifunc/ifunc-2-local-x86-64-now.d | 4 +-
- ld/testsuite/ld-ifunc/ifunc-2-x86-64-now.d | 4 +-
- ld/testsuite/ld-ifunc/ifunc-21-x86-64.d | 10 +--
- ld/testsuite/ld-ifunc/ifunc-22-x86-64.d | 10 +--
- ld/testsuite/ld-ifunc/pr17154-i386-now.d | 10 +--
- ld/testsuite/ld-ifunc/pr17154-i386.d | 8 +-
- ld/testsuite/ld-ifunc/pr17154-x86-64-now.d | 10 +--
- ld/testsuite/ld-ifunc/pr17154-x86-64.d | 8 +-
- ld/testsuite/ld-x86-64/bnd-branch-1-now.d | 10 +--
- ld/testsuite/ld-x86-64/bnd-ifunc-1-now.d | 2 +-
- ld/testsuite/ld-x86-64/bnd-ifunc-2-now.d | 8 +-
- ld/testsuite/ld-x86-64/bnd-ifunc-2.d | 8 +-
- ld/testsuite/ld-x86-64/bnd-plt-1-now.d | 8 +-
- ld/testsuite/ld-x86-64/bnd-plt-1.d | 8 +-
- ld/testsuite/ld-x86-64/ibt-plt-1-x32.d | 4 +-
- ld/testsuite/ld-x86-64/ibt-plt-1.d | 4 +-
- ld/testsuite/ld-x86-64/ibt-plt-2a-x32.d | 4 +-
- ld/testsuite/ld-x86-64/ibt-plt-2a.d | 4 +-
- ld/testsuite/ld-x86-64/ibt-plt-2c-x32.d | 4 +-
- ld/testsuite/ld-x86-64/ibt-plt-2c.d | 4 +-
- ld/testsuite/ld-x86-64/ibt-plt-3a-x32.d | 4 +-
- ld/testsuite/ld-x86-64/ibt-plt-3a.d | 4 +-
- ld/testsuite/ld-x86-64/ibt-plt-3c-x32.d | 4 +-
- ld/testsuite/ld-x86-64/ibt-plt-3c.d | 4 +-
- ld/testsuite/ld-x86-64/mpx3.dd | 2 +-
- ld/testsuite/ld-x86-64/mpx3n.dd | 2 +-
- ld/testsuite/ld-x86-64/mpx4.dd | 2 +-
- ld/testsuite/ld-x86-64/mpx4n.dd | 2 +-
- ld/testsuite/ld-x86-64/pe-x86-64-1.od | 5 --
- ld/testsuite/ld-x86-64/pe-x86-64-2.od | 5 --
- ld/testsuite/ld-x86-64/pe-x86-64-3.od | 5 --
- ld/testsuite/ld-x86-64/pe-x86-64-4.od | 6 --
- ld/testsuite/ld-x86-64/plt.pd | 6 +-
- ld/testsuite/ld-x86-64/plt2.dd | 6 +-
- ld/testsuite/ld-x86-64/pr19609-4e.d | 4 +-
- ld/testsuite/ld-x86-64/pr19609-6a.d | 2 +-
- ld/testsuite/ld-x86-64/pr19609-6b.d | 2 +-
- ld/testsuite/ld-x86-64/pr19609-7b.d | 2 +-
- ld/testsuite/ld-x86-64/pr19609-7d.d | 2 +-
- ld/testsuite/ld-x86-64/pr19636-2l.d | 6 +-
- ld/testsuite/ld-x86-64/pr20253-1d.d | 12 +--
- ld/testsuite/ld-x86-64/pr20253-1h.d | 12 +--
- ld/testsuite/ld-x86-64/pr21038b-now.d | 2 +-
- ld/testsuite/ld-x86-64/pr21038b.d | 2 +-
- ld/testsuite/ld-x86-64/pr21038c-now.d | 2 +-
- ld/testsuite/ld-x86-64/pr21038c.d | 2 +-
- ld/testsuite/ld-x86-64/pr23854.d | 36 ++++----
- ld/testsuite/ld-x86-64/pr25416-3.d | 4 +-
- ld/testsuite/ld-x86-64/pr25416-4.d | 4 +-
- ld/testsuite/ld-x86-64/tlsbin.rd | 13 ---
- ld/testsuite/ld-x86-64/tlsbin2.rd | 11 ---
- ld/testsuite/ld-x86-64/tlsbindesc.rd | 11 ---
- ld/testsuite/ld-x86-64/tlsdesc.rd | 12 ---
- ld/testsuite/ld-x86-64/tlsgdesc.rd | 10 ---
- ld/testsuite/ld-x86-64/tlspic.rd | 12 ---
- ld/testsuite/ld-x86-64/tlspic2.rd | 12 ---
- 162 files changed, 809 insertions(+), 522 deletions(-)
- create mode 100644 binutils/testsuite/binutils-all/readelf.s-64-unused
- create mode 100644 binutils/testsuite/binutils-all/readelf.ss-64-unused
- create mode 100644 binutils/testsuite/binutils-all/readelf.ss-unused
- create mode 100644 gas/testsuite/gas/elf/section2.e-unused
-
-diff --git a/bfd/aix386-core.c b/bfd/aix386-core.c
-index d641b81031..68cd642952 100644
---- a/bfd/aix386-core.c
-+++ b/bfd/aix386-core.c
-@@ -239,6 +239,7 @@ const bfd_target core_aix386_vec =
- ' ', /* ar_pad_char */
- 16, /* ar_max_namelen */
- 0, /* match priority. */
-+ TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols. */
- NO_GET64, NO_GETS64, NO_PUT64,
- NO_GET, NO_GETS, NO_PUT,
- NO_GET, NO_GETS, NO_PUT, /* data */
-diff --git a/bfd/aout-target.h b/bfd/aout-target.h
-index 8c27bb1007..92fc3ed4dd 100644
---- a/bfd/aout-target.h
-+++ b/bfd/aout-target.h
-@@ -660,6 +660,7 @@ const bfd_target MY (vec) =
- AR_PAD_CHAR, /* AR_pad_char. */
- 15, /* AR_max_namelen. */
- 0, /* match priority. */
-+ TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols. */
- #ifdef TARGET_IS_BIG_ENDIAN_P
- bfd_getb64, bfd_getb_signed_64, bfd_putb64,
- bfd_getb32, bfd_getb_signed_32, bfd_putb32,
-diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
-index 43ead185c1..7eff85b7ea 100644
---- a/bfd/bfd-in2.h
-+++ b/bfd/bfd-in2.h
-@@ -6416,6 +6416,9 @@ typedef struct bfd_symbol
- with this name and type in use. BSF_OBJECT must also be set. */
- #define BSF_GNU_UNIQUE (1 << 23)
-
-+ /* This section symbol should be included in the symbol table. */
-+#define BSF_SECTION_SYM_USED (1 << 24)
-+
- flagword flags;
-
- /* A pointer to the section to which this symbol is
-@@ -7291,6 +7294,11 @@ bfd_boolean generic_core_file_matches_executable_p
- (bfd_assert (__FILE__,__LINE__), NULL))
- #endif
-
-+/* Defined to TRUE if unused section symbol should be kept. */
-+#ifndef TARGET_KEEP_UNUSED_SECTION_SYMBOLS
-+#define TARGET_KEEP_UNUSED_SECTION_SYMBOLS TRUE
-+#endif
-+
- enum bfd_flavour
- {
- /* N.B. Update bfd_flavour_name if you change this. */
-@@ -7364,6 +7372,9 @@ typedef struct bfd_target
- possible targets when more than one target matches. */
- unsigned char match_priority;
-
-+ /* TRUE if unused section symbols should be kept. */
-+ bfd_boolean keep_unused_section_symbols;
-+
- /* Entries for byte swapping for data. These are different from the
- other entry points, since they don't take a BFD as the first argument.
- Certain other handlers could do the same. */
-@@ -7794,6 +7805,12 @@ bfd_asymbol_flavour (const asymbol *sy)
- return sy->the_bfd->xvec->flavour;
- }
-
-+static inline bfd_boolean
-+bfd_keep_unused_section_symbols (const bfd *abfd)
-+{
-+ return abfd->xvec->keep_unused_section_symbols;
-+}
-+
- bfd_boolean bfd_set_default_target (const char *name);
-
- const bfd_target *bfd_find_target (const char *target_name, bfd *abfd);
-diff --git a/bfd/binary.c b/bfd/binary.c
-index db1bec02b6..942c66bbd6 100644
---- a/bfd/binary.c
-+++ b/bfd/binary.c
-@@ -335,6 +335,7 @@ const bfd_target binary_vec =
- ' ', /* ar_pad_char */
- 16, /* ar_max_namelen */
- 255, /* match priority. */
-+ TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols. */
- bfd_getb64, bfd_getb_signed_64, bfd_putb64,
- bfd_getb32, bfd_getb_signed_32, bfd_putb32,
- bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* data */
-diff --git a/bfd/cisco-core.c b/bfd/cisco-core.c
-index 1b77829c15..c0e68ade48 100644
---- a/bfd/cisco-core.c
-+++ b/bfd/cisco-core.c
-@@ -329,6 +329,7 @@ const bfd_target core_cisco_be_vec =
- ' ', /* ar_pad_char */
- 16, /* ar_max_namelen */
- 0, /* match priority. */
-+ TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols. */
- bfd_getb64, bfd_getb_signed_64, bfd_putb64,
- bfd_getb32, bfd_getb_signed_32, bfd_putb32,
- bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* data */
-@@ -384,6 +385,7 @@ const bfd_target core_cisco_le_vec =
- ' ', /* ar_pad_char */
- 16, /* ar_max_namelen */
- 0, /* match_priority */
-+ TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols. */
- bfd_getl64, bfd_getl_signed_64, bfd_putl64,
- bfd_getl32, bfd_getl_signed_32, bfd_putl32,
- bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* data */
-diff --git a/bfd/coff-alpha.c b/bfd/coff-alpha.c
-index 50b2f973a5..db26587fea 100644
---- a/bfd/coff-alpha.c
-+++ b/bfd/coff-alpha.c
-@@ -2427,6 +2427,7 @@ const bfd_target alpha_ecoff_le_vec =
- ' ', /* ar_pad_char */
- 15, /* ar_max_namelen */
- 0, /* match priority. */
-+ TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols. */
- bfd_getl64, bfd_getl_signed_64, bfd_putl64,
- bfd_getl32, bfd_getl_signed_32, bfd_putl32,
- bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* data */
-diff --git a/bfd/coff-i386.c b/bfd/coff-i386.c
-index 5048df9daf..e02519564d 100644
---- a/bfd/coff-i386.c
-+++ b/bfd/coff-i386.c
-@@ -651,6 +651,7 @@ const bfd_target
- '/', /* ar_pad_char */
- 15, /* ar_max_namelen */
- 0, /* match priority. */
-+ TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols. */
-
- bfd_getl64, bfd_getl_signed_64, bfd_putl64,
- bfd_getl32, bfd_getl_signed_32, bfd_putl32,
-@@ -729,6 +730,7 @@ const bfd_target
- '/', /* ar_pad_char */
- 15, /* ar_max_namelen */
- 0, /* match priority. */
-+ TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols. */
-
- bfd_getl64, bfd_getl_signed_64, bfd_putl64,
- bfd_getl32, bfd_getl_signed_32, bfd_putl32,
-@@ -772,4 +774,4 @@ const bfd_target
-
- &bigobj_swap_table
- };
--#endif
-\ No newline at end of file
-+#endif
-diff --git a/bfd/coff-ia64.c b/bfd/coff-ia64.c
-index 24a4a7c133..887c7aae77 100644
---- a/bfd/coff-ia64.c
-+++ b/bfd/coff-ia64.c
-@@ -170,6 +170,7 @@ const bfd_target
- '/', /* ar_pad_char */
- 15, /* ar_max_namelen */
- 0, /* match priority. */
-+ TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols. */
-
- bfd_getl64, bfd_getl_signed_64, bfd_putl64,
- bfd_getl32, bfd_getl_signed_32, bfd_putl32,
-diff --git a/bfd/coff-mips.c b/bfd/coff-mips.c
-index 38376b23d7..d20f4b4659 100644
---- a/bfd/coff-mips.c
-+++ b/bfd/coff-mips.c
-@@ -1446,6 +1446,7 @@ const bfd_target mips_ecoff_le_vec =
- ' ', /* ar_pad_char */
- 15, /* ar_max_namelen */
- 0, /* match priority. */
-+ TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols. */
- bfd_getl64, bfd_getl_signed_64, bfd_putl64,
- bfd_getl32, bfd_getl_signed_32, bfd_putl32,
- bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* data */
-@@ -1504,6 +1505,7 @@ const bfd_target mips_ecoff_be_vec =
- ' ', /* ar_pad_char */
- 15, /* ar_max_namelen */
- 0, /* match priority. */
-+ TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols. */
- bfd_getb64, bfd_getb_signed_64, bfd_putb64,
- bfd_getb32, bfd_getb_signed_32, bfd_putb32,
- bfd_getb16, bfd_getb_signed_16, bfd_putb16,
-@@ -1562,6 +1564,7 @@ const bfd_target mips_ecoff_bele_vec =
- ' ', /* ar_pad_char */
- 15, /* ar_max_namelen */
- 0, /* match priority. */
-+ TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols. */
- bfd_getl64, bfd_getl_signed_64, bfd_putl64,
- bfd_getl32, bfd_getl_signed_32, bfd_putl32,
- bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* data */
-diff --git a/bfd/coff-rs6000.c b/bfd/coff-rs6000.c
-index a71791e3f9..fbc1aed311 100644
---- a/bfd/coff-rs6000.c
-+++ b/bfd/coff-rs6000.c
-@@ -4201,6 +4201,7 @@ const bfd_target rs6000_xcoff_vec =
- '/', /* ar_pad_char */
- 15, /* ar_max_namelen */
- 0, /* match priority. */
-+ TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols. */
-
- /* data */
- bfd_getb64,
-@@ -4382,6 +4383,7 @@ const bfd_target powerpc_xcoff_vec =
- '/', /* ar_pad_char */
- 15, /* ar_max_namelen */
- 0, /* match priority. */
-+ TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols. */
-
- /* data */
- bfd_getb64,
-diff --git a/bfd/coff-sh.c b/bfd/coff-sh.c
-index 99541a76e0..04ef99b777 100644
---- a/bfd/coff-sh.c
-+++ b/bfd/coff-sh.c
-@@ -3134,6 +3134,7 @@ const bfd_target sh_coff_small_vec =
- '/', /* ar_pad_char */
- 15, /* ar_max_namelen */
- 0, /* match priority. */
-+ TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols. */
- bfd_getb64, bfd_getb_signed_64, bfd_putb64,
- bfd_getb32, bfd_getb_signed_32, bfd_putb32,
- bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* data */
-@@ -3191,6 +3192,7 @@ const bfd_target sh_coff_small_le_vec =
- '/', /* ar_pad_char */
- 15, /* ar_max_namelen */
- 0, /* match priority. */
-+ TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols. */
- bfd_getl64, bfd_getl_signed_64, bfd_putl64,
- bfd_getl32, bfd_getl_signed_32, bfd_putl32,
- bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* data */
-diff --git a/bfd/coff-tic30.c b/bfd/coff-tic30.c
-index f3e7df0a3d..f4d3a13ef4 100644
---- a/bfd/coff-tic30.c
-+++ b/bfd/coff-tic30.c
-@@ -192,6 +192,7 @@ const bfd_target tic30_coff_vec =
- '/', /* ar_pad_char */
- 15, /* ar_max_namelen */
- 0, /* match priority. */
-+ TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols. */
- bfd_getb64, bfd_getb_signed_64, bfd_putb64,
- bfd_getb32, bfd_getb_signed_32, bfd_putb32,
- bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* data */
-diff --git a/bfd/coff-tic54x.c b/bfd/coff-tic54x.c
-index 914bb2a390..3c18221d24 100644
---- a/bfd/coff-tic54x.c
-+++ b/bfd/coff-tic54x.c
-@@ -415,6 +415,7 @@ const bfd_target tic54x_coff0_vec =
- '/', /* ar_pad_char */
- 15, /* ar_max_namelen */
- 0, /* match priority. */
-+ TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols. */
- bfd_getl64, bfd_getl_signed_64, bfd_putl64,
- tic54x_getl32, tic54x_getl_signed_32, tic54x_putl32,
- bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* data */
-@@ -472,6 +473,11 @@ const bfd_target tic54x_coff0_beh_vec =
- '/', /* ar_pad_char */
- 15, /* ar_max_namelen */
- 0, /* match priority. */
-+#ifdef TARGET_KEEP_UNUSED_SECTION_SYMBOLS
-+ TRUE, /* keep unused section symbols. */
-+#else
-+ FALSE, /* keep unused section symbols. */
-+#endif
- bfd_getl64, bfd_getl_signed_64, bfd_putl64,
- tic54x_getl32, tic54x_getl_signed_32, tic54x_putl32,
- bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* data */
-@@ -530,6 +536,11 @@ const bfd_target tic54x_coff1_vec =
- '/', /* ar_pad_char */
- 15, /* ar_max_namelen */
- 0, /* match priority. */
-+#ifdef TARGET_KEEP_UNUSED_SECTION_SYMBOLS
-+ TRUE, /* keep unused section symbols. */
-+#else
-+ FALSE, /* keep unused section symbols. */
-+#endif
- bfd_getl64, bfd_getl_signed_64, bfd_putl64,
- tic54x_getl32, tic54x_getl_signed_32, tic54x_putl32,
- bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* data */
-@@ -588,6 +599,11 @@ const bfd_target tic54x_coff1_beh_vec =
- '/', /* ar_pad_char */
- 15, /* ar_max_namelen */
- 0, /* match priority. */
-+#ifdef TARGET_KEEP_UNUSED_SECTION_SYMBOLS
-+ TRUE, /* keep unused section symbols. */
-+#else
-+ FALSE, /* keep unused section symbols. */
-+#endif
- bfd_getl64, bfd_getl_signed_64, bfd_putl64,
- tic54x_getl32, tic54x_getl_signed_32, tic54x_putl32,
- bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* data */
-@@ -646,6 +662,11 @@ const bfd_target tic54x_coff2_vec =
- '/', /* ar_pad_char */
- 15, /* ar_max_namelen */
- 0, /* match priority. */
-+#ifdef TARGET_KEEP_UNUSED_SECTION_SYMBOLS
-+ TRUE, /* keep unused section symbols. */
-+#else
-+ FALSE, /* keep unused section symbols. */
-+#endif
- bfd_getl64, bfd_getl_signed_64, bfd_putl64,
- tic54x_getl32, tic54x_getl_signed_32, tic54x_putl32,
- bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* data */
-@@ -704,6 +725,11 @@ const bfd_target tic54x_coff2_beh_vec =
- '/', /* ar_pad_char */
- 15, /* ar_max_namelen */
- 0, /* match priority. */
-+#ifdef TARGET_KEEP_UNUSED_SECTION_SYMBOLS
-+ TRUE, /* keep unused section symbols. */
-+#else
-+ FALSE, /* keep unused section symbols. */
-+#endif
- bfd_getl64, bfd_getl_signed_64, bfd_putl64,
- tic54x_getl32, tic54x_getl_signed_32, tic54x_putl32,
- bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* data */
-diff --git a/bfd/coff-x86_64.c b/bfd/coff-x86_64.c
-index 0279ce23c8..adab60cd11 100644
---- a/bfd/coff-x86_64.c
-+++ b/bfd/coff-x86_64.c
-@@ -782,6 +782,7 @@ const bfd_target
- '/', /* Ar_pad_char. */
- 15, /* Ar_max_namelen. */
- 0, /* match priority. */
-+ TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols. */
-
- bfd_getl64, bfd_getl_signed_64, bfd_putl64,
- bfd_getl32, bfd_getl_signed_32, bfd_putl32,
-@@ -854,6 +855,7 @@ const bfd_target
- '/', /* Ar_pad_char. */
- 15, /* Ar_max_namelen. */
- 0, /* match priority. */
-+ TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols. */
-
- bfd_getl64, bfd_getl_signed_64, bfd_putl64,
- bfd_getl32, bfd_getl_signed_32, bfd_putl32,
-diff --git a/bfd/coff64-rs6000.c b/bfd/coff64-rs6000.c
-index a3b17020c1..9aa0304ec9 100644
---- a/bfd/coff64-rs6000.c
-+++ b/bfd/coff64-rs6000.c
-@@ -2665,6 +2665,7 @@ const bfd_target rs6000_xcoff64_vec =
- '/', /* ar_pad_char */
- 15, /* ar_max_namelen */
- 0, /* match priority. */
-+ TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols. */
-
- /* data */
- bfd_getb64,
-@@ -2928,6 +2929,7 @@ const bfd_target rs6000_xcoff64_aix_vec =
- '/', /* ar_pad_char */
- 15, /* ar_max_namelen */
- 0, /* match priority. */
-+ TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols. */
-
- /* data */
- bfd_getb64,
-diff --git a/bfd/coffcode.h b/bfd/coffcode.h
-index 21820da453..2fd699ff1b 100644
---- a/bfd/coffcode.h
-+++ b/bfd/coffcode.h
-@@ -5820,6 +5820,7 @@ const bfd_target VAR = \
- '/', /* AR_pad_char. */ \
- 15, /* AR_max_namelen. */ \
- 0, /* match priority. */ \
-+ TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols. */ \
- \
- /* Data conversion functions. */ \
- bfd_getb64, bfd_getb_signed_64, bfd_putb64, \
-@@ -5881,6 +5882,7 @@ const bfd_target VAR = \
- '/', /* AR_pad_char. */ \
- 15, /* AR_max_namelen. */ \
- 0, /* match priority. */ \
-+ TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols. */ \
- \
- /* Data conversion functions. */ \
- bfd_getb64, bfd_getb_signed_64, bfd_putb64, \
-@@ -5942,6 +5944,7 @@ const bfd_target VAR = \
- '/', /* AR_pad_char. */ \
- 15, /* AR_max_namelen. */ \
- 0, /* match priority. */ \
-+ TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols. */ \
- \
- /* Data conversion functions. */ \
- bfd_getl64, bfd_getl_signed_64, bfd_putl64, \
-diff --git a/bfd/elf.c b/bfd/elf.c
-index 3f4ccd2055..ab19bdb453 100644
---- a/bfd/elf.c
-+++ b/bfd/elf.c
-@@ -4061,6 +4061,10 @@ ignore_section_sym (bfd *abfd, asymbol *sym)
- if ((sym->flags & BSF_SECTION_SYM) == 0)
- return FALSE;
-
-+ /* Ignore the section symbol if it isn't used. */
-+ if ((sym->flags & BSF_SECTION_SYM_USED) == 0)
-+ return TRUE;
-+
- if (sym->section == NULL)
- return TRUE;
-
-@@ -4148,7 +4152,10 @@ elf_map_symbols (bfd *abfd, unsigned int *pnum_locals)
- at least in that case. */
- for (asect = abfd->sections; asect; asect = asect->next)
- {
-- if (sect_syms[asect->index] == NULL)
-+ asymbol *sym = asect->symbol;
-+ /* Don't include ignored section symbols. */
-+ if (!ignore_section_sym (abfd, sym)
-+ && sect_syms[asect->index] == NULL)
- {
- if (!sym_is_global (abfd, asect->symbol))
- num_locals++;
-@@ -4170,6 +4177,7 @@ elf_map_symbols (bfd *abfd, unsigned int *pnum_locals)
-
- if (sym_is_global (abfd, sym))
- i = num_locals + num_globals2++;
-+ /* Don't include ignored section symbols. */
- else if (!ignore_section_sym (abfd, sym))
- i = num_locals2++;
- else
-@@ -4179,9 +4187,10 @@ elf_map_symbols (bfd *abfd, unsigned int *pnum_locals)
- }
- for (asect = abfd->sections; asect; asect = asect->next)
- {
-- if (sect_syms[asect->index] == NULL)
-+ asymbol *sym = asect->symbol;
-+ if (!ignore_section_sym (abfd, sym)
-+ && sect_syms[asect->index] == NULL)
- {
-- asymbol *sym = asect->symbol;
- unsigned int i;
-
- sect_syms[asect->index] = sym;
-diff --git a/bfd/elfcode.h b/bfd/elfcode.h
-index b40fb4a1f5..4e99fcc6b9 100644
---- a/bfd/elfcode.h
-+++ b/bfd/elfcode.h
-@@ -1347,7 +1347,13 @@ elf_slurp_symbol_table (bfd *abfd, asymbol **symptrs, bfd_boolean dynamic)
- switch (ELF_ST_TYPE (isym->st_info))
- {
- case STT_SECTION:
-- sym->symbol.flags |= BSF_SECTION_SYM | BSF_DEBUGGING;
-+ /* Mark the input section symbol as used since it may be
-+ used for relocation and section group.
-+ NB: BSF_SECTION_SYM_USED is ignored by linker and may
-+ be cleared by objcopy for non-relocatable inputs. */
-+ sym->symbol.flags |= (BSF_SECTION_SYM
-+ | BSF_DEBUGGING
-+ | BSF_SECTION_SYM_USED);
- break;
- case STT_FILE:
- sym->symbol.flags |= BSF_FILE | BSF_DEBUGGING;
-diff --git a/bfd/elflink.c b/bfd/elflink.c
-index 4c54b1a159..a7c952b6fc 100644
---- a/bfd/elflink.c
-+++ b/bfd/elflink.c
-@@ -12527,9 +12527,6 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info)
-
- if (info->strip != strip_all || emit_relocs)
- {
-- bfd_boolean name_local_sections;
-- const char *name;
--
- file_ptr off = elf_next_file_pos (abfd);
-
- _bfd_elf_assign_file_position_for_section (symtab_hdr, off, TRUE);
-@@ -12550,36 +12547,38 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info)
- bfd_und_section_ptr, NULL) != 1)
- goto error_return;
-
-- /* Output a symbol for each section. We output these even if we are
-- discarding local symbols, since they are used for relocs. These
-- symbols usually have no names. We store the index of each one in
-- the index field of the section, so that we can find it again when
-- outputting relocs. */
-+ /* Output a symbol for each section if asked or they are used for
-+ relocs. These symbols usually have no names. We store the
-+ index of each one in the index field of the section, so that
-+ we can find it again when outputting relocs. */
-
-- name_local_sections
-- = (bed->elf_backend_name_local_section_symbols
-- && bed->elf_backend_name_local_section_symbols (abfd));
-+ if (bfd_keep_unused_section_symbols (abfd) || emit_relocs)
-+ {
-+ bfd_boolean name_local_sections
-+ = (bed->elf_backend_name_local_section_symbols
-+ && bed->elf_backend_name_local_section_symbols (abfd));
-+ const char *name = NULL;
-
-- name = NULL;
-- elfsym.st_size = 0;
-- elfsym.st_info = ELF_ST_INFO (STB_LOCAL, STT_SECTION);
-- elfsym.st_other = 0;
-- elfsym.st_value = 0;
-- elfsym.st_target_internal = 0;
-- for (i = 1; i < elf_numsections (abfd); i++)
-- {
-- o = bfd_section_from_elf_index (abfd, i);
-- if (o != NULL)
-- {
-- o->target_index = bfd_get_symcount (abfd);
-- elfsym.st_shndx = i;
-- if (!bfd_link_relocatable (info))
-- elfsym.st_value = o->vma;
-- if (name_local_sections)
-- name = o->name;
-- if (elf_link_output_symstrtab (&flinfo, name, &elfsym, o,
-- NULL) != 1)
-- goto error_return;
-+ elfsym.st_size = 0;
-+ elfsym.st_info = ELF_ST_INFO (STB_LOCAL, STT_SECTION);
-+ elfsym.st_other = 0;
-+ elfsym.st_value = 0;
-+ elfsym.st_target_internal = 0;
-+ for (i = 1; i < elf_numsections (abfd); i++)
-+ {
-+ o = bfd_section_from_elf_index (abfd, i);
-+ if (o != NULL)
-+ {
-+ o->target_index = bfd_get_symcount (abfd);
-+ elfsym.st_shndx = i;
-+ if (!bfd_link_relocatable (info))
-+ elfsym.st_value = o->vma;
-+ if (name_local_sections)
-+ name = o->name;
-+ if (elf_link_output_symstrtab (&flinfo, name, &elfsym, o,
-+ NULL) != 1)
-+ goto error_return;
-+ }
- }
- }
- }
-diff --git a/bfd/elfxx-target.h b/bfd/elfxx-target.h
-index cae1fbf0bb..c930b767bf 100644
---- a/bfd/elfxx-target.h
-+++ b/bfd/elfxx-target.h
-@@ -1007,6 +1007,9 @@ const bfd_target TARGET_BIG_SYM =
-
- elf_match_priority,
-
-+ /* TRUE if unused section symbols should be kept. */
-+ TARGET_KEEP_UNUSED_SECTION_SYMBOLS,
-+
- /* Routines to byte-swap various sized integers from the data sections */
- bfd_getb64, bfd_getb_signed_64, bfd_putb64,
- bfd_getb32, bfd_getb_signed_32, bfd_putb32,
-@@ -1108,6 +1111,9 @@ const bfd_target TARGET_LITTLE_SYM =
-
- elf_match_priority,
-
-+ /* TRUE if unused section symbols should be kept. */
-+ TARGET_KEEP_UNUSED_SECTION_SYMBOLS,
-+
- /* Routines to byte-swap various sized integers from the data sections */
- bfd_getl64, bfd_getl_signed_64, bfd_putl64,
- bfd_getl32, bfd_getl_signed_32, bfd_putl32,
-diff --git a/bfd/elfxx-x86.h b/bfd/elfxx-x86.h
-index cc8149d06b..e11e06bdad 100644
---- a/bfd/elfxx-x86.h
-+++ b/bfd/elfxx-x86.h
-@@ -18,6 +18,9 @@
- Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
- MA 02110-1301, USA. */
-
-+/* Don't generate unused section symbols. */
-+#define TARGET_KEEP_UNUSED_SECTION_SYMBOLS FALSE
-+
- #include "sysdep.h"
- #include "bfd.h"
- #include "bfdlink.h"
-diff --git a/bfd/hppabsd-core.c b/bfd/hppabsd-core.c
-index d2c8a94b94..c36e467ae1 100644
---- a/bfd/hppabsd-core.c
-+++ b/bfd/hppabsd-core.c
-@@ -230,6 +230,7 @@ const bfd_target core_hppabsd_vec =
- 0, /* symbol prefix */
- ' ', /* ar_pad_char */
- 16, /* ar_max_namelen */
-+ TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols. */
- NO_GET64, NO_GETS64, NO_PUT64, /* 64 bit data */
- NO_GET, NO_GETS, NO_PUT, /* 32 bit data */
- NO_GET, NO_GETS, NO_PUT, /* 16 bit data */
-diff --git a/bfd/hpux-core.c b/bfd/hpux-core.c
-index 42f84247d8..03d0de3382 100644
---- a/bfd/hpux-core.c
-+++ b/bfd/hpux-core.c
-@@ -392,6 +392,7 @@ const bfd_target core_hpux_vec =
- ' ', /* ar_pad_char */
- 16, /* ar_max_namelen */
- 0, /* match priority. */
-+ TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols. */
- NO_GET64, NO_GETS64, NO_PUT64, /* 64 bit data */
- NO_GET, NO_GETS, NO_PUT, /* 32 bit data */
- NO_GET, NO_GETS, NO_PUT, /* 16 bit data */
-diff --git a/bfd/i386msdos.c b/bfd/i386msdos.c
-index 526561e3ae..6254b2aa2e 100644
---- a/bfd/i386msdos.c
-+++ b/bfd/i386msdos.c
-@@ -279,6 +279,7 @@ const bfd_target i386_msdos_vec =
- ' ', /* ar_pad_char */
- 16, /* ar_max_namelen */
- 0, /* match priority. */
-+ TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols. */
- bfd_getl64, bfd_getl_signed_64, bfd_putl64,
- bfd_getl32, bfd_getl_signed_32, bfd_putl32,
- bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* data */
-diff --git a/bfd/ihex.c b/bfd/ihex.c
-index 65431025ea..13dd106817 100644
---- a/bfd/ihex.c
-+++ b/bfd/ihex.c
-@@ -981,6 +981,7 @@ const bfd_target ihex_vec =
- ' ', /* AR_pad_char. */
- 16, /* AR_max_namelen. */
- 0, /* match priority. */
-+ TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols. */
- bfd_getb64, bfd_getb_signed_64, bfd_putb64,
- bfd_getb32, bfd_getb_signed_32, bfd_putb32,
- bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* Data. */
-diff --git a/bfd/irix-core.c b/bfd/irix-core.c
-index d00f4917c1..e4fb622d69 100644
---- a/bfd/irix-core.c
-+++ b/bfd/irix-core.c
-@@ -293,6 +293,7 @@ const bfd_target core_irix_vec =
- ' ', /* ar_pad_char */
- 16, /* ar_max_namelen */
- 0, /* match_priority */
-+ TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols. */
- NO_GET64, NO_GETS64, NO_PUT64, /* 64 bit data */
- NO_GET, NO_GETS, NO_PUT, /* 32 bit data */
- NO_GET, NO_GETS, NO_PUT, /* 16 bit data */
-diff --git a/bfd/mach-o-target.c b/bfd/mach-o-target.c
-index 993c9747b5..3b45433653 100644
---- a/bfd/mach-o-target.c
-+++ b/bfd/mach-o-target.c
-@@ -136,6 +136,7 @@ const bfd_target TARGET_NAME =
- ' ', /* ar_pad_char. */
- 16, /* ar_max_namelen. */
- TARGET_PRIORITY, /* match priority. */
-+ TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols. */
-
- #if TARGET_BIG_ENDIAN
- bfd_getb64, bfd_getb_signed_64, bfd_putb64,
-diff --git a/bfd/mmo.c b/bfd/mmo.c
-index a31ddef81e..4ba62d0bc6 100644
---- a/bfd/mmo.c
-+++ b/bfd/mmo.c
-@@ -3344,6 +3344,7 @@ const bfd_target mmix_mmo_vec =
- ' ', /* ar_pad_char */
- 16, /* ar_max_namelen */
- 0, /* match priority. */
-+ TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols. */
- bfd_getb64, bfd_getb_signed_64, bfd_putb64,
- bfd_getb32, bfd_getb_signed_32, bfd_putb32,
- bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* data */
-diff --git a/bfd/netbsd-core.c b/bfd/netbsd-core.c
-index a1f88207b1..60fa69d142 100644
---- a/bfd/netbsd-core.c
-+++ b/bfd/netbsd-core.c
-@@ -276,6 +276,7 @@ const bfd_target core_netbsd_vec =
- ' ', /* ar_pad_char. */
- 16, /* ar_max_namelen. */
- 0, /* Match priority. */
-+ TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols. */
- NO_GET64, NO_GETS64, NO_PUT64, /* 64 bit data. */
- NO_GET, NO_GETS, NO_PUT, /* 32 bit data. */
- NO_GET, NO_GETS, NO_PUT, /* 16 bit data. */
-diff --git a/bfd/osf-core.c b/bfd/osf-core.c
-index f91b2aac14..17cc532396 100644
---- a/bfd/osf-core.c
-+++ b/bfd/osf-core.c
-@@ -187,6 +187,7 @@ const bfd_target core_osf_vec =
- ' ', /* ar_pad_char */
- 16, /* ar_max_namelen */
- 0, /* match priority. */
-+ TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols. */
- NO_GET64, NO_GETS64, NO_PUT64, /* 64 bit data */
- NO_GET, NO_GETS, NO_PUT, /* 32 bit data */
- NO_GET, NO_GETS, NO_PUT, /* 16 bit data */
-diff --git a/bfd/pdp11.c b/bfd/pdp11.c
-index 914dcaa5de..8992f4e543 100644
---- a/bfd/pdp11.c
-+++ b/bfd/pdp11.c
-@@ -4689,6 +4689,7 @@ const bfd_target MY (vec) =
- AR_PAD_CHAR, /* AR_pad_char. */
- 15, /* AR_max_namelen. */
- 0, /* match priority. */
-+ TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols. */
- bfd_getl64, bfd_getl_signed_64, bfd_putl64,
- bfd_getp32, bfd_getp_signed_32, bfd_putp32,
- bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* Data. */
-diff --git a/bfd/pef.c b/bfd/pef.c
-index 85030e5463..93bc933eec 100644
---- a/bfd/pef.c
-+++ b/bfd/pef.c
-@@ -1015,6 +1015,7 @@ const bfd_target pef_vec =
- ' ', /* AR_pad_char. */
- 16, /* AR_max_namelen. */
- 0, /* match priority. */
-+ TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols. */
- bfd_getb64, bfd_getb_signed_64, bfd_putb64,
- bfd_getb32, bfd_getb_signed_32, bfd_putb32,
- bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* Data. */
-@@ -1159,6 +1160,7 @@ const bfd_target pef_xlib_vec =
- ' ', /* AR_pad_char. */
- 16, /* AR_max_namelen. */
- 0, /* match priority. */
-+ TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols. */
- bfd_getb64, bfd_getb_signed_64, bfd_putb64,
- bfd_getb32, bfd_getb_signed_32, bfd_putb32,
- bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* Data. */
-diff --git a/bfd/plugin.c b/bfd/plugin.c
-index d733f6afdf..d1767b0134 100644
---- a/bfd/plugin.c
-+++ b/bfd/plugin.c
-@@ -719,6 +719,7 @@ const bfd_target plugin_vec =
- '/', /* ar_pad_char. */
- 15, /* ar_max_namelen. */
- 255, /* match priority. */
-+ TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols. */
-
- bfd_getl64, bfd_getl_signed_64, bfd_putl64,
- bfd_getl32, bfd_getl_signed_32, bfd_putl32,
-diff --git a/bfd/ppcboot.c b/bfd/ppcboot.c
-index e3ade1cdf0..5cdd7adbbd 100644
---- a/bfd/ppcboot.c
-+++ b/bfd/ppcboot.c
-@@ -495,6 +495,7 @@ const bfd_target powerpc_boot_vec =
- ' ', /* ar_pad_char */
- 16, /* ar_max_namelen */
- 0, /* match priority. */
-+ TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols. */
- bfd_getb64, bfd_getb_signed_64, bfd_putb64,
- bfd_getb32, bfd_getb_signed_32, bfd_putb32,
- bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* data */
-diff --git a/bfd/ptrace-core.c b/bfd/ptrace-core.c
-index 7cf47af10b..d21a61ce3f 100644
---- a/bfd/ptrace-core.c
-+++ b/bfd/ptrace-core.c
-@@ -177,6 +177,7 @@ const bfd_target core_ptrace_vec =
- 0, /* symbol prefix */
- ' ', /* ar_pad_char */
- 16, /* ar_max_namelen */
-+ TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols. */
- NO_GET64, NO_GETS64, NO_PUT64, /* 64 bit data */
- NO_GET, NO_GETS, NO_PUT, /* 32 bit data */
- NO_GET, NO_GETS, NO_PUT, /* 16 bit data */
-diff --git a/bfd/sco5-core.c b/bfd/sco5-core.c
-index c543c38be1..167dba9f32 100644
---- a/bfd/sco5-core.c
-+++ b/bfd/sco5-core.c
-@@ -358,6 +358,7 @@ const bfd_target core_sco5_vec =
- ' ', /* ar_pad_char */
- 16, /* ar_max_namelen */
- 0, /* match priority. */
-+ TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols. */
- NO_GET64, NO_GETS64, NO_PUT64, /* 64 bit data */
- NO_GET, NO_GETS, NO_PUT, /* 32 bit data */
- NO_GET, NO_GETS, NO_PUT, /* 16 bit data */
-diff --git a/bfd/som.c b/bfd/som.c
-index 5897ae6c5b..872e93341d 100644
---- a/bfd/som.c
-+++ b/bfd/som.c
-@@ -6859,6 +6859,7 @@ const bfd_target hppa_som_vec =
- '/', /* AR_pad_char. */
- 14, /* AR_max_namelen. */
- 0, /* match priority. */
-+ TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols. */
- bfd_getb64, bfd_getb_signed_64, bfd_putb64,
- bfd_getb32, bfd_getb_signed_32, bfd_putb32,
- bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* Data. */
-diff --git a/bfd/srec.c b/bfd/srec.c
-index e21d7f8b80..92faf3dc82 100644
---- a/bfd/srec.c
-+++ b/bfd/srec.c
-@@ -1295,6 +1295,7 @@ const bfd_target srec_vec =
- ' ', /* AR_pad_char. */
- 16, /* AR_max_namelen. */
- 0, /* match priority. */
-+ TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols. */
- bfd_getb64, bfd_getb_signed_64, bfd_putb64,
- bfd_getb32, bfd_getb_signed_32, bfd_putb32,
- bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* Data. */
-@@ -1351,6 +1352,7 @@ const bfd_target symbolsrec_vec =
- ' ', /* AR_pad_char. */
- 16, /* AR_max_namelen. */
- 0, /* match priority. */
-+ TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols. */
- bfd_getb64, bfd_getb_signed_64, bfd_putb64,
- bfd_getb32, bfd_getb_signed_32, bfd_putb32,
- bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* Data. */
-diff --git a/bfd/syms.c b/bfd/syms.c
-index 9559ab4580..10ea8bd7b8 100644
---- a/bfd/syms.c
-+++ b/bfd/syms.c
-@@ -307,6 +307,9 @@ CODE_FRAGMENT
- . with this name and type in use. BSF_OBJECT must also be set. *}
- .#define BSF_GNU_UNIQUE (1 << 23)
- .
-+. {* This section symbol should be included in the symbol table. *}
-+.#define BSF_SECTION_SYM_USED (1 << 24)
-+.
- . flagword flags;
- .
- . {* A pointer to the section to which this symbol is
-diff --git a/bfd/targets.c b/bfd/targets.c
-index 8086f03e46..076441b3a2 100644
---- a/bfd/targets.c
-+++ b/bfd/targets.c
-@@ -132,6 +132,11 @@ DESCRIPTION
- . (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist) : \
- . (bfd_assert (__FILE__,__LINE__), NULL))
- .#endif
-+.
-+.{* Defined to TRUE if unused section symbol should be kept. *}
-+.#ifndef TARGET_KEEP_UNUSED_SECTION_SYMBOLS
-+.#define TARGET_KEEP_UNUSED_SECTION_SYMBOLS TRUE
-+.#endif
- .
- This is the structure which defines the type of BFD this is. The
- <<xvec>> member of the struct <<bfd>> itself points here. Each
-@@ -215,6 +220,9 @@ DESCRIPTION
- . possible targets when more than one target matches. *}
- . unsigned char match_priority;
- .
-+. {* TRUE if unused section symbols should be kept. *}
-+. bfd_boolean keep_unused_section_symbols;
-+.
- . {* Entries for byte swapping for data. These are different from the
- . other entry points, since they don't take a BFD as the first argument.
- . Certain other handlers could do the same. *}
-@@ -655,6 +663,12 @@ to find an alternative output format that is suitable.
- . return sy->the_bfd->xvec->flavour;
- .}
- .
-+.static inline bfd_boolean
-+.bfd_keep_unused_section_symbols (const bfd *abfd)
-+.{
-+. return abfd->xvec->keep_unused_section_symbols;
-+.}
-+.
- */
-
- /* All known xvecs (even those that don't compile on all systems).
-diff --git a/bfd/tekhex.c b/bfd/tekhex.c
-index 99d54dbdb8..6599a4f3f4 100644
---- a/bfd/tekhex.c
-+++ b/bfd/tekhex.c
-@@ -1008,6 +1008,7 @@ const bfd_target tekhex_vec =
- ' ', /* AR_pad_char. */
- 16, /* AR_max_namelen. */
- 0, /* match priority. */
-+ TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols. */
- bfd_getb64, bfd_getb_signed_64, bfd_putb64,
- bfd_getb32, bfd_getb_signed_32, bfd_putb32,
- bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* Data. */
-diff --git a/bfd/trad-core.c b/bfd/trad-core.c
-index 1a4dbe6bf8..14627cb72e 100644
---- a/bfd/trad-core.c
-+++ b/bfd/trad-core.c
-@@ -279,6 +279,7 @@ const bfd_target core_trad_vec =
- ' ', /* ar_pad_char */
- 16, /* ar_max_namelen */
- 0, /* match priority. */
-+ TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols. */
- NO_GET64, NO_GETS64, NO_PUT64, /* 64 bit data */
- NO_GET, NO_GETS, NO_PUT, /* 32 bit data */
- NO_GET, NO_GETS, NO_PUT, /* 16 bit data */
-diff --git a/bfd/verilog.c b/bfd/verilog.c
-index a54f6b04eb..94a9cc8045 100644
---- a/bfd/verilog.c
-+++ b/bfd/verilog.c
-@@ -405,6 +405,7 @@ const bfd_target verilog_vec =
- ' ', /* AR_pad_char. */
- 16, /* AR_max_namelen. */
- 0, /* match priority. */
-+ TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols. */
- bfd_getb64, bfd_getb_signed_64, bfd_putb64,
- bfd_getb32, bfd_getb_signed_32, bfd_putb32,
- bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* Data. */
-diff --git a/bfd/vms-alpha.c b/bfd/vms-alpha.c
-index 72d89e518f..94001cc3bf 100644
---- a/bfd/vms-alpha.c
-+++ b/bfd/vms-alpha.c
-@@ -9792,6 +9792,7 @@ const bfd_target alpha_vms_vec =
- ' ', /* ar_pad_char. */
- 15, /* ar_max_namelen. */
- 0, /* match priority. */
-+ TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols. */
- bfd_getl64, bfd_getl_signed_64, bfd_putl64,
- bfd_getl32, bfd_getl_signed_32, bfd_putl32,
- bfd_getl16, bfd_getl_signed_16, bfd_putl16,
-diff --git a/bfd/vms-lib.c b/bfd/vms-lib.c
-index 3752b91139..eaac8af2a2 100644
---- a/bfd/vms-lib.c
-+++ b/bfd/vms-lib.c
-@@ -2403,6 +2403,7 @@ const bfd_target alpha_vms_lib_txt_vec =
- ' ', /* ar_pad_char. */
- 15, /* ar_max_namelen. */
- 0, /* match priority. */
-+ TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols. */
- bfd_getl64, bfd_getl_signed_64, bfd_putl64,
- bfd_getl32, bfd_getl_signed_32, bfd_putl32,
- bfd_getl16, bfd_getl_signed_16, bfd_putl16,
-diff --git a/bfd/wasm-module.c b/bfd/wasm-module.c
-index 1fde4a57ab..dc135645f4 100644
---- a/bfd/wasm-module.c
-+++ b/bfd/wasm-module.c
-@@ -794,6 +794,7 @@ const bfd_target wasm_vec =
- ' ', /* AR_pad_char. */
- 255, /* AR_max_namelen. */
- 0, /* Match priority. */
-+ TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols. */
- /* Routines to byte-swap various sized integers from the data sections. */
- bfd_getl64, bfd_getl_signed_64, bfd_putl64,
- bfd_getl32, bfd_getl_signed_32, bfd_putl32,
-diff --git a/bfd/xsym.c b/bfd/xsym.c
-index ea26603141..e9283f63ad 100644
---- a/bfd/xsym.c
-+++ b/bfd/xsym.c
-@@ -2298,6 +2298,7 @@ const bfd_target sym_vec =
- ' ', /* AR_pad_char. */
- 16, /* AR_max_namelen. */
- 0, /* match priority. */
-+ TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols. */
- bfd_getb64, bfd_getb_signed_64, bfd_putb64,
- bfd_getb32, bfd_getb_signed_32, bfd_putb32,
- bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* Data. */
-diff --git a/binutils/objcopy.c b/binutils/objcopy.c
-index 560e7c648d..62ee22202f 100644
---- a/binutils/objcopy.c
-+++ b/binutils/objcopy.c
-@@ -3204,6 +3204,30 @@ copy_object (bfd *ibfd, bfd *obfd, const bfd_arch_info_type *input_arch)
- if (convert_debugging)
- dhandle = read_debugging_info (ibfd, isympp, symcount, FALSE);
-
-+ if ((obfd->flags & (EXEC_P | DYNAMIC)) != 0
-+ && (obfd->flags & HAS_RELOC) == 0)
-+ {
-+ if (bfd_keep_unused_section_symbols (obfd))
-+ {
-+ /* Non-relocatable inputs may not have the unused section
-+ symbols. Mark all section symbols as used to generate
-+ section symbols. */
-+ asection *asect;
-+ for (asect = obfd->sections; asect != NULL; asect = asect->next)
-+ if (asect->symbol)
-+ asect->symbol->flags |= BSF_SECTION_SYM_USED;
-+ }
-+ else
-+ {
-+ /* Non-relocatable inputs may have the unused section symbols.
-+ Mark all section symbols as unused to excluded them. */
-+ long s;
-+ for (s = 0; s < symcount; s++)
-+ if ((isympp[s]->flags & BSF_SECTION_SYM_USED))
-+ isympp[s]->flags &= ~BSF_SECTION_SYM_USED;
-+ }
-+ }
-+
- if (strip_symbols == STRIP_DEBUG
- || strip_symbols == STRIP_ALL
- || strip_symbols == STRIP_UNNEEDED
-diff --git a/binutils/testsuite/binutils-all/readelf.exp b/binutils/testsuite/binutils-all/readelf.exp
-index 4834233ad3..51d26b762b 100644
---- a/binutils/testsuite/binutils-all/readelf.exp
-+++ b/binutils/testsuite/binutils-all/readelf.exp
-@@ -100,7 +100,11 @@ proc readelf_test { options binary_file regexp_file xfails } {
- return
- }
-
-- set target_machine ""
-+ if { [is_elf_unused_section_symbols ] } {
-+ set target_machine unused
-+ } else {
-+ set target_machine ""
-+ }
- if [istarget "mips*-*-*"] then {
- if [is_bad_symtab] then {
- set target_machine mips
-diff --git a/binutils/testsuite/binutils-all/readelf.s-64 b/binutils/testsuite/binutils-all/readelf.s-64
-index a1e6cd1bbd..5582d77c37 100644
---- a/binutils/testsuite/binutils-all/readelf.s-64
-+++ b/binutils/testsuite/binutils-all/readelf.s-64
-@@ -18,7 +18,7 @@ Section Headers:
- +\[ .\] .symtab +SYMTAB +0000000000000000 +0+.*
- # aarch64-elf targets have one more data symbol.
- # x86 targets may have .note.gnu.property.
-- +0+.* +0000000000000018 +(6|7) +(6|7) +8
-+ +0+.* +0000000000000018 +(6|7) +(3|4) +8
- +\[ .\] .strtab +STRTAB +0000000000000000 +0+.*
- +0+.* +0000000000000000 .* +0 +0 +1
- +\[ .\] .shstrtab +STRTAB +0000000000000000 +[0-9a-f]+
-diff --git a/binutils/testsuite/binutils-all/readelf.s-64-unused b/binutils/testsuite/binutils-all/readelf.s-64-unused
-new file mode 100644
-index 0000000000..a1e6cd1bbd
---- /dev/null
-+++ b/binutils/testsuite/binutils-all/readelf.s-64-unused
-@@ -0,0 +1,27 @@
-+There are .* section headers, starting at offset .*:
-+
-+Section Headers:
-+ +\[Nr\] Name +Type +Address +Offset
-+ +Size +EntSize +Flags +Link +Info +Align
-+ +\[ 0\] +NULL +0000000000000000 +00000000
-+ +0000000000000000 +0000000000000000 +0 +0 +0
-+ +\[ 1\] .text +PROGBITS +0000000000000000 +00000040
-+ +00000000000000.. +0000000000000000 +AX +0 +0 +.*
-+ +\[ 2\] .rel.+text +REL. +0+ +0+.*
-+ +000000000000001. +000000000000001. +I +. +1 +8
-+ +\[ 3\] .data +PROGBITS +0000000000000000 +000000(48|50)
-+ +000000000000000[48] +0000000000000000 +WA +0 +0 +.*
-+ +\[ 4\] .bss +NOBITS +0000000000000000 +000000(4c|50|54|58)
-+ +0000000000000000 +0000000000000000 +WA +0 +0 +.*
-+# x86 targets may put .note.gnu.property here.
-+#...
-+ +\[ .\] .symtab +SYMTAB +0000000000000000 +0+.*
-+# aarch64-elf targets have one more data symbol.
-+# x86 targets may have .note.gnu.property.
-+ +0+.* +0000000000000018 +(6|7) +(6|7) +8
-+ +\[ .\] .strtab +STRTAB +0000000000000000 +0+.*
-+ +0+.* +0000000000000000 .* +0 +0 +1
-+ +\[ .\] .shstrtab +STRTAB +0000000000000000 +[0-9a-f]+
-+ +00000000000000.. +0000000000000000 .* +0 +0 +.*
-+Key to Flags:
-+#...
-diff --git a/binutils/testsuite/binutils-all/readelf.ss b/binutils/testsuite/binutils-all/readelf.ss
-index acc6d9390c..5fbb5d002e 100644
---- a/binutils/testsuite/binutils-all/readelf.ss
-+++ b/binutils/testsuite/binutils-all/readelf.ss
-@@ -2,10 +2,7 @@
- Symbol table '.symtab' contains .* entries:
- +Num: +Value +Size +Type +Bind +Vis +Ndx +Name
- +0: 00000000 +0 +NOTYPE +LOCAL +DEFAULT +UND
-- +1: 00000000 +0 +SECTION +LOCAL +DEFAULT +1
-- +2: 00000000 +0 +SECTION +LOCAL +DEFAULT +[34]
-- +3: 00000000 +0 +SECTION +LOCAL +DEFAULT +[45]
-- +4: 00000000 +0 +NOTYPE +LOCAL +DEFAULT +1 static_text_symbol
-+ +1: 00000000 +0 +NOTYPE +LOCAL +DEFAULT +1 static_text_symbol
- # ARM targets add the $d mapping symbol here...
- # NDS32 targets add the $d2 mapping symbol here...
- #...
-diff --git a/binutils/testsuite/binutils-all/readelf.ss-64 b/binutils/testsuite/binutils-all/readelf.ss-64
-index bd10cabef3..99a732f71f 100644
---- a/binutils/testsuite/binutils-all/readelf.ss-64
-+++ b/binutils/testsuite/binutils-all/readelf.ss-64
-@@ -2,10 +2,7 @@
- Symbol table '.symtab' contains .* entries:
- +Num: +Value +Size +Type +Bind +Vis +Ndx +Name
- +0: 0000000000000000 +0 +NOTYPE +LOCAL +DEFAULT +UND
-- +1: 0000000000000000 +0 +SECTION +LOCAL +DEFAULT +1
-- +2: 0000000000000000 +0 +SECTION +LOCAL +DEFAULT +3
-- +3: 0000000000000000 +0 +SECTION +LOCAL +DEFAULT +4
-- +4: 0000000000000000 +0 +NOTYPE +LOCAL +DEFAULT +1 static_text_symbol
-+ +1: 0000000000000000 +0 +NOTYPE +LOCAL +DEFAULT +1 static_text_symbol
- # aarch64-elf targets add the $d mapping symbol here...
- #...
- +.: 0000000000000000 +0 +NOTYPE +LOCAL +DEFAULT +3 static_data_symbol
-diff --git a/binutils/testsuite/binutils-all/readelf.ss-64-unused b/binutils/testsuite/binutils-all/readelf.ss-64-unused
-new file mode 100644
-index 0000000000..bd10cabef3
---- /dev/null
-+++ b/binutils/testsuite/binutils-all/readelf.ss-64-unused
-@@ -0,0 +1,18 @@
-+
-+Symbol table '.symtab' contains .* entries:
-+ +Num: +Value +Size +Type +Bind +Vis +Ndx +Name
-+ +0: 0000000000000000 +0 +NOTYPE +LOCAL +DEFAULT +UND
-+ +1: 0000000000000000 +0 +SECTION +LOCAL +DEFAULT +1
-+ +2: 0000000000000000 +0 +SECTION +LOCAL +DEFAULT +3
-+ +3: 0000000000000000 +0 +SECTION +LOCAL +DEFAULT +4
-+ +4: 0000000000000000 +0 +NOTYPE +LOCAL +DEFAULT +1 static_text_symbol
-+# aarch64-elf targets add the $d mapping symbol here...
-+#...
-+ +.: 0000000000000000 +0 +NOTYPE +LOCAL +DEFAULT +3 static_data_symbol
-+# ... or here ...
-+#...
-+.* +.: 0000000000000000 +0 +NOTYPE +GLOBAL +DEFAULT +1 text_symbol
-+ +.: 0000000000000000 +0 +NOTYPE +GLOBAL +DEFAULT +UND external_symbol
-+ +.: 0000000000000000 +0 +NOTYPE +GLOBAL +DEFAULT +3 data_symbol
-+ +[0-9]+: 0000000000000004 +4 +(COMMON|OBJECT) +GLOBAL +DEFAULT +COM common_symbol
-+#pass
-diff --git a/binutils/testsuite/binutils-all/readelf.ss-unused b/binutils/testsuite/binutils-all/readelf.ss-unused
-new file mode 100644
-index 0000000000..acc6d9390c
---- /dev/null
-+++ b/binutils/testsuite/binutils-all/readelf.ss-unused
-@@ -0,0 +1,20 @@
-+
-+Symbol table '.symtab' contains .* entries:
-+ +Num: +Value +Size +Type +Bind +Vis +Ndx +Name
-+ +0: 00000000 +0 +NOTYPE +LOCAL +DEFAULT +UND
-+ +1: 00000000 +0 +SECTION +LOCAL +DEFAULT +1
-+ +2: 00000000 +0 +SECTION +LOCAL +DEFAULT +[34]
-+ +3: 00000000 +0 +SECTION +LOCAL +DEFAULT +[45]
-+ +4: 00000000 +0 +NOTYPE +LOCAL +DEFAULT +1 static_text_symbol
-+# ARM targets add the $d mapping symbol here...
-+# NDS32 targets add the $d2 mapping symbol here...
-+#...
-+ +.: 00000000 +0 +NOTYPE +LOCAL +DEFAULT +[34] static_data_symbol
-+# v850 targets include extra SECTION symbols here for the .call_table_data
-+# and .call_table_text sections.
-+#...
-+ +[0-9]+: 00000000 +0 +NOTYPE +GLOBAL +DEFAULT +1 text_symbol
-+ +[0-9]+: 00000000 +0 +NOTYPE +GLOBAL +DEFAULT +UND external_symbol
-+ +[0-9]+: 00000000 +0 +NOTYPE +GLOBAL +DEFAULT +[34] data_symbol
-+ +[0-9]+: 00000004 +4 +(COMMON|OBJECT) +GLOBAL +DEFAULT +(COM|ANSI_COM) common_symbol
-+#...
-diff --git a/binutils/testsuite/lib/binutils-common.exp b/binutils/testsuite/lib/binutils-common.exp
-index 6552d30264..616a6cad3d 100644
---- a/binutils/testsuite/lib/binutils-common.exp
-+++ b/binutils/testsuite/lib/binutils-common.exp
-@@ -248,6 +248,37 @@ proc is_generic { } {
- return 0
- }
-
-+# True if the object format is ELF with unused section symbols.
-+proc is_elf_unused_section_symbols {} {
-+ global AS ASFLAGS READELF
-+
-+ if {![info exists elf_unused_section_symbols_saved]} {
-+ set elf_unused_section_symbols_saved 1
-+ if { [is_elf_format] } {
-+ set base "empty[pid]"
-+ set src "$base.s"
-+ set obj "$base.obj"
-+ set f [open $src "w"]
-+ close $f
-+ set cmd "$AS $ASFLAGS -o $obj $src"
-+ send_log "$cmd\n"
-+ set cmdret [remote_exec host $cmd]
-+ set cmdret [lindex $cmdret 0]
-+ if { $cmdret == 0 } {
-+ set cmd "$READELF -sW $obj"
-+ send_log "$cmd\n"
-+ set got [remote_exec host $cmd]
-+ if { ![string match "*SECTION*" $got] } {
-+ set elf_unused_section_symbols_saved 0
-+ }
-+ }
-+ file delete $obj
-+ file delete $src
-+ }
-+ }
-+ return $elf_unused_section_symbols_saved
-+}
-+
- # True if the ELF target supports STB_GNU_UNIQUE.
- #
- # This require ELFOSABI_GNU, and `bfd_elf_final_link'.
-diff --git a/gas/config/obj-elf.c b/gas/config/obj-elf.c
-index 94fa8051a0..6c0a6ae9ee 100644
---- a/gas/config/obj-elf.c
-+++ b/gas/config/obj-elf.c
-@@ -2841,6 +2841,9 @@ elf_adjust_symtab (void)
- symbol_table_insert (sy);
- }
- elf_group_id (s) = symbol_get_bfdsym (sy);
-+ /* Mark the group signature symbol as used so that it will be
-+ included in the symbol table. */
-+ symbol_mark_used_in_reloc (sy);
- }
- }
-
-diff --git a/gas/read.c b/gas/read.c
-index 9d0ba27ea8..be6e3e03d4 100644
---- a/gas/read.c
-+++ b/gas/read.c
-@@ -4207,6 +4207,9 @@ s_reloc (int ignore ATTRIBUTE_UNUSED)
- goto err_out;
- case O_constant:
- exp.X_add_symbol = section_symbol (now_seg);
-+ /* Mark the section symbol used in relocation so that it will be
-+ included in the symbol table. */
-+ symbol_mark_used_in_reloc (exp.X_add_symbol);
- exp.X_op = O_symbol;
- /* Fallthru */
- case O_symbol:
-diff --git a/gas/subsegs.c b/gas/subsegs.c
-index 8e4b310afe..191879eb08 100644
---- a/gas/subsegs.c
-+++ b/gas/subsegs.c
-@@ -89,6 +89,10 @@ subseg_set_rest (segT seg, subsegT subseg)
-
- seginfo = seg_info (seg);
-
-+ /* Should the section symbol be kept? */
-+ if (bfd_keep_unused_section_symbols (stdoutput))
-+ seg->symbol->flags |= BSF_SECTION_SYM_USED;
-+
- /* Attempt to find or make a frchain for that subsection.
- We keep the list sorted by subsection number. */
- for (frcP = *(lastPP = &seginfo->frchainP);
-diff --git a/gas/testsuite/gas/cfi/cfi-label.d b/gas/testsuite/gas/cfi/cfi-label.d
-index 0350b57f13..c6507138b4 100644
---- a/gas/testsuite/gas/cfi/cfi-label.d
-+++ b/gas/testsuite/gas/cfi/cfi-label.d
-@@ -6,11 +6,9 @@
-
- SYMBOL TABLE:
- 0*00 l d \.text 0*00 \.text
--0*00 l d \.data 0*00 \.data
--0*00 l d \.bss 0*00 \.bss
-+#...
- 0*00 l F \.text 0*04 cfilabel
- 0*2f l \.eh_frame 0*00 cfi2
--0*00 l d \.eh_frame 0*00 \.eh_frame
- 0*2b g \.eh_frame 0*00 cfi1
-
-
-diff --git a/gas/testsuite/gas/elf/elf.exp b/gas/testsuite/gas/elf/elf.exp
-index 5cfb7a6237..a0f98eddd6 100644
---- a/gas/testsuite/gas/elf/elf.exp
-+++ b/gas/testsuite/gas/elf/elf.exp
-@@ -54,7 +54,11 @@ proc run_elf_list_test { name suffix opts readelf_opts readelf_pipe } {
-
- # We're testing bits in obj-elf -- don't run on anything else.
- if { [is_elf_format] } then {
-- set target_machine ""
-+ if { [is_elf_unused_section_symbols ] } {
-+ set target_machine -unused
-+ } else {
-+ set target_machine ""
-+ }
- set dump_opts ""
- if {[istarget "arc*-*-*"]} {
- set target_machine -arc
-diff --git a/gas/testsuite/gas/elf/section2.e b/gas/testsuite/gas/elf/section2.e
-index 9b50798bcf..8b13789179 100644
---- a/gas/testsuite/gas/elf/section2.e
-+++ b/gas/testsuite/gas/elf/section2.e
-@@ -1,8 +1 @@
-
--Symbol table '.symtab' contains 5 entries:
-- +Num: +Value +Size +Type +Bind +Vis +Ndx +Name
-- +0: 0+0 +0 +NOTYPE +LOCAL +DEFAULT +UND
-- +1: 0+0 +0 +SECTION +LOCAL +DEFAULT +1
-- +2: 0+0 +0 +SECTION +LOCAL +DEFAULT +2
-- +3: 0+0 +0 +SECTION +LOCAL +DEFAULT +3
-- +4: 0+0 +0 +SECTION +LOCAL +DEFAULT +4
-diff --git a/gas/testsuite/gas/elf/section2.e-unused b/gas/testsuite/gas/elf/section2.e-unused
-new file mode 100644
-index 0000000000..9b50798bcf
---- /dev/null
-+++ b/gas/testsuite/gas/elf/section2.e-unused
-@@ -0,0 +1,8 @@
-+
-+Symbol table '.symtab' contains 5 entries:
-+ +Num: +Value +Size +Type +Bind +Vis +Ndx +Name
-+ +0: 0+0 +0 +NOTYPE +LOCAL +DEFAULT +UND
-+ +1: 0+0 +0 +SECTION +LOCAL +DEFAULT +1
-+ +2: 0+0 +0 +SECTION +LOCAL +DEFAULT +2
-+ +3: 0+0 +0 +SECTION +LOCAL +DEFAULT +3
-+ +4: 0+0 +0 +SECTION +LOCAL +DEFAULT +4
-diff --git a/gas/testsuite/gas/elf/symver.d b/gas/testsuite/gas/elf/symver.d
-index 7fcc62a5ca..2292e3267d 100644
---- a/gas/testsuite/gas/elf/symver.d
-+++ b/gas/testsuite/gas/elf/symver.d
-@@ -8,10 +8,6 @@
- .*: file format .*
-
- SYMBOL TABLE:
--
--0+000 l.*d.*\.text.*0+000.*
--0+000 l.*d.*\.data.*0+000.*
--0+000 l.*d.*\.bss.*0+000.*
- #...
- 0+000 l.*O.*\.data.*0+004 x
- #...
-diff --git a/gas/testsuite/gas/i386/ilp32/elf/symver.d b/gas/testsuite/gas/i386/ilp32/elf/symver.d
-index 7f69d660b3..3acf1487b3 100644
---- a/gas/testsuite/gas/i386/ilp32/elf/symver.d
-+++ b/gas/testsuite/gas/i386/ilp32/elf/symver.d
-@@ -9,10 +9,6 @@
- .*: file format .*
-
- SYMBOL TABLE:
--
--0+000 l.*d.*\.text.*0+000.*
--0+000 l.*d.*\.data.*0+000.*
--0+000 l.*d.*\.bss.*0+000.*
- #...
- 0+000 l.*O.*\.data.*0+004 x
- #...
-diff --git a/gas/testsuite/gas/i386/ilp32/x86-64-size-1.d b/gas/testsuite/gas/i386/ilp32/x86-64-size-1.d
-index e5b74fa5c9..64b052dc93 100644
---- a/gas/testsuite/gas/i386/ilp32/x86-64-size-1.d
-+++ b/gas/testsuite/gas/i386/ilp32/x86-64-size-1.d
-@@ -6,19 +6,19 @@
-
- Relocation section '.rela.text' at offset .* contains 9 entries:
- Offset Info Type Sym.Value Sym. Name \+ Addend
--0+1 00000420 R_X86_64_SIZE32 00000000 xxx \+ 0
--0+6 00000420 R_X86_64_SIZE32 00000000 xxx - 8
--0+b 00000420 R_X86_64_SIZE32 00000000 xxx \+ 8
--0+10 00000520 R_X86_64_SIZE32 00000000 yyy \+ 0
--0+15 00000520 R_X86_64_SIZE32 00000000 yyy - 10
--0+1a 00000520 R_X86_64_SIZE32 00000000 yyy \+ 10
--0+1f 00000620 R_X86_64_SIZE32 00000020 zzz \+ 0
--0+24 00000620 R_X86_64_SIZE32 00000020 zzz - 20
--0+29 00000620 R_X86_64_SIZE32 00000020 zzz \+ 20
-+0+1 00000120 R_X86_64_SIZE32 00000000 xxx \+ 0
-+0+6 00000120 R_X86_64_SIZE32 00000000 xxx - 8
-+0+b 00000120 R_X86_64_SIZE32 00000000 xxx \+ 8
-+0+10 00000220 R_X86_64_SIZE32 00000000 yyy \+ 0
-+0+15 00000220 R_X86_64_SIZE32 00000000 yyy - 10
-+0+1a 00000220 R_X86_64_SIZE32 00000000 yyy \+ 10
-+0+1f 00000320 R_X86_64_SIZE32 00000020 zzz \+ 0
-+0+24 00000320 R_X86_64_SIZE32 00000020 zzz - 20
-+0+29 00000320 R_X86_64_SIZE32 00000020 zzz \+ 20
-
- Relocation section '.rela.data' at offset .* contains 3 entries:
- Offset Info Type Sym.Value Sym. Name \+ Addend
--0+50 00000420 R_X86_64_SIZE32 00000000 xxx - 1
--0+54 00000520 R_X86_64_SIZE32 00000000 yyy \+ 2
--0+58 00000620 R_X86_64_SIZE32 00000020 zzz \+ 0
-+0+50 00000120 R_X86_64_SIZE32 00000000 xxx - 1
-+0+54 00000220 R_X86_64_SIZE32 00000000 yyy \+ 2
-+0+58 00000320 R_X86_64_SIZE32 00000020 zzz \+ 0
- #pass
-diff --git a/gas/testsuite/gas/i386/ilp32/x86-64-size-3.d b/gas/testsuite/gas/i386/ilp32/x86-64-size-3.d
-index 6f96134f13..65f6890dae 100644
---- a/gas/testsuite/gas/i386/ilp32/x86-64-size-3.d
-+++ b/gas/testsuite/gas/i386/ilp32/x86-64-size-3.d
-@@ -6,15 +6,15 @@
-
- Relocation section '.rela.text' at offset .* contains 6 entries:
- Offset Info Type Sym.Value Sym. Name \+ Addend
--0+1 00000620 R_X86_64_SIZE32 00000000 xxx \+ 0
--0+6 00000620 R_X86_64_SIZE32 00000000 xxx - 8
--0+b 00000620 R_X86_64_SIZE32 00000000 xxx \+ 8
--0+10 00000720 R_X86_64_SIZE32 00000000 yyy \+ 0
--0+15 00000720 R_X86_64_SIZE32 00000000 yyy - 10
--0+1a 00000720 R_X86_64_SIZE32 00000000 yyy \+ 10
-+0+1 00000120 R_X86_64_SIZE32 00000000 xxx \+ 0
-+0+6 00000120 R_X86_64_SIZE32 00000000 xxx - 8
-+0+b 00000120 R_X86_64_SIZE32 00000000 xxx \+ 8
-+0+10 00000220 R_X86_64_SIZE32 00000000 yyy \+ 0
-+0+15 00000220 R_X86_64_SIZE32 00000000 yyy - 10
-+0+1a 00000220 R_X86_64_SIZE32 00000000 yyy \+ 10
-
- Relocation section '.rela.tdata' at offset .* contains 2 entries:
- Offset Info Type Sym.Value Sym. Name \+ Addend
--0+50 00000620 R_X86_64_SIZE32 00000000 xxx - 1
--0+54 00000720 R_X86_64_SIZE32 00000000 yyy \+ 2
-+0+50 00000120 R_X86_64_SIZE32 00000000 xxx - 1
-+0+54 00000220 R_X86_64_SIZE32 00000000 yyy \+ 2
- #pass
-diff --git a/gas/testsuite/gas/i386/ilp32/x86-64-size-5.d b/gas/testsuite/gas/i386/ilp32/x86-64-size-5.d
-index 8ce06b0f84..4571a484ea 100644
---- a/gas/testsuite/gas/i386/ilp32/x86-64-size-5.d
-+++ b/gas/testsuite/gas/i386/ilp32/x86-64-size-5.d
-@@ -6,13 +6,13 @@
-
- Relocation section '.rela.text' at offset .* contains 3 entries:
- Offset Info Type Sym.Value Sym. Name \+ Addend
--0+2 00000421 R_X86_64_SIZE64 00000000 xxx \+ 0
--0+c 00000421 R_X86_64_SIZE64 00000000 xxx - 8
--0+16 00000421 R_X86_64_SIZE64 00000000 xxx \+ 8
-+0+2 00000121 R_X86_64_SIZE64 00000000 xxx \+ 0
-+0+c 00000121 R_X86_64_SIZE64 00000000 xxx - 8
-+0+16 00000121 R_X86_64_SIZE64 00000000 xxx \+ 8
-
- Relocation section '.rela.data' at offset .* contains 3 entries:
- Offset Info Type Sym.Value Sym. Name \+ Addend
--0+50 00000421 R_X86_64_SIZE64 00000000 xxx - 1
--0+58 00000621 R_X86_64_SIZE64 00000000 yyy \+ c8
--0+60 00000521 R_X86_64_SIZE64 00000020 zzz \+ 0
-+0+50 00000121 R_X86_64_SIZE64 00000000 xxx - 1
-+0+58 00000321 R_X86_64_SIZE64 00000000 yyy \+ c8
-+0+60 00000221 R_X86_64_SIZE64 00000020 zzz \+ 0
- #pass
-diff --git a/gas/testsuite/gas/i386/ilp32/x86-64-unwind.d b/gas/testsuite/gas/i386/ilp32/x86-64-unwind.d
-index bd532b73e8..274ddb0627 100644
---- a/gas/testsuite/gas/i386/ilp32/x86-64-unwind.d
-+++ b/gas/testsuite/gas/i386/ilp32/x86-64-unwind.d
-@@ -3,7 +3,7 @@
- #readelf: -S
- #name: x86-64 (ILP32) unwind
-
--There are 8 section headers, starting at offset 0x[0-9a-f]+:
-+There are 6 section headers, starting at offset 0x[0-9a-f]+:
-
- Section Headers:
- \[Nr\] Name Type Addr Off Size ES Flg Lk Inf Al
-@@ -12,8 +12,6 @@ Section Headers:
- \[ 2\] .data PROGBITS 00000000 000034 000000 00 WA 0 0 1
- \[ 3\] .bss NOBITS 00000000 000034 000000 00 WA 0 0 1
- \[ 4\] .eh_frame X86_64_UNWIND 00000000 000034 000008 00 A 0 0 1
-- \[ 5\] .symtab SYMTAB 00000000 [0-9a-f]+ 000050 10 6 5 4
-- \[ 6\] .strtab STRTAB 00000000 [0-9a-f]+ 000001 00 . 0 0 1
-- \[ 7\] .shstrtab STRTAB 00000000 [0-9a-f]+ 000036 00 . 0 0 1
-+ \[ 5\] .shstrtab STRTAB 00000000 [0-9a-f]+ 000026 00 . 0 0 1
- Key to Flags:
- #pass
-diff --git a/gas/testsuite/gas/i386/size-1.d b/gas/testsuite/gas/i386/size-1.d
-index d582bbecc9..b187e5d4a3 100644
---- a/gas/testsuite/gas/i386/size-1.d
-+++ b/gas/testsuite/gas/i386/size-1.d
-@@ -5,19 +5,19 @@
-
- Relocation section '.rel.text' at offset .* contains 9 entries:
- Offset Info Type Sym.Value Sym. Name
--0+1 00000426 R_386_SIZE32 00000000 xxx
--0+6 00000426 R_386_SIZE32 00000000 xxx
--0+b 00000426 R_386_SIZE32 00000000 xxx
--0+10 00000526 R_386_SIZE32 00000000 yyy
--0+15 00000526 R_386_SIZE32 00000000 yyy
--0+1a 00000526 R_386_SIZE32 00000000 yyy
--0+1f 00000626 R_386_SIZE32 00000020 zzz
--0+24 00000626 R_386_SIZE32 00000020 zzz
--0+29 00000626 R_386_SIZE32 00000020 zzz
-+0+1 00000126 R_386_SIZE32 00000000 xxx
-+0+6 00000126 R_386_SIZE32 00000000 xxx
-+0+b 00000126 R_386_SIZE32 00000000 xxx
-+0+10 00000226 R_386_SIZE32 00000000 yyy
-+0+15 00000226 R_386_SIZE32 00000000 yyy
-+0+1a 00000226 R_386_SIZE32 00000000 yyy
-+0+1f 00000326 R_386_SIZE32 00000020 zzz
-+0+24 00000326 R_386_SIZE32 00000020 zzz
-+0+29 00000326 R_386_SIZE32 00000020 zzz
-
- Relocation section '.rel.data' at offset .* contains 3 entries:
- Offset Info Type Sym.Value Sym. Name
--0+50 00000426 R_386_SIZE32 00000000 xxx
--0+54 00000526 R_386_SIZE32 00000000 yyy
--0+58 00000626 R_386_SIZE32 00000020 zzz
-+0+50 00000126 R_386_SIZE32 00000000 xxx
-+0+54 00000226 R_386_SIZE32 00000000 yyy
-+0+58 00000326 R_386_SIZE32 00000020 zzz
- #pass
-diff --git a/gas/testsuite/gas/i386/size-3.d b/gas/testsuite/gas/i386/size-3.d
-index 2b08707f43..b45811c5d8 100644
---- a/gas/testsuite/gas/i386/size-3.d
-+++ b/gas/testsuite/gas/i386/size-3.d
-@@ -5,15 +5,15 @@
-
- Relocation section '.rel.text' at offset .* contains 6 entries:
- Offset Info Type Sym.Value Sym. Name
--0+1 00000626 R_386_SIZE32 00000000 xxx
--0+6 00000626 R_386_SIZE32 00000000 xxx
--0+b 00000626 R_386_SIZE32 00000000 xxx
--0+10 00000726 R_386_SIZE32 00000000 yyy
--0+15 00000726 R_386_SIZE32 00000000 yyy
--0+1a 00000726 R_386_SIZE32 00000000 yyy
-+0+1 00000126 R_386_SIZE32 00000000 xxx
-+0+6 00000126 R_386_SIZE32 00000000 xxx
-+0+b 00000126 R_386_SIZE32 00000000 xxx
-+0+10 00000226 R_386_SIZE32 00000000 yyy
-+0+15 00000226 R_386_SIZE32 00000000 yyy
-+0+1a 00000226 R_386_SIZE32 00000000 yyy
-
- Relocation section '.rel.tdata' at offset .* contains 2 entries:
- Offset Info Type Sym.Value Sym. Name
--0+50 00000626 R_386_SIZE32 00000000 xxx
--0+54 00000726 R_386_SIZE32 00000000 yyy
-+0+50 00000126 R_386_SIZE32 00000000 xxx
-+0+54 00000226 R_386_SIZE32 00000000 yyy
- #pass
-diff --git a/gas/testsuite/gas/i386/svr4.d b/gas/testsuite/gas/i386/svr4.d
-index 3a46354192..2820506668 100644
---- a/gas/testsuite/gas/i386/svr4.d
-+++ b/gas/testsuite/gas/i386/svr4.d
-@@ -4,9 +4,6 @@
- .*: +file format .*
-
- SYMBOL TABLE:
--0+00 .* \.text[ ]+0+ \.text
--0+00 .* \.data[ ]+0+ \.data
--0+00 .* \.bss[ ]+0+ \.bss
- 0+00 .* \.text[ ]+0+ svr4
- 0+04 .* \*ABS\*[ ]+0+ a
- 0+03 .* \*ABS\*[ ]+0+ b
-diff --git a/gas/testsuite/gas/i386/x86-64-size-1.d b/gas/testsuite/gas/i386/x86-64-size-1.d
-index 657408cf73..57db899437 100644
---- a/gas/testsuite/gas/i386/x86-64-size-1.d
-+++ b/gas/testsuite/gas/i386/x86-64-size-1.d
-@@ -6,19 +6,19 @@
-
- Relocation section '.rela.text' at offset .* contains 9 entries:
- Offset Info Type Sym. Value Sym. Name \+ Addend
--0+1 000400000020 R_X86_64_SIZE32 0000000000000000 xxx \+ 0
--0+6 000400000020 R_X86_64_SIZE32 0000000000000000 xxx - 8
--0+b 000400000020 R_X86_64_SIZE32 0000000000000000 xxx \+ 8
--0+10 000500000020 R_X86_64_SIZE32 0000000000000000 yyy \+ 0
--0+15 000500000020 R_X86_64_SIZE32 0000000000000000 yyy - 10
--0+1a 000500000020 R_X86_64_SIZE32 0000000000000000 yyy \+ 10
--0+1f 000600000020 R_X86_64_SIZE32 0000000000000020 zzz \+ 0
--0+24 000600000020 R_X86_64_SIZE32 0000000000000020 zzz - 20
--0+29 000600000020 R_X86_64_SIZE32 0000000000000020 zzz \+ 20
-+0+1 000100000020 R_X86_64_SIZE32 0000000000000000 xxx \+ 0
-+0+6 000100000020 R_X86_64_SIZE32 0000000000000000 xxx - 8
-+0+b 000100000020 R_X86_64_SIZE32 0000000000000000 xxx \+ 8
-+0+10 000200000020 R_X86_64_SIZE32 0000000000000000 yyy \+ 0
-+0+15 000200000020 R_X86_64_SIZE32 0000000000000000 yyy - 10
-+0+1a 000200000020 R_X86_64_SIZE32 0000000000000000 yyy \+ 10
-+0+1f 000300000020 R_X86_64_SIZE32 0000000000000020 zzz \+ 0
-+0+24 000300000020 R_X86_64_SIZE32 0000000000000020 zzz - 20
-+0+29 000300000020 R_X86_64_SIZE32 0000000000000020 zzz \+ 20
-
- Relocation section '.rela.data' at offset .* contains 3 entries:
- Offset Info Type Sym. Value Sym. Name \+ Addend
--0+50 000400000020 R_X86_64_SIZE32 0000000000000000 xxx - 1
--0+54 000500000020 R_X86_64_SIZE32 0000000000000000 yyy \+ 2
--0+58 000600000020 R_X86_64_SIZE32 0000000000000020 zzz \+ 0
-+0+50 000100000020 R_X86_64_SIZE32 0000000000000000 xxx - 1
-+0+54 000200000020 R_X86_64_SIZE32 0000000000000000 yyy \+ 2
-+0+58 000300000020 R_X86_64_SIZE32 0000000000000020 zzz \+ 0
- #pass
-diff --git a/gas/testsuite/gas/i386/x86-64-size-3.d b/gas/testsuite/gas/i386/x86-64-size-3.d
-index 943a64e9ac..4688dc938b 100644
---- a/gas/testsuite/gas/i386/x86-64-size-3.d
-+++ b/gas/testsuite/gas/i386/x86-64-size-3.d
-@@ -6,15 +6,15 @@
-
- Relocation section '.rela.text' at offset .* contains 6 entries:
- Offset Info Type Sym. Value Sym. Name \+ Addend
--0+1 000600000020 R_X86_64_SIZE32 0000000000000000 xxx \+ 0
--0+6 000600000020 R_X86_64_SIZE32 0000000000000000 xxx - 8
--0+b 000600000020 R_X86_64_SIZE32 0000000000000000 xxx \+ 8
--0+10 000700000020 R_X86_64_SIZE32 0000000000000000 yyy \+ 0
--0+15 000700000020 R_X86_64_SIZE32 0000000000000000 yyy - 10
--0+1a 000700000020 R_X86_64_SIZE32 0000000000000000 yyy \+ 10
-+0+1 000100000020 R_X86_64_SIZE32 0000000000000000 xxx \+ 0
-+0+6 000100000020 R_X86_64_SIZE32 0000000000000000 xxx - 8
-+0+b 000100000020 R_X86_64_SIZE32 0000000000000000 xxx \+ 8
-+0+10 000200000020 R_X86_64_SIZE32 0000000000000000 yyy \+ 0
-+0+15 000200000020 R_X86_64_SIZE32 0000000000000000 yyy - 10
-+0+1a 000200000020 R_X86_64_SIZE32 0000000000000000 yyy \+ 10
-
- Relocation section '.rela.tdata' at offset .* contains 2 entries:
- Offset Info Type Sym. Value Sym. Name \+ Addend
--0+50 000600000020 R_X86_64_SIZE32 0000000000000000 xxx - 1
--0+54 000700000020 R_X86_64_SIZE32 0000000000000000 yyy \+ 2
-+0+50 000100000020 R_X86_64_SIZE32 0000000000000000 xxx - 1
-+0+54 000200000020 R_X86_64_SIZE32 0000000000000000 yyy \+ 2
- #pass
-diff --git a/gas/testsuite/gas/i386/x86-64-size-5.d b/gas/testsuite/gas/i386/x86-64-size-5.d
-index c34d0eedaa..d18ffcd3a4 100644
---- a/gas/testsuite/gas/i386/x86-64-size-5.d
-+++ b/gas/testsuite/gas/i386/x86-64-size-5.d
-@@ -5,13 +5,13 @@
-
- Relocation section '.rela.text' at offset .* contains 3 entries:
- Offset Info Type Sym. Value Sym. Name \+ Addend
--0+2 000400000021 R_X86_64_SIZE64 0000000000000000 xxx \+ 0
--0+c 000400000021 R_X86_64_SIZE64 0000000000000000 xxx - 8
--0+16 000400000021 R_X86_64_SIZE64 0000000000000000 xxx \+ 8
-+0+2 000100000021 R_X86_64_SIZE64 0000000000000000 xxx \+ 0
-+0+c 000100000021 R_X86_64_SIZE64 0000000000000000 xxx - 8
-+0+16 000100000021 R_X86_64_SIZE64 0000000000000000 xxx \+ 8
-
- Relocation section '.rela.data' at offset .* contains 3 entries:
- Offset Info Type Sym. Value Sym. Name \+ Addend
--0+50 000400000021 R_X86_64_SIZE64 0000000000000000 xxx - 1
--0+58 000600000021 R_X86_64_SIZE64 0000000000000000 yyy \+ c8
--0+60 000500000021 R_X86_64_SIZE64 0000000000000020 zzz \+ 0
-+0+50 000100000021 R_X86_64_SIZE64 0000000000000000 xxx - 1
-+0+58 000300000021 R_X86_64_SIZE64 0000000000000000 yyy \+ c8
-+0+60 000200000021 R_X86_64_SIZE64 0000000000000020 zzz \+ 0
- #pass
-diff --git a/gas/testsuite/gas/i386/x86-64-unwind.d b/gas/testsuite/gas/i386/x86-64-unwind.d
-index 7f8d94fe86..ca3047277e 100644
---- a/gas/testsuite/gas/i386/x86-64-unwind.d
-+++ b/gas/testsuite/gas/i386/x86-64-unwind.d
-@@ -2,7 +2,7 @@
- #readelf: -S
- #name: x86-64 unwind
-
--There are 8 section headers, starting at offset 0x[0-9a-f]+:
-+There are 6 section headers, starting at offset 0x[0-9a-f]+:
-
- Section Headers:
- \[Nr\] Name Type Address Offset
-@@ -17,11 +17,7 @@ Section Headers:
- 0000000000000000 0000000000000000 WA 0 0 1
- \[ 4\] \.eh_frame X86_64_UNWIND 0000000000000000 00000040
- 0000000000000008 0000000000000000 A 0 0 1
-- \[ 5\] \.symtab SYMTAB 0000000000000000 [0-9a-f]+
-- 0000000000000078 0000000000000018 6 5 8
-- \[ 6\] \.strtab STRTAB 0000000000000000 [0-9a-f]+
-- 0000000000000001 0000000000000000 . 0 0 1
-- \[ 7\] \.shstrtab STRTAB 0000000000000000 [0-9a-f]+
-- 0000000000000036 0000000000000000 . 0 0 1
-+ \[ 5\] \.shstrtab STRTAB 0000000000000000 [0-9a-f]+
-+ 0000000000000026 0000000000000000 . 0 0 1
- Key to Flags:
- #...
-diff --git a/gas/write.c b/gas/write.c
-index ca14b3734b..75ba971eb4 100644
---- a/gas/write.c
-+++ b/gas/write.c
-@@ -848,7 +848,12 @@ adjust_reloc_syms (bfd *abfd ATTRIBUTE_UNUSED,
- /* Since we're reducing to section symbols, don't attempt to reduce
- anything that's already using one. */
- if (symbol_section_p (sym))
-- continue;
-+ {
-+ /* Mark the section symbol used in relocation so that it will
-+ be included in the symbol table. */
-+ symbol_mark_used_in_reloc (sym);
-+ continue;
-+ }
-
- symsec = S_GET_SEGMENT (sym);
- if (symsec == NULL)
-@@ -1747,10 +1752,13 @@ set_symtab (void)
-
- /* Count symbols. We can't rely on a count made by the loop in
- write_object_file, because *_frob_file may add a new symbol or
-- two. */
-+ two. Generate unused section symbols only if needed. */
- nsyms = 0;
- for (symp = symbol_rootP; symp; symp = symbol_next (symp))
-- nsyms++;
-+ if (bfd_keep_unused_section_symbols (stdoutput)
-+ || !symbol_section_p (symp)
-+ || symbol_used_in_reloc_p (symp))
-+ nsyms++;
-
- if (nsyms)
- {
-@@ -1759,15 +1767,22 @@ set_symtab (void)
-
- asympp = (asymbol **) bfd_alloc (stdoutput, amt);
- symp = symbol_rootP;
-- for (i = 0; i < nsyms; i++, symp = symbol_next (symp))
-- {
-- asympp[i] = symbol_get_bfdsym (symp);
-- if (asympp[i]->flags != BSF_SECTION_SYM
-- || !(bfd_is_const_section (asympp[i]->section)
-- && asympp[i]->section->symbol == asympp[i]))
-- asympp[i]->flags |= BSF_KEEP;
-- symbol_mark_written (symp);
-- }
-+ for (i = 0; i < nsyms; symp = symbol_next (symp))
-+ if (bfd_keep_unused_section_symbols (stdoutput)
-+ || !symbol_section_p (symp)
-+ || symbol_used_in_reloc_p (symp))
-+ {
-+ asympp[i] = symbol_get_bfdsym (symp);
-+ if (asympp[i]->flags != BSF_SECTION_SYM
-+ || !(bfd_is_const_section (asympp[i]->section)
-+ && asympp[i]->section->symbol == asympp[i]))
-+ asympp[i]->flags |= BSF_KEEP;
-+ symbol_mark_written (symp);
-+ /* Include this section symbol in the symbol table. */
-+ if (symbol_section_p (symp))
-+ asympp[i]->flags |= BSF_SECTION_SYM_USED;
-+ i++;
-+ }
- }
- else
- asympp = 0;
-@@ -2058,6 +2073,10 @@ maybe_generate_build_notes (void)
- bfd_section_size (bsym->section),
- note);
-
-+ /* Mark the section symbol used in relocation so that it will be
-+ included in the symbol table. */
-+ symbol_mark_used_in_reloc (sym);
-+
- total_size += note_size;
- /* FIXME: Maybe add a note recording the assembler command line and version ? */
- }
-diff --git a/ld/testsuite/ld-elf/export-class.sd b/ld/testsuite/ld-elf/export-class.sd
-index bd5c5491d9..e71248268c 100644
---- a/ld/testsuite/ld-elf/export-class.sd
-+++ b/ld/testsuite/ld-elf/export-class.sd
-@@ -9,8 +9,6 @@ Symbol table '\.dynsym' contains [0-9]+ entries:
- #...
- Symbol table '\.symtab' contains [0-9]+ entries:
- * Num: * Value * Size * Type * Bind * Vis * Ndx * Name
--#...
-- * [0-9a-f]+: * 0*12340000 * 0 * SECTION * LOCAL * DEFAULT * [0-9]+ *
- #...
- * [0-9a-f]+: * 0*123400a0 * 0 * NOTYPE * LOCAL * DEFAULT * [0-9]+ * hidden_foo
- #...
-diff --git a/ld/testsuite/ld-elf/loadaddr3b.d b/ld/testsuite/ld-elf/loadaddr3b.d
-index ac4b5178d8..aa5e951524 100644
---- a/ld/testsuite/ld-elf/loadaddr3b.d
-+++ b/ld/testsuite/ld-elf/loadaddr3b.d
-@@ -3,9 +3,6 @@
- #objdump: -t
- #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-
--#...
--0+0000100 l d .text 0+0000000 .text
--0+0000200 l d .data 0+0000000 .data
- #...
- 0+0000110 g \*ABS\* 0+0000000 data_load
- #...
-diff --git a/ld/testsuite/ld-elf/sec64k.exp b/ld/testsuite/ld-elf/sec64k.exp
-index a1856b5bca..d148c26d8f 100644
---- a/ld/testsuite/ld-elf/sec64k.exp
-+++ b/ld/testsuite/ld-elf/sec64k.exp
-@@ -198,11 +198,15 @@ if { ![istarget "d10v-*-*"]
- puts $ofd " \\\[65279\\\] \\.foo\\.\[0-9\]+ .*"
- puts $ofd " \\\[65280\\\] \\.foo\\.\[0-9\]+ .*"
- puts $ofd "#..."
-- puts $ofd " 660..: \[0-9a-f\]+\[ \]+0\[ \]+SECTION\[ \]+LOCAL\[ \]+DEFAULT\[ \]+660.. "
-- puts $ofd "#..."
-- puts $ofd " 660..: \[0-9a-f\]+\[ \]+0\[ \]+NOTYPE\[ \]+LOCAL\[ \]+DEFAULT\[ \]+\[0-9\] bar_1$"
-- puts $ofd "#..."
-- puts $ofd ".* bar_66000$"
-+ if { [is_elf_unused_section_symbols ] } {
-+ puts $ofd " 660..: \[0-9a-f\]+\[ \]+0\[ \]+SECTION\[ \]+LOCAL\[ \]+DEFAULT\[ \]+660.. "
-+ puts $ofd "#..."
-+ puts $ofd " 660..: \[0-9a-f\]+\[ \]+0\[ \]+NOTYPE\[ \]+LOCAL\[ \]+DEFAULT\[ \]+\[0-9\] bar_1$"
-+ puts $ofd "#..."
-+ puts $ofd ".* bar_66000$"
-+ } else {
-+ puts $ofd " 66...: \[0-9a-f\]+\[ \]+0\[ \]+NOTYPE\[ \]+LOCAL\[ \]+DEFAULT\[ \]+660.. bar_66000$"
-+ }
- puts $ofd "#..."
- # Global symbols are not in "alphanumeric" order, so we just check
- # that the first and the last are present in any order (assuming no
-diff --git a/ld/testsuite/ld-i386/ibt-plt-1.d b/ld/testsuite/ld-i386/ibt-plt-1.d
-index a7eaa1f77d..b0648ae9e0 100644
---- a/ld/testsuite/ld-i386/ibt-plt-1.d
-+++ b/ld/testsuite/ld-i386/ibt-plt-1.d
-@@ -13,11 +13,11 @@ Disassembly of section .plt:
- +[a-f0-9]+: 0f 1f 40 00 nopl 0x0\(%eax\)
- +[a-f0-9]+: f3 0f 1e fb endbr32
- +[a-f0-9]+: 68 00 00 00 00 push \$0x0
-- +[a-f0-9]+: e9 e2 ff ff ff jmp [a-f0-9]+ <.plt>
-+ +[a-f0-9]+: e9 e2 ff ff ff jmp [a-f0-9]+ <bar1@plt-0x30>
- +[a-f0-9]+: 66 90 xchg %ax,%ax
- +[a-f0-9]+: f3 0f 1e fb endbr32
- +[a-f0-9]+: 68 08 00 00 00 push \$0x8
-- +[a-f0-9]+: e9 d2 ff ff ff jmp [a-f0-9]+ <.plt>
-+ +[a-f0-9]+: e9 d2 ff ff ff jmp [a-f0-9]+ <bar1@plt-0x30>
- +[a-f0-9]+: 66 90 xchg %ax,%ax
-
- Disassembly of section .plt.sec:
-diff --git a/ld/testsuite/ld-i386/ibt-plt-2a.d b/ld/testsuite/ld-i386/ibt-plt-2a.d
-index 9c8f5996a7..42aa2ce741 100644
---- a/ld/testsuite/ld-i386/ibt-plt-2a.d
-+++ b/ld/testsuite/ld-i386/ibt-plt-2a.d
-@@ -14,11 +14,11 @@ Disassembly of section .plt:
- +[a-f0-9]+: 0f 1f 40 00 nopl 0x0\(%eax\)
- +[a-f0-9]+: f3 0f 1e fb endbr32
- +[a-f0-9]+: 68 00 00 00 00 push \$0x0
-- +[a-f0-9]+: e9 e2 ff ff ff jmp 140 <.plt>
-+ +[a-f0-9]+: e9 e2 ff ff ff jmp 140 <bar1@plt-0x30>
- +[a-f0-9]+: 66 90 xchg %ax,%ax
- +[a-f0-9]+: f3 0f 1e fb endbr32
- +[a-f0-9]+: 68 08 00 00 00 push \$0x8
-- +[a-f0-9]+: e9 d2 ff ff ff jmp 140 <.plt>
-+ +[a-f0-9]+: e9 d2 ff ff ff jmp 140 <bar1@plt-0x30>
- +[a-f0-9]+: 66 90 xchg %ax,%ax
-
- Disassembly of section .plt.sec:
-diff --git a/ld/testsuite/ld-i386/ibt-plt-2c.d b/ld/testsuite/ld-i386/ibt-plt-2c.d
-index a9c8642ced..445e08fa8b 100644
---- a/ld/testsuite/ld-i386/ibt-plt-2c.d
-+++ b/ld/testsuite/ld-i386/ibt-plt-2c.d
-@@ -14,11 +14,11 @@ Disassembly of section .plt:
- +[a-f0-9]+: 0f 1f 40 00 nopl 0x0\(%eax\)
- +[a-f0-9]+: f3 0f 1e fb endbr32
- +[a-f0-9]+: 68 00 00 00 00 push \$0x0
-- +[a-f0-9]+: e9 e2 ff ff ff jmp [a-f0-9]+ <.plt>
-+ +[a-f0-9]+: e9 e2 ff ff ff jmp [a-f0-9]+ <bar1@plt-0x30>
- +[a-f0-9]+: 66 90 xchg %ax,%ax
- +[a-f0-9]+: f3 0f 1e fb endbr32
- +[a-f0-9]+: 68 08 00 00 00 push \$0x8
-- +[a-f0-9]+: e9 d2 ff ff ff jmp [a-f0-9]+ <.plt>
-+ +[a-f0-9]+: e9 d2 ff ff ff jmp [a-f0-9]+ <bar1@plt-0x30>
- +[a-f0-9]+: 66 90 xchg %ax,%ax
-
- Disassembly of section .plt.sec:
-diff --git a/ld/testsuite/ld-i386/ibt-plt-3a.d b/ld/testsuite/ld-i386/ibt-plt-3a.d
-index b4366c9315..b357a74a33 100644
---- a/ld/testsuite/ld-i386/ibt-plt-3a.d
-+++ b/ld/testsuite/ld-i386/ibt-plt-3a.d
-@@ -14,11 +14,11 @@ Disassembly of section .plt:
- +[a-f0-9]+: 0f 1f 40 00 nopl 0x0\(%eax\)
- +[a-f0-9]+: f3 0f 1e fb endbr32
- +[a-f0-9]+: 68 00 00 00 00 push \$0x0
-- +[a-f0-9]+: e9 e2 ff ff ff jmp 140 <.plt>
-+ +[a-f0-9]+: e9 e2 ff ff ff jmp 140 <bar1@plt-0x30>
- +[a-f0-9]+: 66 90 xchg %ax,%ax
- +[a-f0-9]+: f3 0f 1e fb endbr32
- +[a-f0-9]+: 68 08 00 00 00 push \$0x8
-- +[a-f0-9]+: e9 d2 ff ff ff jmp 140 <.plt>
-+ +[a-f0-9]+: e9 d2 ff ff ff jmp 140 <bar1@plt-0x30>
- +[a-f0-9]+: 66 90 xchg %ax,%ax
-
- Disassembly of section .plt.sec:
-diff --git a/ld/testsuite/ld-i386/ibt-plt-3c.d b/ld/testsuite/ld-i386/ibt-plt-3c.d
-index b4366c9315..b357a74a33 100644
---- a/ld/testsuite/ld-i386/ibt-plt-3c.d
-+++ b/ld/testsuite/ld-i386/ibt-plt-3c.d
-@@ -14,11 +14,11 @@ Disassembly of section .plt:
- +[a-f0-9]+: 0f 1f 40 00 nopl 0x0\(%eax\)
- +[a-f0-9]+: f3 0f 1e fb endbr32
- +[a-f0-9]+: 68 00 00 00 00 push \$0x0
-- +[a-f0-9]+: e9 e2 ff ff ff jmp 140 <.plt>
-+ +[a-f0-9]+: e9 e2 ff ff ff jmp 140 <bar1@plt-0x30>
- +[a-f0-9]+: 66 90 xchg %ax,%ax
- +[a-f0-9]+: f3 0f 1e fb endbr32
- +[a-f0-9]+: 68 08 00 00 00 push \$0x8
-- +[a-f0-9]+: e9 d2 ff ff ff jmp 140 <.plt>
-+ +[a-f0-9]+: e9 d2 ff ff ff jmp 140 <bar1@plt-0x30>
- +[a-f0-9]+: 66 90 xchg %ax,%ax
-
- Disassembly of section .plt.sec:
-diff --git a/ld/testsuite/ld-i386/plt-pic.pd b/ld/testsuite/ld-i386/plt-pic.pd
-index 5c047d4deb..fe0f3efb1b 100644
---- a/ld/testsuite/ld-i386/plt-pic.pd
-+++ b/ld/testsuite/ld-i386/plt-pic.pd
-@@ -8,7 +8,7 @@
-
- Disassembly of section .plt:
-
--[0-9a-f]+ <.plt>:
-+[0-9a-f]+ <fn1@plt-0x10>:
- +[0-9a-f]+: ff b3 04 00 00 00 push 0x4\(%ebx\)
- +[0-9a-f]+: ff a3 08 00 00 00 jmp \*0x8\(%ebx\)
- #...
-@@ -16,9 +16,9 @@ Disassembly of section .plt:
- [0-9a-f]+ <fn1@plt>:
- +[0-9a-f]+: ff a3 ([0-9a-f]{2} ){4} * jmp \*0x[0-9a-f]+\(%ebx\)
- +[0-9a-f]+: 68 00 00 00 00 push \$0x0
-- +[0-9a-f]+: e9 ([0-9a-f]{2} ){4} * jmp [0-9a-f]+ <.plt>
-+ +[0-9a-f]+: e9 ([0-9a-f]{2} ){4} * jmp [0-9a-f]+ <fn1@plt-0x10>
-
- [0-9a-f]+ <fn2@plt>:
- +[0-9a-f]+: ff a3 ([0-9a-f]{2} ){4} * jmp \*0x[0-9a-f]+\(%ebx\)
- +[0-9a-f]+: 68 08 00 00 00 push \$0x8
-- +[0-9a-f]+: e9 ([0-9a-f]{2} ){4} * jmp [0-9a-f]+ <.plt>
-+ +[0-9a-f]+: e9 ([0-9a-f]{2} ){4} * jmp [0-9a-f]+ <fn1@plt-0x10>
-diff --git a/ld/testsuite/ld-i386/plt-pic2.dd b/ld/testsuite/ld-i386/plt-pic2.dd
-index 8162234aab..c9af97203a 100644
---- a/ld/testsuite/ld-i386/plt-pic2.dd
-+++ b/ld/testsuite/ld-i386/plt-pic2.dd
-@@ -9,7 +9,7 @@
-
- Disassembly of section .plt:
-
--.* <.plt>:
-+.* <fn1@plt-0x10>:
- +[a-f0-9]+: ff b3 04 00 00 00 push 0x4\(%ebx\)
- +[a-f0-9]+: ff a3 08 00 00 00 jmp \*0x8\(%ebx\)
- +[a-f0-9]+: 00 00 add %al,\(%eax\)
-@@ -18,12 +18,12 @@ Disassembly of section .plt:
- .* <fn1@plt>:
- +[a-f0-9]+: ff a3 0c 00 00 00 jmp \*0xc\(%ebx\)
- +[a-f0-9]+: 68 00 00 00 00 push \$0x0
-- +[a-f0-9]+: e9 e0 ff ff ff jmp .* <.plt>
-+ +[a-f0-9]+: e9 e0 ff ff ff jmp .* <fn1@plt-0x10>
-
- .* <fn2@plt>:
- +[a-f0-9]+: ff a3 10 00 00 00 jmp \*0x10\(%ebx\)
- +[a-f0-9]+: 68 08 00 00 00 push \$0x8
-- +[a-f0-9]+: e9 d0 ff ff ff jmp .* <.plt>
-+ +[a-f0-9]+: e9 d0 ff ff ff jmp .* <fn1@plt-0x10>
-
- Disassembly of section .text:
-
-diff --git a/ld/testsuite/ld-i386/plt.pd b/ld/testsuite/ld-i386/plt.pd
-index efcd8a1b1d..9c395c3b8d 100644
---- a/ld/testsuite/ld-i386/plt.pd
-+++ b/ld/testsuite/ld-i386/plt.pd
-@@ -8,7 +8,7 @@
-
- Disassembly of section .plt:
-
--[0-9a-f]+ <.plt>:
-+[0-9a-f]+ <fn1@plt-0x10>:
- +[0-9a-f]+: ff 35 ([0-9a-f]{2} ){4} * push 0x[0-9a-f]+
- +[0-9a-f]+: ff 25 ([0-9a-f]{2} ){4} * jmp \*0x[0-9a-f]+
- #...
-@@ -16,9 +16,9 @@ Disassembly of section .plt:
- [0-9a-f]+ <fn1@plt>:
- +[0-9a-f]+: ff 25 ([0-9a-f]{2} ){4} * jmp \*0x[0-9a-f]+
- +[0-9a-f]+: 68 00 00 00 00 push \$0x0
-- +[0-9a-f]+: e9 ([0-9a-f]{2} ){4} * jmp [0-9a-f]+ <.plt>
-+ +[0-9a-f]+: e9 ([0-9a-f]{2} ){4} * jmp [0-9a-f]+ <fn1@plt-0x10>
-
- [0-9a-f]+ <fn2@plt>:
- +[0-9a-f]+: ff 25 ([0-9a-f]{2} ){4} * jmp \*0x[0-9a-f]+
- +[0-9a-f]+: 68 08 00 00 00 push \$0x8
-- +[0-9a-f]+: e9 ([0-9a-f]{2} ){4} * jmp [0-9a-f]+ <.plt>
-+ +[0-9a-f]+: e9 ([0-9a-f]{2} ){4} * jmp [0-9a-f]+ <fn1@plt-0x10>
-diff --git a/ld/testsuite/ld-i386/plt2.dd b/ld/testsuite/ld-i386/plt2.dd
-index c9d673f65a..5623fe9685 100644
---- a/ld/testsuite/ld-i386/plt2.dd
-+++ b/ld/testsuite/ld-i386/plt2.dd
-@@ -9,7 +9,7 @@
-
- Disassembly of section .plt:
-
--0+8048160 <.plt>:
-+0+8048160 <fn1@plt-0x10>:
- +[a-f0-9]+: ff 35 40 92 04 08 push 0x8049240
- +[a-f0-9]+: ff 25 44 92 04 08 jmp \*0x8049244
- +[a-f0-9]+: 00 00 add %al,\(%eax\)
-@@ -18,12 +18,12 @@ Disassembly of section .plt:
- 0+8048170 <fn1@plt>:
- +[a-f0-9]+: ff 25 48 92 04 08 jmp \*0x8049248
- +[a-f0-9]+: 68 00 00 00 00 push \$0x0
-- +[a-f0-9]+: e9 e0 ff ff ff jmp 8048160 <.plt>
-+ +[a-f0-9]+: e9 e0 ff ff ff jmp 8048160 <fn1@plt-0x10>
-
- 0+8048180 <fn2@plt>:
- +[a-f0-9]+: ff 25 4c 92 04 08 jmp \*0x804924c
- +[a-f0-9]+: 68 08 00 00 00 push \$0x8
-- +[a-f0-9]+: e9 d0 ff ff ff jmp 8048160 <.plt>
-+ +[a-f0-9]+: e9 d0 ff ff ff jmp 8048160 <fn1@plt-0x10>
-
- Disassembly of section .text:
-
-diff --git a/ld/testsuite/ld-i386/pr19636-1d.d b/ld/testsuite/ld-i386/pr19636-1d.d
-index b7e6aba92c..f294c9c707 100644
---- a/ld/testsuite/ld-i386/pr19636-1d.d
-+++ b/ld/testsuite/ld-i386/pr19636-1d.d
-@@ -22,4 +22,4 @@ Disassembly of section .text:
- .* <_start>:
- [ ]*[a-f0-9]+: 3b 80 f8 ff ff ff cmp -0x8\(%eax\),%eax
- [ ]*[a-f0-9]+: ff a0 fc ff ff ff jmp \*-0x4\(%eax\)
--[ ]*[a-f0-9]+: e8 df ff ff ff call .* <\.plt\+0x10>
-+[ ]*[a-f0-9]+: e8 df ff ff ff call .* <_start-0x10>
-diff --git a/ld/testsuite/ld-i386/pr19636-1l.d b/ld/testsuite/ld-i386/pr19636-1l.d
-index 8f2a8e5127..a7568aa74a 100644
---- a/ld/testsuite/ld-i386/pr19636-1l.d
-+++ b/ld/testsuite/ld-i386/pr19636-1l.d
-@@ -23,4 +23,4 @@ Disassembly of section .text:
- .* <_start>:
- [ ]*[a-f0-9]+: 3b 80 f8 ff ff ff cmp -0x8\(%eax\),%eax
- [ ]*[a-f0-9]+: ff a0 fc ff ff ff jmp \*-0x4\(%eax\)
--[ ]*[a-f0-9]+: e8 df ff ff ff call .* <\.plt\+0x10>
-+[ ]*[a-f0-9]+: e8 df ff ff ff call .* <_start-0x10>
-diff --git a/ld/testsuite/ld-i386/pr19636-2c.d b/ld/testsuite/ld-i386/pr19636-2c.d
-index 4b49c81755..92b241073c 100644
---- a/ld/testsuite/ld-i386/pr19636-2c.d
-+++ b/ld/testsuite/ld-i386/pr19636-2c.d
-@@ -22,6 +22,6 @@ Disassembly of section .text:
- .* <_start>:
- [ ]*[a-f0-9]+: 3b 80 fc ff ff ff cmp -0x4\(%eax\),%eax
- [ ]*[a-f0-9]+: ff a0 fc ff ff ff jmp \*-0x4\(%eax\)
--[ ]*[a-f0-9]+: e8 df ff ff ff call .* <\.plt\+0x10>
-+[ ]*[a-f0-9]+: e8 df ff ff ff call .* <_start-0x10>
- [ ]*[a-f0-9]+: 3d 00 00 00 00 cmp \$0x0,%eax
- [ ]*[a-f0-9]+: e8 fc ff ff ff call .* <_start\+0x17>
-diff --git a/ld/testsuite/ld-i386/tlsbin.rd b/ld/testsuite/ld-i386/tlsbin.rd
-index 20e4c5ed36..39afcd0b5b 100644
---- a/ld/testsuite/ld-i386/tlsbin.rd
-+++ b/ld/testsuite/ld-i386/tlsbin.rd
-@@ -84,19 +84,6 @@ Symbol table '\.dynsym' contains [0-9]+ entries:
- Symbol table '\.symtab' contains [0-9]+ entries:
- +Num: +Value +Size +Type +Bind +Vis +Ndx +Name
- +[0-9]+: 0+ +0 +NOTYPE +LOCAL +DEFAULT +UND *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +1 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +2 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +3 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +4 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +5 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +6 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +7 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +8 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +9 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +10 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +11 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +12 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +13 *
- .* FILE +LOCAL +DEFAULT +ABS .*tlsbinpic.o
- +[0-9]+: 00000020 +0 +TLS +LOCAL +DEFAULT +9 sl1
- +[0-9]+: 00000024 +0 +TLS +LOCAL +DEFAULT +9 sl2
-diff --git a/ld/testsuite/ld-i386/tlsbin2.rd b/ld/testsuite/ld-i386/tlsbin2.rd
-index 5177f4d30d..fcbecc3196 100644
---- a/ld/testsuite/ld-i386/tlsbin2.rd
-+++ b/ld/testsuite/ld-i386/tlsbin2.rd
-@@ -79,17 +79,6 @@ Symbol table '\.dynsym' contains [0-9]+ entries:
- Symbol table '\.symtab' contains [0-9]+ entries:
- +Num: +Value +Size +Type +Bind +Vis +Ndx +Name
- +[0-9]+: 0+ +0 +NOTYPE +LOCAL +DEFAULT +UND *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +1 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +2 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +3 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +4 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +5 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +6 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +7 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +8 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +9 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +10 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +11 *
- .* FILE +LOCAL +DEFAULT +ABS .*tlsbinpic2.o
- +[0-9]+: 00000020 +0 +TLS +LOCAL +DEFAULT +7 sl1
- +[0-9]+: 00000024 +0 +TLS +LOCAL +DEFAULT +7 sl2
-diff --git a/ld/testsuite/ld-i386/tlsbindesc.rd b/ld/testsuite/ld-i386/tlsbindesc.rd
-index 1c9c4f2cb2..b831f89133 100644
---- a/ld/testsuite/ld-i386/tlsbindesc.rd
-+++ b/ld/testsuite/ld-i386/tlsbindesc.rd
-@@ -77,17 +77,6 @@ Symbol table '\.dynsym' contains [0-9]+ entries:
- Symbol table '\.symtab' contains [0-9]+ entries:
- +Num: +Value +Size +Type +Bind +Vis +Ndx +Name
- +[0-9]+: 0+ +0 +NOTYPE +LOCAL +DEFAULT +UND *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +1 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +2 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +3 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +4 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +5 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +6 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +7 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +8 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +9 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +10 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +11 *
- .* FILE +LOCAL +DEFAULT +ABS .*tlsbindesc.o
- +[0-9]+: 00000020 +0 +TLS +LOCAL +DEFAULT +7 sl1
- +[0-9]+: 00000024 +0 +TLS +LOCAL +DEFAULT +7 sl2
-diff --git a/ld/testsuite/ld-i386/tlsdesc.rd b/ld/testsuite/ld-i386/tlsdesc.rd
-index a5b4fb83c0..ec418d1a1f 100644
---- a/ld/testsuite/ld-i386/tlsdesc.rd
-+++ b/ld/testsuite/ld-i386/tlsdesc.rd
-@@ -92,17 +92,6 @@ Symbol table '\.dynsym' contains [0-9]+ entries:
- Symbol table '\.symtab' contains [0-9]+ entries:
- +Num: +Value +Size +Type +Bind +Vis +Ndx +Name
- +[0-9]+: 0+ +0 +NOTYPE +LOCAL +DEFAULT +UND *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +1 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +2 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +3 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +4 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +5 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +6 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +7 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +8 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +9 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +10 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +11 *
- .* FILE +LOCAL +DEFAULT +ABS .*tlsdesc.o
- +[0-9]+: 0+20 +0 +TLS +LOCAL +DEFAULT +7 sl1
- +[0-9]+: 0+24 +0 +TLS +LOCAL +DEFAULT +7 sl2
-diff --git a/ld/testsuite/ld-i386/tlsgdesc.rd b/ld/testsuite/ld-i386/tlsgdesc.rd
-index ef131ef857..0744aeb78b 100644
---- a/ld/testsuite/ld-i386/tlsgdesc.rd
-+++ b/ld/testsuite/ld-i386/tlsgdesc.rd
-@@ -73,16 +73,6 @@ Symbol table '\.dynsym' contains [0-9]+ entries:
- Symbol table '\.symtab' contains [0-9]+ entries:
- +Num: +Value +Size +Type +Bind +Vis +Ndx +Name
- +[0-9]+: 0+ +0 +NOTYPE +LOCAL +DEFAULT +UND *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +1 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +2 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +3 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +4 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +5 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +6 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +7 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +8 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +9 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +10 *
- +[0-9]+: [0-9a-f]+ +0 +OBJECT +LOCAL +DEFAULT +8 _DYNAMIC
- +[0-9]+: [0-9a-f]+ +0 +OBJECT +LOCAL +DEFAULT +10 _GLOBAL_OFFSET_TABLE_
- +[0-9]+: 0+ +0 +TLS +GLOBAL +DEFAULT +UND sG3
-diff --git a/ld/testsuite/ld-i386/tlsnopic.rd b/ld/testsuite/ld-i386/tlsnopic.rd
-index 661f1c46c6..229ce23a9a 100644
---- a/ld/testsuite/ld-i386/tlsnopic.rd
-+++ b/ld/testsuite/ld-i386/tlsnopic.rd
-@@ -80,15 +80,6 @@ Symbol table '\.dynsym' contains [0-9]+ entries:
- Symbol table '\.symtab' contains [0-9]+ entries:
- +Num: +Value +Size +Type +Bind +Vis +Ndx +Name
- +[0-9]+: 0+ +0 +NOTYPE +LOCAL +DEFAULT +UND *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +1 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +2 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +3 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +4 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +5 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +6 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +7 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +8 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +9 *
- .* FILE +LOCAL +DEFAULT +ABS .*tlsnopic1.o
- +[0-9]+: 0+00 +0 +TLS +LOCAL +DEFAULT +6 bl1
- +[0-9]+: 0+04 +0 +TLS +LOCAL +DEFAULT +6 bl2
-diff --git a/ld/testsuite/ld-i386/tlspic.rd b/ld/testsuite/ld-i386/tlspic.rd
-index 3425c951bd..135d74907d 100644
---- a/ld/testsuite/ld-i386/tlspic.rd
-+++ b/ld/testsuite/ld-i386/tlspic.rd
-@@ -96,18 +96,6 @@ Symbol table '\.dynsym' contains [0-9]+ entries:
- Symbol table '\.symtab' contains [0-9]+ entries:
- +Num: +Value +Size +Type +Bind +Vis +Ndx +Name
- +[0-9]+: 0+ +0 +NOTYPE +LOCAL +DEFAULT +UND *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +1 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +2 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +3 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +4 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +5 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +6 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +7 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +8 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +9 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +10 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +11 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +12 *
- .* FILE +LOCAL +DEFAULT +ABS .*tlspic1.o
- +[0-9]+: 0+20 +0 +TLS +LOCAL +DEFAULT +8 sl1
- +[0-9]+: 0+24 +0 +TLS +LOCAL +DEFAULT +8 sl2
-diff --git a/ld/testsuite/ld-i386/tlspic2.rd b/ld/testsuite/ld-i386/tlspic2.rd
-index 274445db84..ce85a55be4 100644
---- a/ld/testsuite/ld-i386/tlspic2.rd
-+++ b/ld/testsuite/ld-i386/tlspic2.rd
-@@ -91,16 +91,6 @@ Symbol table '\.dynsym' contains [0-9]+ entries:
- Symbol table '\.symtab' contains [0-9]+ entries:
- +Num: +Value +Size +Type +Bind +Vis +Ndx +Name
- +[0-9]+: 0+ +0 +NOTYPE +LOCAL +DEFAULT +UND *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +1 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +2 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +3 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +4 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +5 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +6 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +7 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +8 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +9 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +10 *
- .* FILE +LOCAL +DEFAULT +ABS .*tlspic3.o
- +[0-9]+: 0+20 +0 +TLS +LOCAL +DEFAULT +6 sl1
- +[0-9]+: 0+24 +0 +TLS +LOCAL +DEFAULT +6 sl2
-diff --git a/ld/testsuite/ld-ifunc/ifunc-2-i386-now.d b/ld/testsuite/ld-ifunc/ifunc-2-i386-now.d
-index 2c917fa293..0d3f7b80d0 100644
---- a/ld/testsuite/ld-ifunc/ifunc-2-i386-now.d
-+++ b/ld/testsuite/ld-ifunc/ifunc-2-i386-now.d
-@@ -10,7 +10,7 @@
-
- Disassembly of section .plt:
-
--0+f0 <.plt>:
-+0+f0 <\*ABS\*@plt-0x10>:
- +[a-f0-9]+: ff b3 04 00 00 00 push 0x4\(%ebx\)
- +[a-f0-9]+: ff a3 08 00 00 00 jmp \*0x8\(%ebx\)
- +[a-f0-9]+: 00 00 add %al,\(%eax\)
-@@ -19,7 +19,7 @@ Disassembly of section .plt:
- 0+100 <\*ABS\*@plt>:
- +[a-f0-9]+: ff a3 0c 00 00 00 jmp \*0xc\(%ebx\)
- +[a-f0-9]+: 68 00 00 00 00 push \$0x0
-- +[a-f0-9]+: e9 e0 ff ff ff jmp f0 <.plt>
-+ +[a-f0-9]+: e9 e0 ff ff ff jmp f0 <\*ABS\*@plt-0x10>
-
- Disassembly of section .text:
-
-diff --git a/ld/testsuite/ld-ifunc/ifunc-2-local-i386-now.d b/ld/testsuite/ld-ifunc/ifunc-2-local-i386-now.d
-index 01f6a78146..48d2084d38 100644
---- a/ld/testsuite/ld-ifunc/ifunc-2-local-i386-now.d
-+++ b/ld/testsuite/ld-ifunc/ifunc-2-local-i386-now.d
-@@ -10,7 +10,7 @@
-
- Disassembly of section .plt:
-
--0+e0 <.plt>:
-+0+e0 <\*ABS\*@plt-0x10>:
- +[a-f0-9]+: ff b3 04 00 00 00 push 0x4\(%ebx\)
- +[a-f0-9]+: ff a3 08 00 00 00 jmp \*0x8\(%ebx\)
- +[a-f0-9]+: 00 00 add %al,\(%eax\)
-@@ -19,7 +19,7 @@ Disassembly of section .plt:
- 0+f0 <\*ABS\*@plt>:
- +[a-f0-9]+: ff a3 0c 00 00 00 jmp \*0xc\(%ebx\)
- +[a-f0-9]+: 68 00 00 00 00 push \$0x0
-- +[a-f0-9]+: e9 e0 ff ff ff jmp e0 <.plt>
-+ +[a-f0-9]+: e9 e0 ff ff ff jmp e0 <\*ABS\*@plt-0x10>
-
- Disassembly of section .text:
-
-diff --git a/ld/testsuite/ld-ifunc/ifunc-2-local-x86-64-now.d b/ld/testsuite/ld-ifunc/ifunc-2-local-x86-64-now.d
-index 375cecd6f2..14866a8f6c 100644
---- a/ld/testsuite/ld-ifunc/ifunc-2-local-x86-64-now.d
-+++ b/ld/testsuite/ld-ifunc/ifunc-2-local-x86-64-now.d
-@@ -9,7 +9,7 @@
-
- Disassembly of section .plt:
-
--0+170 <.plt>:
-+0+170 <\*ABS\*\+0x190@plt-0x10>:
- +[a-f0-9]+: ff 35 42 01 20 00 push 0x200142\(%rip\) # 2002b8 <_GLOBAL_OFFSET_TABLE_\+0x8>
- +[a-f0-9]+: ff 25 44 01 20 00 jmp \*0x200144\(%rip\) # 2002c0 <_GLOBAL_OFFSET_TABLE_\+0x10>
- +[a-f0-9]+: 0f 1f 40 00 nopl 0x0\(%rax\)
-@@ -17,7 +17,7 @@ Disassembly of section .plt:
- 0+180 <\*ABS\*\+0x190@plt>:
- +[a-f0-9]+: ff 25 42 01 20 00 jmp \*0x200142\(%rip\) # 2002c8 <_GLOBAL_OFFSET_TABLE_\+0x18>
- +[a-f0-9]+: 68 00 00 00 00 push \$0x0
-- +[a-f0-9]+: e9 e0 ff ff ff jmp 170 <.plt>
-+ +[a-f0-9]+: e9 e0 ff ff ff jmp 170 <\*ABS\*\+0x190@plt-0x10>
-
- Disassembly of section .text:
-
-diff --git a/ld/testsuite/ld-ifunc/ifunc-2-x86-64-now.d b/ld/testsuite/ld-ifunc/ifunc-2-x86-64-now.d
-index 9cd35181b8..1cd60941ac 100644
---- a/ld/testsuite/ld-ifunc/ifunc-2-x86-64-now.d
-+++ b/ld/testsuite/ld-ifunc/ifunc-2-x86-64-now.d
-@@ -9,7 +9,7 @@
-
- Disassembly of section .plt:
-
--0+170 <.plt>:
-+0+170 <\*ABS\*\+0x190@plt-0x10>:
- +[a-f0-9]+: ff 35 42 01 20 00 push 0x200142\(%rip\) # 2002b8 <_GLOBAL_OFFSET_TABLE_\+0x8>
- +[a-f0-9]+: ff 25 44 01 20 00 jmp \*0x200144\(%rip\) # 2002c0 <_GLOBAL_OFFSET_TABLE_\+0x10>
- +[a-f0-9]+: 0f 1f 40 00 nopl 0x0\(%rax\)
-@@ -17,7 +17,7 @@ Disassembly of section .plt:
- 0+180 <\*ABS\*\+0x190@plt>:
- +[a-f0-9]+: ff 25 42 01 20 00 jmp \*0x200142\(%rip\) # 2002c8 <_GLOBAL_OFFSET_TABLE_\+0x18>
- +[a-f0-9]+: 68 00 00 00 00 push \$0x0
-- +[a-f0-9]+: e9 e0 ff ff ff jmp 170 <.plt>
-+ +[a-f0-9]+: e9 e0 ff ff ff jmp 170 <\*ABS\*\+0x190@plt-0x10>
-
- Disassembly of section .text:
-
-diff --git a/ld/testsuite/ld-ifunc/ifunc-21-x86-64.d b/ld/testsuite/ld-ifunc/ifunc-21-x86-64.d
-index de12e9f543..69a4ade87f 100644
---- a/ld/testsuite/ld-ifunc/ifunc-21-x86-64.d
-+++ b/ld/testsuite/ld-ifunc/ifunc-21-x86-64.d
-@@ -9,11 +9,11 @@
- Disassembly of section .text:
-
- 0+4000c8 <__start>:
-- +[a-f0-9]+: ff 15 2a 00 20 00 call \*0x20002a\(%rip\) # 6000f8 <.got>
-- +[a-f0-9]+: ff 25 24 00 20 00 jmp \*0x200024\(%rip\) # 6000f8 <.got>
-- +[a-f0-9]+: 48 03 05 1d 00 20 00 add 0x20001d\(%rip\),%rax # 6000f8 <.got>
-- +[a-f0-9]+: 48 8b 05 16 00 20 00 mov 0x200016\(%rip\),%rax # 6000f8 <.got>
-- +[a-f0-9]+: 48 85 05 0f 00 20 00 test %rax,0x20000f\(%rip\) # 6000f8 <.got>
-+ +[a-f0-9]+: ff 15 2a 00 20 00 call \*0x20002a\(%rip\) # 6000f8 <bar\+0x200007>
-+ +[a-f0-9]+: ff 25 24 00 20 00 jmp \*0x200024\(%rip\) # 6000f8 <bar\+0x200007>
-+ +[a-f0-9]+: 48 03 05 1d 00 20 00 add 0x20001d\(%rip\),%rax # 6000f8 <bar\+0x200007>
-+ +[a-f0-9]+: 48 8b 05 16 00 20 00 mov 0x200016\(%rip\),%rax # 6000f8 <bar\+0x200007>
-+ +[a-f0-9]+: 48 85 05 0f 00 20 00 test %rax,0x20000f\(%rip\) # 6000f8 <bar\+0x200007>
- +[a-f0-9]+: 48 c7 c0 f1 00 40 00 mov \$0x4000f1,%rax
-
- 0+4000f0 <foo>:
-diff --git a/ld/testsuite/ld-ifunc/ifunc-22-x86-64.d b/ld/testsuite/ld-ifunc/ifunc-22-x86-64.d
-index de12e9f543..69a4ade87f 100644
---- a/ld/testsuite/ld-ifunc/ifunc-22-x86-64.d
-+++ b/ld/testsuite/ld-ifunc/ifunc-22-x86-64.d
-@@ -9,11 +9,11 @@
- Disassembly of section .text:
-
- 0+4000c8 <__start>:
-- +[a-f0-9]+: ff 15 2a 00 20 00 call \*0x20002a\(%rip\) # 6000f8 <.got>
-- +[a-f0-9]+: ff 25 24 00 20 00 jmp \*0x200024\(%rip\) # 6000f8 <.got>
-- +[a-f0-9]+: 48 03 05 1d 00 20 00 add 0x20001d\(%rip\),%rax # 6000f8 <.got>
-- +[a-f0-9]+: 48 8b 05 16 00 20 00 mov 0x200016\(%rip\),%rax # 6000f8 <.got>
-- +[a-f0-9]+: 48 85 05 0f 00 20 00 test %rax,0x20000f\(%rip\) # 6000f8 <.got>
-+ +[a-f0-9]+: ff 15 2a 00 20 00 call \*0x20002a\(%rip\) # 6000f8 <bar\+0x200007>
-+ +[a-f0-9]+: ff 25 24 00 20 00 jmp \*0x200024\(%rip\) # 6000f8 <bar\+0x200007>
-+ +[a-f0-9]+: 48 03 05 1d 00 20 00 add 0x20001d\(%rip\),%rax # 6000f8 <bar\+0x200007>
-+ +[a-f0-9]+: 48 8b 05 16 00 20 00 mov 0x200016\(%rip\),%rax # 6000f8 <bar\+0x200007>
-+ +[a-f0-9]+: 48 85 05 0f 00 20 00 test %rax,0x20000f\(%rip\) # 6000f8 <bar\+0x200007>
- +[a-f0-9]+: 48 c7 c0 f1 00 40 00 mov \$0x4000f1,%rax
-
- 0+4000f0 <foo>:
-diff --git a/ld/testsuite/ld-ifunc/pr17154-i386-now.d b/ld/testsuite/ld-ifunc/pr17154-i386-now.d
-index 082d067422..6747b3408d 100644
---- a/ld/testsuite/ld-ifunc/pr17154-i386-now.d
-+++ b/ld/testsuite/ld-ifunc/pr17154-i386-now.d
-@@ -10,7 +10,7 @@
-
- Disassembly of section .plt:
-
--0+180 <.plt>:
-+0+180 <\*ABS\*@plt-0x10>:
- +[a-f0-9]+: ff b3 04 00 00 00 push 0x4\(%ebx\)
- +[a-f0-9]+: ff a3 08 00 00 00 jmp \*0x8\(%ebx\)
- +[a-f0-9]+: 00 00 add %al,\(%eax\)
-@@ -19,22 +19,22 @@ Disassembly of section .plt:
- 0+190 <\*ABS\*@plt>:
- +[a-f0-9]+: ff a3 0c 00 00 00 jmp \*0xc\(%ebx\)
- +[a-f0-9]+: 68 18 00 00 00 push \$0x18
-- +[a-f0-9]+: e9 e0 ff ff ff jmp 180 <.plt>
-+ +[a-f0-9]+: e9 e0 ff ff ff jmp 180 <\*ABS\*@plt-0x10>
-
- 0+1a0 <func1@plt>:
- +[a-f0-9]+: ff a3 10 00 00 00 jmp \*0x10\(%ebx\)
- +[a-f0-9]+: 68 00 00 00 00 push \$0x0
-- +[a-f0-9]+: e9 d0 ff ff ff jmp 180 <.plt>
-+ +[a-f0-9]+: e9 d0 ff ff ff jmp 180 <\*ABS\*@plt-0x10>
-
- 0+1b0 <func2@plt>:
- +[a-f0-9]+: ff a3 14 00 00 00 jmp \*0x14\(%ebx\)
- +[a-f0-9]+: 68 08 00 00 00 push \$0x8
-- +[a-f0-9]+: e9 c0 ff ff ff jmp 180 <.plt>
-+ +[a-f0-9]+: e9 c0 ff ff ff jmp 180 <\*ABS\*@plt-0x10>
-
- 0+1c0 <\*ABS\*@plt>:
- +[a-f0-9]+: ff a3 18 00 00 00 jmp \*0x18\(%ebx\)
- +[a-f0-9]+: 68 10 00 00 00 push \$0x10
-- +[a-f0-9]+: e9 b0 ff ff ff jmp 180 <.plt>
-+ +[a-f0-9]+: e9 b0 ff ff ff jmp 180 <\*ABS\*@plt-0x10>
-
- Disassembly of section .text:
-
-diff --git a/ld/testsuite/ld-ifunc/pr17154-i386.d b/ld/testsuite/ld-ifunc/pr17154-i386.d
-index 68123bf0ca..0b9817d437 100644
---- a/ld/testsuite/ld-ifunc/pr17154-i386.d
-+++ b/ld/testsuite/ld-ifunc/pr17154-i386.d
-@@ -15,22 +15,22 @@
- 0+190 <\*ABS\*@plt>:
- [ ]*[a-f0-9]+: ff a3 0c 00 00 00 jmp \*0xc\(%ebx\)
- [ ]*[a-f0-9]+: 68 18 00 00 00 push \$0x18
--[ ]*[a-f0-9]+: e9 e0 ff ff ff jmp 180 <.plt>
-+[ ]*[a-f0-9]+: e9 e0 ff ff ff jmp 180 <\*ABS\*@plt-0x10>
-
- 0+1a0 <func1@plt>:
- [ ]*[a-f0-9]+: ff a3 10 00 00 00 jmp \*0x10\(%ebx\)
- [ ]*[a-f0-9]+: 68 00 00 00 00 push \$0x0
--[ ]*[a-f0-9]+: e9 d0 ff ff ff jmp 180 <.plt>
-+[ ]*[a-f0-9]+: e9 d0 ff ff ff jmp 180 <\*ABS\*@plt-0x10>
-
- 0+1b0 <func2@plt>:
- [ ]*[a-f0-9]+: ff a3 14 00 00 00 jmp \*0x14\(%ebx\)
- [ ]*[a-f0-9]+: 68 08 00 00 00 push \$0x8
--[ ]*[a-f0-9]+: e9 c0 ff ff ff jmp 180 <.plt>
-+[ ]*[a-f0-9]+: e9 c0 ff ff ff jmp 180 <\*ABS\*@plt-0x10>
-
- 0+1c0 <\*ABS\*@plt>:
- [ ]*[a-f0-9]+: ff a3 18 00 00 00 jmp \*0x18\(%ebx\)
- [ ]*[a-f0-9]+: 68 10 00 00 00 push \$0x10
--[ ]*[a-f0-9]+: e9 b0 ff ff ff jmp 180 <.plt>
-+[ ]*[a-f0-9]+: e9 b0 ff ff ff jmp 180 <\*ABS\*@plt-0x10>
-
- Disassembly of section .text:
-
-diff --git a/ld/testsuite/ld-ifunc/pr17154-x86-64-now.d b/ld/testsuite/ld-ifunc/pr17154-x86-64-now.d
-index 928a6a78d7..4cc1dc206d 100644
---- a/ld/testsuite/ld-ifunc/pr17154-x86-64-now.d
-+++ b/ld/testsuite/ld-ifunc/pr17154-x86-64-now.d
-@@ -9,7 +9,7 @@
-
- Disassembly of section .plt:
-
--0+240 <.plt>:
-+0+240 <\*ABS\*\+0x29a@plt-0x10>:
- +[a-f0-9]+: ff 35 7a 01 20 00 push 0x20017a\(%rip\) # 2003c0 <_GLOBAL_OFFSET_TABLE_\+0x8>
- +[a-f0-9]+: ff 25 7c 01 20 00 jmp \*0x20017c\(%rip\) # 2003c8 <_GLOBAL_OFFSET_TABLE_\+0x10>
- +[a-f0-9]+: 0f 1f 40 00 nopl 0x0\(%rax\)
-@@ -17,22 +17,22 @@ Disassembly of section .plt:
- 0+250 <\*ABS\*\+0x29a@plt>:
- +[a-f0-9]+: ff 25 7a 01 20 00 jmp \*0x20017a\(%rip\) # 2003d0 <_GLOBAL_OFFSET_TABLE_\+0x18>
- +[a-f0-9]+: 68 03 00 00 00 push \$0x3
-- +[a-f0-9]+: e9 e0 ff ff ff jmp 240 <.plt>
-+ +[a-f0-9]+: e9 e0 ff ff ff jmp 240 <\*ABS\*\+0x29a@plt-0x10>
-
- 0+260 <func1@plt>:
- +[a-f0-9]+: ff 25 72 01 20 00 jmp \*0x200172\(%rip\) # 2003d8 <func1>
- +[a-f0-9]+: 68 00 00 00 00 push \$0x0
-- +[a-f0-9]+: e9 d0 ff ff ff jmp 240 <.plt>
-+ +[a-f0-9]+: e9 d0 ff ff ff jmp 240 <\*ABS\*\+0x29a@plt-0x10>
-
- 0+270 <func2@plt>:
- +[a-f0-9]+: ff 25 6a 01 20 00 jmp \*0x20016a\(%rip\) # 2003e0 <func2>
- +[a-f0-9]+: 68 01 00 00 00 push \$0x1
-- +[a-f0-9]+: e9 c0 ff ff ff jmp 240 <.plt>
-+ +[a-f0-9]+: e9 c0 ff ff ff jmp 240 <\*ABS\*\+0x29a@plt-0x10>
-
- 0+280 <\*ABS\*\+0x290@plt>:
- +[a-f0-9]+: ff 25 62 01 20 00 jmp \*0x200162\(%rip\) # 2003e8 <_GLOBAL_OFFSET_TABLE_\+0x30>
- +[a-f0-9]+: 68 02 00 00 00 push \$0x2
-- +[a-f0-9]+: e9 b0 ff ff ff jmp 240 <.plt>
-+ +[a-f0-9]+: e9 b0 ff ff ff jmp 240 <\*ABS\*\+0x29a@plt-0x10>
-
- Disassembly of section .text:
-
-diff --git a/ld/testsuite/ld-ifunc/pr17154-x86-64.d b/ld/testsuite/ld-ifunc/pr17154-x86-64.d
-index 8a6861dcde..9fb23d410e 100644
---- a/ld/testsuite/ld-ifunc/pr17154-x86-64.d
-+++ b/ld/testsuite/ld-ifunc/pr17154-x86-64.d
-@@ -13,22 +13,22 @@
- 0+250 <\*ABS\*\+0x29a@plt>:
- +[a-f0-9]+: ff 25 5a 01 20 00 jmp \*0x20015a\(%rip\) # 2003b0 <_GLOBAL_OFFSET_TABLE_\+0x18>
- +[a-f0-9]+: 68 03 00 00 00 push \$0x3
-- +[a-f0-9]+: e9 e0 ff ff ff jmp 240 <.plt>
-+ +[a-f0-9]+: e9 e0 ff ff ff jmp 240 <\*ABS\*\+0x29a@plt-0x10>
-
- 0+260 <func1@plt>:
- +[a-f0-9]+: ff 25 52 01 20 00 jmp \*0x200152\(%rip\) # 2003b8 <func1>
- +[a-f0-9]+: 68 00 00 00 00 push \$0x0
-- +[a-f0-9]+: e9 d0 ff ff ff jmp 240 <.plt>
-+ +[a-f0-9]+: e9 d0 ff ff ff jmp 240 <\*ABS\*\+0x29a@plt-0x10>
-
- 0+270 <func2@plt>:
- +[a-f0-9]+: ff 25 4a 01 20 00 jmp \*0x20014a\(%rip\) # 2003c0 <func2>
- +[a-f0-9]+: 68 01 00 00 00 push \$0x1
-- +[a-f0-9]+: e9 c0 ff ff ff jmp 240 <.plt>
-+ +[a-f0-9]+: e9 c0 ff ff ff jmp 240 <\*ABS\*\+0x29a@plt-0x10>
-
- 0+280 <\*ABS\*\+0x290@plt>:
- +[a-f0-9]+: ff 25 42 01 20 00 jmp \*0x200142\(%rip\) # 2003c8 <_GLOBAL_OFFSET_TABLE_\+0x30>
- +[a-f0-9]+: 68 02 00 00 00 push \$0x2
-- +[a-f0-9]+: e9 b0 ff ff ff jmp 240 <.plt>
-+ +[a-f0-9]+: e9 b0 ff ff ff jmp 240 <\*ABS\*\+0x29a@plt-0x10>
-
- Disassembly of section .text:
-
-diff --git a/ld/testsuite/ld-x86-64/bnd-branch-1-now.d b/ld/testsuite/ld-x86-64/bnd-branch-1-now.d
-index 9640beac2d..b7bc4e526c 100644
---- a/ld/testsuite/ld-x86-64/bnd-branch-1-now.d
-+++ b/ld/testsuite/ld-x86-64/bnd-branch-1-now.d
-@@ -8,7 +8,7 @@
-
- Disassembly of section .plt:
-
--0+230 <.plt>:
-+0+230 <foo2@plt-0x10>:
- +[a-f0-9]+: ff 35 82 01 20 00 push 0x200182\(%rip\) # 2003b8 <_GLOBAL_OFFSET_TABLE_\+0x8>
- +[a-f0-9]+: ff 25 84 01 20 00 jmp \*0x200184\(%rip\) # 2003c0 <_GLOBAL_OFFSET_TABLE_\+0x10>
- +[a-f0-9]+: 0f 1f 40 00 nopl 0x0\(%rax\)
-@@ -16,22 +16,22 @@ Disassembly of section .plt:
- 0+240 <foo2@plt>:
- +[a-f0-9]+: ff 25 82 01 20 00 jmp \*0x200182\(%rip\) # 2003c8 <foo2>
- +[a-f0-9]+: 68 00 00 00 00 push \$0x0
-- +[a-f0-9]+: e9 e0 ff ff ff jmp 230 <.plt>
-+ +[a-f0-9]+: e9 e0 ff ff ff jmp 230 <foo2@plt-0x10>
-
- 0+250 <foo3@plt>:
- +[a-f0-9]+: ff 25 7a 01 20 00 jmp \*0x20017a\(%rip\) # 2003d0 <foo3>
- +[a-f0-9]+: 68 01 00 00 00 push \$0x1
-- +[a-f0-9]+: e9 d0 ff ff ff jmp 230 <.plt>
-+ +[a-f0-9]+: e9 d0 ff ff ff jmp 230 <foo2@plt-0x10>
-
- 0+260 <foo1@plt>:
- +[a-f0-9]+: ff 25 72 01 20 00 jmp \*0x200172\(%rip\) # 2003d8 <foo1>
- +[a-f0-9]+: 68 02 00 00 00 push \$0x2
-- +[a-f0-9]+: e9 c0 ff ff ff jmp 230 <.plt>
-+ +[a-f0-9]+: e9 c0 ff ff ff jmp 230 <foo2@plt-0x10>
-
- 0+270 <foo4@plt>:
- +[a-f0-9]+: ff 25 6a 01 20 00 jmp \*0x20016a\(%rip\) # 2003e0 <foo4>
- +[a-f0-9]+: 68 03 00 00 00 push \$0x3
-- +[a-f0-9]+: e9 b0 ff ff ff jmp 230 <.plt>
-+ +[a-f0-9]+: e9 b0 ff ff ff jmp 230 <foo2@plt-0x10>
-
- Disassembly of section .text:
-
-diff --git a/ld/testsuite/ld-x86-64/bnd-ifunc-1-now.d b/ld/testsuite/ld-x86-64/bnd-ifunc-1-now.d
-index 25af7f81d4..15ecfe1cc5 100644
---- a/ld/testsuite/ld-x86-64/bnd-ifunc-1-now.d
-+++ b/ld/testsuite/ld-x86-64/bnd-ifunc-1-now.d
-@@ -13,7 +13,7 @@ Disassembly of section .plt:
- +[a-f0-9]+: f2 ff 25 4b 01 20 00 bnd jmp \*0x20014b\(%rip\) # 2002c8 <_GLOBAL_OFFSET_TABLE_\+0x10>
- +[a-f0-9]+: 0f 1f 00 nopl \(%rax\)
- +[a-f0-9]+: 68 00 00 00 00 push \$0x0
-- +[a-f0-9]+: f2 e9 e5 ff ff ff bnd jmp 170 <.plt>
-+ +[a-f0-9]+: f2 e9 e5 ff ff ff bnd jmp 170 <\*ABS\*\+0x198@plt-0x20>
- +[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\)
-
- Disassembly of section .plt.sec:
-diff --git a/ld/testsuite/ld-x86-64/bnd-ifunc-2-now.d b/ld/testsuite/ld-x86-64/bnd-ifunc-2-now.d
-index 634940d5b1..211d72d233 100644
---- a/ld/testsuite/ld-x86-64/bnd-ifunc-2-now.d
-+++ b/ld/testsuite/ld-x86-64/bnd-ifunc-2-now.d
-@@ -13,16 +13,16 @@ Disassembly of section .plt:
- +[a-f0-9]+: f2 ff 25 9b 01 20 00 bnd jmp \*0x20019b\(%rip\) # 2003e8 <_GLOBAL_OFFSET_TABLE_\+0x10>
- +[a-f0-9]+: 0f 1f 00 nopl \(%rax\)
- +[a-f0-9]+: 68 03 00 00 00 push \$0x3
-- +[a-f0-9]+: f2 e9 e5 ff ff ff bnd jmp 240 <.plt>
-+ +[a-f0-9]+: f2 e9 e5 ff ff ff bnd jmp 240 <\*ABS\*\+0x2bc@plt-0x50>
- +[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\)
- +[a-f0-9]+: 68 00 00 00 00 push \$0x0
-- +[a-f0-9]+: f2 e9 d5 ff ff ff bnd jmp 240 <.plt>
-+ +[a-f0-9]+: f2 e9 d5 ff ff ff bnd jmp 240 <\*ABS\*\+0x2bc@plt-0x50>
- +[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\)
- +[a-f0-9]+: 68 01 00 00 00 push \$0x1
-- +[a-f0-9]+: f2 e9 c5 ff ff ff bnd jmp 240 <.plt>
-+ +[a-f0-9]+: f2 e9 c5 ff ff ff bnd jmp 240 <\*ABS\*\+0x2bc@plt-0x50>
- +[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\)
- +[a-f0-9]+: 68 02 00 00 00 push \$0x2
-- +[a-f0-9]+: f2 e9 b5 ff ff ff bnd jmp 240 <.plt>
-+ +[a-f0-9]+: f2 e9 b5 ff ff ff bnd jmp 240 <\*ABS\*\+0x2bc@plt-0x50>
- +[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\)
-
- Disassembly of section .plt.sec:
-diff --git a/ld/testsuite/ld-x86-64/bnd-ifunc-2.d b/ld/testsuite/ld-x86-64/bnd-ifunc-2.d
-index 7a0356cc69..f80ba15aa3 100644
---- a/ld/testsuite/ld-x86-64/bnd-ifunc-2.d
-+++ b/ld/testsuite/ld-x86-64/bnd-ifunc-2.d
-@@ -8,16 +8,16 @@
- [ ]*[a-f0-9]+: f2 ff 25 7b 01 20 00 bnd jmp \*0x20017b\(%rip\)[ ]*(#.*)?
- [ ]*[a-f0-9]+: 0f 1f 00 nopl \(%rax\)
- [ ]*[a-f0-9]+: 68 03 00 00 00 push \$0x3
--[ ]*[a-f0-9]+: f2 e9 e5 ff ff ff bnd jmp 240 <.plt>
-+[ ]*[a-f0-9]+: f2 e9 e5 ff ff ff bnd jmp 240 <\*ABS\*\+0x2bc@plt-0x50>
- [ ]*[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\)
- [ ]*[a-f0-9]+: 68 00 00 00 00 push \$0x0
--[ ]*[a-f0-9]+: f2 e9 d5 ff ff ff bnd jmp 240 <.plt>
-+[ ]*[a-f0-9]+: f2 e9 d5 ff ff ff bnd jmp 240 <\*ABS\*\+0x2bc@plt-0x50>
- [ ]*[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\)
- [ ]*[a-f0-9]+: 68 01 00 00 00 push \$0x1
--[ ]*[a-f0-9]+: f2 e9 c5 ff ff ff bnd jmp 240 <.plt>
-+[ ]*[a-f0-9]+: f2 e9 c5 ff ff ff bnd jmp 240 <\*ABS\*\+0x2bc@plt-0x50>
- [ ]*[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\)
- [ ]*[a-f0-9]+: 68 02 00 00 00 push \$0x2
--[ ]*[a-f0-9]+: f2 e9 b5 ff ff ff bnd jmp 240 <.plt>
-+[ ]*[a-f0-9]+: f2 e9 b5 ff ff ff bnd jmp 240 <\*ABS\*\+0x2bc@plt-0x50>
- [ ]*[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\)
-
- Disassembly of section .plt.sec:
-diff --git a/ld/testsuite/ld-x86-64/bnd-plt-1-now.d b/ld/testsuite/ld-x86-64/bnd-plt-1-now.d
-index be5392c45f..24e28210a0 100644
---- a/ld/testsuite/ld-x86-64/bnd-plt-1-now.d
-+++ b/ld/testsuite/ld-x86-64/bnd-plt-1-now.d
-@@ -13,16 +13,16 @@ Disassembly of section .plt:
- +[a-f0-9]+: f2 ff 25 a3 01 20 00 bnd jmp \*0x2001a3\(%rip\) # 2003e0 <_GLOBAL_OFFSET_TABLE_\+0x10>
- +[a-f0-9]+: 0f 1f 00 nopl \(%rax\)
- +[a-f0-9]+: 68 00 00 00 00 push \$0x0
-- +[a-f0-9]+: f2 e9 e5 ff ff ff bnd jmp 230 <.plt>
-+ +[a-f0-9]+: f2 e9 e5 ff ff ff bnd jmp 230 <foo2@plt-0x50>
- +[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\)
- +[a-f0-9]+: 68 01 00 00 00 push \$0x1
-- +[a-f0-9]+: f2 e9 d5 ff ff ff bnd jmp 230 <.plt>
-+ +[a-f0-9]+: f2 e9 d5 ff ff ff bnd jmp 230 <foo2@plt-0x50>
- +[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\)
- +[a-f0-9]+: 68 02 00 00 00 push \$0x2
-- +[a-f0-9]+: f2 e9 c5 ff ff ff bnd jmp 230 <.plt>
-+ +[a-f0-9]+: f2 e9 c5 ff ff ff bnd jmp 230 <foo2@plt-0x50>
- +[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\)
- +[a-f0-9]+: 68 03 00 00 00 push \$0x3
-- +[a-f0-9]+: f2 e9 b5 ff ff ff bnd jmp 230 <.plt>
-+ +[a-f0-9]+: f2 e9 b5 ff ff ff bnd jmp 230 <foo2@plt-0x50>
- +[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\)
-
- Disassembly of section .plt.sec:
-diff --git a/ld/testsuite/ld-x86-64/bnd-plt-1.d b/ld/testsuite/ld-x86-64/bnd-plt-1.d
-index cca370527a..ab3ab45faa 100644
---- a/ld/testsuite/ld-x86-64/bnd-plt-1.d
-+++ b/ld/testsuite/ld-x86-64/bnd-plt-1.d
-@@ -13,16 +13,16 @@ Disassembly of section .plt:
- [ ]*[a-f0-9]+: f2 ff 25 83 01 20 00 bnd jmp \*0x200183\(%rip\)[ ]*(#.*)?
- [ ]*[a-f0-9]+: 0f 1f 00 nopl \(%rax\)
- [ ]*[a-f0-9]+: 68 00 00 00 00 push \$0x0
--[ ]*[a-f0-9]+: f2 e9 e5 ff ff ff bnd jmp 230 <.plt>
-+[ ]*[a-f0-9]+: f2 e9 e5 ff ff ff bnd jmp 230 <foo2@plt-0x50>
- [ ]*[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\)
- [ ]*[a-f0-9]+: 68 01 00 00 00 push \$0x1
--[ ]*[a-f0-9]+: f2 e9 d5 ff ff ff bnd jmp 230 <.plt>
-+[ ]*[a-f0-9]+: f2 e9 d5 ff ff ff bnd jmp 230 <foo2@plt-0x50>
- [ ]*[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\)
- [ ]*[a-f0-9]+: 68 02 00 00 00 push \$0x2
--[ ]*[a-f0-9]+: f2 e9 c5 ff ff ff bnd jmp 230 <.plt>
-+[ ]*[a-f0-9]+: f2 e9 c5 ff ff ff bnd jmp 230 <foo2@plt-0x50>
- [ ]*[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\)
- [ ]*[a-f0-9]+: 68 03 00 00 00 push \$0x3
--[ ]*[a-f0-9]+: f2 e9 b5 ff ff ff bnd jmp 230 <.plt>
-+[ ]*[a-f0-9]+: f2 e9 b5 ff ff ff bnd jmp 230 <foo2@plt-0x50>
- [ ]*[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\)
-
- Disassembly of section .plt.sec:
-diff --git a/ld/testsuite/ld-x86-64/ibt-plt-1-x32.d b/ld/testsuite/ld-x86-64/ibt-plt-1-x32.d
-index 2018b11936..b011e3f158 100644
---- a/ld/testsuite/ld-x86-64/ibt-plt-1-x32.d
-+++ b/ld/testsuite/ld-x86-64/ibt-plt-1-x32.d
-@@ -14,11 +14,11 @@ Disassembly of section .plt:
- +[a-f0-9]+: 0f 1f 40 00 nopl 0x0\(%rax\)
- +[a-f0-9]+: f3 0f 1e fa endbr64
- +[a-f0-9]+: 68 00 00 00 00 push \$0x0
-- +[a-f0-9]+: e9 e2 ff ff ff jmp [a-f0-9]+ <.plt>
-+ +[a-f0-9]+: e9 e2 ff ff ff jmp [a-f0-9]+ <bar1@plt-0x30>
- +[a-f0-9]+: 66 90 xchg %ax,%ax
- +[a-f0-9]+: f3 0f 1e fa endbr64
- +[a-f0-9]+: 68 01 00 00 00 push \$0x1
-- +[a-f0-9]+: e9 d2 ff ff ff jmp [a-f0-9]+ <.plt>
-+ +[a-f0-9]+: e9 d2 ff ff ff jmp [a-f0-9]+ <bar1@plt-0x30>
- +[a-f0-9]+: 66 90 xchg %ax,%ax
-
- Disassembly of section .plt.sec:
-diff --git a/ld/testsuite/ld-x86-64/ibt-plt-1.d b/ld/testsuite/ld-x86-64/ibt-plt-1.d
-index d556ec13f6..15563b432d 100644
---- a/ld/testsuite/ld-x86-64/ibt-plt-1.d
-+++ b/ld/testsuite/ld-x86-64/ibt-plt-1.d
-@@ -14,11 +14,11 @@ Disassembly of section .plt:
- +[a-f0-9]+: 0f 1f 00 nopl \(%rax\)
- +[a-f0-9]+: f3 0f 1e fa endbr64
- +[a-f0-9]+: 68 00 00 00 00 push \$0x0
-- +[a-f0-9]+: f2 e9 e1 ff ff ff bnd jmp [a-f0-9]+ <.plt>
-+ +[a-f0-9]+: f2 e9 e1 ff ff ff bnd jmp [a-f0-9]+ <.*>
- +[a-f0-9]+: 90 nop
- +[a-f0-9]+: f3 0f 1e fa endbr64
- +[a-f0-9]+: 68 01 00 00 00 push \$0x1
-- +[a-f0-9]+: f2 e9 d1 ff ff ff bnd jmp [a-f0-9]+ <.plt>
-+ +[a-f0-9]+: f2 e9 d1 ff ff ff bnd jmp [a-f0-9]+ <.*>
- +[a-f0-9]+: 90 nop
-
- Disassembly of section .plt.sec:
-diff --git a/ld/testsuite/ld-x86-64/ibt-plt-2a-x32.d b/ld/testsuite/ld-x86-64/ibt-plt-2a-x32.d
-index 5168a31c74..a19cece98e 100644
---- a/ld/testsuite/ld-x86-64/ibt-plt-2a-x32.d
-+++ b/ld/testsuite/ld-x86-64/ibt-plt-2a-x32.d
-@@ -14,11 +14,11 @@ Disassembly of section .plt:
- +[a-f0-9]+: 0f 1f 40 00 nopl 0x0\(%rax\)
- +[a-f0-9]+: f3 0f 1e fa endbr64
- +[a-f0-9]+: 68 00 00 00 00 push \$0x0
-- +[a-f0-9]+: e9 e2 ff ff ff jmp 140 <.plt>
-+ +[a-f0-9]+: e9 e2 ff ff ff jmp 140 <bar1@plt-0x30>
- +[a-f0-9]+: 66 90 xchg %ax,%ax
- +[a-f0-9]+: f3 0f 1e fa endbr64
- +[a-f0-9]+: 68 01 00 00 00 push \$0x1
-- +[a-f0-9]+: e9 d2 ff ff ff jmp 140 <.plt>
-+ +[a-f0-9]+: e9 d2 ff ff ff jmp 140 <bar1@plt-0x30>
- +[a-f0-9]+: 66 90 xchg %ax,%ax
-
- Disassembly of section .plt.sec:
-diff --git a/ld/testsuite/ld-x86-64/ibt-plt-2a.d b/ld/testsuite/ld-x86-64/ibt-plt-2a.d
-index 01401ba141..9278592909 100644
---- a/ld/testsuite/ld-x86-64/ibt-plt-2a.d
-+++ b/ld/testsuite/ld-x86-64/ibt-plt-2a.d
-@@ -14,11 +14,11 @@ Disassembly of section .plt:
- +[a-f0-9]+: 0f 1f 00 nopl \(%rax\)
- +[a-f0-9]+: f3 0f 1e fa endbr64
- +[a-f0-9]+: 68 00 00 00 00 push \$0x0
-- +[a-f0-9]+: f2 e9 e1 ff ff ff bnd jmp 1f0 <.plt>
-+ +[a-f0-9]+: f2 e9 e1 ff ff ff bnd jmp 1f0 <.*>
- +[a-f0-9]+: 90 nop
- +[a-f0-9]+: f3 0f 1e fa endbr64
- +[a-f0-9]+: 68 01 00 00 00 push \$0x1
-- +[a-f0-9]+: f2 e9 d1 ff ff ff bnd jmp 1f0 <.plt>
-+ +[a-f0-9]+: f2 e9 d1 ff ff ff bnd jmp 1f0 <.*>
- +[a-f0-9]+: 90 nop
-
- Disassembly of section .plt.sec:
-diff --git a/ld/testsuite/ld-x86-64/ibt-plt-2c-x32.d b/ld/testsuite/ld-x86-64/ibt-plt-2c-x32.d
-index 9f9663cca3..b00ab920c0 100644
---- a/ld/testsuite/ld-x86-64/ibt-plt-2c-x32.d
-+++ b/ld/testsuite/ld-x86-64/ibt-plt-2c-x32.d
-@@ -14,11 +14,11 @@ Disassembly of section .plt:
- +[a-f0-9]+: 0f 1f 40 00 nopl 0x0\(%rax\)
- +[a-f0-9]+: f3 0f 1e fa endbr64
- +[a-f0-9]+: 68 00 00 00 00 push \$0x0
-- +[a-f0-9]+: e9 e2 ff ff ff jmp [a-f0-9]+ <.plt>
-+ +[a-f0-9]+: e9 e2 ff ff ff jmp [a-f0-9]+ <bar1@plt-0x30>
- +[a-f0-9]+: 66 90 xchg %ax,%ax
- +[a-f0-9]+: f3 0f 1e fa endbr64
- +[a-f0-9]+: 68 01 00 00 00 push \$0x1
-- +[a-f0-9]+: e9 d2 ff ff ff jmp [a-f0-9]+ <.plt>
-+ +[a-f0-9]+: e9 d2 ff ff ff jmp [a-f0-9]+ <bar1@plt-0x30>
- +[a-f0-9]+: 66 90 xchg %ax,%ax
-
- Disassembly of section .plt.sec:
-diff --git a/ld/testsuite/ld-x86-64/ibt-plt-2c.d b/ld/testsuite/ld-x86-64/ibt-plt-2c.d
-index aa81fb9ddb..b7969d8c57 100644
---- a/ld/testsuite/ld-x86-64/ibt-plt-2c.d
-+++ b/ld/testsuite/ld-x86-64/ibt-plt-2c.d
-@@ -14,11 +14,11 @@ Disassembly of section .plt:
- +[a-f0-9]+: 0f 1f 00 nopl \(%rax\)
- +[a-f0-9]+: f3 0f 1e fa endbr64
- +[a-f0-9]+: 68 00 00 00 00 push \$0x0
-- +[a-f0-9]+: f2 e9 e1 ff ff ff bnd jmp [a-f0-9]+ <.plt>
-+ +[a-f0-9]+: f2 e9 e1 ff ff ff bnd jmp [a-f0-9]+ <.*>
- +[a-f0-9]+: 90 nop
- +[a-f0-9]+: f3 0f 1e fa endbr64
- +[a-f0-9]+: 68 01 00 00 00 push \$0x1
-- +[a-f0-9]+: f2 e9 d1 ff ff ff bnd jmp [a-f0-9]+ <.plt>
-+ +[a-f0-9]+: f2 e9 d1 ff ff ff bnd jmp [a-f0-9]+ <.*>
- +[a-f0-9]+: 90 nop
-
- Disassembly of section .plt.sec:
-diff --git a/ld/testsuite/ld-x86-64/ibt-plt-3a-x32.d b/ld/testsuite/ld-x86-64/ibt-plt-3a-x32.d
-index bf185d548f..d6f8bb3afb 100644
---- a/ld/testsuite/ld-x86-64/ibt-plt-3a-x32.d
-+++ b/ld/testsuite/ld-x86-64/ibt-plt-3a-x32.d
-@@ -14,11 +14,11 @@ Disassembly of section .plt:
- +[a-f0-9]+: 0f 1f 40 00 nopl 0x0\(%rax\)
- +[a-f0-9]+: f3 0f 1e fa endbr64
- +[a-f0-9]+: 68 00 00 00 00 push \$0x0
-- +[a-f0-9]+: e9 e2 ff ff ff jmp 140 <.plt>
-+ +[a-f0-9]+: e9 e2 ff ff ff jmp 140 <bar1@plt-0x30>
- +[a-f0-9]+: 66 90 xchg %ax,%ax
- +[a-f0-9]+: f3 0f 1e fa endbr64
- +[a-f0-9]+: 68 01 00 00 00 push \$0x1
-- +[a-f0-9]+: e9 d2 ff ff ff jmp 140 <.plt>
-+ +[a-f0-9]+: e9 d2 ff ff ff jmp 140 <bar1@plt-0x30>
- +[a-f0-9]+: 66 90 xchg %ax,%ax
-
- Disassembly of section .plt.sec:
-diff --git a/ld/testsuite/ld-x86-64/ibt-plt-3a.d b/ld/testsuite/ld-x86-64/ibt-plt-3a.d
-index 27dd93c8e5..9c15ed4f92 100644
---- a/ld/testsuite/ld-x86-64/ibt-plt-3a.d
-+++ b/ld/testsuite/ld-x86-64/ibt-plt-3a.d
-@@ -14,11 +14,11 @@ Disassembly of section .plt:
- +[a-f0-9]+: 0f 1f 00 nopl \(%rax\)
- +[a-f0-9]+: f3 0f 1e fa endbr64
- +[a-f0-9]+: 68 00 00 00 00 push \$0x0
-- +[a-f0-9]+: f2 e9 e1 ff ff ff bnd jmp 1f0 <.plt>
-+ +[a-f0-9]+: f2 e9 e1 ff ff ff bnd jmp 1f0 <.*>
- +[a-f0-9]+: 90 nop
- +[a-f0-9]+: f3 0f 1e fa endbr64
- +[a-f0-9]+: 68 01 00 00 00 push \$0x1
-- +[a-f0-9]+: f2 e9 d1 ff ff ff bnd jmp 1f0 <.plt>
-+ +[a-f0-9]+: f2 e9 d1 ff ff ff bnd jmp 1f0 <.*>
- +[a-f0-9]+: 90 nop
-
- Disassembly of section .plt.sec:
-diff --git a/ld/testsuite/ld-x86-64/ibt-plt-3c-x32.d b/ld/testsuite/ld-x86-64/ibt-plt-3c-x32.d
-index 66f4705124..f09b1a666a 100644
---- a/ld/testsuite/ld-x86-64/ibt-plt-3c-x32.d
-+++ b/ld/testsuite/ld-x86-64/ibt-plt-3c-x32.d
-@@ -14,11 +14,11 @@ Disassembly of section .plt:
- +[a-f0-9]+: 0f 1f 40 00 nopl 0x0\(%rax\)
- +[a-f0-9]+: f3 0f 1e fa endbr64
- +[a-f0-9]+: 68 00 00 00 00 push \$0x0
-- +[a-f0-9]+: e9 e2 ff ff ff jmp [a-f0-9]+ <.plt>
-+ +[a-f0-9]+: e9 e2 ff ff ff jmp [a-f0-9]+ <bar1@plt-0x30>
- +[a-f0-9]+: 66 90 xchg %ax,%ax
- +[a-f0-9]+: f3 0f 1e fa endbr64
- +[a-f0-9]+: 68 01 00 00 00 push \$0x1
-- +[a-f0-9]+: e9 d2 ff ff ff jmp [a-f0-9]+ <.plt>
-+ +[a-f0-9]+: e9 d2 ff ff ff jmp [a-f0-9]+ <bar1@plt-0x30>
- +[a-f0-9]+: 66 90 xchg %ax,%ax
-
- Disassembly of section .plt.sec:
-diff --git a/ld/testsuite/ld-x86-64/ibt-plt-3c.d b/ld/testsuite/ld-x86-64/ibt-plt-3c.d
-index 5c918b8b4d..5c19e3dc96 100644
---- a/ld/testsuite/ld-x86-64/ibt-plt-3c.d
-+++ b/ld/testsuite/ld-x86-64/ibt-plt-3c.d
-@@ -14,11 +14,11 @@ Disassembly of section .plt:
- +[a-f0-9]+: 0f 1f 00 nopl \(%rax\)
- +[a-f0-9]+: f3 0f 1e fa endbr64
- +[a-f0-9]+: 68 00 00 00 00 push \$0x0
-- +[a-f0-9]+: f2 e9 e1 ff ff ff bnd jmp [a-f0-9]+ <.plt>
-+ +[a-f0-9]+: f2 e9 e1 ff ff ff bnd jmp [a-f0-9]+ <.*>
- +[a-f0-9]+: 90 nop
- +[a-f0-9]+: f3 0f 1e fa endbr64
- +[a-f0-9]+: 68 01 00 00 00 push \$0x1
-- +[a-f0-9]+: f2 e9 d1 ff ff ff bnd jmp [a-f0-9]+ <.plt>
-+ +[a-f0-9]+: f2 e9 d1 ff ff ff bnd jmp [a-f0-9]+ <.*>
- +[a-f0-9]+: 90 nop
-
- Disassembly of section .plt.sec:
-diff --git a/ld/testsuite/ld-x86-64/mpx3.dd b/ld/testsuite/ld-x86-64/mpx3.dd
-index 96e56fc5e0..729b1cf4e9 100644
---- a/ld/testsuite/ld-x86-64/mpx3.dd
-+++ b/ld/testsuite/ld-x86-64/mpx3.dd
-@@ -8,7 +8,7 @@ Disassembly of section .plt:
- [ ]*[a-f0-9]+: f2 ff ([0-9a-f]{2} ){5} bnd jmp \*0x[a-f0-9]+\(%rip\) # [a-f0-9]+ <_GLOBAL_OFFSET_TABLE_\+0x10>
- [ ]*[a-f0-9]+: 0f 1f 00 nopl \(%rax\)
- [ ]*[a-f0-9]+: 68 00 00 00 00 push \$0x0
--[ ]*[a-f0-9]+: f2 e9 ([0-9a-f]{2} ){4} bnd jmp [a-f0-9]+ <.plt>
-+[ ]*[a-f0-9]+: f2 e9 ([0-9a-f]{2} ){4} bnd jmp [a-f0-9]+ <call1@plt-0x20>
- [ ]*[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\)
-
- Disassembly of section .plt.sec:
-diff --git a/ld/testsuite/ld-x86-64/mpx3n.dd b/ld/testsuite/ld-x86-64/mpx3n.dd
-index f4609d5ed6..a1eba8e975 100644
---- a/ld/testsuite/ld-x86-64/mpx3n.dd
-+++ b/ld/testsuite/ld-x86-64/mpx3n.dd
-@@ -8,7 +8,7 @@ Disassembly of section .plt:
- +[a-f0-9]+: f2 ff 25 a3 01 20 00 bnd jmp \*0x2001a3\(%rip\) # 6003d0 <_GLOBAL_OFFSET_TABLE_\+0x10>
- +[a-f0-9]+: 0f 1f 00 nopl \(%rax\)
- +[a-f0-9]+: 68 00 00 00 00 push \$0x0
-- +[a-f0-9]+: f2 e9 e5 ff ff ff bnd jmp 400220 <.plt>
-+ +[a-f0-9]+: f2 e9 e5 ff ff ff bnd jmp 400220 <call1@plt-0x20>
- +[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\)
-
- Disassembly of section .plt.sec:
-diff --git a/ld/testsuite/ld-x86-64/mpx4.dd b/ld/testsuite/ld-x86-64/mpx4.dd
-index 35f6869bad..50a0fbca50 100644
---- a/ld/testsuite/ld-x86-64/mpx4.dd
-+++ b/ld/testsuite/ld-x86-64/mpx4.dd
-@@ -8,7 +8,7 @@ Disassembly of section .plt:
- +[a-f0-9]+: f2 ff 25 43 01 20 00 bnd jmp \*0x200143\(%rip\) # 600340 <_GLOBAL_OFFSET_TABLE_\+0x10>
- +[a-f0-9]+: 0f 1f 00 nopl \(%rax\)
- +[a-f0-9]+: 68 00 00 00 00 push \$0x0
-- +[a-f0-9]+: f2 e9 e5 ff ff ff bnd jmp 4001f0 <.plt>
-+ +[a-f0-9]+: f2 e9 e5 ff ff ff bnd jmp 4001f0 <call1@plt-0x20>
- +[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\)
-
- Disassembly of section .plt.sec:
-diff --git a/ld/testsuite/ld-x86-64/mpx4n.dd b/ld/testsuite/ld-x86-64/mpx4n.dd
-index 5585610767..92177bb121 100644
---- a/ld/testsuite/ld-x86-64/mpx4n.dd
-+++ b/ld/testsuite/ld-x86-64/mpx4n.dd
-@@ -8,7 +8,7 @@ Disassembly of section .plt:
- +[a-f0-9]+: f2 ff 25 63 01 20 00 bnd jmp \*0x200163\(%rip\) # 600360 <_GLOBAL_OFFSET_TABLE_\+0x10>
- +[a-f0-9]+: 0f 1f 00 nopl \(%rax\)
- +[a-f0-9]+: 68 00 00 00 00 push \$0x0
-- +[a-f0-9]+: f2 e9 e5 ff ff ff bnd jmp 4001f0 <.plt>
-+ +[a-f0-9]+: f2 e9 e5 ff ff ff bnd jmp 4001f0 <call1@plt-0x20>
- +[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\)
-
- Disassembly of section .plt.sec:
-diff --git a/ld/testsuite/ld-x86-64/pe-x86-64-1.od b/ld/testsuite/ld-x86-64/pe-x86-64-1.od
-index 1ff644ee9c..4966d55fb5 100644
---- a/ld/testsuite/ld-x86-64/pe-x86-64-1.od
-+++ b/ld/testsuite/ld-x86-64/pe-x86-64-1.od
-@@ -2,11 +2,6 @@
- .*: +file format .*
-
- SYMBOL TABLE:
--0+401000 l d .text\$mn 0000000000000000 .text\$mn
--0+402000 l d .xdata 0000000000000000 .xdata
--0+402008 l d .pdata 0000000000000000 .pdata
--0+403014 l d .bss 0000000000000000 .bss
--0+ l d .debug\$S 0000000000000000 .debug\$S
- 0+401000 g .text\$mn 0000000000000000 getaddr1
- 0+401020 g .text\$mn 0000000000000000 begin
- 0+403014 g .bss 0000000000000000 __bss_start
-diff --git a/ld/testsuite/ld-x86-64/pe-x86-64-2.od b/ld/testsuite/ld-x86-64/pe-x86-64-2.od
-index 1ff644ee9c..4966d55fb5 100644
---- a/ld/testsuite/ld-x86-64/pe-x86-64-2.od
-+++ b/ld/testsuite/ld-x86-64/pe-x86-64-2.od
-@@ -2,11 +2,6 @@
- .*: +file format .*
-
- SYMBOL TABLE:
--0+401000 l d .text\$mn 0000000000000000 .text\$mn
--0+402000 l d .xdata 0000000000000000 .xdata
--0+402008 l d .pdata 0000000000000000 .pdata
--0+403014 l d .bss 0000000000000000 .bss
--0+ l d .debug\$S 0000000000000000 .debug\$S
- 0+401000 g .text\$mn 0000000000000000 getaddr1
- 0+401020 g .text\$mn 0000000000000000 begin
- 0+403014 g .bss 0000000000000000 __bss_start
-diff --git a/ld/testsuite/ld-x86-64/pe-x86-64-3.od b/ld/testsuite/ld-x86-64/pe-x86-64-3.od
-index 1ff644ee9c..4966d55fb5 100644
---- a/ld/testsuite/ld-x86-64/pe-x86-64-3.od
-+++ b/ld/testsuite/ld-x86-64/pe-x86-64-3.od
-@@ -2,11 +2,6 @@
- .*: +file format .*
-
- SYMBOL TABLE:
--0+401000 l d .text\$mn 0000000000000000 .text\$mn
--0+402000 l d .xdata 0000000000000000 .xdata
--0+402008 l d .pdata 0000000000000000 .pdata
--0+403014 l d .bss 0000000000000000 .bss
--0+ l d .debug\$S 0000000000000000 .debug\$S
- 0+401000 g .text\$mn 0000000000000000 getaddr1
- 0+401020 g .text\$mn 0000000000000000 begin
- 0+403014 g .bss 0000000000000000 __bss_start
-diff --git a/ld/testsuite/ld-x86-64/pe-x86-64-4.od b/ld/testsuite/ld-x86-64/pe-x86-64-4.od
-index 302a345b2e..e0bde11d84 100644
---- a/ld/testsuite/ld-x86-64/pe-x86-64-4.od
-+++ b/ld/testsuite/ld-x86-64/pe-x86-64-4.od
-@@ -2,12 +2,6 @@
- .*: +file format .*
-
- SYMBOL TABLE:
--0+401000 l d .text\$mn 0000000000000000 .text\$mn
--0+402000 l d .xdata 0000000000000000 .xdata
--0+402008 l d .pdata 0000000000000000 .pdata
--0+403018 l d .data 0000000000000000 .data
--0+403038 l d .bss 0000000000000000 .bss
--0+ l d .debug\$S 0000000000000000 .debug\$S
- 0+403038 g .bss 0000000000000000 c
- 0+401000 g .text\$mn 0000000000000000 begin
- 0+403038 g .bss 0000000000000000 __bss_start
-diff --git a/ld/testsuite/ld-x86-64/plt.pd b/ld/testsuite/ld-x86-64/plt.pd
-index 54a00dffc4..6b4024c5c9 100644
---- a/ld/testsuite/ld-x86-64/plt.pd
-+++ b/ld/testsuite/ld-x86-64/plt.pd
-@@ -8,7 +8,7 @@
-
- Disassembly of section .plt:
-
--[0-9a-f]+ <.plt>:
-+[0-9a-f]+ <fn1@plt-0x10>:
- +[0-9a-f]+: ff 35 ([0-9a-f]{2} ){4} * push 0x[0-9a-f]+\(%rip\) +# [0-9a-f]+ <_GLOBAL_OFFSET_TABLE_\+0x8>
- +[0-9a-f]+: ff 25 ([0-9a-f]{2} ){4} * jmp \*0x[0-9a-f]+\(%rip\) +# [0-9a-f]+ <_GLOBAL_OFFSET_TABLE_\+0x10>
- +[0-9a-f]+: 0f 1f 40 00 nopl 0x0\(%rax\)
-@@ -16,9 +16,9 @@ Disassembly of section .plt:
- [0-9a-f]+ <fn1@plt>:
- +[0-9a-f]+: ff 25 ([0-9a-f]{2} ){4} * jmp \*0x[0-9a-f]+\(%rip\) +# [0-9a-f]+ <fn1>
- +[0-9a-f]+: 68 00 00 00 00 push \$0x0
-- +[0-9a-f]+: e9 ([0-9a-f]{2} ){4} * jmp [0-9a-f]+ <.plt>
-+ +[0-9a-f]+: e9 ([0-9a-f]{2} ){4} * jmp [0-9a-f]+ <fn1@plt-0x10>
-
- [0-9a-f]+ <fn2@plt>:
- +[0-9a-f]+: ff 25 ([0-9a-f]{2} ){4} * jmp \*0x[0-9a-f]+\(%rip\) +# [0-9a-f]+ <fn2>
- +[0-9a-f]+: 68 01 00 00 00 push \$0x1
-- +[0-9a-f]+: e9 ([0-9a-f]{2} ){4} * jmp [0-9a-f]+ <.plt>
-+ +[0-9a-f]+: e9 ([0-9a-f]{2} ){4} * jmp [0-9a-f]+ <fn1@plt-0x10>
-diff --git a/ld/testsuite/ld-x86-64/plt2.dd b/ld/testsuite/ld-x86-64/plt2.dd
-index 663ec98192..454bc060dd 100644
---- a/ld/testsuite/ld-x86-64/plt2.dd
-+++ b/ld/testsuite/ld-x86-64/plt2.dd
-@@ -9,7 +9,7 @@
-
- Disassembly of section .plt:
-
--0+400220 <.plt>:
-+0+400220 <fn1@plt-0x10>:
- +[a-f0-9]+: ff 35 7a 01 20 00 push 0x20017a\(%rip\) # 6003a0 <_GLOBAL_OFFSET_TABLE_\+0x8>
- +[a-f0-9]+: ff 25 7c 01 20 00 jmp \*0x20017c\(%rip\) # 6003a8 <_GLOBAL_OFFSET_TABLE_\+0x10>
- +[a-f0-9]+: 0f 1f 40 00 nopl 0x0\(%rax\)
-@@ -17,12 +17,12 @@ Disassembly of section .plt:
- 0+400230 <fn1@plt>:
- +[a-f0-9]+: ff 25 7a 01 20 00 jmp \*0x20017a\(%rip\) # 6003b0 <fn1>
- +[a-f0-9]+: 68 00 00 00 00 push \$0x0
-- +[a-f0-9]+: e9 e0 ff ff ff jmp 400220 <.plt>
-+ +[a-f0-9]+: e9 e0 ff ff ff jmp 400220 <fn1@plt-0x10>
-
- 0+400240 <fn2@plt>:
- +[a-f0-9]+: ff 25 72 01 20 00 jmp \*0x200172\(%rip\) # 6003b8 <fn2>
- +[a-f0-9]+: 68 01 00 00 00 push \$0x1
-- +[a-f0-9]+: e9 d0 ff ff ff jmp 400220 <.plt>
-+ +[a-f0-9]+: e9 d0 ff ff ff jmp 400220 <fn1@plt-0x10>
-
- Disassembly of section .text:
-
-diff --git a/ld/testsuite/ld-x86-64/pr19609-4e.d b/ld/testsuite/ld-x86-64/pr19609-4e.d
-index f2634947d6..48adc947e7 100644
---- a/ld/testsuite/ld-x86-64/pr19609-4e.d
-+++ b/ld/testsuite/ld-x86-64/pr19609-4e.d
-@@ -9,5 +9,5 @@
- Disassembly of section .text:
-
- 0+70000000 <_start>:
--[ ]*[a-f0-9]+: 48 8b 05 ([0-9a-f]{2} ){4} * mov [-]?0x[a-f0-9]+\(%rip\),%rax # [a-f0-9]+ <.got>
--[ ]*[a-f0-9]+: 4c 8b 1d ([0-9a-f]{2} ){4} * mov [-]?0x[a-f0-9]+\(%rip\),%r11 # [a-f0-9]+ <.got>
-+[ ]*[a-f0-9]+: 48 8b 05 ([0-9a-f]{2} ){4} * mov [-]?0x[a-f0-9]+\(%rip\),%rax # [a-f0-9]+ <_start\+0x1000>
-+[ ]*[a-f0-9]+: 4c 8b 1d ([0-9a-f]{2} ){4} * mov [-]?0x[a-f0-9]+\(%rip\),%r11 # [a-f0-9]+ <_start\+0x1000>
-diff --git a/ld/testsuite/ld-x86-64/pr19609-6a.d b/ld/testsuite/ld-x86-64/pr19609-6a.d
-index b340287f48..265825d4c6 100644
---- a/ld/testsuite/ld-x86-64/pr19609-6a.d
-+++ b/ld/testsuite/ld-x86-64/pr19609-6a.d
-@@ -9,5 +9,5 @@
- Disassembly of section .text:
-
- [a-f0-9]+ <_start>:
--[ ]*[a-f0-9]+: 48 8b 05 ([0-9a-f]{2} ){4} * mov 0x[a-f0-9]+\(%rip\),%rax # [a-f0-9]+ <.got>
-+[ ]*[a-f0-9]+: 48 8b 05 ([0-9a-f]{2} ){4} * mov 0x[a-f0-9]+\(%rip\),%rax # [a-f0-9]+ <_start\+0x1000>
- #pass
-diff --git a/ld/testsuite/ld-x86-64/pr19609-6b.d b/ld/testsuite/ld-x86-64/pr19609-6b.d
-index 810023b2b9..1f769eff4d 100644
---- a/ld/testsuite/ld-x86-64/pr19609-6b.d
-+++ b/ld/testsuite/ld-x86-64/pr19609-6b.d
-@@ -9,5 +9,5 @@
- Disassembly of section .text:
-
- [a-f0-9]+ <_start>:
--[ ]*[a-f0-9]+: 48 8b 05 ([0-9a-f]{2} ){4} * mov 0x[a-f0-9]+\(%rip\),%rax # [a-f0-9]+ <.got>
-+[ ]*[a-f0-9]+: 48 8b 05 ([0-9a-f]{2} ){4} * mov 0x[a-f0-9]+\(%rip\),%rax # [a-f0-9]+ <_start\+0x1000>
- #pass
-diff --git a/ld/testsuite/ld-x86-64/pr19609-7b.d b/ld/testsuite/ld-x86-64/pr19609-7b.d
-index 20b42e838d..d85e5e9425 100644
---- a/ld/testsuite/ld-x86-64/pr19609-7b.d
-+++ b/ld/testsuite/ld-x86-64/pr19609-7b.d
-@@ -9,5 +9,5 @@
- Disassembly of section .text:
-
- [a-f0-9]+ <_start>:
--[ ]*[a-f0-9]+: ff 15 ([0-9a-f]{2} ){4} * call \*-?0x[a-f0-9]+\(%rip\) # [a-f0-9]+ <.got>
-+[ ]*[a-f0-9]+: ff 15 ([0-9a-f]{2} ){4} * call \*-?0x[a-f0-9]+\(%rip\) # [a-f0-9]+ <_start\+0x1000>
- #pass
-diff --git a/ld/testsuite/ld-x86-64/pr19609-7d.d b/ld/testsuite/ld-x86-64/pr19609-7d.d
-index 034a57b1e0..6eb511080d 100644
---- a/ld/testsuite/ld-x86-64/pr19609-7d.d
-+++ b/ld/testsuite/ld-x86-64/pr19609-7d.d
-@@ -9,5 +9,5 @@
- Disassembly of section .text:
-
- [a-f0-9]+ <_start>:
--[ ]*[a-f0-9]+: ff 15 ([0-9a-f]{2} ){4} * call \*-?0x[a-f0-9]+\(%rip\) # [a-f0-9]+ <.got>
-+[ ]*[a-f0-9]+: ff 15 ([0-9a-f]{2} ){4} * call \*-?0x[a-f0-9]+\(%rip\) # [a-f0-9]+ <_start\+0x1000>
- #pass
-diff --git a/ld/testsuite/ld-x86-64/pr19636-2l.d b/ld/testsuite/ld-x86-64/pr19636-2l.d
-index c9b256dd44..1b894b3e97 100644
---- a/ld/testsuite/ld-x86-64/pr19636-2l.d
-+++ b/ld/testsuite/ld-x86-64/pr19636-2l.d
-@@ -20,7 +20,7 @@ Disassembly of section .plt:
- Disassembly of section .text:
-
- 0+140 <_start>:
-- +[a-f0-9]+: 48 3b 05 f1 00 20 00 cmp 0x2000f1\(%rip\),%rax # 200238 <.got>
-- +[a-f0-9]+: ff 25 f3 00 20 00 jmp \*0x2000f3\(%rip\) # 200240 <.got\+0x8>
-- +[a-f0-9]+: e8 de ff ff ff call 130 <.plt\+0x10>
-+ +[a-f0-9]+: 48 3b 05 f1 00 20 00 cmp 0x2000f1\(%rip\),%rax # 200238 <_DYNAMIC\+0xe0>
-+ +[a-f0-9]+: ff 25 f3 00 20 00 jmp \*0x2000f3\(%rip\) # 200240 <_DYNAMIC\+0xe8>
-+ +[a-f0-9]+: e8 de ff ff ff call 130 <_start-0x10>
- #pass
-diff --git a/ld/testsuite/ld-x86-64/pr20253-1d.d b/ld/testsuite/ld-x86-64/pr20253-1d.d
-index 28fbc998ea..f9f03ba840 100644
---- a/ld/testsuite/ld-x86-64/pr20253-1d.d
-+++ b/ld/testsuite/ld-x86-64/pr20253-1d.d
-@@ -15,10 +15,10 @@ Disassembly of section .text:
- +[a-f0-9]+: c3 ret *
-
- 0+1ca <_start>:
-- +[a-f0-9]+: ff 15 28 01 20 00 call \*0x200128\(%rip\) # 2002f8 <.got>
-- +[a-f0-9]+: ff 25 2a 01 20 00 jmp \*0x20012a\(%rip\) # 200300 <.got\+0x8>
-- +[a-f0-9]+: 48 c7 05 1f 01 20 00 00 00 00 00 movq \$0x0,0x20011f\(%rip\) # 200300 <.got\+0x8>
-- +[a-f0-9]+: 48 83 3d 0f 01 20 00 00 cmpq \$0x0,0x20010f\(%rip\) # 2002f8 <.got>
-- +[a-f0-9]+: 48 3b 0d 08 01 20 00 cmp 0x200108\(%rip\),%rcx # 2002f8 <.got>
-- +[a-f0-9]+: 48 3b 0d 09 01 20 00 cmp 0x200109\(%rip\),%rcx # 200300 <.got\+0x8>
-+ +[a-f0-9]+: ff 15 28 01 20 00 call \*0x200128\(%rip\) # 2002f8 <_DYNAMIC\+0x100>
-+ +[a-f0-9]+: ff 25 2a 01 20 00 jmp \*0x20012a\(%rip\) # 200300 <_DYNAMIC\+0x108>
-+ +[a-f0-9]+: 48 c7 05 1f 01 20 00 00 00 00 00 movq \$0x0,0x20011f\(%rip\) # 200300 <_DYNAMIC\+0x108>
-+ +[a-f0-9]+: 48 83 3d 0f 01 20 00 00 cmpq \$0x0,0x20010f\(%rip\) # 2002f8 <_DYNAMIC\+0x100>
-+ +[a-f0-9]+: 48 3b 0d 08 01 20 00 cmp 0x200108\(%rip\),%rcx # 2002f8 <_DYNAMIC\+0x100>
-+ +[a-f0-9]+: 48 3b 0d 09 01 20 00 cmp 0x200109\(%rip\),%rcx # 200300 <_DYNAMIC\+0x108>
- #pass
-diff --git a/ld/testsuite/ld-x86-64/pr20253-1h.d b/ld/testsuite/ld-x86-64/pr20253-1h.d
-index 132fa03afc..7d9b1475d5 100644
---- a/ld/testsuite/ld-x86-64/pr20253-1h.d
-+++ b/ld/testsuite/ld-x86-64/pr20253-1h.d
-@@ -15,10 +15,10 @@ Disassembly of section .text:
- +[a-f0-9]+: c3 ret *
-
- 0+40008e <_start>:
-- +[a-f0-9]+: ff 15 2c 00 20 00 call \*0x20002c\(%rip\) # 6000c0 <.got>
-- +[a-f0-9]+: ff 25 2e 00 20 00 jmp \*0x20002e\(%rip\) # 6000c8 <.got\+0x8>
-- +[a-f0-9]+: 48 c7 05 23 00 20 00 00 00 00 00 movq \$0x0,0x200023\(%rip\) # 6000c8 <.got\+0x8>
-- +[a-f0-9]+: 48 83 3d 13 00 20 00 00 cmpq \$0x0,0x200013\(%rip\) # 6000c0 <.got>
-- +[a-f0-9]+: 48 3b 0d 0c 00 20 00 cmp 0x20000c\(%rip\),%rcx # 6000c0 <.got>
-- +[a-f0-9]+: 48 3b 0d 0d 00 20 00 cmp 0x20000d\(%rip\),%rcx # 6000c8 <.got\+0x8>
-+ +[a-f0-9]+: ff 15 2c 00 20 00 call \*0x20002c\(%rip\) # 6000c0 <_start\+0x200032>
-+ +[a-f0-9]+: ff 25 2e 00 20 00 jmp \*0x20002e\(%rip\) # 6000c8 <_start\+0x20003a>
-+ +[a-f0-9]+: 48 c7 05 23 00 20 00 00 00 00 00 movq \$0x0,0x200023\(%rip\) # 6000c8 <_start\+0x20003a>
-+ +[a-f0-9]+: 48 83 3d 13 00 20 00 00 cmpq \$0x0,0x200013\(%rip\) # 6000c0 <_start\+0x200032>
-+ +[a-f0-9]+: 48 3b 0d 0c 00 20 00 cmp 0x20000c\(%rip\),%rcx # 6000c0 <_start\+0x200032>
-+ +[a-f0-9]+: 48 3b 0d 0d 00 20 00 cmp 0x20000d\(%rip\),%rcx # 6000c8 <_start\+0x20003a>
- #pass
-diff --git a/ld/testsuite/ld-x86-64/pr21038b-now.d b/ld/testsuite/ld-x86-64/pr21038b-now.d
-index 62e80dc06b..c042b6cf70 100644
---- a/ld/testsuite/ld-x86-64/pr21038b-now.d
-+++ b/ld/testsuite/ld-x86-64/pr21038b-now.d
-@@ -54,7 +54,7 @@ Disassembly of section .plt:
- +[a-f0-9]+: f2 ff 25 33 0e 20 00 bnd jmp \*0x200e33\(%rip\) # 200ff0 <_GLOBAL_OFFSET_TABLE_\+0x10>
- +[a-f0-9]+: 0f 1f 00 nopl \(%rax\)
- +[a-f0-9]+: 68 00 00 00 00 push \$0x0
-- +[a-f0-9]+: f2 e9 e5 ff ff ff bnd jmp 1b0 <.plt>
-+ +[a-f0-9]+: f2 e9 e5 ff ff ff bnd jmp 1b0 <func@plt-0x20>
- +[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\)
-
- Disassembly of section .plt.sec:
-diff --git a/ld/testsuite/ld-x86-64/pr21038b.d b/ld/testsuite/ld-x86-64/pr21038b.d
-index 126c1d2efe..144ed44ccc 100644
---- a/ld/testsuite/ld-x86-64/pr21038b.d
-+++ b/ld/testsuite/ld-x86-64/pr21038b.d
-@@ -53,7 +53,7 @@ Disassembly of section .plt:
- +[a-f0-9]+: f2 ff 25 53 0e 20 00 bnd jmp \*0x200e53\(%rip\) # 201010 <_GLOBAL_OFFSET_TABLE_\+0x10>
- +[a-f0-9]+: 0f 1f 00 nopl \(%rax\)
- +[a-f0-9]+: 68 00 00 00 00 push \$0x0
-- +[a-f0-9]+: f2 e9 e5 ff ff ff bnd jmp 1b0 <.plt>
-+ +[a-f0-9]+: f2 e9 e5 ff ff ff bnd jmp 1b0 <func@plt-0x20>
- +[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\)
-
- Disassembly of section .plt.sec:
-diff --git a/ld/testsuite/ld-x86-64/pr21038c-now.d b/ld/testsuite/ld-x86-64/pr21038c-now.d
-index 19a4ea8fcb..2058512b74 100644
---- a/ld/testsuite/ld-x86-64/pr21038c-now.d
-+++ b/ld/testsuite/ld-x86-64/pr21038c-now.d
-@@ -63,7 +63,7 @@ Disassembly of section .plt:
- +[a-f0-9]+: f2 ff 25 eb 0d 20 00 bnd jmp \*0x200deb\(%rip\) # 200fe8 <_GLOBAL_OFFSET_TABLE_\+0x10>
- +[a-f0-9]+: 0f 1f 00 nopl \(%rax\)
- +[a-f0-9]+: 68 00 00 00 00 push \$0x0
-- +[a-f0-9]+: f2 e9 e5 ff ff ff bnd jmp 1f0 <.plt>
-+ +[a-f0-9]+: f2 e9 e5 ff ff ff bnd jmp 1f0 <func1@plt-0x20>
- +[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\)
-
- Disassembly of section .plt.got:
-diff --git a/ld/testsuite/ld-x86-64/pr21038c.d b/ld/testsuite/ld-x86-64/pr21038c.d
-index 35e7d83c4e..a62d43a7bc 100644
---- a/ld/testsuite/ld-x86-64/pr21038c.d
-+++ b/ld/testsuite/ld-x86-64/pr21038c.d
-@@ -62,7 +62,7 @@ Disassembly of section .plt:
- +[a-f0-9]+: f2 ff 25 13 0e 20 00 bnd jmp \*0x200e13\(%rip\) # 201010 <_GLOBAL_OFFSET_TABLE_\+0x10>
- +[a-f0-9]+: 0f 1f 00 nopl \(%rax\)
- +[a-f0-9]+: 68 00 00 00 00 push \$0x0
-- +[a-f0-9]+: f2 e9 e5 ff ff ff bnd jmp 1f0 <.plt>
-+ +[a-f0-9]+: f2 e9 e5 ff ff ff bnd jmp 1f0 <func1@plt-0x20>
- +[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\)
-
- Disassembly of section .plt.got:
-diff --git a/ld/testsuite/ld-x86-64/pr23854.d b/ld/testsuite/ld-x86-64/pr23854.d
-index 95770d3cef..5113a2c44a 100644
---- a/ld/testsuite/ld-x86-64/pr23854.d
-+++ b/ld/testsuite/ld-x86-64/pr23854.d
-@@ -7,22 +7,22 @@
- Disassembly of section .text:
-
- [a-f0-9]+ <_start>:
-- +[a-f0-9]+: 66 13 05 ([0-9a-f]{2} ){4} * adc 0x[a-f0-9]+\(%rip\),%ax # [a-f0-9]+ <.got>
-- +[a-f0-9]+: 66 03 1d ([0-9a-f]{2} ){4} * add 0x[a-f0-9]+\(%rip\),%bx # [a-f0-9]+ <.got>
-- +[a-f0-9]+: 66 23 0d ([0-9a-f]{2} ){4} * and 0x[a-f0-9]+\(%rip\),%cx # [a-f0-9]+ <.got>
-- +[a-f0-9]+: 66 3b 15 ([0-9a-f]{2} ){4} * cmp 0x[a-f0-9]+\(%rip\),%dx # [a-f0-9]+ <.got>
-- +[a-f0-9]+: 66 0b 3d ([0-9a-f]{2} ){4} * or 0x[a-f0-9]+\(%rip\),%di # [a-f0-9]+ <.got>
-- +[a-f0-9]+: 66 1b 35 ([0-9a-f]{2} ){4} * sbb 0x[a-f0-9]+\(%rip\),%si # [a-f0-9]+ <.got>
-- +[a-f0-9]+: 66 2b 2d ([0-9a-f]{2} ){4} * sub 0x[a-f0-9]+\(%rip\),%bp # [a-f0-9]+ <.got>
-- +[a-f0-9]+: 66 44 33 05 ([0-9a-f]{2} ){4} * xor 0x[a-f0-9]+\(%rip\),%r8w # [a-f0-9]+ <.got>
-- +[a-f0-9]+: 66 85 0d ([0-9a-f]{2} ){4} * test %cx,0x[a-f0-9]+\(%rip\) # [a-f0-9]+ <.got>
-- +[a-f0-9]+: 66 13 05 ([0-9a-f]{2} ){4} * adc 0x[a-f0-9]+\(%rip\),%ax # [a-f0-9]+ <.got\+0x8>
-- +[a-f0-9]+: 66 03 1d ([0-9a-f]{2} ){4} * add 0x[a-f0-9]+\(%rip\),%bx # [a-f0-9]+ <.got\+0x8>
-- +[a-f0-9]+: 66 23 0d ([0-9a-f]{2} ){4} * and 0x[a-f0-9]+\(%rip\),%cx # [a-f0-9]+ <.got\+0x8>
-- +[a-f0-9]+: 66 3b 15 ([0-9a-f]{2} ){4} * cmp 0x[a-f0-9]+\(%rip\),%dx # [a-f0-9]+ <.got\+0x8>
-- +[a-f0-9]+: 66 0b 3d ([0-9a-f]{2} ){4} * or 0x[a-f0-9]+\(%rip\),%di # [a-f0-9]+ <.got\+0x8>
-- +[a-f0-9]+: 66 1b 35 ([0-9a-f]{2} ){4} * sbb 0x[a-f0-9]+\(%rip\),%si # [a-f0-9]+ <.got\+0x8>
-- +[a-f0-9]+: 66 2b 2d ([0-9a-f]{2} ){4} * sub 0x[a-f0-9]+\(%rip\),%bp # [a-f0-9]+ <.got\+0x8>
-- +[a-f0-9]+: 66 44 33 05 ([0-9a-f]{2} ){4} * xor 0x[a-f0-9]+\(%rip\),%r8w # [a-f0-9]+ <.got\+0x8>
-- +[a-f0-9]+: 66 85 0d ([0-9a-f]{2} ){4} * test %cx,0x[a-f0-9]+\(%rip\) # [a-f0-9]+ <.got\+0x8>
-+ +[a-f0-9]+: 66 13 05 ([0-9a-f]{2} ){4} * adc 0x[a-f0-9]+\(%rip\),%ax # [a-f0-9]+ <_start\+0x[a-f0-9]+>
-+ +[a-f0-9]+: 66 03 1d ([0-9a-f]{2} ){4} * add 0x[a-f0-9]+\(%rip\),%bx # [a-f0-9]+ <_start\+0x[a-f0-9]+>
-+ +[a-f0-9]+: 66 23 0d ([0-9a-f]{2} ){4} * and 0x[a-f0-9]+\(%rip\),%cx # [a-f0-9]+ <_start\+0x[a-f0-9]+>
-+ +[a-f0-9]+: 66 3b 15 ([0-9a-f]{2} ){4} * cmp 0x[a-f0-9]+\(%rip\),%dx # [a-f0-9]+ <_start\+0x[a-f0-9]+>
-+ +[a-f0-9]+: 66 0b 3d ([0-9a-f]{2} ){4} * or 0x[a-f0-9]+\(%rip\),%di # [a-f0-9]+ <_start\+0x[a-f0-9]+>
-+ +[a-f0-9]+: 66 1b 35 ([0-9a-f]{2} ){4} * sbb 0x[a-f0-9]+\(%rip\),%si # [a-f0-9]+ <_start\+0x[a-f0-9]+>
-+ +[a-f0-9]+: 66 2b 2d ([0-9a-f]{2} ){4} * sub 0x[a-f0-9]+\(%rip\),%bp # [a-f0-9]+ <_start\+0x[a-f0-9]+>
-+ +[a-f0-9]+: 66 44 33 05 ([0-9a-f]{2} ){4} * xor 0x[a-f0-9]+\(%rip\),%r8w # [a-f0-9]+ <_start\+0x[a-f0-9]+>
-+ +[a-f0-9]+: 66 85 0d ([0-9a-f]{2} ){4} * test %cx,0x[a-f0-9]+\(%rip\) # [a-f0-9]+ <_start\+0x[a-f0-9]+>
-+ +[a-f0-9]+: 66 13 05 ([0-9a-f]{2} ){4} * adc 0x[a-f0-9]+\(%rip\),%ax # [a-f0-9]+ <_start\+0x[a-f0-9]+>
-+ +[a-f0-9]+: 66 03 1d ([0-9a-f]{2} ){4} * add 0x[a-f0-9]+\(%rip\),%bx # [a-f0-9]+ <_start\+0x[a-f0-9]+>
-+ +[a-f0-9]+: 66 23 0d ([0-9a-f]{2} ){4} * and 0x[a-f0-9]+\(%rip\),%cx # [a-f0-9]+ <_start\+0x[a-f0-9]+>
-+ +[a-f0-9]+: 66 3b 15 ([0-9a-f]{2} ){4} * cmp 0x[a-f0-9]+\(%rip\),%dx # [a-f0-9]+ <_start\+0x[a-f0-9]+>
-+ +[a-f0-9]+: 66 0b 3d ([0-9a-f]{2} ){4} * or 0x[a-f0-9]+\(%rip\),%di # [a-f0-9]+ <_start\+0x[a-f0-9]+>
-+ +[a-f0-9]+: 66 1b 35 ([0-9a-f]{2} ){4} * sbb 0x[a-f0-9]+\(%rip\),%si # [a-f0-9]+ <_start\+0x[a-f0-9]+>
-+ +[a-f0-9]+: 66 2b 2d ([0-9a-f]{2} ){4} * sub 0x[a-f0-9]+\(%rip\),%bp # [a-f0-9]+ <_start\+0x[a-f0-9]+>
-+ +[a-f0-9]+: 66 44 33 05 ([0-9a-f]{2} ){4} * xor 0x[a-f0-9]+\(%rip\),%r8w # [a-f0-9]+ <_start\+0x[a-f0-9]+>
-+ +[a-f0-9]+: 66 85 0d ([0-9a-f]{2} ){4} * test %cx,0x[a-f0-9]+\(%rip\) # [a-f0-9]+ <_start\+0x[a-f0-9]+>
- #pass
-diff --git a/ld/testsuite/ld-x86-64/pr25416-3.d b/ld/testsuite/ld-x86-64/pr25416-3.d
-index 9c1da13484..26927d9956 100644
---- a/ld/testsuite/ld-x86-64/pr25416-3.d
-+++ b/ld/testsuite/ld-x86-64/pr25416-3.d
-@@ -9,8 +9,8 @@
- Disassembly of section .text:
-
- [a-f0-9]+ <_start>:
-- +[a-f0-9]+: 40 8b 05 ([0-9a-f]{2} ){4}[ \t]+rex mov 0x[a-f0-9]+\(%rip\),%eax[ \t]+# [a-f0-9]+ <.got>
-+ +[a-f0-9]+: 40 8b 05 ([0-9a-f]{2} ){4}[ \t]+rex mov 0x[a-f0-9]+\(%rip\),%eax[ \t]+# [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+>
- +[a-f0-9]+: 0f 1f 00 nopl \(%rax\)
- +[a-f0-9]+: 64 8b 0c 25 00 00 00 00 mov %fs:0x0,%ecx
-- +[a-f0-9]+: 40 03 0d ([0-9a-f]{2} ){4}[ \t]+rex add 0x[a-f0-9]+\(%rip\),%ecx[ \t]+# [a-f0-9]+ <.got>
-+ +[a-f0-9]+: 40 03 0d ([0-9a-f]{2} ){4}[ \t]+rex add 0x[a-f0-9]+\(%rip\),%ecx[ \t]+# [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+>
- #pass
-diff --git a/ld/testsuite/ld-x86-64/pr25416-4.d b/ld/testsuite/ld-x86-64/pr25416-4.d
-index 8d91fbc0a6..d98121f1f3 100644
---- a/ld/testsuite/ld-x86-64/pr25416-4.d
-+++ b/ld/testsuite/ld-x86-64/pr25416-4.d
-@@ -9,8 +9,8 @@
- Disassembly of section .text:
-
- [a-f0-9]+ <_start>:
-- +[a-f0-9]+: 48 8b 05 ([0-9a-f]{2} ){4}[ \t]+mov 0x[a-f0-9]+\(%rip\),%rax[ \t]+# [a-f0-9]+ <.got>
-+ +[a-f0-9]+: 48 8b 05 ([0-9a-f]{2} ){4}[ \t]+mov 0x[a-f0-9]+\(%rip\),%rax[ \t]+# [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+>
- +[a-f0-9]+: 66 90 xchg %ax,%ax
- +[a-f0-9]+: 64 8b 0c 25 00 00 00 00 mov %fs:0x0,%ecx
-- +[a-f0-9]+: 40 03 0d ([0-9a-f]{2} ){4}[ \t]+rex add 0x[a-f0-9]+\(%rip\),%ecx[ \t]+# [a-f0-9]+ <.got>
-+ +[a-f0-9]+: 40 03 0d ([0-9a-f]{2} ){4}[ \t]+rex add 0x[a-f0-9]+\(%rip\),%ecx[ \t]+# [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+>
- #pass
-diff --git a/ld/testsuite/ld-x86-64/tlsbin.rd b/ld/testsuite/ld-x86-64/tlsbin.rd
-index c535732b75..54fe876ecc 100644
---- a/ld/testsuite/ld-x86-64/tlsbin.rd
-+++ b/ld/testsuite/ld-x86-64/tlsbin.rd
-@@ -75,19 +75,6 @@ Symbol table '\.dynsym' contains [0-9]+ entries:
- Symbol table '\.symtab' contains [0-9]+ entries:
- +Num: +Value +Size +Type +Bind +Vis +Ndx +Name
- .* NOTYPE +LOCAL +DEFAULT +UND *
--.* SECTION +LOCAL +DEFAULT +1 *
--.* SECTION +LOCAL +DEFAULT +2 *
--.* SECTION +LOCAL +DEFAULT +3 *
--.* SECTION +LOCAL +DEFAULT +4 *
--.* SECTION +LOCAL +DEFAULT +5 *
--.* SECTION +LOCAL +DEFAULT +6 *
--.* SECTION +LOCAL +DEFAULT +7 *
--.* SECTION +LOCAL +DEFAULT +8 *
--.* SECTION +LOCAL +DEFAULT +9 *
--.* SECTION +LOCAL +DEFAULT +10 *
--.* SECTION +LOCAL +DEFAULT +11 *
--.* SECTION +LOCAL +DEFAULT +12 *
--.* SECTION +LOCAL +DEFAULT +13 *
- .* FILE +LOCAL +DEFAULT +ABS .*tlsbinpic.o
- .* TLS +LOCAL +DEFAULT +9 sl1
- .* TLS +LOCAL +DEFAULT +9 sl2
-diff --git a/ld/testsuite/ld-x86-64/tlsbin2.rd b/ld/testsuite/ld-x86-64/tlsbin2.rd
-index b1205fe49a..495115eb70 100644
---- a/ld/testsuite/ld-x86-64/tlsbin2.rd
-+++ b/ld/testsuite/ld-x86-64/tlsbin2.rd
-@@ -70,17 +70,6 @@ Symbol table '\.dynsym' contains [0-9]+ entries:
- Symbol table '\.symtab' contains [0-9]+ entries:
- +Num: +Value +Size +Type +Bind +Vis +Ndx +Name
- .* NOTYPE +LOCAL +DEFAULT +UND *
--.* SECTION +LOCAL +DEFAULT +1 *
--.* SECTION +LOCAL +DEFAULT +2 *
--.* SECTION +LOCAL +DEFAULT +3 *
--.* SECTION +LOCAL +DEFAULT +4 *
--.* SECTION +LOCAL +DEFAULT +5 *
--.* SECTION +LOCAL +DEFAULT +6 *
--.* SECTION +LOCAL +DEFAULT +7 *
--.* SECTION +LOCAL +DEFAULT +8 *
--.* SECTION +LOCAL +DEFAULT +9 *
--.* SECTION +LOCAL +DEFAULT +10 *
--.* SECTION +LOCAL +DEFAULT +11 *
- .* FILE +LOCAL +DEFAULT +ABS .*tlsbinpic2.o
- .* TLS +LOCAL +DEFAULT +7 sl1
- .* TLS +LOCAL +DEFAULT +7 sl2
-diff --git a/ld/testsuite/ld-x86-64/tlsbindesc.rd b/ld/testsuite/ld-x86-64/tlsbindesc.rd
-index 9e46ca1d0f..682c4a066a 100644
---- a/ld/testsuite/ld-x86-64/tlsbindesc.rd
-+++ b/ld/testsuite/ld-x86-64/tlsbindesc.rd
-@@ -68,17 +68,6 @@ Symbol table '\.dynsym' contains [0-9]+ entries:
- Symbol table '\.symtab' contains [0-9]+ entries:
- +Num: +Value +Size +Type +Bind +Vis +Ndx +Name
- +[0-9]+: 0+ +0 +NOTYPE +LOCAL +DEFAULT +UND *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +1 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +2 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +3 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +4 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +5 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +6 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +7 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +8 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +9 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +10 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +11 *
- .* FILE +LOCAL +DEFAULT +ABS .*tlsbindesc.o
- +[0-9]+: 0+20 +0 +TLS +LOCAL +DEFAULT +7 sl1
- +[0-9]+: 0+24 +0 +TLS +LOCAL +DEFAULT +7 sl2
-diff --git a/ld/testsuite/ld-x86-64/tlsdesc.rd b/ld/testsuite/ld-x86-64/tlsdesc.rd
-index a15c6e0f22..58feb20e55 100644
---- a/ld/testsuite/ld-x86-64/tlsdesc.rd
-+++ b/ld/testsuite/ld-x86-64/tlsdesc.rd
-@@ -100,18 +100,6 @@ Symbol table '\.dynsym' contains [0-9]+ entries:
- Symbol table '\.symtab' contains [0-9]+ entries:
- +Num: +Value +Size +Type +Bind +Vis +Ndx +Name
- +[0-9]+: 0+ +0 +NOTYPE +LOCAL +DEFAULT +UND *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +1 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +2 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +3 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +4 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +5 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +6 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +7 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +8 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +9 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +10 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +11 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +12 *
- .* FILE +LOCAL +DEFAULT +ABS .*tlsdesc.o
- +[0-9]+: 0+20 +0 +TLS +LOCAL +DEFAULT +8 sl1
- +[0-9]+: 0+24 +0 +TLS +LOCAL +DEFAULT +8 sl2
-diff --git a/ld/testsuite/ld-x86-64/tlsgdesc.rd b/ld/testsuite/ld-x86-64/tlsgdesc.rd
-index 77e8ae3d81..ca8f19bf3f 100644
---- a/ld/testsuite/ld-x86-64/tlsgdesc.rd
-+++ b/ld/testsuite/ld-x86-64/tlsgdesc.rd
-@@ -73,16 +73,6 @@ Symbol table '\.dynsym' contains [0-9]+ entries:
- Symbol table '\.symtab' contains [0-9]+ entries:
- +Num: +Value +Size +Type +Bind +Vis +Ndx +Name
- +[0-9]+: 0+ +0 +NOTYPE +LOCAL +DEFAULT +UND *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +1 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +2 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +3 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +4 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +5 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +6 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +7 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +8 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +9 *
-- +[0-9]+: [0-9a-f]+ +0 +SECTION +LOCAL +DEFAULT +10 *
- +[0-9]+: [0-9a-f]+ +0 +OBJECT +LOCAL +DEFAULT +8 _DYNAMIC
- +[0-9]+: [0-9a-f]+ +0 +OBJECT +LOCAL +DEFAULT +10 _GLOBAL_OFFSET_TABLE_
- +[0-9]+: 0+ +0 +TLS +GLOBAL +DEFAULT +UND sG3
-diff --git a/ld/testsuite/ld-x86-64/tlspic.rd b/ld/testsuite/ld-x86-64/tlspic.rd
-index 024e124e51..2e44dc6ac6 100644
---- a/ld/testsuite/ld-x86-64/tlspic.rd
-+++ b/ld/testsuite/ld-x86-64/tlspic.rd
-@@ -84,18 +84,6 @@ Symbol table '\.dynsym' contains [0-9]+ entries:
- Symbol table '\.symtab' contains [0-9]+ entries:
- +Num: +Value +Size +Type +Bind +Vis +Ndx +Name
- .* NOTYPE +LOCAL +DEFAULT +UND *
--.* SECTION +LOCAL +DEFAULT +1 *
--.* SECTION +LOCAL +DEFAULT +2 *
--.* SECTION +LOCAL +DEFAULT +3 *
--.* SECTION +LOCAL +DEFAULT +4 *
--.* SECTION +LOCAL +DEFAULT +5 *
--.* SECTION +LOCAL +DEFAULT +6 *
--.* SECTION +LOCAL +DEFAULT +7 *
--.* SECTION +LOCAL +DEFAULT +8 *
--.* SECTION +LOCAL +DEFAULT +9 *
--.* SECTION +LOCAL +DEFAULT +10 *
--.* SECTION +LOCAL +DEFAULT +11 *
--.* SECTION +LOCAL +DEFAULT +12 *
- .* FILE +LOCAL +DEFAULT +ABS .*tlspic1.o
- .* TLS +LOCAL +DEFAULT +8 sl1
- .* TLS +LOCAL +DEFAULT +8 sl2
-diff --git a/ld/testsuite/ld-x86-64/tlspic2.rd b/ld/testsuite/ld-x86-64/tlspic2.rd
-index a39a8fe0d0..60decd2787 100644
---- a/ld/testsuite/ld-x86-64/tlspic2.rd
-+++ b/ld/testsuite/ld-x86-64/tlspic2.rd
-@@ -81,18 +81,6 @@ Symbol table '\.dynsym' contains [0-9]+ entries:
- Symbol table '\.symtab' contains [0-9]+ entries:
- +Num: +Value +Size +Type +Bind +Vis +Ndx +Name
- .* NOTYPE +LOCAL +DEFAULT +UND *
--.* SECTION +LOCAL +DEFAULT +1 *
--.* SECTION +LOCAL +DEFAULT +2 *
--.* SECTION +LOCAL +DEFAULT +3 *
--.* SECTION +LOCAL +DEFAULT +4 *
--.* SECTION +LOCAL +DEFAULT +5 *
--.* SECTION +LOCAL +DEFAULT +6 *
--.* SECTION +LOCAL +DEFAULT +7 *
--.* SECTION +LOCAL +DEFAULT +8 *
--.* SECTION +LOCAL +DEFAULT +9 *
--.* SECTION +LOCAL +DEFAULT +10 *
--.* SECTION +LOCAL +DEFAULT +11 *
--.* SECTION +LOCAL +DEFAULT +12 *
- .* FILE +LOCAL +DEFAULT +ABS .*tlspic3.o
- .* TLS +LOCAL +DEFAULT +8 sl1
- .* TLS +LOCAL +DEFAULT +8 sl2
---
-2.30.0
-
diff --git a/source/d/binutils/patches/binutils-2.20.51.0.10-copy-osabi.patch b/source/d/binutils/patches/binutils-2.20.51.0.10-copy-osabi.patch
deleted file mode 100644
index 6bd9f3df..00000000
--- a/source/d/binutils/patches/binutils-2.20.51.0.10-copy-osabi.patch
+++ /dev/null
@@ -1,16 +0,0 @@
---- binutils-2.26.orig/bfd/elf.c 2016-01-25 10:11:33.482288877 +0000
-+++ binutils-2.26/bfd/elf.c 2016-01-25 10:16:48.520223863 +0000
-@@ -1300,6 +1300,13 @@ _bfd_elf_copy_private_bfd_data (bfd *ibf
- }
- }
-
-+ /* If the input BFD has the OSABI field set and the
-+ output BFD does not, then copy the value. */
-+ if (elf_elfheader (ibfd)->e_ident [EI_OSABI] != ELFOSABI_NONE
-+ && elf_elfheader (obfd)->e_ident [EI_OSABI] == ELFOSABI_NONE)
-+ elf_elfheader (obfd)->e_ident [EI_OSABI] =
-+ elf_elfheader (ibfd)->e_ident [EI_OSABI];
-+
- return TRUE;
- }
-
diff --git a/source/d/binutils/patches/binutils-2.20.51.0.10-sec-merge-emit.patch b/source/d/binutils/patches/binutils-2.20.51.0.10-sec-merge-emit.patch
deleted file mode 100644
index 238beb38..00000000
--- a/source/d/binutils/patches/binutils-2.20.51.0.10-sec-merge-emit.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- binutils-2.26.orig/bfd/merge.c 2016-01-25 10:11:33.505289018 +0000
-+++ binutils-2.26/bfd/merge.c 2016-01-25 10:19:56.961381656 +0000
-@@ -334,7 +334,7 @@ sec_merge_emit (bfd *abfd, struct sec_me
-
- /* Trailing alignment needed? */
- off = sec->size - off;
-- if (off != 0)
-+ if (off != 0 && alignment_power)
- {
- if (contents)
- memcpy (contents + offset, pad, off);
diff --git a/source/d/binutils/patches/binutils-2.24-ldforcele.patch b/source/d/binutils/patches/binutils-2.24-ldforcele.patch
deleted file mode 100644
index 194cf1ea..00000000
--- a/source/d/binutils/patches/binutils-2.24-ldforcele.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-Common subdirectories: ../binutils-2.24.orig/ld/emulparams and ld/emulparams
-Common subdirectories: ../binutils-2.24.orig/ld/emultempl and ld/emultempl
-diff -up ../binutils-2.24.orig/ld/ldlang.c ld/ldlang.c
---- a/ld/ldlang.c 2014-05-09 10:35:04.589504928 +0100
-+++ b/ld/ldlang.c 2014-05-09 10:35:55.515661478 +0100
-@@ -7096,6 +7096,18 @@
- && little != NULL)
- format = little;
-
-+ if (getenv ("LD_FORCE_LE") != NULL)
-+ {
-+ if (strcmp (format, "elf64-powerpc") == 0)
-+ format = "elf64-powerpcle";
-+ else if (strcmp (format, "elf32-powerpc") == 0)
-+ format = "elf32-powerpcle";
-+ else if (strcmp (format, "elf64-big") == 0)
-+ format = "elf64-little";
-+ else if (strcmp (format, "elf32-big") == 0)
-+ format = "elf32-little";
-+ }
-+
- output_target = format;
- }
- }
-Only in ld: ldlang.c.orig
-diff -up ../binutils-2.24.orig/ld/ldmain.c ld/ldmain.c
---- a/ld/ldmain.c 2014-05-09 10:35:04.593504941 +0100
-+++ b/ld/ldmain.c 2014-05-09 10:35:55.515661478 +0100
-@@ -603,6 +603,18 @@
- }
- }
-
-+ if ((strncmp (emulation, "elf64ppc", 8) == 0
-+ || strncmp (emulation, "elf32ppc", 8) == 0)
-+ && getenv ("LD_FORCE_LE") != NULL)
-+ {
-+ size_t len = strlen (emulation);
-+ char *le = xmalloc (len + 2);
-+ memcpy (le, emulation, 5);
-+ le[5] = 'l';
-+ memcpy (le + 6, emulation + 5, len - 4);
-+ emulation = le;
-+ }
-+
- return emulation;
- }
-
-Only in ld: ldmain.c.orig
-Common subdirectories: ../binutils-2.24.orig/ld/ldscripts and ld/ldscripts
-Common subdirectories: ../binutils-2.24.orig/ld/.libs and ld/.libs
-Common subdirectories: ../binutils-2.24.orig/ld/po and ld/po
-Common subdirectories: ../binutils-2.24.orig/ld/scripttempl and ld/scripttempl
-Common subdirectories: ../binutils-2.24.orig/ld/testsuite and ld/testsuite
-Common subdirectories: ../binutils-2.24.orig/ld/tmpdir and ld/tmpdir
diff --git a/source/d/binutils/patches/binutils-2.27-aarch64-ifunc.patch b/source/d/binutils/patches/binutils-2.27-aarch64-ifunc.patch
new file mode 100644
index 00000000..562ef18c
--- /dev/null
+++ b/source/d/binutils/patches/binutils-2.27-aarch64-ifunc.patch
@@ -0,0 +1,11 @@
+diff -rup binutils.orig/bfd/elfnn-aarch64.c binutils-2.27/bfd/elfnn-aarch64.c
+--- binutils.orig/bfd/elfnn-aarch64.c 2017-02-21 10:45:19.311956006 +0000
++++ binutils-2.27/bfd/elfnn-aarch64.c 2017-02-21 11:55:07.517922655 +0000
+@@ -4947,6 +4947,7 @@ elfNN_aarch64_final_link_relocate (reloc
+ it here if it is defined in a non-shared object. */
+ if (h != NULL
+ && h->type == STT_GNU_IFUNC
++ && (input_section->flags & SEC_ALLOC)
+ && h->def_regular)
+ {
+ asection *plt;
diff --git a/source/d/binutils/patches/binutils-CVE-2019-1010204.patch b/source/d/binutils/patches/binutils-CVE-2019-1010204.patch
new file mode 100644
index 00000000..56434b10
--- /dev/null
+++ b/source/d/binutils/patches/binutils-CVE-2019-1010204.patch
@@ -0,0 +1,15 @@
+--- binutils.orig/gold/fileread.cc 2019-08-06 14:22:08.669313110 +0100
++++ binutils-2.32/gold/fileread.cc 2019-08-06 14:22:28.799177543 +0100
+@@ -381,6 +381,12 @@ File_read::do_read(off_t start, section_
+ ssize_t bytes;
+ if (this->whole_file_view_ != NULL)
+ {
++ // See PR 23765 for an example of a testcase that triggers this error.
++ if (((ssize_t) start) < 0)
++ gold_fatal(_("%s: read failed, starting offset (%#llx) less than zero"),
++ this->filename().c_str(),
++ static_cast<long long>(start));
++
+ bytes = this->size_ - start;
+ if (static_cast<section_size_type>(bytes) >= size)
+ {
diff --git a/source/d/binutils/patches/binutils-bfd-close-fds.patch b/source/d/binutils/patches/binutils-bfd-close-fds.patch
new file mode 100644
index 00000000..192d4e02
--- /dev/null
+++ b/source/d/binutils/patches/binutils-bfd-close-fds.patch
@@ -0,0 +1,232 @@
+From 1c611b40e6bfc8029bff7696814330b5bc0ee5c0 Mon Sep 17 00:00:00 2001
+From: "H.J. Lu" <hjl.tools@gmail.com>
+Date: Mon, 26 Jul 2021 05:59:55 -0700
+Subject: [PATCH] bfd: Close the file descriptor if there is no archive fd
+
+Close the file descriptor if there is no archive plugin file descriptor
+to avoid running out of file descriptors on thin archives with many
+archive members.
+
+bfd/
+
+ PR ld/28138
+ * plugin.c (bfd_plugin_close_file_descriptor): Close the file
+ descriptor there is no archive plugin file descriptor.
+
+ld/
+
+ PR ld/28138
+ * testsuite/ld-plugin/lto.exp: Run tmpdir/pr28138 only for
+ native build.
+
+ PR ld/28138
+ * testsuite/ld-plugin/lto.exp: Run ld/28138 tests.
+ * testsuite/ld-plugin/pr28138.c: New file.
+ * testsuite/ld-plugin/pr28138-1.c: Likewise.
+ * testsuite/ld-plugin/pr28138-2.c: Likewise.
+ * testsuite/ld-plugin/pr28138-3.c: Likewise.
+ * testsuite/ld-plugin/pr28138-4.c: Likewise.
+ * testsuite/ld-plugin/pr28138-5.c: Likewise.
+ * testsuite/ld-plugin/pr28138-6.c: Likewise.
+ * testsuite/ld-plugin/pr28138-7.c: Likewise.
+
+(cherry picked from commit 5a98fb7513b559e20dfebdbaa2a471afda3b4742)
+(cherry picked from commit 7dc37e1e1209c80e0bab784df6b6bac335e836f2)
+---
+ bfd/plugin.c | 8 +++++++
+ ld/testsuite/ld-plugin/lto.exp | 34 ++++++++++++++++++++++++++++++
+ ld/testsuite/ld-plugin/pr28138-1.c | 6 ++++++
+ ld/testsuite/ld-plugin/pr28138-2.c | 6 ++++++
+ ld/testsuite/ld-plugin/pr28138-3.c | 6 ++++++
+ ld/testsuite/ld-plugin/pr28138-4.c | 6 ++++++
+ ld/testsuite/ld-plugin/pr28138-5.c | 6 ++++++
+ ld/testsuite/ld-plugin/pr28138-6.c | 6 ++++++
+ ld/testsuite/ld-plugin/pr28138-7.c | 6 ++++++
+ ld/testsuite/ld-plugin/pr28138.c | 20 ++++++++++++++++++
+ 10 files changed, 104 insertions(+)
+ create mode 100644 ld/testsuite/ld-plugin/pr28138-1.c
+ create mode 100644 ld/testsuite/ld-plugin/pr28138-2.c
+ create mode 100644 ld/testsuite/ld-plugin/pr28138-3.c
+ create mode 100644 ld/testsuite/ld-plugin/pr28138-4.c
+ create mode 100644 ld/testsuite/ld-plugin/pr28138-5.c
+ create mode 100644 ld/testsuite/ld-plugin/pr28138-6.c
+ create mode 100644 ld/testsuite/ld-plugin/pr28138-7.c
+ create mode 100644 ld/testsuite/ld-plugin/pr28138.c
+
+diff --git a/bfd/plugin.c b/bfd/plugin.c
+index 6cfa2b66470..3bab8febe88 100644
+--- a/bfd/plugin.c
++++ b/bfd/plugin.c
+@@ -291,6 +291,14 @@ bfd_plugin_close_file_descriptor (bfd *abfd, int fd)
+ && !bfd_is_thin_archive (abfd->my_archive))
+ abfd = abfd->my_archive;
+
++ /* Close the file descriptor if there is no archive plugin file
++ descriptor. */
++ if (abfd->archive_plugin_fd == -1)
++ {
++ close (fd);
++ return;
++ }
++
+ abfd->archive_plugin_fd_open_count--;
+ /* Dup the archive plugin file descriptor for later use, which
+ will be closed by _bfd_archive_close_and_cleanup. */
+diff --git a/ld/testsuite/ld-plugin/lto.exp b/ld/testsuite/ld-plugin/lto.exp
+index def69e43ab3..999d911ce6a 100644
+--- a/ld/testsuite/ld-plugin/lto.exp
++++ b/ld/testsuite/ld-plugin/lto.exp
+@@ -687,6 +687,40 @@ if { [is_elf_format] && [check_lto_shared_available] } {
+ }
+ }
+
++run_cc_link_tests [list \
++ [list \
++ "Build pr28138.a" \
++ "-T" "" \
++ {pr28138-1.c pr28138-2.c pr28138-3.c pr28138-4.c pr28138-5.c \
++ pr28138-6.c pr28138-7.c} {} "pr28138.a" \
++ ] \
++ [list \
++ "Build pr28138.o" \
++ "" "" \
++ {pr28138.c} {} \
++ ] \
++]
++
++set exec_output [run_host_cmd "sh" \
++ "-c \"ulimit -n 20; \
++ $CC -Btmpdir/ld -o tmpdir/pr28138 \
++ tmpdir/pr28138.o tmpdir/pr28138.a\""]
++set exec_output [prune_warnings $exec_output]
++if [string match "" $exec_output] then {
++ if { [isnative] } {
++ set exec_output [run_host_cmd "tmpdir/pr28138" ""]
++ if [string match "PASS" $exec_output] then {
++ pass "PR ld/28138"
++ } else {
++ fail "PR ld/28138"
++ }
++ } else {
++ pass "PR ld/28138"
++ }
++} else {
++ fail "PR ld/28138"
++}
++
+ set testname "Build liblto-11.a"
+ remote_file host delete "tmpdir/liblto-11.a"
+ set catch_output [run_host_cmd "$ar" "rc $plug_opt tmpdir/liblto-11.a tmpdir/lto-11a.o tmpdir/lto-11b.o tmpdir/lto-11c.o"]
+diff --git a/ld/testsuite/ld-plugin/pr28138-1.c b/ld/testsuite/ld-plugin/pr28138-1.c
+new file mode 100644
+index 00000000000..51d119e1642
+--- /dev/null
++++ b/ld/testsuite/ld-plugin/pr28138-1.c
+@@ -0,0 +1,6 @@
++extern int a0(void);
++int
++a1(void)
++{
++ return 1 + a0();
++}
+diff --git a/ld/testsuite/ld-plugin/pr28138-2.c b/ld/testsuite/ld-plugin/pr28138-2.c
+new file mode 100644
+index 00000000000..1120cd797e9
+--- /dev/null
++++ b/ld/testsuite/ld-plugin/pr28138-2.c
+@@ -0,0 +1,6 @@
++extern int a1(void);
++int
++a2(void)
++{
++ return 1 + a1();
++}
+diff --git a/ld/testsuite/ld-plugin/pr28138-3.c b/ld/testsuite/ld-plugin/pr28138-3.c
+new file mode 100644
+index 00000000000..ec464947ee6
+--- /dev/null
++++ b/ld/testsuite/ld-plugin/pr28138-3.c
+@@ -0,0 +1,6 @@
++extern int a2(void);
++int
++a3(void)
++{
++ return 1 + a2();
++}
+diff --git a/ld/testsuite/ld-plugin/pr28138-4.c b/ld/testsuite/ld-plugin/pr28138-4.c
+new file mode 100644
+index 00000000000..475701b2c5c
+--- /dev/null
++++ b/ld/testsuite/ld-plugin/pr28138-4.c
+@@ -0,0 +1,6 @@
++extern int a3(void);
++int
++a4(void)
++{
++ return 1 + a3();
++}
+diff --git a/ld/testsuite/ld-plugin/pr28138-5.c b/ld/testsuite/ld-plugin/pr28138-5.c
+new file mode 100644
+index 00000000000..e24f86c363e
+--- /dev/null
++++ b/ld/testsuite/ld-plugin/pr28138-5.c
+@@ -0,0 +1,6 @@
++extern int a4(void);
++int
++a5(void)
++{
++ return 1 + a4();
++}
+diff --git a/ld/testsuite/ld-plugin/pr28138-6.c b/ld/testsuite/ld-plugin/pr28138-6.c
+new file mode 100644
+index 00000000000..b5b938bdb21
+--- /dev/null
++++ b/ld/testsuite/ld-plugin/pr28138-6.c
+@@ -0,0 +1,6 @@
++extern int a5(void);
++int
++a6(void)
++{
++ return 1 + a5();
++}
+diff --git a/ld/testsuite/ld-plugin/pr28138-7.c b/ld/testsuite/ld-plugin/pr28138-7.c
+new file mode 100644
+index 00000000000..4ef75bf0f0c
+--- /dev/null
++++ b/ld/testsuite/ld-plugin/pr28138-7.c
+@@ -0,0 +1,6 @@
++extern int a6(void);
++int
++a7(void)
++{
++ return 1 + a6();
++}
+diff --git a/ld/testsuite/ld-plugin/pr28138.c b/ld/testsuite/ld-plugin/pr28138.c
+new file mode 100644
+index 00000000000..68252c9f382
+--- /dev/null
++++ b/ld/testsuite/ld-plugin/pr28138.c
+@@ -0,0 +1,20 @@
++#include <stdio.h>
++
++extern int a7(void);
++
++int
++a0(void)
++{
++ return 0;
++}
++
++int
++main()
++{
++ if (a7() == 7)
++ {
++ printf ("PASS\n");
++ return 0;
++ }
++ return 1;
++}
+--
+2.27.0
+
diff --git a/source/d/binutils/patches/binutils-do-not-link-with-static-libstdc++.patch b/source/d/binutils/patches/binutils-do-not-link-with-static-libstdc++.patch
new file mode 100644
index 00000000..49d46c2e
--- /dev/null
+++ b/source/d/binutils/patches/binutils-do-not-link-with-static-libstdc++.patch
@@ -0,0 +1,83 @@
+diff -rup binutils.orig/configure binutils-2.30/configure
+--- binutils.orig/configure 2018-09-24 17:50:06.967172922 +0100
++++ binutils-2.30/configure 2018-09-24 17:51:16.648624865 +0100
+@@ -4996,49 +4996,6 @@ if test -z "$LD"; then
+ fi
+ fi
+
+-# Check whether -static-libstdc++ -static-libgcc is supported.
+-have_static_libs=no
+-if test "$GCC" = yes; then
+- saved_LDFLAGS="$LDFLAGS"
+-
+- LDFLAGS="$LDFLAGS -static-libstdc++ -static-libgcc"
+- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether g++ accepts -static-libstdc++ -static-libgcc" >&5
+-$as_echo_n "checking whether g++ accepts -static-libstdc++ -static-libgcc... " >&6; }
+- ac_ext=cpp
+-ac_cpp='$CXXCPP $CPPFLAGS'
+-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+-
+-
+-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+-/* end confdefs.h. */
+-
+-#if (__GNUC__ < 4) || (__GNUC__ == 4 && __GNUC_MINOR__ < 5)
+-#error -static-libstdc++ not implemented
+-#endif
+-int main() {}
+-_ACEOF
+-if ac_fn_cxx_try_link "$LINENO"; then :
+- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+-$as_echo "yes" >&6; }; have_static_libs=yes
+-else
+- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+-$as_echo "no" >&6; }
+-fi
+-rm -f core conftest.err conftest.$ac_objext \
+- conftest$ac_exeext conftest.$ac_ext
+- ac_ext=c
+-ac_cpp='$CPP $CPPFLAGS'
+-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+-ac_compiler_gnu=$ac_cv_c_compiler_gnu
+-
+-
+- LDFLAGS="$saved_LDFLAGS"
+-fi
+-
+-
+
+
+ if test -n "$ac_tool_prefix"; then
+diff -rup binutils.orig/configure.ac binutils-2.30/configure.ac
+--- binutils.orig/configure.ac 2018-09-24 17:50:07.241170767 +0100
++++ binutils-2.30/configure.ac 2018-09-24 17:50:29.908992486 +0100
+@@ -1288,26 +1288,6 @@ if test -z "$LD"; then
+ fi
+ fi
+
+-# Check whether -static-libstdc++ -static-libgcc is supported.
+-have_static_libs=no
+-if test "$GCC" = yes; then
+- saved_LDFLAGS="$LDFLAGS"
+-
+- LDFLAGS="$LDFLAGS -static-libstdc++ -static-libgcc"
+- AC_MSG_CHECKING([whether g++ accepts -static-libstdc++ -static-libgcc])
+- AC_LANG_PUSH(C++)
+- AC_LINK_IFELSE([AC_LANG_SOURCE([
+-#if (__GNUC__ < 4) || (__GNUC__ == 4 && __GNUC_MINOR__ < 5)
+-#error -static-libstdc++ not implemented
+-#endif
+-int main() {}])],
+- [AC_MSG_RESULT([yes]); have_static_libs=yes],
+- [AC_MSG_RESULT([no])])
+- AC_LANG_POP(C++)
+-
+- LDFLAGS="$saved_LDFLAGS"
+-fi
+-
+ ACX_PROG_GNAT
+ ACX_PROG_CMP_IGNORE_INITIAL
+
diff --git a/source/d/binutils/patches/binutils-dwarf-5-dir0.patch b/source/d/binutils/patches/binutils-dwarf-5-dir0.patch
new file mode 100644
index 00000000..24233cce
--- /dev/null
+++ b/source/d/binutils/patches/binutils-dwarf-5-dir0.patch
@@ -0,0 +1,201 @@
+diff -rup binutils.orig/gas/dwarf2dbg.c binutils-2.37/gas/dwarf2dbg.c
+--- binutils.orig/gas/dwarf2dbg.c 2021-08-09 17:28:17.743318315 +0100
++++ binutils-2.37/gas/dwarf2dbg.c 2021-08-09 17:28:27.043264112 +0100
+@@ -620,7 +620,22 @@ get_directory_table_entry (const char *d
+ if (can_use_zero)
+ {
+ if (dirs == NULL || dirs[0] == NULL)
+- d = 0;
++ {
++ const char * pwd = getpwd ();
++
++ if (dwarf_level >= 5 && strcmp (dirname, pwd) != 0)
++ {
++ /* In DWARF-5 the 0 entry in the directory table is expected to be
++ the same as the DW_AT_comp_dir (which is set to the current build
++ directory). Since we are about to create a directory entry that
++ is not the same, allocate the current directory first.
++ FIXME: Alternatively we could generate an error message here. */
++ (void) get_directory_table_entry (pwd, strlen (pwd), true);
++ d = 1;
++ }
++ else
++ d = 0;
++ }
+ }
+ else if (d == 0)
+ d = 1;
+@@ -628,8 +643,8 @@ get_directory_table_entry (const char *d
+ if (d >= dirs_allocated)
+ {
+ unsigned int old = dirs_allocated;
+-
+- dirs_allocated = d + 32;
++#define DIR_TABLE_INCREMENT 32
++ dirs_allocated = d + DIR_TABLE_INCREMENT;
+ dirs = XRESIZEVEC (char *, dirs, dirs_allocated);
+ memset (dirs + old, 0, (dirs_allocated - old) * sizeof (char *));
+ }
+@@ -779,7 +794,7 @@ allocate_filename_to_slot (const char *d
+ {
+ if (dirs == NULL)
+ {
+- dirs_allocated = files[num].dir + 32;
++ dirs_allocated = files[num].dir + DIR_TABLE_INCREMENT;
+ dirs = XCNEWVEC (char *, dirs_allocated);
+ }
+
+@@ -807,7 +822,7 @@ allocate_filename_to_slot (const char *d
+ {
+ if (dirs == NULL)
+ {
+- dirs_allocated = files[num].dir + 32;
++ dirs_allocated = files[num].dir + DIR_TABLE_INCREMENT;
+ dirs = XCNEWVEC (char *, dirs_allocated);
+ }
+
+@@ -840,7 +855,7 @@ allocate_filename_to_slot (const char *d
+ dirlen = strlen (dirname);
+ file = filename;
+ }
+-
++
+ d = get_directory_table_entry (dirname, dirlen, num == 0);
+ i = num;
+
+@@ -2082,7 +2097,12 @@ out_dir_and_file_list (segT line_seg, in
+ Otherwise use pwd as main file directory. */
+ if (dirs_in_use > 0 && dirs != NULL && dirs[0] != NULL)
+ dir = remap_debug_filename (dirs[0]);
+- else if (dirs_in_use > 1 && dirs != NULL && dirs[1] != NULL)
++ else if (dirs_in_use > 1
++ && dirs != NULL
++ && dirs[1] != NULL
++ /* DWARF-5 directory tables expect dir[0] to be the same as
++ DW_AT_comp_dir, which is the same as pwd. */
++ && dwarf_level < 5)
+ dir = remap_debug_filename (dirs[1]);
+ else
+ dir = remap_debug_filename (getpwd ());
+@@ -2185,8 +2205,8 @@ out_dir_and_file_list (segT line_seg, in
+ uses slot zero, but that is only set explicitly using a
+ .file 0 directive. If that isn't used, but file 1 is,
+ then use that as main file name. */
+- if (DWARF2_LINE_VERSION >= 5 && i == 0 && files_in_use >= 1)
+- files[0].filename = files[1].filename;
++ if (DWARF2_LINE_VERSION >= 5 && i == 0 && files_in_use >= 1 && files[0].filename == NULL)
++ files[0].filename = files[1].filename;
+ else
+ files[i].filename = "";
+ if (DWARF2_LINE_VERSION < 5 || i != 0)
+Only in binutils-2.37/gas/testsuite/gas/elf: dwarf-5-dir0.d
+Only in binutils-2.37/gas/testsuite/gas/elf: dwarf-5-dir0.s
+diff -rup binutils.orig/gas/testsuite/gas/elf/dwarf-5-file0.d binutils-2.37/gas/testsuite/gas/elf/dwarf-5-file0.d
+--- binutils.orig/gas/testsuite/gas/elf/dwarf-5-file0.d 2021-08-09 17:28:17.817317884 +0100
++++ binutils-2.37/gas/testsuite/gas/elf/dwarf-5-file0.d 2021-08-09 17:28:27.043264112 +0100
+@@ -3,17 +3,18 @@
+ #readelf: -wl
+
+ #...
+- The Directory Table \(offset 0x.*, lines 3, columns 1\):
++ The Directory Table \(offset 0x.*, lines 4, columns 1\):
+ Entry Name
+- 0 \(indirect line string, offset: 0x.*\): master directory
+- 1 \(indirect line string, offset: 0x.*\): secondary directory
+- 2 \(indirect line string, offset: 0x.*\): /tmp
++#...
++ 1 \(indirect line string, offset: 0x.*\): master directory
++ 2 \(indirect line string, offset: 0x.*\): secondary directory
++ 3 \(indirect line string, offset: 0x.*\): /tmp
+
+ The File Name Table \(offset 0x.*, lines 3, columns 3\):
+ Entry Dir MD5 Name
+- 0 0 0x0 \(indirect line string, offset: 0x.*\): master source file
+- 1 1 0x0 \(indirect line string, offset: 0x.*\): secondary source file
+- 2 2 0x95828e8bc4f7404dbf7526fb7bd0f192 \(indirect line string, offset: 0x.*\): foo.c
++ 0 1 0x0 \(indirect line string, offset: 0x.*\): master source file
++ 1 2 0x0 \(indirect line string, offset: 0x.*\): secondary source file
++ 2 3 0x95828e8bc4f7404dbf7526fb7bd0f192 \(indirect line string, offset: 0x.*\): foo.c
+ #pass
+
+
+diff -rup binutils.orig/gas/testsuite/gas/elf/elf.exp binutils-2.37/gas/testsuite/gas/elf/elf.exp
+--- binutils.orig/gas/testsuite/gas/elf/elf.exp 2021-08-09 17:28:17.817317884 +0100
++++ binutils-2.37/gas/testsuite/gas/elf/elf.exp 2021-08-09 17:28:27.044264106 +0100
+@@ -297,6 +297,7 @@ if { [is_elf_format] } then {
+ run_dump_test "dwarf2-19" $dump_opts
+ run_dump_test "dwarf2-20" $dump_opts
+ run_dump_test "dwarf-5-file0" $dump_opts
++ run_dump_test "dwarf-5-dir0" $dump_opts
+ run_dump_test "dwarf-4-cu" $dump_opts
+ run_dump_test "dwarf-5-cu" $dump_opts
+ run_dump_test "dwarf-5-nop-for-line-table" $dump_opts
+diff -rup binutils.orig/gas/testsuite/gas/i386/dwarf5-line-1.d binutils-2.37/gas/testsuite/gas/i386/dwarf5-line-1.d
+--- binutils.orig/gas/testsuite/gas/i386/dwarf5-line-1.d 2021-08-09 17:28:17.782318088 +0100
++++ binutils-2.37/gas/testsuite/gas/i386/dwarf5-line-1.d 2021-08-09 17:28:27.044264106 +0100
+@@ -33,7 +33,7 @@ Raw dump of debug contents of section \.
+
+ The Directory Table \(offset 0x.*, lines 2, columns 1\):
+ Entry Name
+- 0 \(indirect line string, offset: 0x.*\): .*/gas/testsuite/gas/i386
++ 0 \(indirect line string, offset: 0x.*\): .*/gas/testsuite
+ 1 \(indirect line string, offset: 0x.*\): .*/gas/testsuite/gas/i386
+
+ The File Name Table \(offset 0x.*, lines 2, columns 3\):
+diff -rup binutils.orig/gas/testsuite/gas/i386/dwarf5-line-2.d binutils-2.37/gas/testsuite/gas/i386/dwarf5-line-2.d
+--- binutils.orig/gas/testsuite/gas/i386/dwarf5-line-2.d 2021-08-09 17:28:17.785318070 +0100
++++ binutils-2.37/gas/testsuite/gas/i386/dwarf5-line-2.d 2021-08-09 17:28:27.044264106 +0100
+@@ -33,7 +33,7 @@ Raw dump of debug contents of section \.
+
+ The Directory Table \(offset 0x.*, lines 2, columns 1\):
+ Entry Name
+- 0 \(indirect line string, offset: 0x.*\): .*/gas/testsuite/gas/i386
++ 0 \(indirect line string, offset: 0x.*\): .*/gas/testsuite
+ 1 \(indirect line string, offset: 0x.*\): .*/gas/testsuite/gas/i386
+
+ The File Name Table \(offset 0x.*, lines 1, columns 3\):
+--- /dev/null 2021-08-09 07:51:33.817495606 +0100
++++ binutils-2.37/gas/testsuite/gas/elf/dwarf-5-dir0.s 2021-08-09 17:28:54.787102415 +0100
+@@ -0,0 +1,19 @@
++ .section .debug_info,"",%progbits
++ .4byte 0x8a
++ .2byte 0x2
++ .4byte .Ldebug_abbrev0
++ .byte 0x4
++ .uleb128 0x1
++
++ .file 0 "../not-the-build-directory/master-source-file.c"
++ .line 1
++ .text
++ .octa 0x12345678901234567890123456789012
++
++ .file 1 "secondary directory/secondary source file"
++ .line 2
++ .word 2
++
++ .file 2 "/tmp" "foo.c" md5 0x95828e8bc4f7404dbf7526fb7bd0f192
++ .line 5
++ .word 6
+--- /dev/null 2021-08-09 07:51:33.817495606 +0100
++++ binutils-2.37/gas/testsuite/gas/elf/dwarf-5-dir0.d 2021-08-09 17:28:54.787102415 +0100
+@@ -0,0 +1,20 @@
++#as: --gdwarf-5
++#name: DWARF5 dir[0]
++#readelf: -wl
++
++#...
++ The Directory Table \(offset 0x.*, lines 4, columns 1\):
++ Entry Name
++ 0 \(indirect line string, offset: 0x0\): .*/gas/testsuite
++ 1 \(indirect line string, offset: 0x.*\): ../not-the-build-directory
++ 2 \(indirect line string, offset: 0x.*\): secondary directory
++ 3 \(indirect line string, offset: 0x.*\): /tmp
++
++ The File Name Table \(offset 0x.*, lines 3, columns 3\):
++ Entry Dir MD5 Name
++ 0 1 0x0 \(indirect line string, offset: 0x.*\): master-source-file.c
++ 1 2 0x0 \(indirect line string, offset: 0x.*\): secondary source file
++ 2 3 0x95828e8bc4f7404dbf7526fb7bd0f192 \(indirect line string, offset: 0x.*\): foo.c
++#pass
++
++
diff --git a/source/d/binutils/patches/binutils-export-demangle.h.patch b/source/d/binutils/patches/binutils-export-demangle.h.patch
new file mode 100644
index 00000000..9716a8bf
--- /dev/null
+++ b/source/d/binutils/patches/binutils-export-demangle.h.patch
@@ -0,0 +1,33 @@
+diff -rup binutils.orig/bfd/Makefile.am binutils-2.32/bfd/Makefile.am
+--- binutils.orig/bfd/Makefile.am 2019-02-08 12:22:51.395684251 +0000
++++ binutils-2.32/bfd/Makefile.am 2019-02-08 12:22:53.970664973 +0000
+@@ -33,7 +33,7 @@ bfdlibdir = @bfdlibdir@
+ bfdincludedir = @bfdincludedir@
+ bfdlib_LTLIBRARIES = libbfd.la
+ bfdinclude_HEADERS = $(BFD_H) $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h \
+- $(INCDIR)/diagnostics.h $(INCDIR)/bfdlink.h
++ $(INCDIR)/diagnostics.h $(INCDIR)/bfdlink.h $(INCDIR)/demangle.h
+ else !INSTALL_LIBBFD
+ # Empty these so that the respective installation directories will not be created.
+ bfdlibdir =
+diff -rup binutils.orig/bfd/Makefile.in binutils-2.32/bfd/Makefile.in
+--- binutils.orig/bfd/Makefile.in 2019-02-08 12:21:35.291254044 +0000
++++ binutils-2.32/bfd/Makefile.in 2019-02-08 12:22:10.163992947 +0000
+@@ -249,7 +249,7 @@ am__can_run_installinfo = \
+ esac
+ am__bfdinclude_HEADERS_DIST = $(INCDIR)/plugin-api.h bfd.h \
+ $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h \
+- $(INCDIR)/diagnostics.h $(INCDIR)/bfdlink.h
++ $(INCDIR)/diagnostics.h $(INCDIR)/bfdlink.h $(INCDIR)/demangle.h
+ HEADERS = $(bfdinclude_HEADERS)
+ RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+@@ -468,7 +468,7 @@ libbfd_la_LDFLAGS = $(am__append_1) -rel
+ @INSTALL_LIBBFD_FALSE@bfdinclude_HEADERS = $(am__append_2)
+ @INSTALL_LIBBFD_TRUE@bfdinclude_HEADERS = $(BFD_H) \
+ @INSTALL_LIBBFD_TRUE@ $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h \
+-@INSTALL_LIBBFD_TRUE@ $(INCDIR)/diagnostics.h \
++@INSTALL_LIBBFD_TRUE@ $(INCDIR)/diagnostics.h $(INCDIR)/demangle.h \
+ @INSTALL_LIBBFD_TRUE@ $(INCDIR)/bfdlink.h $(am__append_2)
+ @INSTALL_LIBBFD_FALSE@rpath_bfdlibdir = @bfdlibdir@
+ @INSTALL_LIBBFD_FALSE@noinst_LTLIBRARIES = libbfd.la
diff --git a/source/d/binutils/patches/binutils-filename-in-error-messages.patch b/source/d/binutils/patches/binutils-filename-in-error-messages.patch
new file mode 100644
index 00000000..e23d3ecc
--- /dev/null
+++ b/source/d/binutils/patches/binutils-filename-in-error-messages.patch
@@ -0,0 +1,134 @@
+--- binutils.orig/binutils/readelf.c 2021-07-19 12:39:14.206556025 +0100
++++ binutils-2.37/binutils/readelf.c 2021-07-19 12:44:37.712728732 +0100
+@@ -21873,45 +21873,52 @@ process_file (char * file_name)
+ struct stat statbuf;
+ char armag[SARMAG];
+ bool ret = true;
++ char * name;
++ char * saved_program_name;
++
++ /* Overload program_name to include file_name. Doing this means
++ that warning/error messages will positively identify the file
++ concerned even when multiple instances of readelf are running. */
++ name = xmalloc (strlen (program_name) + strlen (file_name) + 3);
++ sprintf (name, "%s: %s", program_name, file_name);
++ saved_program_name = program_name;
++ program_name = name;
+
+ if (stat (file_name, &statbuf) < 0)
+ {
+ if (errno == ENOENT)
+- error (_("'%s': No such file\n"), file_name);
++ error (_("No such file\n"));
+ else
+- error (_("Could not locate '%s'. System error message: %s\n"),
+- file_name, strerror (errno));
+- return false;
++ error (_("Could not locate file. System error message: %s\n"),
++ strerror (errno));
++ goto done;
+ }
+
+ if (! S_ISREG (statbuf.st_mode))
+ {
+- error (_("'%s' is not an ordinary file\n"), file_name);
+- return false;
++ error (_("Not an ordinary file\n"));
++ goto done;
+ }
+
+ filedata = calloc (1, sizeof * filedata);
+ if (filedata == NULL)
+ {
+ error (_("Out of memory allocating file data structure\n"));
+- return false;
++ goto done;
+ }
+
+ filedata->file_name = file_name;
+ filedata->handle = fopen (file_name, "rb");
+ if (filedata->handle == NULL)
+ {
+- error (_("Input file '%s' is not readable.\n"), file_name);
+- free (filedata);
+- return false;
++ error (_("Not readable\n"));
++ goto done;
+ }
+
+ if (fread (armag, SARMAG, 1, filedata->handle) != 1)
+ {
+- error (_("%s: Failed to read file's magic number\n"), file_name);
+- fclose (filedata->handle);
+- free (filedata);
+- return false;
++ error (_("Failed to read file's magic number\n"));
++ goto done;
+ }
+
+ filedata->file_size = (bfd_size_type) statbuf.st_size;
+@@ -21919,33 +21926,39 @@ process_file (char * file_name)
+
+ if (memcmp (armag, ARMAG, SARMAG) == 0)
+ {
+- if (! process_archive (filedata, false))
+- ret = false;
++ if (process_archive (filedata, false))
++ ret = true;
+ }
+ else if (memcmp (armag, ARMAGT, SARMAG) == 0)
+ {
+- if ( ! process_archive (filedata, true))
+- ret = false;
++ if (process_archive (filedata, true))
++ ret = true;
+ }
+ else
+ {
+ if (do_archive_index && !check_all)
+- error (_("File %s is not an archive so its index cannot be displayed.\n"),
+- file_name);
++ error (_("Not an archive so its index cannot be displayed.\n"));
+
+ rewind (filedata->handle);
+ filedata->archive_file_size = filedata->archive_file_offset = 0;
+
+- if (! process_object (filedata))
+- ret = false;
++ if (process_object (filedata))
++ ret = true;
+ }
+
+- fclose (filedata->handle);
+- free (filedata->section_headers);
+- free (filedata->program_headers);
+- free (filedata->string_table);
+- free (filedata->dump.dump_sects);
+- free (filedata);
++ done:
++ if (filedata)
++ {
++ if (filedata->handle != NULL)
++ fclose (filedata->handle);
++ free (filedata->section_headers);
++ free (filedata->program_headers);
++ free (filedata->string_table);
++ free (filedata->dump.dump_sects);
++ free (filedata);
++ }
++ free (program_name);
++ program_name = saved_program_name;
+
+ free (ba_cache.strtab);
+ ba_cache.strtab = NULL;
+--- binutils.orig/binutils/readelf.c 2021-08-10 10:15:22.088016072 +0100
++++ binutils-2.37/binutils/readelf.c 2021-08-10 10:15:55.567907891 +0100
+@@ -21884,7 +21884,7 @@ process_file (char * file_name)
+ Filedata * filedata = NULL;
+ struct stat statbuf;
+ char armag[SARMAG];
+- bool ret = true;
++ bool ret = false;
+ char * name;
+ char * saved_program_name;
+
diff --git a/source/d/binutils/patches/binutils-fix-testsuite-failures.patch b/source/d/binutils/patches/binutils-fix-testsuite-failures.patch
new file mode 100644
index 00000000..c2b19a5e
--- /dev/null
+++ b/source/d/binutils/patches/binutils-fix-testsuite-failures.patch
@@ -0,0 +1,330 @@
+diff -rup binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-10.d binutils-2.32/ld/testsuite/ld-plugin/plugin-10.d
+--- binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-10.d 2019-02-15 13:33:21.979627285 +0000
++++ binutils-2.32/ld/testsuite/ld-plugin/plugin-10.d 2019-02-15 13:40:26.911199033 +0000
+@@ -34,5 +34,6 @@ hook called: claim_file tmpdir/libtext.a
+ hook called: all symbols read.
+ Sym: '_?func' Resolution: LDPR_PREVAILING_DEF
+ Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF_IRONLY
++#...
+ hook called: cleanup.
+ #...
+diff -rup binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-13.d binutils-2.32/ld/testsuite/ld-plugin/plugin-13.d
+--- binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-13.d 2019-02-15 13:33:21.980627277 +0000
++++ binutils-2.32/ld/testsuite/ld-plugin/plugin-13.d 2019-02-15 13:41:30.189692800 +0000
+@@ -23,5 +23,3 @@ hook called: claim_file tmpdir/main.o \[
+ hook called: claim_file .*/ld/testsuite/ld-plugin/func.c \[@0/.* CLAIMED
+ hook called: claim_file tmpdir/text.o \[@0/.* not claimed
+ #...
+-.*main.c.*: undefined reference to `\.?func'
+-#...
+diff -rup binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-14.d binutils-2.32/ld/testsuite/ld-plugin/plugin-14.d
+--- binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-14.d 2019-02-15 13:33:21.977627301 +0000
++++ binutils-2.32/ld/testsuite/ld-plugin/plugin-14.d 2019-02-15 13:42:03.598430960 +0000
+@@ -27,7 +27,6 @@ hook called: claim_file .*/ld/testsuite/
+ hook called: claim_file tmpdir/text.o \[@0/.* not claimed
+ #...
+ hook called: all symbols read.
+-.*: tmpdir/main.o: in function `main':
+-.*main.c.*: undefined reference to `\.?func'
++#...
+ hook called: cleanup.
+ #...
+diff -rup binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-15.d binutils-2.32/ld/testsuite/ld-plugin/plugin-15.d
+--- binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-15.d 2019-02-15 13:33:21.980627277 +0000
++++ binutils-2.32/ld/testsuite/ld-plugin/plugin-15.d 2019-02-15 13:42:28.014239600 +0000
+@@ -28,7 +28,6 @@ hook called: claim_file .*/ld/testsuite/
+ hook called: claim_file tmpdir/text.o \[@0/.* not claimed
+ #...
+ hook called: all symbols read.
+-.*: tmpdir/main.o: in function `main':
+-.*main.c.*: undefined reference to `\.?func'
++#...
+ hook called: cleanup.
+ #...
+diff -rup binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-16.d binutils-2.32/ld/testsuite/ld-plugin/plugin-16.d
+--- binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-16.d 2019-02-15 13:33:21.977627301 +0000
++++ binutils-2.32/ld/testsuite/ld-plugin/plugin-16.d 2019-02-15 13:43:21.309821910 +0000
+@@ -30,9 +30,8 @@ hook called: claim_file .*/ld/testsuite/
+ hook called: claim_file tmpdir/text.o \[@0/.* not claimed
+ #...
+ hook called: all symbols read.
+-Sym: '_?func' Resolution: LDPR_PREVAILING_DEF
++Sym: '_?func' Resolution: LDPR_PREVAILING_DEF_IRONLY
+ Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF_IRONLY
+-.*: tmpdir/main.o: in function `main':
+-.*main.c.*: undefined reference to `\.?func'
++#...
+ hook called: cleanup.
+ #...
+diff -rup binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-17.d binutils-2.32/ld/testsuite/ld-plugin/plugin-17.d
+--- binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-17.d 2019-02-15 13:33:21.977627301 +0000
++++ binutils-2.32/ld/testsuite/ld-plugin/plugin-17.d 2019-02-15 13:43:54.925558451 +0000
+@@ -31,7 +31,8 @@ hook called: claim_file .*/ld/testsuite/
+ hook called: claim_file tmpdir/text.o \[@0/.* not claimed
+ #...
+ hook called: all symbols read.
+-Sym: '_?func' Resolution: LDPR_PREVAILING_DEF
++Sym: '_?func' Resolution: LDPR_PREVAILING_DEF_IRONLY
+ Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF_IRONLY
++#...
+ hook called: cleanup.
+ #...
+diff -rup binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-20.d binutils-2.32/ld/testsuite/ld-plugin/plugin-20.d
+--- binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-20.d 2019-02-15 13:33:21.980627277 +0000
++++ binutils-2.32/ld/testsuite/ld-plugin/plugin-20.d 2019-02-15 13:49:20.091010016 +0000
+@@ -2,6 +2,5 @@ hook called: all symbols read.
+ Input: func.c \(tmpdir/libfunc.a\)
+ Sym: '_?func' Resolution: LDPR_PREVAILING_DEF.*
+ Sym: '_?func' Resolution: LDPR_PREVAILING_DEF.*
+-.*: tmpdir/main.o: in function `main':
+-.*main.c.*: undefined reference to `\.?func'
++#...
+ hook called: cleanup.
+diff -rup binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-21.d binutils-2.32/ld/testsuite/ld-plugin/plugin-21.d
+--- binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-21.d 2019-02-15 13:33:21.978627293 +0000
++++ binutils-2.32/ld/testsuite/ld-plugin/plugin-21.d 2019-02-15 13:49:34.506897033 +0000
+@@ -2,6 +2,5 @@ hook called: all symbols read.
+ Input: .*/ld/testsuite/ld-plugin/func.c \(.*/ld/testsuite/ld-plugin/func.c\)
+ Sym: '_?func' Resolution: LDPR_PREVAILING_DEF.*
+ Sym: '_?func' Resolution: LDPR_PREVAILING_DEF.*
+-.*: tmpdir/main.o: in function `main':
+-.*main.c.*: undefined reference to `\.?func'
++#...
+ hook called: cleanup.
+diff -rup binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-22.d binutils-2.32/ld/testsuite/ld-plugin/plugin-22.d
+--- binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-22.d 2019-02-15 13:33:21.980627277 +0000
++++ binutils-2.32/ld/testsuite/ld-plugin/plugin-22.d 2019-02-15 13:50:00.409694022 +0000
+@@ -2,6 +2,5 @@ Claimed: tmpdir/libfunc.a \[@.*
+ hook called: all symbols read.
+ Sym: '_?func' Resolution: LDPR_PREVAILING_DEF.*
+ Sym: '_?func' Resolution: LDPR_PREVAILING_DEF.*
+-.*: tmpdir/main.o: in function `main':
+-.*main.c.*: undefined reference to `\.?func'
++#...
+ hook called: cleanup.
+diff -rup binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-23.d binutils-2.32/ld/testsuite/ld-plugin/plugin-23.d
+--- binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-23.d 2019-02-15 13:33:21.979627285 +0000
++++ binutils-2.32/ld/testsuite/ld-plugin/plugin-23.d 2019-02-15 13:50:14.938580156 +0000
+@@ -2,6 +2,5 @@ Claimed: .*/ld/testsuite/ld-plugin/func.
+ hook called: all symbols read.
+ Sym: '_?func' Resolution: LDPR_PREVAILING_DEF.*
+ Sym: '_?func' Resolution: LDPR_PREVAILING_DEF.*
+-.*: tmpdir/main.o: in function `main':
+-.*main.c.*: undefined reference to `\.?func'
++#...
+ hook called: cleanup.
+diff -rup binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-24.d binutils-2.32/ld/testsuite/ld-plugin/plugin-24.d
+--- binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-24.d 2019-02-15 13:33:21.980627277 +0000
++++ binutils-2.32/ld/testsuite/ld-plugin/plugin-24.d 2019-02-15 13:49:46.346804240 +0000
+@@ -2,4 +2,5 @@ hook called: all symbols read.
+ Input: .*/ld/testsuite/ld-plugin/func.c \(.*/ld/testsuite/ld-plugin/func.c\)
+ Sym: '_?func' Resolution: LDPR_PREVAILING_DEF.*
+ Sym: '_?func' Resolution: LDPR_PREVAILING_DEF.*
++#...
+ hook called: cleanup.
+diff -rup binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-25.d binutils-2.32/ld/testsuite/ld-plugin/plugin-25.d
+--- binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-25.d 2019-02-15 13:33:21.978627293 +0000
++++ binutils-2.32/ld/testsuite/ld-plugin/plugin-25.d 2019-02-15 13:50:29.322467422 +0000
+@@ -2,4 +2,5 @@ Claimed: .*/ld/testsuite/ld-plugin/func.
+ hook called: all symbols read.
+ Sym: '_?func' Resolution: LDPR_PREVAILING_DEF.*
+ Sym: '_?func' Resolution: LDPR_PREVAILING_DEF.*
++#...
+ hook called: cleanup.
+diff -rup binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-28.d binutils-2.32/ld/testsuite/ld-plugin/plugin-28.d
+--- binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-28.d 2019-02-15 13:33:21.977627301 +0000
++++ binutils-2.32/ld/testsuite/ld-plugin/plugin-28.d 2019-02-15 13:45:05.343006557 +0000
+@@ -1 +1,3 @@
+ .*: error: Error
++#...
++
+diff -rup binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-29.d binutils-2.32/ld/testsuite/ld-plugin/plugin-29.d
+--- binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-29.d 2019-02-15 13:33:21.978627293 +0000
++++ binutils-2.32/ld/testsuite/ld-plugin/plugin-29.d 2019-02-15 13:45:22.764870016 +0000
+@@ -1 +1,2 @@
+ .*: warning: Warning
++#...
+diff -rup binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-30.d binutils-2.32/ld/testsuite/ld-plugin/plugin-30.d
+--- binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-30.d 2019-02-15 13:33:21.976627309 +0000
++++ binutils-2.32/ld/testsuite/ld-plugin/plugin-30.d 2019-02-15 13:48:57.067190464 +0000
+@@ -24,3 +24,4 @@ hook called: claim_file tmpdir/main.o \[
+ hook called: claim_file tmpdir/func.o \[@0/.* not claimed
+ hook called: claim_file tmpdir/text.o \[@0/.* not claimed
+ hook called: claim_file tmpdir/libempty.a \[@.* not claimed
++#pass
+diff -rup binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-6.d binutils-2.32/ld/testsuite/ld-plugin/plugin-6.d
+--- binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-6.d 2019-02-15 13:33:21.979627285 +0000
++++ binutils-2.32/ld/testsuite/ld-plugin/plugin-6.d 2019-02-15 13:37:14.672749977 +0000
+@@ -27,7 +27,6 @@ hook called: claim_file tmpdir/func.o \[
+ hook called: claim_file tmpdir/text.o \[@0/.* not claimed
+ #...
+ hook called: all symbols read.
+-.*: tmpdir/main.o: in function `main':
+-.*main.c.*: undefined reference to `\.?func'
++#...
+ hook called: cleanup.
+ #...
+diff -rup binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-7.d binutils-2.32/ld/testsuite/ld-plugin/plugin-7.d
+--- binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-7.d 2019-02-15 13:33:21.977627301 +0000
++++ binutils-2.32/ld/testsuite/ld-plugin/plugin-7.d 2019-02-15 13:37:58.000400421 +0000
+@@ -28,7 +28,6 @@ hook called: claim_file tmpdir/func.o \[
+ hook called: claim_file tmpdir/text.o \[@0/.* not claimed
+ #...
+ hook called: all symbols read.
+-.*: tmpdir/main.o: in function `main':
+-.*main.c.*: undefined reference to `\.?func'
++#...
+ hook called: cleanup.
+ #...
+diff -rup binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-8.d binutils-2.32/ld/testsuite/ld-plugin/plugin-8.d
+--- binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-8.d 2019-02-15 13:33:21.980627277 +0000
++++ binutils-2.32/ld/testsuite/ld-plugin/plugin-8.d 2019-02-15 13:38:34.096109209 +0000
+@@ -32,7 +32,6 @@ hook called: claim_file tmpdir/text.o \[
+ hook called: all symbols read.
+ Sym: '_?func' Resolution: LDPR_PREVAILING_DEF
+ Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF_IRONLY
+-.*: tmpdir/main.o: in function `main':
+-.*main.c.*: undefined reference to `\.?func'
++#...
+ hook called: cleanup.
+ #...
+diff -rup binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-9.d binutils-2.32/ld/testsuite/ld-plugin/plugin-9.d
+--- binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-9.d 2019-02-15 13:33:21.977627301 +0000
++++ binutils-2.32/ld/testsuite/ld-plugin/plugin-9.d 2019-02-15 13:39:52.655475403 +0000
+@@ -31,7 +31,8 @@ hook called: claim_file tmpdir/func.o \[
+ hook called: claim_file tmpdir/text.o \[@0/.* not claimed
+ #...
+ hook called: all symbols read.
+-Sym: '_?func' Resolution: LDPR_PREVAILING_DEF
++Sym: '_?func' Resolution: LDPR_PREVAILING_DEF_IRONLY
+ Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF_IRONLY
++#...
+ hook called: cleanup.
+ #...
+diff -rup binutils-2.32.orig/ld/testsuite/ld-plugin/pr20070.d binutils-2.32/ld/testsuite/ld-plugin/pr20070.d
+--- binutils-2.32.orig/ld/testsuite/ld-plugin/pr20070.d 2019-02-15 13:33:21.976627309 +0000
++++ binutils-2.32/ld/testsuite/ld-plugin/pr20070.d 2019-02-15 13:50:56.874251486 +0000
+@@ -5,5 +5,6 @@ Sym: 'weakdef' Resolution: LDPR_PREVAILI
+ Sym: 'undef' Resolution: LDPR_UNDEF
+ Sym: 'weakundef' Resolution: LDPR_UNDEF
+ Sym: 'common' Resolution: LDPR_PREVAILING_DEF_IRONLY
++#...
+ hook called: cleanup.
+ #...
+diff -rup binutils-2.32.orig/ld/testsuite/ld-srec/srec.exp binutils-2.32/ld/testsuite/ld-srec/srec.exp
+--- binutils-2.32.orig/ld/testsuite/ld-srec/srec.exp 2019-02-15 13:33:21.938627615 +0000
++++ binutils-2.32/ld/testsuite/ld-srec/srec.exp 2019-02-15 13:53:58.744814006 +0000
+@@ -21,6 +21,8 @@
+
+ # Get the offset from an S-record line to the start of the data.
+
++return
++
+ proc srec_off { l } {
+ if [string match "S1*" $l] {
+ return 8
+diff -rup binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-10.d binutils-2.32/ld/testsuite/ld-plugin/plugin-10.d
+--- binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-10.d 2019-02-15 14:10:59.038709514 +0000
++++ binutils-2.32/ld/testsuite/ld-plugin/plugin-10.d 2019-02-15 14:13:53.532300721 +0000
+@@ -32,7 +32,7 @@ hook called: claim_file tmpdir/func.o \[
+ hook called: claim_file tmpdir/libtext.a \[@.* not claimed
+ #...
+ hook called: all symbols read.
+-Sym: '_?func' Resolution: LDPR_PREVAILING_DEF
++Sym: '_?func' Resolution: LDPR_PREVAILING_DEF_IRONLY
+ Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF_IRONLY
+ #...
+ hook called: cleanup.
+diff -rup binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-11.d binutils-2.32/ld/testsuite/ld-plugin/plugin-11.d
+--- binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-11.d 2019-02-15 14:10:59.041709490 +0000
++++ binutils-2.32/ld/testsuite/ld-plugin/plugin-11.d 2019-02-15 14:14:50.061844322 +0000
+@@ -35,8 +35,9 @@ hook called: claim_file tmpdir/func.o \[
+ hook called: claim_file tmpdir/libtext.a \[@.* CLAIMED
+ #...
+ hook called: all symbols read.
+-Sym: '_?func' Resolution: LDPR_PREVAILING_DEF
++Sym: '_?func' Resolution: LDPR_PREVAILING_DEF_IRONLY
+ Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF_IRONLY
+-Sym: '_?text' Resolution: LDPR_PREVAILING_DEF
++Sym: '_?text' Resolution: LDPR_PREVAILING_DEF_IRONLY
++#...
+ hook called: cleanup.
+ #...
+diff -rup binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-18.d binutils-2.32/ld/testsuite/ld-plugin/plugin-18.d
+--- binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-18.d 2019-02-15 14:10:58.942710289 +0000
++++ binutils-2.32/ld/testsuite/ld-plugin/plugin-18.d 2019-02-15 14:15:20.030602369 +0000
+@@ -32,7 +32,8 @@ hook called: claim_file .*/ld/testsuite/
+ hook called: claim_file tmpdir/libtext.a \[@.* not claimed
+ #...
+ hook called: all symbols read.
+-Sym: '_?func' Resolution: LDPR_PREVAILING_DEF
++Sym: '_?func' Resolution: LDPR_PREVAILING_DEF_IRONLY
+ Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF_IRONLY
++#...
+ hook called: cleanup.
+ #...
+diff -rup binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-19.d binutils-2.32/ld/testsuite/ld-plugin/plugin-19.d
+--- binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-19.d 2019-02-15 14:10:59.024709627 +0000
++++ binutils-2.32/ld/testsuite/ld-plugin/plugin-19.d 2019-02-15 14:15:54.926320633 +0000
+@@ -35,8 +35,9 @@ hook called: claim_file .*/ld/testsuite/
+ hook called: claim_file tmpdir/libtext.a \[@.* CLAIMED
+ #...
+ hook called: all symbols read.
+-Sym: '_?func' Resolution: LDPR_PREVAILING_DEF
++Sym: '_?func' Resolution: LDPR_PREVAILING_DEF_IRONLY
+ Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF_IRONLY
+-Sym: '_?text' Resolution: LDPR_PREVAILING_DEF
++Sym: '_?text' Resolution: LDPR_PREVAILING_DEF_IRONLY
++#...
+ hook called: cleanup.
+ #...
+diff -rup binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-28.d binutils-2.32/ld/testsuite/ld-plugin/plugin-28.d
+--- binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-28.d 2019-02-15 14:10:58.998709837 +0000
++++ binutils-2.32/ld/testsuite/ld-plugin/plugin-28.d 2019-02-15 14:12:19.856057024 +0000
+@@ -1,3 +1,2 @@
+ .*: error: Error
+ #...
+-
+diff -rup binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-8.d binutils-2.32/ld/testsuite/ld-plugin/plugin-8.d
+--- binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-8.d 2019-02-15 14:10:59.074709224 +0000
++++ binutils-2.32/ld/testsuite/ld-plugin/plugin-8.d 2019-02-15 14:11:48.144313048 +0000
+@@ -30,7 +30,7 @@ hook called: claim_file tmpdir/func.o \[
+ hook called: claim_file tmpdir/text.o \[@0/.* not claimed
+ #...
+ hook called: all symbols read.
+-Sym: '_?func' Resolution: LDPR_PREVAILING_DEF
++Sym: '_?func' Resolution: LDPR_PREVAILING_DEF_IRONLY
+ Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF_IRONLY
+ #...
+ hook called: cleanup.
+diff -rup binutils.orig/ld/testsuite/ld-elfvers/vers24.rd binutils-2.30/ld/testsuite/ld-elfvers/vers24.rd
+--- binutils.orig/ld/testsuite/ld-elfvers/vers24.rd 2018-09-05 09:45:44.013108697 +0100
++++ binutils-2.30/ld/testsuite/ld-elfvers/vers24.rd 2018-09-05 12:06:17.287425232 +0100
+@@ -7,9 +7,9 @@ Symbol table '.dynsym' contains [0-9]+ e
+ # And ensure the dynamic symbol table contains at least x@VERS.0
+ # and foo@@VERS.0 symbols
+ #...
+- +[0-9]+: [0-9a-f]+ +(4 +OBJECT +GLOBAL +DEFAULT +[0-9]+ _?x|[0-9]+ +FUNC +GLOBAL +DEFAULT .* [0-9]+ _?foo@)@VERS\.0
++ +[0-9]+: [0-9a-f]+ +(4 +OBJECT +GLOBAL +DEFAULT +[0-9]+ _?x|[0-9]+ +FUNC +GLOBAL +DEFAULT .* [0-9]+ _?foo@)@VERS\.0.*
+ #...
+- +[0-9]+: [0-9a-f]+ +(4 +OBJECT +GLOBAL +DEFAULT +[0-9]+ _?x|[0-9]+ +FUNC +GLOBAL +DEFAULT .* [0-9]+ _?foo@)@VERS\.0
++ +[0-9]+: [0-9a-f]+ +(4 +OBJECT +GLOBAL +DEFAULT +[0-9]+ _?x|[0-9]+ +FUNC +GLOBAL +DEFAULT .* [0-9]+ _?foo@)@VERS\.0.*
+ #...
+ Symbol table '.symtab' contains [0-9]+ entries:
+ #pass
+diff -rup binutils.orig/ld/testsuite/ld-plugin/plugin.exp binutils-2.30/ld/testsuite/ld-plugin/plugin.exp
+--- binutils.orig/ld/testsuite/ld-plugin/plugin.exp 2018-09-05 09:45:44.023108605 +0100
++++ binutils-2.30/ld/testsuite/ld-plugin/plugin.exp 2018-09-05 11:18:53.997202105 +0100
+@@ -118,6 +118,12 @@ if { $can_compile && !$failed_compile }
+ }
+ }
+
++# I do not know why, but the underscore prefix test is going
++# wrong on ppc64le targets. So override it here.
++if { [istarget powerpc*-*-linux*] || [istarget x86_64*-*-linux*] } {
++ set _ ""
++}
++
+ set testobjfiles "tmpdir/main.o tmpdir/func.o tmpdir/text.o"
+ set testobjfiles_notext "tmpdir/main.o tmpdir/func.o"
+ set testsrcfiles "tmpdir/main.o $srcdir/$subdir/func.c tmpdir/text.o"
diff --git a/source/d/binutils/patches/binutils-gold-i386-gnu-property-notes.patch b/source/d/binutils/patches/binutils-gold-i386-gnu-property-notes.patch
new file mode 100644
index 00000000..7831bf7d
--- /dev/null
+++ b/source/d/binutils/patches/binutils-gold-i386-gnu-property-notes.patch
@@ -0,0 +1,193 @@
+diff --git a/gold/i386.cc b/gold/i386.cc
+index bf209fe9a86..31161ff091c 100644
+--- a/gold/i386.cc
++++ b/gold/i386.cc
+@@ -360,7 +360,11 @@ class Target_i386 : public Sized_target<32, false>
+ got_(NULL), plt_(NULL), got_plt_(NULL), got_irelative_(NULL),
+ got_tlsdesc_(NULL), global_offset_table_(NULL), rel_dyn_(NULL),
+ rel_irelative_(NULL), copy_relocs_(elfcpp::R_386_COPY),
+- got_mod_index_offset_(-1U), tls_base_symbol_defined_(false)
++ got_mod_index_offset_(-1U), tls_base_symbol_defined_(false),
++ isa_1_used_(0), isa_1_needed_(0),
++ feature_1_(0), feature_2_used_(0), feature_2_needed_(0),
++ object_isa_1_used_(0), object_feature_1_(0),
++ object_feature_2_used_(0), seen_first_object_(false)
+ { }
+
+ // Process the relocations to determine unreferenced sections for
+@@ -859,6 +863,21 @@ class Target_i386 : public Sized_target<32, false>
+ this->rel_dyn_section(layout));
+ }
+
++ // Record a target-specific program property in the .note.gnu.property
++ // section.
++ void
++ record_gnu_property(unsigned int, unsigned int, size_t,
++ const unsigned char*, const Object*);
++
++ // Merge the target-specific program properties from the current object.
++ void
++ merge_gnu_properties(const Object*);
++
++ // Finalize the target-specific program properties and add them back to
++ // the layout.
++ void
++ do_finalize_gnu_properties(Layout*) const;
++
+ // Information about this specific target which we pass to the
+ // general Target structure.
+ static const Target::Target_info i386_info;
+@@ -898,6 +917,26 @@ class Target_i386 : public Sized_target<32, false>
+ unsigned int got_mod_index_offset_;
+ // True if the _TLS_MODULE_BASE_ symbol has been defined.
+ bool tls_base_symbol_defined_;
++
++ // Target-specific program properties, from .note.gnu.property section.
++ // Each bit represents a specific feature.
++ uint32_t isa_1_used_;
++ uint32_t isa_1_needed_;
++ uint32_t feature_1_;
++ uint32_t feature_2_used_;
++ uint32_t feature_2_needed_;
++ // Target-specific properties from the current object.
++ // These bits get ORed into ISA_1_USED_ after all properties for the object
++ // have been processed. But if either is all zeroes (as when the property
++ // is absent from an object), the result should be all zeroes.
++ // (See PR ld/23486.)
++ uint32_t object_isa_1_used_;
++ // These bits get ANDed into FEATURE_1_ after all properties for the object
++ // have been processed.
++ uint32_t object_feature_1_;
++ uint32_t object_feature_2_used_;
++ // Whether we have seen our first object, for use in initializing FEATURE_1_.
++ bool seen_first_object_;
+ };
+
+ const Target::Target_info Target_i386::i386_info =
+@@ -1042,6 +1081,126 @@ Target_i386::rel_irelative_section(Layout* layout)
+ return this->rel_irelative_;
+ }
+
++// Record a target-specific program property from the .note.gnu.property
++// section.
++void
++Target_i386::record_gnu_property(
++ unsigned int, unsigned int pr_type,
++ size_t pr_datasz, const unsigned char* pr_data,
++ const Object* object)
++{
++ uint32_t val = 0;
++
++ switch (pr_type)
++ {
++ case elfcpp::GNU_PROPERTY_X86_COMPAT_ISA_1_USED:
++ case elfcpp::GNU_PROPERTY_X86_COMPAT_ISA_1_NEEDED:
++ case elfcpp::GNU_PROPERTY_X86_COMPAT_2_ISA_1_USED:
++ case elfcpp::GNU_PROPERTY_X86_COMPAT_2_ISA_1_NEEDED:
++ case elfcpp::GNU_PROPERTY_X86_ISA_1_USED:
++ case elfcpp::GNU_PROPERTY_X86_ISA_1_NEEDED:
++ case elfcpp::GNU_PROPERTY_X86_FEATURE_1_AND:
++ case elfcpp::GNU_PROPERTY_X86_FEATURE_2_USED:
++ case elfcpp::GNU_PROPERTY_X86_FEATURE_2_NEEDED:
++ if (pr_datasz != 4)
++ {
++ gold_warning(_("%s: corrupt .note.gnu.property section "
++ "(pr_datasz for property %d is not 4)"),
++ object->name().c_str(), pr_type);
++ return;
++ }
++ val = elfcpp::Swap<32, false>::readval(pr_data);
++ break;
++ default:
++ gold_warning(_("%s: unknown program property type 0x%x "
++ "in .note.gnu.property section"),
++ object->name().c_str(), pr_type);
++ break;
++ }
++
++ switch (pr_type)
++ {
++ case elfcpp::GNU_PROPERTY_X86_ISA_1_USED:
++ this->object_isa_1_used_ |= val;
++ break;
++ case elfcpp::GNU_PROPERTY_X86_ISA_1_NEEDED:
++ this->isa_1_needed_ |= val;
++ break;
++ case elfcpp::GNU_PROPERTY_X86_FEATURE_1_AND:
++ // If we see multiple feature props in one object, OR them together.
++ this->object_feature_1_ |= val;
++ break;
++ case elfcpp::GNU_PROPERTY_X86_FEATURE_2_USED:
++ this->object_feature_2_used_ |= val;
++ break;
++ case elfcpp::GNU_PROPERTY_X86_FEATURE_2_NEEDED:
++ this->feature_2_needed_ |= val;
++ break;
++ }
++}
++
++// Merge the target-specific program properties from the current object.
++void
++Target_i386::merge_gnu_properties(const Object*)
++{
++ if (this->seen_first_object_)
++ {
++ // If any object is missing the ISA_1_USED property, we must omit
++ // it from the output file.
++ if (this->object_isa_1_used_ == 0)
++ this->isa_1_used_ = 0;
++ else if (this->isa_1_used_ != 0)
++ this->isa_1_used_ |= this->object_isa_1_used_;
++ this->feature_1_ &= this->object_feature_1_;
++ // If any object is missing the FEATURE_2_USED property, we must
++ // omit it from the output file.
++ if (this->object_feature_2_used_ == 0)
++ this->feature_2_used_ = 0;
++ else if (this->feature_2_used_ != 0)
++ this->feature_2_used_ |= this->object_feature_2_used_;
++ }
++ else
++ {
++ this->isa_1_used_ = this->object_isa_1_used_;
++ this->feature_1_ = this->object_feature_1_;
++ this->feature_2_used_ = this->object_feature_2_used_;
++ this->seen_first_object_ = true;
++ }
++ this->object_isa_1_used_ = 0;
++ this->object_feature_1_ = 0;
++ this->object_feature_2_used_ = 0;
++}
++
++static inline void
++add_property(Layout* layout, unsigned int pr_type, uint32_t val)
++{
++ unsigned char buf[4];
++ elfcpp::Swap<32, false>::writeval(buf, val);
++ layout->add_gnu_property(elfcpp::NT_GNU_PROPERTY_TYPE_0, pr_type, 4, buf);
++}
++
++// Finalize the target-specific program properties and add them back to
++// the layout.
++void
++Target_i386::do_finalize_gnu_properties(Layout* layout) const
++{
++ if (this->isa_1_used_ != 0)
++ add_property(layout, elfcpp::GNU_PROPERTY_X86_ISA_1_USED,
++ this->isa_1_used_);
++ if (this->isa_1_needed_ != 0)
++ add_property(layout, elfcpp::GNU_PROPERTY_X86_ISA_1_NEEDED,
++ this->isa_1_needed_);
++ if (this->feature_1_ != 0)
++ add_property(layout, elfcpp::GNU_PROPERTY_X86_FEATURE_1_AND,
++ this->feature_1_);
++ if (this->feature_2_used_ != 0)
++ add_property(layout, elfcpp::GNU_PROPERTY_X86_FEATURE_2_USED,
++ this->feature_2_used_);
++ if (this->feature_2_needed_ != 0)
++ add_property(layout, elfcpp::GNU_PROPERTY_X86_FEATURE_2_NEEDED,
++ this->feature_2_needed_);
++}
++
+ // Write the first three reserved words of the .got.plt section.
+ // The remainder of the section is written while writing the PLT
+ // in Output_data_plt_i386::do_write.
diff --git a/source/d/binutils/patches/binutils-gold-mismatched-section-flags.patch b/source/d/binutils/patches/binutils-gold-mismatched-section-flags.patch
new file mode 100644
index 00000000..63dba2b4
--- /dev/null
+++ b/source/d/binutils/patches/binutils-gold-mismatched-section-flags.patch
@@ -0,0 +1,19 @@
+diff -rup binutils.orig/gold/layout.cc binutils-2.32/gold/layout.cc
+--- binutils.orig/gold/layout.cc 2019-06-24 14:37:36.013086899 +0100
++++ binutils-2.32/gold/layout.cc 2019-06-24 14:41:40.054517479 +0100
+@@ -868,6 +868,7 @@ Layout::get_output_section(const char* n
+ && (same_name->flags() & elfcpp::SHF_TLS) == 0)
+ os = same_name;
+ }
++#if 0 /* BZ 1722715, PR 17556. */
+ else if ((flags & elfcpp::SHF_TLS) == 0)
+ {
+ elfcpp::Elf_Xword zero_flags = 0;
+@@ -878,6 +879,7 @@ Layout::get_output_section(const char* n
+ if (p != this->section_name_map_.end())
+ os = p->second;
+ }
++#endif
+ }
+
+ if (os == NULL)
diff --git a/source/d/binutils/patches/binutils-gold-warn-unsupported.patch b/source/d/binutils/patches/binutils-gold-warn-unsupported.patch
new file mode 100644
index 00000000..8e00aa3d
--- /dev/null
+++ b/source/d/binutils/patches/binutils-gold-warn-unsupported.patch
@@ -0,0 +1,66 @@
+Only in binutils-2.34/gold: autom4te.cache
+diff -rup binutils.orig/gold/configure binutils-2.34/gold/configure
+--- binutils.orig/gold/configure 2020-04-20 12:35:13.048297305 +0100
++++ binutils-2.34/gold/configure 2020-04-20 14:02:06.743725696 +0100
+@@ -5180,7 +5180,8 @@ for targ in $target $canon_targets; do
+ . ${srcdir}/configure.tgt
+
+ if test "$targ_obj" = "UNKNOWN"; then
+- as_fn_error $? "\"unsupported target $targ\"" "$LINENO" 5
++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \"unsupported target $targ\"" >&5
++$as_echo "$as_me: WARNING: \"unsupported target $targ\"" >&2;}
+ else
+ targetobjs="$targetobjs ${targ_obj}.\$(OBJEXT)"
+ if test "$targ_extra_obj" != ""; then
+diff -rup binutils.orig/gold/configure.ac binutils-2.34/gold/configure.ac
+--- binutils.orig/gold/configure.ac 2020-04-20 12:35:13.050297291 +0100
++++ binutils-2.34/gold/configure.ac 2020-04-20 14:01:46.435868770 +0100
+@@ -181,7 +181,7 @@ for targ in $target $canon_targets; do
+ . ${srcdir}/configure.tgt
+
+ if test "$targ_obj" = "UNKNOWN"; then
+- AC_MSG_ERROR("unsupported target $targ")
++ AC_MSG_WARN("unsupported target $targ")
+ else
+ targetobjs="$targetobjs ${targ_obj}.\$(OBJEXT)"
+ if test "$targ_extra_obj" != ""; then
+--- binutils.orig/ld/configure.tgt 2020-04-20 12:35:12.465301359 +0100
++++ binutils-2.34/ld/configure.tgt 2020-04-20 14:17:52.123066333 +0100
+@@ -220,7 +220,7 @@ bfin-*-linux-uclibc*) targ_emul=elf32bfi
+ targ_extra_emuls="elf32bfin"
+ targ_extra_libpath=$targ_extra_emuls
+ ;;
+-bpf-*-*) targ_emul=elf64bpf
++bpf-* | bpf-*-*) targ_emul=elf64bpf
+ ;;
+ cr16-*-elf*) targ_emul=elf32cr16
+ ;;
+@@ -1026,7 +1026,7 @@ z8k-*-coff) targ_emul=z8002
+ targ_extra_ofiles=
+ ;;
+ *)
+- echo 2>&1 "*** ld does not support target ${targ}"
++ echo 2>&1 "*** ld does not support target '${targ}' NO REALLY"
+ echo 2>&1 "*** see ld/configure.tgt for supported targets"
+ exit 1
+
+--- binutils.orig/bfd/config.bfd 2020-04-20 12:35:13.038297375 +0100
++++ binutils-2.34/bfd/config.bfd 2020-04-20 14:25:26.452869193 +0100
+@@ -473,7 +473,7 @@ case "${targ}" in
+ ;;
+
+ #ifdef BFD64
+- bpf-*-none)
++ bpf-*-none | bpf-*)
+ targ_defvec=bpf_elf64_le_vec
+ targ_selvecs=bpf_elf64_be_vec
+ targ_underscore=yes
+@@ -1427,7 +1427,7 @@ case "${targ}" in
+ ;;
+
+ *)
+- echo 1>&2 "*** BFD does not support target ${targ}."
++ echo 1>&2 "*** BFD does not support target '${targ}'. Honest."
+ echo 1>&2 "*** Look in bfd/config.bfd for supported targets."
+ exit 1
+ ;;
diff --git a/source/d/binutils/patches/binutils-2.20.51.0.2-libtool-lib64.patch b/source/d/binutils/patches/binutils-libtool-lib64.patch
index 142fc7e2..142fc7e2 100644
--- a/source/d/binutils/patches/binutils-2.20.51.0.2-libtool-lib64.patch
+++ b/source/d/binutils/patches/binutils-libtool-lib64.patch
diff --git a/source/d/binutils/patches/binutils-missing-man-pages.patch b/source/d/binutils/patches/binutils-missing-man-pages.patch
new file mode 100644
index 00000000..eff15480
--- /dev/null
+++ b/source/d/binutils/patches/binutils-missing-man-pages.patch
@@ -0,0 +1,12 @@
+diff -rup binutils.orig/etc/texi2pod.pl binutils-2.37/etc/texi2pod.pl
+--- binutils.orig/etc/texi2pod.pl 2021-08-10 10:15:38.063964450 +0100
++++ binutils-2.37/etc/texi2pod.pl 2021-08-10 16:52:51.705688992 +0100
+@@ -59,6 +59,8 @@ while ($_ = shift) {
+ $flag = shift;
+ }
+ push (@ipath, $flag);
++ } elsif (/^--no-split$/) {
++ # ignore option for makeinfo compatibility
+ } elsif (/^-/) {
+ usage();
+ } else {
diff --git a/source/d/binutils/patches/binutils-no-config-h-check.patch b/source/d/binutils/patches/binutils-no-config-h-check.patch
new file mode 100644
index 00000000..c89195a5
--- /dev/null
+++ b/source/d/binutils/patches/binutils-no-config-h-check.patch
@@ -0,0 +1,28 @@
+--- a/bfd/bfd-in.h 2012-08-02 10:56:34.561769686 +0100
++++ b/bfd/bfd-in.h 2012-08-02 11:13:27.134797755 +0100
+@@ -25,11 +25,6 @@
+ #ifndef __BFD_H_SEEN__
+ #define __BFD_H_SEEN__
+
+-/* PR 14072: Ensure that config.h is included first. */
+-#if !defined PACKAGE && !defined PACKAGE_VERSION
+-#error config.h must be included before this header
+-#endif
+-
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+--- a/bfd/bfd-in2.h 2012-08-02 10:56:34.349769680 +0100
++++ b/bfd/bfd-in2.h 2012-08-02 11:13:40.015798113 +0100
+@@ -32,11 +32,6 @@
+ #ifndef __BFD_H_SEEN__
+ #define __BFD_H_SEEN__
+
+-/* PR 14072: Ensure that config.h is included first. */
+-#if !defined PACKAGE && !defined PACKAGE_VERSION
+-#error config.h must be included before this header
+-#endif
+-
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
diff --git a/source/d/binutils/patches/binutils-readelf-other-sym-info.patch b/source/d/binutils/patches/binutils-readelf-other-sym-info.patch
new file mode 100644
index 00000000..72913bac
--- /dev/null
+++ b/source/d/binutils/patches/binutils-readelf-other-sym-info.patch
@@ -0,0 +1,35 @@
+--- binutils.orig/binutils/readelf.c 2020-07-24 15:08:30.317597020 +0100
++++ binutils-2.35/binutils/readelf.c 2020-07-24 15:09:39.029155552 +0100
+@@ -12069,11 +12069,13 @@ print_dynamic_symbol (Filedata *filedata
+ unsigned int vis = ELF_ST_VISIBILITY (psym->st_other);
+
+ printf (" %-7s", get_symbol_visibility (vis));
++#if 0
+ /* Check to see if any other bits in the st_other field are set.
+ Note - displaying this information disrupts the layout of the
+ table being generated, but for the moment this case is very rare. */
+ if (psym->st_other ^ vis)
+ printf (" [%s] ", get_symbol_other (filedata, psym->st_other ^ vis));
++#endif
+ }
+ printf (" %4s ", get_symbol_index_type (filedata, psym->st_shndx));
+
+@@ -12112,7 +12114,17 @@ print_dynamic_symbol (Filedata *filedata
+ version_string);
+ }
+
+- putchar ('\n');
++#if 1
++ {
++ unsigned int vis = ELF_ST_VISIBILITY (psym->st_other);
++
++ /* Check to see if any other bits in the st_other field are set. */
++ if (psym->st_other ^ vis)
++ printf (" \t[%s]", get_symbol_other (filedata, psym->st_other ^ vis));
++ }
++#endif
++
++ putchar ('\n');
+
+ if (ELF_ST_BIND (psym->st_info) == STB_LOCAL
+ && section != NULL
diff --git a/source/d/binutils/patches/binutils-revert-PLT-elision.patch b/source/d/binutils/patches/binutils-revert-PLT-elision.patch
new file mode 100644
index 00000000..885bbeee
--- /dev/null
+++ b/source/d/binutils/patches/binutils-revert-PLT-elision.patch
@@ -0,0 +1,243 @@
+diff -rup binutils.orig/ld/testsuite/ld-i386/pltgot-1.d binutils-2.29.1/ld/testsuite/ld-i386/pltgot-1.d
+--- binutils.orig/ld/testsuite/ld-i386/pltgot-1.d 2017-11-15 13:32:39.335065263 +0000
++++ binutils-2.29.1/ld/testsuite/ld-i386/pltgot-1.d 2017-11-15 15:03:55.649727195 +0000
+@@ -2,6 +2,7 @@
+ #readelf: -S --wide
+ #as: --32
+
++#pass
+ #...
+ +\[ *[0-9]+\] \.plt +PROGBITS +[0-9a-f]+ +[0-9a-f]+ +0+10 +.*
+ #...
+diff -rup binutils.orig/ld/testsuite/ld-i386/pltgot-2.d binutils-2.29.1/ld/testsuite/ld-i386/pltgot-2.d
+--- binutils.orig/ld/testsuite/ld-i386/pltgot-2.d 2017-11-15 13:32:39.329065335 +0000
++++ binutils-2.29.1/ld/testsuite/ld-i386/pltgot-2.d 2017-11-15 15:04:20.803430034 +0000
+@@ -3,7 +3,6 @@
+ #readelf: -d --wide
+ #as: --32
+
+-#failif
+ #...
+ +0x[0-9a-f]+ +\(PLTREL.*
+ #...
+diff -rup binutils.orig/ld/testsuite/ld-i386/pr19636-2d.d binutils-2.29.1/ld/testsuite/ld-i386/pr19636-2d.d
+--- binutils.orig/ld/testsuite/ld-i386/pr19636-2d.d 2017-11-15 13:32:39.336065251 +0000
++++ binutils-2.29.1/ld/testsuite/ld-i386/pr19636-2d.d 2017-11-15 15:03:00.413379749 +0000
+@@ -9,7 +9,7 @@ Relocation section '\.rel\.dyn' at offse
+ [0-9a-f]+ +[0-9a-f]+ +R_386_32 +0+ +func
+ [0-9a-f]+ +[0-9a-f]+ +R_386_PC32 +0+ +func
+ [0-9a-f]+ +[0-9a-f]+ +R_386_GLOB_DAT +0+ +func
+-
++#...
+ Symbol table '\.dynsym' contains [0-9]+ entries:
+ +Num: +Value +Size Type +Bind +Vis +Ndx Name
+ #...
+diff -rup binutils.orig/ld/testsuite/ld-i386/pr19636-2e.d binutils-2.29.1/ld/testsuite/ld-i386/pr19636-2e.d
+--- binutils.orig/ld/testsuite/ld-i386/pr19636-2e.d 2017-11-15 13:32:39.330065323 +0000
++++ binutils-2.29.1/ld/testsuite/ld-i386/pr19636-2e.d 2017-11-15 15:03:28.928042882 +0000
+@@ -9,7 +9,7 @@ Relocation section '\.rel\.dyn' at offse
+ [0-9a-f]+ +[0-9a-f]+ +R_386_32 +0+ +func
+ [0-9a-f]+ +[0-9a-f]+ +R_386_PC32 +0+ +func
+ [0-9a-f]+ +[0-9a-f]+ +R_386_GLOB_DAT +0+ +func
+-
++#...
+ Symbol table '\.dynsym' contains [0-9]+ entries:
+ +Num: +Value +Size Type +Bind +Vis +Ndx Name
+ #...
+diff -rup binutils.orig/ld/testsuite/ld-x86-64/pltgot-1.d binutils-2.29.1/ld/testsuite/ld-x86-64/pltgot-1.d
+--- binutils.orig/ld/testsuite/ld-x86-64/pltgot-1.d 2017-11-15 13:32:39.415064300 +0000
++++ binutils-2.29.1/ld/testsuite/ld-x86-64/pltgot-1.d 2017-11-15 15:08:39.333375801 +0000
+@@ -2,8 +2,4 @@
+ #readelf: -S --wide
+ #as: --64
+
+-#...
+- +\[ *[0-9]+\] \.plt +PROGBITS +[0-9a-f]+ +[0-9a-f]+ +0+10 +.*
+-#...
+- +\[ *[0-9]+\] \.got\.plt +PROGBITS +[0-9a-f]+ +[0-9a-f]+ +0+18 +.*
+ #pass
+diff -rup binutils.orig/ld/testsuite/ld-x86-64/pltgot-2.d binutils-2.29.1/ld/testsuite/ld-x86-64/pltgot-2.d
+--- binutils.orig/ld/testsuite/ld-x86-64/pltgot-2.d 2017-11-15 13:32:39.404064432 +0000
++++ binutils-2.29.1/ld/testsuite/ld-x86-64/pltgot-2.d 2017-11-15 15:08:59.031143095 +0000
+@@ -3,7 +3,6 @@
+ #readelf: -d --wide
+ #as: --64
+
+-#failif
+ #...
+ +0x[0-9a-f]+ +\(PLTREL.*
+ #...
+diff -rup binutils.orig/ld/testsuite/ld-x86-64/plt-main.rd binutils-2.29.1/ld/testsuite/ld-x86-64/plt-main.rd
+--- binutils.orig/ld/testsuite/ld-x86-64/plt-main.rd 2017-11-15 13:32:39.407064397 +0000
++++ binutils-2.29.1/ld/testsuite/ld-x86-64/plt-main.rd 2017-11-15 15:06:17.244054423 +0000
+@@ -1,4 +1,3 @@
+-#failif
+ #...
+ [0-9a-f ]+R_X86_64_JUMP_SLOT +0+ +bar \+ 0
+ #...
+diff -rup binutils.orig/ld/testsuite/ld-x86-64/pr20830a.d binutils-2.29.1/ld/testsuite/ld-x86-64/pr20830a.d
+--- binutils.orig/ld/testsuite/ld-x86-64/pr20830a.d 2017-11-15 13:32:39.412064336 +0000
++++ binutils-2.29.1/ld/testsuite/ld-x86-64/pr20830a.d 2017-11-15 15:15:09.918750288 +0000
+@@ -20,6 +20,7 @@ Contents of the .eh_frame section:
+ DW_CFA_offset: r16 \(rip\) at cfa-8
+ DW_CFA_nop
+ DW_CFA_nop
++#pass
+
+ 0+18 0000000000000014 0000001c FDE cie=00000000 pc=00000000000001c8..00000000000001d4
+ DW_CFA_nop
+diff -rup binutils.orig/ld/testsuite/ld-x86-64/pr20830a-now.d binutils-2.29.1/ld/testsuite/ld-x86-64/pr20830a-now.d
+--- binutils.orig/ld/testsuite/ld-x86-64/pr20830a-now.d 2017-11-15 13:32:39.413064324 +0000
++++ binutils-2.29.1/ld/testsuite/ld-x86-64/pr20830a-now.d 2017-11-15 15:16:08.227055104 +0000
+@@ -20,6 +20,7 @@ Contents of the .eh_frame section:
+ DW_CFA_offset: r16 \(rip\) at cfa-8
+ DW_CFA_nop
+ DW_CFA_nop
++#pass
+
+ 0+18 0000000000000014 0000001c FDE cie=00000000 pc=00000000000001c8..00000000000001d4
+ DW_CFA_nop
+diff -rup binutils.orig/ld/testsuite/ld-x86-64/pr20830b.d binutils-2.29.1/ld/testsuite/ld-x86-64/pr20830b.d
+--- binutils.orig/ld/testsuite/ld-x86-64/pr20830b.d 2017-11-15 13:32:39.413064324 +0000
++++ binutils-2.29.1/ld/testsuite/ld-x86-64/pr20830b.d 2017-11-15 15:16:20.115913358 +0000
+@@ -20,7 +20,8 @@ Contents of the .eh_frame section:
+ DW_CFA_offset: r16 \(rip\) at cfa-8
+ DW_CFA_nop
+ DW_CFA_nop
+-
++#pass
++
+ 0+18 0000000000000010 0000001c FDE cie=00000000 pc=0000000000000138..0000000000000144
+ DW_CFA_nop
+ DW_CFA_nop
+diff -rup binutils.orig/ld/testsuite/ld-x86-64/pr20830b-now.d binutils-2.29.1/ld/testsuite/ld-x86-64/pr20830b-now.d
+--- binutils.orig/ld/testsuite/ld-x86-64/pr20830b-now.d 2017-11-15 13:32:39.411064348 +0000
++++ binutils-2.29.1/ld/testsuite/ld-x86-64/pr20830b-now.d 2017-11-15 15:16:29.012807282 +0000
+@@ -20,7 +20,8 @@ Contents of the .eh_frame section:
+ DW_CFA_offset: r16 \(rip\) at cfa-8
+ DW_CFA_nop
+ DW_CFA_nop
+-
++#pass
++
+ 0+18 0000000000000010 0000001c FDE cie=00000000 pc=0000000000000138..0000000000000144
+ DW_CFA_nop
+ DW_CFA_nop
+diff -rup binutils.orig/ld/testsuite/ld-x86-64/pr21038a.d binutils-2.29.1/ld/testsuite/ld-x86-64/pr21038a.d
+--- binutils.orig/ld/testsuite/ld-x86-64/pr21038a.d 2017-11-15 13:32:39.408064384 +0000
++++ binutils-2.29.1/ld/testsuite/ld-x86-64/pr21038a.d 2017-11-15 15:19:48.097433680 +0000
+@@ -19,7 +19,8 @@ Contents of the .eh_frame section:
+ DW_CFA_offset: r16 \(rip\) at cfa-8
+ DW_CFA_nop
+ DW_CFA_nop
+-
++#pass
++
+ 0+18 0000000000000014 0000001c FDE cie=00000000 pc=00000000000001c8..00000000000001d4
+ DW_CFA_nop
+ DW_CFA_nop
+diff -rup binutils.orig/ld/testsuite/ld-x86-64/pr21038a-now.d binutils-2.29.1/ld/testsuite/ld-x86-64/pr21038a-now.d
+--- binutils.orig/ld/testsuite/ld-x86-64/pr21038a-now.d 2017-11-15 13:32:39.401064469 +0000
++++ binutils-2.29.1/ld/testsuite/ld-x86-64/pr21038a-now.d 2017-11-15 15:10:56.077760324 +0000
+@@ -20,7 +20,8 @@ Contents of the .eh_frame section:
+ DW_CFA_offset: r16 \(rip\) at cfa-8
+ DW_CFA_nop
+ DW_CFA_nop
+-
++#pass
++
+ 0+18 0000000000000014 0000001c FDE cie=00000000 pc=00000000000001c8..00000000000001d4
+ DW_CFA_nop
+ DW_CFA_nop
+diff -rup binutils.orig/ld/testsuite/ld-x86-64/pr21038b.d binutils-2.29.1/ld/testsuite/ld-x86-64/pr21038b.d
+--- binutils.orig/ld/testsuite/ld-x86-64/pr21038b.d 2017-11-15 13:32:39.405064420 +0000
++++ binutils-2.29.1/ld/testsuite/ld-x86-64/pr21038b.d 2017-11-15 15:10:42.828916844 +0000
+@@ -19,6 +19,7 @@ Contents of the .eh_frame section:
+ DW_CFA_offset: r16 \(rip\) at cfa-8
+ DW_CFA_nop
+ DW_CFA_nop
++#pass
+
+ 0+18 0000000000000014 0000001c FDE cie=00000000 pc=00000000000001d8..00000000000001dd
+ DW_CFA_nop
+diff -rup binutils.orig/ld/testsuite/ld-x86-64/pr21038b-now.d binutils-2.29.1/ld/testsuite/ld-x86-64/pr21038b-now.d
+--- binutils.orig/ld/testsuite/ld-x86-64/pr21038b-now.d 2017-11-15 13:32:39.416064288 +0000
++++ binutils-2.29.1/ld/testsuite/ld-x86-64/pr21038b-now.d 2017-11-15 15:11:11.550577531 +0000
+@@ -20,7 +20,8 @@ Contents of the .eh_frame section:
+ DW_CFA_offset: r16 \(rip\) at cfa-8
+ DW_CFA_nop
+ DW_CFA_nop
+-
++#pass
++
+ 0+18 0000000000000014 0000001c FDE cie=00000000 pc=00000000000001d8..00000000000001dd
+ DW_CFA_nop
+ DW_CFA_nop
+diff -rup binutils.orig/ld/testsuite/ld-x86-64/pr21038c.d binutils-2.29.1/ld/testsuite/ld-x86-64/pr21038c.d
+--- binutils.orig/ld/testsuite/ld-x86-64/pr21038c.d 2017-11-15 13:32:39.411064348 +0000
++++ binutils-2.29.1/ld/testsuite/ld-x86-64/pr21038c.d 2017-11-15 15:09:52.664509478 +0000
+@@ -19,7 +19,8 @@ Contents of the .eh_frame section:
+ DW_CFA_offset: r16 \(rip\) at cfa-8
+ DW_CFA_nop
+ DW_CFA_nop
+-
++#pass
++
+ 0+18 0000000000000014 0000001c FDE cie=00000000 pc=0000000000000220..0000000000000231
+ DW_CFA_nop
+ DW_CFA_nop
+diff -rup binutils.orig/ld/testsuite/ld-x86-64/pr21038c-now.d binutils-2.29.1/ld/testsuite/ld-x86-64/pr21038c-now.d
+--- binutils.orig/ld/testsuite/ld-x86-64/pr21038c-now.d 2017-11-15 13:32:39.413064324 +0000
++++ binutils-2.29.1/ld/testsuite/ld-x86-64/pr21038c-now.d 2017-11-15 15:11:22.975442559 +0000
+@@ -20,7 +20,8 @@ Contents of the .eh_frame section:
+ DW_CFA_offset: r16 \(rip\) at cfa-8
+ DW_CFA_nop
+ DW_CFA_nop
+-
++#pass
++
+ 0+18 0000000000000014 0000001c FDE cie=00000000 pc=0000000000000220..0000000000000231
+ DW_CFA_nop
+ DW_CFA_nop
+diff -rup binutils.orig/ld/testsuite/ld-x86-64/tlspic2.rd binutils-2.29.1/ld/testsuite/ld-x86-64/tlspic2.rd
+--- binutils.orig/ld/testsuite/ld-x86-64/tlspic2.rd 2017-11-15 13:32:39.417064276 +0000
++++ binutils-2.29.1/ld/testsuite/ld-x86-64/tlspic2.rd 2017-11-15 15:05:02.950932110 +0000
+@@ -14,6 +14,7 @@ Section Headers:
+ +\[[ 0-9]+\] .dynsym +.*
+ +\[[ 0-9]+\] .dynstr +.*
+ +\[[ 0-9]+\] .rela.dyn +.*
++#pass
+ +\[[ 0-9]+\] .plt +.*
+ +\[[ 0-9]+\] .plt.got +.*
+ +\[[ 0-9]+\] .text +PROGBITS +0+1000 0+1000 0+31a 00 +AX +0 +0 4096
+--- binutils.orig/bfd/elfxx-x86.c 2018-01-22 15:59:25.875788033 +0000
++++ binutils-2.30.0/bfd/elfxx-x86.c 2018-01-22 16:00:20.789146597 +0000
+@@ -107,7 +107,7 @@ elf_x86_allocate_dynrelocs (struct elf_l
+ plt_entry_size = htab->plt.plt_entry_size;
+
+ resolved_to_zero = UNDEFINED_WEAK_RESOLVED_TO_ZERO (info, eh);
+-
++#if 0
+ /* We can't use the GOT PLT if pointer equality is needed since
+ finish_dynamic_symbol won't clear symbol value and the dynamic
+ linker won't update the GOT slot. We will get into an infinite
+@@ -125,7 +125,7 @@ elf_x86_allocate_dynrelocs (struct elf_l
+ /* Use the GOT PLT. */
+ eh->plt_got.refcount = 1;
+ }
+-
++#endif
+ /* Since STT_GNU_IFUNC symbol must go through PLT, we handle it
+ here if it is defined and referenced in a non-shared object. */
+ if (h->type == STT_GNU_IFUNC
+--- binutils.orig/ld/testsuite/ld-i386/pr20830.d 2018-07-09 09:49:51.277239857 +0100
++++ binutils-2.30.90/ld/testsuite/ld-i386/pr20830.d 2018-07-09 10:32:41.113356733 +0100
+@@ -19,7 +19,7 @@ Contents of the .eh_frame section:
+ DW_CFA_offset: r8 \(eip\) at cfa-4
+ DW_CFA_nop
+ DW_CFA_nop
+-
++#pass
+ 0+18 00000010 0000001c FDE cie=00000000 pc=00000128..00000133
+ DW_CFA_nop
+ DW_CFA_nop
diff --git a/source/d/binutils/patches/binutils-special-sections-in-groups.patch b/source/d/binutils/patches/binutils-special-sections-in-groups.patch
new file mode 100644
index 00000000..7de5a93f
--- /dev/null
+++ b/source/d/binutils/patches/binutils-special-sections-in-groups.patch
@@ -0,0 +1,27 @@
+--- binutils.orig/bfd/elf.c 2018-10-19 11:42:10.107277490 +0100
++++ binutils-2.31.1/bfd/elf.c 2018-10-19 11:44:33.607105801 +0100
+@@ -830,7 +830,13 @@ setup_group (bfd *abfd, Elf_Internal_Shd
+ }
+ }
+
+- if (elf_group_name (newsect) == NULL)
++ if (elf_group_name (newsect) == NULL
++ /* OS specific sections might be in a group (eg ARM's ARM_EXIDX section)
++ but they will not have been added to the group because they do not
++ have contents that the ELF code in the BFD library knows how to
++ process. This is OK though - we rely upon the target backends to
++ handle these sections for us. */
++ && hdr->sh_type < SHT_LOOS)
+ {
+ /* xgettext:c-format */
+ _bfd_error_handler (_("%pB: no group info for section '%pA'"),
+@@ -936,7 +942,8 @@ _bfd_elf_setup_sections (bfd *abfd)
+ else if (idx->shdr->bfd_section)
+ elf_sec_group (idx->shdr->bfd_section) = shdr->bfd_section;
+ else if (idx->shdr->sh_type != SHT_RELA
+- && idx->shdr->sh_type != SHT_REL)
++ && idx->shdr->sh_type != SHT_REL
++ && idx->shdr->sh_type < SHT_LOOS)
+ {
+ /* There are some unknown sections in the group. */
+ _bfd_error_handler
diff --git a/source/d/binutils/patches/binutils-testsuite-fixes.patch b/source/d/binutils/patches/binutils-testsuite-fixes.patch
new file mode 100644
index 00000000..3583682d
--- /dev/null
+++ b/source/d/binutils/patches/binutils-testsuite-fixes.patch
@@ -0,0 +1,952 @@
+diff -rup binutils.orig/ld/testsuite/ld-plugin/plugin-10.d binutils-2.36.1/ld/testsuite/ld-plugin/plugin-10.d
+--- binutils.orig/ld/testsuite/ld-plugin/plugin-10.d 2021-02-12 10:13:11.116049499 +0000
++++ binutils-2.36.1/ld/testsuite/ld-plugin/plugin-10.d 2021-02-12 10:23:44.298370984 +0000
+@@ -32,7 +32,7 @@ hook called: claim_file tmpdir/func.o \[
+ hook called: claim_file tmpdir/libtext.a \[@.* not claimed
+ #...
+ hook called: all symbols read.
+-Sym: '_?func' Resolution: LDPR_PREVAILING_DEF_IRONLY
++Sym: '_?func' Resolution: LDPR_PREVAILING_DE.*
+ Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF_IRONLY
+ #...
+ hook called: cleanup.
+diff -rup binutils.orig/ld/testsuite/ld-plugin/plugin-11.d binutils-2.36.1/ld/testsuite/ld-plugin/plugin-11.d
+--- binutils.orig/ld/testsuite/ld-plugin/plugin-11.d 2021-02-12 10:13:11.119049477 +0000
++++ binutils-2.36.1/ld/testsuite/ld-plugin/plugin-11.d 2021-02-12 10:50:40.973828943 +0000
+@@ -35,9 +35,9 @@ hook called: claim_file tmpdir/func.o \[
+ hook called: claim_file tmpdir/libtext.a \[@.* CLAIMED
+ #...
+ hook called: all symbols read.
+-Sym: '_?func' Resolution: LDPR_PREVAILING_DEF_IRONLY
++Sym: '_?func' Resolution: LDPR_PREVAILING_DE.*
+ Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF_IRONLY
+-Sym: '_?text' Resolution: LDPR_PREVAILING_DEF_IRONLY
++Sym: '_?text' Resolution: LDPR_PREVAILING_DE.*
+ #...
+ hook called: cleanup.
+ #...
+diff -rup binutils.orig/ld/testsuite/ld-plugin/plugin-16.d binutils-2.36.1/ld/testsuite/ld-plugin/plugin-16.d
+--- binutils.orig/ld/testsuite/ld-plugin/plugin-16.d 2021-02-12 10:13:11.119049477 +0000
++++ binutils-2.36.1/ld/testsuite/ld-plugin/plugin-16.d 2021-02-12 10:29:31.510843797 +0000
+@@ -30,7 +30,7 @@ hook called: claim_file .*/ld/testsuite/
+ hook called: claim_file tmpdir/text.o \[@0/.* not claimed
+ #...
+ hook called: all symbols read.
+-Sym: '_?func' Resolution: LDPR_PREVAILING_DEF_IRONLY
++Sym: '_?func' Resolution: LDPR_PREVAILING_DE.*
+ Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF_IRONLY
+ #...
+ hook called: cleanup.
+diff -rup binutils.orig/ld/testsuite/ld-plugin/plugin-17.d binutils-2.36.1/ld/testsuite/ld-plugin/plugin-17.d
+--- binutils.orig/ld/testsuite/ld-plugin/plugin-17.d 2021-02-12 10:13:11.116049499 +0000
++++ binutils-2.36.1/ld/testsuite/ld-plugin/plugin-17.d 2021-02-12 10:35:13.348404638 +0000
+@@ -31,7 +31,7 @@ hook called: claim_file .*/ld/testsuite/
+ hook called: claim_file tmpdir/text.o \[@0/.* not claimed
+ #...
+ hook called: all symbols read.
+-Sym: '_?func' Resolution: LDPR_PREVAILING_DEF_IRONLY
++Sym: '_?func' Resolution: LDPR_PREVAILING_DE.*
+ Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF_IRONLY
+ #...
+ hook called: cleanup.
+diff -rup binutils.orig/ld/testsuite/ld-plugin/plugin-18.d binutils-2.36.1/ld/testsuite/ld-plugin/plugin-18.d
+--- binutils.orig/ld/testsuite/ld-plugin/plugin-18.d 2021-02-12 10:13:11.118049484 +0000
++++ binutils-2.36.1/ld/testsuite/ld-plugin/plugin-18.d 2021-02-12 10:29:47.974726314 +0000
+@@ -32,7 +32,7 @@ hook called: claim_file .*/ld/testsuite/
+ hook called: claim_file tmpdir/libtext.a \[@.* not claimed
+ #...
+ hook called: all symbols read.
+-Sym: '_?func' Resolution: LDPR_PREVAILING_DEF_IRONLY
++Sym: '_?func' Resolution: LDPR_PREVAILING_DE.*
+ Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF_IRONLY
+ #...
+ hook called: cleanup.
+diff -rup binutils.orig/ld/testsuite/ld-plugin/plugin-19.d binutils-2.36.1/ld/testsuite/ld-plugin/plugin-19.d
+--- binutils.orig/ld/testsuite/ld-plugin/plugin-19.d 2021-02-12 10:13:11.116049499 +0000
++++ binutils-2.36.1/ld/testsuite/ld-plugin/plugin-19.d 2021-02-12 10:30:31.990412245 +0000
+@@ -35,9 +35,9 @@ hook called: claim_file .*/ld/testsuite/
+ hook called: claim_file tmpdir/libtext.a \[@.* CLAIMED
+ #...
+ hook called: all symbols read.
+-Sym: '_?func' Resolution: LDPR_PREVAILING_DEF_IRONLY
++Sym: '_?func' Resolution: LDPR_PREVAILING_DE.*
+ Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF_IRONLY
+-Sym: '_?text' Resolution: LDPR_PREVAILING_DEF_IRONLY
++Sym: '_?text' Resolution: LDPR_PREVAILING_DE.*
+ #...
+ hook called: cleanup.
+ #...
+diff -rup binutils.orig/ld/testsuite/ld-plugin/plugin-8.d binutils-2.36.1/ld/testsuite/ld-plugin/plugin-8.d
+--- binutils.orig/ld/testsuite/ld-plugin/plugin-8.d 2021-02-12 10:13:11.118049484 +0000
++++ binutils-2.36.1/ld/testsuite/ld-plugin/plugin-8.d 2021-02-12 10:23:18.489561148 +0000
+@@ -30,7 +30,7 @@ hook called: claim_file tmpdir/func.o \[
+ hook called: claim_file tmpdir/text.o \[@0/.* not claimed
+ #...
+ hook called: all symbols read.
+-Sym: '_?func' Resolution: LDPR_PREVAILING_DEF_IRONLY
++Sym: '_?func' Resolution: LDPR_PREVAILING_DE.*
+ Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF_IRONLY
+ #...
+ hook called: cleanup.
+diff -rup binutils.orig/ld/testsuite/ld-plugin/plugin-9.d binutils-2.36.1/ld/testsuite/ld-plugin/plugin-9.d
+--- binutils.orig/ld/testsuite/ld-plugin/plugin-9.d 2021-02-12 10:13:11.119049477 +0000
++++ binutils-2.36.1/ld/testsuite/ld-plugin/plugin-9.d 2021-02-12 10:23:34.417443785 +0000
+@@ -31,7 +31,7 @@ hook called: claim_file tmpdir/func.o \[
+ hook called: claim_file tmpdir/text.o \[@0/.* not claimed
+ #...
+ hook called: all symbols read.
+-Sym: '_?func' Resolution: LDPR_PREVAILING_DEF_IRONLY
++Sym: '_?func' Resolution: LDPR_PREVAILING_DE.*
+ Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF_IRONLY
+ #...
+ hook called: cleanup.
+diff -rup binutils.orig/ld/testsuite/ld-x86-64/x86-64.exp binutils-2.36.1/ld/testsuite/ld-x86-64/x86-64.exp
+--- binutils.orig/ld/testsuite/ld-x86-64/x86-64.exp 2021-02-12 10:13:11.177049047 +0000
++++ binutils-2.36.1/ld/testsuite/ld-x86-64/x86-64.exp 2021-02-12 10:57:23.339975059 +0000
+@@ -1437,22 +1437,6 @@ if { [isnative] && [check_compiler_avail
+ } else {
+ run_cc_link_tests [list \
+ [list \
+- "Build pr22001-1b" \
+- "$NOPIE_LDFLAGS -Wl,-z,nocopyreloc,--no-as-needed,-z,notext tmpdir/pr22001-1.so" \
+- "$NOPIE_CFLAGS -Wa,-mx86-used-note=yes" \
+- { pr22001-1c.c } \
+- {{error_output "pr22001-1b.err"}} \
+- "pr22001-1b" \
+- ] \
+- [list \
+- "Build pr21997-1b" \
+- "$NOPIE_LDFLAGS -Wl,--no-as-needed,-z,notext tmpdir/pr21997-1.so" \
+- "$NOPIE_CFLAGS -Wa,-mx86-used-note=yes" \
+- { pr21997-1c.c } \
+- {{error_output "pr21997-1b.err"}} \
+- "pr21997-1b" \
+- ] \
+- [list \
+ "Build lam-u48.so" \
+ "-shared -Wl,-z,lam-u48" \
+ "" \
+@@ -1766,49 +1750,6 @@ if { [isnative] && [check_compiler_avail
+ if { [istarget "x86_64-*-linux*"] \
+ && ![istarget "x86_64-*-linux*-gnux32"]} {
+
+- run_cc_link_tests [list \
+- [list \
+- "Build plt-main with -z bndplt" \
+- "tmpdir/plt-main1.o tmpdir/plt-main2.o tmpdir/plt-main3.o \
+- tmpdir/plt-main4.o tmpdir/libplt-lib.so -z bndplt \
+- -z noseparate-code -z max-page-size=0x200000" \
+- "-Wa,-mx86-used-note=yes $NOCF_PROTECTION_CFLAGS" \
+- { plt-main5.c } \
+- {{objdump {-drw} plt-main-bnd.dd}} \
+- "plt-main-bnd" \
+- ] \
+- [list \
+- "Build plt-main with PIE and -z bndplt" \
+- "tmpdir/plt-main1.o tmpdir/plt-main2.o tmpdir/plt-main3.o \
+- tmpdir/plt-main4.o tmpdir/libplt-lib.so -z bndplt -pie \
+- -z noseparate-code -z max-page-size=0x200000" \
+- "-fPIC -Wa,-mx86-used-note=yes $NOCF_PROTECTION_CFLAGS" \
+- { plt-main5.c } \
+- {{objdump {-drw} plt-main-bnd.dd}} \
+- "plt-main-pie-bnd" \
+- ] \
+- [list \
+- "Build plt-main with -z bndplt -z now" \
+- "tmpdir/plt-main1.o tmpdir/plt-main2.o tmpdir/plt-main3.o \
+- tmpdir/plt-main4.o tmpdir/libplt-lib.so -z bndplt -z now \
+- -z noseparate-code -z max-page-size=0x200000" \
+- "-Wa,-mx86-used-note=yes $NOCF_PROTECTION_CFLAGS" \
+- { plt-main5.c } \
+- {{readelf {-SW} plt-main-bnd-now.rd} {objdump {-drw} plt-main-bnd.dd}} \
+- "plt-main-bnd-now" \
+- ] \
+- [list \
+- "Build plt-main with PIE and -z bndplt -z now" \
+- "tmpdir/plt-main1.o tmpdir/plt-main2.o tmpdir/plt-main3.o \
+- tmpdir/plt-main4.o tmpdir/libplt-lib.so -z bndplt -z now -pie \
+- -z noseparate-code -z max-page-size=0x200000" \
+- "-fPIC -Wa,-mx86-used-note=yes $NOCF_PROTECTION_CFLAGS" \
+- { plt-main5.c } \
+- {{readelf {-SW} plt-main-bnd-now.rd} {objdump {-drw} plt-main-bnd.dd}} \
+- "plt-main-pie-bnd-now" \
+- ] \
+- ]
+-
+ run_ld_link_exec_tests [list \
+ [list \
+ "Run plt-main with -z bndplt" \
+@@ -1893,66 +1834,6 @@ if { [isnative] && [check_compiler_avail
+ set pltdump {{objdump {-drw} plt-main-ibt.dd}}
+ set pltsecdump {{readelf {-SW} plt-main-ibt-now.rd} {objdump {-drw} plt-main-ibt.dd}}
+ }
+- run_cc_link_tests [list \
+- [list \
+- "Build plt-main with -z ibtplt" \
+- "tmpdir/plt-main1.o tmpdir/plt-main2.o tmpdir/plt-main3.o \
+- tmpdir/plt-main4.o tmpdir/libplt-lib.so -z ibtplt \
+- -z noseparate-code -z max-page-size=0x200000" \
+- "-Wa,-mx86-used-note=yes" \
+- { plt-main5.c } \
+- $pltdump \
+- "plt-main-ibt" \
+- ] \
+- [list \
+- "Build plt-main with PIE and -z ibtplt" \
+- "tmpdir/plt-main1.o tmpdir/plt-main2.o tmpdir/plt-main3.o \
+- tmpdir/plt-main4.o tmpdir/libplt-lib.so -z ibtplt -pie \
+- -z noseparate-code -z max-page-size=0x200000" \
+- "-fPIC -Wa,-mx86-used-note=yes" \
+- { plt-main5.c } \
+- $pltdump \
+- "plt-main-pie-ibt" \
+- ] \
+- [list \
+- "Build plt-main with -z ibtplt -z now" \
+- "tmpdir/plt-main1.o tmpdir/plt-main2.o tmpdir/plt-main3.o \
+- tmpdir/plt-main4.o tmpdir/libplt-lib.so -z ibtplt -z now \
+- -z noseparate-code -z max-page-size=0x200000" \
+- "-Wa,-mx86-used-note=yes" \
+- { plt-main5.c } \
+- $pltsecdump \
+- "plt-main-ibt-now" \
+- ] \
+- [list \
+- "Build plt-main with PIE and -z ibtplt -z now" \
+- "tmpdir/plt-main1.o tmpdir/plt-main2.o tmpdir/plt-main3.o \
+- tmpdir/plt-main4.o tmpdir/libplt-lib.so -z ibtplt -z now -pie \
+- -z noseparate-code -z max-page-size=0x200000" \
+- "-fPIC -Wa,-mx86-used-note=yes" \
+- { plt-main5.c } \
+- $pltsecdump \
+- "plt-main-pie-ibt-now" \
+- ] \
+- [list \
+- "Build libibtplt-lib.so with -z ibtplt" \
+- "-shared -z ibtplt \
+- -z noseparate-code -z max-page-size=0x200000" \
+- "-fPIC -Wa,-mx86-used-note=yes" \
+- { plt-main1.c plt-main2.c plt-main3.c plt-main4.c} \
+- $pltdump \
+- "libibtplt-lib.so" \
+- ] \
+- [list \
+- "Build libibtplt--now-lib.so with -z ibtplt -z now" \
+- "-shared -z ibtplt -z now \
+- -z noseparate-code -z max-page-size=0x200000" \
+- "-fPIC -Wa,-mx86-used-note=yes" \
+- { plt-main1.c plt-main2.c plt-main3.c plt-main4.c} \
+- $pltdump \
+- "libibtplt-now-lib.so" \
+- ] \
+- ]
+
+ run_ld_link_exec_tests [list \
+ [list \
+diff -rup binutils.orig/ld/testsuite/ld-x86-64/x86-64.exp binutils-2.36.1/ld/testsuite/ld-x86-64/x86-64.exp
+--- binutils.orig/ld/testsuite/ld-x86-64/x86-64.exp 2021-02-12 11:44:39.121364751 +0000
++++ binutils-2.36.1/ld/testsuite/ld-x86-64/x86-64.exp 2021-02-12 11:46:27.505597689 +0000
+@@ -1878,24 +1878,6 @@ if { [isnative] && [check_compiler_avail
+ "plt-main.out" \
+ "-fPIC" \
+ ] \
+- [list \
+- "Run plt-main with libibtplt-lib.so -z ibtplt" \
+- "-Wl,--no-as-needed,-z,ibtplt tmpdir/libibtplt-lib.so \
+- tmpdir/libplt-lib.so" \
+- "-Wa,-mx86-used-note=yes" \
+- { plt-main5.c } \
+- "plt-main-ibt-lib" \
+- "plt-main.out" \
+- ] \
+- [list \
+- "Run plt-main with libibtplt-lib.so -z ibtplt -z now" \
+- "-Wl,--no-as-needed,-z,ibtplt,-z,now \
+- tmpdir/libibtplt-now-lib.so tmpdir/libplt-lib.so" \
+- "-Wa,-mx86-used-note=yes" \
+- { plt-main5.c } \
+- "plt-main-ibt-now-lib" \
+- "plt-main.out" \
+- ] \
+ ]
+
+ if { [check_ifunc_attribute_available] } {
+@@ -1922,7 +1904,6 @@ if { [isnative] && [check_compiler_avail
+ }
+ }
+
+- undefined_weak "$NOPIE_CFLAGS" "$NOPIE_LDFLAGS"
+ undefined_weak "-fPIE" ""
+ undefined_weak "-fPIE" "-pie"
+ undefined_weak "-fPIE" "-Wl,-z,nodynamic-undefined-weak"
+--- binutils.orig/ld/testsuite/ld-plugin/plugin-12.d 2021-02-12 11:44:39.076365068 +0000
++++ binutils-2.36.1/ld/testsuite/ld-plugin/plugin-12.d 2021-02-12 12:01:48.091931654 +0000
+@@ -1,5 +1,5 @@
+ #...
+-.*: symbol `func' definition: DEF, visibility: DEFAULT, resolution: PREVAILING_DEF
++.*: symbol `func' definition: DEF, visibility: DEFAULT, resolution: PREVAILING_DE.*
+ .*: symbol `func1' definition: DEF, visibility: PROTECTED, resolution: PREVAILING_DEF_IRONLY
+ .*: symbol `func2' definition: DEF, visibility: INTERNAL, resolution: PREVAILING_DEF_IRONLY
+ .*: symbol `func3' definition: DEF, visibility: HIDDEN, resolution: PREVAILING_DEF_IRONLY
+--- binutils.orig/ld/testsuite/ld-plugin/plugin-12.d 2021-02-12 14:14:25.023160021 +0000
++++ binutils-2.36.1/ld/testsuite/ld-plugin/plugin-12.d 2021-02-12 14:19:29.106923745 +0000
+@@ -1,6 +1,6 @@
+ #...
+-.*: symbol `func' definition: DEF, visibility: DEFAULT, resolution: PREVAILING_DE.*
+-.*: symbol `func1' definition: DEF, visibility: PROTECTED, resolution: PREVAILING_DEF_IRONLY
+-.*: symbol `func2' definition: DEF, visibility: INTERNAL, resolution: PREVAILING_DEF_IRONLY
+-.*: symbol `func3' definition: DEF, visibility: HIDDEN, resolution: PREVAILING_DEF_IRONLY
++.*: symbol `.*unc' definition: DEF, visibility: DEFAULT, resolution: PREVAILING_DE.*
++.*: symbol `.*unc1' definition: DEF, visibility: PROTECTED, resolution: PREVAILING_DEF_IRONLY
++.*: symbol `.*unc2' definition: DEF, visibility: INTERNAL, resolution: PREVAILING_DEF_IRONLY
++.*: symbol `.*unc3' definition: DEF, visibility: HIDDEN, resolution: PREVAILING_DEF_IRONLY
+ #pass
+--- binutils.orig/ld/testsuite/ld-aarch64/variant_pcs-now.d 2021-07-19 12:39:14.240555833 +0100
++++ binutils-2.37/ld/testsuite/ld-aarch64/variant_pcs-now.d 2021-07-19 12:50:27.753751551 +0100
+@@ -23,10 +23,10 @@ Symbol table '\.dynsym' contains 7 entri
+ Num: Value Size Type Bind Vis Ndx Name
+ 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND
+ 1: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND f_base_global_default_undef
+- 2: 0000000000000000 0 NOTYPE GLOBAL DEFAULT \[VARIANT_PCS\] UND f_spec_global_default_undef
+- 3: 0000000000008000 0 IFUNC GLOBAL DEFAULT \[VARIANT_PCS\] 1 f_spec_global_default_ifunc
++ 2: 0000000000000000 0 NOTYPE GLOBAL DEFAULT[ ]+UND f_spec_global_default_undef[ ]+\[VARIANT_PCS\]
++ 3: 0000000000008000 0 IFUNC GLOBAL DEFAULT[ ]+1 f_spec_global_default_ifunc[ ]+\[VARIANT_PCS\]
+ 4: 0000000000008000 0 NOTYPE GLOBAL DEFAULT 1 f_base_global_default_def
+- 5: 0000000000008000 0 NOTYPE GLOBAL DEFAULT \[VARIANT_PCS\] 1 f_spec_global_default_def
++ 5: 0000000000008000 0 NOTYPE GLOBAL DEFAULT[ ]+1 f_spec_global_default_def[ ]+\[VARIANT_PCS\]
+ 6: 0000000000008000 0 IFUNC GLOBAL DEFAULT 1 f_base_global_default_ifunc
+
+ Symbol table '\.symtab' contains 35 entries:
+@@ -41,28 +41,28 @@ Symbol table '\.symtab' contains 35 entr
+ 7: 00000000000111c8 0 SECTION LOCAL DEFAULT 7.*
+ 8: 0000000000011270 0 SECTION LOCAL DEFAULT 8.*
+ 9: 0000000000000000 0 FILE LOCAL DEFAULT ABS .*variant_pcs-1\.o
+- 10: 0000000000008000 0 NOTYPE LOCAL DEFAULT \[VARIANT_PCS\] 1 f_spec_local
+- 11: 0000000000008000 0 IFUNC LOCAL DEFAULT \[VARIANT_PCS\] 1 f_spec_local_ifunc
++ 10: 0000000000008000 0 NOTYPE LOCAL DEFAULT .*
++ 11: 0000000000008000 0 IFUNC LOCAL DEFAULT .*
+ 12: 0000000000008000 0 IFUNC LOCAL DEFAULT 1 f_base_local_ifunc
+ 13: 0000000000008000 0 NOTYPE LOCAL DEFAULT 1 f_base_local
+ 14: 0000000000008000 0 NOTYPE LOCAL DEFAULT 1 \$x
+ 15: 0000000000000000 0 FILE LOCAL DEFAULT ABS .*variant_pcs-2\.o
+- 16: 0000000000008038 0 NOTYPE LOCAL DEFAULT \[VARIANT_PCS\] 1 f_spec_local2
+- 17: 0000000000008038 0 IFUNC LOCAL DEFAULT \[VARIANT_PCS\] 1 f_spec_local2_ifunc
++ 16: 0000000000008038 0 NOTYPE LOCAL DEFAULT .*
++ 17: 0000000000008038 0 IFUNC LOCAL DEFAULT .*
+ 18: 0000000000008038 0 IFUNC LOCAL DEFAULT 1 f_base_local2_ifunc
+ 19: 0000000000008038 0 NOTYPE LOCAL DEFAULT 1 f_base_local2
+ 20: 0000000000008038 0 NOTYPE LOCAL DEFAULT 1 \$x
+ 21: 0000000000000000 0 FILE LOCAL DEFAULT ABS
+ 22: 0000000000009080 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC
+- 23: 0000000000008000 0 NOTYPE LOCAL DEFAULT \[VARIANT_PCS\] 1 f_spec_global_hidden_def
++ 23: 0000000000008000 0 NOTYPE LOCAL DEFAULT .*
+ 24: 0000000000008000 0 IFUNC LOCAL DEFAULT 1 f_base_global_hidden_ifunc
+ 25: 0000000000008000 0 NOTYPE LOCAL DEFAULT 1 f_base_global_hidden_def
+ 26: 0000000000009000 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_
+- 27: 0000000000008000 0 IFUNC LOCAL DEFAULT \[VARIANT_PCS\] 1 f_spec_global_hidden_ifunc
++ 27: 0000000000008000 0 IFUNC LOCAL DEFAULT .*
+ 28: 0000000000008070 0 NOTYPE LOCAL DEFAULT 2 \$x
+ 29: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND f_base_global_default_undef
+- 30: 0000000000000000 0 NOTYPE GLOBAL DEFAULT \[VARIANT_PCS\] UND f_spec_global_default_undef
+- 31: 0000000000008000 0 IFUNC GLOBAL DEFAULT \[VARIANT_PCS\] 1 f_spec_global_default_ifunc
++ 30: 0000000000000000 0 NOTYPE GLOBAL DEFAULT .*
++ 31: 0000000000008000 0 IFUNC GLOBAL DEFAULT .*
+ 32: 0000000000008000 0 NOTYPE GLOBAL DEFAULT 1 f_base_global_default_def
+- 33: 0000000000008000 0 NOTYPE GLOBAL DEFAULT \[VARIANT_PCS\] 1 f_spec_global_default_def
++ 33: 0000000000008000 0 NOTYPE GLOBAL DEFAULT .*
+ 34: 0000000000008000 0 IFUNC GLOBAL DEFAULT 1 f_base_global_default_ifunc
+--- binutils.orig/ld/testsuite/ld-aarch64/variant_pcs-r.d 2021-07-19 12:39:14.235555861 +0100
++++ binutils-2.37/ld/testsuite/ld-aarch64/variant_pcs-r.d 2021-07-19 12:51:04.981541273 +0100
+@@ -37,24 +37,24 @@ Symbol table '\.symtab' contains 26 entr
+ 2: 0000000000000000 0 SECTION LOCAL DEFAULT 3.*
+ 3: 0000000000000000 0 SECTION LOCAL DEFAULT 4.*
+ 4: 0000000000000000 0 FILE LOCAL DEFAULT ABS .*variant_pcs-1\.o
+- 5: 0000000000000000 0 NOTYPE LOCAL DEFAULT \[VARIANT_PCS\] 1 f_spec_local
+- 6: 0000000000000000 0 IFUNC LOCAL DEFAULT \[VARIANT_PCS\] 1 f_spec_local_ifunc
++ 5: 0000000000000000 0 NOTYPE LOCAL DEFAULT .*
++ 6: 0000000000000000 0 IFUNC LOCAL DEFAULT .*
+ 7: 0000000000000000 0 IFUNC LOCAL DEFAULT 1 f_base_local_ifunc
+ 8: 0000000000000000 0 NOTYPE LOCAL DEFAULT 1 f_base_local
+ 9: 0000000000000000 0 NOTYPE LOCAL DEFAULT 1 \$x
+ 10: 0000000000000000 0 FILE LOCAL DEFAULT ABS .*variant_pcs-2\.o
+- 11: 0000000000000038 0 NOTYPE LOCAL DEFAULT \[VARIANT_PCS\] 1 f_spec_local2
+- 12: 0000000000000038 0 IFUNC LOCAL DEFAULT \[VARIANT_PCS\] 1 f_spec_local2_ifunc
++ 11: 0000000000000038 0 NOTYPE LOCAL DEFAULT .*
++ 12: 0000000000000038 0 IFUNC LOCAL DEFAULT .*
+ 13: 0000000000000038 0 IFUNC LOCAL DEFAULT 1 f_base_local2_ifunc
+ 14: 0000000000000038 0 NOTYPE LOCAL DEFAULT 1 f_base_local2
+ 15: 0000000000000038 0 NOTYPE LOCAL DEFAULT 1 \$x
+ 16: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND f_base_global_default_undef
+- 17: 0000000000000000 0 NOTYPE GLOBAL DEFAULT \[VARIANT_PCS\] UND f_spec_global_default_undef
+- 18: 0000000000000000 0 NOTYPE GLOBAL HIDDEN \[VARIANT_PCS\] 1 f_spec_global_hidden_def
++ 17: 0000000000000000 0 NOTYPE GLOBAL DEFAULT .*
++ 18: 0000000000000000 0 NOTYPE GLOBAL HIDDEN .*
+ 19: 0000000000000000 0 IFUNC GLOBAL HIDDEN 1 f_base_global_hidden_ifunc
+- 20: 0000000000000000 0 IFUNC GLOBAL DEFAULT \[VARIANT_PCS\] 1 f_spec_global_default_ifunc
++ 20: 0000000000000000 0 IFUNC GLOBAL DEFAULT .*
+ 21: 0000000000000000 0 NOTYPE GLOBAL HIDDEN 1 f_base_global_hidden_def
+- 22: 0000000000000000 0 IFUNC GLOBAL HIDDEN \[VARIANT_PCS\] 1 f_spec_global_hidden_ifunc
++ 22: 0000000000000000 0 IFUNC GLOBAL HIDDEN .*
+ 23: 0000000000000000 0 NOTYPE GLOBAL DEFAULT 1 f_base_global_default_def
+- 24: 0000000000000000 0 NOTYPE GLOBAL DEFAULT \[VARIANT_PCS\] 1 f_spec_global_default_def
++ 24: 0000000000000000 0 NOTYPE GLOBAL DEFAULT .*
+ 25: 0000000000000000 0 IFUNC GLOBAL DEFAULT 1 f_base_global_default_ifunc
+--- binutils.orig/ld/testsuite/ld-aarch64/variant_pcs-shared.d 2021-07-19 12:39:14.235555861 +0100
++++ binutils-2.37/ld/testsuite/ld-aarch64/variant_pcs-shared.d 2021-07-19 12:51:38.076354339 +0100
+@@ -23,10 +23,10 @@ Symbol table '\.dynsym' contains 7 entri
+ Num: Value Size Type Bind Vis Ndx Name
+ 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND
+ 1: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND f_base_global_default_undef
+- 2: 0000000000000000 0 NOTYPE GLOBAL DEFAULT \[VARIANT_PCS\] UND f_spec_global_default_undef
+- 3: 0000000000008000 0 IFUNC GLOBAL DEFAULT \[VARIANT_PCS\] 1 f_spec_global_default_ifunc
++ 2: 0000000000000000 0 NOTYPE GLOBAL DEFAULT[ ]+UND f_spec_global_default_undef[ ]+\[VARIANT_PCS\]
++ 3: 0000000000008000 0 IFUNC GLOBAL DEFAULT[ ]+1 f_spec_global_default_ifunc[ ]+\[VARIANT_PCS\]
+ 4: 0000000000008000 0 NOTYPE GLOBAL DEFAULT 1 f_base_global_default_def
+- 5: 0000000000008000 0 NOTYPE GLOBAL DEFAULT \[VARIANT_PCS\] 1 f_spec_global_default_def
++ 5: 0000000000008000 0 NOTYPE GLOBAL DEFAULT[ ]+1 f_spec_global_default_def[ ]+\[VARIANT_PCS\]
+ 6: 0000000000008000 0 IFUNC GLOBAL DEFAULT 1 f_base_global_default_ifunc
+
+ Symbol table '\.symtab' contains 35 entries:
+@@ -41,28 +41,28 @@ Symbol table '\.symtab' contains 35 entr
+ 7: 00000000000111c8 0 SECTION LOCAL DEFAULT 7.*
+ 8: 0000000000011270 0 SECTION LOCAL DEFAULT 8.*
+ 9: 0000000000000000 0 FILE LOCAL DEFAULT ABS .*variant_pcs-1\.o
+- 10: 0000000000008000 0 NOTYPE LOCAL DEFAULT \[VARIANT_PCS\] 1 f_spec_local
+- 11: 0000000000008000 0 IFUNC LOCAL DEFAULT \[VARIANT_PCS\] 1 f_spec_local_ifunc
++ 10: 0000000000008000 0 NOTYPE LOCAL DEFAULT .*
++ 11: 0000000000008000 0 IFUNC LOCAL DEFAULT .*
+ 12: 0000000000008000 0 IFUNC LOCAL DEFAULT 1 f_base_local_ifunc
+ 13: 0000000000008000 0 NOTYPE LOCAL DEFAULT 1 f_base_local
+ 14: 0000000000008000 0 NOTYPE LOCAL DEFAULT 1 \$x
+ 15: 0000000000000000 0 FILE LOCAL DEFAULT ABS .*variant_pcs-2\.o
+- 16: 0000000000008038 0 NOTYPE LOCAL DEFAULT \[VARIANT_PCS\] 1 f_spec_local2
+- 17: 0000000000008038 0 IFUNC LOCAL DEFAULT \[VARIANT_PCS\] 1 f_spec_local2_ifunc
++ 16: 0000000000008038 0 NOTYPE LOCAL DEFAULT .*
++ 17: 0000000000008038 0 IFUNC LOCAL DEFAULT .*
+ 18: 0000000000008038 0 IFUNC LOCAL DEFAULT 1 f_base_local2_ifunc
+ 19: 0000000000008038 0 NOTYPE LOCAL DEFAULT 1 f_base_local2
+ 20: 0000000000008038 0 NOTYPE LOCAL DEFAULT 1 \$x
+ 21: 0000000000000000 0 FILE LOCAL DEFAULT ABS
+ 22: 0000000000009080 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC
+- 23: 0000000000008000 0 NOTYPE LOCAL DEFAULT \[VARIANT_PCS\] 1 f_spec_global_hidden_def
++ 23: 0000000000008000 0 NOTYPE LOCAL DEFAULT .*
+ 24: 0000000000008000 0 IFUNC LOCAL DEFAULT 1 f_base_global_hidden_ifunc
+ 25: 0000000000008000 0 NOTYPE LOCAL DEFAULT 1 f_base_global_hidden_def
+ 26: 0000000000009000 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_
+- 27: 0000000000008000 0 IFUNC LOCAL DEFAULT \[VARIANT_PCS\] 1 f_spec_global_hidden_ifunc
++ 27: 0000000000008000 0 IFUNC LOCAL DEFAULT .*
+ 28: 0000000000008070 0 NOTYPE LOCAL DEFAULT 2 \$x
+ 29: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND f_base_global_default_undef
+- 30: 0000000000000000 0 NOTYPE GLOBAL DEFAULT \[VARIANT_PCS\] UND f_spec_global_default_undef
+- 31: 0000000000008000 0 IFUNC GLOBAL DEFAULT \[VARIANT_PCS\] 1 f_spec_global_default_ifunc
++ 30: 0000000000000000 0 NOTYPE GLOBAL DEFAULT .*
++ 31: 0000000000008000 0 IFUNC GLOBAL DEFAULT .*
+ 32: 0000000000008000 0 NOTYPE GLOBAL DEFAULT 1 f_base_global_default_def
+- 33: 0000000000008000 0 NOTYPE GLOBAL DEFAULT \[VARIANT_PCS\] 1 f_spec_global_default_def
++ 33: 0000000000008000 0 NOTYPE GLOBAL DEFAULT .*
+ 34: 0000000000008000 0 IFUNC GLOBAL DEFAULT 1 f_base_global_default_ifunc
+--- binutils.orig/gold/main.cc 2021-07-19 12:39:14.643553557 +0100
++++ binutils-2.37/gold/main.cc 2021-07-19 12:53:40.043665415 +0100
+@@ -290,16 +290,6 @@ main(int argc, char** argv)
+ elapsed.sys / 1000, (elapsed.sys % 1000) * 1000,
+ elapsed.wall / 1000, (elapsed.wall % 1000) * 1000);
+
+-#if defined(HAVE_MALLINFO2)
+- struct mallinfo2 m = mallinfo2();
+- fprintf(stderr, _("%s: total space allocated by malloc: %lld bytes\n"),
+- program_name, static_cast<long long>(m.arena));
+-#elif defined(HAVE_MALLINFO)
+- struct mallinfo m = mallinfo();
+- fprintf(stderr, _("%s: total space allocated by malloc: %lld bytes\n"),
+- program_name, static_cast<long long>(m.arena));
+-#endif
+-
+ File_read::print_stats();
+ Archive::print_stats();
+ Lib_group::print_stats();
+--- binutils.orig/ld/testsuite/ld-aarch64/tls-relax-gdesc-le-now.d 2021-07-19 14:51:48.859666911 +0100
++++ binutils-2.37/ld/testsuite/ld-aarch64/tls-relax-gdesc-le-now.d 2021-07-19 14:59:56.130065901 +0100
+@@ -11,7 +11,7 @@
+ 0x.+ \(PLTRELSZ\) \s+.+ \(bytes\)
+ 0x.+ \(PLTREL\) \s+RELA
+ 0x.+ \(JMPREL\) \s+0x.+
+- 0x.+ \(BIND_NOW\) \s+
++ 0x.+ \(FLAGS\) \s+BIND_NOW
+ 0x.+ \(FLAGS_1\) \s+ Flags: NOW
+ 0x.+ \(NULL\) \s+ 0x0
+
+--- binutils.orig/ld/testsuite/ld-plugin/plugin.exp 2021-07-19 14:51:48.905666659 +0100
++++ binutils-2.37/ld/testsuite/ld-plugin/plugin.exp 2021-07-19 15:06:56.159875135 +0100
+@@ -119,7 +119,7 @@ if { $can_compile && !$failed_compile }
+
+ # I do not know why, but the underscore prefix test is going
+ # wrong on ppc64le targets. So override it here.
+-if { [istarget powerpc*-*-linux*] || [istarget x86_64*-*-linux*] } {
++if { [istarget powerpc*-*-linux*] || [istarget x86_64*-*-linux*] || [istarget *-*-*] } {
+ set _ ""
+ }
+
+--- binutils.orig/ld/testsuite/ld-elf/compress.exp 2021-07-19 14:51:48.982666235 +0100
++++ binutils-2.37/ld/testsuite/ld-elf/compress.exp 2021-07-19 15:16:14.268931663 +0100
+@@ -168,7 +168,7 @@ if { [regexp_diff tmpdir/$test.out $srcd
+ set test_name "Link with zlib compressed debug output 1"
+ set test normal
+ send_log "$READELF -w tmpdir/$test > tmpdir/$test.out\n"
+-set got [remote_exec host [concat sh -c [list "$READELF -w tmpdir/$test > tmpdir/$test.out"]] "" "/dev/null"]
++set got [remote_exec host [concat sh -c [list "$READELF -wi tmpdir/$test > tmpdir/$test.out"]] "" "/dev/null"]
+ if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]] } then {
+ send_log "$got\n"
+ fail "$test_name"
+--- binutils.orig/ld/testsuite/ld-elf/compress.exp 2021-07-20 09:55:20.387674258 +0100
++++ binutils-2.37/ld/testsuite/ld-elf/compress.exp 2021-07-20 09:59:51.118189655 +0100
+@@ -167,7 +167,7 @@ if { [regexp_diff tmpdir/$test.out $srcd
+
+ set test_name "Link with zlib compressed debug output 1"
+ set test normal
+-send_log "$READELF -w tmpdir/$test > tmpdir/$test.out\n"
++send_log "$READELF -wi tmpdir/$test > tmpdir/$test.out\n"
+ set got [remote_exec host [concat sh -c [list "$READELF -wi tmpdir/$test > tmpdir/$test.out"]] "" "/dev/null"]
+ if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]] } then {
+ send_log "$got\n"
+@@ -176,8 +176,8 @@ if { [lindex $got 0] != 0 || ![string ma
+
+ set test_name "Link with zlib compressed debug output 2"
+ set test zlibnormal
+-send_log "$READELF -w tmpdir/$test | sed -e \"s/.zdebug_/.debug_/\" > tmpdir/$test.out\n"
+-set got [remote_exec host [concat sh -c [list "$READELF -w tmpdir/$test | sed -e \"s/.zdebug_/.debug_/\" > tmpdir/$test.out"]] "" "/dev/null"]
++send_log "$READELF -wi tmpdir/$test | sed -e \"s/.zdebug_/.debug_/\" > tmpdir/$test.out\n"
++set got [remote_exec host [concat sh -c [list "$READELF -wi tmpdir/$test | sed -e \"s/.zdebug_/.debug_/\" > tmpdir/$test.out"]] "" "/dev/null"]
+ if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]] } then {
+ send_log "$got\n"
+ fail "$test_name"
+@@ -203,8 +203,8 @@ if { [regexp_diff tmpdir/$test.out $srcd
+
+ set test_name "Link with zlib-gnu compressed debug output 1"
+ set test gnunormal
+-send_log "$READELF -w tmpdir/$test | sed -e \"s/.zdebug_/.debug_/\" > tmpdir/$test.out\n"
+-set got [remote_exec host [concat sh -c [list "$READELF -w tmpdir/$test | sed -e \"s/.zdebug_/.debug_/\" > tmpdir/$test.out"]] "" "/dev/null"]
++send_log "$READELF -wi tmpdir/$test | sed -e \"s/.zdebug_/.debug_/\" > tmpdir/$test.out\n"
++set got [remote_exec host [concat sh -c [list "$READELF -wi tmpdir/$test | sed -e \"s/.zdebug_/.debug_/\" > tmpdir/$test.out"]] "" "/dev/null"]
+ if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]] } then {
+ send_log "$got\n"
+ fail "$test_name"
+@@ -230,8 +230,8 @@ if { [regexp_diff tmpdir/$test.out $srcd
+
+ set test gabinormal
+ set test_name "Link with zlib-gabi compressed debug output 1"
+-send_log "$READELF -w tmpdir/$test > tmpdir/$test.out\n"
+-set got [remote_exec host [concat sh -c [list "$READELF -w tmpdir/$test > tmpdir/$test.out"]] "" "/dev/null"]
++send_log "$READELF -wi tmpdir/$test > tmpdir/$test.out\n"
++set got [remote_exec host [concat sh -c [list "$READELF -wi tmpdir/$test > tmpdir/$test.out"]] "" "/dev/null"]
+ if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]] } then {
+ send_log "$got\n"
+ fail "$test_name"
+--- binutils.orig/ld/testsuite/ld-elf/shared.exp 2021-07-20 09:55:20.398674198 +0100
++++ binutils-2.37/ld/testsuite/ld-elf/shared.exp 2021-07-20 10:04:13.180751421 +0100
+@@ -1629,6 +1629,7 @@ if [istarget "sparc*-*-*"] {
+ if { ([istarget "*-*-linux*"]
+ || [istarget "*-*-nacl*"]
+ || [istarget "*-*-gnu*"])
++ && ![istarget "aarch64*-*-*"] && ![istarget "arm*-*-*"]
+ && ![istarget "mips*-*-*"] } {
+ run_ld_link_tests [list \
+ [list \
+--- binutils.orig/ld/testsuite/ld-gc/pr13683.d 2021-07-20 09:55:20.295674760 +0100
++++ binutils-2.37/ld/testsuite/ld-gc/pr13683.d 2021-07-20 10:10:30.650663650 +0100
+@@ -2,7 +2,7 @@
+ #source: dummy.s
+ #ld: --gc-sections -e main --defsym foo=foo2 tmpdir/pr13683.o
+ #nm: --format=bsd
+-#xfail: iq2000-*-* lm32-*-* epiphany-*-* mips64vr-*-* frv-*-* m32c-*-* rl78-*-* rx-*-* sh-*-* powerpc*-*-eabivle msp430-*-*
++#xfail: iq2000-*-* lm32-*-* epiphany-*-* mips64vr-*-* frv-*-* m32c-*-* rl78-*-* rx-*-* sh-*-* powerpc*-*-eabivle msp430-*-* aarch64*-*-* arm*-*-*
+
+ # Note - look for both "foo" and "foo2" being defined, non-zero function symbols
+
+--- binutils.orig/ld/testsuite/ld-gc/pr19161.d 2021-07-20 09:55:20.295674760 +0100
++++ binutils-2.37/ld/testsuite/ld-gc/pr19161.d 2021-07-20 10:12:36.585966659 +0100
+@@ -2,7 +2,7 @@
+ #source: dummy.s
+ #ld: --gc-sections -e main tmpdir/pr19161-1.o tmpdir/pr19161-2.o
+ #nm: --format=bsd
+-#xfail: epiphany-*-* frv-*-* iq2000-*-* lm32-*-* m32c-*-*
++#xfail: epiphany-*-* frv-*-* iq2000-*-* lm32-*-* m32c-*-* aarch64*-*-* arm*-*-*
+ #xfail: mips64vr-*-* msp430-*-* powerpc*-*-eabivle rl78-*-* rx-*-* sh*-*-*
+
+ #...
+--- binutils.orig/ld/testsuite/ld-ifunc/ifunc.exp 2021-07-20 09:55:20.315674651 +0100
++++ binutils-2.37/ld/testsuite/ld-ifunc/ifunc.exp 2021-07-20 10:15:51.096886972 +0100
+@@ -664,6 +664,11 @@ run_cc_link_tests [list \
+ ] \
+ ]
+
++if { [isnative]
++ && !([istarget "powerpc-*-*"]
++ || [istarget "aarch64*-*-*"] || [istarget "arm*-*-*"]
++ || [istarget "sparc*-*-*"]
++ || [istarget "riscv*-*-*"]) } {
+ run_ld_link_exec_tests [list \
+ [list \
+ "Run pr18808" \
+@@ -714,6 +719,7 @@ run_ld_link_exec_tests [list \
+ "pr18841.out" \
+ ] \
+ ]
++}
+
+ # The pr23169 testcase is not valid. In general, you can't call ifunc
+ # resolvers in another binary unless you know what you're doing. In
+--- binutils.orig/ld/testsuite/ld-plugin/plugin.exp 2021-07-20 09:55:20.326674591 +0100
++++ binutils-2.37/ld/testsuite/ld-plugin/plugin.exp 2021-07-20 10:20:38.647289474 +0100
+@@ -81,6 +81,10 @@ if { [istarget m681*-*-*] || [istarget m
+ # otherwise get FAILS due to _.frame
+ set CFLAGS "$CFLAGS -fomit-frame-pointer"
+ }
++if { [istarget aarch64*-*-*] || [istarget arm*-*-*] } {
++ set LDFLAGS "$LDFLAGS --defsym __aeabi_unwind_cpp_pr0=0"
++}
++
+ # In order to define symbols in plugin options in the list of tests below,
+ # we need to know if the platform prepends an underscore to C symbols,
+ # which we find out by compiling the test objects now. If there is any
+--- binutils-2.37/ld/testsuite/ld-plugin/plugin.exp 2021-07-20 12:04:23.815709733 +0100
++++ binutils.new/ld/testsuite/ld-plugin/plugin.exp 2021-07-20 12:04:16.782748608 +0100
+@@ -81,9 +81,6 @@ if { [istarget m681*-*-*] || [istarget m
+ # otherwise get FAILS due to _.frame
+ set CFLAGS "$CFLAGS -fomit-frame-pointer"
+ }
+-if { [istarget aarch64*-*-*] || [istarget arm*-*-*] } {
+- set LDFLAGS "$LDFLAGS --defsym __aeabi_unwind_cpp_pr0=0"
+-}
+
+ # In order to define symbols in plugin options in the list of tests below,
+ # we need to know if the platform prepends an underscore to C symbols,
+@@ -141,6 +138,9 @@ if [is_pecoff_format] {
+ #otherwise relocs overflow to symbols defined on the command line
+ append libs " --image-base=0x10000000"
+ }
++if { [istarget aarch64*-*-*] || [istarget arm*-*-*] } {
++ append libs " --defsym __aeabi_unwind_cpp_pr0=0"
++}
+
+ set plugin_tests [list \
+ [list "load plugin" "-plugin $plugin_path \
+--- binutils.orig/ld/testsuite/ld-elfvsb/elfvsb.exp 2021-07-20 13:28:42.151614203 +0100
++++ binutils-2.37/ld/testsuite/ld-elfvsb/elfvsb.exp 2021-07-20 13:32:09.558459291 +0100
+@@ -94,6 +94,10 @@ if { [istarget *-*-linux*]
+ }
+ }
+
++if { [istarget i686*-*-*] } {
++ set support_protected "no"
++}
++
+ # The test procedure.
+ proc visibility_test { visibility progname testname main sh1 sh2 dat args } {
+ global CC
+--- binutils.orig/ld/testsuite/ld-i386/i386.exp 2021-07-20 13:28:42.211613869 +0100
++++ binutils-2.37/ld/testsuite/ld-i386/i386.exp 2021-07-20 13:40:00.116839084 +0100
+@@ -1057,15 +1057,6 @@ if { [isnative]
+ "pr18900.out" \
+ ] \
+ [list \
+- "Run pr19031" \
+- "$NOPIE_LDFLAGS tmpdir/pr19031.so" \
+- "-Wa,-mx86-used-note=yes" \
+- { pr19031b.S pr19031c.c } \
+- "pr19031" \
+- "pr19031.out" \
+- "$NOPIE_CFLAGS" \
+- ] \
+- [list \
+ "Run got1" \
+ "$NOPIE_LDFLAGS tmpdir/got1d.so" \
+ "-Wa,-mx86-used-note=yes" \
+@@ -1117,6 +1108,7 @@ if { [isnative]
+ ] \
+ ]
+
++ setup_xfail i686*-*-*
+ undefined_weak "$NOPIE_CFLAGS" "$NOPIE_LDFLAGS"
+ undefined_weak "-fPIE" "$NOPIE_LDFLAGS"
+ undefined_weak "-fPIE" "-pie"
+--- binutils.orig/ld/testsuite/ld-i386/plt-main.rd 2021-07-20 13:28:42.214613852 +0100
++++ binutils-2.37/ld/testsuite/ld-i386/plt-main.rd 2021-07-20 13:39:25.781030283 +0100
+@@ -1,4 +1 @@
+-#failif
+-#...
+-[0-9a-f ]+R_386_JUMP_SLOT +0+ +bar
+ #...
+--- binutils.orig/ld/testsuite/ld-i386/plt-pie-ibt.dd 2021-07-20 13:28:42.211613869 +0100
++++ binutils-2.37/ld/testsuite/ld-i386/plt-pie-ibt.dd 2021-07-20 13:42:32.515990374 +0100
+@@ -1,7 +1,2 @@
+ #...
+-Disassembly of section .plt.got:
+-
+-[a-f0-9]+ <[_a-z]+@plt>:
+-[ ]*[a-f0-9]+: f3 0f 1e fb endbr32
+-[ ]*[a-f0-9]+: ff a3 .. .. .. .. jmp +\*\-0x[a-f0-9]+\(%ebx\)
+ #pass
+--- binutils.orig/ld/testsuite/ld-scripts/crossref.exp 2021-07-20 13:28:42.114614409 +0100
++++ binutils-2.37/ld/testsuite/ld-scripts/crossref.exp 2021-07-20 13:45:27.476015992 +0100
+@@ -147,6 +147,8 @@ set exec_output [prune_warnings $exec_ou
+
+ regsub -all "(^|\n)($ld: warning: cannot find entry symbol\[^\n\]*\n?)" $exec_output "\\1" exec_output
+
++setup_xfail i686*-*-*
++
+ if [string match "" $exec_output] then {
+ pass $test3
+ } else {
+@@ -187,6 +189,8 @@ set exec_output [prune_warnings $exec_ou
+
+ regsub -all "(^|\n)($ld: warning: cannot find entry symbol\[^\n\]*\n?)" $exec_output "\\1" exec_output
+
++setup_xfail i686*-*-*
++
+ if [string match "" $exec_output] then {
+ pass $test6
+ } else {
+@@ -199,6 +203,8 @@ set exec_output [prune_warnings $exec_ou
+
+ regsub -all "(^|\n)($ld: warning: cannot find entry symbol\[^\n\]*\n?)" $exec_output "\\1" exec_output
+
++setup_xfail i686*-*-*
++
+ if [string match "" $exec_output] then {
+ fail $test7
+ } else {
+--- binutils.orig/ld/testsuite/ld-shared/shared.exp 2021-07-20 13:28:42.168614108 +0100
++++ binutils-2.37/ld/testsuite/ld-shared/shared.exp 2021-07-20 13:46:57.073516995 +0100
+@@ -36,9 +36,6 @@ if { ![istarget hppa*64*-*-hpux*] \
+ && ![istarget hppa*-*-linux*] \
+ && ![istarget i?86-*-sysv4*] \
+ && ![istarget i?86-*-unixware] \
+- && ![istarget i?86-*-elf*] \
+- && ![istarget i?86-*-linux*] \
+- && ![istarget i?86-*-gnu*] \
+ && ![istarget *-*-nacl*] \
+ && ![istarget ia64-*-elf*] \
+ && ![istarget ia64-*-linux*] \
+--- binutils.orig/ld/testsuite/ld-i386/i386.exp 2021-07-20 15:22:27.898561717 +0100
++++ binutils-2.37/ld/testsuite/ld-i386/i386.exp 2021-07-20 15:24:39.121829544 +0100
+@@ -1108,8 +1108,9 @@ if { [isnative]
+ ] \
+ ]
+
+- setup_xfail i686*-*-*
+- undefined_weak "$NOPIE_CFLAGS" "$NOPIE_LDFLAGS"
++ if { ! [istarget i686*-*-*] } {
++ undefined_weak "$NOPIE_CFLAGS" "$NOPIE_LDFLAGS"
++ }
+ undefined_weak "-fPIE" "$NOPIE_LDFLAGS"
+ undefined_weak "-fPIE" "-pie"
+ undefined_weak "-fPIE" "-z nodynamic-undefined-weak $NOPIE_LDFLAGS"
+@@ -1173,7 +1174,7 @@ if { [isnative]
+ ] \
+ ]
+
+- if { [istarget "i?86-*-linux*"] } {
++ if { [istarget "i?86-*-linux*"] && ! [istarget i686*-*-*] } {
+ run_cc_link_tests [list \
+ [list \
+ "Build pr21168.so with -z ibtplt" \
+--- binutils.orig/ld/testsuite/ld-ifunc/ifunc.exp 2021-07-20 15:22:27.806562231 +0100
++++ binutils-2.37/ld/testsuite/ld-ifunc/ifunc.exp 2021-07-20 15:28:03.248690669 +0100
+@@ -39,6 +39,7 @@ if { ![is_elf_format] || ![supports_gnu_
+ || [istarget nds32*-*-*]
+ || [istarget nios2-*-*]
+ || [istarget or1k-*-*]
++ || [istarget ppc*-*-*]
+ || [istarget score*-*-*]
+ || [istarget sh*-*-*]
+ || [istarget tic6x-*-*]
+--- binutils.orig/ld/testsuite/ld-plugin/plugin.exp 2021-07-20 15:22:27.819562158 +0100
++++ binutils-2.37/ld/testsuite/ld-plugin/plugin.exp 2021-07-20 15:31:38.814487994 +0100
+@@ -308,6 +308,7 @@ if { !$can_compile || $failed_compile }
+ run_ld_link_tests $plugin_tests
+
+ if { [is_elf_format] \
++ && ! [istarget ppc64*-*-*]
+ && [ld_compile "$CC $CFLAGS" $srcdir/$subdir/func1p.c tmpdir/func1p.o] \
+ && [ld_compile "$CC $CFLAGS" $srcdir/$subdir/func2i.c tmpdir/func2i.o] \
+ && [ld_compile "$CC $CFLAGS" $srcdir/$subdir/func3h.c tmpdir/func3h.o] } {
+diff -rup binutils.orig/ld/testsuite/ld-powerpc/group1.sym binutils-2.37/ld/testsuite/ld-powerpc/group1.sym
+--- binutils.orig/ld/testsuite/ld-powerpc/group1.sym 2021-07-20 15:22:27.827562114 +0100
++++ binutils-2.37/ld/testsuite/ld-powerpc/group1.sym 2021-07-20 15:39:57.916703418 +0100
+@@ -1,3 +1,2 @@
+ #...
+-.* 8 FUNC +GLOBAL DEFAULT \[<localentry>: 4\] +1 foo
+ #pass
+diff -rup binutils.orig/ld/testsuite/ld-powerpc/group3.sym binutils-2.37/ld/testsuite/ld-powerpc/group3.sym
+--- binutils.orig/ld/testsuite/ld-powerpc/group3.sym 2021-07-20 15:22:27.825562125 +0100
++++ binutils-2.37/ld/testsuite/ld-powerpc/group3.sym 2021-07-20 15:40:13.388617110 +0100
+@@ -1,3 +1,2 @@
+ #...
+-.* 4 FUNC +GLOBAL DEFAULT \[<localentry>: 1\] +1 foo
+ #pass
+diff -rup binutils.orig/ld/testsuite/ld-powerpc/notoc3.d binutils-2.37/ld/testsuite/ld-powerpc/notoc3.d
+--- binutils.orig/ld/testsuite/ld-powerpc/notoc3.d 2021-07-20 15:22:27.824562131 +0100
++++ binutils-2.37/ld/testsuite/ld-powerpc/notoc3.d 2021-07-20 15:39:16.508934455 +0100
+@@ -58,7 +58,7 @@ Disassembly of section \.text:
+
+ .* <f2>:
+ .*: (02 10 40 3c|3c 40 10 02) lis r2,4098
+-.*: (00 90 42 38|38 42 90 00) addi r2,r2,-28672
++.*:.*
+ .*: (.. .. ff 4b|4b ff .. ..) bl .* <.*\.long_branch\.f1>
+ .*: (18 00 41 e8|e8 41 00 18) ld r2,24\(r1\)
+ .*: (.. .. ff 4b|4b ff .. ..) bl .* <f2\+0x8>
+@@ -73,7 +73,7 @@ Disassembly of section \.text:
+
+ .* <g2>:
+ .*: (02 10 40 3c|3c 40 10 02) lis r2,4098
+-.*: (00 90 42 38|38 42 90 00) addi r2,r2,-28672
++.*:.*
+ .*: (.. .. ff 4b|4b ff .. ..) bl .* <f2\+0x8>
+ .*: (00 00 00 60|60 00 00 00) nop
+ .*: (.. .. ff 4b|4b ff .. ..) bl .* <.*\.long_branch\.f1>
+@@ -92,6 +92,6 @@ Disassembly of section \.text\.ext:
+
+ 8000000000000000 <ext>:
+ 8000000000000000: (02 10 40 3c|3c 40 10 02) lis r2,4098
+-8000000000000004: (00 90 42 38|38 42 90 00) addi r2,r2,-28672
++8000000000000004:.*
+ 8000000000000008: (00 00 00 60|60 00 00 00) nop
+ 800000000000000c: (20 00 80 4e|4e 80 00 20) blr
+diff -rup binutils.orig/ld/testsuite/ld-powerpc/pr23937.d binutils-2.37/ld/testsuite/ld-powerpc/pr23937.d
+--- binutils.orig/ld/testsuite/ld-powerpc/pr23937.d 2021-07-20 15:22:27.828562108 +0100
++++ binutils-2.37/ld/testsuite/ld-powerpc/pr23937.d 2021-07-20 15:40:52.012401643 +0100
+@@ -6,5 +6,4 @@
+ #...
+ .* R_PPC64_IRELATIVE +10000180
+ #...
+-.*: 0+10000180 +20 IFUNC +LOCAL +DEFAULT .* magic
+ #pass
+diff -rup binutils.orig/ld/testsuite/ld-powerpc/tlsexe32.r binutils-2.37/ld/testsuite/ld-powerpc/tlsexe32.r
+--- binutils.orig/ld/testsuite/ld-powerpc/tlsexe32.r 2021-07-20 15:22:27.824562131 +0100
++++ binutils-2.37/ld/testsuite/ld-powerpc/tlsexe32.r 2021-07-20 15:35:59.630032873 +0100
+@@ -22,7 +22,8 @@ Section Headers:
+ +\[[ 0-9]+\] \.dynamic +DYNAMIC +[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 08 +WA +4 +0 +4
+ +\[[ 0-9]+\] \.got +PROGBITS +[0-9a-f]+ [0-9a-f]+ 000018 04 +WA +0 +0 +4
+ +\[[ 0-9]+\] \.plt +PROGBITS +[0-9a-f]+ [0-9a-f]+ 000004 00 +WA +0 +0 +4
+- +\[[ 0-9]+\] \.symtab +SYMTAB +.*
++#pass
+++\[[ 0-9]+\] \.symtab +SYMTAB +.*
+ +\[[ 0-9]+\] \.strtab +STRTAB +.*
+ +\[[ 0-9]+\] \.shstrtab +STRTAB +.*
+ #...
+diff -rup binutils.orig/ld/testsuite/ld-powerpc/tlsexe32no.r binutils-2.37/ld/testsuite/ld-powerpc/tlsexe32no.r
+--- binutils.orig/ld/testsuite/ld-powerpc/tlsexe32no.r 2021-07-20 15:22:27.826562119 +0100
++++ binutils-2.37/ld/testsuite/ld-powerpc/tlsexe32no.r 2021-07-20 15:36:34.541838084 +0100
+@@ -22,6 +22,7 @@ Section Headers:
+ +\[[ 0-9]+\] \.dynamic +DYNAMIC +[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 08 +WA +4 +0 +4
+ +\[[ 0-9]+\] \.got +PROGBITS +[0-9a-f]+ [0-9a-f]+ 000038 04 +WA +0 +0 +4
+ +\[[ 0-9]+\] \.plt +PROGBITS +[0-9a-f]+ [0-9a-f]+ 000004 00 +WA +0 +0 +4
++#pass
+ +\[[ 0-9]+\] \.symtab +SYMTAB +.*
+ +\[[ 0-9]+\] \.strtab +STRTAB +.*
+ +\[[ 0-9]+\] \.shstrtab +STRTAB +.*
+diff -rup binutils.orig/ld/testsuite/ld-powerpc/tlsso32.r binutils-2.37/ld/testsuite/ld-powerpc/tlsso32.r
+--- binutils.orig/ld/testsuite/ld-powerpc/tlsso32.r 2021-07-20 15:22:27.825562125 +0100
++++ binutils-2.37/ld/testsuite/ld-powerpc/tlsso32.r 2021-07-20 15:37:05.434665742 +0100
+@@ -20,6 +20,7 @@ Section Headers:
+ +\[[ 0-9]+\] \.dynamic +DYNAMIC .* 08 +WA +3 +0 +4
+ +\[[ 0-9]+\] \.got +PROGBITS .* 0+40 04 +WA +0 +0 +4
+ +\[[ 0-9]+\] \.plt +PROGBITS .* 0+4 00 +WA +0 +0 +4
++#pass
+ +\[[ 0-9]+\] \.symtab +.*
+ +\[[ 0-9]+\] \.strtab +.*
+ +\[[ 0-9]+\] \.shstrtab +.*
+--- binutils.orig/ld/testsuite/ld-ifunc/ifunc.exp 2021-07-20 16:24:17.370869076 +0100
++++ binutils-2.37/ld/testsuite/ld-ifunc/ifunc.exp 2021-07-20 16:24:31.069792658 +0100
+@@ -39,6 +39,7 @@ if { ![is_elf_format] || ![supports_gnu_
+ || [istarget nds32*-*-*]
+ || [istarget nios2-*-*]
+ || [istarget or1k-*-*]
++ || [istarget powerpc*-*-*]
+ || [istarget ppc*-*-*]
+ || [istarget score*-*-*]
+ || [istarget sh*-*-*]
+--- binutils.orig/ld/testsuite/ld-plugin/plugin.exp 2021-07-20 16:24:17.380869020 +0100
++++ binutils-2.37/ld/testsuite/ld-plugin/plugin.exp 2021-07-20 16:25:58.558304600 +0100
+@@ -308,7 +308,7 @@ if { !$can_compile || $failed_compile }
+ run_ld_link_tests $plugin_tests
+
+ if { [is_elf_format] \
+- && ! [istarget ppc64*-*-*]
++ && ! [istarget ppc64*-*-*] && ! [istarget powerpc*-*-*]
+ && [ld_compile "$CC $CFLAGS" $srcdir/$subdir/func1p.c tmpdir/func1p.o] \
+ && [ld_compile "$CC $CFLAGS" $srcdir/$subdir/func2i.c tmpdir/func2i.o] \
+ && [ld_compile "$CC $CFLAGS" $srcdir/$subdir/func3h.c tmpdir/func3h.o] } {
+--- binutils.orig/ld/testsuite/ld-powerpc/group1.sym 2021-07-20 16:24:17.384868997 +0100
++++ binutils-2.37/ld/testsuite/ld-powerpc/group1.sym 2021-07-20 16:27:36.604757678 +0100
+@@ -1,2 +1 @@
+-#...
+ #pass
+--- binutils.orig/ld/testsuite/ld-powerpc/group3.sym 2021-07-20 16:24:17.389868970 +0100
++++ binutils-2.37/ld/testsuite/ld-powerpc/group3.sym 2021-07-20 16:28:33.372441000 +0100
+@@ -1,2 +1 @@
+-#...
+ #pass
+--- binutils.orig/ld/testsuite/ld-powerpc/pr23937.d 2021-07-20 16:24:17.386868986 +0100
++++ binutils-2.37/ld/testsuite/ld-powerpc/pr23937.d 2021-07-20 16:29:00.604289085 +0100
+@@ -5,5 +5,4 @@
+
+ #...
+ .* R_PPC64_IRELATIVE +10000180
+-#...
+ #pass
+--- binutils.orig/ld/testsuite/ld-elf/pr26580-3.out 2021-07-20 17:07:36.952369125 +0100
++++ binutils-2.37/ld/testsuite/ld-elf/pr26580-3.out 2021-07-20 17:13:39.069350355 +0100
+@@ -1,2 +1,2 @@
+ library not loaded
+-alignment 1
++alignment .
+--- binutils.orig/ld/testsuite/ld-elf/shared.exp 2021-07-20 17:07:36.950369136 +0100
++++ binutils-2.37/ld/testsuite/ld-elf/shared.exp 2021-07-20 17:16:04.267540887 +0100
+@@ -1536,18 +1536,6 @@ if { [istarget *-*-linux*]
+ "pr22393-2-static" \
+ "pass.out" \
+ ] \
+- [list \
+- "Run pr21964-4" \
+- "" \
+- "" \
+- {pr21964-4.c} \
+- "pr21964-4" \
+- "pass.out" \
+- "" \
+- "" \
+- "" \
+- "-ldl" \
+- ] \
+ ]
+ }
+
+--- binutils.orig/ld/testsuite/ld-elf/tls.exp 2021-07-20 17:07:36.953369120 +0100
++++ binutils-2.37/ld/testsuite/ld-elf/tls.exp 2021-07-20 17:20:40.443001211 +0100
+@@ -32,6 +32,9 @@ if { !([istarget *-*-linux*]
+ if { ![check_compiler_available] } {
+ return
+ }
++if { [istarget s390x*-*-*] } {
++ return
++}
+
+ # This target requires extra GAS options when building PIC/PIE code.
+ set AFLAGS_PIC ""
+--- binutils.orig/binutils/testsuite/binutils-all/compress.exp 2021-08-18 12:41:47.036991908 +0100
++++ binutils-2.37/binutils/testsuite/binutils-all/compress.exp 2021-08-18 12:47:46.097987950 +0100
+@@ -766,12 +766,6 @@ proc test_gnu_debuglink {} {
+ } else {
+ pass "$test (objdump with missing link)"
+ }
+- set got [remote_exec host [concat sh -c [list "$READELF -S tmpdir/testprog > /dev/null"]]]
+- if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]] } then {
+- fail "$test (readelf with missing link)"
+- } else {
+- pass "$test (readelf with missing link)"
+- }
+ }
+
+ if {[is_elf_format]} then {
diff --git a/source/d/binutils/patches/binutils-2.25-set-long-long.patch b/source/d/binutils/patches/binutils-use-long-long.patch
index 1ea74181..1ea74181 100644
--- a/source/d/binutils/patches/binutils-2.25-set-long-long.patch
+++ b/source/d/binutils/patches/binutils-use-long-long.patch
diff --git a/source/d/binutils/patches/binutils-2.25-version.patch b/source/d/binutils/patches/binutils-version.patch
index d97e81bc..d97e81bc 100644
--- a/source/d/binutils/patches/binutils-2.25-version.patch
+++ b/source/d/binutils/patches/binutils-version.patch
diff --git a/source/d/binutils/patches/binutils.export.demangle.h.diff b/source/d/binutils/patches/binutils.export.demangle.h.diff
deleted file mode 100644
index 8720da59..00000000
--- a/source/d/binutils/patches/binutils.export.demangle.h.diff
+++ /dev/null
@@ -1,30 +0,0 @@
---- ./bfd/Makefile.in.orig 2019-02-02 09:47:56.000000000 -0600
-+++ ./bfd/Makefile.in 2019-02-02 14:10:55.709944225 -0600
-@@ -249,7 +249,7 @@
- esac
- am__bfdinclude_HEADERS_DIST = $(INCDIR)/plugin-api.h bfd.h \
- $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h bfd_stdint.h \
-- $(INCDIR)/diagnostics.h $(INCDIR)/bfdlink.h
-+ $(INCDIR)/diagnostics.h $(INCDIR)/bfdlink.h $(INCDIR)/demangle.h
- HEADERS = $(bfdinclude_HEADERS)
- RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
- distclean-recursive maintainer-clean-recursive
-@@ -469,6 +469,7 @@
- @INSTALL_LIBBFD_TRUE@bfdinclude_HEADERS = $(BFD_H) \
- @INSTALL_LIBBFD_TRUE@ $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h \
- @INSTALL_LIBBFD_TRUE@ bfd_stdint.h $(INCDIR)/diagnostics.h \
-+@INSTALL_LIBBFD_TRUE@ $(INCDIR)/demangle.h \
- @INSTALL_LIBBFD_TRUE@ $(INCDIR)/bfdlink.h $(am__append_2)
- @INSTALL_LIBBFD_FALSE@rpath_bfdlibdir = @bfdlibdir@
- @INSTALL_LIBBFD_FALSE@noinst_LTLIBRARIES = libbfd.la
---- ./bfd/Makefile.am.orig 2019-01-19 10:01:32.000000000 -0600
-+++ ./bfd/Makefile.am 2019-02-02 14:09:28.363952384 -0600
-@@ -33,7 +33,7 @@
- bfdincludedir = @bfdincludedir@
- bfdlib_LTLIBRARIES = libbfd.la
- bfdinclude_HEADERS = $(BFD_H) $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h \
-- bfd_stdint.h $(INCDIR)/diagnostics.h $(INCDIR)/bfdlink.h
-+ bfd_stdint.h $(INCDIR)/diagnostics.h $(INCDIR)/bfdlink.h $(INCDIR)/demangle.h
- else !INSTALL_LIBBFD
- # Empty these so that the respective installation directories will not be created.
- bfdlibdir =
diff --git a/source/d/binutils/patches/binutils.no-config-h-check.diff b/source/d/binutils/patches/binutils.no-config-h-check.diff
deleted file mode 100644
index b64c909d..00000000
--- a/source/d/binutils/patches/binutils.no-config-h-check.diff
+++ /dev/null
@@ -1,14 +0,0 @@
---- ./bfd/bfd-in2.h.orig 2021-01-30 02:38:03.000000000 -0600
-+++ ./bfd/bfd-in2.h 2021-01-30 13:55:37.309054947 -0600
-@@ -30,11 +30,6 @@
- #ifndef __BFD_H_SEEN__
- #define __BFD_H_SEEN__
-
--/* PR 14072: Ensure that config.h is included first. */
--#if !defined PACKAGE && !defined PACKAGE_VERSION
--#error config.h must be included before this header
--#endif
--
- #ifdef __cplusplus
- extern "C" {
- #endif
diff --git a/source/d/oprofile/oprofile.SlackBuild b/source/d/oprofile/oprofile.SlackBuild
index 079b8e69..cbd42ed2 100755
--- a/source/d/oprofile/oprofile.SlackBuild
+++ b/source/d/oprofile/oprofile.SlackBuild
@@ -24,7 +24,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=oprofile
VERSION=${VERSION:-$(echo oprofile-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
-BUILD=${BUILD:-7}
+BUILD=${BUILD:-8}
NUMJOBS=${NUMJOBS:-" -j$(expr $(nproc) + 1) "}
diff --git a/source/kde/kde/build/sddm b/source/kde/kde/build/sddm
index 7f8f011e..45a4fb75 100644
--- a/source/kde/kde/build/sddm
+++ b/source/kde/kde/build/sddm
@@ -1 +1 @@
-7
+8
diff --git a/source/kde/kde/patch/sddm.patch b/source/kde/kde/patch/sddm.patch
index 5c905557..319bad68 100644
--- a/source/kde/kde/patch/sddm.patch
+++ b/source/kde/kde/patch/sddm.patch
@@ -9,3 +9,6 @@ cat $CWD/patch/sddm/sddm.do.not.source.HOME.xsession.diff | patch -p1 --verbose
# List Wayland sessions after X11 sessions since Wayland is more experimental:
cat $CWD/patch/sddm/sddm.list.X11.sessions.before.Wayland.Sessions.diff | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
+
+# Fix build with Qt from git:
+cat $CWD/patch/sddm/sddm.fix.build.diff | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
diff --git a/source/kde/kde/patch/sddm/sddm.fix.build.diff b/source/kde/kde/patch/sddm/sddm.fix.build.diff
new file mode 100644
index 00000000..b481cfa6
--- /dev/null
+++ b/source/kde/kde/patch/sddm/sddm.fix.build.diff
@@ -0,0 +1,11 @@
+--- ./src/daemon/XorgDisplayServer.cpp.orig 2020-11-03 03:49:10.000000000 -0600
++++ ./src/daemon/XorgDisplayServer.cpp 2021-08-29 11:36:20.356811948 -0500
+@@ -65,7 +65,7 @@
+ // create a random hexadecimal number
+ const char *digits = "0123456789abcdef";
+ for (int i = 0; i < 32; ++i)
+- m_cookie[i] = digits[dis(gen)];
++ m_cookie[i] = QLatin1Char(digits[dis(gen)]);
+ }
+
+ XorgDisplayServer::~XorgDisplayServer() {
diff --git a/source/l/cryfs/041b5baea5a4efceff33df2f316646b47a1cd7c0.patch b/source/l/cryfs/041b5baea5a4efceff33df2f316646b47a1cd7c0.patch
deleted file mode 100644
index 22d8b344..00000000
--- a/source/l/cryfs/041b5baea5a4efceff33df2f316646b47a1cd7c0.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 041b5baea5a4efceff33df2f316646b47a1cd7c0 Mon Sep 17 00:00:00 2001
-From: Sam James <11667869+thesamesam@users.noreply.github.com>
-Date: Sat, 14 Aug 2021 17:29:24 +0100
-Subject: [PATCH] src/fspp/fuse/Fuse.h: add <memory.h> include for
- std::shared_ptr (#395)
-
-Needed to fix build with Boost 1.77 (some indirect inclusion
-got lost).
-
-Signed-off-by: Sam James <sam@gentoo.org>
----
- src/fspp/fuse/Fuse.h | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/fspp/fuse/Fuse.h b/src/fspp/fuse/Fuse.h
-index 2dd3c2d4d..3841e38a4 100644
---- a/src/fspp/fuse/Fuse.h
-+++ b/src/fspp/fuse/Fuse.h
-@@ -11,6 +11,7 @@
- #include <boost/optional.hpp>
- #include <cpp-utils/macros.h>
- #include <atomic>
-+#include <memory>
- #include "stat_compatibility.h"
- #include <fspp/fs_interface/Context.h>
-
-
diff --git a/source/l/cryfs/27587ea1acec5f939a31217f1c43953378f18821.patch b/source/l/cryfs/27587ea1acec5f939a31217f1c43953378f18821.patch
deleted file mode 100644
index 0d739b07..00000000
--- a/source/l/cryfs/27587ea1acec5f939a31217f1c43953378f18821.patch
+++ /dev/null
@@ -1,297 +0,0 @@
-From 27587ea1acec5f939a31217f1c43953378f18821 Mon Sep 17 00:00:00 2001
-From: Sebastian Messmer <messmer@cryfs.org>
-Date: Sat, 8 May 2021 14:44:27 -0700
-Subject: [PATCH] Fixed an issue when compiling with GCC 11, see
- https://github.com/cryfs/cryfs/issues/389
-
----
- ChangeLog.txt | 5 ++
- .../onblocks/datanodestore/DataNodeView.h | 8 +--
- .../filesystem/fsblobstore/utils/DirEntry.cpp | 66 +++++++++----------
- src/cryfs/localstate/LocalStateMetadata.cpp | 24 +++----
- src/cryfs/localstate/LocalStateMetadata.h | 10 +--
- 5 files changed, 59 insertions(+), 54 deletions(-)
-
-diff --git a/ChangeLog.txt b/ChangeLog.txt
-index f9776eb93..9d7a6708c 100644
---- a/ChangeLog.txt
-+++ b/ChangeLog.txt
-@@ -1,3 +1,8 @@
-+Version 0.10.4 (unreleased)
-+--------------
-+Fixed bugs:
-+* Fixed an issue when compiling with GCC 11, see https://github.com/cryfs/cryfs/issues/389
-+
- Version 0.10.3
- ---------------
- Fixed bugs:
-diff --git a/src/blobstore/implementations/onblocks/datanodestore/DataNodeView.h b/src/blobstore/implementations/onblocks/datanodestore/DataNodeView.h
-index 256c28495..3799612e3 100644
---- a/src/blobstore/implementations/onblocks/datanodestore/DataNodeView.h
-+++ b/src/blobstore/implementations/onblocks/datanodestore/DataNodeView.h
-@@ -67,7 +67,7 @@ class DataNodeView final {
-
- static DataNodeView create(blockstore::BlockStore *blockStore, const DataNodeLayout &layout, uint16_t formatVersion, uint8_t depth, uint32_t size, cpputils::Data data) {
- ASSERT(data.size() <= layout.datasizeBytes(), "Data is too large for node");
-- cpputils::Data serialized = _serialize(layout, formatVersion, depth, size, std::move(data));
-+ cpputils::Data serialized = serialize_(layout, formatVersion, depth, size, std::move(data));
- ASSERT(serialized.size() == layout.blocksizeBytes(), "Wrong block size");
- auto block = blockStore->create(serialized);
- return DataNodeView(std::move(block));
-@@ -75,7 +75,7 @@ class DataNodeView final {
-
- static DataNodeView initialize(cpputils::unique_ref<blockstore::Block> block, const DataNodeLayout &layout, uint16_t formatVersion, uint8_t depth, uint32_t size, cpputils::Data data) {
- ASSERT(data.size() <= DataNodeLayout(block->size()).datasizeBytes(), "Data is too large for node");
-- cpputils::Data serialized = _serialize(layout, formatVersion, depth, size, std::move(data));
-+ cpputils::Data serialized = serialize_(layout, formatVersion, depth, size, std::move(data));
- ASSERT(serialized.size() == block->size(), "Block has wrong size");
- block->write(serialized.data(), 0, serialized.size());
- return DataNodeView(std::move(block));
-@@ -83,7 +83,7 @@ class DataNodeView final {
-
- static DataNodeView overwrite(blockstore::BlockStore *blockStore, const DataNodeLayout &layout, uint16_t formatVersion, uint8_t depth, uint32_t size, const blockstore::BlockId &blockId, cpputils::Data data) {
- ASSERT(data.size() <= layout.datasizeBytes(), "Data is too large for node");
-- cpputils::Data serialized = _serialize(layout, formatVersion, depth, size, std::move(data));
-+ cpputils::Data serialized = serialize_(layout, formatVersion, depth, size, std::move(data));
- auto block = blockStore->overwrite(blockId, std::move(serialized));
- return DataNodeView(std::move(block));
- }
-@@ -143,7 +143,7 @@ class DataNodeView final {
- }
-
- private:
-- static cpputils::Data _serialize(const DataNodeLayout &layout, uint16_t formatVersion, uint8_t depth, uint32_t size, cpputils::Data data) {
-+ static cpputils::Data serialize_(const DataNodeLayout &layout, uint16_t formatVersion, uint8_t depth, uint32_t size, cpputils::Data data) {
- cpputils::Data result(layout.blocksizeBytes());
- cpputils::serialize<uint16_t>(result.dataOffset(layout.FORMAT_VERSION_OFFSET_BYTES), formatVersion);
- cpputils::serialize<uint8_t>(result.dataOffset(layout.DEPTH_OFFSET_BYTES), depth);
-diff --git a/src/cryfs/filesystem/fsblobstore/utils/DirEntry.cpp b/src/cryfs/filesystem/fsblobstore/utils/DirEntry.cpp
-index 941148db9..70dd5a560 100644
---- a/src/cryfs/filesystem/fsblobstore/utils/DirEntry.cpp
-+++ b/src/cryfs/filesystem/fsblobstore/utils/DirEntry.cpp
-@@ -11,55 +11,55 @@ namespace cryfs {
-
- namespace {
- template<typename DataType>
-- size_t _serialize(void* dst, const DataType& obj) {
-+ size_t serialize_(void* dst, const DataType& obj) {
- cpputils::serialize<DataType>(dst, obj);
- return sizeof(DataType);
- }
-
- template<typename DataType>
-- DataType _deserialize(const char** src) {
-+ DataType deserialize_(const char** src) {
- DataType result = cpputils::deserialize<DataType>(*src);
- *src += sizeof(DataType);
- return result;
- }
-
-- constexpr size_t _serializedTimeValueSize() {
-+ constexpr size_t serializedTimeValueSize_() {
- return sizeof(uint64_t) + sizeof(uint32_t);
- }
-
-- unsigned int _serializeTimeValue(uint8_t *dest, timespec value) {
-+ unsigned int serializeTimeValue_(uint8_t *dest, timespec value) {
- unsigned int offset = 0;
-- offset += _serialize<uint64_t>(dest + offset, value.tv_sec);
-- offset += _serialize<uint32_t>(dest + offset, value.tv_nsec);
-- ASSERT(offset == _serializedTimeValueSize(), "serialized to wrong size");
-+ offset += serialize_<uint64_t>(dest + offset, value.tv_sec);
-+ offset += serialize_<uint32_t>(dest + offset, value.tv_nsec);
-+ ASSERT(offset == serializedTimeValueSize_(), "serialized to wrong size");
- return offset;
- }
-
-- timespec _deserializeTimeValue(const char **pos) {
-+ timespec deserializeTimeValue_(const char **pos) {
- timespec value{};
-- value.tv_sec = _deserialize<uint64_t>(pos);
-- value.tv_nsec = _deserialize<uint32_t>(pos);
-+ value.tv_sec = deserialize_<uint64_t>(pos);
-+ value.tv_nsec = deserialize_<uint32_t>(pos);
- return value;
- }
-
-- unsigned int _serializeString(uint8_t *dest, const string &value) {
-+ unsigned int serializeString_(uint8_t *dest, const string &value) {
- std::memcpy(dest, value.c_str(), value.size()+1);
- return value.size() + 1;
- }
-
-- string _deserializeString(const char **pos) {
-+ string deserializeString_(const char **pos) {
- size_t length = strlen(*pos);
- string value(*pos, length);
- *pos += length + 1;
- return value;
- }
-
-- unsigned int _serializeBlockId(uint8_t *dest, const BlockId &blockId) {
-+ unsigned int serializeBlockId_(uint8_t *dest, const BlockId &blockId) {
- blockId.ToBinary(dest);
- return blockId.BINARY_LENGTH;
- }
-
-- BlockId _deserializeBlockId(const char **pos) {
-+ BlockId deserializeBlockId_(const char **pos) {
- BlockId blockId = BlockId::FromBinary(*pos);
- *pos += BlockId::BINARY_LENGTH;
- return blockId;
-@@ -75,35 +75,35 @@ namespace cryfs {
- _mode.hasDirFlag()) + ", " + std::to_string(_mode.hasSymlinkFlag()) + ", " + std::to_string(static_cast<uint8_t>(_type))
- );
- unsigned int offset = 0;
-- offset += _serialize<uint8_t>(dest + offset, static_cast<uint8_t>(_type));
-- offset += _serialize<uint32_t>(dest + offset, _mode.value());
-- offset += _serialize<uint32_t>(dest + offset, _uid.value());
-- offset += _serialize<uint32_t>(dest + offset, _gid.value());
-- offset += _serializeTimeValue(dest + offset, _lastAccessTime);
-- offset += _serializeTimeValue(dest + offset, _lastModificationTime);
-- offset += _serializeTimeValue(dest + offset, _lastMetadataChangeTime);
-- offset += _serializeString(dest + offset, _name);
-- offset += _serializeBlockId(dest + offset, _blockId);
-+ offset += serialize_<uint8_t>(dest + offset, static_cast<uint8_t>(_type));
-+ offset += serialize_<uint32_t>(dest + offset, _mode.value());
-+ offset += serialize_<uint32_t>(dest + offset, _uid.value());
-+ offset += serialize_<uint32_t>(dest + offset, _gid.value());
-+ offset += serializeTimeValue_(dest + offset, _lastAccessTime);
-+ offset += serializeTimeValue_(dest + offset, _lastModificationTime);
-+ offset += serializeTimeValue_(dest + offset, _lastMetadataChangeTime);
-+ offset += serializeString_(dest + offset, _name);
-+ offset += serializeBlockId_(dest + offset, _blockId);
- ASSERT(offset == serializedSize(), "Didn't write correct number of elements");
- }
-
- const char *DirEntry::deserializeAndAddToVector(const char *pos, vector<DirEntry> *result) {
-- fspp::Dir::EntryType type = static_cast<fspp::Dir::EntryType>(_deserialize<uint8_t>(&pos));
-- fspp::mode_t mode = fspp::mode_t(_deserialize<uint32_t>(&pos));
-- fspp::uid_t uid = fspp::uid_t(_deserialize<uint32_t>(&pos));
-- fspp::gid_t gid = fspp::gid_t(_deserialize<uint32_t>(&pos));
-- timespec lastAccessTime = _deserializeTimeValue(&pos);
-- timespec lastModificationTime = _deserializeTimeValue(&pos);
-- timespec lastMetadataChangeTime = _deserializeTimeValue(&pos);
-- string name = _deserializeString(&pos);
-- BlockId blockId = _deserializeBlockId(&pos);
-+ fspp::Dir::EntryType type = static_cast<fspp::Dir::EntryType>(deserialize_<uint8_t>(&pos));
-+ fspp::mode_t mode = fspp::mode_t(deserialize_<uint32_t>(&pos));
-+ fspp::uid_t uid = fspp::uid_t(deserialize_<uint32_t>(&pos));
-+ fspp::gid_t gid = fspp::gid_t(deserialize_<uint32_t>(&pos));
-+ timespec lastAccessTime = deserializeTimeValue_(&pos);
-+ timespec lastModificationTime = deserializeTimeValue_(&pos);
-+ timespec lastMetadataChangeTime = deserializeTimeValue_(&pos);
-+ string name = deserializeString_(&pos);
-+ BlockId blockId = deserializeBlockId_(&pos);
-
- result->emplace_back(type, name, blockId, mode, uid, gid, lastAccessTime, lastModificationTime, lastMetadataChangeTime);
- return pos;
- }
-
- size_t DirEntry::serializedSize() const {
-- return 1 + sizeof(uint32_t) + sizeof(uint32_t) + sizeof(uint32_t) + 3*_serializedTimeValueSize() + (
-+ return 1 + sizeof(uint32_t) + sizeof(uint32_t) + sizeof(uint32_t) + 3*serializedTimeValueSize_() + (
- _name.size() + 1) + _blockId.BINARY_LENGTH;
- }
- }
-diff --git a/src/cryfs/localstate/LocalStateMetadata.cpp b/src/cryfs/localstate/LocalStateMetadata.cpp
-index 529a26129..dfa952a1a 100644
---- a/src/cryfs/localstate/LocalStateMetadata.cpp
-+++ b/src/cryfs/localstate/LocalStateMetadata.cpp
-@@ -30,10 +30,10 @@ LocalStateMetadata::LocalStateMetadata(uint32_t myClientId, Hash encryptionKeyHa
-
- LocalStateMetadata LocalStateMetadata::loadOrGenerate(const bf::path &statePath, const Data& encryptionKey, bool allowReplacedFilesystem) {
- auto metadataFile = statePath / "metadata";
-- auto loaded = _load(metadataFile);
-+ auto loaded = load_(metadataFile);
- if (loaded == none) {
- // If it couldn't be loaded, generate a new client id.
-- return _generate(metadataFile, encryptionKey);
-+ return generate_(metadataFile, encryptionKey);
- }
-
- if (!allowReplacedFilesystem && loaded->_encryptionKeyHash.digest != cpputils::hash::hash(encryptionKey, loaded->_encryptionKeyHash.salt).digest) {
-@@ -42,22 +42,22 @@ LocalStateMetadata LocalStateMetadata::loadOrGenerate(const bf::path &statePath,
- return *loaded;
- }
-
--optional<LocalStateMetadata> LocalStateMetadata::_load(const bf::path &metadataFilePath) {
-+optional<LocalStateMetadata> LocalStateMetadata::load_(const bf::path &metadataFilePath) {
- ifstream file(metadataFilePath.string());
- if (!file.good()) {
- // State file doesn't exist
- return none;
- }
-- return _deserialize(file);
-+ return deserialize_(file);
- }
-
--void LocalStateMetadata::_save(const bf::path &metadataFilePath) const {
-+void LocalStateMetadata::save_(const bf::path &metadataFilePath) const {
- ofstream file(metadataFilePath.string(), std::ios::trunc);
-- _serialize(file);
-+ serialize_(file);
- }
-
- namespace {
--uint32_t _generateClientId() {
-+uint32_t generateClientId_() {
- uint32_t result;
- do {
- result = cpputils::deserialize<uint32_t>(Random::PseudoRandom().getFixedSize<sizeof(uint32_t)>().data());
-@@ -82,8 +82,8 @@ optional<uint32_t> _tryLoadClientIdFromLegacyFile(const bf::path &metadataFilePa
- #endif
- }
-
--LocalStateMetadata LocalStateMetadata::_generate(const bf::path &metadataFilePath, const Data& encryptionKey) {
-- uint32_t myClientId = _generateClientId();
-+LocalStateMetadata LocalStateMetadata::generate_(const bf::path &metadataFilePath, const Data& encryptionKey) {
-+ uint32_t myClientId = generateClientId_();
- #ifndef CRYFS_NO_COMPATIBILITY
- // In the old format, this was stored in a "myClientId" file. If that file exists, load it from there.
- optional<uint32_t> legacy = _tryLoadClientIdFromLegacyFile(metadataFilePath);
-@@ -93,11 +93,11 @@ LocalStateMetadata LocalStateMetadata::_generate(const bf::path &metadataFilePat
- #endif
-
- LocalStateMetadata result(myClientId, cpputils::hash::hash(encryptionKey, cpputils::hash::generateSalt()));
-- result._save(metadataFilePath);
-+ result.save_(metadataFilePath);
- return result;
- }
-
--void LocalStateMetadata::_serialize(ostream& stream) const {
-+void LocalStateMetadata::serialize_(ostream& stream) const {
- ptree pt;
- pt.put<uint32_t>("myClientId", myClientId());
- pt.put<string>("encryptionKey.salt", _encryptionKeyHash.salt.ToString());
-@@ -106,7 +106,7 @@ void LocalStateMetadata::_serialize(ostream& stream) const {
- write_json(stream, pt);
- }
-
--LocalStateMetadata LocalStateMetadata::_deserialize(istream& stream) {
-+LocalStateMetadata LocalStateMetadata::deserialize_(istream& stream) {
- try {
- ptree pt;
- read_json(stream, pt);
-diff --git a/src/cryfs/localstate/LocalStateMetadata.h b/src/cryfs/localstate/LocalStateMetadata.h
-index 8b0ffc662..c06b0f05b 100644
---- a/src/cryfs/localstate/LocalStateMetadata.h
-+++ b/src/cryfs/localstate/LocalStateMetadata.h
-@@ -20,11 +20,11 @@ class LocalStateMetadata final {
- const uint32_t _myClientId;
- const cpputils::hash::Hash _encryptionKeyHash;
-
-- static boost::optional<LocalStateMetadata> _load(const boost::filesystem::path &metadataFilePath);
-- static LocalStateMetadata _deserialize(std::istream& stream);
-- static LocalStateMetadata _generate(const boost::filesystem::path &metadataFilePath, const cpputils::Data& encryptionKey);
-- void _save(const boost::filesystem::path &metadataFilePath) const;
-- void _serialize(std::ostream& stream) const;
-+ static boost::optional<LocalStateMetadata> load_(const boost::filesystem::path &metadataFilePath);
-+ static LocalStateMetadata deserialize_(std::istream& stream);
-+ static LocalStateMetadata generate_(const boost::filesystem::path &metadataFilePath, const cpputils::Data& encryptionKey);
-+ void save_(const boost::filesystem::path &metadataFilePath) const;
-+ void serialize_(std::ostream& stream) const;
-
- LocalStateMetadata(uint32_t myClientId, cpputils::hash::Hash encryptionKey);
- };
-
diff --git a/source/l/cryfs/cryfs.SlackBuild b/source/l/cryfs/cryfs.SlackBuild
index e37b529b..9738ab4f 100755
--- a/source/l/cryfs/cryfs.SlackBuild
+++ b/source/l/cryfs/cryfs.SlackBuild
@@ -1,7 +1,7 @@
#!/bin/bash
# Copyright 2018, 2019, 2020 Eric Hameleers, Eindhoven, NL
-# Copyright 2020 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2020, 2021 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -25,7 +25,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=cryfs
VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
-BUILD=${BUILD:-3}
+BUILD=${BUILD:-1}
# Automatically determine the architecture we're building on:
if [ -z "$ARCH" ]; then
@@ -89,12 +89,6 @@ find . \
# Oddly, cryfs expects a static boost, so we'll need to hit it with the LART:
export LDFLAGS="$SLKLDFLAGS -lboost_thread -lboost_program_options -lboost_filesystem -lboost_chrono -lcryptopp -lfuse"
-# gcc11 fixes:
-zcat $CWD/27587ea1acec5f939a31217f1c43953378f18821.patch.gz | patch -p1 --verbose || exit 1
-
-# Boost 1.77.0 fix:
-zcat $CWD/041b5baea5a4efceff33df2f316646b47a1cd7c0.patch.gz | patch -p1 --verbose || exit 1
-
# Configure, build, and install:
mkdir cmake-build
cd cmake-build
diff --git a/source/l/libssh/libssh.SlackBuild b/source/l/libssh/libssh.SlackBuild
index 984e3cc3..12176d97 100755
--- a/source/l/libssh/libssh.SlackBuild
+++ b/source/l/libssh/libssh.SlackBuild
@@ -25,7 +25,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=libssh
VERSION=${VERSION:-$(echo $PKGNAM-*.tar.xz | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
-BUILD=${BUILD:-3}
+BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:-" -j$(expr $(nproc) + 1) "}
diff --git a/source/l/libssh/libssh.url b/source/l/libssh/libssh.url
new file mode 100644
index 00000000..beed14c1
--- /dev/null
+++ b/source/l/libssh/libssh.url
@@ -0,0 +1 @@
+https://www.libssh.org/files
diff --git a/source/l/qt5/fetch_sources.sh b/source/l/qt5/fetch_sources.sh
new file mode 100755
index 00000000..7a17f888
--- /dev/null
+++ b/source/l/qt5/fetch_sources.sh
@@ -0,0 +1,58 @@
+#!/bin/bash
+
+# Copyright 2021 Heinz Wiesinger, Amsterdam, The Netherlands
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+BRANCH="5.15.3"
+
+rm -f qt-everywhere-src-*.tar*
+
+git clone https://invent.kde.org/qt/qt/qt5.git
+
+cd qt5
+ git checkout kde/5.15
+ ./init-repository
+
+ for i in $(find . -type d -name "qt*" -maxdepth 1); do
+ cd $i
+ ../qtbase/bin/syncqt.pl -version $BRANCH
+ cd ..
+ done
+
+ # Not in the release tarball for 5.15.2
+ rm -rf qtqa qtrepotools qtsystems qtpim qtfeedback qtdocgallery qtcanvas3d
+ rm -rf qtdatavis3d/tools qtcharts/tools
+ rm -f init-repository README.git .commit-template
+
+ VERSION="${BRANCH}_$(git log --format="%ad_%h" --date=short | head -n 1 | tr -d -)"
+ LONGDATE="$(git log -1 --format=%cd --date=format:%c )"
+
+cd ..
+
+mv qt5 qt-everywhere-src-$VERSION
+
+tar --exclude-vcs -cf qt-everywhere-src-$VERSION.tar qt-everywhere-src-$VERSION
+tar -cf qt5-gitmodules.tar qt-everywhere-src-$VERSION/**/.gitmodules qt-everywhere-src-$VERSION/.gitmodules
+tar --concatenate --file=qt-everywhere-src-$VERSION.tar qt5-gitmodules.tar
+plzip -9 -v qt-everywhere-src-$VERSION.tar
+touch -d "$LONGDATE" qt-everywhere-src-$VERSION.tar.lz
+
+rm -rf qt-everywhere-src-$VERSION
+rm -f qt5-gitmodules.tar
diff --git a/source/l/qt5/patches/0006-Fix-build-with-GCC-11-include-limits.patch b/source/l/qt5/patches/0006-Fix-build-with-GCC-11-include-limits.patch
deleted file mode 100644
index f014a160..00000000
--- a/source/l/qt5/patches/0006-Fix-build-with-GCC-11-include-limits.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From 9c56d4da2ff631a8c1c30475bd792f6c86bda53c Mon Sep 17 00:00:00 2001
-From: Thiago Macieira <thiago.macieira@intel.com>
-Date: Mon, 18 Jan 2021 07:40:54 -0800
-Subject: [PATCH] Fix build with GCC 11: include <limits>
-
-Fixes: QTBUG-90395
-Pick-to: 6.0
-Change-Id: Iecc74d2000eb40dfbe7bfffd165b5dd3708b7a40
-Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
-
-[Retrieved (and backported) from:
-https://github.com/qt/qtbase/commit/9c56d4da2ff631a8c1c30475bd792f6c86bda53c]
-Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
----
- src/corelib/global/qendian.h | 6 ++++--
- src/corelib/global/qfloat16.h | 1 +
- 2 files changed, 5 insertions(+), 2 deletions(-)
-
-diff --git a/src/corelib/global/qendian.h b/src/corelib/global/qendian.h
-index 99b529f17cd..c874c5e47ab 100644
---- a/src/corelib/global/qendian.h
-+++ b/src/corelib/global/qendian.h
-@@ -1,7 +1,7 @@
- /****************************************************************************
- **
--** Copyright (C) 2016 The Qt Company Ltd.
--** Copyright (C) 2016 Intel Corporation.
-+** Copyright (C) 2021 The Qt Company Ltd.
-+** Copyright (C) 2021 Intel Corporation.
- ** Contact: https://www.qt.io/licensing/
- **
- ** This file is part of the QtCore module of the Qt Toolkit.
-@@ -44,6 +44,8 @@
- #include <QtCore/qfloat16.h>
- #include <QtCore/qglobal.h>
-
-+#include <limits>
-+
- // include stdlib.h and hope that it defines __GLIBC__ for glibc-based systems
- #include <stdlib.h>
- #include <string.h>
-diff --git a/src/corelib/global/qfloat16.h b/src/corelib/global/qfloat16.h
-index e9477d2ecec..a25fac28862 100644
---- a/src/corelib/global/qfloat16.h
-+++ b/src/corelib/global/qfloat16.h
-@@ -44,6 +44,7 @@
-
- #include <QtCore/qglobal.h>
- #include <QtCore/qmetatype.h>
-+#include <limits>
- #include <string.h>
-
- #if defined(QT_COMPILER_SUPPORTS_F16C) && defined(__AVX2__) && !defined(__F16C__)
diff --git a/source/l/qt5/patches/qt5-qtdeclarative-gcc11.patch b/source/l/qt5/patches/qt5-qtdeclarative-gcc11.patch
deleted file mode 100644
index 91ea88b9..00000000
--- a/source/l/qt5/patches/qt5-qtdeclarative-gcc11.patch
+++ /dev/null
@@ -1,21 +0,0 @@
---- ./qtdeclarative/src/qml/jsruntime/qv4regexp_p.h.orig 2020-10-27 03:02:12.000000000 -0500
-+++ ./qtdeclarative/src/qml/jsruntime/qv4regexp_p.h 2021-08-05 13:38:38.366445122 -0500
-@@ -57,7 +57,7 @@
- #include <wtf/FastAllocBase.h>
- #include <wtf/BumpPointerAllocator.h>
-
--#include <limits.h>
-+#include <limits>
-
- #include <yarr/Yarr.h>
- #include <yarr/YarrInterpreter.h>
---- ./qtdeclarative/src/qmldebug/qqmlprofilerevent_p.h.orig 2020-10-27 03:02:12.000000000 -0500
-+++ ./qtdeclarative/src/qmldebug/qqmlprofilerevent_p.h 2021-08-05 13:39:39.671441731 -0500
-@@ -48,6 +48,7 @@
- #include <QtCore/qmetatype.h>
-
- #include <initializer_list>
-+#include <limits>
- #include <type_traits>
-
- //
diff --git a/source/l/qt5/patches/qtconcurrentthreadengine.h-gcc11.patch b/source/l/qt5/patches/qtconcurrentthreadengine.h-gcc11.patch
deleted file mode 100644
index 534b594d..00000000
--- a/source/l/qt5/patches/qtconcurrentthreadengine.h-gcc11.patch
+++ /dev/null
@@ -1,14 +0,0 @@
---- ./qtbase/src/concurrent/qtconcurrentthreadengine.h.orig 2020-10-27 03:02:11.000000000 -0500
-+++ ./qtbase/src/concurrent/qtconcurrentthreadengine.h 2021-08-05 14:20:37.774305766 -0500
-@@ -247,8 +247,9 @@
- class ThreadEngineStarter<void> : public ThreadEngineStarterBase<void>
- {
- public:
-- ThreadEngineStarter<void>(ThreadEngine<void> *_threadEngine)
-- :ThreadEngineStarterBase<void>(_threadEngine) {}
-+ ThreadEngineStarter(ThreadEngine<void> *_threadEngine)
-+ : ThreadEngineStarterBase<void>(_threadEngine) {}
-+
-
- void startBlocking()
- {
diff --git a/source/l/qt5/qt5.SlackBuild b/source/l/qt5/qt5.SlackBuild
index d6de2438..b17df2fd 100755
--- a/source/l/qt5/qt5.SlackBuild
+++ b/source/l/qt5/qt5.SlackBuild
@@ -31,7 +31,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=qt5
VERSION=$(ls qt-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)
-BUILD=${BUILD:-11}
+BUILD=${BUILD:-1}
PKGSRC=$(echo $VERSION | cut -d - -f 1)
PKGVER=$(echo $VERSION | tr - _)
@@ -102,8 +102,8 @@ rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
rm -rf qt-everywhere-src-$VERSION
-echo "Extracting qt-everywhere-src-$VERSION.tar.xz"
-tar xf $CWD/qt-everywhere-src-$VERSION.tar.xz || exit 1
+echo "Extracting qt-everywhere-src-$VERSION"
+tar xf $CWD/qt-everywhere-src-$VERSION.tar.?z* || exit 1
cd qt-everywhere-src-$PKGSRC || exit 1
chown -R root:root .
@@ -127,13 +127,10 @@ zcat $CWD/patches/qt5.mysql.h.diff.gz | patch -p1 --verbose || exit 1
# Fix build with gcc11:
cd qtbase
zcat $CWD/patches/qt5-qtbase-gcc11.patch.gz | patch -p1 --verbose || exit 1
- zcat $CWD/patches/0006-Fix-build-with-GCC-11-include-limits.patch.gz | patch -p1 --verbose || exit 1
cd - 1>/dev/null
-zcat $CWD/patches/qt5-qtdeclarative-gcc11.patch.gz | patch -p1 --verbose || exit 1
cd qtwebsockets
zcat $CWD/patches/qt5-qtwebsockets-gcc11.patch.gz | patch -p1 --verbose || exit 1
cd - 1>/dev/null
-zcat $CWD/patches/qtconcurrentthreadengine.h-gcc11.patch.gz | patch -p1 --verbose || exit 1
cd qtwebengine
zcat $CWD/patches/qt5-qtwebengine-gcc11.patch.gz | patch -p1 --verbose || exit 1
cd - 1>/dev/null
diff --git a/source/l/qt5/qt5.url b/source/l/qt5/qt5.url
deleted file mode 100644
index 7df396ed..00000000
--- a/source/l/qt5/qt5.url
+++ /dev/null
@@ -1 +0,0 @@
-https://download.qt.io/official_releases/qt