diff options
author | Patrick J Volkerding <volkerdi@slackware.com> | 2021-08-29 18:23:50 +0000 |
---|---|---|
committer | Eric Hameleers <alien@slackware.com> | 2021-08-30 08:59:55 +0200 |
commit | 34ba4d05d9d2b7f5d72aded4eb35aa617cb8629d (patch) | |
tree | fd24e6dc296552ed8ce520e595a71eea78e88e9c /source | |
parent | a685863802fc9764aefd5b07106f3e3e54b210a3 (diff) | |
download | current-34ba4d05d9d2b7f5d72aded4eb35aa617cb8629d.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')
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 |