public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] proj/toolchain/binutils-patches:master commit in: 9999/
@ 2020-05-19 21:12 Andreas K. Hüttel
  0 siblings, 0 replies; 39+ messages in thread
From: Andreas K. Hüttel @ 2020-05-19 21:12 UTC (permalink / raw
  To: gentoo-commits

commit:     b3b149f3d1d004f29ce9b3fdf1a636aae92c5d6f
Author:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
AuthorDate: Tue May 19 21:10:06 2020 +0000
Commit:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
CommitDate: Tue May 19 21:11:57 2020 +0000
URL:        https://gitweb.gentoo.org/proj/toolchain/binutils-patches.git/commit/?id=b3b149f3

Consolidate patches

Signed-off-by: Andreas K. Hüttel <dilfridge <AT> gentoo.org>

 ...oo-ld-always-warn-about-textrels-in-files.patch |   2 +-
 ...an-option-no-warn-shared-textrel-self-exp.patch |   2 +-
 ...-ld-add-support-for-poisoned-system-direc.patch |   2 +-
 ...iberty-install-PIC-version-of-libiberty.a.patch |   2 +-
 ...des-link-against-libbfd.la-for-rpath-deps.patch |   2 +-
 ...ss-hash-style-sysv-to-ld-in-its-testsuite.patch | 807 ---------------------
 ...o-add-with-extra-soversion-suffix-option.patch} |   4 +-
 ...-no-warn-shared-textrel-to-ld-in-its-test.patch |  47 --
 ...able-new-dtags-by-default-for-linux-gnu-.patch} |   4 +-
 ...ore-TEXTREL-warnings-for-non-shared-objec.patch |  19 +-
 ...test-for-precise-textrel-warning-message-.patch |  24 -
 ...-hash-style-sysv-and-no-warn-shared-textr.patch |  62 ++
 ...10-Gentoo-Fix-textrel-warning-format-test.patch |  22 -
 ...entoo-Add-patch-tarball-generation-script.patch | 217 ------
 ...ve-block-mistakenly-duplicated-in-1222895.patch | 777 --------------------
 ...t-generic-test-library-to-our-linker-sett.patch |  26 -
 ...regexp-of-hilarious-ld-detection-heuristi.patch |  30 -
 17 files changed, 86 insertions(+), 1963 deletions(-)

diff --git a/9999/0001-Gentoo-ld-always-warn-about-textrels-in-files.patch b/9999/0001-Gentoo-ld-always-warn-about-textrels-in-files.patch
index 83377a5..d60b0a1 100644
--- a/9999/0001-Gentoo-ld-always-warn-about-textrels-in-files.patch
+++ b/9999/0001-Gentoo-ld-always-warn-about-textrels-in-files.patch
@@ -1,7 +1,7 @@
 From 5e2144e41600a83f6127eb44d739ed170d78ac7f Mon Sep 17 00:00:00 2001
 From: Mike Frysinger <vapier@gentoo.org>
 Date: Mon, 16 May 2005 22:10:19 -0400
-Subject: [PATCH 01/16] Gentoo: ld: always warn about textrels in files
+Subject: [PATCH 1/9] Gentoo: ld: always warn about textrels in files
 
 textrels are bad for forcing copy-on-write (this affects everyone), and for
 security/runtime code generation, this affects security ppl.  But in either

diff --git a/9999/0002-Gentoo-Add-an-option-no-warn-shared-textrel-self-exp.patch b/9999/0002-Gentoo-Add-an-option-no-warn-shared-textrel-self-exp.patch
index 7786ab3..5457b83 100644
--- a/9999/0002-Gentoo-Add-an-option-no-warn-shared-textrel-self-exp.patch
+++ b/9999/0002-Gentoo-Add-an-option-no-warn-shared-textrel-self-exp.patch
@@ -1,7 +1,7 @@
 From 19ecd671bddd33f3afff169f26c55101c90c4afc Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
 Date: Sun, 3 Jun 2018 21:12:16 +0200
-Subject: [PATCH 02/16] Gentoo: Add an option --no-warn-shared-textrel
+Subject: [PATCH 2/9] Gentoo: Add an option --no-warn-shared-textrel
  (self-explanatory)
 
 ---

diff --git a/9999/0003-Gentoo-gold-ld-add-support-for-poisoned-system-direc.patch b/9999/0003-Gentoo-gold-ld-add-support-for-poisoned-system-direc.patch
index 3349c0e..1446352 100644
--- a/9999/0003-Gentoo-gold-ld-add-support-for-poisoned-system-direc.patch
+++ b/9999/0003-Gentoo-gold-ld-add-support-for-poisoned-system-direc.patch
@@ -1,7 +1,7 @@
 From c251ab646d98b3f0e8f8b1ae5e94c672325477e2 Mon Sep 17 00:00:00 2001
 From: Mike Frysinger <vapier@gentoo.org>
 Date: Tue, 10 Oct 2017 22:53:53 +0200
-Subject: [PATCH 03/16] Gentoo: gold/ld: add support for poisoned system
+Subject: [PATCH 3/9] Gentoo: gold/ld: add support for poisoned system
  directories
 
 This is based on the old CodeSourcery patch written by Joseph Myers to add

diff --git a/9999/0004-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch b/9999/0004-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch
index 54e5fdf..a7f8448 100644
--- a/9999/0004-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch
+++ b/9999/0004-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch
@@ -1,7 +1,7 @@
 From c11463f5dbeb53c2a600a5b4a3982368ad149ba1 Mon Sep 17 00:00:00 2001
 From: Mike Frysinger <vapier@gentoo.org>
 Date: Fri, 7 Jan 2005 00:15:53 -0500
-Subject: [PATCH 04/16] Gentoo: libiberty: install PIC version of libiberty.a
+Subject: [PATCH 4/9] Gentoo: libiberty: install PIC version of libiberty.a
 
 This will install a PIC version of libiberty.a by overwriting the non-PIC
 version of libiberty.a while compiling.  We do this because there is no

diff --git a/9999/0005-Gentoo-opcodes-link-against-libbfd.la-for-rpath-deps.patch b/9999/0005-Gentoo-opcodes-link-against-libbfd.la-for-rpath-deps.patch
index 2ec1013..d236727 100644
--- a/9999/0005-Gentoo-opcodes-link-against-libbfd.la-for-rpath-deps.patch
+++ b/9999/0005-Gentoo-opcodes-link-against-libbfd.la-for-rpath-deps.patch
@@ -1,7 +1,7 @@
 From b4c9e06c3fb0ede497bcc51dde6c9756efe124ad Mon Sep 17 00:00:00 2001
 From: Mike Frysinger <vapier@gentoo.org>
 Date: Tue, 5 Jul 2016 20:24:00 +0545
-Subject: [PATCH 05/16] Gentoo: opcodes: link against libbfd.la for rpath deps
+Subject: [PATCH 5/9] Gentoo: opcodes: link against libbfd.la for rpath deps
 
 The reason opcodes doesn't link against libbfd.la is to workaround a
 libtool bug where it uses installed -L paths ahead of DESTDIR paths.

diff --git a/9999/0006-Gentoo-Pass-hash-style-sysv-to-ld-in-its-testsuite.patch b/9999/0006-Gentoo-Pass-hash-style-sysv-to-ld-in-its-testsuite.patch
deleted file mode 100644
index 30f207b..0000000
--- a/9999/0006-Gentoo-Pass-hash-style-sysv-to-ld-in-its-testsuite.patch
+++ /dev/null
@@ -1,807 +0,0 @@
-From 65535cdfae964cce89a7c03ad720f80c61e09217 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
-Date: Wed, 18 Oct 2017 00:44:49 +0200
-Subject: [PATCH 06/16] Gentoo: Pass --hash-style=sysv to ld in its testsuite
-
----
- ld/testsuite/lib/ld-lib.exp | 769 +++++++++++++++++++++++++++++++++++-
- 1 file changed, 767 insertions(+), 2 deletions(-)
-
-diff --git a/ld/testsuite/lib/ld-lib.exp b/ld/testsuite/lib/ld-lib.exp
-index 015eda6eb9..853a4d87e6 100644
---- a/ld/testsuite/lib/ld-lib.exp
-+++ b/ld/testsuite/lib/ld-lib.exp
-@@ -165,7 +165,7 @@ proc default_ld_relocate { ld target objects } {
-     global HOSTING_EMU
- 
-     remote_file host delete $target
--    return [run_host_cmd_yesno "$ld" "$HOSTING_EMU -o $target -r $objects"]
-+    return [run_host_cmd_yesno "$ld" "$HOSTING_EMU --hash-style=sysv -o $target -r $objects"]
- }
- 
- # Check to see if ld is being invoked with a non-endian output format
-@@ -196,8 +196,20 @@ proc default_ld_link { ld target objects } {
- 	set flags [big_or_little_endian]
-     }
- 
-+    # Hilariously, this procedure is called sometimes with $CC and sometimes
-+    # with $ld as parameter. If we want to change the default behaviour, we
-+    # need to take the different option formats into account.
-+    # We check the $ld parameter for
-+    # - .*ld/ld-new    -> we're working with the new linker
-+    # - otherwise      -> we're likely working with the system compiler
-+    if {[regexp {ld/ld-new$} $ld]} {
-+      set gentoosysv "--hash-style=sysv"
-+    } else {
-+      set gentoosysv "-Wl,--hash-style=sysv"
-+    }
-+
-     remote_file host delete $target
--    set exec_output [run_host_cmd "$ld" "$flags -o $target $objects"]
-+    set exec_output [run_host_cmd "$ld" "$gentoosysv $flags -o $target $objects"]
-     set exec_output [prune_warnings $exec_output]
- 
-     # We don't care if we get a warning about a non-existent start
-@@ -409,6 +421,759 @@ proc ld_link_defsyms {} {
-     return $flags
- }
- 
-+# run_dump_test FILE (optional:) EXTRA_OPTIONS
-+# Copied from gas testsuite, tweaked and further extended.
-+#
-+# Assemble a .s file, then run some utility on it and check the output.
-+#
-+# There should be an assembly language file named FILE.s in the test
-+# suite directory, and a pattern file called FILE.d.  `run_dump_test'
-+# will assemble FILE.s, run some tool like `objdump', `objcopy', or
-+# `nm' on the .o file to produce textual output, and then analyze that
-+# with regexps.  The FILE.d file specifies what program to run, and
-+# what to expect in its output.
-+#
-+# The FILE.d file begins with zero or more option lines, which specify
-+# flags to pass to the assembler, the program to run to dump the
-+# assembler's output, and the options it wants.  The option lines have
-+# the syntax:
-+#
-+#         # OPTION: VALUE
-+#
-+# OPTION is the name of some option, like "name" or "objdump", and
-+# VALUE is OPTION's value.  The valid options are described below.
-+# Whitespace is ignored everywhere, except within VALUE.  The option
-+# list ends with the first line that doesn't match the above syntax
-+# (hmm, not great for error detection).
-+#
-+# The optional EXTRA_OPTIONS argument to `run_dump_test' is a list of
-+# two-element lists.  The first element of each is an option name, and
-+# the second additional arguments to be added on to the end of the
-+# option list as given in FILE.d.  (If omitted, no additional options
-+# are added.)
-+#
-+# The interesting options are:
-+#
-+#   name: TEST-NAME
-+#	The name of this test, passed to DejaGNU's `pass' and `fail'
-+#       commands.  If omitted, this defaults to FILE, the root of the
-+#       .s and .d files' names.
-+#
-+#   as: FLAGS
-+#	When assembling, pass FLAGS to the assembler.
-+#       If assembling several files, you can pass different assembler
-+#       options in the "source" directives.  See below.
-+#
-+#   ld: FLAGS
-+#       Link assembled files using FLAGS, in the order of the "source"
-+#       directives, when using multiple files.
-+#
-+#   ld_after_inputfiles: FLAGS
-+#       Similar to "ld", but put after all input files.
-+#
-+#   objcopy_objects: FLAGS
-+#	Run objcopy with the specified flags after assembling any source
-+#	that has the special marker RUN_OBJCOPY in the source specific
-+#	flags.
-+#
-+#   objcopy_linked_file: FLAGS
-+#	Run objcopy on the linked file with the specified flags.
-+#	This lets you transform the linked file using objcopy, before the
-+#	result is analyzed by an analyzer program specified below (which
-+#	may in turn *also* be objcopy).
-+#
-+#   PROG: PROGRAM-NAME
-+#       The name of the program to run to analyze the .o file produced
-+#       by the assembler or the linker output.  This can be omitted;
-+#       run_dump_test will guess which program to run by seeing which of
-+#       the flags options below is present.
-+#
-+#   readelf: FLAGS
-+#   objdump: FLAGS
-+#   nm: FLAGS
-+#   objcopy: FLAGS
-+#	Use the specified program to analyze the assembler or linker
-+#       output file, and pass it FLAGS, in addition to the output name.
-+#	Note that they are run with LC_ALL=C in the environment to give
-+#	consistent sorting of symbols.
-+#
-+#   source: SOURCE [FLAGS]
-+#	Assemble the file SOURCE.s using the flags in the "as" directive
-+#       and the (optional) FLAGS.  If omitted, the source defaults to
-+#       FILE.s.
-+#       This is useful if several .d files want to share a .s file.
-+#       More than one "source" directive can be given, which is useful
-+#       when testing linking.
-+#
-+#   dump: DUMP
-+#	Match against DUMP.d.  If omitted, this defaults to FILE.d.  This
-+#	is useful if several .d files differ by options only.  Options are
-+#	always read from FILE.d.
-+#
-+#   xfail: TARGET
-+#       The test is expected to fail on TARGET.  This may occur more than
-+#       once.
-+#
-+#   target: TARGET
-+#	Only run the test for TARGET.
-+#	You may provide target name "cfi" for any target supporting the
-+#	CFI statements.  You may provide target name "shared" for any
-+#	target supporting shared libraries.  Otherwise TARGET is called
-+#	as a TCL procedure if surrounded by square brackets, or passed
-+#	to "istarget" if not.
-+#	This may occur more than once; the target being tested must match
-+#	at least one.  Otherwise the test will be marked unsupported.
-+#
-+#   alltargets: TARGET
-+#	Only run the test for TARGET.
-+#	The syntax for TARGET is as with 'target'.
-+#	This may occur more than once; the target being tested must match
-+#	all of them.  Otherwise the test will be marked unsupported.
-+#
-+#   notarget: TARGET
-+#	Do not run the test for TARGET.
-+#	The syntax for TARGET is as with 'target'.
-+#	This may occur more than once; the target being tested must not
-+#	match any of them.  Otherwise the test will be marked unsupported.
-+#
-+#   skip: TARGET
-+#   anyskip: TARGET
-+#   noskip: TARGET
-+#	These are exactly the same as "notarget", "alltargets" and
-+#	"target" respectively, except that they do nothing at all if the
-+#	check fails.  They should only be used in groups, to construct a
-+#	single test which is run on all targets but with variant options
-+#	or expected output on some targets.  (For example, see
-+#	gas/arm/inst.d and gas/arm/wince_inst.d.)
-+#
-+#   error: REGEX
-+#	An error with message matching REGEX must be emitted for the test
-+#	to pass.  The PROG, readelf, objdump, nm and objcopy options have
-+#	no meaning and need not be supplied if this is present.  Multiple
-+#	"error" directives append to the expected linker error message.
-+#
-+#   error_output: FILE
-+#       Means the same as 'error', except the regular expression lines
-+#       are contains in FILE.
-+#
-+#   warning: REGEX
-+#	Expect a linker warning matching REGEX.  It is an error to issue
-+#	both "error" and "warning".  Multiple "warning" directives
-+#	append to the expected linker warning message.
-+#
-+#   warning_output: FILE
-+#       Means the same as 'warning', except the regular expression
-+#       lines are contains in FILE.
-+#
-+#   map: FILE
-+#       Adding this option will cause the linker to generate a linker
-+#       map file, using the -Map=MAPFILE command line option.  If
-+#       there is no -Map=MAPFILE in the 'ld: FLAGS' then one will be
-+#       added to the linker command line.  The contents of the
-+#       generated MAPFILE are then compared against the regexp lines
-+#       in FILE using `regexp_diff' (see below for details).
-+#
-+# Each option may occur at most once unless otherwise mentioned.
-+#
-+# After the option lines come regexp lines.  `run_dump_test' calls
-+# `regexp_diff' to compare the output of the dumping tool against the
-+# regexps in FILE.d.  `regexp_diff' is defined in binutils-common.exp;
-+# see further comments there.
-+#
-+proc run_dump_test { name {extra_options {}} } {
-+    global subdir srcdir
-+    global OBJDUMP NM AS OBJCOPY READELF LD
-+    global OBJDUMPFLAGS NMFLAGS ASFLAGS OBJCOPYFLAGS READELFFLAGS LDFLAGS
-+    global host_triplet runtests
-+    global env verbose
-+    global ld_elf_shared_opt
-+
-+    if { [is_elf_format] && [check_shared_lib_support] } {
-+	set ld_extra_opt "$ld_elf_shared_opt"
-+    } else {
-+	set ld_extra_opt ""
-+    }
-+
-+    if [string match "*/*" $name] {
-+	set file $name
-+	set name [file tail $name]
-+    } else {
-+	set file "$srcdir/$subdir/$name"
-+    }
-+
-+    if ![runtest_file_p $runtests $name] then {
-+	return
-+    }
-+
-+    set opt_array [slurp_options "${file}.d"]
-+    if { $opt_array == -1 } {
-+	perror "error reading options from $file.d"
-+	unresolved $subdir/$name
-+	return
-+    }
-+    set dumpfile tmpdir/dump.out
-+    set run_ld 0
-+    set run_objcopy 0
-+    set objfile_names {}
-+    set opts(as) {}
-+    set opts(ld) {}
-+    set opts(ld_after_inputfiles) {}
-+    set opts(xfail) {}
-+    set opts(target) {}
-+    set opts(alltargets) {}
-+    set opts(notarget) {}
-+    set opts(skip) {}
-+    set opts(anyskip) {}
-+    set opts(noskip) {}
-+    set opts(objdump) {}
-+    set opts(nm) {}
-+    set opts(objcopy) {}
-+    set opts(readelf) {}
-+    set opts(name) {}
-+    set opts(PROG) {}
-+    set opts(source) {}
-+    set opts(dump) {}
-+    set opts(error) {}
-+    set opts(warning) {}
-+    set opts(error_output) {}
-+    set opts(warning_output) {}
-+    set opts(objcopy_linked_file) {}
-+    set opts(objcopy_objects) {}
-+    set opts(map) {}
-+
-+    foreach i $opt_array {
-+	set opt_name [lindex $i 0]
-+	set opt_val [lindex $i 1]
-+	if ![info exists opts($opt_name)] {
-+	    perror "unknown option $opt_name in file $file.d"
-+	    unresolved $subdir/$name
-+	    return
-+	}
-+
-+	switch -- $opt_name {
-+	    xfail {}
-+	    target {}
-+	    alltargets {}
-+	    notarget {}
-+	    skip {}
-+	    anyskip {}
-+	    noskip {}
-+	    warning {}
-+	    error {}
-+	    source {
-+		# Move any source-specific as-flags to a separate list to
-+		# simplify processing.
-+		if { [llength $opt_val] > 1 } {
-+		    lappend asflags [lrange $opt_val 1 end]
-+		    set opt_val [lindex $opt_val 0]
-+		} else {
-+		    lappend asflags {}
-+		}
-+
-+                # Create the object file name based on nothing but the source
-+                # file name.
-+                set new_objfile \
-+                    [concat tmpdir/[file rootname [file tail [lindex $opt_val 0]]].o]
-+                # But, sometimes, we have the exact same source filename in
-+                # different directories (foo/src.s bar/src.s) which would lead
-+                # us to try and create two src.o files.  We detect this
-+                # conflict here, and instead create src.o and src1.o.
-+                set j 0
-+                while { [lsearch $objfile_names $new_objfile] != -1 } {
-+                    incr j
-+                    set new_objfile \
-+                        [concat tmpdir/[file rootname [file tail  [lindex $opt_val 0]]]${j}.o]
-+                }
-+		lappend objfile_names $new_objfile
-+	    }
-+	    default {
-+		if [string length $opts($opt_name)] {
-+		    perror "option $opt_name multiply set in $file.d"
-+		    unresolved $subdir/$name
-+		    return
-+		}
-+
-+		# A single "# ld:" with no options should do the right thing.
-+		if { $opt_name == "ld" } {
-+		    set run_ld 1
-+		}
-+		# Likewise objcopy_linked_file.
-+		if { $opt_name == "objcopy_linked_file" } {
-+		    set run_objcopy 1
-+		}
-+	    }
-+	}
-+	if { $opt_name == "as" || $opt_name == "ld" } {
-+	    set opt_val [subst $opt_val]
-+	}
-+
-+	# Append differently whether it's a message (without space) or
-+	# an option or list (with space).
-+	switch -- $opt_name {
-+	    warning -
-+	    error {
-+		append opts($opt_name) $opt_val
-+	    }
-+	    default {
-+		set opts($opt_name) [concat $opts($opt_name) $opt_val]
-+	    }
-+	}
-+    }
-+
-+    foreach i $extra_options {
-+	set opt_name [lindex $i 0]
-+	set opt_val [lindex $i 1]
-+	if ![info exists opts($opt_name)] {
-+	    perror "unknown option $opt_name given in extra_opts"
-+	    unresolved $subdir/$name
-+	    return
-+	}
-+	# Add extra option to end of existing option, adding space
-+	# if necessary.
-+	if { ![regexp "warning|error" $opt_name]
-+	     && [string length $opts($opt_name)] } {
-+	    append opts($opt_name) " "
-+	}
-+	append opts($opt_name) $opt_val
-+    }
-+
-+    foreach opt { as ld } {
-+	regsub {\[big_or_little_endian\]} $opts($opt) \
-+	    [big_or_little_endian] opts($opt)
-+    }
-+
-+    if { $opts(name) == "" } {
-+	set testname "$subdir/$name"
-+    } else {
-+	set testname $opts(name)
-+    }
-+
-+    # Decide early whether we should run the test for this target.
-+    if { [llength $opts(noskip)] > 0 } {
-+	set targmatch 0
-+	foreach targ $opts(noskip) {
-+	    if [match_target $targ] {
-+		set targmatch 1
-+		break
-+	    }
-+	}
-+	if { $targmatch == 0 } {
-+	    return
-+	}
-+    }
-+    foreach targ $opts(anyskip) {
-+	if ![match_target $targ] {
-+	    return
-+	}
-+    }
-+    foreach targ $opts(skip) {
-+	if [match_target $targ] {
-+	    return
-+	}
-+    }
-+    if { [llength $opts(target)] > 0 } {
-+	set targmatch 0
-+	foreach targ $opts(target) {
-+	    if [match_target $targ] {
-+		set targmatch 1
-+		break
-+	    }
-+	}
-+	if { $targmatch == 0 } {
-+	    unsupported $testname
-+	    return
-+	}
-+    }
-+    foreach targ $opts(alltargets) {
-+	if ![match_target $targ] {
-+	    unsupported $testname
-+	    return
-+	}
-+    }
-+    foreach targ $opts(notarget) {
-+	if [match_target $targ] {
-+	    unsupported $testname
-+	    return
-+	}
-+    }
-+
-+    set program ""
-+    # It's meaningless to require an output-testing method when we
-+    # expect an error.
-+    if { $opts(error) == "" && $opts(error_output) == "" } {
-+	if {$opts(PROG) != ""} {
-+	    switch -- $opts(PROG) {
-+		objdump	{ set program objdump }
-+		nm	{ set program nm }
-+		objcopy	{ set program objcopy }
-+		readelf	{ set program readelf }
-+		default
-+		{ perror "unrecognized program option $opts(PROG) in $file.d"
-+		  unresolved $testname
-+		  return }
-+	    }
-+	} else {
-+	# Guess which program to run, by seeing which option was specified.
-+	    foreach p {objdump objcopy nm readelf} {
-+		if {$opts($p) != ""} {
-+		    if {$program != ""} {
-+			perror "ambiguous dump program in $file.d"
-+			unresolved $testname
-+			return
-+		    } else {
-+			set program $p
-+		    }
-+		}
-+	    }
-+	}
-+	if { $program == "" \
-+                 && $opts(map) == "" \
-+                 && $opts(warning) == "" \
-+                 && $opts(warning_output) == "" \
-+                 && $opts(error) == "" \
-+                 && $opts(error_output) == "" } {
-+	    perror "dump program unspecified in $file.d"
-+	    unresolved $testname
-+	    return
-+	}
-+    }
-+
-+    if { $opts(source) == "" } {
-+	set sourcefiles [list ${file}.s]
-+	set asflags [list ""]
-+	set objfile_names [list tmpdir/[file tail ${file}].o]
-+    } else {
-+	set sourcefiles {}
-+	foreach sf $opts(source) {
-+	    if { [string match "/*" $sf] } {
-+		lappend sourcefiles "$sf"
-+	    } else {
-+		lappend sourcefiles "$srcdir/$subdir/$sf"
-+	    }
-+	}
-+    }
-+
-+    if { $opts(dump) == "" } {
-+	set dfile ${file}.d
-+    } else {
-+	set dfile $srcdir/$subdir/$opts(dump)
-+    }
-+
-+    # Time to setup xfailures.
-+    foreach targ $opts(xfail) {
-+	setup_xfail $targ
-+    }
-+
-+    # Assemble each file.
-+    set objfiles {}
-+    for { set i 0 } { $i < [llength $sourcefiles] } { incr i } {
-+	set sourcefile [lindex $sourcefiles $i]
-+	set sourceasflags [lindex $asflags $i]
-+	set run_objcopy_objects 0
-+
-+	if { [string match "*RUN_OBJCOPY*" $sourceasflags] } {
-+	    set run_objcopy_objects 1
-+	}
-+	regsub "RUN_OBJCOPY" $sourceasflags "" sourceasflags
-+
-+	set objfile [lindex $objfile_names $i]
-+	catch "exec rm -f $objfile" exec_output
-+	lappend objfiles $objfile
-+	set cmd "$AS $ASFLAGS $opts(as) $sourceasflags -o $objfile $sourcefile"
-+
-+	send_log "$cmd\n"
-+	set cmdret [remote_exec host [concat sh -c [list "$cmd 2>&1"]] "" "/dev/null" "ld.tmp"]
-+	remote_upload host "ld.tmp"
-+	set comp_output [prune_warnings [file_contents "ld.tmp"]]
-+	remote_file host delete "ld.tmp"
-+	remote_file build delete "ld.tmp"
-+
-+	if { [lindex $cmdret 0] != 0 || ![string match "" $comp_output] } then {
-+	    send_log -- "$comp_output\n"
-+	    verbose "$comp_output" 3
-+
-+	    set exitstat "succeeded"
-+	    if { $cmdret != 0 } { set exitstat "failed" }
-+	    verbose -log "$exitstat with: <$comp_output>"
-+	    fail $testname
-+	    return
-+	}
-+
-+	if { $run_objcopy_objects } {
-+	    set cmd "$OBJCOPY $opts(objcopy_objects) $objfile"
-+
-+	    send_log "$cmd\n"
-+	    set cmdret [remote_exec host [concat sh -c [list "$cmd 2>&1"]] \
-+			"" "/dev/null" "objcopy.tmp"]
-+	    remote_upload host "objcopy.tmp"
-+	    set comp_output [prune_warnings [file_contents "objcopy.tmp"]]
-+	    remote_file host delete "objcopy.tmp"
-+	    remote_file build delete "objcopy.tmp"
-+
-+	    if { [lindex $cmdret 0] != 0 \
-+		  || ![string match "" $comp_output] } {
-+		send_log -- "$comp_output\n"
-+		verbose "$comp_output" 3
-+
-+		set exitstat "succeeded"
-+		if { $cmdret != 0 } { set exitstat "failed" }
-+		verbose -log "$exitstat with: <$comp_output>"
-+		fail $testname
-+		return
-+	    }
-+	}
-+    }
-+
-+    if { (($opts(warning) != "") && ($opts(error) != "")) \
-+	 || (($opts(warning) != "") && ($opts(error_output) != "")) \
-+	 || (($opts(warning) != "") && ($opts(warning_output) != "")) \
-+	 || (($opts(error) != "") && ($opts(warning_output) != "")) \
-+	 || (($opts(error) != "") && ($opts(error_output) != "")) \
-+	 || (($opts(warning_output) != "") && ($opts(error_output) != "")) } {
-+	perror "$testname: bad mix of warning, error, warning_output, and error_output test-directives"
-+	unresolved $testname
-+	return
-+    }
-+
-+    set check_ld(source) ""
-+    set check_ld(terminal) 0
-+    if { $opts(error) != "" \
-+         || $opts(warning) != "" \
-+         || $opts(error_output) != "" \
-+         || $opts(warning_output) != "" } {
-+
-+        if { $opts(error) != "" || $opts(error_output) != "" } {
-+            set check_ld(terminal) 1
-+        } else {
-+            set check_ld(terminal) 0
-+        }
-+
-+        if { $opts(error) != "" || $opts(warning) != "" } {
-+            set check_ld(source) "regex"
-+            if { $opts(error) != "" } {
-+                set check_ld(regex) $opts(error)
-+            } else {
-+                set check_ld(regex) $opts(warning)
-+            }
-+        } else {
-+            set check_ld(source) "file"
-+            if { $opts(error_output) != "" } {
-+                set check_ld(file) $opts(error_output)
-+            } else {
-+                set check_ld(file) $opts(warning_output)
-+            }
-+        }
-+    }
-+
-+    # Perhaps link the file(s).
-+    if { $run_ld } {
-+	set objfile "tmpdir/dump"
-+	catch "exec rm -f $objfile" exec_output
-+
-+	# Add -L$srcdir/$subdir so that the linker command can use
-+	# linker scripts in the source directory.
-+	set cmd "$LD --hash-style=sysv $ld_extra_opt $LDFLAGS -L$srcdir/$subdir \
-+		   $opts(ld) -o $objfile $objfiles $opts(ld_after_inputfiles)"
-+
-+        # If needed then check for, or add a -Map option.
-+        set mapfile ""
-+        if { $opts(map) != "" } then {
-+            if { [regexp -- "-Map=(\[^ \]+)" $cmd all mapfile] } then {
-+                # Found existing mapfile option
-+                verbose -log "Existing mapfile '$mapfile' found"
-+            } else {
-+                # No mapfile option.
-+                set mapfile "tmpdir/dump.map"
-+                verbose -log "Adding mapfile '$mapfile'"
-+                set cmd "$cmd -Map=$mapfile"
-+            }
-+        }
-+
-+	send_log "$cmd\n"
-+	set cmdret [remote_exec host [concat sh -c [list "$cmd 2>&1"]] "" "/dev/null" "ld.tmp"]
-+	remote_upload host "ld.tmp"
-+	set comp_output [file_contents "ld.tmp"]
-+	remote_file host delete "ld.tmp"
-+	remote_file build delete "ld.tmp"
-+	set cmdret [lindex $cmdret 0]
-+
-+	if { $cmdret == 0 && $run_objcopy } {
-+	    set infile $objfile
-+	    set objfile "tmpdir/dump1"
-+	    remote_file host delete $objfile
-+
-+	    # Note that we don't use OBJCOPYFLAGS here; any flags must be
-+	    # explicitly specified.
-+	    set cmd "$OBJCOPY $opts(objcopy_linked_file) $infile $objfile"
-+
-+	    send_log "$cmd\n"
-+	    set cmdret [remote_exec host [concat sh -c [list "$cmd 2>&1"]] "" "/dev/null" "ld.tmp"]
-+	    remote_upload host "ld.tmp"
-+	    append comp_output [file_contents "ld.tmp"]
-+	    remote_file host delete "ld.tmp"
-+	    remote_file build delete "ld.tmp"
-+	    set cmdret [lindex $cmdret 0]
-+	}
-+
-+	regsub "\n$" $comp_output "" comp_output
-+	if { $cmdret != 0 || $comp_output != "" || $check_ld(source) != "" } then {
-+	    set exitstat "succeeded"
-+	    if { $cmdret != 0 } { set exitstat "failed" }
-+
-+            if { $check_ld(source) == "regex" } {
-+                verbose -log "$exitstat with: <$comp_output>, expected: <$check_ld(regex)>"
-+            } elseif { $check_ld(source) == "file" } {
-+                verbose -log "$exitstat with: <$comp_output>, expected in file $check_ld(file)"
-+                set_file_contents "tmpdir/ld.messages" "$comp_output"
-+            } else {
-+                verbose -log "$exitstat with: <$comp_output>, no expected output"
-+            }
-+	    send_log -- "$comp_output\n"
-+	    verbose "$comp_output" 3
-+
-+	    if { (($check_ld(source) == "") == ($comp_output == "")) \
-+                 && (($cmdret == 0) == ($check_ld(terminal) == 0)) \
-+                 && ((($check_ld(source) == "regex") \
-+                      && ($check_ld(regex) == "") == ($comp_output == "") \
-+                      && [regexp -- $check_ld(regex) $comp_output]) \
-+                     || (($check_ld(source) == "file") \
-+                         && (![regexp_diff "tmpdir/ld.messages" "$srcdir/$subdir/$check_ld(file)"]))) } {
-+                # We have the expected output from ld.
-+		if { $check_ld(terminal) || $program == "" } {
-+		    pass $testname
-+		    return
-+		}
-+	    } else {
-+		fail $testname
-+		return
-+	    }
-+	}
-+
-+        if { $opts(map) != "" } then {
-+            # Check the map file matches.
-+            set map_pattern_file $srcdir/$subdir/$opts(map)
-+            verbose -log "Compare '$mapfile' against '$map_pattern_file'"
-+            if { [regexp_diff $mapfile $map_pattern_file] } then {
-+                fail "$testname (map file check)"
-+            } else {
-+                pass "$testname (map file check)"
-+            }
-+
-+            if { $program == "" } then {
-+                return
-+            }
-+        }
-+    } else {
-+	set objfile [lindex $objfiles 0]
-+    }
-+
-+    # We must not have expected failure if we get here.
-+    if { $opts(error) != "" } {
-+	fail $testname
-+	return
-+    }
-+
-+    set progopts1 $opts($program)
-+    eval set progopts \$[string toupper $program]FLAGS
-+    eval set binary \$[string toupper $program]
-+
-+    if { ![is_remote host] && [which $binary] == 0 } {
-+	untested $testname
-+	return
-+    }
-+
-+    if { $progopts1 == "" } { set $progopts1 "-r" }
-+    verbose "running $binary $progopts $progopts1" 3
-+
-+    # Objcopy, unlike the other two, won't send its output to stdout,
-+    # so we have to run it specially.
-+    set cmd "$binary $progopts $progopts1 $objfile > $dumpfile"
-+    if { $program == "objcopy" } {
-+	set cmd "$binary $progopts $progopts1 $objfile $dumpfile"
-+    }
-+
-+    # Ensure consistent sorting of symbols
-+    if {[info exists env(LC_ALL)]} {
-+	set old_lc_all $env(LC_ALL)
-+    }
-+    set env(LC_ALL) "C"
-+    send_log "$cmd\n"
-+    set cmdret [remote_exec host [concat sh -c [list "$cmd 2>ld.tmp"]] "" "/dev/null"]
-+    set cmdret [lindex $cmdret 0]
-+    remote_upload host "ld.tmp"
-+    set comp_output [prune_warnings [file_contents "ld.tmp"]]
-+    remote_file host delete "ld.tmp"
-+    remote_file build delete "ld.tmp"
-+    if {[info exists old_lc_all]} {
-+	set env(LC_ALL) $old_lc_all
-+    } else {
-+	unset env(LC_ALL)
-+    }
-+    if { $cmdret != 0 || $comp_output != "" } {
-+	send_log "exited abnormally with $cmdret, output:$comp_output\n"
-+	fail $testname
-+	return
-+    }
-+
-+    if { $verbose > 2 } then { verbose "output is [file_contents $dumpfile]" 3 }
-+    if { [regexp_diff $dumpfile "${dfile}"] } then {
-+	fail $testname
-+	if { $verbose == 2 } then { verbose "output is [file_contents $dumpfile]" 2 }
-+	return
-+    }
-+
-+    pass $testname
-+}
-+
-+proc slurp_options { file } {
-+    # If options_regsub(foo) is set to {a b}, then the contents of a
-+    # "#foo:" line will have regsub -all applied to replace a with b.
-+    global options_regsub
-+
-+    if [catch { set f [open $file r] } x] {
-+	#perror "couldn't open `$file': $x"
-+	perror "$x"
-+	return -1
-+    }
-+    set opt_array {}
-+    # whitespace expression
-+    set ws  {[ 	]*}
-+    set nws {[^ 	]*}
-+    # whitespace is ignored anywhere except within the options list;
-+    # option names are alphabetic plus underscore only.
-+    set pat "^#${ws}(\[a-zA-Z_\]*)$ws:${ws}(.*)$ws\$"
-+    while { [gets $f line] != -1 } {
-+	set line [string trim $line]
-+	# Whitespace here is space-tab.
-+	if [regexp $pat $line xxx opt_name opt_val] {
-+	    # match!
-+	    if [info exists options_regsub($opt_name)] {
-+		set subst $options_regsub($opt_name)
-+		regsub -all -- [lindex $subst 0] $opt_val [lindex $subst 1] \
-+		    opt_val
-+	    }
-+	    lappend opt_array [list $opt_name $opt_val]
-+	} else {
-+	    break
-+	}
-+    }
-+    close $f
-+    return $opt_array
-+}
-+
-+proc file_contents { filename } {
-+    set file [open $filename r]
-+    set contents [read $file]
-+    close $file
-+    return $contents
-+}
-+
-+proc set_file_contents { filename contents } {
-+    set file [open $filename w]
-+    puts $file "$contents"
-+    close $file
-+}
-+
- # Create an archive using ar
- #
- proc ar_simple_create { ar aropts target objects } {
--- 
-2.26.2
-

diff --git a/9999/0011-Gentoo-add-with-extra-soversion-suffix-option.patch b/9999/0006-Gentoo-add-with-extra-soversion-suffix-option.patch
similarity index 97%
rename from 9999/0011-Gentoo-add-with-extra-soversion-suffix-option.patch
rename to 9999/0006-Gentoo-add-with-extra-soversion-suffix-option.patch
index cc9f0cc..d7f696c 100644
--- a/9999/0011-Gentoo-add-with-extra-soversion-suffix-option.patch
+++ b/9999/0006-Gentoo-add-with-extra-soversion-suffix-option.patch
@@ -1,7 +1,7 @@
-From f1d34965ce140071bb77313bbca01914ace59e27 Mon Sep 17 00:00:00 2001
+From eefafabed03c163287326afaadc4cc0e5840ea7b Mon Sep 17 00:00:00 2001
 From: Sergei Trofimovich <slyfox@gentoo.org>
 Date: Wed, 12 Sep 2018 23:44:29 +0100
-Subject: [PATCH 11/16] Gentoo: add --with-extra-soversion-suffix= option
+Subject: [PATCH 6/9] Gentoo: add --with-extra-soversion-suffix= option
 
 --with-extra-soversion-suffix= will allow Gentoo to
 distinct libbfd.so and libopcodes.so to have more precise

diff --git a/9999/0007-Gentoo-Pass-no-warn-shared-textrel-to-ld-in-its-test.patch b/9999/0007-Gentoo-Pass-no-warn-shared-textrel-to-ld-in-its-test.patch
deleted file mode 100644
index 74f96cf..0000000
--- a/9999/0007-Gentoo-Pass-no-warn-shared-textrel-to-ld-in-its-test.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 221b8f6dfdfcb5e9d04069fdc2fb1aa6a881cb60 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
-Date: Sun, 3 Jun 2018 21:40:36 +0200
-Subject: [PATCH 07/16] Gentoo: Pass --no-warn-shared-textrel to ld in its
- testsuite
-
----
- ld/testsuite/lib/ld-lib.exp | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/ld/testsuite/lib/ld-lib.exp b/ld/testsuite/lib/ld-lib.exp
-index 853a4d87e6..ec123e2fc1 100644
---- a/ld/testsuite/lib/ld-lib.exp
-+++ b/ld/testsuite/lib/ld-lib.exp
-@@ -165,7 +165,7 @@ proc default_ld_relocate { ld target objects } {
-     global HOSTING_EMU
- 
-     remote_file host delete $target
--    return [run_host_cmd_yesno "$ld" "$HOSTING_EMU --hash-style=sysv -o $target -r $objects"]
-+    return [run_host_cmd_yesno "$ld" "$HOSTING_EMU --hash-style=sysv --no-warn-shared-textrel -o $target -r $objects"]
- }
- 
- # Check to see if ld is being invoked with a non-endian output format
-@@ -203,9 +203,9 @@ proc default_ld_link { ld target objects } {
-     # - .*ld/ld-new    -> we're working with the new linker
-     # - otherwise      -> we're likely working with the system compiler
-     if {[regexp {ld/ld-new$} $ld]} {
--      set gentoosysv "--hash-style=sysv"
-+      set gentoosysv "--hash-style=sysv --no-warn-shared-textrel"
-     } else {
--      set gentoosysv "-Wl,--hash-style=sysv"
-+      set gentoosysv "-Wl,--hash-style=sysv -Wl,--no-warn-shared-textrel"
-     }
- 
-     remote_file host delete $target
-@@ -972,7 +972,7 @@ proc run_dump_test { name {extra_options {}} } {
- 
- 	# Add -L$srcdir/$subdir so that the linker command can use
- 	# linker scripts in the source directory.
--	set cmd "$LD --hash-style=sysv $ld_extra_opt $LDFLAGS -L$srcdir/$subdir \
-+	set cmd "$LD --hash-style=sysv --no-warn-shared-textrel $ld_extra_opt $LDFLAGS -L$srcdir/$subdir \
- 		   $opts(ld) -o $objfile $objfiles $opts(ld_after_inputfiles)"
- 
-         # If needed then check for, or add a -Map option.
--- 
-2.26.2
-

diff --git a/9999/0013-Gentoo-ld-enable-new-dtags-by-default-for-linux-gnu-.patch b/9999/0007-Gentoo-ld-enable-new-dtags-by-default-for-linux-gnu-.patch
similarity index 91%
rename from 9999/0013-Gentoo-ld-enable-new-dtags-by-default-for-linux-gnu-.patch
rename to 9999/0007-Gentoo-ld-enable-new-dtags-by-default-for-linux-gnu-.patch
index 713a0a9..0b0cbfe 100644
--- a/9999/0013-Gentoo-ld-enable-new-dtags-by-default-for-linux-gnu-.patch
+++ b/9999/0007-Gentoo-ld-enable-new-dtags-by-default-for-linux-gnu-.patch
@@ -1,7 +1,7 @@
-From 14ba11502cbc93e938e0b43e9648aedb7462ddeb Mon Sep 17 00:00:00 2001
+From cf8983d602c56eb31ee0e356df670d9c2876ce15 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
 Date: Sun, 13 Oct 2019 05:25:28 +0200
-Subject: [PATCH 13/16] Gentoo: ld: enable new dtags by default for linux/gnu
+Subject: [PATCH 7/9] Gentoo: ld: enable new dtags by default for linux/gnu
  targets
 
 Original author: Mike Frysinger <vapier@gentoo.org>

diff --git a/9999/0008-Gentoo-Restore-TEXTREL-warnings-for-non-shared-objec.patch b/9999/0008-Gentoo-Restore-TEXTREL-warnings-for-non-shared-objec.patch
index e54ccd1..8e0e091 100644
--- a/9999/0008-Gentoo-Restore-TEXTREL-warnings-for-non-shared-objec.patch
+++ b/9999/0008-Gentoo-Restore-TEXTREL-warnings-for-non-shared-objec.patch
@@ -1,11 +1,12 @@
-From 3439646abc93066af8cc651940f30fd0f9b99760 Mon Sep 17 00:00:00 2001
+From 74afb38257f4a35d681883348ef54317674827e3 Mon Sep 17 00:00:00 2001
 From: Sergei Trofimovich <slyfox@gentoo.org>
 Date: Thu, 1 Mar 2018 12:35:03 +0100
-Subject: [PATCH 08/16] Gentoo: Restore TEXTREL warnings for non-shared objects
+Subject: [PATCH 8/9] Gentoo: Restore TEXTREL warnings for non-shared objects
 
 ---
- bfd/elflink.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
+ bfd/elflink.c                | 4 ++--
+ ld/testsuite/ld-i386/warn1.d | 2 +-
+ 2 files changed, 3 insertions(+), 3 deletions(-)
 
 diff --git a/bfd/elflink.c b/bfd/elflink.c
 index 90ada7a1cc..b4636885aa 100644
@@ -29,6 +30,16 @@ index 90ada7a1cc..b4636885aa 100644
  		  break;
  		}
  	    }
+diff --git a/ld/testsuite/ld-i386/warn1.d b/ld/testsuite/ld-i386/warn1.d
+index 3c78f31efd..49bcb5171f 100644
+--- a/ld/testsuite/ld-i386/warn1.d
++++ b/ld/testsuite/ld-i386/warn1.d
+@@ -1,4 +1,4 @@
+ #name: --warn-shared-textrel --fatal-warnings
+ #as: --32
+ #ld: -shared -melf_i386 --warn-shared-textrel --fatal-warnings
+-#error: .*warning: creating a DT_TEXTREL in a shared object
++#error: .*warning: creating a DT_TEXTREL in object
 -- 
 2.26.2
 

diff --git a/9999/0009-Gentoo-Fix-test-for-precise-textrel-warning-message-.patch b/9999/0009-Gentoo-Fix-test-for-precise-textrel-warning-message-.patch
deleted file mode 100644
index e87a82d..0000000
--- a/9999/0009-Gentoo-Fix-test-for-precise-textrel-warning-message-.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 61cc50292e7cc3f8871946f0720ff039ddf7a2be Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
-Date: Sun, 3 Jun 2018 22:36:40 +0200
-Subject: [PATCH 09/16] Gentoo: Fix test for precise textrel warning message,
- after non-shared object change
-
-(Broken by "Gentoo: Restore TEXTREL warnings for non-shared objects")
----
- ld/testsuite/ld-i386/warn1.d | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/ld/testsuite/ld-i386/warn1.d b/ld/testsuite/ld-i386/warn1.d
-index 3c78f31efd..3319308d33 100644
---- a/ld/testsuite/ld-i386/warn1.d
-+++ b/ld/testsuite/ld-i386/warn1.d
-@@ -1,4 +1,4 @@
- #name: --warn-shared-textrel --fatal-warnings
- #as: --32
- #ld: -shared -melf_i386 --warn-shared-textrel --fatal-warnings
--#error: .*warning: creating a DT_TEXTREL in a shared object
-+#error: .*warning: creating a DT_TEXTREL in object.
--- 
-2.26.2
-

diff --git a/9999/0009-Gentoo-Pass-hash-style-sysv-and-no-warn-shared-textr.patch b/9999/0009-Gentoo-Pass-hash-style-sysv-and-no-warn-shared-textr.patch
new file mode 100644
index 0000000..4ff406f
--- /dev/null
+++ b/9999/0009-Gentoo-Pass-hash-style-sysv-and-no-warn-shared-textr.patch
@@ -0,0 +1,62 @@
+From 2055e278cb6e984760dbf8627efef2158e215449 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
+Date: Wed, 18 Oct 2017 00:44:49 +0200
+Subject: [PATCH 9/9] Gentoo: Pass --hash-style=sysv and
+ --no-warn-shared-textrel to ld in the testsuite
+
+---
+ binutils/testsuite/lib/binutils-common.exp |  2 +-
+ ld/testsuite/lib/ld-lib.exp                | 16 ++++++++++++++--
+ 2 files changed, 15 insertions(+), 3 deletions(-)
+
+diff --git a/binutils/testsuite/lib/binutils-common.exp b/binutils/testsuite/lib/binutils-common.exp
+index b9e3c6d817..bb4ef987b3 100644
+--- a/binutils/testsuite/lib/binutils-common.exp
++++ b/binutils/testsuite/lib/binutils-common.exp
+@@ -1125,7 +1125,7 @@ proc run_dump_test { name {extra_options {}} } {
+ 
+             # Add -L$srcdir/$subdir so that the linker command can use
+             # linker scripts in the source directory.
+-            set cmd "$LD $ld_extra_opt $LDFLAGS -L$srcdir/$subdir \
++            set cmd "$LD --hash-style=sysv --no-warn-shared-textrel $ld_extra_opt $LDFLAGS -L$srcdir/$subdir \
+ 		   $opts(ld) -o $objfile $objfiles $opts(ld_after_inputfiles)"
+ 
+             # If needed then check for, or add a -Map option.
+diff --git a/ld/testsuite/lib/ld-lib.exp b/ld/testsuite/lib/ld-lib.exp
+index 015eda6eb9..0b945b539d 100644
+--- a/ld/testsuite/lib/ld-lib.exp
++++ b/ld/testsuite/lib/ld-lib.exp
+@@ -165,7 +165,7 @@ proc default_ld_relocate { ld target objects } {
+     global HOSTING_EMU
+ 
+     remote_file host delete $target
+-    return [run_host_cmd_yesno "$ld" "$HOSTING_EMU -o $target -r $objects"]
++    return [run_host_cmd_yesno "$ld" "$HOSTING_EMU --hash-style=sysv --no-warn-shared-textrel -o $target -r $objects"]
+ }
+ 
+ # Check to see if ld is being invoked with a non-endian output format
+@@ -196,8 +196,20 @@ proc default_ld_link { ld target objects } {
+ 	set flags [big_or_little_endian]
+     }
+ 
++    # Hilariously, this procedure is called sometimes with $CC and sometimes
++    # with $ld as parameter. If we want to change the default behaviour, we
++    # need to take the different option formats into account.
++    # We check the $ld parameter for
++    # - ld-new         -> we're working with the new linker
++    # - otherwise      -> we're likely working with the system compiler
++    if {[regexp {ld-new$} $ld]} {
++      set gentoosysv "--hash-style=sysv --no-warn-shared-textrel"
++    } else {
++      set gentoosysv "-Wl,--hash-style=sysv -Wl,--no-warn-shared-textrel"
++    }
++
+     remote_file host delete $target
+-    set exec_output [run_host_cmd "$ld" "$flags -o $target $objects"]
++    set exec_output [run_host_cmd "$ld" "$gentoosysv $flags -o $target $objects"]
+     set exec_output [prune_warnings $exec_output]
+ 
+     # We don't care if we get a warning about a non-existent start
+-- 
+2.26.2
+

diff --git a/9999/0010-Gentoo-Fix-textrel-warning-format-test.patch b/9999/0010-Gentoo-Fix-textrel-warning-format-test.patch
deleted file mode 100644
index f29ae7f..0000000
--- a/9999/0010-Gentoo-Fix-textrel-warning-format-test.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From fab9a66210e065ff5a14d4bc70841406cdecc62e Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
-Date: Mon, 16 Jul 2018 12:20:37 +0200
-Subject: [PATCH 10/16] Gentoo: Fix textrel warning format test
-
----
- ld/testsuite/ld-i386/warn1.d | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/ld/testsuite/ld-i386/warn1.d b/ld/testsuite/ld-i386/warn1.d
-index 3319308d33..49bcb5171f 100644
---- a/ld/testsuite/ld-i386/warn1.d
-+++ b/ld/testsuite/ld-i386/warn1.d
-@@ -1,4 +1,4 @@
- #name: --warn-shared-textrel --fatal-warnings
- #as: --32
- #ld: -shared -melf_i386 --warn-shared-textrel --fatal-warnings
--#error: .*warning: creating a DT_TEXTREL in object.
-+#error: .*warning: creating a DT_TEXTREL in object
--- 
-2.26.2
-

diff --git a/9999/0012-no-patch-Gentoo-Add-patch-tarball-generation-script.patch b/9999/0012-no-patch-Gentoo-Add-patch-tarball-generation-script.patch
deleted file mode 100644
index a60bb9c..0000000
--- a/9999/0012-no-patch-Gentoo-Add-patch-tarball-generation-script.patch
+++ /dev/null
@@ -1,217 +0,0 @@
-From 7343f154ae6bc08bd2c3c051f039824af3d917e5 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
-Date: Wed, 11 Oct 2017 21:56:53 +0200
-Subject: [PATCH 12/16] [no patch] Gentoo: Add patch tarball generation script
-
-(cherry picked from commit 90427abb2aac0cc4ebcb73397cc3ad574c6fec5d)
----
- scripts/gentoo/0000-Gentoo-Git-is-development |  12 ++
- scripts/gentoo/9999-Gentoo-We-make-a-release  |  12 ++
- scripts/gentoo/README.Gentoo.patches          |  31 +++++
- scripts/gentoo/make-tarball.sh                | 118 ++++++++++++++++++
- 4 files changed, 173 insertions(+)
- create mode 100644 scripts/gentoo/0000-Gentoo-Git-is-development
- create mode 100644 scripts/gentoo/9999-Gentoo-We-make-a-release
- create mode 100644 scripts/gentoo/README.Gentoo.patches
- create mode 100755 scripts/gentoo/make-tarball.sh
-
-diff --git a/scripts/gentoo/0000-Gentoo-Git-is-development b/scripts/gentoo/0000-Gentoo-Git-is-development
-new file mode 100644
-index 0000000000..2b9482d033
---- /dev/null
-+++ b/scripts/gentoo/0000-Gentoo-Git-is-development
-@@ -0,0 +1,12 @@
-+Gentoo: Git is development
-+
-+--- a/bfd/development.sh
-++++ b/bfd/development.sh
-+@@ -16,5 +16,5 @@
-+ # along with this program.  If not, see <http://www.gnu.org/licenses/>.
-+ 
-+ # Controls whether to enable development-mode features by default.
-+-development=false
-++development=true
-+ 
-+
-diff --git a/scripts/gentoo/9999-Gentoo-We-make-a-release b/scripts/gentoo/9999-Gentoo-We-make-a-release
-new file mode 100644
-index 0000000000..fea66d97b4
---- /dev/null
-+++ b/scripts/gentoo/9999-Gentoo-We-make-a-release
-@@ -0,0 +1,12 @@
-+Gentoo: We make a release, so switch development flag off
-+
-+--- a/bfd/development.sh
-++++ b/bfd/development.sh
-+@@ -16,5 +16,5 @@
-+ # along with this program.  If not, see <http://www.gnu.org/licenses/>.
-+ 
-+ # Controls whether to enable development-mode features by default.
-+-development=true
-++development=false
-+ 
-+
-diff --git a/scripts/gentoo/README.Gentoo.patches b/scripts/gentoo/README.Gentoo.patches
-new file mode 100644
-index 0000000000..504dc67127
---- /dev/null
-+++ b/scripts/gentoo/README.Gentoo.patches
-@@ -0,0 +1,31 @@
-+ ============
-+ === What ===
-+ ============
-+
-+Gentoo patchsets for binutils are maintained as vendor branches of the upstream
-+binutils-glb git repository. From there, we bundle all the commits into a tarball
-+and distribute it via our public mirroring system.
-+
-+If you want specific info about a patch (like what it does or whose great idea 
-+it was to change the code), read the patch!  We try to fill out the commit
-+messages with useful info such as what it does, why it's needed, bug reports, 
-+original creators, etc...  
-+
-+ =============
-+ === Where ===
-+ =============
-+
-+Currently, https://github.com/gentoo/binutils-gdb
-+
-+ ===========
-+ === How ===
-+ ===========
-+ 
-+The patch naming convention is precisely as generated by "git format-patch".
-+
-+All patches should apply with -p1 (so they can be used both with the legacy
-+epatch function and the new, more strict eapply function).
-+
-+Commits where the commit message starts with "[no patch]" will not be included
-+in the patch tarball. This is useful for changes to the tarball generation
-+script, or for the addition of extra files that are not patches.
-diff --git a/scripts/gentoo/make-tarball.sh b/scripts/gentoo/make-tarball.sh
-new file mode 100755
-index 0000000000..575f48bf6a
---- /dev/null
-+++ b/scripts/gentoo/make-tarball.sh
-@@ -0,0 +1,118 @@
-+#!/bin/bash
-+
-+PN="binutils"
-+PV=$1
-+pver=$2
-+
-+if [[ -z ${PV} ]] ; then
-+	echo "Usage: $0 binutils-version patchset-version-to-be-created"
-+	echo "Please read the script before trying to use it :)"
-+	exit 1
-+fi
-+
-+# check that we're in the root of a binutils-gdb git repo
-+
-+if [[ ! -f COPYING.LIBGLOSS ]] || [[ ! -d .git ]] ; then
-+	echo "Error: You need to call this script in the main directory of a Gentoo binutils-gdb git clone"
-+	exit 1
-+fi
-+
-+# check that we're on a branch gentoo/${PV}
-+
-+mybranchinfo=$(git status --porcelain -b|grep '^##')
-+mybranch=$(echo ${mybranchinfo}|sed -e 's:^## ::' -e 's:\.\.\..*$::')
-+if [[ ! "gentoo/binutils-${PV}" == "${mybranch}" ]] ; then
-+	echo "Error: Your git repository is on the incorrect branch ${mybranch}; should be gentoo/binutils-${PV}"
-+	exit 1
-+fi
-+
-+# check that the working directory is clean
-+
-+mystatusinfo=$(git status --porcelain)
-+if [[ ! -z "${mystatusinfo}" ]] ; then
-+	echo "Error: Your working directory is not clean"
-+	exit 1
-+fi
-+
-+# check if the tag already exists
-+
-+mytaginfo=$(git tag -l|grep "gentoo/binutils-${PV}-${pver}")
-+if [[ ! -z "${mytaginfo}" ]] ; then
-+	echo "Error: A tag corresponding to this patch level already exists (gentoo/binutils-${PV}-${pver})"
-+	exit 1
-+fi
-+
-+# luckily binutils git has no /tmp dir and no tar.xz files, but let's better check and be pathologically careful
-+
-+if [[ -e tmp ]] || [[ -e ${PN}-${PV}-patches-${pver}.tar.xz ]] ; then
-+	echo "Error: tmp or ${PN}-${PV}-patches-${pver}.tar.xz exists in git"
-+	exit 1
-+fi
-+rm -rf tmp
-+rm -f ${PN}-${PV}-*.tar.bz2
-+
-+for myname in 0*.patch ; do
-+	if [[ -e "${myname}" ]]; then
-+		echo "Error: ${myname} exists in git"
-+		exit 1
-+	fi
-+done
-+rm -f 0*.patch
-+
-+# check if we have to override the upstream tag
-+
-+mytaginfo=$(git tag -l|grep "gentoo/binutils-${PV}-upstream")
-+if [[ ! -z "${mytaginfo}" ]] ; then
-+	starttag="gentoo/binutils-${PV}-upstream"
-+else
-+	starttag="binutils-${PV//./_}"
-+fi
-+if [[ "${PV}" == "9999" ]]; then
-+	starttag="master"
-+fi
-+echo "Starting from tag ${starttag}"
-+
-+mkdir -p tmp/patch
-+
-+# copy README.Gentoo.patches
-+
-+cp scripts/gentoo/README.Gentoo.patches tmp/ || exit 1
-+
-+# create and rename patches
-+
-+git format-patch ${starttag}..HEAD > /dev/null || exit 1
-+
-+# remove all patches where the summary line starts with:
-+# - [no-tarball]: not related to upstream tarball
-+# - [no-patch]: not related to upstream patches
-+# - "Automatic date update in version.in": daily bumps
-+rm -f 0???-no-tarball-*.patch
-+rm -f 0???-no-patch-*.patch
-+rm -f 0???-Automatic-date-update-in-version.in.patch
-+
-+for myname in 0*.patch ; do
-+	mv ${myname} tmp/patch/ || exit 1
-+done
-+
-+# add the extra patch if needed
-+
-+if [[ "${PV}" != "9999" ]]; then
-+	cp scripts/gentoo/0000-Gentoo-Git-is-development tmp/patch/0000-Gentoo-Git-is-development.patch || exit 1
-+	cp scripts/gentoo/9999-Gentoo-We-make-a-release tmp/patch/9999-Gentoo-We-make-a-release.patch || exit 1
-+fi
-+
-+# add a history file
-+
-+git log --stat --decorate ${starttag}..HEAD > tmp/patch/README.history || exit 1
-+
-+# package everything up
-+
-+tar -Jcf ${PN}-${PV}-patches-${pver}.tar.xz \
-+	-C tmp patch README.Gentoo.patches || exit 1
-+rm -r tmp
-+
-+du -b *.tar.xz
-+
-+# tag the commit
-+
-+git tag -s -m "Gentoo patchset binutils-${PV}-${pver}" "gentoo/binutils-${PV}-${pver}"
--- 
-2.26.2
-

diff --git a/9999/0014-Gentoo-Remove-block-mistakenly-duplicated-in-1222895.patch b/9999/0014-Gentoo-Remove-block-mistakenly-duplicated-in-1222895.patch
deleted file mode 100644
index 20dbdd1..0000000
--- a/9999/0014-Gentoo-Remove-block-mistakenly-duplicated-in-1222895.patch
+++ /dev/null
@@ -1,777 +0,0 @@
-From e54cd834e32160ac588add78a2990648328c2f06 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
-Date: Sun, 10 May 2020 20:13:43 +0300
-Subject: [PATCH 14/16] Gentoo: Remove block mistakenly duplicated in
- 1222895ec55f34a97fb2cbcd80d421e24308f618
-
----
- ld/testsuite/lib/ld-lib.exp | 753 ------------------------------------
- 1 file changed, 753 deletions(-)
-
-diff --git a/ld/testsuite/lib/ld-lib.exp b/ld/testsuite/lib/ld-lib.exp
-index ec123e2fc1..ae72f21d72 100644
---- a/ld/testsuite/lib/ld-lib.exp
-+++ b/ld/testsuite/lib/ld-lib.exp
-@@ -421,759 +421,6 @@ proc ld_link_defsyms {} {
-     return $flags
- }
- 
--# run_dump_test FILE (optional:) EXTRA_OPTIONS
--# Copied from gas testsuite, tweaked and further extended.
--#
--# Assemble a .s file, then run some utility on it and check the output.
--#
--# There should be an assembly language file named FILE.s in the test
--# suite directory, and a pattern file called FILE.d.  `run_dump_test'
--# will assemble FILE.s, run some tool like `objdump', `objcopy', or
--# `nm' on the .o file to produce textual output, and then analyze that
--# with regexps.  The FILE.d file specifies what program to run, and
--# what to expect in its output.
--#
--# The FILE.d file begins with zero or more option lines, which specify
--# flags to pass to the assembler, the program to run to dump the
--# assembler's output, and the options it wants.  The option lines have
--# the syntax:
--#
--#         # OPTION: VALUE
--#
--# OPTION is the name of some option, like "name" or "objdump", and
--# VALUE is OPTION's value.  The valid options are described below.
--# Whitespace is ignored everywhere, except within VALUE.  The option
--# list ends with the first line that doesn't match the above syntax
--# (hmm, not great for error detection).
--#
--# The optional EXTRA_OPTIONS argument to `run_dump_test' is a list of
--# two-element lists.  The first element of each is an option name, and
--# the second additional arguments to be added on to the end of the
--# option list as given in FILE.d.  (If omitted, no additional options
--# are added.)
--#
--# The interesting options are:
--#
--#   name: TEST-NAME
--#	The name of this test, passed to DejaGNU's `pass' and `fail'
--#       commands.  If omitted, this defaults to FILE, the root of the
--#       .s and .d files' names.
--#
--#   as: FLAGS
--#	When assembling, pass FLAGS to the assembler.
--#       If assembling several files, you can pass different assembler
--#       options in the "source" directives.  See below.
--#
--#   ld: FLAGS
--#       Link assembled files using FLAGS, in the order of the "source"
--#       directives, when using multiple files.
--#
--#   ld_after_inputfiles: FLAGS
--#       Similar to "ld", but put after all input files.
--#
--#   objcopy_objects: FLAGS
--#	Run objcopy with the specified flags after assembling any source
--#	that has the special marker RUN_OBJCOPY in the source specific
--#	flags.
--#
--#   objcopy_linked_file: FLAGS
--#	Run objcopy on the linked file with the specified flags.
--#	This lets you transform the linked file using objcopy, before the
--#	result is analyzed by an analyzer program specified below (which
--#	may in turn *also* be objcopy).
--#
--#   PROG: PROGRAM-NAME
--#       The name of the program to run to analyze the .o file produced
--#       by the assembler or the linker output.  This can be omitted;
--#       run_dump_test will guess which program to run by seeing which of
--#       the flags options below is present.
--#
--#   readelf: FLAGS
--#   objdump: FLAGS
--#   nm: FLAGS
--#   objcopy: FLAGS
--#	Use the specified program to analyze the assembler or linker
--#       output file, and pass it FLAGS, in addition to the output name.
--#	Note that they are run with LC_ALL=C in the environment to give
--#	consistent sorting of symbols.
--#
--#   source: SOURCE [FLAGS]
--#	Assemble the file SOURCE.s using the flags in the "as" directive
--#       and the (optional) FLAGS.  If omitted, the source defaults to
--#       FILE.s.
--#       This is useful if several .d files want to share a .s file.
--#       More than one "source" directive can be given, which is useful
--#       when testing linking.
--#
--#   dump: DUMP
--#	Match against DUMP.d.  If omitted, this defaults to FILE.d.  This
--#	is useful if several .d files differ by options only.  Options are
--#	always read from FILE.d.
--#
--#   xfail: TARGET
--#       The test is expected to fail on TARGET.  This may occur more than
--#       once.
--#
--#   target: TARGET
--#	Only run the test for TARGET.
--#	You may provide target name "cfi" for any target supporting the
--#	CFI statements.  You may provide target name "shared" for any
--#	target supporting shared libraries.  Otherwise TARGET is called
--#	as a TCL procedure if surrounded by square brackets, or passed
--#	to "istarget" if not.
--#	This may occur more than once; the target being tested must match
--#	at least one.  Otherwise the test will be marked unsupported.
--#
--#   alltargets: TARGET
--#	Only run the test for TARGET.
--#	The syntax for TARGET is as with 'target'.
--#	This may occur more than once; the target being tested must match
--#	all of them.  Otherwise the test will be marked unsupported.
--#
--#   notarget: TARGET
--#	Do not run the test for TARGET.
--#	The syntax for TARGET is as with 'target'.
--#	This may occur more than once; the target being tested must not
--#	match any of them.  Otherwise the test will be marked unsupported.
--#
--#   skip: TARGET
--#   anyskip: TARGET
--#   noskip: TARGET
--#	These are exactly the same as "notarget", "alltargets" and
--#	"target" respectively, except that they do nothing at all if the
--#	check fails.  They should only be used in groups, to construct a
--#	single test which is run on all targets but with variant options
--#	or expected output on some targets.  (For example, see
--#	gas/arm/inst.d and gas/arm/wince_inst.d.)
--#
--#   error: REGEX
--#	An error with message matching REGEX must be emitted for the test
--#	to pass.  The PROG, readelf, objdump, nm and objcopy options have
--#	no meaning and need not be supplied if this is present.  Multiple
--#	"error" directives append to the expected linker error message.
--#
--#   error_output: FILE
--#       Means the same as 'error', except the regular expression lines
--#       are contains in FILE.
--#
--#   warning: REGEX
--#	Expect a linker warning matching REGEX.  It is an error to issue
--#	both "error" and "warning".  Multiple "warning" directives
--#	append to the expected linker warning message.
--#
--#   warning_output: FILE
--#       Means the same as 'warning', except the regular expression
--#       lines are contains in FILE.
--#
--#   map: FILE
--#       Adding this option will cause the linker to generate a linker
--#       map file, using the -Map=MAPFILE command line option.  If
--#       there is no -Map=MAPFILE in the 'ld: FLAGS' then one will be
--#       added to the linker command line.  The contents of the
--#       generated MAPFILE are then compared against the regexp lines
--#       in FILE using `regexp_diff' (see below for details).
--#
--# Each option may occur at most once unless otherwise mentioned.
--#
--# After the option lines come regexp lines.  `run_dump_test' calls
--# `regexp_diff' to compare the output of the dumping tool against the
--# regexps in FILE.d.  `regexp_diff' is defined in binutils-common.exp;
--# see further comments there.
--#
--proc run_dump_test { name {extra_options {}} } {
--    global subdir srcdir
--    global OBJDUMP NM AS OBJCOPY READELF LD
--    global OBJDUMPFLAGS NMFLAGS ASFLAGS OBJCOPYFLAGS READELFFLAGS LDFLAGS
--    global host_triplet runtests
--    global env verbose
--    global ld_elf_shared_opt
--
--    if { [is_elf_format] && [check_shared_lib_support] } {
--	set ld_extra_opt "$ld_elf_shared_opt"
--    } else {
--	set ld_extra_opt ""
--    }
--
--    if [string match "*/*" $name] {
--	set file $name
--	set name [file tail $name]
--    } else {
--	set file "$srcdir/$subdir/$name"
--    }
--
--    if ![runtest_file_p $runtests $name] then {
--	return
--    }
--
--    set opt_array [slurp_options "${file}.d"]
--    if { $opt_array == -1 } {
--	perror "error reading options from $file.d"
--	unresolved $subdir/$name
--	return
--    }
--    set dumpfile tmpdir/dump.out
--    set run_ld 0
--    set run_objcopy 0
--    set objfile_names {}
--    set opts(as) {}
--    set opts(ld) {}
--    set opts(ld_after_inputfiles) {}
--    set opts(xfail) {}
--    set opts(target) {}
--    set opts(alltargets) {}
--    set opts(notarget) {}
--    set opts(skip) {}
--    set opts(anyskip) {}
--    set opts(noskip) {}
--    set opts(objdump) {}
--    set opts(nm) {}
--    set opts(objcopy) {}
--    set opts(readelf) {}
--    set opts(name) {}
--    set opts(PROG) {}
--    set opts(source) {}
--    set opts(dump) {}
--    set opts(error) {}
--    set opts(warning) {}
--    set opts(error_output) {}
--    set opts(warning_output) {}
--    set opts(objcopy_linked_file) {}
--    set opts(objcopy_objects) {}
--    set opts(map) {}
--
--    foreach i $opt_array {
--	set opt_name [lindex $i 0]
--	set opt_val [lindex $i 1]
--	if ![info exists opts($opt_name)] {
--	    perror "unknown option $opt_name in file $file.d"
--	    unresolved $subdir/$name
--	    return
--	}
--
--	switch -- $opt_name {
--	    xfail {}
--	    target {}
--	    alltargets {}
--	    notarget {}
--	    skip {}
--	    anyskip {}
--	    noskip {}
--	    warning {}
--	    error {}
--	    source {
--		# Move any source-specific as-flags to a separate list to
--		# simplify processing.
--		if { [llength $opt_val] > 1 } {
--		    lappend asflags [lrange $opt_val 1 end]
--		    set opt_val [lindex $opt_val 0]
--		} else {
--		    lappend asflags {}
--		}
--
--                # Create the object file name based on nothing but the source
--                # file name.
--                set new_objfile \
--                    [concat tmpdir/[file rootname [file tail [lindex $opt_val 0]]].o]
--                # But, sometimes, we have the exact same source filename in
--                # different directories (foo/src.s bar/src.s) which would lead
--                # us to try and create two src.o files.  We detect this
--                # conflict here, and instead create src.o and src1.o.
--                set j 0
--                while { [lsearch $objfile_names $new_objfile] != -1 } {
--                    incr j
--                    set new_objfile \
--                        [concat tmpdir/[file rootname [file tail  [lindex $opt_val 0]]]${j}.o]
--                }
--		lappend objfile_names $new_objfile
--	    }
--	    default {
--		if [string length $opts($opt_name)] {
--		    perror "option $opt_name multiply set in $file.d"
--		    unresolved $subdir/$name
--		    return
--		}
--
--		# A single "# ld:" with no options should do the right thing.
--		if { $opt_name == "ld" } {
--		    set run_ld 1
--		}
--		# Likewise objcopy_linked_file.
--		if { $opt_name == "objcopy_linked_file" } {
--		    set run_objcopy 1
--		}
--	    }
--	}
--	if { $opt_name == "as" || $opt_name == "ld" } {
--	    set opt_val [subst $opt_val]
--	}
--
--	# Append differently whether it's a message (without space) or
--	# an option or list (with space).
--	switch -- $opt_name {
--	    warning -
--	    error {
--		append opts($opt_name) $opt_val
--	    }
--	    default {
--		set opts($opt_name) [concat $opts($opt_name) $opt_val]
--	    }
--	}
--    }
--
--    foreach i $extra_options {
--	set opt_name [lindex $i 0]
--	set opt_val [lindex $i 1]
--	if ![info exists opts($opt_name)] {
--	    perror "unknown option $opt_name given in extra_opts"
--	    unresolved $subdir/$name
--	    return
--	}
--	# Add extra option to end of existing option, adding space
--	# if necessary.
--	if { ![regexp "warning|error" $opt_name]
--	     && [string length $opts($opt_name)] } {
--	    append opts($opt_name) " "
--	}
--	append opts($opt_name) $opt_val
--    }
--
--    foreach opt { as ld } {
--	regsub {\[big_or_little_endian\]} $opts($opt) \
--	    [big_or_little_endian] opts($opt)
--    }
--
--    if { $opts(name) == "" } {
--	set testname "$subdir/$name"
--    } else {
--	set testname $opts(name)
--    }
--
--    # Decide early whether we should run the test for this target.
--    if { [llength $opts(noskip)] > 0 } {
--	set targmatch 0
--	foreach targ $opts(noskip) {
--	    if [match_target $targ] {
--		set targmatch 1
--		break
--	    }
--	}
--	if { $targmatch == 0 } {
--	    return
--	}
--    }
--    foreach targ $opts(anyskip) {
--	if ![match_target $targ] {
--	    return
--	}
--    }
--    foreach targ $opts(skip) {
--	if [match_target $targ] {
--	    return
--	}
--    }
--    if { [llength $opts(target)] > 0 } {
--	set targmatch 0
--	foreach targ $opts(target) {
--	    if [match_target $targ] {
--		set targmatch 1
--		break
--	    }
--	}
--	if { $targmatch == 0 } {
--	    unsupported $testname
--	    return
--	}
--    }
--    foreach targ $opts(alltargets) {
--	if ![match_target $targ] {
--	    unsupported $testname
--	    return
--	}
--    }
--    foreach targ $opts(notarget) {
--	if [match_target $targ] {
--	    unsupported $testname
--	    return
--	}
--    }
--
--    set program ""
--    # It's meaningless to require an output-testing method when we
--    # expect an error.
--    if { $opts(error) == "" && $opts(error_output) == "" } {
--	if {$opts(PROG) != ""} {
--	    switch -- $opts(PROG) {
--		objdump	{ set program objdump }
--		nm	{ set program nm }
--		objcopy	{ set program objcopy }
--		readelf	{ set program readelf }
--		default
--		{ perror "unrecognized program option $opts(PROG) in $file.d"
--		  unresolved $testname
--		  return }
--	    }
--	} else {
--	# Guess which program to run, by seeing which option was specified.
--	    foreach p {objdump objcopy nm readelf} {
--		if {$opts($p) != ""} {
--		    if {$program != ""} {
--			perror "ambiguous dump program in $file.d"
--			unresolved $testname
--			return
--		    } else {
--			set program $p
--		    }
--		}
--	    }
--	}
--	if { $program == "" \
--                 && $opts(map) == "" \
--                 && $opts(warning) == "" \
--                 && $opts(warning_output) == "" \
--                 && $opts(error) == "" \
--                 && $opts(error_output) == "" } {
--	    perror "dump program unspecified in $file.d"
--	    unresolved $testname
--	    return
--	}
--    }
--
--    if { $opts(source) == "" } {
--	set sourcefiles [list ${file}.s]
--	set asflags [list ""]
--	set objfile_names [list tmpdir/[file tail ${file}].o]
--    } else {
--	set sourcefiles {}
--	foreach sf $opts(source) {
--	    if { [string match "/*" $sf] } {
--		lappend sourcefiles "$sf"
--	    } else {
--		lappend sourcefiles "$srcdir/$subdir/$sf"
--	    }
--	}
--    }
--
--    if { $opts(dump) == "" } {
--	set dfile ${file}.d
--    } else {
--	set dfile $srcdir/$subdir/$opts(dump)
--    }
--
--    # Time to setup xfailures.
--    foreach targ $opts(xfail) {
--	setup_xfail $targ
--    }
--
--    # Assemble each file.
--    set objfiles {}
--    for { set i 0 } { $i < [llength $sourcefiles] } { incr i } {
--	set sourcefile [lindex $sourcefiles $i]
--	set sourceasflags [lindex $asflags $i]
--	set run_objcopy_objects 0
--
--	if { [string match "*RUN_OBJCOPY*" $sourceasflags] } {
--	    set run_objcopy_objects 1
--	}
--	regsub "RUN_OBJCOPY" $sourceasflags "" sourceasflags
--
--	set objfile [lindex $objfile_names $i]
--	catch "exec rm -f $objfile" exec_output
--	lappend objfiles $objfile
--	set cmd "$AS $ASFLAGS $opts(as) $sourceasflags -o $objfile $sourcefile"
--
--	send_log "$cmd\n"
--	set cmdret [remote_exec host [concat sh -c [list "$cmd 2>&1"]] "" "/dev/null" "ld.tmp"]
--	remote_upload host "ld.tmp"
--	set comp_output [prune_warnings [file_contents "ld.tmp"]]
--	remote_file host delete "ld.tmp"
--	remote_file build delete "ld.tmp"
--
--	if { [lindex $cmdret 0] != 0 || ![string match "" $comp_output] } then {
--	    send_log -- "$comp_output\n"
--	    verbose "$comp_output" 3
--
--	    set exitstat "succeeded"
--	    if { $cmdret != 0 } { set exitstat "failed" }
--	    verbose -log "$exitstat with: <$comp_output>"
--	    fail $testname
--	    return
--	}
--
--	if { $run_objcopy_objects } {
--	    set cmd "$OBJCOPY $opts(objcopy_objects) $objfile"
--
--	    send_log "$cmd\n"
--	    set cmdret [remote_exec host [concat sh -c [list "$cmd 2>&1"]] \
--			"" "/dev/null" "objcopy.tmp"]
--	    remote_upload host "objcopy.tmp"
--	    set comp_output [prune_warnings [file_contents "objcopy.tmp"]]
--	    remote_file host delete "objcopy.tmp"
--	    remote_file build delete "objcopy.tmp"
--
--	    if { [lindex $cmdret 0] != 0 \
--		  || ![string match "" $comp_output] } {
--		send_log -- "$comp_output\n"
--		verbose "$comp_output" 3
--
--		set exitstat "succeeded"
--		if { $cmdret != 0 } { set exitstat "failed" }
--		verbose -log "$exitstat with: <$comp_output>"
--		fail $testname
--		return
--	    }
--	}
--    }
--
--    if { (($opts(warning) != "") && ($opts(error) != "")) \
--	 || (($opts(warning) != "") && ($opts(error_output) != "")) \
--	 || (($opts(warning) != "") && ($opts(warning_output) != "")) \
--	 || (($opts(error) != "") && ($opts(warning_output) != "")) \
--	 || (($opts(error) != "") && ($opts(error_output) != "")) \
--	 || (($opts(warning_output) != "") && ($opts(error_output) != "")) } {
--	perror "$testname: bad mix of warning, error, warning_output, and error_output test-directives"
--	unresolved $testname
--	return
--    }
--
--    set check_ld(source) ""
--    set check_ld(terminal) 0
--    if { $opts(error) != "" \
--         || $opts(warning) != "" \
--         || $opts(error_output) != "" \
--         || $opts(warning_output) != "" } {
--
--        if { $opts(error) != "" || $opts(error_output) != "" } {
--            set check_ld(terminal) 1
--        } else {
--            set check_ld(terminal) 0
--        }
--
--        if { $opts(error) != "" || $opts(warning) != "" } {
--            set check_ld(source) "regex"
--            if { $opts(error) != "" } {
--                set check_ld(regex) $opts(error)
--            } else {
--                set check_ld(regex) $opts(warning)
--            }
--        } else {
--            set check_ld(source) "file"
--            if { $opts(error_output) != "" } {
--                set check_ld(file) $opts(error_output)
--            } else {
--                set check_ld(file) $opts(warning_output)
--            }
--        }
--    }
--
--    # Perhaps link the file(s).
--    if { $run_ld } {
--	set objfile "tmpdir/dump"
--	catch "exec rm -f $objfile" exec_output
--
--	# Add -L$srcdir/$subdir so that the linker command can use
--	# linker scripts in the source directory.
--	set cmd "$LD --hash-style=sysv --no-warn-shared-textrel $ld_extra_opt $LDFLAGS -L$srcdir/$subdir \
--		   $opts(ld) -o $objfile $objfiles $opts(ld_after_inputfiles)"
--
--        # If needed then check for, or add a -Map option.
--        set mapfile ""
--        if { $opts(map) != "" } then {
--            if { [regexp -- "-Map=(\[^ \]+)" $cmd all mapfile] } then {
--                # Found existing mapfile option
--                verbose -log "Existing mapfile '$mapfile' found"
--            } else {
--                # No mapfile option.
--                set mapfile "tmpdir/dump.map"
--                verbose -log "Adding mapfile '$mapfile'"
--                set cmd "$cmd -Map=$mapfile"
--            }
--        }
--
--	send_log "$cmd\n"
--	set cmdret [remote_exec host [concat sh -c [list "$cmd 2>&1"]] "" "/dev/null" "ld.tmp"]
--	remote_upload host "ld.tmp"
--	set comp_output [file_contents "ld.tmp"]
--	remote_file host delete "ld.tmp"
--	remote_file build delete "ld.tmp"
--	set cmdret [lindex $cmdret 0]
--
--	if { $cmdret == 0 && $run_objcopy } {
--	    set infile $objfile
--	    set objfile "tmpdir/dump1"
--	    remote_file host delete $objfile
--
--	    # Note that we don't use OBJCOPYFLAGS here; any flags must be
--	    # explicitly specified.
--	    set cmd "$OBJCOPY $opts(objcopy_linked_file) $infile $objfile"
--
--	    send_log "$cmd\n"
--	    set cmdret [remote_exec host [concat sh -c [list "$cmd 2>&1"]] "" "/dev/null" "ld.tmp"]
--	    remote_upload host "ld.tmp"
--	    append comp_output [file_contents "ld.tmp"]
--	    remote_file host delete "ld.tmp"
--	    remote_file build delete "ld.tmp"
--	    set cmdret [lindex $cmdret 0]
--	}
--
--	regsub "\n$" $comp_output "" comp_output
--	if { $cmdret != 0 || $comp_output != "" || $check_ld(source) != "" } then {
--	    set exitstat "succeeded"
--	    if { $cmdret != 0 } { set exitstat "failed" }
--
--            if { $check_ld(source) == "regex" } {
--                verbose -log "$exitstat with: <$comp_output>, expected: <$check_ld(regex)>"
--            } elseif { $check_ld(source) == "file" } {
--                verbose -log "$exitstat with: <$comp_output>, expected in file $check_ld(file)"
--                set_file_contents "tmpdir/ld.messages" "$comp_output"
--            } else {
--                verbose -log "$exitstat with: <$comp_output>, no expected output"
--            }
--	    send_log -- "$comp_output\n"
--	    verbose "$comp_output" 3
--
--	    if { (($check_ld(source) == "") == ($comp_output == "")) \
--                 && (($cmdret == 0) == ($check_ld(terminal) == 0)) \
--                 && ((($check_ld(source) == "regex") \
--                      && ($check_ld(regex) == "") == ($comp_output == "") \
--                      && [regexp -- $check_ld(regex) $comp_output]) \
--                     || (($check_ld(source) == "file") \
--                         && (![regexp_diff "tmpdir/ld.messages" "$srcdir/$subdir/$check_ld(file)"]))) } {
--                # We have the expected output from ld.
--		if { $check_ld(terminal) || $program == "" } {
--		    pass $testname
--		    return
--		}
--	    } else {
--		fail $testname
--		return
--	    }
--	}
--
--        if { $opts(map) != "" } then {
--            # Check the map file matches.
--            set map_pattern_file $srcdir/$subdir/$opts(map)
--            verbose -log "Compare '$mapfile' against '$map_pattern_file'"
--            if { [regexp_diff $mapfile $map_pattern_file] } then {
--                fail "$testname (map file check)"
--            } else {
--                pass "$testname (map file check)"
--            }
--
--            if { $program == "" } then {
--                return
--            }
--        }
--    } else {
--	set objfile [lindex $objfiles 0]
--    }
--
--    # We must not have expected failure if we get here.
--    if { $opts(error) != "" } {
--	fail $testname
--	return
--    }
--
--    set progopts1 $opts($program)
--    eval set progopts \$[string toupper $program]FLAGS
--    eval set binary \$[string toupper $program]
--
--    if { ![is_remote host] && [which $binary] == 0 } {
--	untested $testname
--	return
--    }
--
--    if { $progopts1 == "" } { set $progopts1 "-r" }
--    verbose "running $binary $progopts $progopts1" 3
--
--    # Objcopy, unlike the other two, won't send its output to stdout,
--    # so we have to run it specially.
--    set cmd "$binary $progopts $progopts1 $objfile > $dumpfile"
--    if { $program == "objcopy" } {
--	set cmd "$binary $progopts $progopts1 $objfile $dumpfile"
--    }
--
--    # Ensure consistent sorting of symbols
--    if {[info exists env(LC_ALL)]} {
--	set old_lc_all $env(LC_ALL)
--    }
--    set env(LC_ALL) "C"
--    send_log "$cmd\n"
--    set cmdret [remote_exec host [concat sh -c [list "$cmd 2>ld.tmp"]] "" "/dev/null"]
--    set cmdret [lindex $cmdret 0]
--    remote_upload host "ld.tmp"
--    set comp_output [prune_warnings [file_contents "ld.tmp"]]
--    remote_file host delete "ld.tmp"
--    remote_file build delete "ld.tmp"
--    if {[info exists old_lc_all]} {
--	set env(LC_ALL) $old_lc_all
--    } else {
--	unset env(LC_ALL)
--    }
--    if { $cmdret != 0 || $comp_output != "" } {
--	send_log "exited abnormally with $cmdret, output:$comp_output\n"
--	fail $testname
--	return
--    }
--
--    if { $verbose > 2 } then { verbose "output is [file_contents $dumpfile]" 3 }
--    if { [regexp_diff $dumpfile "${dfile}"] } then {
--	fail $testname
--	if { $verbose == 2 } then { verbose "output is [file_contents $dumpfile]" 2 }
--	return
--    }
--
--    pass $testname
--}
--
--proc slurp_options { file } {
--    # If options_regsub(foo) is set to {a b}, then the contents of a
--    # "#foo:" line will have regsub -all applied to replace a with b.
--    global options_regsub
--
--    if [catch { set f [open $file r] } x] {
--	#perror "couldn't open `$file': $x"
--	perror "$x"
--	return -1
--    }
--    set opt_array {}
--    # whitespace expression
--    set ws  {[ 	]*}
--    set nws {[^ 	]*}
--    # whitespace is ignored anywhere except within the options list;
--    # option names are alphabetic plus underscore only.
--    set pat "^#${ws}(\[a-zA-Z_\]*)$ws:${ws}(.*)$ws\$"
--    while { [gets $f line] != -1 } {
--	set line [string trim $line]
--	# Whitespace here is space-tab.
--	if [regexp $pat $line xxx opt_name opt_val] {
--	    # match!
--	    if [info exists options_regsub($opt_name)] {
--		set subst $options_regsub($opt_name)
--		regsub -all -- [lindex $subst 0] $opt_val [lindex $subst 1] \
--		    opt_val
--	    }
--	    lappend opt_array [list $opt_name $opt_val]
--	} else {
--	    break
--	}
--    }
--    close $f
--    return $opt_array
--}
--
--proc file_contents { filename } {
--    set file [open $filename r]
--    set contents [read $file]
--    close $file
--    return $contents
--}
--
--proc set_file_contents { filename contents } {
--    set file [open $filename w]
--    puts $file "$contents"
--    close $file
--}
--
- # Create an archive using ar
- #
- proc ar_simple_create { ar aropts target objects } {
--- 
-2.26.2
-

diff --git a/9999/0015-Gentoo-Adapt-generic-test-library-to-our-linker-sett.patch b/9999/0015-Gentoo-Adapt-generic-test-library-to-our-linker-sett.patch
deleted file mode 100644
index 8ac5654..0000000
--- a/9999/0015-Gentoo-Adapt-generic-test-library-to-our-linker-sett.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 782c17148cc2a663778c03bb6f78412e79593df4 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
-Date: Sun, 10 May 2020 20:24:33 +0300
-Subject: [PATCH 15/16] Gentoo: Adapt generic test library to our linker
- settings
-
----
- binutils/testsuite/lib/binutils-common.exp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/binutils/testsuite/lib/binutils-common.exp b/binutils/testsuite/lib/binutils-common.exp
-index b9e3c6d817..bb4ef987b3 100644
---- a/binutils/testsuite/lib/binutils-common.exp
-+++ b/binutils/testsuite/lib/binutils-common.exp
-@@ -1125,7 +1125,7 @@ proc run_dump_test { name {extra_options {}} } {
- 
-             # Add -L$srcdir/$subdir so that the linker command can use
-             # linker scripts in the source directory.
--            set cmd "$LD $ld_extra_opt $LDFLAGS -L$srcdir/$subdir \
-+            set cmd "$LD --hash-style=sysv --no-warn-shared-textrel $ld_extra_opt $LDFLAGS -L$srcdir/$subdir \
- 		   $opts(ld) -o $objfile $objfiles $opts(ld_after_inputfiles)"
- 
-             # If needed then check for, or add a -Map option.
--- 
-2.26.2
-

diff --git a/9999/0016-Gentoo-Fix-regexp-of-hilarious-ld-detection-heuristi.patch b/9999/0016-Gentoo-Fix-regexp-of-hilarious-ld-detection-heuristi.patch
deleted file mode 100644
index be9f677..0000000
--- a/9999/0016-Gentoo-Fix-regexp-of-hilarious-ld-detection-heuristi.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 6e0ff9dfef58d03eacc05ef381ef1d5fc7ad072d Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
-Date: Sun, 10 May 2020 20:59:05 +0300
-Subject: [PATCH 16/16] Gentoo: Fix regexp of hilarious ld detection heuristic
-
-The new linker used to be called as "ld/ld-new" but is now called as "./ld-new"
-Test for just "ld-new" and hope that the compiler binary never looks like this.
----
- ld/testsuite/lib/ld-lib.exp | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/ld/testsuite/lib/ld-lib.exp b/ld/testsuite/lib/ld-lib.exp
-index ae72f21d72..0b945b539d 100644
---- a/ld/testsuite/lib/ld-lib.exp
-+++ b/ld/testsuite/lib/ld-lib.exp
-@@ -200,9 +200,9 @@ proc default_ld_link { ld target objects } {
-     # with $ld as parameter. If we want to change the default behaviour, we
-     # need to take the different option formats into account.
-     # We check the $ld parameter for
--    # - .*ld/ld-new    -> we're working with the new linker
-+    # - ld-new         -> we're working with the new linker
-     # - otherwise      -> we're likely working with the system compiler
--    if {[regexp {ld/ld-new$} $ld]} {
-+    if {[regexp {ld-new$} $ld]} {
-       set gentoosysv "--hash-style=sysv --no-warn-shared-textrel"
-     } else {
-       set gentoosysv "-Wl,--hash-style=sysv -Wl,--no-warn-shared-textrel"
--- 
-2.26.2
-


^ permalink raw reply related	[flat|nested] 39+ messages in thread

* [gentoo-commits] proj/toolchain/binutils-patches:master commit in: 9999/
@ 2020-07-25 12:20 Andreas K. Hüttel
  0 siblings, 0 replies; 39+ messages in thread
From: Andreas K. Hüttel @ 2020-07-25 12:20 UTC (permalink / raw
  To: gentoo-commits

commit:     47b8db23ff55dd29992198dfbadda53984a4ab2d
Author:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
AuthorDate: Sat Jul 25 12:20:24 2020 +0000
Commit:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
CommitDate: Sat Jul 25 12:20:24 2020 +0000
URL:        https://gitweb.gentoo.org/proj/toolchain/binutils-patches.git/commit/?id=47b8db23

Textrel warnings have been enabled upstream, drop patches

Signed-off-by: Andreas K. Hüttel <dilfridge <AT> gentoo.org>

 ...oo-ld-always-warn-about-textrels-in-files.patch | 30 ----------
 ...an-option-no-warn-shared-textrel-self-exp.patch | 66 ----------------------
 2 files changed, 96 deletions(-)

diff --git a/9999/0001-Gentoo-ld-always-warn-about-textrels-in-files.patch b/9999/0001-Gentoo-ld-always-warn-about-textrels-in-files.patch
deleted file mode 100644
index d60b0a1..0000000
--- a/9999/0001-Gentoo-ld-always-warn-about-textrels-in-files.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 5e2144e41600a83f6127eb44d739ed170d78ac7f Mon Sep 17 00:00:00 2001
-From: Mike Frysinger <vapier@gentoo.org>
-Date: Mon, 16 May 2005 22:10:19 -0400
-Subject: [PATCH 1/9] Gentoo: ld: always warn about textrels in files
-
-textrels are bad for forcing copy-on-write (this affects everyone), and for
-security/runtime code generation, this affects security ppl.  But in either
-case, it doesn't matter who needs textrels, it's the very fact that they're
-needed at all.
-
-(cherry picked from commit cd6411ad57aab78686f67cbbc1ed70ee810ad335)
----
- ld/ldmain.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/ld/ldmain.c b/ld/ldmain.c
-index 04a3f7a511..c3f473f661 100644
---- a/ld/ldmain.c
-+++ b/ld/ldmain.c
-@@ -299,6 +299,7 @@ main (int argc, char **argv)
-   link_info.dynamic_undefined_weak = -1;
-   link_info.pei386_auto_import = -1;
-   link_info.spare_dynamic_tags = 5;
-+  link_info.warn_shared_textrel = TRUE;
-   link_info.path_separator = ':';
- #ifdef DEFAULT_FLAG_COMPRESS_DEBUG
-   link_info.compress_debug = COMPRESS_DEBUG_GABI_ZLIB;
--- 
-2.26.2
-

diff --git a/9999/0002-Gentoo-Add-an-option-no-warn-shared-textrel-self-exp.patch b/9999/0002-Gentoo-Add-an-option-no-warn-shared-textrel-self-exp.patch
deleted file mode 100644
index 5457b83..0000000
--- a/9999/0002-Gentoo-Add-an-option-no-warn-shared-textrel-self-exp.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-From 19ecd671bddd33f3afff169f26c55101c90c4afc Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
-Date: Sun, 3 Jun 2018 21:12:16 +0200
-Subject: [PATCH 2/9] Gentoo: Add an option --no-warn-shared-textrel
- (self-explanatory)
-
----
- ld/ld.texi  | 4 ++++
- ld/ldlex.h  | 1 +
- ld/lexsup.c | 6 ++++++
- 3 files changed, 11 insertions(+)
-
-diff --git a/ld/ld.texi b/ld/ld.texi
-index 4dc78e65fa..621d05dc05 100644
---- a/ld/ld.texi
-+++ b/ld/ld.texi
-@@ -2408,6 +2408,10 @@ the section (@pxref{SECTIONS}).
- @item --warn-shared-textrel
- Warn if the linker adds a DT_TEXTREL to a shared object.
- 
-+@kindex --no-warn-shared-textrel
-+@item --no-warn-shared-textrel
-+Do not warn if the linker adds a DT_TEXTREL to a shared object.
-+
- @kindex --warn-alternate-em
- @item --warn-alternate-em
- Warn if an object has alternate ELF machine code.
-diff --git a/ld/ldlex.h b/ld/ldlex.h
-index 22b928d2d9..aeaea4dfee 100644
---- a/ld/ldlex.h
-+++ b/ld/ldlex.h
-@@ -131,6 +131,7 @@ enum option_values
-   OPTION_WARN_UNRESOLVED_SYMBOLS,
-   OPTION_ERROR_UNRESOLVED_SYMBOLS,
-   OPTION_WARN_SHARED_TEXTREL,
-+  OPTION_NO_WARN_SHARED_TEXTREL,
-   OPTION_WARN_ALTERNATE_EM,
-   OPTION_REDUCE_MEMORY_OVERHEADS,
- #ifdef ENABLE_PLUGINS
-diff --git a/ld/lexsup.c b/ld/lexsup.c
-index c02041d5f1..c5edc25793 100644
---- a/ld/lexsup.c
-+++ b/ld/lexsup.c
-@@ -519,6 +519,9 @@ static const struct ld_option ld_options[] =
-   { {"warn-shared-textrel", no_argument, NULL, OPTION_WARN_SHARED_TEXTREL},
-     '\0', NULL, N_("Warn if shared object has DT_TEXTREL"),
-     TWO_DASHES },
-+  { {"no-warn-shared-textrel", no_argument, NULL, OPTION_NO_WARN_SHARED_TEXTREL},
-+    '\0', NULL, N_("Do not warn if shared object has DT_TEXTREL"),
-+    TWO_DASHES },
-   { {"warn-alternate-em", no_argument, NULL, OPTION_WARN_ALTERNATE_EM},
-     '\0', NULL, N_("Warn if an object has alternate ELF machine code"),
-     TWO_DASHES },
-@@ -1449,6 +1452,9 @@ parse_args (unsigned argc, char **argv)
- 	case OPTION_WARN_SHARED_TEXTREL:
- 	  link_info.warn_shared_textrel = TRUE;
- 	  break;
-+	case OPTION_NO_WARN_SHARED_TEXTREL:
-+	  link_info.warn_shared_textrel = FALSE;
-+	  break;
- 	case OPTION_WARN_ALTERNATE_EM:
- 	  link_info.warn_alternate_em = TRUE;
- 	  break;
--- 
-2.26.2
-


^ permalink raw reply related	[flat|nested] 39+ messages in thread

* [gentoo-commits] proj/toolchain/binutils-patches:master commit in: 9999/
@ 2020-07-25 12:23 Andreas K. Hüttel
  0 siblings, 0 replies; 39+ messages in thread
From: Andreas K. Hüttel @ 2020-07-25 12:23 UTC (permalink / raw
  To: gentoo-commits

commit:     e4b8746852919960969944904c59334cecddfe25
Author:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
AuthorDate: Sat Jul 25 12:23:12 2020 +0000
Commit:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
CommitDate: Sat Jul 25 12:23:12 2020 +0000
URL:        https://gitweb.gentoo.org/proj/toolchain/binutils-patches.git/commit/?id=e4b87468

Textrel warnings have been enabled upstream, drop patches (2)

Signed-off-by: Andreas K. Hüttel <dilfridge <AT> gentoo.org>

 ...ore-TEXTREL-warnings-for-non-shared-objec.patch | 45 ----------------------
 1 file changed, 45 deletions(-)

diff --git a/9999/0008-Gentoo-Restore-TEXTREL-warnings-for-non-shared-objec.patch b/9999/0008-Gentoo-Restore-TEXTREL-warnings-for-non-shared-objec.patch
deleted file mode 100644
index 8e0e091..0000000
--- a/9999/0008-Gentoo-Restore-TEXTREL-warnings-for-non-shared-objec.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 74afb38257f4a35d681883348ef54317674827e3 Mon Sep 17 00:00:00 2001
-From: Sergei Trofimovich <slyfox@gentoo.org>
-Date: Thu, 1 Mar 2018 12:35:03 +0100
-Subject: [PATCH 8/9] Gentoo: Restore TEXTREL warnings for non-shared objects
-
----
- bfd/elflink.c                | 4 ++--
- ld/testsuite/ld-i386/warn1.d | 2 +-
- 2 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/bfd/elflink.c b/bfd/elflink.c
-index 90ada7a1cc..b4636885aa 100644
---- a/bfd/elflink.c
-+++ b/bfd/elflink.c
-@@ -12934,7 +12934,7 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info)
- 	goto error_return;
- 
-       /* Check for DT_TEXTREL (late, in case the backend removes it).  */
--      if (((info->warn_shared_textrel && bfd_link_pic (info))
-+      if ((info->warn_shared_textrel
- 	   || info->error_textrel)
- 	  && (o = bfd_get_linker_section (dynobj, ".dynamic")) != NULL)
- 	{
-@@ -12955,7 +12955,7 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info)
- 		      (_("%P%X: read-only segment has dynamic relocations\n"));
- 		  else
- 		    info->callbacks->einfo
--		      (_("%P: warning: creating a DT_TEXTREL in a shared object\n"));
-+		      (_("%P: warning: creating a DT_TEXTREL in object\n"));
- 		  break;
- 		}
- 	    }
-diff --git a/ld/testsuite/ld-i386/warn1.d b/ld/testsuite/ld-i386/warn1.d
-index 3c78f31efd..49bcb5171f 100644
---- a/ld/testsuite/ld-i386/warn1.d
-+++ b/ld/testsuite/ld-i386/warn1.d
-@@ -1,4 +1,4 @@
- #name: --warn-shared-textrel --fatal-warnings
- #as: --32
- #ld: -shared -melf_i386 --warn-shared-textrel --fatal-warnings
--#error: .*warning: creating a DT_TEXTREL in a shared object
-+#error: .*warning: creating a DT_TEXTREL in object
--- 
-2.26.2
-


^ permalink raw reply related	[flat|nested] 39+ messages in thread

* [gentoo-commits] proj/toolchain/binutils-patches:master commit in: 9999/
@ 2020-07-25 12:26 Andreas K. Hüttel
  0 siblings, 0 replies; 39+ messages in thread
From: Andreas K. Hüttel @ 2020-07-25 12:26 UTC (permalink / raw
  To: gentoo-commits

commit:     a74c34d8ec1f197f9c80861e0d6271ac63403993
Author:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
AuthorDate: Sat Jul 25 12:25:51 2020 +0000
Commit:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
CommitDate: Sat Jul 25 12:25:51 2020 +0000
URL:        https://gitweb.gentoo.org/proj/toolchain/binutils-patches.git/commit/?id=a74c34d8

Textrel warnings have been enabled upstream, drop patches (3)

Signed-off-by: Andreas K. Hüttel <dilfridge <AT> gentoo.org>

 ...red-textr.patch => 0009-Gentoo-Pass-hash-style-sysv.patch} | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/9999/0009-Gentoo-Pass-hash-style-sysv-and-no-warn-shared-textr.patch b/9999/0009-Gentoo-Pass-hash-style-sysv.patch
similarity index 85%
rename from 9999/0009-Gentoo-Pass-hash-style-sysv-and-no-warn-shared-textr.patch
rename to 9999/0009-Gentoo-Pass-hash-style-sysv.patch
index 4ff406f..8ebb911 100644
--- a/9999/0009-Gentoo-Pass-hash-style-sysv-and-no-warn-shared-textr.patch
+++ b/9999/0009-Gentoo-Pass-hash-style-sysv.patch
@@ -1,8 +1,7 @@
 From 2055e278cb6e984760dbf8627efef2158e215449 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
 Date: Wed, 18 Oct 2017 00:44:49 +0200
-Subject: [PATCH 9/9] Gentoo: Pass --hash-style=sysv and
- --no-warn-shared-textrel to ld in the testsuite
+Subject: Gentoo: Pass --hash-style=sysv to ld in the testsuite
 
 ---
  binutils/testsuite/lib/binutils-common.exp |  2 +-
@@ -18,7 +17,7 @@ index b9e3c6d817..bb4ef987b3 100644
              # Add -L$srcdir/$subdir so that the linker command can use
              # linker scripts in the source directory.
 -            set cmd "$LD $ld_extra_opt $LDFLAGS -L$srcdir/$subdir \
-+            set cmd "$LD --hash-style=sysv --no-warn-shared-textrel $ld_extra_opt $LDFLAGS -L$srcdir/$subdir \
++            set cmd "$LD --hash-style=sysv $ld_extra_opt $LDFLAGS -L$srcdir/$subdir \
  		   $opts(ld) -o $objfile $objfiles $opts(ld_after_inputfiles)"
  
              # If needed then check for, or add a -Map option.
@@ -31,7 +30,7 @@ index 015eda6eb9..0b945b539d 100644
  
      remote_file host delete $target
 -    return [run_host_cmd_yesno "$ld" "$HOSTING_EMU -o $target -r $objects"]
-+    return [run_host_cmd_yesno "$ld" "$HOSTING_EMU --hash-style=sysv --no-warn-shared-textrel -o $target -r $objects"]
++    return [run_host_cmd_yesno "$ld" "$HOSTING_EMU --hash-style=sysv -o $target -r $objects"]
  }
  
  # Check to see if ld is being invoked with a non-endian output format
@@ -46,9 +45,9 @@ index 015eda6eb9..0b945b539d 100644
 +    # - ld-new         -> we're working with the new linker
 +    # - otherwise      -> we're likely working with the system compiler
 +    if {[regexp {ld-new$} $ld]} {
-+      set gentoosysv "--hash-style=sysv --no-warn-shared-textrel"
++      set gentoosysv "--hash-style=sysv"
 +    } else {
-+      set gentoosysv "-Wl,--hash-style=sysv -Wl,--no-warn-shared-textrel"
++      set gentoosysv "-Wl,--hash-style=sysv"
 +    }
 +
      remote_file host delete $target


^ permalink raw reply related	[flat|nested] 39+ messages in thread

* [gentoo-commits] proj/toolchain/binutils-patches:master commit in: 9999/
@ 2020-07-25 17:27 Andreas K. Hüttel
  0 siblings, 0 replies; 39+ messages in thread
From: Andreas K. Hüttel @ 2020-07-25 17:27 UTC (permalink / raw
  To: gentoo-commits

commit:     f9c7687232df3334a7191920915e2d9ab27b133b
Author:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
AuthorDate: Sat Jul 25 17:26:51 2020 +0000
Commit:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
CommitDate: Sat Jul 25 17:26:51 2020 +0000
URL:        https://gitweb.gentoo.org/proj/toolchain/binutils-patches.git/commit/?id=f9c76872

Update patch for zero fuzz

Signed-off-by: Andreas K. Hüttel <dilfridge <AT> gentoo.org>

 ...Gentoo-ld-enable-new-dtags-by-default-for-linux-gnu-.patch | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/9999/0007-Gentoo-ld-enable-new-dtags-by-default-for-linux-gnu-.patch b/9999/0007-Gentoo-ld-enable-new-dtags-by-default-for-linux-gnu-.patch
index 0b0cbfe..b4c5a74 100644
--- a/9999/0007-Gentoo-ld-enable-new-dtags-by-default-for-linux-gnu-.patch
+++ b/9999/0007-Gentoo-ld-enable-new-dtags-by-default-for-linux-gnu-.patch
@@ -1,8 +1,7 @@
-From cf8983d602c56eb31ee0e356df670d9c2876ce15 Mon Sep 17 00:00:00 2001
+From 7cefac2aa8ff79d6e2eff1fb4c94346314563fc8 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
 Date: Sun, 13 Oct 2019 05:25:28 +0200
-Subject: [PATCH 7/9] Gentoo: ld: enable new dtags by default for linux/gnu
- targets
+Subject: [PATCH] Gentoo: ld: enable new dtags by default for linux/gnu targets
 
 Original author: Mike Frysinger <vapier@gentoo.org>
 
@@ -24,7 +23,7 @@ and GNU targets, enable them by default.
  1 file changed, 10 insertions(+)
 
 diff --git a/ld/emultempl/elf.em b/ld/emultempl/elf.em
-index eac2ce2f4c..7f92134070 100644
+index 356f34538b..579e52253e 100644
 --- a/ld/emultempl/elf.em
 +++ b/ld/emultempl/elf.em
 @@ -81,6 +81,16 @@ gld${EMULATION_NAME}_before_parse (void)
@@ -42,8 +41,8 @@ index eac2ce2f4c..7f92134070 100644
 +esac
 +fragment <<EOF
    link_info.check_relocs_after_open_input = TRUE;
-   link_info.relro = DEFAULT_LD_Z_RELRO;
-   link_info.separate_code = DEFAULT_LD_Z_SEPARATE_CODE;
+ EOF
+ if test -n "$COMMONPAGESIZE"; then
 -- 
 2.26.2
 


^ permalink raw reply related	[flat|nested] 39+ messages in thread

* [gentoo-commits] proj/toolchain/binutils-patches:master commit in: 9999/
@ 2021-07-06  7:04 Sergei Trofimovich
  0 siblings, 0 replies; 39+ messages in thread
From: Sergei Trofimovich @ 2021-07-06  7:04 UTC (permalink / raw
  To: gentoo-commits

commit:     da0c7a071390e6bda1d5fb8c31ce3ff37671db7e
Author:     Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
AuthorDate: Tue Jul  6 07:00:56 2021 +0000
Commit:     Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
CommitDate: Tue Jul  6 07:02:43 2021 +0000
URL:        https://gitweb.gentoo.org/proj/toolchain/binutils-patches.git/commit/?id=da0c7a07

9999: refresh 0003-...-poisoned-system-direc-...patch

Closes: https://bugs.gentoo.org/800254
Signed-off-by: Sergei Trofimovich <slyfox <AT> gentoo.org>

 ...-ld-add-support-for-poisoned-system-direc.patch | 28 +++++++++++-----------
 1 file changed, 14 insertions(+), 14 deletions(-)

diff --git a/9999/0003-Gentoo-gold-ld-add-support-for-poisoned-system-direc.patch b/9999/0003-Gentoo-gold-ld-add-support-for-poisoned-system-direc.patch
index 1446352..964946c 100644
--- a/9999/0003-Gentoo-gold-ld-add-support-for-poisoned-system-direc.patch
+++ b/9999/0003-Gentoo-gold-ld-add-support-for-poisoned-system-direc.patch
@@ -180,14 +180,14 @@ index 71fd781267..a6ea2ae69e 100644
 +++ b/ld/ld.h
 @@ -166,6 +166,13 @@ typedef struct
       in the linker script.  */
-   bfd_boolean force_group_allocation;
+   bool force_group_allocation;
  
-+  /* If TRUE warn for uses of system directories when cross linking.  */
-+  bfd_boolean warn_poison_system_directories;
++  /* If true warn for uses of system directories when cross linking.  */
++  bool warn_poison_system_directories;
 +
-+  /* If TRUE (default FALSE) give an error for uses of system
++  /* If true (default false) give an error for uses of system
 +     directories when cross linking instead of a warning.  */
-+  bfd_boolean error_poison_system_directories;
++  bool error_poison_system_directories;
 +
    /* Big or little endian as set on command line.  */
    enum endian_enum endian;
@@ -225,7 +225,7 @@ diff --git a/ld/ldfile.c b/ld/ldfile.c
 index 53112c8694..eb357e66a9 100644
 --- a/ld/ldfile.c
 +++ b/ld/ldfile.c
-@@ -117,6 +117,26 @@ ldfile_add_library_path (const char *name, bfd_boolean cmdline)
+@@ -117,6 +117,26 @@ ldfile_add_library_path (const char *name, bool cmdline)
      new_dirs->name = concat (ld_sysroot, name + strlen ("$SYSROOT"), (const char *) NULL);
    else
      new_dirs->name = xstrdup (name);
@@ -271,16 +271,16 @@ index c3f473f661..c45012dbbd 100644
 --- a/ld/ldmain.c
 +++ b/ld/ldmain.c
 @@ -273,6 +273,13 @@ main (int argc, char **argv)
-   command_line.warn_mismatch = TRUE;
-   command_line.warn_search_mismatch = TRUE;
+   command_line.warn_mismatch = true;
+   command_line.warn_search_mismatch = true;
    command_line.check_section_addresses = -1;
 +  command_line.warn_poison_system_directories =
 +#ifdef ENABLE_POISON_SYSTEM_DIRECTORIES
-+    TRUE;
++    true;
 +#else
-+    FALSE;
++    false;
 +#endif
-+  command_line.error_poison_system_directories = FALSE;
++  command_line.error_poison_system_directories = false;
  
    /* We initialize DEMANGLING based on the environment variable
       COLLECT_NO_DEMANGLE.  The gcc collect2 program will demangle the
@@ -312,15 +312,15 @@ index c5edc25793..c20c0bb0d8 100644
  	  break;
  
 +   case OPTION_WARN_POISON_SYSTEM_DIRECTORIES:
-+     command_line.warn_poison_system_directories = TRUE;
++     command_line.warn_poison_system_directories = true;
 +     break;
 +
 +   case OPTION_NO_WARN_POISON_SYSTEM_DIRECTORIES:
-+     command_line.warn_poison_system_directories = FALSE;
++     command_line.warn_poison_system_directories = false;
 +     break;
 +
 +   case OPTION_ERROR_POISON_SYSTEM_DIRECTORIES:
-+     command_line.error_poison_system_directories = TRUE;
++     command_line.error_poison_system_directories = true;
 +     break;
 +
  	case OPTION_PUSH_STATE:


^ permalink raw reply related	[flat|nested] 39+ messages in thread

* [gentoo-commits] proj/toolchain/binutils-patches:master commit in: 9999/
@ 2021-07-06  7:04 Sergei Trofimovich
  0 siblings, 0 replies; 39+ messages in thread
From: Sergei Trofimovich @ 2021-07-06  7:04 UTC (permalink / raw
  To: gentoo-commits

commit:     2fb3fe47ca8e417f56687d05fc91a112ae08b813
Author:     Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
AuthorDate: Tue Jul  6 06:50:56 2021 +0000
Commit:     Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
CommitDate: Tue Jul  6 07:02:43 2021 +0000
URL:        https://gitweb.gentoo.org/proj/toolchain/binutils-patches.git/commit/?id=2fb3fe47

9999: refresh 0007-...-ld-enable-new-dtags-...patch

Closes: https://bugs.gentoo.org/800254
Signed-off-by: Sergei Trofimovich <slyfox <AT> gentoo.org>

 ...-Gentoo-ld-enable-new-dtags-by-default-for-linux-gnu-.patch | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/9999/0007-Gentoo-ld-enable-new-dtags-by-default-for-linux-gnu-.patch b/9999/0007-Gentoo-ld-enable-new-dtags-by-default-for-linux-gnu-.patch
index b4c5a74..f16e13d 100644
--- a/9999/0007-Gentoo-ld-enable-new-dtags-by-default-for-linux-gnu-.patch
+++ b/9999/0007-Gentoo-ld-enable-new-dtags-by-default-for-linux-gnu-.patch
@@ -27,20 +27,20 @@ index 356f34538b..579e52253e 100644
 --- a/ld/emultempl/elf.em
 +++ b/ld/emultempl/elf.em
 @@ -81,6 +81,16 @@ gld${EMULATION_NAME}_before_parse (void)
-   input_flags.dynamic = ${DYNAMIC_LINK-TRUE};
-   config.has_shared = `if test -n "$GENERATE_SHLIB_SCRIPT" ; then echo TRUE ; else echo FALSE ; fi`;
-   config.separate_code = `if test "x${SEPARATE_CODE}" = xyes ; then echo TRUE ; else echo FALSE ; fi`;
+   input_flags.dynamic = ${DYNAMIC_LINK-true};
+   config.has_shared = `if test -n "$GENERATE_SHLIB_SCRIPT" ; then echo true ; else echo false ; fi`;
+   config.separate_code = `if test "x${SEPARATE_CODE}" = xyes ; then echo true ; else echo false ; fi`;
 +EOF
 +
 +case ${target} in
 +  *-*-linux-* | *-*-k*bsd*-* | *-*-gnu* | *-*-nacl*)
 +    fragment <<EOF
-+  link_info.new_dtags = TRUE;
++  link_info.new_dtags = true;
 +EOF
 +    ;;
 +esac
 +fragment <<EOF
-   link_info.check_relocs_after_open_input = TRUE;
+   link_info.check_relocs_after_open_input = true;
  EOF
  if test -n "$COMMONPAGESIZE"; then
 -- 


^ permalink raw reply related	[flat|nested] 39+ messages in thread

* [gentoo-commits] proj/toolchain/binutils-patches:master commit in: 9999/
@ 2021-07-06  7:04 Sergei Trofimovich
  0 siblings, 0 replies; 39+ messages in thread
From: Sergei Trofimovich @ 2021-07-06  7:04 UTC (permalink / raw
  To: gentoo-commits

commit:     1e1ee03c239f2b763a1a37f864f6cb420a5487f0
Author:     Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
AuthorDate: Tue Jul  6 06:56:04 2021 +0000
Commit:     Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
CommitDate: Tue Jul  6 07:02:43 2021 +0000
URL:        https://gitweb.gentoo.org/proj/toolchain/binutils-patches.git/commit/?id=1e1ee03c

9999: refresh 0009-...-Pass-hash-style-sysv-...patch

Closes: https://bugs.gentoo.org/800254
Signed-off-by: Sergei Trofimovich <slyfox <AT> gentoo.org>

 9999/0009-Gentoo-Pass-hash-style-sysv.patch | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/9999/0009-Gentoo-Pass-hash-style-sysv.patch b/9999/0009-Gentoo-Pass-hash-style-sysv.patch
index 8ebb911..7610d78 100644
--- a/9999/0009-Gentoo-Pass-hash-style-sysv.patch
+++ b/9999/0009-Gentoo-Pass-hash-style-sysv.patch
@@ -14,13 +14,13 @@ index b9e3c6d817..bb4ef987b3 100644
 +++ b/binutils/testsuite/lib/binutils-common.exp
 @@ -1125,7 +1125,7 @@ proc run_dump_test { name {extra_options {}} } {
  
-             # Add -L$srcdir/$subdir so that the linker command can use
-             # linker scripts in the source directory.
--            set cmd "$LD $ld_extra_opt $LDFLAGS -L$srcdir/$subdir \
-+            set cmd "$LD --hash-style=sysv $ld_extra_opt $LDFLAGS -L$srcdir/$subdir \
+ 	    # Add -L$srcdir/$subdir so that the linker command can use
+ 	    # linker scripts in the source directory.
+-	    set cmd "$LD $ld_extra_opt $LDFLAGS -L$srcdir/$subdir \
++	    set cmd "$LD --hash-style=sysv $ld_extra_opt $LDFLAGS -L$srcdir/$subdir \
  		   $opts(ld) -o $objfile $objfiles $opts(ld_after_inputfiles)"
  
-             # If needed then check for, or add a -Map option.
+	    # If needed then check for, or add a -Map option.
 diff --git a/ld/testsuite/lib/ld-lib.exp b/ld/testsuite/lib/ld-lib.exp
 index 015eda6eb9..0b945b539d 100644
 --- a/ld/testsuite/lib/ld-lib.exp


^ permalink raw reply related	[flat|nested] 39+ messages in thread

* [gentoo-commits] proj/toolchain/binutils-patches:master commit in: 9999/
@ 2021-07-20 19:50 Andreas K. Hüttel
  0 siblings, 0 replies; 39+ messages in thread
From: Andreas K. Hüttel @ 2021-07-20 19:50 UTC (permalink / raw
  To: gentoo-commits

commit:     3aebcafb84cf90109ca2b1b942ed0b71f30b8bd2
Author:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
AuthorDate: Tue Jul 20 19:22:10 2021 +0000
Commit:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
CommitDate: Tue Jul 20 19:22:10 2021 +0000
URL:        https://gitweb.gentoo.org/proj/toolchain/binutils-patches.git/commit/?id=3aebcafb

9999: Refresh patches at 2.37 release

Signed-off-by: Andreas K. Hüttel <dilfridge <AT> gentoo.org>

 ...-ld-add-support-for-poisoned-system-direc.patch | 63 ++++++++++++----------
 ...iberty-install-PIC-version-of-libiberty.a.patch | 10 ++--
 ...des-link-against-libbfd.la-for-rpath-deps.patch | 14 ++---
 ...oo-add-with-extra-soversion-suffix-option.patch | 35 ++++++------
 ...nable-new-dtags-by-default-for-linux-gnu-.patch |  9 ++--
 9999/0009-Gentoo-Pass-hash-style-sysv.patch        | 20 +++----
 6 files changed, 81 insertions(+), 70 deletions(-)

diff --git a/9999/0003-Gentoo-gold-ld-add-support-for-poisoned-system-direc.patch b/9999/0003-Gentoo-gold-ld-add-support-for-poisoned-system-direc.patch
index 964946c..f7443bf 100644
--- a/9999/0003-Gentoo-gold-ld-add-support-for-poisoned-system-direc.patch
+++ b/9999/0003-Gentoo-gold-ld-add-support-for-poisoned-system-direc.patch
@@ -1,8 +1,11 @@
-From c251ab646d98b3f0e8f8b1ae5e94c672325477e2 Mon Sep 17 00:00:00 2001
+From 8a82f64de912f26e840b20eec9d8a463fd0e242b Mon Sep 17 00:00:00 2001
 From: Mike Frysinger <vapier@gentoo.org>
-Date: Tue, 10 Oct 2017 22:53:53 +0200
-Subject: [PATCH 3/9] Gentoo: gold/ld: add support for poisoned system
+Date: Tue, 20 Jul 2021 21:08:31 +0200
+Subject: [PATCH 1/6] Gentoo: gold/ld: add support for poisoned system 
  directories
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
 
 This is based on the old CodeSourcery patch written by Joseph Myers to add
 support to the link for detecting & rejecting bad -L paths when using a
@@ -23,6 +26,8 @@ TEST=x86_64-cros-linux-gnu-ld throws warnings when using -L/lib (gold & bfd)
 
 Reviewed-on: https://chromium-review.googlesource.com/272083
 (cherry picked from commit f92dbf35c00ab13cee36f6be8ae5ca46454d9000)
+
+Ported to binutils 2.37 Andreas K. Hütte <dilfridge@gentoo.org>
 ---
  gold/options.cc | 33 +++++++++++++++++++++++++++++++++
  gold/options.h  |  7 +++++++
@@ -38,10 +43,10 @@ Reviewed-on: https://chromium-review.googlesource.com/272083
  11 files changed, 146 insertions(+)
 
 diff --git a/gold/options.cc b/gold/options.cc
-index 94867b361a..704d5d089e 100644
+index 5a55bd8ba6d..f7940c75f5a 100644
 --- a/gold/options.cc
 +++ b/gold/options.cc
-@@ -1290,6 +1290,39 @@ General_options::finalize()
+@@ -1355,6 +1355,39 @@ General_options::finalize()
    // in the path, as appropriate.
    this->add_sysroot();
  
@@ -82,10 +87,10 @@ index 94867b361a..704d5d089e 100644
    if (this->shared() && this->is_static())
      gold_fatal(_("-shared and -static are incompatible"));
 diff --git a/gold/options.h b/gold/options.h
-index b2059d984c..b60f802754 100644
+index 757ebf18fec..490b4cbd7d4 100644
 --- a/gold/options.h
 +++ b/gold/options.h
-@@ -1375,6 +1375,13 @@ class General_options
+@@ -1394,6 +1394,13 @@ class General_options
    DEFINE_bool(warn_multiple_gp, options::TWO_DASHES, '\0', false,
  	      N_("Ignored"), NULL);
  
@@ -100,10 +105,10 @@ index b2059d984c..b60f802754 100644
  	      N_("Warn when skipping an incompatible library"),
  	      N_("Don't warn when skipping an incompatible library"));
 diff --git a/ld/config.in b/ld/config.in
-index d93c9b0830..5da2742bea 100644
+index 26d55a00d47..ffad464783c 100644
 --- a/ld/config.in
 +++ b/ld/config.in
-@@ -31,6 +31,9 @@
+@@ -43,6 +43,9 @@
     language is requested. */
  #undef ENABLE_NLS
  
@@ -114,10 +119,10 @@ index d93c9b0830..5da2742bea 100644
  #undef EXTRA_SHLIB_EXTENSION
  
 diff --git a/ld/configure b/ld/configure
-index e1dbc95747..460078f6e8 100755
+index c197aaef3cb..882263aa43f 100755
 --- a/ld/configure
 +++ b/ld/configure
-@@ -826,6 +826,7 @@ with_lib_path
+@@ -829,6 +829,7 @@ with_lib_path
  enable_targets
  enable_64_bit_bfd
  with_sysroot
@@ -125,8 +130,8 @@ index e1dbc95747..460078f6e8 100755
  enable_gold
  enable_got
  enable_compressed_debug_sections
-@@ -1491,6 +1492,8 @@ Optional Features:
-   --disable-largefile     omit support for large files
+@@ -1498,6 +1499,8 @@ Optional Features:
+   --enable-checking       enable run-time checks
    --enable-targets        alternative target configurations
    --enable-64-bit-bfd     64-bit support (on hosts with narrower word sizes)
 +  --enable-poison-system-directories
@@ -134,7 +139,7 @@ index e1dbc95747..460078f6e8 100755
    --enable-gold[=ARG]     build gold [ARG={default,yes,no}]
    --enable-got=<type>     GOT handling scheme (target, single, negative,
                            multigot)
-@@ -15809,7 +15812,18 @@ else
+@@ -15236,7 +15239,18 @@ else
  fi
  
  
@@ -154,10 +159,10 @@ index e1dbc95747..460078f6e8 100755
  # Check whether --enable-got was given.
  if test "${enable_got+set}" = set; then :
 diff --git a/ld/configure.ac b/ld/configure.ac
-index b5e849d84a..22e022ec03 100644
+index 8ea97c43cd4..0f246db67d8 100644
 --- a/ld/configure.ac
 +++ b/ld/configure.ac
-@@ -94,6 +94,16 @@ AC_SUBST(use_sysroot)
+@@ -106,6 +106,16 @@ AC_SUBST(use_sysroot)
  AC_SUBST(TARGET_SYSTEM_ROOT)
  AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)
  
@@ -175,10 +180,10 @@ index b5e849d84a..22e022ec03 100644
  dnl "install_as_default" is set to false if gold is the default linker.
  dnl "installed_linker" is the installed BFD linker name.
 diff --git a/ld/ld.h b/ld/ld.h
-index 71fd781267..a6ea2ae69e 100644
+index 35fafebfaed..4152278b8f4 100644
 --- a/ld/ld.h
 +++ b/ld/ld.h
-@@ -166,6 +166,13 @@ typedef struct
+@@ -162,6 +162,13 @@ typedef struct
       in the linker script.  */
    bool force_group_allocation;
  
@@ -193,10 +198,10 @@ index 71fd781267..a6ea2ae69e 100644
    enum endian_enum endian;
  
 diff --git a/ld/ld.texi b/ld/ld.texi
-index 621d05dc05..cbbbc687d0 100644
+index dd8f571d4e4..0aee4a4e9f1 100644
 --- a/ld/ld.texi
 +++ b/ld/ld.texi
-@@ -2609,6 +2609,24 @@ string identifying the original linked file does not change.
+@@ -2863,6 +2863,24 @@ string identifying the original linked file does not change.
  
  Passing @code{none} for @var{style} disables the setting from any
  @code{--build-id} options earlier on the command line.
@@ -222,7 +227,7 @@ index 621d05dc05..cbbbc687d0 100644
  
  @c man end
 diff --git a/ld/ldfile.c b/ld/ldfile.c
-index 53112c8694..eb357e66a9 100644
+index 9d0af06f1f6..f4a83acca93 100644
 --- a/ld/ldfile.c
 +++ b/ld/ldfile.c
 @@ -117,6 +117,26 @@ ldfile_add_library_path (const char *name, bool cmdline)
@@ -253,10 +258,10 @@ index 53112c8694..eb357e66a9 100644
  
  /* Try to open a BFD for a lang_input_statement.  */
 diff --git a/ld/ldlex.h b/ld/ldlex.h
-index aeaea4dfee..b8d43da37f 100644
+index 9e8bf5fb835..3baed822a22 100644
 --- a/ld/ldlex.h
 +++ b/ld/ldlex.h
-@@ -142,6 +142,9 @@ enum option_values
+@@ -148,6 +148,9 @@ enum option_values
    OPTION_PRINT_OUTPUT_FORMAT,
    OPTION_PRINT_SYSROOT,
    OPTION_IGNORE_UNRESOLVED_SYMBOL,
@@ -267,10 +272,10 @@ index aeaea4dfee..b8d43da37f 100644
    OPTION_POP_STATE,
    OPTION_DISABLE_MULTIPLE_DEFS_ABS,
 diff --git a/ld/ldmain.c b/ld/ldmain.c
-index c3f473f661..c45012dbbd 100644
+index 42660eb9a3c..c78009b760c 100644
 --- a/ld/ldmain.c
 +++ b/ld/ldmain.c
-@@ -273,6 +273,13 @@ main (int argc, char **argv)
+@@ -321,6 +321,13 @@ main (int argc, char **argv)
    command_line.warn_mismatch = true;
    command_line.warn_search_mismatch = true;
    command_line.check_section_addresses = -1;
@@ -285,10 +290,10 @@ index c3f473f661..c45012dbbd 100644
    /* We initialize DEMANGLING based on the environment variable
       COLLECT_NO_DEMANGLE.  The gcc collect2 program will demangle the
 diff --git a/ld/lexsup.c b/ld/lexsup.c
-index c5edc25793..c20c0bb0d8 100644
+index 00274c500d0..a19cce9967c 100644
 --- a/ld/lexsup.c
 +++ b/ld/lexsup.c
-@@ -540,6 +540,18 @@ static const struct ld_option ld_options[] =
+@@ -566,6 +566,18 @@ static const struct ld_option ld_options[] =
      OPTION_IGNORE_UNRESOLVED_SYMBOL},
      '\0', N_("SYMBOL"),
      N_("Unresolved SYMBOL will not cause an error or warning"), TWO_DASHES },
@@ -307,7 +312,7 @@ index c5edc25793..c20c0bb0d8 100644
    { {"push-state", no_argument, NULL, OPTION_PUSH_STATE},
      '\0', NULL, N_("Push state of flags governing input file handling"),
      TWO_DASHES },
-@@ -1563,6 +1575,18 @@ parse_args (unsigned argc, char **argv)
+@@ -1643,6 +1655,18 @@ parse_args (unsigned argc, char **argv)
  	  }
  	  break;
  
@@ -327,5 +332,5 @@ index c5edc25793..c20c0bb0d8 100644
  	  input_flags.pushed = xmemdup (&input_flags,
  					sizeof (input_flags),
 -- 
-2.26.2
+2.31.1
 

diff --git a/9999/0004-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch b/9999/0004-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch
index a7f8448..4d5ed11 100644
--- a/9999/0004-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch
+++ b/9999/0004-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch
@@ -1,7 +1,7 @@
-From c11463f5dbeb53c2a600a5b4a3982368ad149ba1 Mon Sep 17 00:00:00 2001
+From 6536761c1e2756ec39fdc33c400757be3744510c Mon Sep 17 00:00:00 2001
 From: Mike Frysinger <vapier@gentoo.org>
 Date: Fri, 7 Jan 2005 00:15:53 -0500
-Subject: [PATCH 4/9] Gentoo: libiberty: install PIC version of libiberty.a
+Subject: [PATCH 2/6] Gentoo: libiberty: install PIC version of libiberty.a
 
 This will install a PIC version of libiberty.a by overwriting the non-PIC
 version of libiberty.a while compiling.  We do this because there is no
@@ -18,10 +18,10 @@ general are fairly low, and we'd rather have things work for all of them.
  1 file changed, 1 insertion(+)
 
 diff --git a/libiberty/Makefile.in b/libiberty/Makefile.in
-index d6b302e02f..8d84a09f1d 100644
+index d19e14a2aca..cd02be1c2fb 100644
 --- a/libiberty/Makefile.in
 +++ b/libiberty/Makefile.in
-@@ -256,6 +256,7 @@ $(TARGETLIB): $(REQUIRED_OFILES) $(EXTRA_OFILES) $(LIBOBJS)
+@@ -257,6 +257,7 @@ $(TARGETLIB): $(REQUIRED_OFILES) $(EXTRA_OFILES) $(LIBOBJS)
  	  $(AR) $(AR_FLAGS) $(TARGETLIB) \
  	    $(REQUIRED_OFILES) $(EXTRA_OFILES) $(LIBOBJS); \
  	  $(RANLIB) $(TARGETLIB); \
@@ -30,5 +30,5 @@ index d6b302e02f..8d84a09f1d 100644
  	else true; fi; \
  	if [ x"$(NOASANFLAG)" != x ]; then \
 -- 
-2.26.2
+2.31.1
 

diff --git a/9999/0005-Gentoo-opcodes-link-against-libbfd.la-for-rpath-deps.patch b/9999/0005-Gentoo-opcodes-link-against-libbfd.la-for-rpath-deps.patch
index d236727..f3c9f8e 100644
--- a/9999/0005-Gentoo-opcodes-link-against-libbfd.la-for-rpath-deps.patch
+++ b/9999/0005-Gentoo-opcodes-link-against-libbfd.la-for-rpath-deps.patch
@@ -1,7 +1,7 @@
-From b4c9e06c3fb0ede497bcc51dde6c9756efe124ad Mon Sep 17 00:00:00 2001
+From c55536c61ec7e4c2e983e15f51f56f7a7c340889 Mon Sep 17 00:00:00 2001
 From: Mike Frysinger <vapier@gentoo.org>
 Date: Tue, 5 Jul 2016 20:24:00 +0545
-Subject: [PATCH 5/9] Gentoo: opcodes: link against libbfd.la for rpath deps
+Subject: [PATCH 3/6] Gentoo: opcodes: link against libbfd.la for rpath deps
 
 The reason opcodes doesn't link against libbfd.la is to workaround a
 libtool bug where it uses installed -L paths ahead of DESTDIR paths.
@@ -19,10 +19,10 @@ URL: https://bugs.gentoo.org/563934
  2 files changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/opcodes/configure b/opcodes/configure
-index 42be5febad..7b8ee51cc3 100755
+index a3da5987f1b..22a05245286 100755
 --- a/opcodes/configure
 +++ b/opcodes/configure
-@@ -12797,7 +12797,7 @@ if test "$enable_shared" = "yes"; then
+@@ -12142,7 +12142,7 @@ if test "$enable_shared" = "yes"; then
            SHARED_LIBADD="-Wl,`pwd`/../bfd/.libs/libbfd.sl ${SHARED_LIBADD}"
  	  ;;
  	*)
@@ -32,10 +32,10 @@ index 42be5febad..7b8ee51cc3 100755
        esac
        SHARED_DEPENDENCIES="../bfd/libbfd.la"
 diff --git a/opcodes/configure.ac b/opcodes/configure.ac
-index 00be9c88be..b7a511ac58 100644
+index e564f067334..fb6254cd69d 100644
 --- a/opcodes/configure.ac
 +++ b/opcodes/configure.ac
-@@ -188,7 +188,7 @@ changequote([,])dnl
+@@ -203,7 +203,7 @@ if test "$enable_shared" = "yes"; then
            SHARED_LIBADD="-Wl,`pwd`/../bfd/.libs/libbfd.sl ${SHARED_LIBADD}"
  	  ;;
  	*)
@@ -45,5 +45,5 @@ index 00be9c88be..b7a511ac58 100644
        esac
        SHARED_DEPENDENCIES="../bfd/libbfd.la"
 -- 
-2.26.2
+2.31.1
 

diff --git a/9999/0006-Gentoo-add-with-extra-soversion-suffix-option.patch b/9999/0006-Gentoo-add-with-extra-soversion-suffix-option.patch
index d7f696c..1051543 100644
--- a/9999/0006-Gentoo-add-with-extra-soversion-suffix-option.patch
+++ b/9999/0006-Gentoo-add-with-extra-soversion-suffix-option.patch
@@ -1,7 +1,10 @@
-From eefafabed03c163287326afaadc4cc0e5840ea7b Mon Sep 17 00:00:00 2001
+From 235f1f862fb9bf77e2b9f62c24db0ca801c4a057 Mon Sep 17 00:00:00 2001
 From: Sergei Trofimovich <slyfox@gentoo.org>
-Date: Wed, 12 Sep 2018 23:44:29 +0100
-Subject: [PATCH 6/9] Gentoo: add --with-extra-soversion-suffix= option
+Date: Tue, 20 Jul 2021 21:12:38 +0200
+Subject: [PATCH 4/6] Gentoo: add --with-extra-soversion-suffix= option
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
 
 --with-extra-soversion-suffix= will allow Gentoo to
 distinct libbfd.so and libopcodes.so to have more precise
@@ -21,6 +24,8 @@ built with different flags (see https://bugs.gentoo.org/663690).
 
 Bug: https://bugs.gentoo.org/666100
 Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
+
+Ported to binutils 2.37 Andreas K. Hüttel <dilfridge@gentoo.org>
 ---
  bfd/Makefile.am  |  5 +++++
  bfd/Makefile.in  |  4 ++++
@@ -29,7 +34,7 @@ Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
  4 files changed, 29 insertions(+)
 
 diff --git a/bfd/Makefile.am b/bfd/Makefile.am
-index b6088a3c4a..3f5cf81ca4 100644
+index ed2f701805d..dab3bfc8ed7 100644
 --- a/bfd/Makefile.am
 +++ b/bfd/Makefile.am
 @@ -59,6 +59,8 @@ bfdinclude_HEADERS += $(INCDIR)/plugin-api.h
@@ -41,7 +46,7 @@ index b6088a3c4a..3f5cf81ca4 100644
  # bfd.h goes here, for now
  BFD_H = bfd.h
  
-@@ -958,6 +960,9 @@ bfdver.h: $(srcdir)/version.h $(srcdir)/development.sh $(srcdir)/Makefile.in
+@@ -952,6 +954,9 @@ bfdver.h: $(srcdir)/version.h $(srcdir)/development.sh $(srcdir)/Makefile.in
  	  bfd_version_string="\"$(VERSION).$${bfd_version_date}\"" ;\
  	  bfd_soversion="$(VERSION).$${bfd_version_date}" ;\
  	fi ;\
@@ -52,7 +57,7 @@ index b6088a3c4a..3f5cf81ca4 100644
  	    -e "s,@bfd_version_string@,$$bfd_version_string," \
  	    -e "s,@bfd_version_package@,$$bfd_version_package," \
 diff --git a/bfd/Makefile.in b/bfd/Makefile.in
-index dd3474d92b..911232212b 100644
+index 12807d99760..572df143487 100644
 --- a/bfd/Makefile.in
 +++ b/bfd/Makefile.in
 @@ -318,6 +318,7 @@ ECHO_T = @ECHO_T@
@@ -63,7 +68,7 @@ index dd3474d92b..911232212b 100644
  FGREP = @FGREP@
  GENCAT = @GENCAT@
  GMSGFMT = @GMSGFMT@
-@@ -2071,6 +2072,9 @@ bfdver.h: $(srcdir)/version.h $(srcdir)/development.sh $(srcdir)/Makefile.in
+@@ -2063,6 +2064,9 @@ bfdver.h: $(srcdir)/version.h $(srcdir)/development.sh $(srcdir)/Makefile.in
  	  bfd_version_string="\"$(VERSION).$${bfd_version_date}\"" ;\
  	  bfd_soversion="$(VERSION).$${bfd_version_date}" ;\
  	fi ;\
@@ -74,7 +79,7 @@ index dd3474d92b..911232212b 100644
  	    -e "s,@bfd_version_string@,$$bfd_version_string," \
  	    -e "s,@bfd_version_package@,$$bfd_version_package," \
 diff --git a/bfd/configure b/bfd/configure
-index 59b867bbbf..fa34069f2a 100755
+index 41586f00f93..f0acf160913 100755
 --- a/bfd/configure
 +++ b/bfd/configure
 @@ -696,6 +696,7 @@ WARN_CFLAGS
@@ -85,7 +90,7 @@ index 59b867bbbf..fa34069f2a 100755
  DEBUGDIR
  PLUGINS_FALSE
  PLUGINS_TRUE
-@@ -833,6 +834,7 @@ enable_secureplt
+@@ -835,6 +836,7 @@ enable_secureplt
  enable_separate_code
  enable_leading_mingw64_underscores
  with_separate_debug_dir
@@ -93,7 +98,7 @@ index 59b867bbbf..fa34069f2a 100755
  with_pkgversion
  with_bugurl
  enable_werror
-@@ -1508,6 +1510,8 @@ Optional Packages:
+@@ -1511,6 +1513,8 @@ Optional Packages:
    --with-separate-debug-dir=DIR
                            Look for global separate debug info in DIR
                            [[default=LIBDIR/debug]]
@@ -102,7 +107,7 @@ index 59b867bbbf..fa34069f2a 100755
    --with-pkgversion=PKG   Use PKG in the version string in place of "GNU
                            Binutils"
    --with-bugurl=URL       Direct users to URL to report a bug
-@@ -12516,6 +12520,15 @@ fi
+@@ -11913,6 +11917,15 @@ fi
  
  
  
@@ -119,10 +124,10 @@ index 59b867bbbf..fa34069f2a 100755
  
  # Check whether --with-pkgversion was given.
 diff --git a/bfd/configure.ac b/bfd/configure.ac
-index 0528e54c3b..50b2b4e06e 100644
+index fec067b2135..8c9ef9a04c0 100644
 --- a/bfd/configure.ac
 +++ b/bfd/configure.ac
-@@ -133,6 +133,13 @@ AC_ARG_WITH(separate-debug-dir,
+@@ -169,6 +169,13 @@ AC_ARG_WITH(separate-debug-dir,
  [DEBUGDIR="${withval}"])
  AC_SUBST(DEBUGDIR)
  
@@ -134,8 +139,8 @@ index 0528e54c3b..50b2b4e06e 100644
 +AC_SUBST(EXTRA_SOVERSION_SUFFIX)
 +
  ACX_PKGVERSION([GNU Binutils])
- ACX_BUGURL([http://www.sourceware.org/bugzilla/])
+ ACX_BUGURL([https://www.sourceware.org/bugzilla/])
  
 -- 
-2.26.2
+2.31.1
 

diff --git a/9999/0007-Gentoo-ld-enable-new-dtags-by-default-for-linux-gnu-.patch b/9999/0007-Gentoo-ld-enable-new-dtags-by-default-for-linux-gnu-.patch
index f16e13d..c6e5299 100644
--- a/9999/0007-Gentoo-ld-enable-new-dtags-by-default-for-linux-gnu-.patch
+++ b/9999/0007-Gentoo-ld-enable-new-dtags-by-default-for-linux-gnu-.patch
@@ -1,7 +1,8 @@
-From 7cefac2aa8ff79d6e2eff1fb4c94346314563fc8 Mon Sep 17 00:00:00 2001
+From f4ecba77ec1eb0576b8731c749336ea3889eba73 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
 Date: Sun, 13 Oct 2019 05:25:28 +0200
-Subject: [PATCH] Gentoo: ld: enable new dtags by default for linux/gnu targets
+Subject: [PATCH 5/6] Gentoo: ld: enable new dtags by default for linux/gnu
+ targets
 
 Original author: Mike Frysinger <vapier@gentoo.org>
 
@@ -23,7 +24,7 @@ and GNU targets, enable them by default.
  1 file changed, 10 insertions(+)
 
 diff --git a/ld/emultempl/elf.em b/ld/emultempl/elf.em
-index 356f34538b..579e52253e 100644
+index bfaf8130a3e..c4c42b7371a 100644
 --- a/ld/emultempl/elf.em
 +++ b/ld/emultempl/elf.em
 @@ -81,6 +81,16 @@ gld${EMULATION_NAME}_before_parse (void)
@@ -44,5 +45,5 @@ index 356f34538b..579e52253e 100644
  EOF
  if test -n "$COMMONPAGESIZE"; then
 -- 
-2.26.2
+2.31.1
 

diff --git a/9999/0009-Gentoo-Pass-hash-style-sysv.patch b/9999/0009-Gentoo-Pass-hash-style-sysv.patch
index 7610d78..41b6a33 100644
--- a/9999/0009-Gentoo-Pass-hash-style-sysv.patch
+++ b/9999/0009-Gentoo-Pass-hash-style-sysv.patch
@@ -1,7 +1,7 @@
-From 2055e278cb6e984760dbf8627efef2158e215449 Mon Sep 17 00:00:00 2001
+From 905bf3c180f4f7fd07024eb9ff7851898593f3f8 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
-Date: Wed, 18 Oct 2017 00:44:49 +0200
-Subject: Gentoo: Pass --hash-style=sysv to ld in the testsuite
+Date: Tue, 20 Jul 2021 21:15:24 +0200
+Subject: [PATCH 6/6] Gentoo: Pass --hash-style=sysv to ld in the testsuite
 
 ---
  binutils/testsuite/lib/binutils-common.exp |  2 +-
@@ -9,10 +9,10 @@ Subject: Gentoo: Pass --hash-style=sysv to ld in the testsuite
  2 files changed, 15 insertions(+), 3 deletions(-)
 
 diff --git a/binutils/testsuite/lib/binutils-common.exp b/binutils/testsuite/lib/binutils-common.exp
-index b9e3c6d817..bb4ef987b3 100644
+index 59e25df99b0..401a05b5c32 100644
 --- a/binutils/testsuite/lib/binutils-common.exp
 +++ b/binutils/testsuite/lib/binutils-common.exp
-@@ -1125,7 +1125,7 @@ proc run_dump_test { name {extra_options {}} } {
+@@ -1279,7 +1279,7 @@ proc run_dump_test { name {extra_options {}} } {
  
  	    # Add -L$srcdir/$subdir so that the linker command can use
  	    # linker scripts in the source directory.
@@ -20,12 +20,12 @@ index b9e3c6d817..bb4ef987b3 100644
 +	    set cmd "$LD --hash-style=sysv $ld_extra_opt $LDFLAGS -L$srcdir/$subdir \
  		   $opts(ld) -o $objfile $objfiles $opts(ld_after_inputfiles)"
  
-	    # If needed then check for, or add a -Map option.
+ 	    # If needed then check for, or add a -Map option.
 diff --git a/ld/testsuite/lib/ld-lib.exp b/ld/testsuite/lib/ld-lib.exp
-index 015eda6eb9..0b945b539d 100644
+index 8fd14afc63e..adbeaa3bd08 100644
 --- a/ld/testsuite/lib/ld-lib.exp
 +++ b/ld/testsuite/lib/ld-lib.exp
-@@ -165,7 +165,7 @@ proc default_ld_relocate { ld target objects } {
+@@ -167,7 +167,7 @@ proc default_ld_relocate { ld target objects } {
      global HOSTING_EMU
  
      remote_file host delete $target
@@ -34,7 +34,7 @@ index 015eda6eb9..0b945b539d 100644
  }
  
  # Check to see if ld is being invoked with a non-endian output format
-@@ -196,8 +196,20 @@ proc default_ld_link { ld target objects } {
+@@ -198,8 +198,20 @@ proc default_ld_link { ld target objects } {
  	set flags [big_or_little_endian]
      }
  
@@ -57,5 +57,5 @@ index 015eda6eb9..0b945b539d 100644
  
      # We don't care if we get a warning about a non-existent start
 -- 
-2.26.2
+2.31.1
 


^ permalink raw reply related	[flat|nested] 39+ messages in thread

* [gentoo-commits] proj/toolchain/binutils-patches:master commit in: 9999/
@ 2021-07-20 19:53 Andreas K. Hüttel
  0 siblings, 0 replies; 39+ messages in thread
From: Andreas K. Hüttel @ 2021-07-20 19:53 UTC (permalink / raw
  To: gentoo-commits

commit:     c32b45b7537a82b63613ea95e00f8468d31a25d9
Author:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
AuthorDate: Tue Jul 20 19:52:55 2021 +0000
Commit:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
CommitDate: Tue Jul 20 19:52:55 2021 +0000
URL:        https://gitweb.gentoo.org/proj/toolchain/binutils-patches.git/commit/?id=c32b45b7

Renumber patches

Signed-off-by: Andreas K. Hüttel <dilfridge <AT> gentoo.org>

 ...ch => 0001-Gentoo-gold-ld-add-support-for-poisoned-system-direc.patch} | 0
 ...tch => 0002-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch} | 0
 ...ch => 0003-Gentoo-opcodes-link-against-libbfd.la-for-rpath-deps.patch} | 0
 ...ion.patch => 0004-Gentoo-add-with-extra-soversion-suffix-option.patch} | 0
 ...ch => 0005-Gentoo-ld-enable-new-dtags-by-default-for-linux-gnu-.patch} | 0
 ...-Pass-hash-style-sysv.patch => 0006-Gentoo-Pass-hash-style-sysv.patch} | 0
 6 files changed, 0 insertions(+), 0 deletions(-)

diff --git a/9999/0003-Gentoo-gold-ld-add-support-for-poisoned-system-direc.patch b/9999/0001-Gentoo-gold-ld-add-support-for-poisoned-system-direc.patch
similarity index 100%
rename from 9999/0003-Gentoo-gold-ld-add-support-for-poisoned-system-direc.patch
rename to 9999/0001-Gentoo-gold-ld-add-support-for-poisoned-system-direc.patch

diff --git a/9999/0004-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch b/9999/0002-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch
similarity index 100%
rename from 9999/0004-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch
rename to 9999/0002-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch

diff --git a/9999/0005-Gentoo-opcodes-link-against-libbfd.la-for-rpath-deps.patch b/9999/0003-Gentoo-opcodes-link-against-libbfd.la-for-rpath-deps.patch
similarity index 100%
rename from 9999/0005-Gentoo-opcodes-link-against-libbfd.la-for-rpath-deps.patch
rename to 9999/0003-Gentoo-opcodes-link-against-libbfd.la-for-rpath-deps.patch

diff --git a/9999/0006-Gentoo-add-with-extra-soversion-suffix-option.patch b/9999/0004-Gentoo-add-with-extra-soversion-suffix-option.patch
similarity index 100%
rename from 9999/0006-Gentoo-add-with-extra-soversion-suffix-option.patch
rename to 9999/0004-Gentoo-add-with-extra-soversion-suffix-option.patch

diff --git a/9999/0007-Gentoo-ld-enable-new-dtags-by-default-for-linux-gnu-.patch b/9999/0005-Gentoo-ld-enable-new-dtags-by-default-for-linux-gnu-.patch
similarity index 100%
rename from 9999/0007-Gentoo-ld-enable-new-dtags-by-default-for-linux-gnu-.patch
rename to 9999/0005-Gentoo-ld-enable-new-dtags-by-default-for-linux-gnu-.patch

diff --git a/9999/0009-Gentoo-Pass-hash-style-sysv.patch b/9999/0006-Gentoo-Pass-hash-style-sysv.patch
similarity index 100%
rename from 9999/0009-Gentoo-Pass-hash-style-sysv.patch
rename to 9999/0006-Gentoo-Pass-hash-style-sysv.patch


^ permalink raw reply	[flat|nested] 39+ messages in thread

* [gentoo-commits] proj/toolchain/binutils-patches:master commit in: 9999/
@ 2021-07-24 20:57 Andreas K. Hüttel
  0 siblings, 0 replies; 39+ messages in thread
From: Andreas K. Hüttel @ 2021-07-24 20:57 UTC (permalink / raw
  To: gentoo-commits

commit:     bc2a10f35b091063cf84b9cfd5300b6c0f0cf428
Author:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
AuthorDate: Sat Jul 24 19:40:41 2021 +0000
Commit:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
CommitDate: Sat Jul 24 19:40:41 2021 +0000
URL:        https://gitweb.gentoo.org/proj/toolchain/binutils-patches.git/commit/?id=bc2a10f3

Add libctf soversion patches

Signed-off-by: Andreas K. Hüttel <dilfridge <AT> gentoo.org>

 ...ibctf-optionally-a-gentoo-specific-sovers.patch | 177 +++++++++++++++++++++
 ...-soversion-suffix-then-we-also-use-the-bd.patch | 111 +++++++++++++
 2 files changed, 288 insertions(+)

diff --git a/9999/0007-Give-also-libctf-optionally-a-gentoo-specific-sovers.patch b/9999/0007-Give-also-libctf-optionally-a-gentoo-specific-sovers.patch
new file mode 100644
index 0000000..6f1c6b3
--- /dev/null
+++ b/9999/0007-Give-also-libctf-optionally-a-gentoo-specific-sovers.patch
@@ -0,0 +1,177 @@
+From d3cd41f5c7e405a8db5e85a7be9dfc42d44ef1b8 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
+Date: Sat, 24 Jul 2021 15:20:16 +0200
+Subject: [PATCH 1/2] Give also libctf optionally a gentoo-specific soversion
+
+---
+ libctf/Makefile.am  | 13 ++++++++++++-
+ libctf/Makefile.in  |  8 +++++++-
+ libctf/configure    | 31 +++++++++++++++++++++++++++++--
+ libctf/configure.ac |  8 ++++++++
+ 4 files changed, 56 insertions(+), 4 deletions(-)
+
+diff --git a/libctf/Makefile.am b/libctf/Makefile.am
+index e586d25fb37..eabc7fa8394 100644
+--- a/libctf/Makefile.am
++++ b/libctf/Makefile.am
+@@ -21,6 +21,8 @@ ACLOCAL_AMFLAGS = -I .. -I ../config -I ../bfd
+ 
+ AUTOMAKE_OPTIONS = dejagnu foreign no-texinfo.tex
+ 
++EXTRA_SOVERSION_SUFFIX = @EXTRA_SOVERSION_SUFFIX@
++
+ # This is where we get zlib from.  zlibdir is -L../zlib and zlibinc is
+ # -I../zlib, unless we were configured with --with-system-zlib, in which
+ # case both are empty.
+@@ -41,8 +43,17 @@ include_HEADERS =
+ noinst_LTLIBRARIES = libctf.la libctf-nobfd.la
+ endif
+ 
++# libctf by default uses libtool versioning. Unfortunately that keeps us from adding
++# a supplement to the soversion. So we need to switch tracks and be creative.
++
++if HAVE_EXTRA_SOVERSION_SUFFIX
++gentoo_ctf_soversion = 0.0.0.$(EXTRA_SOVERSION_SUFFIX)
++else
++gentoo_ctf_soversion = 0.0.0
++endif
++
+ libctf_nobfd_la_LIBADD = @CTF_LIBADD@ $(ZLIB)
+-libctf_nobfd_la_LDFLAGS = -version-info 0:0:0 @SHARED_LDFLAGS@ @VERSION_FLAGS@
++libctf_nobfd_la_LDFLAGS = -release $(gentoo_ctf_soversion) @SHARED_LDFLAGS@ @VERSION_FLAGS@
+ libctf_nobfd_la_CPPFLAGS = $(AM_CPPFLAGS) -DNOBFD=1
+ libctf_nobfd_la_SOURCES = ctf-archive.c ctf-dump.c ctf-create.c ctf-decl.c ctf-error.c \
+ 			  ctf-hash.c ctf-labels.c ctf-dedup.c ctf-link.c ctf-lookup.c \
+diff --git a/libctf/Makefile.in b/libctf/Makefile.in
+index 5cfa100f9cc..b528781af97 100644
+--- a/libctf/Makefile.in
++++ b/libctf/Makefile.in
+@@ -338,6 +338,7 @@ EXEEXT = @EXEEXT@
+ 
+ # Setup the testing framework, if you have one
+ EXPECT = expect
++EXTRA_SOVERSION_SUFFIX = @EXTRA_SOVERSION_SUFFIX@
+ FGREP = @FGREP@
+ GENCAT = @GENCAT@
+ GMSGFMT = @GMSGFMT@
+@@ -469,8 +470,13 @@ AM_CFLAGS = -std=gnu99 @ac_libctf_warn_cflags@ @warn@ @c_warn@ @WARN_PEDANTIC@ @
+ @INSTALL_LIBBFD_FALSE@include_HEADERS = 
+ @INSTALL_LIBBFD_TRUE@include_HEADERS = $(INCDIR)/ctf.h $(INCDIR)/ctf-api.h
+ @INSTALL_LIBBFD_FALSE@noinst_LTLIBRARIES = libctf.la libctf-nobfd.la
++@HAVE_EXTRA_SOVERSION_SUFFIX_FALSE@gentoo_ctf_soversion = 0.0.0
++
++# libctf by default uses libtool versioning. Unfortunately that keeps us from adding
++# a supplement to the soversion. So we need to switch tracks and be creative.
++@HAVE_EXTRA_SOVERSION_SUFFIX_TRUE@gentoo_ctf_soversion = 0.0.0.$(EXTRA_SOVERSION_SUFFIX)
+ libctf_nobfd_la_LIBADD = @CTF_LIBADD@ $(ZLIB)
+-libctf_nobfd_la_LDFLAGS = -version-info 0:0:0 @SHARED_LDFLAGS@ @VERSION_FLAGS@
++libctf_nobfd_la_LDFLAGS = -release $(gentoo_ctf_soversion) @SHARED_LDFLAGS@ @VERSION_FLAGS@
+ libctf_nobfd_la_CPPFLAGS = $(AM_CPPFLAGS) -DNOBFD=1
+ libctf_nobfd_la_SOURCES = ctf-archive.c ctf-dump.c ctf-create.c \
+ 	ctf-decl.c ctf-error.c ctf-hash.c ctf-labels.c ctf-dedup.c \
+diff --git a/libctf/configure b/libctf/configure
+index 82bcf13a606..e961f637a69 100755
+--- a/libctf/configure
++++ b/libctf/configure
+@@ -643,6 +643,9 @@ CTF_LIBADD
+ SHARED_LDFLAGS
+ NEED_CTF_QSORT_R_FALSE
+ NEED_CTF_QSORT_R_TRUE
++HAVE_EXTRA_SOVERSION_SUFFIX_FALSE
++HAVE_EXTRA_SOVERSION_SUFFIX_TRUE
++EXTRA_SOVERSION_SUFFIX
+ ENABLE_LIBCTF_HASH_DEBUGGING_FALSE
+ ENABLE_LIBCTF_HASH_DEBUGGING_TRUE
+ zlibinc
+@@ -804,6 +807,7 @@ enable_maintainer_mode
+ enable_install_libbfd
+ with_system_zlib
+ enable_libctf_hash_debugging
++with_extra_soversion_suffix
+ '
+       ac_precious_vars='build_alias
+ host_alias
+@@ -1461,6 +1465,8 @@ Optional Packages:
+                           both]
+   --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
+   --with-system-zlib      use installed libz
++  --with-extra-soversion-suffix=SUFFIX
++                          Append '.SUFFIX' to SONAME [[default=]]
+ 
+ Some influential environment variables:
+   CC          C compiler command
+@@ -11586,7 +11592,7 @@ else
+   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+   lt_status=$lt_dlunknown
+   cat > conftest.$ac_ext <<_LT_EOF
+-#line 11589 "configure"
++#line 11607 "configure"
+ #include "confdefs.h"
+ 
+ #if HAVE_DLFCN_H
+@@ -11692,7 +11698,7 @@ else
+   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+   lt_status=$lt_dlunknown
+   cat > conftest.$ac_ext <<_LT_EOF
+-#line 11695 "configure"
++#line 11713 "configure"
+ #include "confdefs.h"
+ 
+ #if HAVE_DLFCN_H
+@@ -12899,6 +12905,23 @@ else
+ fi
+ 
+ 
++EXTRA_SOVERSION_SUFFIX=
++
++# Check whether --with-extra-soversion-suffix was given.
++if test "${with_extra_soversion_suffix+set}" = set; then :
++  withval=$with_extra_soversion_suffix; EXTRA_SOVERSION_SUFFIX="${withval}"
++fi
++
++
++ if test -n "${with_extra_soversion_suffix}"; then
++  HAVE_EXTRA_SOVERSION_SUFFIX_TRUE=
++  HAVE_EXTRA_SOVERSION_SUFFIX_FALSE='#'
++else
++  HAVE_EXTRA_SOVERSION_SUFFIX_TRUE='#'
++  HAVE_EXTRA_SOVERSION_SUFFIX_FALSE=
++fi
++
++
+ # Similar to GDB_AC_CHECK_BFD.
+ OLD_CFLAGS=$CFLAGS
+ OLD_LDFLAGS=$LDFLAGS
+@@ -13657,6 +13680,10 @@ if test -z "${ENABLE_LIBCTF_HASH_DEBUGGING_TRUE}" && test -z "${ENABLE_LIBCTF_HA
+   as_fn_error $? "conditional \"ENABLE_LIBCTF_HASH_DEBUGGING\" was never defined.
+ Usually this means the macro was only invoked conditionally." "$LINENO" 5
+ fi
++if test -z "${HAVE_EXTRA_SOVERSION_SUFFIX_TRUE}" && test -z "${HAVE_EXTRA_SOVERSION_SUFFIX_FALSE}"; then
++  as_fn_error $? "conditional \"HAVE_EXTRA_SOVERSION_SUFFIX\" was never defined.
++Usually this means the macro was only invoked conditionally." "$LINENO" 5
++fi
+ 
+ if test -z "${NEED_CTF_QSORT_R_TRUE}" && test -z "${NEED_CTF_QSORT_R_FALSE}"; then
+   as_fn_error $? "conditional \"NEED_CTF_QSORT_R\" was never defined.
+diff --git a/libctf/configure.ac b/libctf/configure.ac
+index 80644b89d67..f7e6180afd8 100644
+--- a/libctf/configure.ac
++++ b/libctf/configure.ac
+@@ -77,6 +77,14 @@ if test "${enable_libctf_hash_debugging}" = yes; then
+ fi
+ AM_CONDITIONAL(ENABLE_LIBCTF_HASH_DEBUGGING, test "${enable_libctf_hash_debugging}" = yes)
+ 
++EXTRA_SOVERSION_SUFFIX=
++AC_ARG_WITH(extra-soversion-suffix,
++  AS_HELP_STRING([--with-extra-soversion-suffix=SUFFIX],
++                 [Append '.SUFFIX' to SONAME [[default=]]]),
++[EXTRA_SOVERSION_SUFFIX="${withval}"])
++AC_SUBST(EXTRA_SOVERSION_SUFFIX)
++AM_CONDITIONAL([HAVE_EXTRA_SOVERSION_SUFFIX], [test -n "${with_extra_soversion_suffix}"])
++
+ # Similar to GDB_AC_CHECK_BFD.
+ OLD_CFLAGS=$CFLAGS
+ OLD_LDFLAGS=$LDFLAGS
+-- 
+2.31.1
+

diff --git a/9999/0008-If-we-use-a-soversion-suffix-then-we-also-use-the-bd.patch b/9999/0008-If-we-use-a-soversion-suffix-then-we-also-use-the-bd.patch
new file mode 100644
index 0000000..b88f50e
--- /dev/null
+++ b/9999/0008-If-we-use-a-soversion-suffix-then-we-also-use-the-bd.patch
@@ -0,0 +1,111 @@
+From 235448cc5c53641417e17fd39ced95a21053c8ca Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
+Date: Sat, 24 Jul 2021 19:25:32 +0200
+Subject: [PATCH 2/2] If we use a soversion suffix, then we also use the bdf
+ version as soversion
+
+---
+ libctf/Makefile.am  | 3 ++-
+ libctf/Makefile.in  | 3 ++-
+ libctf/configure    | 8 ++++++--
+ libctf/configure.ac | 2 ++
+ 4 files changed, 12 insertions(+), 4 deletions(-)
+
+diff --git a/libctf/Makefile.am b/libctf/Makefile.am
+index eabc7fa8394..e1304e8e89b 100644
+--- a/libctf/Makefile.am
++++ b/libctf/Makefile.am
+@@ -22,6 +22,7 @@ ACLOCAL_AMFLAGS = -I .. -I ../config -I ../bfd
+ AUTOMAKE_OPTIONS = dejagnu foreign no-texinfo.tex
+ 
+ EXTRA_SOVERSION_SUFFIX = @EXTRA_SOVERSION_SUFFIX@
++BFD_VERSION = @BFD_VERSION@
+ 
+ # This is where we get zlib from.  zlibdir is -L../zlib and zlibinc is
+ # -I../zlib, unless we were configured with --with-system-zlib, in which
+@@ -47,7 +48,7 @@ endif
+ # a supplement to the soversion. So we need to switch tracks and be creative.
+ 
+ if HAVE_EXTRA_SOVERSION_SUFFIX
+-gentoo_ctf_soversion = 0.0.0.$(EXTRA_SOVERSION_SUFFIX)
++gentoo_ctf_soversion = "$(BFD_VERSION).$(EXTRA_SOVERSION_SUFFIX)"
+ else
+ gentoo_ctf_soversion = 0.0.0
+ endif
+diff --git a/libctf/Makefile.in b/libctf/Makefile.in
+index b528781af97..18d482411e8 100644
+--- a/libctf/Makefile.in
++++ b/libctf/Makefile.in
+@@ -316,6 +316,7 @@ AUTOCONF = @AUTOCONF@
+ AUTOHEADER = @AUTOHEADER@
+ AUTOMAKE = @AUTOMAKE@
+ AWK = @AWK@
++BFD_VERSION = @BFD_VERSION@
+ CATALOGS = @CATALOGS@
+ CATOBJEXT = @CATOBJEXT@
+ CC = @CC@
+@@ -474,7 +475,7 @@ AM_CFLAGS = -std=gnu99 @ac_libctf_warn_cflags@ @warn@ @c_warn@ @WARN_PEDANTIC@ @
+ 
+ # libctf by default uses libtool versioning. Unfortunately that keeps us from adding
+ # a supplement to the soversion. So we need to switch tracks and be creative.
+-@HAVE_EXTRA_SOVERSION_SUFFIX_TRUE@gentoo_ctf_soversion = 0.0.0.$(EXTRA_SOVERSION_SUFFIX)
++@HAVE_EXTRA_SOVERSION_SUFFIX_TRUE@gentoo_ctf_soversion = "$(BFD_VERSION).$(EXTRA_SOVERSION_SUFFIX)"
+ libctf_nobfd_la_LIBADD = @CTF_LIBADD@ $(ZLIB)
+ libctf_nobfd_la_LDFLAGS = -release $(gentoo_ctf_soversion) @SHARED_LDFLAGS@ @VERSION_FLAGS@
+ libctf_nobfd_la_CPPFLAGS = $(AM_CPPFLAGS) -DNOBFD=1
+diff --git a/libctf/configure b/libctf/configure
+index e961f637a69..520d3a5cb3e 100755
+--- a/libctf/configure
++++ b/libctf/configure
+@@ -643,6 +643,7 @@ CTF_LIBADD
+ SHARED_LDFLAGS
+ NEED_CTF_QSORT_R_FALSE
+ NEED_CTF_QSORT_R_TRUE
++BFD_VERSION
+ HAVE_EXTRA_SOVERSION_SUFFIX_FALSE
+ HAVE_EXTRA_SOVERSION_SUFFIX_TRUE
+ EXTRA_SOVERSION_SUFFIX
+@@ -11592,7 +11593,7 @@ else
+   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+   lt_status=$lt_dlunknown
+   cat > conftest.$ac_ext <<_LT_EOF
+-#line 11607 "configure"
++#line 11608 "configure"
+ #include "confdefs.h"
+ 
+ #if HAVE_DLFCN_H
+@@ -11698,7 +11699,7 @@ else
+   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+   lt_status=$lt_dlunknown
+   cat > conftest.$ac_ext <<_LT_EOF
+-#line 11713 "configure"
++#line 11714 "configure"
+ #include "confdefs.h"
+ 
+ #if HAVE_DLFCN_H
+@@ -12922,6 +12923,9 @@ else
+ fi
+ 
+ 
++BFD_VERSION=$(${srcdir}/../bfd/configure --version | sed -n -e '1s,.* ,,p')
++
++
+ # Similar to GDB_AC_CHECK_BFD.
+ OLD_CFLAGS=$CFLAGS
+ OLD_LDFLAGS=$LDFLAGS
+diff --git a/libctf/configure.ac b/libctf/configure.ac
+index f7e6180afd8..5306e5499ec 100644
+--- a/libctf/configure.ac
++++ b/libctf/configure.ac
+@@ -85,6 +85,8 @@ AC_ARG_WITH(extra-soversion-suffix,
+ AC_SUBST(EXTRA_SOVERSION_SUFFIX)
+ AM_CONDITIONAL([HAVE_EXTRA_SOVERSION_SUFFIX], [test -n "${with_extra_soversion_suffix}"])
+ 
++AC_SUBST(BFD_VERSION, $(${srcdir}/../bfd/configure --version | sed -n -e '1s,.* ,,p'), [Version of the accompanying bfd linker])
++
+ # Similar to GDB_AC_CHECK_BFD.
+ OLD_CFLAGS=$CFLAGS
+ OLD_LDFLAGS=$LDFLAGS
+-- 
+2.31.1
+


^ permalink raw reply related	[flat|nested] 39+ messages in thread

* [gentoo-commits] proj/toolchain/binutils-patches:master commit in: 9999/
@ 2021-07-30 23:25 Andreas K. Hüttel
  0 siblings, 0 replies; 39+ messages in thread
From: Andreas K. Hüttel @ 2021-07-30 23:25 UTC (permalink / raw
  To: gentoo-commits

commit:     7d4ad0cdad6d8eda51cc091f9357fe9d13c3f1e2
Author:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
AuthorDate: Fri Jul 30 23:25:06 2021 +0000
Commit:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
CommitDate: Fri Jul 30 23:25:06 2021 +0000
URL:        https://gitweb.gentoo.org/proj/toolchain/binutils-patches.git/commit/?id=7d4ad0cd

XFAIL 15 broken ld.gold tests

Signed-off-by: Andreas K. Hüttel <dilfridge <AT> gentoo.org>

 9999/0020-XFAIL-15-broken-ld.gold-tests.patch | 77 +++++++++++++++++++++++++++
 1 file changed, 77 insertions(+)

diff --git a/9999/0020-XFAIL-15-broken-ld.gold-tests.patch b/9999/0020-XFAIL-15-broken-ld.gold-tests.patch
new file mode 100644
index 0000000..777390f
--- /dev/null
+++ b/9999/0020-XFAIL-15-broken-ld.gold-tests.patch
@@ -0,0 +1,77 @@
+From 6f9a3d6ffa2bcf91bc047055848591dab77c0f11 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
+Date: Sat, 31 Jul 2021 01:18:18 +0200
+Subject: [PATCH] Gentoo: XFAIL 15 broken ld.gold tests
+
+It seems like either the tests or ld.gold in general cannot handle
+compilers built with --enable-default-pie. No fix yet, so let's ignore
+these test failures for the moment. For details see the linked bugs.
+
+Bug: https://bugs.gentoo.org/684046
+Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=22755
+Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=27303
+---
+ gold/testsuite/Makefile.am |  6 ++++++
+ gold/testsuite/Makefile.in | 16 ++++++++++++----
+ 2 files changed, 18 insertions(+), 4 deletions(-)
+
+diff --git a/gold/testsuite/Makefile.am b/gold/testsuite/Makefile.am
+index 38e54818f48..85c94d40660 100644
+--- a/gold/testsuite/Makefile.am
++++ b/gold/testsuite/Makefile.am
+@@ -1,5 +1,11 @@
+ # Process this file with automake to generate Makefile.in
+ 
++# Gentoo, https://bugs.gentoo.org/684046
++XFAIL_TESTS = exception_separate_shared_12_test exception_separate_shared_21_test \
++	weak_undef_test initpri3a justsyms_exec script_test_2 script_test_1 \
++	justsyms binary_test script_test_3 tls_phdrs_script_test script_test_12i \
++	dynamic_list_2 incremental_test_2 incremental_test_5
++
+ # As far as I can tell automake testing support assumes that the build
+ # system and the host system are the same.  So these tests will not
+ # work when building with a cross-compiler.
+diff --git a/gold/testsuite/Makefile.in b/gold/testsuite/Makefile.in
+index 7b4b7832d38..765c2b73140 100644
+--- a/gold/testsuite/Makefile.in
++++ b/gold/testsuite/Makefile.in
+@@ -15,10 +15,6 @@
+ @SET_MAKE@
+ 
+ # Process this file with automake to generate Makefile.in
+-
+-# As far as I can tell automake testing support assumes that the build
+-# system and the host system are the same.  So these tests will not
+-# work when building with a cross-compiler.
+ VPATH = @srcdir@
+ am__is_gnu_make = { \
+   if test -z '$(MAKELEVEL)'; then \
+@@ -94,6 +90,14 @@ POST_UNINSTALL = :
+ build_triplet = @build@
+ host_triplet = @host@
+ target_triplet = @target@
++XFAIL_TESTS = exception_separate_shared_12_test$(EXEEXT) \
++	exception_separate_shared_21_test$(EXEEXT) \
++	weak_undef_test$(EXEEXT) initpri3a$(EXEEXT) \
++	justsyms_exec$(EXEEXT) script_test_2$(EXEEXT) \
++	script_test_1$(EXEEXT) justsyms$(EXEEXT) binary_test$(EXEEXT) \
++	script_test_3$(EXEEXT) tls_phdrs_script_test$(EXEEXT) \
++	script_test_12i$(EXEEXT) dynamic_list_2$(EXEEXT) \
++	incremental_test_2$(EXEEXT) incremental_test_5$(EXEEXT)
+ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
+ 	$(am__EXEEXT_4) $(am__EXEEXT_5) $(am__EXEEXT_6) \
+ 	$(am__EXEEXT_7) $(am__EXEEXT_8) $(am__EXEEXT_9) \
+@@ -2742,6 +2746,10 @@ top_srcdir = @top_srcdir@
+ zlibdir = @zlibdir@
+ zlibinc = @zlibinc@
+ 
++# As far as I can tell automake testing support assumes that the build
++# system and the host system are the same.  So these tests will not
++# work when building with a cross-compiler.
++
+ # Ignore warning about AM_PROG_CC_C_O due to large_CFLAGS
+ AUTOMAKE_OPTIONS = foreign -Wno-portability
+ 
+-- 
+2.31.1
+


^ permalink raw reply related	[flat|nested] 39+ messages in thread

* [gentoo-commits] proj/toolchain/binutils-patches:master commit in: 9999/
@ 2021-08-17 20:07 Andreas K. Hüttel
  0 siblings, 0 replies; 39+ messages in thread
From: Andreas K. Hüttel @ 2021-08-17 20:07 UTC (permalink / raw
  To: gentoo-commits

commit:     8699e74a960289b51ace04e4fffde22d5344171b
Author:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
AuthorDate: Tue Aug 17 20:01:35 2021 +0000
Commit:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
CommitDate: Tue Aug 17 20:01:35 2021 +0000
URL:        https://gitweb.gentoo.org/proj/toolchain/binutils-patches.git/commit/?id=8699e74a

Enable new dtags via configure, not broken patch

Bug: https://bugs.gentoo.org/808787
Signed-off-by: Andreas K. Hüttel <dilfridge <AT> gentoo.org>

 ...nable-new-dtags-by-default-for-linux-gnu-.patch | 49 ----------------------
 1 file changed, 49 deletions(-)

diff --git a/9999/0005-Gentoo-ld-enable-new-dtags-by-default-for-linux-gnu-.patch b/9999/0005-Gentoo-ld-enable-new-dtags-by-default-for-linux-gnu-.patch
deleted file mode 100644
index c6e5299..0000000
--- a/9999/0005-Gentoo-ld-enable-new-dtags-by-default-for-linux-gnu-.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From f4ecba77ec1eb0576b8731c749336ea3889eba73 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
-Date: Sun, 13 Oct 2019 05:25:28 +0200
-Subject: [PATCH 5/6] Gentoo: ld: enable new dtags by default for linux/gnu
- targets
-
-Original author: Mike Frysinger <vapier@gentoo.org>
-
-The "new" dtags options have been around for 14+ years now, so for Linux
-and GNU targets, enable them by default.
-
-2012-01-21  Mike Frysinger  <vapier@gentoo.org>
-
-        * emultempl/elf32.em (gld${EMULATION_NAME}_before_parse): Set
-        link_info.new_dtags to TRUE for linux/gnu targets.
-        * NEWS: Mention new dtags default.
-
-2013-01-22  Roland McGrath  <mcgrathr@google.com>
-
-        * emultempl/elf32.em (gld${EMULATION_NAME}_before_parse): Set
-        new_dtags to TRUE for *-*-nacl* targets.
----
- ld/emultempl/elf.em | 10 ++++++++++
- 1 file changed, 10 insertions(+)
-
-diff --git a/ld/emultempl/elf.em b/ld/emultempl/elf.em
-index bfaf8130a3e..c4c42b7371a 100644
---- a/ld/emultempl/elf.em
-+++ b/ld/emultempl/elf.em
-@@ -81,6 +81,16 @@ gld${EMULATION_NAME}_before_parse (void)
-   input_flags.dynamic = ${DYNAMIC_LINK-true};
-   config.has_shared = `if test -n "$GENERATE_SHLIB_SCRIPT" ; then echo true ; else echo false ; fi`;
-   config.separate_code = `if test "x${SEPARATE_CODE}" = xyes ; then echo true ; else echo false ; fi`;
-+EOF
-+
-+case ${target} in
-+  *-*-linux-* | *-*-k*bsd*-* | *-*-gnu* | *-*-nacl*)
-+    fragment <<EOF
-+  link_info.new_dtags = true;
-+EOF
-+    ;;
-+esac
-+fragment <<EOF
-   link_info.check_relocs_after_open_input = true;
- EOF
- if test -n "$COMMONPAGESIZE"; then
--- 
-2.31.1
-


^ permalink raw reply related	[flat|nested] 39+ messages in thread

* [gentoo-commits] proj/toolchain/binutils-patches:master commit in: 9999/
@ 2022-01-15 22:27 Andreas K. Hüttel
  0 siblings, 0 replies; 39+ messages in thread
From: Andreas K. Hüttel @ 2022-01-15 22:27 UTC (permalink / raw
  To: gentoo-commits

commit:     09d59da43630e66d4f7ae7145e121d06c81a2fdc
Author:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
AuthorDate: Sat Jan 15 22:19:42 2022 +0000
Commit:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
CommitDate: Sat Jan 15 22:26:47 2022 +0000
URL:        https://gitweb.gentoo.org/proj/toolchain/binutils-patches.git/commit/?id=09d59da4

Update patches for binutils 2.38

Signed-off-by: Andreas K. Hüttel <dilfridge <AT> gentoo.org>

 ...-ld-add-support-for-poisoned-system-direc.patch |  42 ++++----
 ...iberty-install-PIC-version-of-libiberty.a.patch |   8 +-
 ...o-add-with-extra-soversion-suffix-option.patch} |  34 +++----
 ...des-link-against-libbfd.la-for-rpath-deps.patch |  49 ---------
 ...s-hash-style-sysv-to-ld-in-the-testsuite.patch} |  16 +--
 ...also-libctf-optionally-a-gentoo-specific.patch} |  94 +++++++++--------
 ...006-Gentoo-XFAIL-15-broken-ld.gold-tests.patch} |   6 +-
 ...-soversion-suffix-then-we-also-use-the-bd.patch | 111 ---------------------
 8 files changed, 108 insertions(+), 252 deletions(-)

diff --git a/9999/0001-Gentoo-gold-ld-add-support-for-poisoned-system-direc.patch b/9999/0001-Gentoo-gold-ld-add-support-for-poisoned-system-direc.patch
index f7443bf..0dc4cf1 100644
--- a/9999/0001-Gentoo-gold-ld-add-support-for-poisoned-system-direc.patch
+++ b/9999/0001-Gentoo-gold-ld-add-support-for-poisoned-system-direc.patch
@@ -1,7 +1,7 @@
-From 8a82f64de912f26e840b20eec9d8a463fd0e242b Mon Sep 17 00:00:00 2001
+From 322deede0713506f899ee7f284a7c82ba1ec1cf7 Mon Sep 17 00:00:00 2001
 From: Mike Frysinger <vapier@gentoo.org>
 Date: Tue, 20 Jul 2021 21:08:31 +0200
-Subject: [PATCH 1/6] Gentoo: gold/ld: add support for poisoned system 
+Subject: [PATCH 1/6] Gentoo: gold/ld: add support for poisoned system
  directories
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
@@ -43,7 +43,7 @@ Ported to binutils 2.37 Andreas K. Hütte <dilfridge@gentoo.org>
  11 files changed, 146 insertions(+)
 
 diff --git a/gold/options.cc b/gold/options.cc
-index 5a55bd8ba6d..f7940c75f5a 100644
+index 04be98a3e39..64439f8af7a 100644
 --- a/gold/options.cc
 +++ b/gold/options.cc
 @@ -1355,6 +1355,39 @@ General_options::finalize()
@@ -87,7 +87,7 @@ index 5a55bd8ba6d..f7940c75f5a 100644
    if (this->shared() && this->is_static())
      gold_fatal(_("-shared and -static are incompatible"));
 diff --git a/gold/options.h b/gold/options.h
-index 757ebf18fec..490b4cbd7d4 100644
+index 9509a445e8e..a3d76b294cd 100644
 --- a/gold/options.h
 +++ b/gold/options.h
 @@ -1394,6 +1394,13 @@ class General_options
@@ -119,10 +119,10 @@ index 26d55a00d47..ffad464783c 100644
  #undef EXTRA_SHLIB_EXTENSION
  
 diff --git a/ld/configure b/ld/configure
-index c197aaef3cb..882263aa43f 100755
+index f5c329c1f12..41ec6ca73ac 100755
 --- a/ld/configure
 +++ b/ld/configure
-@@ -829,6 +829,7 @@ with_lib_path
+@@ -831,6 +831,7 @@ with_lib_path
  enable_targets
  enable_64_bit_bfd
  with_sysroot
@@ -130,7 +130,7 @@ index c197aaef3cb..882263aa43f 100755
  enable_gold
  enable_got
  enable_compressed_debug_sections
-@@ -1498,6 +1499,8 @@ Optional Features:
+@@ -1500,6 +1501,8 @@ Optional Features:
    --enable-checking       enable run-time checks
    --enable-targets        alternative target configurations
    --enable-64-bit-bfd     64-bit support (on hosts with narrower word sizes)
@@ -139,7 +139,7 @@ index c197aaef3cb..882263aa43f 100755
    --enable-gold[=ARG]     build gold [ARG={default,yes,no}]
    --enable-got=<type>     GOT handling scheme (target, single, negative,
                            multigot)
-@@ -15236,7 +15239,18 @@ else
+@@ -15333,7 +15336,18 @@ else
  fi
  
  
@@ -159,10 +159,10 @@ index c197aaef3cb..882263aa43f 100755
  # Check whether --enable-got was given.
  if test "${enable_got+set}" = set; then :
 diff --git a/ld/configure.ac b/ld/configure.ac
-index 8ea97c43cd4..0f246db67d8 100644
+index 7f4cff079b7..57d1abff870 100644
 --- a/ld/configure.ac
 +++ b/ld/configure.ac
-@@ -106,6 +106,16 @@ AC_SUBST(use_sysroot)
+@@ -102,6 +102,16 @@ AC_SUBST(use_sysroot)
  AC_SUBST(TARGET_SYSTEM_ROOT)
  AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)
  
@@ -180,7 +180,7 @@ index 8ea97c43cd4..0f246db67d8 100644
  dnl "install_as_default" is set to false if gold is the default linker.
  dnl "installed_linker" is the installed BFD linker name.
 diff --git a/ld/ld.h b/ld/ld.h
-index 35fafebfaed..4152278b8f4 100644
+index f3086bf30de..90cf1ca51e5 100644
 --- a/ld/ld.h
 +++ b/ld/ld.h
 @@ -162,6 +162,13 @@ typedef struct
@@ -198,10 +198,10 @@ index 35fafebfaed..4152278b8f4 100644
    enum endian_enum endian;
  
 diff --git a/ld/ld.texi b/ld/ld.texi
-index dd8f571d4e4..0aee4a4e9f1 100644
+index fc75e9b3625..f7d46117bab 100644
 --- a/ld/ld.texi
 +++ b/ld/ld.texi
-@@ -2863,6 +2863,24 @@ string identifying the original linked file does not change.
+@@ -2892,6 +2892,24 @@ string identifying the original linked file does not change.
  
  Passing @code{none} for @var{style} disables the setting from any
  @code{--build-id} options earlier on the command line.
@@ -227,7 +227,7 @@ index dd8f571d4e4..0aee4a4e9f1 100644
  
  @c man end
 diff --git a/ld/ldfile.c b/ld/ldfile.c
-index 9d0af06f1f6..f4a83acca93 100644
+index 731ae5f7aed..6b67e29041b 100644
 --- a/ld/ldfile.c
 +++ b/ld/ldfile.c
 @@ -117,6 +117,26 @@ ldfile_add_library_path (const char *name, bool cmdline)
@@ -258,10 +258,10 @@ index 9d0af06f1f6..f4a83acca93 100644
  
  /* Try to open a BFD for a lang_input_statement.  */
 diff --git a/ld/ldlex.h b/ld/ldlex.h
-index 9e8bf5fb835..3baed822a22 100644
+index bc58fea73cc..cf1b015a420 100644
 --- a/ld/ldlex.h
 +++ b/ld/ldlex.h
-@@ -148,6 +148,9 @@ enum option_values
+@@ -149,6 +149,9 @@ enum option_values
    OPTION_PRINT_OUTPUT_FORMAT,
    OPTION_PRINT_SYSROOT,
    OPTION_IGNORE_UNRESOLVED_SYMBOL,
@@ -272,7 +272,7 @@ index 9e8bf5fb835..3baed822a22 100644
    OPTION_POP_STATE,
    OPTION_DISABLE_MULTIPLE_DEFS_ABS,
 diff --git a/ld/ldmain.c b/ld/ldmain.c
-index 42660eb9a3c..c78009b760c 100644
+index ea72b14a301..706ec9ce26e 100644
 --- a/ld/ldmain.c
 +++ b/ld/ldmain.c
 @@ -321,6 +321,13 @@ main (int argc, char **argv)
@@ -290,10 +290,10 @@ index 42660eb9a3c..c78009b760c 100644
    /* We initialize DEMANGLING based on the environment variable
       COLLECT_NO_DEMANGLE.  The gcc collect2 program will demangle the
 diff --git a/ld/lexsup.c b/ld/lexsup.c
-index 00274c500d0..a19cce9967c 100644
+index 5acc47ed5a0..e78df2daf29 100644
 --- a/ld/lexsup.c
 +++ b/ld/lexsup.c
-@@ -566,6 +566,18 @@ static const struct ld_option ld_options[] =
+@@ -571,6 +571,18 @@ static const struct ld_option ld_options[] =
      OPTION_IGNORE_UNRESOLVED_SYMBOL},
      '\0', N_("SYMBOL"),
      N_("Unresolved SYMBOL will not cause an error or warning"), TWO_DASHES },
@@ -312,7 +312,7 @@ index 00274c500d0..a19cce9967c 100644
    { {"push-state", no_argument, NULL, OPTION_PUSH_STATE},
      '\0', NULL, N_("Push state of flags governing input file handling"),
      TWO_DASHES },
-@@ -1643,6 +1655,18 @@ parse_args (unsigned argc, char **argv)
+@@ -1659,6 +1671,18 @@ parse_args (unsigned argc, char **argv)
  	  }
  	  break;
  
@@ -332,5 +332,5 @@ index 00274c500d0..a19cce9967c 100644
  	  input_flags.pushed = xmemdup (&input_flags,
  					sizeof (input_flags),
 -- 
-2.31.1
+2.34.1
 

diff --git a/9999/0002-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch b/9999/0002-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch
index 4d5ed11..72b99c0 100644
--- a/9999/0002-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch
+++ b/9999/0002-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch
@@ -1,4 +1,4 @@
-From 6536761c1e2756ec39fdc33c400757be3744510c Mon Sep 17 00:00:00 2001
+From 887d52771263fc6b8260b873e104bc57d54b3f5c Mon Sep 17 00:00:00 2001
 From: Mike Frysinger <vapier@gentoo.org>
 Date: Fri, 7 Jan 2005 00:15:53 -0500
 Subject: [PATCH 2/6] Gentoo: libiberty: install PIC version of libiberty.a
@@ -18,10 +18,10 @@ general are fairly low, and we'd rather have things work for all of them.
  1 file changed, 1 insertion(+)
 
 diff --git a/libiberty/Makefile.in b/libiberty/Makefile.in
-index d19e14a2aca..cd02be1c2fb 100644
+index abef3c4601b..9dfb6b6d2b0 100644
 --- a/libiberty/Makefile.in
 +++ b/libiberty/Makefile.in
-@@ -257,6 +257,7 @@ $(TARGETLIB): $(REQUIRED_OFILES) $(EXTRA_OFILES) $(LIBOBJS)
+@@ -258,6 +258,7 @@ $(TARGETLIB): $(REQUIRED_OFILES) $(EXTRA_OFILES) $(LIBOBJS)
  	  $(AR) $(AR_FLAGS) $(TARGETLIB) \
  	    $(REQUIRED_OFILES) $(EXTRA_OFILES) $(LIBOBJS); \
  	  $(RANLIB) $(TARGETLIB); \
@@ -30,5 +30,5 @@ index d19e14a2aca..cd02be1c2fb 100644
  	else true; fi; \
  	if [ x"$(NOASANFLAG)" != x ]; then \
 -- 
-2.31.1
+2.34.1
 

diff --git a/9999/0004-Gentoo-add-with-extra-soversion-suffix-option.patch b/9999/0003-Gentoo-add-with-extra-soversion-suffix-option.patch
similarity index 85%
rename from 9999/0004-Gentoo-add-with-extra-soversion-suffix-option.patch
rename to 9999/0003-Gentoo-add-with-extra-soversion-suffix-option.patch
index 1051543..b2b0bb5 100644
--- a/9999/0004-Gentoo-add-with-extra-soversion-suffix-option.patch
+++ b/9999/0003-Gentoo-add-with-extra-soversion-suffix-option.patch
@@ -1,7 +1,7 @@
-From 235f1f862fb9bf77e2b9f62c24db0ca801c4a057 Mon Sep 17 00:00:00 2001
+From 820a68dff1ec2eb3836727ced1b5b74bd31daa28 Mon Sep 17 00:00:00 2001
 From: Sergei Trofimovich <slyfox@gentoo.org>
 Date: Tue, 20 Jul 2021 21:12:38 +0200
-Subject: [PATCH 4/6] Gentoo: add --with-extra-soversion-suffix= option
+Subject: [PATCH 3/6] Gentoo: add --with-extra-soversion-suffix= option
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
@@ -34,7 +34,7 @@ Ported to binutils 2.37 Andreas K. Hüttel <dilfridge@gentoo.org>
  4 files changed, 29 insertions(+)
 
 diff --git a/bfd/Makefile.am b/bfd/Makefile.am
-index ed2f701805d..dab3bfc8ed7 100644
+index 10dd765bec8..e3d97adfbb3 100644
 --- a/bfd/Makefile.am
 +++ b/bfd/Makefile.am
 @@ -59,6 +59,8 @@ bfdinclude_HEADERS += $(INCDIR)/plugin-api.h
@@ -46,7 +46,7 @@ index ed2f701805d..dab3bfc8ed7 100644
  # bfd.h goes here, for now
  BFD_H = bfd.h
  
-@@ -952,6 +954,9 @@ bfdver.h: $(srcdir)/version.h $(srcdir)/development.sh $(srcdir)/Makefile.in
+@@ -987,6 +989,9 @@ bfdver.h: $(srcdir)/version.h $(srcdir)/development.sh $(srcdir)/Makefile.in
  	  bfd_version_string="\"$(VERSION).$${bfd_version_date}\"" ;\
  	  bfd_soversion="$(VERSION).$${bfd_version_date}" ;\
  	fi ;\
@@ -57,10 +57,10 @@ index ed2f701805d..dab3bfc8ed7 100644
  	    -e "s,@bfd_version_string@,$$bfd_version_string," \
  	    -e "s,@bfd_version_package@,$$bfd_version_package," \
 diff --git a/bfd/Makefile.in b/bfd/Makefile.in
-index 12807d99760..572df143487 100644
+index f5313a2ad6f..c8cfc0474f2 100644
 --- a/bfd/Makefile.in
 +++ b/bfd/Makefile.in
-@@ -318,6 +318,7 @@ ECHO_T = @ECHO_T@
+@@ -319,6 +319,7 @@ ECHO_T = @ECHO_T@
  EGREP = @EGREP@
  EXEEXT = @EXEEXT@
  EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@
@@ -68,7 +68,7 @@ index 12807d99760..572df143487 100644
  FGREP = @FGREP@
  GENCAT = @GENCAT@
  GMSGFMT = @GMSGFMT@
-@@ -2063,6 +2064,9 @@ bfdver.h: $(srcdir)/version.h $(srcdir)/development.sh $(srcdir)/Makefile.in
+@@ -2104,6 +2105,9 @@ bfdver.h: $(srcdir)/version.h $(srcdir)/development.sh $(srcdir)/Makefile.in
  	  bfd_version_string="\"$(VERSION).$${bfd_version_date}\"" ;\
  	  bfd_soversion="$(VERSION).$${bfd_version_date}" ;\
  	fi ;\
@@ -79,7 +79,7 @@ index 12807d99760..572df143487 100644
  	    -e "s,@bfd_version_string@,$$bfd_version_string," \
  	    -e "s,@bfd_version_package@,$$bfd_version_package," \
 diff --git a/bfd/configure b/bfd/configure
-index 41586f00f93..f0acf160913 100755
+index b09702f26e1..7a7c1229c99 100755
 --- a/bfd/configure
 +++ b/bfd/configure
 @@ -696,6 +696,7 @@ WARN_CFLAGS
@@ -88,9 +88,9 @@ index 41586f00f93..f0acf160913 100755
  PKGVERSION
 +EXTRA_SOVERSION_SUFFIX
  DEBUGDIR
- PLUGINS_FALSE
- PLUGINS_TRUE
-@@ -835,6 +836,7 @@ enable_secureplt
+ ENABLE_BFD_64_BIT_FALSE
+ ENABLE_BFD_64_BIT_TRUE
+@@ -837,6 +838,7 @@ enable_secureplt
  enable_separate_code
  enable_leading_mingw64_underscores
  with_separate_debug_dir
@@ -98,7 +98,7 @@ index 41586f00f93..f0acf160913 100755
  with_pkgversion
  with_bugurl
  enable_werror
-@@ -1511,6 +1513,8 @@ Optional Packages:
+@@ -1513,6 +1515,8 @@ Optional Packages:
    --with-separate-debug-dir=DIR
                            Look for global separate debug info in DIR
                            [[default=LIBDIR/debug]]
@@ -107,7 +107,7 @@ index 41586f00f93..f0acf160913 100755
    --with-pkgversion=PKG   Use PKG in the version string in place of "GNU
                            Binutils"
    --with-bugurl=URL       Direct users to URL to report a bug
-@@ -11913,6 +11917,15 @@ fi
+@@ -12013,6 +12017,15 @@ fi
  
  
  
@@ -124,10 +124,10 @@ index 41586f00f93..f0acf160913 100755
  
  # Check whether --with-pkgversion was given.
 diff --git a/bfd/configure.ac b/bfd/configure.ac
-index fec067b2135..8c9ef9a04c0 100644
+index a9078965c40..3406c071fe7 100644
 --- a/bfd/configure.ac
 +++ b/bfd/configure.ac
-@@ -169,6 +169,13 @@ AC_ARG_WITH(separate-debug-dir,
+@@ -168,6 +168,13 @@ AC_ARG_WITH(separate-debug-dir,
  [DEBUGDIR="${withval}"])
  AC_SUBST(DEBUGDIR)
  
@@ -139,8 +139,8 @@ index fec067b2135..8c9ef9a04c0 100644
 +AC_SUBST(EXTRA_SOVERSION_SUFFIX)
 +
  ACX_PKGVERSION([GNU Binutils])
- ACX_BUGURL([https://www.sourceware.org/bugzilla/])
+ ACX_BUGURL([https://sourceware.org/bugzilla/])
  
 -- 
-2.31.1
+2.34.1
 

diff --git a/9999/0003-Gentoo-opcodes-link-against-libbfd.la-for-rpath-deps.patch b/9999/0003-Gentoo-opcodes-link-against-libbfd.la-for-rpath-deps.patch
deleted file mode 100644
index f3c9f8e..0000000
--- a/9999/0003-Gentoo-opcodes-link-against-libbfd.la-for-rpath-deps.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From c55536c61ec7e4c2e983e15f51f56f7a7c340889 Mon Sep 17 00:00:00 2001
-From: Mike Frysinger <vapier@gentoo.org>
-Date: Tue, 5 Jul 2016 20:24:00 +0545
-Subject: [PATCH 3/6] Gentoo: opcodes: link against libbfd.la for rpath deps
-
-The reason opcodes doesn't link against libbfd.la is to workaround a
-libtool bug where it uses installed -L paths ahead of DESTDIR paths.
-The downside is that the library itself lacks rpath tags to find the
-right version of libbfd.so.
-
-Since Gentoo has patched the libtool bug for a while, we don't need
-the workaround.  Use the .la file so we get the rpath tags.
-
-URL: https://bugs.gentoo.org/563934
-(cherry picked from commit 662586237b0b00ee881e79b56f6234ff36e8bfe6)
----
- opcodes/configure    | 2 +-
- opcodes/configure.ac | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/opcodes/configure b/opcodes/configure
-index a3da5987f1b..22a05245286 100755
---- a/opcodes/configure
-+++ b/opcodes/configure
-@@ -12142,7 +12142,7 @@ if test "$enable_shared" = "yes"; then
-           SHARED_LIBADD="-Wl,`pwd`/../bfd/.libs/libbfd.sl ${SHARED_LIBADD}"
- 	  ;;
- 	*)
--          SHARED_LIBADD="-Wl,`pwd`/../bfd/.libs/libbfd.so ${SHARED_LIBADD}"
-+          SHARED_LIBADD="../bfd/libbfd.la ${SHARED_LIBADD}"
- 	  ;;
-       esac
-       SHARED_DEPENDENCIES="../bfd/libbfd.la"
-diff --git a/opcodes/configure.ac b/opcodes/configure.ac
-index e564f067334..fb6254cd69d 100644
---- a/opcodes/configure.ac
-+++ b/opcodes/configure.ac
-@@ -203,7 +203,7 @@ if test "$enable_shared" = "yes"; then
-           SHARED_LIBADD="-Wl,`pwd`/../bfd/.libs/libbfd.sl ${SHARED_LIBADD}"
- 	  ;;
- 	*)
--          SHARED_LIBADD="-Wl,`pwd`/../bfd/.libs/libbfd.so ${SHARED_LIBADD}"
-+          SHARED_LIBADD="../bfd/libbfd.la ${SHARED_LIBADD}"
- 	  ;;
-       esac
-       SHARED_DEPENDENCIES="../bfd/libbfd.la"
--- 
-2.31.1
-

diff --git a/9999/0006-Gentoo-Pass-hash-style-sysv.patch b/9999/0004-Gentoo-Pass-hash-style-sysv-to-ld-in-the-testsuite.patch
similarity index 84%
rename from 9999/0006-Gentoo-Pass-hash-style-sysv.patch
rename to 9999/0004-Gentoo-Pass-hash-style-sysv-to-ld-in-the-testsuite.patch
index 41b6a33..2ac5053 100644
--- a/9999/0006-Gentoo-Pass-hash-style-sysv.patch
+++ b/9999/0004-Gentoo-Pass-hash-style-sysv-to-ld-in-the-testsuite.patch
@@ -1,7 +1,7 @@
-From 905bf3c180f4f7fd07024eb9ff7851898593f3f8 Mon Sep 17 00:00:00 2001
+From 6e5bb8fa8e5f409e12098a922de72f6bdcc99603 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
 Date: Tue, 20 Jul 2021 21:15:24 +0200
-Subject: [PATCH 6/6] Gentoo: Pass --hash-style=sysv to ld in the testsuite
+Subject: [PATCH 4/6] Gentoo: Pass --hash-style=sysv to ld in the testsuite
 
 ---
  binutils/testsuite/lib/binutils-common.exp |  2 +-
@@ -9,10 +9,10 @@ Subject: [PATCH 6/6] Gentoo: Pass --hash-style=sysv to ld in the testsuite
  2 files changed, 15 insertions(+), 3 deletions(-)
 
 diff --git a/binutils/testsuite/lib/binutils-common.exp b/binutils/testsuite/lib/binutils-common.exp
-index 59e25df99b0..401a05b5c32 100644
+index 93603b0be68..83ae1307f2a 100644
 --- a/binutils/testsuite/lib/binutils-common.exp
 +++ b/binutils/testsuite/lib/binutils-common.exp
-@@ -1279,7 +1279,7 @@ proc run_dump_test { name {extra_options {}} } {
+@@ -1303,7 +1303,7 @@ proc run_dump_test { name {extra_options {}} } {
  
  	    # Add -L$srcdir/$subdir so that the linker command can use
  	    # linker scripts in the source directory.
@@ -22,10 +22,10 @@ index 59e25df99b0..401a05b5c32 100644
  
  	    # If needed then check for, or add a -Map option.
 diff --git a/ld/testsuite/lib/ld-lib.exp b/ld/testsuite/lib/ld-lib.exp
-index 8fd14afc63e..adbeaa3bd08 100644
+index 5c7771f7221..ff9ee6a425c 100644
 --- a/ld/testsuite/lib/ld-lib.exp
 +++ b/ld/testsuite/lib/ld-lib.exp
-@@ -167,7 +167,7 @@ proc default_ld_relocate { ld target objects } {
+@@ -171,7 +171,7 @@ proc default_ld_relocate { ld target objects } {
      global HOSTING_EMU
  
      remote_file host delete $target
@@ -34,7 +34,7 @@ index 8fd14afc63e..adbeaa3bd08 100644
  }
  
  # Check to see if ld is being invoked with a non-endian output format
-@@ -198,8 +198,20 @@ proc default_ld_link { ld target objects } {
+@@ -202,8 +202,20 @@ proc default_ld_link { ld target objects } {
  	set flags [big_or_little_endian]
      }
  
@@ -57,5 +57,5 @@ index 8fd14afc63e..adbeaa3bd08 100644
  
      # We don't care if we get a warning about a non-existent start
 -- 
-2.31.1
+2.34.1
 

diff --git a/9999/0007-Give-also-libctf-optionally-a-gentoo-specific-sovers.patch b/9999/0005-Gentoo-Give-also-libctf-optionally-a-gentoo-specific.patch
similarity index 68%
rename from 9999/0007-Give-also-libctf-optionally-a-gentoo-specific-sovers.patch
rename to 9999/0005-Gentoo-Give-also-libctf-optionally-a-gentoo-specific.patch
index 6f1c6b3..871812a 100644
--- a/9999/0007-Give-also-libctf-optionally-a-gentoo-specific-sovers.patch
+++ b/9999/0005-Gentoo-Give-also-libctf-optionally-a-gentoo-specific.patch
@@ -1,29 +1,31 @@
-From d3cd41f5c7e405a8db5e85a7be9dfc42d44ef1b8 Mon Sep 17 00:00:00 2001
+From f4db43e58d2f3a6e66b15ff2b25ac6850199399b Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
 Date: Sat, 24 Jul 2021 15:20:16 +0200
-Subject: [PATCH 1/2] Give also libctf optionally a gentoo-specific soversion
+Subject: [PATCH 5/6] Gentoo: Give also libctf optionally a gentoo-specific
+ soversion
 
 ---
- libctf/Makefile.am  | 13 ++++++++++++-
- libctf/Makefile.in  |  8 +++++++-
- libctf/configure    | 31 +++++++++++++++++++++++++++++--
- libctf/configure.ac |  8 ++++++++
- 4 files changed, 56 insertions(+), 4 deletions(-)
+ libctf/Makefile.am  | 14 +++++++++++++-
+ libctf/Makefile.in  |  9 ++++++++-
+ libctf/configure    | 35 +++++++++++++++++++++++++++++++++--
+ libctf/configure.ac | 10 ++++++++++
+ 4 files changed, 64 insertions(+), 4 deletions(-)
 
 diff --git a/libctf/Makefile.am b/libctf/Makefile.am
-index e586d25fb37..eabc7fa8394 100644
+index 27e90f0ba36..4990a20efa3 100644
 --- a/libctf/Makefile.am
 +++ b/libctf/Makefile.am
-@@ -21,6 +21,8 @@ ACLOCAL_AMFLAGS = -I .. -I ../config -I ../bfd
- 
- AUTOMAKE_OPTIONS = dejagnu foreign no-texinfo.tex
+@@ -26,6 +26,9 @@ info_TEXINFOS =
+ DISTCLEANFILES =
+ MAINTAINERCLEANFILES =
  
 +EXTRA_SOVERSION_SUFFIX = @EXTRA_SOVERSION_SUFFIX@
++BFD_VERSION = @BFD_VERSION@
 +
  # This is where we get zlib from.  zlibdir is -L../zlib and zlibinc is
  # -I../zlib, unless we were configured with --with-system-zlib, in which
  # case both are empty.
-@@ -41,8 +43,17 @@ include_HEADERS =
+@@ -46,8 +49,17 @@ include_HEADERS =
  noinst_LTLIBRARIES = libctf.la libctf-nobfd.la
  endif
  
@@ -31,22 +33,30 @@ index e586d25fb37..eabc7fa8394 100644
 +# a supplement to the soversion. So we need to switch tracks and be creative.
 +
 +if HAVE_EXTRA_SOVERSION_SUFFIX
-+gentoo_ctf_soversion = 0.0.0.$(EXTRA_SOVERSION_SUFFIX)
++gentoo_ctf_soversion = "$(BFD_VERSION).$(EXTRA_SOVERSION_SUFFIX)"
 +else
 +gentoo_ctf_soversion = 0.0.0
 +endif
 +
  libctf_nobfd_la_LIBADD = @CTF_LIBADD@ $(ZLIB)
--libctf_nobfd_la_LDFLAGS = -version-info 0:0:0 @SHARED_LDFLAGS@ @VERSION_FLAGS@
-+libctf_nobfd_la_LDFLAGS = -release $(gentoo_ctf_soversion) @SHARED_LDFLAGS@ @VERSION_FLAGS@
+-libctf_ldflags_nover = -version-info 0:0:0 @SHARED_LDFLAGS@
++libctf_ldflags_nover = -release $(gentoo_ctf_soversion) @SHARED_LDFLAGS@
+ libctf_nobfd_la_LDFLAGS = $(libctf_ldflags_nover) @VERSION_FLAGS_NOBFD@
  libctf_nobfd_la_CPPFLAGS = $(AM_CPPFLAGS) -DNOBFD=1
  libctf_nobfd_la_SOURCES = ctf-archive.c ctf-dump.c ctf-create.c ctf-decl.c ctf-error.c \
- 			  ctf-hash.c ctf-labels.c ctf-dedup.c ctf-link.c ctf-lookup.c \
 diff --git a/libctf/Makefile.in b/libctf/Makefile.in
-index 5cfa100f9cc..b528781af97 100644
+index 3b5ab73324e..10029107a05 100644
 --- a/libctf/Makefile.in
 +++ b/libctf/Makefile.in
-@@ -338,6 +338,7 @@ EXEEXT = @EXEEXT@
+@@ -381,6 +381,7 @@ AUTOCONF = @AUTOCONF@
+ AUTOHEADER = @AUTOHEADER@
+ AUTOMAKE = @AUTOMAKE@
+ AWK = @AWK@
++BFD_VERSION = @BFD_VERSION@
+ CATALOGS = @CATALOGS@
+ CATOBJEXT = @CATOBJEXT@
+ CC = @CC@
+@@ -403,6 +404,7 @@ EXEEXT = @EXEEXT@
  
  # Setup the testing framework, if you have one
  EXPECT = expect
@@ -54,7 +64,7 @@ index 5cfa100f9cc..b528781af97 100644
  FGREP = @FGREP@
  GENCAT = @GENCAT@
  GMSGFMT = @GMSGFMT@
-@@ -469,8 +470,13 @@ AM_CFLAGS = -std=gnu99 @ac_libctf_warn_cflags@ @warn@ @c_warn@ @WARN_PEDANTIC@ @
+@@ -540,8 +542,13 @@ AM_CFLAGS = -std=gnu99 @ac_libctf_warn_cflags@ @warn@ @c_warn@ @WARN_PEDANTIC@ @
  @INSTALL_LIBBFD_FALSE@include_HEADERS = 
  @INSTALL_LIBBFD_TRUE@include_HEADERS = $(INCDIR)/ctf.h $(INCDIR)/ctf-api.h
  @INSTALL_LIBBFD_FALSE@noinst_LTLIBRARIES = libctf.la libctf-nobfd.la
@@ -62,28 +72,29 @@ index 5cfa100f9cc..b528781af97 100644
 +
 +# libctf by default uses libtool versioning. Unfortunately that keeps us from adding
 +# a supplement to the soversion. So we need to switch tracks and be creative.
-+@HAVE_EXTRA_SOVERSION_SUFFIX_TRUE@gentoo_ctf_soversion = 0.0.0.$(EXTRA_SOVERSION_SUFFIX)
++@HAVE_EXTRA_SOVERSION_SUFFIX_TRUE@gentoo_ctf_soversion = "$(BFD_VERSION).$(EXTRA_SOVERSION_SUFFIX)"
  libctf_nobfd_la_LIBADD = @CTF_LIBADD@ $(ZLIB)
--libctf_nobfd_la_LDFLAGS = -version-info 0:0:0 @SHARED_LDFLAGS@ @VERSION_FLAGS@
-+libctf_nobfd_la_LDFLAGS = -release $(gentoo_ctf_soversion) @SHARED_LDFLAGS@ @VERSION_FLAGS@
+-libctf_ldflags_nover = -version-info 0:0:0 @SHARED_LDFLAGS@
++libctf_ldflags_nover = -release $(gentoo_ctf_soversion) @SHARED_LDFLAGS@
+ libctf_nobfd_la_LDFLAGS = $(libctf_ldflags_nover) @VERSION_FLAGS_NOBFD@
  libctf_nobfd_la_CPPFLAGS = $(AM_CPPFLAGS) -DNOBFD=1
  libctf_nobfd_la_SOURCES = ctf-archive.c ctf-dump.c ctf-create.c \
- 	ctf-decl.c ctf-error.c ctf-hash.c ctf-labels.c ctf-dedup.c \
 diff --git a/libctf/configure b/libctf/configure
-index 82bcf13a606..e961f637a69 100755
+index c56ac218213..623e71477b3 100755
 --- a/libctf/configure
 +++ b/libctf/configure
-@@ -643,6 +643,9 @@ CTF_LIBADD
- SHARED_LDFLAGS
+@@ -646,6 +646,10 @@ BUILD_INFO_FALSE
+ BUILD_INFO_TRUE
  NEED_CTF_QSORT_R_FALSE
  NEED_CTF_QSORT_R_TRUE
++BFD_VERSION
 +HAVE_EXTRA_SOVERSION_SUFFIX_FALSE
 +HAVE_EXTRA_SOVERSION_SUFFIX_TRUE
 +EXTRA_SOVERSION_SUFFIX
  ENABLE_LIBCTF_HASH_DEBUGGING_FALSE
  ENABLE_LIBCTF_HASH_DEBUGGING_TRUE
  zlibinc
-@@ -804,6 +807,7 @@ enable_maintainer_mode
+@@ -807,6 +811,7 @@ enable_maintainer_mode
  enable_install_libbfd
  with_system_zlib
  enable_libctf_hash_debugging
@@ -91,7 +102,7 @@ index 82bcf13a606..e961f637a69 100755
  '
        ac_precious_vars='build_alias
  host_alias
-@@ -1461,6 +1465,8 @@ Optional Packages:
+@@ -1464,6 +1469,8 @@ Optional Packages:
                            both]
    --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
    --with-system-zlib      use installed libz
@@ -100,25 +111,25 @@ index 82bcf13a606..e961f637a69 100755
  
  Some influential environment variables:
    CC          C compiler command
-@@ -11586,7 +11592,7 @@ else
+@@ -11629,7 +11636,7 @@ else
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
--#line 11589 "configure"
-+#line 11607 "configure"
+-#line 11632 "configure"
++#line 11639 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
-@@ -11692,7 +11698,7 @@ else
+@@ -11735,7 +11742,7 @@ else
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
--#line 11695 "configure"
-+#line 11713 "configure"
+-#line 11738 "configure"
++#line 11745 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
-@@ -12899,6 +12905,23 @@ else
+@@ -12942,6 +12949,26 @@ else
  fi
  
  
@@ -138,11 +149,14 @@ index 82bcf13a606..e961f637a69 100755
 +  HAVE_EXTRA_SOVERSION_SUFFIX_FALSE=
 +fi
 +
++
++BFD_VERSION=$(${srcdir}/../bfd/configure --version | sed -n -e '1s,.* ,,p')
++
 +
  # Similar to GDB_AC_CHECK_BFD.
  OLD_CFLAGS=$CFLAGS
  OLD_LDFLAGS=$LDFLAGS
-@@ -13657,6 +13680,10 @@ if test -z "${ENABLE_LIBCTF_HASH_DEBUGGING_TRUE}" && test -z "${ENABLE_LIBCTF_HA
+@@ -13834,6 +13861,10 @@ if test -z "${ENABLE_LIBCTF_HASH_DEBUGGING_TRUE}" && test -z "${ENABLE_LIBCTF_HA
    as_fn_error $? "conditional \"ENABLE_LIBCTF_HASH_DEBUGGING\" was never defined.
  Usually this means the macro was only invoked conditionally." "$LINENO" 5
  fi
@@ -154,10 +168,10 @@ index 82bcf13a606..e961f637a69 100755
  if test -z "${NEED_CTF_QSORT_R_TRUE}" && test -z "${NEED_CTF_QSORT_R_FALSE}"; then
    as_fn_error $? "conditional \"NEED_CTF_QSORT_R\" was never defined.
 diff --git a/libctf/configure.ac b/libctf/configure.ac
-index 80644b89d67..f7e6180afd8 100644
+index 4996edd5b70..103fc8b9d33 100644
 --- a/libctf/configure.ac
 +++ b/libctf/configure.ac
-@@ -77,6 +77,14 @@ if test "${enable_libctf_hash_debugging}" = yes; then
+@@ -78,6 +78,16 @@ if test "${enable_libctf_hash_debugging}" = yes; then
  fi
  AM_CONDITIONAL(ENABLE_LIBCTF_HASH_DEBUGGING, test "${enable_libctf_hash_debugging}" = yes)
  
@@ -168,10 +182,12 @@ index 80644b89d67..f7e6180afd8 100644
 +[EXTRA_SOVERSION_SUFFIX="${withval}"])
 +AC_SUBST(EXTRA_SOVERSION_SUFFIX)
 +AM_CONDITIONAL([HAVE_EXTRA_SOVERSION_SUFFIX], [test -n "${with_extra_soversion_suffix}"])
++
++AC_SUBST(BFD_VERSION, $(${srcdir}/../bfd/configure --version | sed -n -e '1s,.* ,,p'), [Version of the accompanying bfd linker])
 +
  # Similar to GDB_AC_CHECK_BFD.
  OLD_CFLAGS=$CFLAGS
  OLD_LDFLAGS=$LDFLAGS
 -- 
-2.31.1
+2.34.1
 

diff --git a/9999/0020-XFAIL-15-broken-ld.gold-tests.patch b/9999/0006-Gentoo-XFAIL-15-broken-ld.gold-tests.patch
similarity index 95%
rename from 9999/0020-XFAIL-15-broken-ld.gold-tests.patch
rename to 9999/0006-Gentoo-XFAIL-15-broken-ld.gold-tests.patch
index 777390f..b9435e9 100644
--- a/9999/0020-XFAIL-15-broken-ld.gold-tests.patch
+++ b/9999/0006-Gentoo-XFAIL-15-broken-ld.gold-tests.patch
@@ -1,7 +1,7 @@
-From 6f9a3d6ffa2bcf91bc047055848591dab77c0f11 Mon Sep 17 00:00:00 2001
+From 66686e75515c742e573d25b74ce324e3d1acad08 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
 Date: Sat, 31 Jul 2021 01:18:18 +0200
-Subject: [PATCH] Gentoo: XFAIL 15 broken ld.gold tests
+Subject: [PATCH 6/6] Gentoo: XFAIL 15 broken ld.gold tests
 
 It seems like either the tests or ld.gold in general cannot handle
 compilers built with --enable-default-pie. No fix yet, so let's ignore
@@ -73,5 +73,5 @@ index 7b4b7832d38..765c2b73140 100644
  AUTOMAKE_OPTIONS = foreign -Wno-portability
  
 -- 
-2.31.1
+2.34.1
 

diff --git a/9999/0008-If-we-use-a-soversion-suffix-then-we-also-use-the-bd.patch b/9999/0008-If-we-use-a-soversion-suffix-then-we-also-use-the-bd.patch
deleted file mode 100644
index b88f50e..0000000
--- a/9999/0008-If-we-use-a-soversion-suffix-then-we-also-use-the-bd.patch
+++ /dev/null
@@ -1,111 +0,0 @@
-From 235448cc5c53641417e17fd39ced95a21053c8ca Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
-Date: Sat, 24 Jul 2021 19:25:32 +0200
-Subject: [PATCH 2/2] If we use a soversion suffix, then we also use the bdf
- version as soversion
-
----
- libctf/Makefile.am  | 3 ++-
- libctf/Makefile.in  | 3 ++-
- libctf/configure    | 8 ++++++--
- libctf/configure.ac | 2 ++
- 4 files changed, 12 insertions(+), 4 deletions(-)
-
-diff --git a/libctf/Makefile.am b/libctf/Makefile.am
-index eabc7fa8394..e1304e8e89b 100644
---- a/libctf/Makefile.am
-+++ b/libctf/Makefile.am
-@@ -22,6 +22,7 @@ ACLOCAL_AMFLAGS = -I .. -I ../config -I ../bfd
- AUTOMAKE_OPTIONS = dejagnu foreign no-texinfo.tex
- 
- EXTRA_SOVERSION_SUFFIX = @EXTRA_SOVERSION_SUFFIX@
-+BFD_VERSION = @BFD_VERSION@
- 
- # This is where we get zlib from.  zlibdir is -L../zlib and zlibinc is
- # -I../zlib, unless we were configured with --with-system-zlib, in which
-@@ -47,7 +48,7 @@ endif
- # a supplement to the soversion. So we need to switch tracks and be creative.
- 
- if HAVE_EXTRA_SOVERSION_SUFFIX
--gentoo_ctf_soversion = 0.0.0.$(EXTRA_SOVERSION_SUFFIX)
-+gentoo_ctf_soversion = "$(BFD_VERSION).$(EXTRA_SOVERSION_SUFFIX)"
- else
- gentoo_ctf_soversion = 0.0.0
- endif
-diff --git a/libctf/Makefile.in b/libctf/Makefile.in
-index b528781af97..18d482411e8 100644
---- a/libctf/Makefile.in
-+++ b/libctf/Makefile.in
-@@ -316,6 +316,7 @@ AUTOCONF = @AUTOCONF@
- AUTOHEADER = @AUTOHEADER@
- AUTOMAKE = @AUTOMAKE@
- AWK = @AWK@
-+BFD_VERSION = @BFD_VERSION@
- CATALOGS = @CATALOGS@
- CATOBJEXT = @CATOBJEXT@
- CC = @CC@
-@@ -474,7 +475,7 @@ AM_CFLAGS = -std=gnu99 @ac_libctf_warn_cflags@ @warn@ @c_warn@ @WARN_PEDANTIC@ @
- 
- # libctf by default uses libtool versioning. Unfortunately that keeps us from adding
- # a supplement to the soversion. So we need to switch tracks and be creative.
--@HAVE_EXTRA_SOVERSION_SUFFIX_TRUE@gentoo_ctf_soversion = 0.0.0.$(EXTRA_SOVERSION_SUFFIX)
-+@HAVE_EXTRA_SOVERSION_SUFFIX_TRUE@gentoo_ctf_soversion = "$(BFD_VERSION).$(EXTRA_SOVERSION_SUFFIX)"
- libctf_nobfd_la_LIBADD = @CTF_LIBADD@ $(ZLIB)
- libctf_nobfd_la_LDFLAGS = -release $(gentoo_ctf_soversion) @SHARED_LDFLAGS@ @VERSION_FLAGS@
- libctf_nobfd_la_CPPFLAGS = $(AM_CPPFLAGS) -DNOBFD=1
-diff --git a/libctf/configure b/libctf/configure
-index e961f637a69..520d3a5cb3e 100755
---- a/libctf/configure
-+++ b/libctf/configure
-@@ -643,6 +643,7 @@ CTF_LIBADD
- SHARED_LDFLAGS
- NEED_CTF_QSORT_R_FALSE
- NEED_CTF_QSORT_R_TRUE
-+BFD_VERSION
- HAVE_EXTRA_SOVERSION_SUFFIX_FALSE
- HAVE_EXTRA_SOVERSION_SUFFIX_TRUE
- EXTRA_SOVERSION_SUFFIX
-@@ -11592,7 +11593,7 @@ else
-   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-   lt_status=$lt_dlunknown
-   cat > conftest.$ac_ext <<_LT_EOF
--#line 11607 "configure"
-+#line 11608 "configure"
- #include "confdefs.h"
- 
- #if HAVE_DLFCN_H
-@@ -11698,7 +11699,7 @@ else
-   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-   lt_status=$lt_dlunknown
-   cat > conftest.$ac_ext <<_LT_EOF
--#line 11713 "configure"
-+#line 11714 "configure"
- #include "confdefs.h"
- 
- #if HAVE_DLFCN_H
-@@ -12922,6 +12923,9 @@ else
- fi
- 
- 
-+BFD_VERSION=$(${srcdir}/../bfd/configure --version | sed -n -e '1s,.* ,,p')
-+
-+
- # Similar to GDB_AC_CHECK_BFD.
- OLD_CFLAGS=$CFLAGS
- OLD_LDFLAGS=$LDFLAGS
-diff --git a/libctf/configure.ac b/libctf/configure.ac
-index f7e6180afd8..5306e5499ec 100644
---- a/libctf/configure.ac
-+++ b/libctf/configure.ac
-@@ -85,6 +85,8 @@ AC_ARG_WITH(extra-soversion-suffix,
- AC_SUBST(EXTRA_SOVERSION_SUFFIX)
- AM_CONDITIONAL([HAVE_EXTRA_SOVERSION_SUFFIX], [test -n "${with_extra_soversion_suffix}"])
- 
-+AC_SUBST(BFD_VERSION, $(${srcdir}/../bfd/configure --version | sed -n -e '1s,.* ,,p'), [Version of the accompanying bfd linker])
-+
- # Similar to GDB_AC_CHECK_BFD.
- OLD_CFLAGS=$CFLAGS
- OLD_LDFLAGS=$LDFLAGS
--- 
-2.31.1
-


^ permalink raw reply related	[flat|nested] 39+ messages in thread

* [gentoo-commits] proj/toolchain/binutils-patches:master commit in: 9999/
@ 2022-07-29  7:55 WANG Xuerui
  0 siblings, 0 replies; 39+ messages in thread
From: WANG Xuerui @ 2022-07-29  7:55 UTC (permalink / raw
  To: gentoo-commits

commit:     2fcd49180d8c27c14b56a5fb9fee3c26e4317dac
Author:     WANG Xuerui <xen0n <AT> gentoo <DOT> org>
AuthorDate: Fri Jul 29 07:54:56 2022 +0000
Commit:     WANG Xuerui <xen0n <AT> gentoo <DOT> org>
CommitDate: Fri Jul 29 07:54:56 2022 +0000
URL:        https://gitweb.gentoo.org/proj/toolchain/binutils-patches.git/commit/?id=2fcd4918

Update patches for binutils 2.39

Signed-off-by: WANG Xuerui <xen0n <AT> gentoo.org>

 ...-ld-add-support-for-poisoned-system-direc.patch | 72 ++++++++++++++--------
 ...iberty-install-PIC-version-of-libiberty.a.patch |  4 +-
 ...oo-add-with-extra-soversion-suffix-option.patch | 30 ++++-----
 ...ss-hash-style-sysv-to-ld-in-the-testsuite.patch | 10 +--
 ...-also-libctf-optionally-a-gentoo-specific.patch | 24 ++++----
 ...0006-Gentoo-XFAIL-15-broken-ld.gold-tests.patch |  4 +-
 6 files changed, 82 insertions(+), 62 deletions(-)

diff --git a/9999/0001-Gentoo-gold-ld-add-support-for-poisoned-system-direc.patch b/9999/0001-Gentoo-gold-ld-add-support-for-poisoned-system-direc.patch
index 0dc4cf1..8e2e947 100644
--- a/9999/0001-Gentoo-gold-ld-add-support-for-poisoned-system-direc.patch
+++ b/9999/0001-Gentoo-gold-ld-add-support-for-poisoned-system-direc.patch
@@ -1,4 +1,4 @@
-From 322deede0713506f899ee7f284a7c82ba1ec1cf7 Mon Sep 17 00:00:00 2001
+From 6ad35e463cbd086b4d4e7bb5aca1da6b73e614c8 Mon Sep 17 00:00:00 2001
 From: Mike Frysinger <vapier@gentoo.org>
 Date: Tue, 20 Jul 2021 21:08:31 +0200
 Subject: [PATCH 1/6] Gentoo: gold/ld: add support for poisoned system
@@ -27,12 +27,13 @@ TEST=x86_64-cros-linux-gnu-ld throws warnings when using -L/lib (gold & bfd)
 Reviewed-on: https://chromium-review.googlesource.com/272083
 (cherry picked from commit f92dbf35c00ab13cee36f6be8ae5ca46454d9000)
 
-Ported to binutils 2.37 Andreas K. Hütte <dilfridge@gentoo.org>
+Ported to binutils 2.37 by Andreas K. Hüttel <dilfridge@gentoo.org>
+Ported to binutils 2.39 by WANG Xuerui <xen0n@gentoo.org>
 ---
  gold/options.cc | 33 +++++++++++++++++++++++++++++++++
  gold/options.h  |  7 +++++++
  ld/config.in    |  3 +++
- ld/configure    | 14 ++++++++++++++
+ ld/configure    | 20 ++++++++++++++++++--
  ld/configure.ac | 10 ++++++++++
  ld/ld.h         |  7 +++++++
  ld/ld.texi      | 18 ++++++++++++++++++
@@ -40,7 +41,7 @@ Ported to binutils 2.37 Andreas K. Hütte <dilfridge@gentoo.org>
  ld/ldlex.h      |  3 +++
  ld/ldmain.c     |  7 +++++++
  ld/lexsup.c     | 24 ++++++++++++++++++++++++
- 11 files changed, 146 insertions(+)
+ 11 files changed, 150 insertions(+), 2 deletions(-)
 
 diff --git a/gold/options.cc b/gold/options.cc
 index 04be98a3e39..64439f8af7a 100644
@@ -105,10 +106,10 @@ index 9509a445e8e..a3d76b294cd 100644
  	      N_("Warn when skipping an incompatible library"),
  	      N_("Don't warn when skipping an incompatible library"));
 diff --git a/ld/config.in b/ld/config.in
-index 26d55a00d47..ffad464783c 100644
+index 0ccd79d59cd..5e39814bce0 100644
 --- a/ld/config.in
 +++ b/ld/config.in
-@@ -43,6 +43,9 @@
+@@ -55,6 +55,9 @@
     language is requested. */
  #undef ENABLE_NLS
  
@@ -119,10 +120,10 @@ index 26d55a00d47..ffad464783c 100644
  #undef EXTRA_SHLIB_EXTENSION
  
 diff --git a/ld/configure b/ld/configure
-index f5c329c1f12..41ec6ca73ac 100755
+index 1c2b64870b1..46b5789c77e 100755
 --- a/ld/configure
 +++ b/ld/configure
-@@ -831,6 +831,7 @@ with_lib_path
+@@ -836,6 +836,7 @@ with_lib_path
  enable_targets
  enable_64_bit_bfd
  with_sysroot
@@ -130,7 +131,7 @@ index f5c329c1f12..41ec6ca73ac 100755
  enable_gold
  enable_got
  enable_compressed_debug_sections
-@@ -1500,6 +1501,8 @@ Optional Features:
+@@ -1514,6 +1515,8 @@ Optional Features:
    --enable-checking       enable run-time checks
    --enable-targets        alternative target configurations
    --enable-64-bit-bfd     64-bit support (on hosts with narrower word sizes)
@@ -139,8 +140,26 @@ index f5c329c1f12..41ec6ca73ac 100755
    --enable-gold[=ARG]     build gold [ARG={default,yes,no}]
    --enable-got=<type>     GOT handling scheme (target, single, negative,
                            multigot)
-@@ -15333,7 +15336,18 @@ else
- fi
+@@ -11491,7 +11494,7 @@ else
+   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+   lt_status=$lt_dlunknown
+   cat > conftest.$ac_ext <<_LT_EOF
+-#line 11494 "configure"
++#line 11497 "configure"
+ #include "confdefs.h"
+ 
+ #if HAVE_DLFCN_H
+@@ -11597,7 +11600,7 @@ else
+   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+   lt_status=$lt_dlunknown
+   cat > conftest.$ac_ext <<_LT_EOF
+-#line 11600 "configure"
++#line 11603 "configure"
+ #include "confdefs.h"
+ 
+ #if HAVE_DLFCN_H
+@@ -15349,6 +15352,19 @@ fi
+ 
  
  
 +# Check whether --enable-poison-system-directories was given.
@@ -151,15 +170,16 @@ index f5c329c1f12..41ec6ca73ac 100755
 +fi
 +
 +if test "x${enable_poison_system_directories}" = "xyes"; then
- 
++
 +$as_echo "#define ENABLE_POISON_SYSTEM_DIRECTORIES 1" >>confdefs.h
 +
 +fi
- 
- # Check whether --enable-got was given.
- if test "${enable_got+set}" = set; then :
++
+ # Check whether --enable-gold was given.
+ if test "${enable_gold+set}" = set; then :
+   enableval=$enable_gold; case "${enableval}" in
 diff --git a/ld/configure.ac b/ld/configure.ac
-index 7f4cff079b7..57d1abff870 100644
+index eb55904c090..0844c2364c5 100644
 --- a/ld/configure.ac
 +++ b/ld/configure.ac
 @@ -102,6 +102,16 @@ AC_SUBST(use_sysroot)
@@ -198,13 +218,13 @@ index f3086bf30de..90cf1ca51e5 100644
    enum endian_enum endian;
  
 diff --git a/ld/ld.texi b/ld/ld.texi
-index fc75e9b3625..f7d46117bab 100644
+index eabbec8faa9..45f4858526c 100644
 --- a/ld/ld.texi
 +++ b/ld/ld.texi
-@@ -2892,6 +2892,24 @@ string identifying the original linked file does not change.
- 
- Passing @code{none} for @var{style} disables the setting from any
- @code{--build-id} options earlier on the command line.
+@@ -2947,6 +2947,24 @@ creation of the metadata note, if one had been enabled by an earlier
+ occurrence of the --package-metdata option.
+ If the linker has been built with libjansson, then the JSON string
+ will be validated.
 +
 +@kindex --warn-poison-system-directories
 +@item --warn-poison-system-directories
@@ -258,7 +278,7 @@ index 731ae5f7aed..6b67e29041b 100644
  
  /* Try to open a BFD for a lang_input_statement.  */
 diff --git a/ld/ldlex.h b/ld/ldlex.h
-index bc58fea73cc..cf1b015a420 100644
+index 57ade1f754b..b35a6122e09 100644
 --- a/ld/ldlex.h
 +++ b/ld/ldlex.h
 @@ -149,6 +149,9 @@ enum option_values
@@ -290,10 +310,10 @@ index ea72b14a301..706ec9ce26e 100644
    /* We initialize DEMANGLING based on the environment variable
       COLLECT_NO_DEMANGLE.  The gcc collect2 program will demangle the
 diff --git a/ld/lexsup.c b/ld/lexsup.c
-index 5acc47ed5a0..e78df2daf29 100644
+index 9225f71b3ce..db5b170bc7c 100644
 --- a/ld/lexsup.c
 +++ b/ld/lexsup.c
-@@ -571,6 +571,18 @@ static const struct ld_option ld_options[] =
+@@ -579,6 +579,18 @@ static const struct ld_option ld_options[] =
      OPTION_IGNORE_UNRESOLVED_SYMBOL},
      '\0', N_("SYMBOL"),
      N_("Unresolved SYMBOL will not cause an error or warning"), TWO_DASHES },
@@ -312,7 +332,7 @@ index 5acc47ed5a0..e78df2daf29 100644
    { {"push-state", no_argument, NULL, OPTION_PUSH_STATE},
      '\0', NULL, N_("Push state of flags governing input file handling"),
      TWO_DASHES },
-@@ -1659,6 +1671,18 @@ parse_args (unsigned argc, char **argv)
+@@ -1679,6 +1691,18 @@ parse_args (unsigned argc, char **argv)
  	  }
  	  break;
  
@@ -332,5 +352,5 @@ index 5acc47ed5a0..e78df2daf29 100644
  	  input_flags.pushed = xmemdup (&input_flags,
  					sizeof (input_flags),
 -- 
-2.34.1
+2.35.1
 

diff --git a/9999/0002-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch b/9999/0002-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch
index 72b99c0..34462cc 100644
--- a/9999/0002-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch
+++ b/9999/0002-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch
@@ -1,4 +1,4 @@
-From 887d52771263fc6b8260b873e104bc57d54b3f5c Mon Sep 17 00:00:00 2001
+From 4bd606f5945ea94b1ea0db8fba206cfe67959cde Mon Sep 17 00:00:00 2001
 From: Mike Frysinger <vapier@gentoo.org>
 Date: Fri, 7 Jan 2005 00:15:53 -0500
 Subject: [PATCH 2/6] Gentoo: libiberty: install PIC version of libiberty.a
@@ -30,5 +30,5 @@ index abef3c4601b..9dfb6b6d2b0 100644
  	else true; fi; \
  	if [ x"$(NOASANFLAG)" != x ]; then \
 -- 
-2.34.1
+2.35.1
 

diff --git a/9999/0003-Gentoo-add-with-extra-soversion-suffix-option.patch b/9999/0003-Gentoo-add-with-extra-soversion-suffix-option.patch
index b2b0bb5..9328241 100644
--- a/9999/0003-Gentoo-add-with-extra-soversion-suffix-option.patch
+++ b/9999/0003-Gentoo-add-with-extra-soversion-suffix-option.patch
@@ -1,4 +1,4 @@
-From 820a68dff1ec2eb3836727ced1b5b74bd31daa28 Mon Sep 17 00:00:00 2001
+From 2d3d27e6c5ad343a524a117dc02358ad7cb06e0d Mon Sep 17 00:00:00 2001
 From: Sergei Trofimovich <slyfox@gentoo.org>
 Date: Tue, 20 Jul 2021 21:12:38 +0200
 Subject: [PATCH 3/6] Gentoo: add --with-extra-soversion-suffix= option
@@ -25,7 +25,7 @@ built with different flags (see https://bugs.gentoo.org/663690).
 Bug: https://bugs.gentoo.org/666100
 Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
 
-Ported to binutils 2.37 Andreas K. Hüttel <dilfridge@gentoo.org>
+Ported to binutils 2.37 by Andreas K. Hüttel <dilfridge@gentoo.org>
 ---
  bfd/Makefile.am  |  5 +++++
  bfd/Makefile.in  |  4 ++++
@@ -34,10 +34,10 @@ Ported to binutils 2.37 Andreas K. Hüttel <dilfridge@gentoo.org>
  4 files changed, 29 insertions(+)
 
 diff --git a/bfd/Makefile.am b/bfd/Makefile.am
-index 10dd765bec8..e3d97adfbb3 100644
+index 670e0598f55..18d6eef60bb 100644
 --- a/bfd/Makefile.am
 +++ b/bfd/Makefile.am
-@@ -59,6 +59,8 @@ bfdinclude_HEADERS += $(INCDIR)/plugin-api.h
+@@ -64,6 +64,8 @@ bfdinclude_HEADERS += $(INCDIR)/plugin-api.h
  LIBDL = @lt_cv_dlopen_libs@
  endif
  
@@ -46,7 +46,7 @@ index 10dd765bec8..e3d97adfbb3 100644
  # bfd.h goes here, for now
  BFD_H = bfd.h
  
-@@ -987,6 +989,9 @@ bfdver.h: $(srcdir)/version.h $(srcdir)/development.sh $(srcdir)/Makefile.in
+@@ -983,6 +985,9 @@ bfdver.h: $(srcdir)/version.h $(srcdir)/development.sh $(srcdir)/Makefile.in
  	  bfd_version_string="\"$(VERSION).$${bfd_version_date}\"" ;\
  	  bfd_soversion="$(VERSION).$${bfd_version_date}" ;\
  	fi ;\
@@ -57,10 +57,10 @@ index 10dd765bec8..e3d97adfbb3 100644
  	    -e "s,@bfd_version_string@,$$bfd_version_string," \
  	    -e "s,@bfd_version_package@,$$bfd_version_package," \
 diff --git a/bfd/Makefile.in b/bfd/Makefile.in
-index f5313a2ad6f..c8cfc0474f2 100644
+index d3ef4c2524b..56fac1bb94d 100644
 --- a/bfd/Makefile.in
 +++ b/bfd/Makefile.in
-@@ -319,6 +319,7 @@ ECHO_T = @ECHO_T@
+@@ -354,6 +354,7 @@ ECHO_T = @ECHO_T@
  EGREP = @EGREP@
  EXEEXT = @EXEEXT@
  EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@
@@ -68,7 +68,7 @@ index f5313a2ad6f..c8cfc0474f2 100644
  FGREP = @FGREP@
  GENCAT = @GENCAT@
  GMSGFMT = @GMSGFMT@
-@@ -2104,6 +2105,9 @@ bfdver.h: $(srcdir)/version.h $(srcdir)/development.sh $(srcdir)/Makefile.in
+@@ -2453,6 +2454,9 @@ bfdver.h: $(srcdir)/version.h $(srcdir)/development.sh $(srcdir)/Makefile.in
  	  bfd_version_string="\"$(VERSION).$${bfd_version_date}\"" ;\
  	  bfd_soversion="$(VERSION).$${bfd_version_date}" ;\
  	fi ;\
@@ -79,10 +79,10 @@ index f5313a2ad6f..c8cfc0474f2 100644
  	    -e "s,@bfd_version_string@,$$bfd_version_string," \
  	    -e "s,@bfd_version_package@,$$bfd_version_package," \
 diff --git a/bfd/configure b/bfd/configure
-index b09702f26e1..7a7c1229c99 100755
+index 590986efb61..299f7bb0244 100755
 --- a/bfd/configure
 +++ b/bfd/configure
-@@ -696,6 +696,7 @@ WARN_CFLAGS
+@@ -691,6 +691,7 @@ WARN_CFLAGS
  REPORT_BUGS_TEXI
  REPORT_BUGS_TO
  PKGVERSION
@@ -90,7 +90,7 @@ index b09702f26e1..7a7c1229c99 100755
  DEBUGDIR
  ENABLE_BFD_64_BIT_FALSE
  ENABLE_BFD_64_BIT_TRUE
-@@ -837,6 +838,7 @@ enable_secureplt
+@@ -832,6 +833,7 @@ enable_secureplt
  enable_separate_code
  enable_leading_mingw64_underscores
  with_separate_debug_dir
@@ -98,7 +98,7 @@ index b09702f26e1..7a7c1229c99 100755
  with_pkgversion
  with_bugurl
  enable_werror
-@@ -1513,6 +1515,8 @@ Optional Packages:
+@@ -1508,6 +1510,8 @@ Optional Packages:
    --with-separate-debug-dir=DIR
                            Look for global separate debug info in DIR
                            [[default=LIBDIR/debug]]
@@ -107,7 +107,7 @@ index b09702f26e1..7a7c1229c99 100755
    --with-pkgversion=PKG   Use PKG in the version string in place of "GNU
                            Binutils"
    --with-bugurl=URL       Direct users to URL to report a bug
-@@ -12013,6 +12017,15 @@ fi
+@@ -12014,6 +12018,15 @@ fi
  
  
  
@@ -124,7 +124,7 @@ index b09702f26e1..7a7c1229c99 100755
  
  # Check whether --with-pkgversion was given.
 diff --git a/bfd/configure.ac b/bfd/configure.ac
-index a9078965c40..3406c071fe7 100644
+index aad4f3c83a5..e9158315bf1 100644
 --- a/bfd/configure.ac
 +++ b/bfd/configure.ac
 @@ -168,6 +168,13 @@ AC_ARG_WITH(separate-debug-dir,
@@ -142,5 +142,5 @@ index a9078965c40..3406c071fe7 100644
  ACX_BUGURL([https://sourceware.org/bugzilla/])
  
 -- 
-2.34.1
+2.35.1
 

diff --git a/9999/0004-Gentoo-Pass-hash-style-sysv-to-ld-in-the-testsuite.patch b/9999/0004-Gentoo-Pass-hash-style-sysv-to-ld-in-the-testsuite.patch
index 2ac5053..caaf9c7 100644
--- a/9999/0004-Gentoo-Pass-hash-style-sysv-to-ld-in-the-testsuite.patch
+++ b/9999/0004-Gentoo-Pass-hash-style-sysv-to-ld-in-the-testsuite.patch
@@ -1,4 +1,4 @@
-From 6e5bb8fa8e5f409e12098a922de72f6bdcc99603 Mon Sep 17 00:00:00 2001
+From 19d0d0a3fca319b6a14888ce709a75d9b0765561 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
 Date: Tue, 20 Jul 2021 21:15:24 +0200
 Subject: [PATCH 4/6] Gentoo: Pass --hash-style=sysv to ld in the testsuite
@@ -9,10 +9,10 @@ Subject: [PATCH 4/6] Gentoo: Pass --hash-style=sysv to ld in the testsuite
  2 files changed, 15 insertions(+), 3 deletions(-)
 
 diff --git a/binutils/testsuite/lib/binutils-common.exp b/binutils/testsuite/lib/binutils-common.exp
-index 93603b0be68..83ae1307f2a 100644
+index ccc33a827b4..f7aecf7edc2 100644
 --- a/binutils/testsuite/lib/binutils-common.exp
 +++ b/binutils/testsuite/lib/binutils-common.exp
-@@ -1303,7 +1303,7 @@ proc run_dump_test { name {extra_options {}} } {
+@@ -1310,7 +1310,7 @@ proc run_dump_test { name {extra_options {}} } {
  
  	    # Add -L$srcdir/$subdir so that the linker command can use
  	    # linker scripts in the source directory.
@@ -22,7 +22,7 @@ index 93603b0be68..83ae1307f2a 100644
  
  	    # If needed then check for, or add a -Map option.
 diff --git a/ld/testsuite/lib/ld-lib.exp b/ld/testsuite/lib/ld-lib.exp
-index 5c7771f7221..ff9ee6a425c 100644
+index ec27388a72e..fc7292a40a7 100644
 --- a/ld/testsuite/lib/ld-lib.exp
 +++ b/ld/testsuite/lib/ld-lib.exp
 @@ -171,7 +171,7 @@ proc default_ld_relocate { ld target objects } {
@@ -57,5 +57,5 @@ index 5c7771f7221..ff9ee6a425c 100644
  
      # We don't care if we get a warning about a non-existent start
 -- 
-2.34.1
+2.35.1
 

diff --git a/9999/0005-Gentoo-Give-also-libctf-optionally-a-gentoo-specific.patch b/9999/0005-Gentoo-Give-also-libctf-optionally-a-gentoo-specific.patch
index 871812a..4788ee0 100644
--- a/9999/0005-Gentoo-Give-also-libctf-optionally-a-gentoo-specific.patch
+++ b/9999/0005-Gentoo-Give-also-libctf-optionally-a-gentoo-specific.patch
@@ -1,4 +1,4 @@
-From f4db43e58d2f3a6e66b15ff2b25ac6850199399b Mon Sep 17 00:00:00 2001
+From ebc2d6f6c6d46a7fe77a37612ea0e12dccc467cf Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
 Date: Sat, 24 Jul 2021 15:20:16 +0200
 Subject: [PATCH 5/6] Gentoo: Give also libctf optionally a gentoo-specific
@@ -45,7 +45,7 @@ index 27e90f0ba36..4990a20efa3 100644
  libctf_nobfd_la_CPPFLAGS = $(AM_CPPFLAGS) -DNOBFD=1
  libctf_nobfd_la_SOURCES = ctf-archive.c ctf-dump.c ctf-create.c ctf-decl.c ctf-error.c \
 diff --git a/libctf/Makefile.in b/libctf/Makefile.in
-index 3b5ab73324e..10029107a05 100644
+index 1984f50867a..55772ba94b3 100644
 --- a/libctf/Makefile.in
 +++ b/libctf/Makefile.in
 @@ -381,6 +381,7 @@ AUTOCONF = @AUTOCONF@
@@ -80,7 +80,7 @@ index 3b5ab73324e..10029107a05 100644
  libctf_nobfd_la_CPPFLAGS = $(AM_CPPFLAGS) -DNOBFD=1
  libctf_nobfd_la_SOURCES = ctf-archive.c ctf-dump.c ctf-create.c \
 diff --git a/libctf/configure b/libctf/configure
-index c56ac218213..623e71477b3 100755
+index 8704bc215f4..de99d1714d7 100755
 --- a/libctf/configure
 +++ b/libctf/configure
 @@ -646,6 +646,10 @@ BUILD_INFO_FALSE
@@ -111,25 +111,25 @@ index c56ac218213..623e71477b3 100755
  
  Some influential environment variables:
    CC          C compiler command
-@@ -11629,7 +11636,7 @@ else
+@@ -11635,7 +11642,7 @@ else
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
--#line 11632 "configure"
-+#line 11639 "configure"
+-#line 11638 "configure"
++#line 11645 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
-@@ -11735,7 +11742,7 @@ else
+@@ -11741,7 +11748,7 @@ else
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
--#line 11738 "configure"
-+#line 11745 "configure"
+-#line 11744 "configure"
++#line 11751 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
-@@ -12942,6 +12949,26 @@ else
+@@ -12948,6 +12955,26 @@ else
  fi
  
  
@@ -156,7 +156,7 @@ index c56ac218213..623e71477b3 100755
  # Similar to GDB_AC_CHECK_BFD.
  OLD_CFLAGS=$CFLAGS
  OLD_LDFLAGS=$LDFLAGS
-@@ -13834,6 +13861,10 @@ if test -z "${ENABLE_LIBCTF_HASH_DEBUGGING_TRUE}" && test -z "${ENABLE_LIBCTF_HA
+@@ -13840,6 +13867,10 @@ if test -z "${ENABLE_LIBCTF_HASH_DEBUGGING_TRUE}" && test -z "${ENABLE_LIBCTF_HA
    as_fn_error $? "conditional \"ENABLE_LIBCTF_HASH_DEBUGGING\" was never defined.
  Usually this means the macro was only invoked conditionally." "$LINENO" 5
  fi
@@ -189,5 +189,5 @@ index 4996edd5b70..103fc8b9d33 100644
  OLD_CFLAGS=$CFLAGS
  OLD_LDFLAGS=$LDFLAGS
 -- 
-2.34.1
+2.35.1
 

diff --git a/9999/0006-Gentoo-XFAIL-15-broken-ld.gold-tests.patch b/9999/0006-Gentoo-XFAIL-15-broken-ld.gold-tests.patch
index b9435e9..318552c 100644
--- a/9999/0006-Gentoo-XFAIL-15-broken-ld.gold-tests.patch
+++ b/9999/0006-Gentoo-XFAIL-15-broken-ld.gold-tests.patch
@@ -1,4 +1,4 @@
-From 66686e75515c742e573d25b74ce324e3d1acad08 Mon Sep 17 00:00:00 2001
+From 7eefd99e98a9396f0ce2e98e9bd86bfeb53a84dc Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
 Date: Sat, 31 Jul 2021 01:18:18 +0200
 Subject: [PATCH 6/6] Gentoo: XFAIL 15 broken ld.gold tests
@@ -73,5 +73,5 @@ index 7b4b7832d38..765c2b73140 100644
  AUTOMAKE_OPTIONS = foreign -Wno-portability
  
 -- 
-2.34.1
+2.35.1
 


^ permalink raw reply related	[flat|nested] 39+ messages in thread

* [gentoo-commits] proj/toolchain/binutils-patches:master commit in: 9999/
@ 2022-10-08 12:15 WANG Xuerui
  0 siblings, 0 replies; 39+ messages in thread
From: WANG Xuerui @ 2022-10-08 12:15 UTC (permalink / raw
  To: gentoo-commits

commit:     0420678a87bef8c743a278e5a7a2d60a23e513cf
Author:     WANG Xuerui <xen0n <AT> gentoo <DOT> org>
AuthorDate: Sat Oct  8 12:14:29 2022 +0000
Commit:     WANG Xuerui <xen0n <AT> gentoo <DOT> org>
CommitDate: Sat Oct  8 12:14:29 2022 +0000
URL:        https://gitweb.gentoo.org/proj/toolchain/binutils-patches.git/commit/?id=0420678a

Rebase on top of upstream commit 4cbfd0daabd6851

Signed-off-by: WANG Xuerui <xen0n <AT> gentoo.org>

 ...-ld-add-support-for-poisoned-system-direc.patch | 42 ++++++++++----------
 ...iberty-install-PIC-version-of-libiberty.a.patch |  4 +-
 ...oo-add-with-extra-soversion-suffix-option.patch | 26 ++++++------
 ...ss-hash-style-sysv-to-ld-in-the-testsuite.patch |  4 +-
 ...-also-libctf-optionally-a-gentoo-specific.patch | 46 +++++++++++-----------
 ...0006-Gentoo-XFAIL-15-broken-ld.gold-tests.patch | 10 ++---
 6 files changed, 66 insertions(+), 66 deletions(-)

diff --git a/9999/0001-Gentoo-gold-ld-add-support-for-poisoned-system-direc.patch b/9999/0001-Gentoo-gold-ld-add-support-for-poisoned-system-direc.patch
index 8e2e947..1a03757 100644
--- a/9999/0001-Gentoo-gold-ld-add-support-for-poisoned-system-direc.patch
+++ b/9999/0001-Gentoo-gold-ld-add-support-for-poisoned-system-direc.patch
@@ -1,4 +1,4 @@
-From 6ad35e463cbd086b4d4e7bb5aca1da6b73e614c8 Mon Sep 17 00:00:00 2001
+From eaf58344eafc9b9943a0bd7e9e00130965b10274 Mon Sep 17 00:00:00 2001
 From: Mike Frysinger <vapier@gentoo.org>
 Date: Tue, 20 Jul 2021 21:08:31 +0200
 Subject: [PATCH 1/6] Gentoo: gold/ld: add support for poisoned system
@@ -88,10 +88,10 @@ index 04be98a3e39..64439f8af7a 100644
    if (this->shared() && this->is_static())
      gold_fatal(_("-shared and -static are incompatible"));
 diff --git a/gold/options.h b/gold/options.h
-index 9509a445e8e..a3d76b294cd 100644
+index 17236eb9cb9..dad649870bf 100644
 --- a/gold/options.h
 +++ b/gold/options.h
-@@ -1394,6 +1394,13 @@ class General_options
+@@ -1398,6 +1398,13 @@ class General_options
    DEFINE_bool(warn_multiple_gp, options::TWO_DASHES, '\0', false,
  	      N_("Ignored"), NULL);
  
@@ -106,7 +106,7 @@ index 9509a445e8e..a3d76b294cd 100644
  	      N_("Warn when skipping an incompatible library"),
  	      N_("Don't warn when skipping an incompatible library"));
 diff --git a/ld/config.in b/ld/config.in
-index 0ccd79d59cd..5e39814bce0 100644
+index 3916740eee4..7e70b0179ea 100644
 --- a/ld/config.in
 +++ b/ld/config.in
 @@ -55,6 +55,9 @@
@@ -120,10 +120,10 @@ index 0ccd79d59cd..5e39814bce0 100644
  #undef EXTRA_SHLIB_EXTENSION
  
 diff --git a/ld/configure b/ld/configure
-index 1c2b64870b1..46b5789c77e 100755
+index 9dd3ed5f1e7..a9a67a8babe 100755
 --- a/ld/configure
 +++ b/ld/configure
-@@ -836,6 +836,7 @@ with_lib_path
+@@ -838,6 +838,7 @@ with_lib_path
  enable_targets
  enable_64_bit_bfd
  with_sysroot
@@ -131,7 +131,7 @@ index 1c2b64870b1..46b5789c77e 100755
  enable_gold
  enable_got
  enable_compressed_debug_sections
-@@ -1514,6 +1515,8 @@ Optional Features:
+@@ -1519,6 +1520,8 @@ Optional Features:
    --enable-checking       enable run-time checks
    --enable-targets        alternative target configurations
    --enable-64-bit-bfd     64-bit support (on hosts with narrower word sizes)
@@ -140,25 +140,25 @@ index 1c2b64870b1..46b5789c77e 100755
    --enable-gold[=ARG]     build gold [ARG={default,yes,no}]
    --enable-got=<type>     GOT handling scheme (target, single, negative,
                            multigot)
-@@ -11491,7 +11494,7 @@ else
+@@ -11620,7 +11623,7 @@ else
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
--#line 11494 "configure"
-+#line 11497 "configure"
+-#line 11623 "configure"
++#line 11626 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
-@@ -11597,7 +11600,7 @@ else
+@@ -11726,7 +11729,7 @@ else
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
--#line 11600 "configure"
-+#line 11603 "configure"
+-#line 11729 "configure"
++#line 11732 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
-@@ -15349,6 +15352,19 @@ fi
+@@ -15478,6 +15481,19 @@ fi
  
  
  
@@ -179,10 +179,10 @@ index 1c2b64870b1..46b5789c77e 100755
  if test "${enable_gold+set}" = set; then :
    enableval=$enable_gold; case "${enableval}" in
 diff --git a/ld/configure.ac b/ld/configure.ac
-index eb55904c090..0844c2364c5 100644
+index f1b2f9897f8..1927d79e728 100644
 --- a/ld/configure.ac
 +++ b/ld/configure.ac
-@@ -102,6 +102,16 @@ AC_SUBST(use_sysroot)
+@@ -103,6 +103,16 @@ AC_SUBST(use_sysroot)
  AC_SUBST(TARGET_SYSTEM_ROOT)
  AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)
  
@@ -218,10 +218,10 @@ index f3086bf30de..90cf1ca51e5 100644
    enum endian_enum endian;
  
 diff --git a/ld/ld.texi b/ld/ld.texi
-index eabbec8faa9..45f4858526c 100644
+index 9daed2e7e9f..d76b534a456 100644
 --- a/ld/ld.texi
 +++ b/ld/ld.texi
-@@ -2947,6 +2947,24 @@ creation of the metadata note, if one had been enabled by an earlier
+@@ -2952,6 +2952,24 @@ creation of the metadata note, if one had been enabled by an earlier
  occurrence of the --package-metdata option.
  If the linker has been built with libjansson, then the JSON string
  will be validated.
@@ -292,7 +292,7 @@ index 57ade1f754b..b35a6122e09 100644
    OPTION_POP_STATE,
    OPTION_DISABLE_MULTIPLE_DEFS_ABS,
 diff --git a/ld/ldmain.c b/ld/ldmain.c
-index ea72b14a301..706ec9ce26e 100644
+index d63002c994a..55364ef5773 100644
 --- a/ld/ldmain.c
 +++ b/ld/ldmain.c
 @@ -321,6 +321,13 @@ main (int argc, char **argv)
@@ -310,7 +310,7 @@ index ea72b14a301..706ec9ce26e 100644
    /* We initialize DEMANGLING based on the environment variable
       COLLECT_NO_DEMANGLE.  The gcc collect2 program will demangle the
 diff --git a/ld/lexsup.c b/ld/lexsup.c
-index 9225f71b3ce..db5b170bc7c 100644
+index 299371fb775..02816ebb1b6 100644
 --- a/ld/lexsup.c
 +++ b/ld/lexsup.c
 @@ -579,6 +579,18 @@ static const struct ld_option ld_options[] =
@@ -352,5 +352,5 @@ index 9225f71b3ce..db5b170bc7c 100644
  	  input_flags.pushed = xmemdup (&input_flags,
  					sizeof (input_flags),
 -- 
-2.35.1
+2.38.0
 

diff --git a/9999/0002-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch b/9999/0002-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch
index 34462cc..9a5590e 100644
--- a/9999/0002-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch
+++ b/9999/0002-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch
@@ -1,4 +1,4 @@
-From 4bd606f5945ea94b1ea0db8fba206cfe67959cde Mon Sep 17 00:00:00 2001
+From 14210956fa30806c5316ede3db67cac94420bb96 Mon Sep 17 00:00:00 2001
 From: Mike Frysinger <vapier@gentoo.org>
 Date: Fri, 7 Jan 2005 00:15:53 -0500
 Subject: [PATCH 2/6] Gentoo: libiberty: install PIC version of libiberty.a
@@ -30,5 +30,5 @@ index abef3c4601b..9dfb6b6d2b0 100644
  	else true; fi; \
  	if [ x"$(NOASANFLAG)" != x ]; then \
 -- 
-2.35.1
+2.38.0
 

diff --git a/9999/0003-Gentoo-add-with-extra-soversion-suffix-option.patch b/9999/0003-Gentoo-add-with-extra-soversion-suffix-option.patch
index 9328241..81265e4 100644
--- a/9999/0003-Gentoo-add-with-extra-soversion-suffix-option.patch
+++ b/9999/0003-Gentoo-add-with-extra-soversion-suffix-option.patch
@@ -1,4 +1,4 @@
-From 2d3d27e6c5ad343a524a117dc02358ad7cb06e0d Mon Sep 17 00:00:00 2001
+From 96aa5434285fe8006fd671634fe753cf69451043 Mon Sep 17 00:00:00 2001
 From: Sergei Trofimovich <slyfox@gentoo.org>
 Date: Tue, 20 Jul 2021 21:12:38 +0200
 Subject: [PATCH 3/6] Gentoo: add --with-extra-soversion-suffix= option
@@ -34,7 +34,7 @@ Ported to binutils 2.37 by Andreas K. Hüttel <dilfridge@gentoo.org>
  4 files changed, 29 insertions(+)
 
 diff --git a/bfd/Makefile.am b/bfd/Makefile.am
-index 670e0598f55..18d6eef60bb 100644
+index 794d992310d..34b71212d75 100644
 --- a/bfd/Makefile.am
 +++ b/bfd/Makefile.am
 @@ -64,6 +64,8 @@ bfdinclude_HEADERS += $(INCDIR)/plugin-api.h
@@ -46,7 +46,7 @@ index 670e0598f55..18d6eef60bb 100644
  # bfd.h goes here, for now
  BFD_H = bfd.h
  
-@@ -983,6 +985,9 @@ bfdver.h: $(srcdir)/version.h $(srcdir)/development.sh $(srcdir)/Makefile.in
+@@ -992,6 +994,9 @@ bfdver.h: $(srcdir)/version.h $(srcdir)/development.sh $(srcdir)/Makefile.in
  	  bfd_version_string="\"$(VERSION).$${bfd_version_date}\"" ;\
  	  bfd_soversion="$(VERSION).$${bfd_version_date}" ;\
  	fi ;\
@@ -57,10 +57,10 @@ index 670e0598f55..18d6eef60bb 100644
  	    -e "s,@bfd_version_string@,$$bfd_version_string," \
  	    -e "s,@bfd_version_package@,$$bfd_version_package," \
 diff --git a/bfd/Makefile.in b/bfd/Makefile.in
-index d3ef4c2524b..56fac1bb94d 100644
+index bdf12c99cfd..e4c613d7406 100644
 --- a/bfd/Makefile.in
 +++ b/bfd/Makefile.in
-@@ -354,6 +354,7 @@ ECHO_T = @ECHO_T@
+@@ -355,6 +355,7 @@ ECHO_T = @ECHO_T@
  EGREP = @EGREP@
  EXEEXT = @EXEEXT@
  EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@
@@ -68,7 +68,7 @@ index d3ef4c2524b..56fac1bb94d 100644
  FGREP = @FGREP@
  GENCAT = @GENCAT@
  GMSGFMT = @GMSGFMT@
-@@ -2453,6 +2454,9 @@ bfdver.h: $(srcdir)/version.h $(srcdir)/development.sh $(srcdir)/Makefile.in
+@@ -2471,6 +2472,9 @@ bfdver.h: $(srcdir)/version.h $(srcdir)/development.sh $(srcdir)/Makefile.in
  	  bfd_version_string="\"$(VERSION).$${bfd_version_date}\"" ;\
  	  bfd_soversion="$(VERSION).$${bfd_version_date}" ;\
  	fi ;\
@@ -79,10 +79,10 @@ index d3ef4c2524b..56fac1bb94d 100644
  	    -e "s,@bfd_version_string@,$$bfd_version_string," \
  	    -e "s,@bfd_version_package@,$$bfd_version_package," \
 diff --git a/bfd/configure b/bfd/configure
-index 590986efb61..299f7bb0244 100755
+index b72e885f711..b464614592d 100755
 --- a/bfd/configure
 +++ b/bfd/configure
-@@ -691,6 +691,7 @@ WARN_CFLAGS
+@@ -695,6 +695,7 @@ WARN_CFLAGS
  REPORT_BUGS_TEXI
  REPORT_BUGS_TO
  PKGVERSION
@@ -90,7 +90,7 @@ index 590986efb61..299f7bb0244 100755
  DEBUGDIR
  ENABLE_BFD_64_BIT_FALSE
  ENABLE_BFD_64_BIT_TRUE
-@@ -832,6 +833,7 @@ enable_secureplt
+@@ -836,6 +837,7 @@ enable_secureplt
  enable_separate_code
  enable_leading_mingw64_underscores
  with_separate_debug_dir
@@ -98,7 +98,7 @@ index 590986efb61..299f7bb0244 100755
  with_pkgversion
  with_bugurl
  enable_werror
-@@ -1508,6 +1510,8 @@ Optional Packages:
+@@ -1518,6 +1520,8 @@ Optional Packages:
    --with-separate-debug-dir=DIR
                            Look for global separate debug info in DIR
                            [[default=LIBDIR/debug]]
@@ -107,7 +107,7 @@ index 590986efb61..299f7bb0244 100755
    --with-pkgversion=PKG   Use PKG in the version string in place of "GNU
                            Binutils"
    --with-bugurl=URL       Direct users to URL to report a bug
-@@ -12014,6 +12018,15 @@ fi
+@@ -12033,6 +12037,15 @@ fi
  
  
  
@@ -124,7 +124,7 @@ index 590986efb61..299f7bb0244 100755
  
  # Check whether --with-pkgversion was given.
 diff --git a/bfd/configure.ac b/bfd/configure.ac
-index aad4f3c83a5..e9158315bf1 100644
+index 7a0ad0ffe33..2910cc9121f 100644
 --- a/bfd/configure.ac
 +++ b/bfd/configure.ac
 @@ -168,6 +168,13 @@ AC_ARG_WITH(separate-debug-dir,
@@ -142,5 +142,5 @@ index aad4f3c83a5..e9158315bf1 100644
  ACX_BUGURL([https://sourceware.org/bugzilla/])
  
 -- 
-2.35.1
+2.38.0
 

diff --git a/9999/0004-Gentoo-Pass-hash-style-sysv-to-ld-in-the-testsuite.patch b/9999/0004-Gentoo-Pass-hash-style-sysv-to-ld-in-the-testsuite.patch
index caaf9c7..484c657 100644
--- a/9999/0004-Gentoo-Pass-hash-style-sysv-to-ld-in-the-testsuite.patch
+++ b/9999/0004-Gentoo-Pass-hash-style-sysv-to-ld-in-the-testsuite.patch
@@ -1,4 +1,4 @@
-From 19d0d0a3fca319b6a14888ce709a75d9b0765561 Mon Sep 17 00:00:00 2001
+From eeb95d2a0cda143dad4d905429ced8a339c486e3 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
 Date: Tue, 20 Jul 2021 21:15:24 +0200
 Subject: [PATCH 4/6] Gentoo: Pass --hash-style=sysv to ld in the testsuite
@@ -57,5 +57,5 @@ index ec27388a72e..fc7292a40a7 100644
  
      # We don't care if we get a warning about a non-existent start
 -- 
-2.35.1
+2.38.0
 

diff --git a/9999/0005-Gentoo-Give-also-libctf-optionally-a-gentoo-specific.patch b/9999/0005-Gentoo-Give-also-libctf-optionally-a-gentoo-specific.patch
index 4788ee0..2133994 100644
--- a/9999/0005-Gentoo-Give-also-libctf-optionally-a-gentoo-specific.patch
+++ b/9999/0005-Gentoo-Give-also-libctf-optionally-a-gentoo-specific.patch
@@ -1,4 +1,4 @@
-From ebc2d6f6c6d46a7fe77a37612ea0e12dccc467cf Mon Sep 17 00:00:00 2001
+From ee4de1adb09cbfcad39e544e2f05392b210b550a Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
 Date: Sat, 24 Jul 2021 15:20:16 +0200
 Subject: [PATCH 5/6] Gentoo: Give also libctf optionally a gentoo-specific
@@ -45,10 +45,10 @@ index 27e90f0ba36..4990a20efa3 100644
  libctf_nobfd_la_CPPFLAGS = $(AM_CPPFLAGS) -DNOBFD=1
  libctf_nobfd_la_SOURCES = ctf-archive.c ctf-dump.c ctf-create.c ctf-decl.c ctf-error.c \
 diff --git a/libctf/Makefile.in b/libctf/Makefile.in
-index 1984f50867a..55772ba94b3 100644
+index 036a63fa720..e971f0b31bb 100644
 --- a/libctf/Makefile.in
 +++ b/libctf/Makefile.in
-@@ -381,6 +381,7 @@ AUTOCONF = @AUTOCONF@
+@@ -383,6 +383,7 @@ AUTOCONF = @AUTOCONF@
  AUTOHEADER = @AUTOHEADER@
  AUTOMAKE = @AUTOMAKE@
  AWK = @AWK@
@@ -56,7 +56,7 @@ index 1984f50867a..55772ba94b3 100644
  CATALOGS = @CATALOGS@
  CATOBJEXT = @CATOBJEXT@
  CC = @CC@
-@@ -403,6 +404,7 @@ EXEEXT = @EXEEXT@
+@@ -405,6 +406,7 @@ EXEEXT = @EXEEXT@
  
  # Setup the testing framework, if you have one
  EXPECT = expect
@@ -64,7 +64,7 @@ index 1984f50867a..55772ba94b3 100644
  FGREP = @FGREP@
  GENCAT = @GENCAT@
  GMSGFMT = @GMSGFMT@
-@@ -540,8 +542,13 @@ AM_CFLAGS = -std=gnu99 @ac_libctf_warn_cflags@ @warn@ @c_warn@ @WARN_PEDANTIC@ @
+@@ -547,8 +549,13 @@ AM_CFLAGS = -std=gnu99 @ac_libctf_warn_cflags@ @warn@ @c_warn@ @WARN_PEDANTIC@ @
  @INSTALL_LIBBFD_FALSE@include_HEADERS = 
  @INSTALL_LIBBFD_TRUE@include_HEADERS = $(INCDIR)/ctf.h $(INCDIR)/ctf-api.h
  @INSTALL_LIBBFD_FALSE@noinst_LTLIBRARIES = libctf.la libctf-nobfd.la
@@ -80,7 +80,7 @@ index 1984f50867a..55772ba94b3 100644
  libctf_nobfd_la_CPPFLAGS = $(AM_CPPFLAGS) -DNOBFD=1
  libctf_nobfd_la_SOURCES = ctf-archive.c ctf-dump.c ctf-create.c \
 diff --git a/libctf/configure b/libctf/configure
-index 8704bc215f4..de99d1714d7 100755
+index 176b3d6b918..31fe5f72a90 100755
 --- a/libctf/configure
 +++ b/libctf/configure
 @@ -646,6 +646,10 @@ BUILD_INFO_FALSE
@@ -93,43 +93,43 @@ index 8704bc215f4..de99d1714d7 100755
 +EXTRA_SOVERSION_SUFFIX
  ENABLE_LIBCTF_HASH_DEBUGGING_FALSE
  ENABLE_LIBCTF_HASH_DEBUGGING_TRUE
- zlibinc
-@@ -807,6 +811,7 @@ enable_maintainer_mode
- enable_install_libbfd
+ ZSTD_LIBS
+@@ -813,6 +817,7 @@ enable_install_libbfd
  with_system_zlib
+ with_zstd
  enable_libctf_hash_debugging
 +with_extra_soversion_suffix
  '
        ac_precious_vars='build_alias
  host_alias
-@@ -1464,6 +1469,8 @@ Optional Packages:
-                           both]
-   --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
+@@ -1477,6 +1482,8 @@ Optional Packages:
    --with-system-zlib      use installed libz
+   --with-zstd             support zstd compressed debug sections
+                           (default=auto)
 +  --with-extra-soversion-suffix=SUFFIX
 +                          Append '.SUFFIX' to SONAME [[default=]]
  
  Some influential environment variables:
    CC          C compiler command
-@@ -11635,7 +11642,7 @@ else
+@@ -11655,7 +11662,7 @@ else
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
--#line 11638 "configure"
-+#line 11645 "configure"
+-#line 11658 "configure"
++#line 11665 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
-@@ -11741,7 +11748,7 @@ else
+@@ -11761,7 +11768,7 @@ else
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
--#line 11744 "configure"
-+#line 11751 "configure"
+-#line 11764 "configure"
++#line 11771 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
-@@ -12948,6 +12955,26 @@ else
+@@ -13209,6 +13216,26 @@ else
  fi
  
  
@@ -156,7 +156,7 @@ index 8704bc215f4..de99d1714d7 100755
  # Similar to GDB_AC_CHECK_BFD.
  OLD_CFLAGS=$CFLAGS
  OLD_LDFLAGS=$LDFLAGS
-@@ -13840,6 +13867,10 @@ if test -z "${ENABLE_LIBCTF_HASH_DEBUGGING_TRUE}" && test -z "${ENABLE_LIBCTF_HA
+@@ -14101,6 +14128,10 @@ if test -z "${ENABLE_LIBCTF_HASH_DEBUGGING_TRUE}" && test -z "${ENABLE_LIBCTF_HA
    as_fn_error $? "conditional \"ENABLE_LIBCTF_HASH_DEBUGGING\" was never defined.
  Usually this means the macro was only invoked conditionally." "$LINENO" 5
  fi
@@ -168,10 +168,10 @@ index 8704bc215f4..de99d1714d7 100755
  if test -z "${NEED_CTF_QSORT_R_TRUE}" && test -z "${NEED_CTF_QSORT_R_FALSE}"; then
    as_fn_error $? "conditional \"NEED_CTF_QSORT_R\" was never defined.
 diff --git a/libctf/configure.ac b/libctf/configure.ac
-index 4996edd5b70..103fc8b9d33 100644
+index 2e2ccf4b624..fbe5f27241b 100644
 --- a/libctf/configure.ac
 +++ b/libctf/configure.ac
-@@ -78,6 +78,16 @@ if test "${enable_libctf_hash_debugging}" = yes; then
+@@ -79,6 +79,16 @@ if test "${enable_libctf_hash_debugging}" = yes; then
  fi
  AM_CONDITIONAL(ENABLE_LIBCTF_HASH_DEBUGGING, test "${enable_libctf_hash_debugging}" = yes)
  
@@ -189,5 +189,5 @@ index 4996edd5b70..103fc8b9d33 100644
  OLD_CFLAGS=$CFLAGS
  OLD_LDFLAGS=$LDFLAGS
 -- 
-2.35.1
+2.38.0
 

diff --git a/9999/0006-Gentoo-XFAIL-15-broken-ld.gold-tests.patch b/9999/0006-Gentoo-XFAIL-15-broken-ld.gold-tests.patch
index 318552c..23e7576 100644
--- a/9999/0006-Gentoo-XFAIL-15-broken-ld.gold-tests.patch
+++ b/9999/0006-Gentoo-XFAIL-15-broken-ld.gold-tests.patch
@@ -1,4 +1,4 @@
-From 7eefd99e98a9396f0ce2e98e9bd86bfeb53a84dc Mon Sep 17 00:00:00 2001
+From 85c162be0eea0006c9d73fae243d771f7d0c9756 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
 Date: Sat, 31 Jul 2021 01:18:18 +0200
 Subject: [PATCH 6/6] Gentoo: XFAIL 15 broken ld.gold tests
@@ -16,7 +16,7 @@ Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=27303
  2 files changed, 18 insertions(+), 4 deletions(-)
 
 diff --git a/gold/testsuite/Makefile.am b/gold/testsuite/Makefile.am
-index 38e54818f48..85c94d40660 100644
+index 843fd0d197c..4940119c190 100644
 --- a/gold/testsuite/Makefile.am
 +++ b/gold/testsuite/Makefile.am
 @@ -1,5 +1,11 @@
@@ -32,7 +32,7 @@ index 38e54818f48..85c94d40660 100644
  # system and the host system are the same.  So these tests will not
  # work when building with a cross-compiler.
 diff --git a/gold/testsuite/Makefile.in b/gold/testsuite/Makefile.in
-index 7b4b7832d38..765c2b73140 100644
+index 21804df6573..6a4e2b5c5bb 100644
 --- a/gold/testsuite/Makefile.in
 +++ b/gold/testsuite/Makefile.in
 @@ -15,10 +15,6 @@
@@ -61,7 +61,7 @@ index 7b4b7832d38..765c2b73140 100644
  check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
  	$(am__EXEEXT_4) $(am__EXEEXT_5) $(am__EXEEXT_6) \
  	$(am__EXEEXT_7) $(am__EXEEXT_8) $(am__EXEEXT_9) \
-@@ -2742,6 +2746,10 @@ top_srcdir = @top_srcdir@
+@@ -2757,6 +2761,10 @@ top_srcdir = @top_srcdir@
  zlibdir = @zlibdir@
  zlibinc = @zlibinc@
  
@@ -73,5 +73,5 @@ index 7b4b7832d38..765c2b73140 100644
  AUTOMAKE_OPTIONS = foreign -Wno-portability
  
 -- 
-2.35.1
+2.38.0
 


^ permalink raw reply related	[flat|nested] 39+ messages in thread

* [gentoo-commits] proj/toolchain/binutils-patches:master commit in: 9999/
@ 2023-01-02 23:50 Andreas K. Hüttel
  0 siblings, 0 replies; 39+ messages in thread
From: Andreas K. Hüttel @ 2023-01-02 23:50 UTC (permalink / raw
  To: gentoo-commits

commit:     af2d7885363daa305cf4840cb7fe72e3ada04122
Author:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
AuthorDate: Mon Jan  2 23:49:51 2023 +0000
Commit:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
CommitDate: Mon Jan  2 23:49:51 2023 +0000
URL:        https://gitweb.gentoo.org/proj/toolchain/binutils-patches.git/commit/?id=af2d7885

Rebase patches onto master

Signed-off-by: Andreas K. Hüttel <dilfridge <AT> gentoo.org>

 ...-ld-add-support-for-poisoned-system-direc.patch | 52 +++++++++++-----------
 ...iberty-install-PIC-version-of-libiberty.a.patch |  6 +--
 ...oo-add-with-extra-soversion-suffix-option.patch | 16 +++----
 ...ss-hash-style-sysv-to-ld-in-the-testsuite.patch | 10 ++---
 ...-also-libctf-optionally-a-gentoo-specific.patch | 44 +++++++++---------
 ...0006-Gentoo-XFAIL-15-broken-ld.gold-tests.patch | 10 ++---
 6 files changed, 69 insertions(+), 69 deletions(-)

diff --git a/9999/0001-Gentoo-gold-ld-add-support-for-poisoned-system-direc.patch b/9999/0001-Gentoo-gold-ld-add-support-for-poisoned-system-direc.patch
index 1a03757..c9a15e1 100644
--- a/9999/0001-Gentoo-gold-ld-add-support-for-poisoned-system-direc.patch
+++ b/9999/0001-Gentoo-gold-ld-add-support-for-poisoned-system-direc.patch
@@ -1,4 +1,4 @@
-From eaf58344eafc9b9943a0bd7e9e00130965b10274 Mon Sep 17 00:00:00 2001
+From febeab1e92e6aaf19a3a67a8729cbe0a444ddf59 Mon Sep 17 00:00:00 2001
 From: Mike Frysinger <vapier@gentoo.org>
 Date: Tue, 20 Jul 2021 21:08:31 +0200
 Subject: [PATCH 1/6] Gentoo: gold/ld: add support for poisoned system
@@ -44,7 +44,7 @@ Ported to binutils 2.39 by WANG Xuerui <xen0n@gentoo.org>
  11 files changed, 150 insertions(+), 2 deletions(-)
 
 diff --git a/gold/options.cc b/gold/options.cc
-index 04be98a3e39..64439f8af7a 100644
+index c9834b66159..bd3e948a61b 100644
 --- a/gold/options.cc
 +++ b/gold/options.cc
 @@ -1355,6 +1355,39 @@ General_options::finalize()
@@ -88,7 +88,7 @@ index 04be98a3e39..64439f8af7a 100644
    if (this->shared() && this->is_static())
      gold_fatal(_("-shared and -static are incompatible"));
 diff --git a/gold/options.h b/gold/options.h
-index 17236eb9cb9..dad649870bf 100644
+index 1aa451c7711..524c7c859df 100644
 --- a/gold/options.h
 +++ b/gold/options.h
 @@ -1398,6 +1398,13 @@ class General_options
@@ -106,10 +106,10 @@ index 17236eb9cb9..dad649870bf 100644
  	      N_("Warn when skipping an incompatible library"),
  	      N_("Don't warn when skipping an incompatible library"));
 diff --git a/ld/config.in b/ld/config.in
-index 3916740eee4..7e70b0179ea 100644
+index ad0dc6a106c..d21edaddce7 100644
 --- a/ld/config.in
 +++ b/ld/config.in
-@@ -55,6 +55,9 @@
+@@ -58,6 +58,9 @@
     language is requested. */
  #undef ENABLE_NLS
  
@@ -120,10 +120,10 @@ index 3916740eee4..7e70b0179ea 100644
  #undef EXTRA_SHLIB_EXTENSION
  
 diff --git a/ld/configure b/ld/configure
-index 9dd3ed5f1e7..a9a67a8babe 100755
+index 03b9e46f56d..091d5913ee4 100755
 --- a/ld/configure
 +++ b/ld/configure
-@@ -838,6 +838,7 @@ with_lib_path
+@@ -839,6 +839,7 @@ with_lib_path
  enable_targets
  enable_64_bit_bfd
  with_sysroot
@@ -131,7 +131,7 @@ index 9dd3ed5f1e7..a9a67a8babe 100755
  enable_gold
  enable_got
  enable_compressed_debug_sections
-@@ -1519,6 +1520,8 @@ Optional Features:
+@@ -1521,6 +1522,8 @@ Optional Features:
    --enable-checking       enable run-time checks
    --enable-targets        alternative target configurations
    --enable-64-bit-bfd     64-bit support (on hosts with narrower word sizes)
@@ -140,25 +140,25 @@ index 9dd3ed5f1e7..a9a67a8babe 100755
    --enable-gold[=ARG]     build gold [ARG={default,yes,no}]
    --enable-got=<type>     GOT handling scheme (target, single, negative,
                            multigot)
-@@ -11620,7 +11623,7 @@ else
+@@ -11625,7 +11628,7 @@ else
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
--#line 11623 "configure"
+-#line 11628 "configure"
 +#line 11626 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
-@@ -11726,7 +11729,7 @@ else
+@@ -11731,7 +11734,7 @@ else
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
--#line 11729 "configure"
+-#line 11734 "configure"
 +#line 11732 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
-@@ -15478,6 +15481,19 @@ fi
+@@ -15483,6 +15486,19 @@ fi
  
  
  
@@ -179,7 +179,7 @@ index 9dd3ed5f1e7..a9a67a8babe 100755
  if test "${enable_gold+set}" = set; then :
    enableval=$enable_gold; case "${enableval}" in
 diff --git a/ld/configure.ac b/ld/configure.ac
-index f1b2f9897f8..1927d79e728 100644
+index 77edac3258c..a74dac63038 100644
 --- a/ld/configure.ac
 +++ b/ld/configure.ac
 @@ -103,6 +103,16 @@ AC_SUBST(use_sysroot)
@@ -200,10 +200,10 @@ index f1b2f9897f8..1927d79e728 100644
  dnl "install_as_default" is set to false if gold is the default linker.
  dnl "installed_linker" is the installed BFD linker name.
 diff --git a/ld/ld.h b/ld/ld.h
-index f3086bf30de..90cf1ca51e5 100644
+index 05649ff61b8..ce9e8229ac5 100644
 --- a/ld/ld.h
 +++ b/ld/ld.h
-@@ -162,6 +162,13 @@ typedef struct
+@@ -163,6 +163,13 @@ typedef struct
       in the linker script.  */
    bool force_group_allocation;
  
@@ -218,10 +218,10 @@ index f3086bf30de..90cf1ca51e5 100644
    enum endian_enum endian;
  
 diff --git a/ld/ld.texi b/ld/ld.texi
-index 9daed2e7e9f..d76b534a456 100644
+index db3a9f09b45..5b543914e67 100644
 --- a/ld/ld.texi
 +++ b/ld/ld.texi
-@@ -2952,6 +2952,24 @@ creation of the metadata note, if one had been enabled by an earlier
+@@ -2960,6 +2960,24 @@ creation of the metadata note, if one had been enabled by an earlier
  occurrence of the --package-metdata option.
  If the linker has been built with libjansson, then the JSON string
  will be validated.
@@ -247,7 +247,7 @@ index 9daed2e7e9f..d76b534a456 100644
  
  @c man end
 diff --git a/ld/ldfile.c b/ld/ldfile.c
-index 731ae5f7aed..6b67e29041b 100644
+index b8fd4e5d8e0..639204f4c29 100644
 --- a/ld/ldfile.c
 +++ b/ld/ldfile.c
 @@ -117,6 +117,26 @@ ldfile_add_library_path (const char *name, bool cmdline)
@@ -278,10 +278,10 @@ index 731ae5f7aed..6b67e29041b 100644
  
  /* Try to open a BFD for a lang_input_statement.  */
 diff --git a/ld/ldlex.h b/ld/ldlex.h
-index 57ade1f754b..b35a6122e09 100644
+index 0538f0a06a1..82685348055 100644
 --- a/ld/ldlex.h
 +++ b/ld/ldlex.h
-@@ -149,6 +149,9 @@ enum option_values
+@@ -151,6 +151,9 @@ enum option_values
    OPTION_PRINT_OUTPUT_FORMAT,
    OPTION_PRINT_SYSROOT,
    OPTION_IGNORE_UNRESOLVED_SYMBOL,
@@ -292,7 +292,7 @@ index 57ade1f754b..b35a6122e09 100644
    OPTION_POP_STATE,
    OPTION_DISABLE_MULTIPLE_DEFS_ABS,
 diff --git a/ld/ldmain.c b/ld/ldmain.c
-index d63002c994a..55364ef5773 100644
+index 9290a189b0d..da25dbb13b7 100644
 --- a/ld/ldmain.c
 +++ b/ld/ldmain.c
 @@ -321,6 +321,13 @@ main (int argc, char **argv)
@@ -310,10 +310,10 @@ index d63002c994a..55364ef5773 100644
    /* We initialize DEMANGLING based on the environment variable
       COLLECT_NO_DEMANGLE.  The gcc collect2 program will demangle the
 diff --git a/ld/lexsup.c b/ld/lexsup.c
-index 299371fb775..02816ebb1b6 100644
+index c5960385572..950b6969cb8 100644
 --- a/ld/lexsup.c
 +++ b/ld/lexsup.c
-@@ -579,6 +579,18 @@ static const struct ld_option ld_options[] =
+@@ -584,6 +584,18 @@ static const struct ld_option ld_options[] =
      OPTION_IGNORE_UNRESOLVED_SYMBOL},
      '\0', N_("SYMBOL"),
      N_("Unresolved SYMBOL will not cause an error or warning"), TWO_DASHES },
@@ -332,7 +332,7 @@ index 299371fb775..02816ebb1b6 100644
    { {"push-state", no_argument, NULL, OPTION_PUSH_STATE},
      '\0', NULL, N_("Push state of flags governing input file handling"),
      TWO_DASHES },
-@@ -1679,6 +1691,18 @@ parse_args (unsigned argc, char **argv)
+@@ -1692,6 +1704,18 @@ parse_args (unsigned argc, char **argv)
  	  }
  	  break;
  
@@ -352,5 +352,5 @@ index 299371fb775..02816ebb1b6 100644
  	  input_flags.pushed = xmemdup (&input_flags,
  					sizeof (input_flags),
 -- 
-2.38.0
+2.38.2
 

diff --git a/9999/0002-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch b/9999/0002-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch
index 9a5590e..f5936c6 100644
--- a/9999/0002-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch
+++ b/9999/0002-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch
@@ -1,4 +1,4 @@
-From 14210956fa30806c5316ede3db67cac94420bb96 Mon Sep 17 00:00:00 2001
+From 041fec351bca1ec30fa639ee80c0810a413b2d89 Mon Sep 17 00:00:00 2001
 From: Mike Frysinger <vapier@gentoo.org>
 Date: Fri, 7 Jan 2005 00:15:53 -0500
 Subject: [PATCH 2/6] Gentoo: libiberty: install PIC version of libiberty.a
@@ -18,7 +18,7 @@ general are fairly low, and we'd rather have things work for all of them.
  1 file changed, 1 insertion(+)
 
 diff --git a/libiberty/Makefile.in b/libiberty/Makefile.in
-index abef3c4601b..9dfb6b6d2b0 100644
+index f9fbba23e2c..d37488d1bf8 100644
 --- a/libiberty/Makefile.in
 +++ b/libiberty/Makefile.in
 @@ -258,6 +258,7 @@ $(TARGETLIB): $(REQUIRED_OFILES) $(EXTRA_OFILES) $(LIBOBJS)
@@ -30,5 +30,5 @@ index abef3c4601b..9dfb6b6d2b0 100644
  	else true; fi; \
  	if [ x"$(NOASANFLAG)" != x ]; then \
 -- 
-2.38.0
+2.38.2
 

diff --git a/9999/0003-Gentoo-add-with-extra-soversion-suffix-option.patch b/9999/0003-Gentoo-add-with-extra-soversion-suffix-option.patch
index 81265e4..8921582 100644
--- a/9999/0003-Gentoo-add-with-extra-soversion-suffix-option.patch
+++ b/9999/0003-Gentoo-add-with-extra-soversion-suffix-option.patch
@@ -1,4 +1,4 @@
-From 96aa5434285fe8006fd671634fe753cf69451043 Mon Sep 17 00:00:00 2001
+From b1e693934cde0f00e0b2fea50753e0f965bf7f88 Mon Sep 17 00:00:00 2001
 From: Sergei Trofimovich <slyfox@gentoo.org>
 Date: Tue, 20 Jul 2021 21:12:38 +0200
 Subject: [PATCH 3/6] Gentoo: add --with-extra-soversion-suffix= option
@@ -34,7 +34,7 @@ Ported to binutils 2.37 by Andreas K. Hüttel <dilfridge@gentoo.org>
  4 files changed, 29 insertions(+)
 
 diff --git a/bfd/Makefile.am b/bfd/Makefile.am
-index 794d992310d..34b71212d75 100644
+index 75d21db88d1..9137f025b87 100644
 --- a/bfd/Makefile.am
 +++ b/bfd/Makefile.am
 @@ -64,6 +64,8 @@ bfdinclude_HEADERS += $(INCDIR)/plugin-api.h
@@ -46,7 +46,7 @@ index 794d992310d..34b71212d75 100644
  # bfd.h goes here, for now
  BFD_H = bfd.h
  
-@@ -992,6 +994,9 @@ bfdver.h: $(srcdir)/version.h $(srcdir)/development.sh $(srcdir)/Makefile.in
+@@ -994,6 +996,9 @@ bfdver.h: $(srcdir)/version.h $(srcdir)/development.sh $(srcdir)/Makefile.in
  	  bfd_version_string="\"$(VERSION).$${bfd_version_date}\"" ;\
  	  bfd_soversion="$(VERSION).$${bfd_version_date}" ;\
  	fi ;\
@@ -57,7 +57,7 @@ index 794d992310d..34b71212d75 100644
  	    -e "s,@bfd_version_string@,$$bfd_version_string," \
  	    -e "s,@bfd_version_package@,$$bfd_version_package," \
 diff --git a/bfd/Makefile.in b/bfd/Makefile.in
-index bdf12c99cfd..e4c613d7406 100644
+index 0b0bb1a950e..0ee27ecc111 100644
 --- a/bfd/Makefile.in
 +++ b/bfd/Makefile.in
 @@ -355,6 +355,7 @@ ECHO_T = @ECHO_T@
@@ -68,7 +68,7 @@ index bdf12c99cfd..e4c613d7406 100644
  FGREP = @FGREP@
  GENCAT = @GENCAT@
  GMSGFMT = @GMSGFMT@
-@@ -2471,6 +2472,9 @@ bfdver.h: $(srcdir)/version.h $(srcdir)/development.sh $(srcdir)/Makefile.in
+@@ -2474,6 +2475,9 @@ bfdver.h: $(srcdir)/version.h $(srcdir)/development.sh $(srcdir)/Makefile.in
  	  bfd_version_string="\"$(VERSION).$${bfd_version_date}\"" ;\
  	  bfd_soversion="$(VERSION).$${bfd_version_date}" ;\
  	fi ;\
@@ -79,7 +79,7 @@ index bdf12c99cfd..e4c613d7406 100644
  	    -e "s,@bfd_version_string@,$$bfd_version_string," \
  	    -e "s,@bfd_version_package@,$$bfd_version_package," \
 diff --git a/bfd/configure b/bfd/configure
-index b72e885f711..b464614592d 100755
+index 5af8af2ee37..42bd8f32145 100755
 --- a/bfd/configure
 +++ b/bfd/configure
 @@ -695,6 +695,7 @@ WARN_CFLAGS
@@ -124,7 +124,7 @@ index b72e885f711..b464614592d 100755
  
  # Check whether --with-pkgversion was given.
 diff --git a/bfd/configure.ac b/bfd/configure.ac
-index 7a0ad0ffe33..2910cc9121f 100644
+index 82a3d1f832e..2b882c735d4 100644
 --- a/bfd/configure.ac
 +++ b/bfd/configure.ac
 @@ -168,6 +168,13 @@ AC_ARG_WITH(separate-debug-dir,
@@ -142,5 +142,5 @@ index 7a0ad0ffe33..2910cc9121f 100644
  ACX_BUGURL([https://sourceware.org/bugzilla/])
  
 -- 
-2.38.0
+2.38.2
 

diff --git a/9999/0004-Gentoo-Pass-hash-style-sysv-to-ld-in-the-testsuite.patch b/9999/0004-Gentoo-Pass-hash-style-sysv-to-ld-in-the-testsuite.patch
index 484c657..4411e88 100644
--- a/9999/0004-Gentoo-Pass-hash-style-sysv-to-ld-in-the-testsuite.patch
+++ b/9999/0004-Gentoo-Pass-hash-style-sysv-to-ld-in-the-testsuite.patch
@@ -1,4 +1,4 @@
-From eeb95d2a0cda143dad4d905429ced8a339c486e3 Mon Sep 17 00:00:00 2001
+From c45749c4cc5750db631e16b301133f15adfb94c7 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
 Date: Tue, 20 Jul 2021 21:15:24 +0200
 Subject: [PATCH 4/6] Gentoo: Pass --hash-style=sysv to ld in the testsuite
@@ -9,10 +9,10 @@ Subject: [PATCH 4/6] Gentoo: Pass --hash-style=sysv to ld in the testsuite
  2 files changed, 15 insertions(+), 3 deletions(-)
 
 diff --git a/binutils/testsuite/lib/binutils-common.exp b/binutils/testsuite/lib/binutils-common.exp
-index ccc33a827b4..f7aecf7edc2 100644
+index b0190ac51ac..aeef8e55b87 100644
 --- a/binutils/testsuite/lib/binutils-common.exp
 +++ b/binutils/testsuite/lib/binutils-common.exp
-@@ -1310,7 +1310,7 @@ proc run_dump_test { name {extra_options {}} } {
+@@ -1308,7 +1308,7 @@ proc run_dump_test { name {extra_options {}} } {
  
  	    # Add -L$srcdir/$subdir so that the linker command can use
  	    # linker scripts in the source directory.
@@ -22,7 +22,7 @@ index ccc33a827b4..f7aecf7edc2 100644
  
  	    # If needed then check for, or add a -Map option.
 diff --git a/ld/testsuite/lib/ld-lib.exp b/ld/testsuite/lib/ld-lib.exp
-index ec27388a72e..fc7292a40a7 100644
+index 47e86a7b27c..55192a05f35 100644
 --- a/ld/testsuite/lib/ld-lib.exp
 +++ b/ld/testsuite/lib/ld-lib.exp
 @@ -171,7 +171,7 @@ proc default_ld_relocate { ld target objects } {
@@ -57,5 +57,5 @@ index ec27388a72e..fc7292a40a7 100644
  
      # We don't care if we get a warning about a non-existent start
 -- 
-2.38.0
+2.38.2
 

diff --git a/9999/0005-Gentoo-Give-also-libctf-optionally-a-gentoo-specific.patch b/9999/0005-Gentoo-Give-also-libctf-optionally-a-gentoo-specific.patch
index 2133994..3ac7217 100644
--- a/9999/0005-Gentoo-Give-also-libctf-optionally-a-gentoo-specific.patch
+++ b/9999/0005-Gentoo-Give-also-libctf-optionally-a-gentoo-specific.patch
@@ -1,4 +1,4 @@
-From ee4de1adb09cbfcad39e544e2f05392b210b550a Mon Sep 17 00:00:00 2001
+From ffb569acc3bfa5a22cc6581338108f79fd3d8c55 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
 Date: Sat, 24 Jul 2021 15:20:16 +0200
 Subject: [PATCH 5/6] Gentoo: Give also libctf optionally a gentoo-specific
@@ -12,7 +12,7 @@ Subject: [PATCH 5/6] Gentoo: Give also libctf optionally a gentoo-specific
  4 files changed, 64 insertions(+), 4 deletions(-)
 
 diff --git a/libctf/Makefile.am b/libctf/Makefile.am
-index 27e90f0ba36..4990a20efa3 100644
+index c4809f70bae..5571eef8aa1 100644
 --- a/libctf/Makefile.am
 +++ b/libctf/Makefile.am
 @@ -26,6 +26,9 @@ info_TEXINFOS =
@@ -45,10 +45,10 @@ index 27e90f0ba36..4990a20efa3 100644
  libctf_nobfd_la_CPPFLAGS = $(AM_CPPFLAGS) -DNOBFD=1
  libctf_nobfd_la_SOURCES = ctf-archive.c ctf-dump.c ctf-create.c ctf-decl.c ctf-error.c \
 diff --git a/libctf/Makefile.in b/libctf/Makefile.in
-index 036a63fa720..e971f0b31bb 100644
+index f2b852e3fae..14fc79bf5a9 100644
 --- a/libctf/Makefile.in
 +++ b/libctf/Makefile.in
-@@ -383,6 +383,7 @@ AUTOCONF = @AUTOCONF@
+@@ -381,6 +381,7 @@ AUTOCONF = @AUTOCONF@
  AUTOHEADER = @AUTOHEADER@
  AUTOMAKE = @AUTOMAKE@
  AWK = @AWK@
@@ -56,7 +56,7 @@ index 036a63fa720..e971f0b31bb 100644
  CATALOGS = @CATALOGS@
  CATOBJEXT = @CATOBJEXT@
  CC = @CC@
-@@ -405,6 +406,7 @@ EXEEXT = @EXEEXT@
+@@ -403,6 +404,7 @@ EXEEXT = @EXEEXT@
  
  # Setup the testing framework, if you have one
  EXPECT = expect
@@ -64,7 +64,7 @@ index 036a63fa720..e971f0b31bb 100644
  FGREP = @FGREP@
  GENCAT = @GENCAT@
  GMSGFMT = @GMSGFMT@
-@@ -547,8 +549,13 @@ AM_CFLAGS = -std=gnu99 @ac_libctf_warn_cflags@ @warn@ @c_warn@ @WARN_PEDANTIC@ @
+@@ -540,8 +542,13 @@ AM_CFLAGS = -std=gnu99 @ac_libctf_warn_cflags@ @warn@ @c_warn@ @WARN_PEDANTIC@ @
  @INSTALL_LIBBFD_FALSE@include_HEADERS = 
  @INSTALL_LIBBFD_TRUE@include_HEADERS = $(INCDIR)/ctf.h $(INCDIR)/ctf-api.h
  @INSTALL_LIBBFD_FALSE@noinst_LTLIBRARIES = libctf.la libctf-nobfd.la
@@ -80,7 +80,7 @@ index 036a63fa720..e971f0b31bb 100644
  libctf_nobfd_la_CPPFLAGS = $(AM_CPPFLAGS) -DNOBFD=1
  libctf_nobfd_la_SOURCES = ctf-archive.c ctf-dump.c ctf-create.c \
 diff --git a/libctf/configure b/libctf/configure
-index 176b3d6b918..31fe5f72a90 100755
+index 17463a74cca..b0b5c78a7a6 100755
 --- a/libctf/configure
 +++ b/libctf/configure
 @@ -646,6 +646,10 @@ BUILD_INFO_FALSE
@@ -93,43 +93,43 @@ index 176b3d6b918..31fe5f72a90 100755
 +EXTRA_SOVERSION_SUFFIX
  ENABLE_LIBCTF_HASH_DEBUGGING_FALSE
  ENABLE_LIBCTF_HASH_DEBUGGING_TRUE
- ZSTD_LIBS
-@@ -813,6 +817,7 @@ enable_install_libbfd
+ zlibinc
+@@ -807,6 +811,7 @@ enable_maintainer_mode
+ enable_install_libbfd
  with_system_zlib
- with_zstd
  enable_libctf_hash_debugging
 +with_extra_soversion_suffix
  '
        ac_precious_vars='build_alias
  host_alias
-@@ -1477,6 +1482,8 @@ Optional Packages:
+@@ -1464,6 +1469,8 @@ Optional Packages:
+                           both]
+   --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
    --with-system-zlib      use installed libz
-   --with-zstd             support zstd compressed debug sections
-                           (default=auto)
 +  --with-extra-soversion-suffix=SUFFIX
 +                          Append '.SUFFIX' to SONAME [[default=]]
  
  Some influential environment variables:
    CC          C compiler command
-@@ -11655,7 +11662,7 @@ else
+@@ -11632,7 +11639,7 @@ else
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
--#line 11658 "configure"
+-#line 11635 "configure"
 +#line 11665 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
-@@ -11761,7 +11768,7 @@ else
+@@ -11738,7 +11745,7 @@ else
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
--#line 11764 "configure"
+-#line 11741 "configure"
 +#line 11771 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
-@@ -13209,6 +13216,26 @@ else
+@@ -14305,6 +14312,26 @@ else
  fi
  
  
@@ -156,7 +156,7 @@ index 176b3d6b918..31fe5f72a90 100755
  # Similar to GDB_AC_CHECK_BFD.
  OLD_CFLAGS=$CFLAGS
  OLD_LDFLAGS=$LDFLAGS
-@@ -14101,6 +14128,10 @@ if test -z "${ENABLE_LIBCTF_HASH_DEBUGGING_TRUE}" && test -z "${ENABLE_LIBCTF_HA
+@@ -15199,6 +15226,10 @@ if test -z "${ENABLE_LIBCTF_HASH_DEBUGGING_TRUE}" && test -z "${ENABLE_LIBCTF_HA
    as_fn_error $? "conditional \"ENABLE_LIBCTF_HASH_DEBUGGING\" was never defined.
  Usually this means the macro was only invoked conditionally." "$LINENO" 5
  fi
@@ -168,10 +168,10 @@ index 176b3d6b918..31fe5f72a90 100755
  if test -z "${NEED_CTF_QSORT_R_TRUE}" && test -z "${NEED_CTF_QSORT_R_FALSE}"; then
    as_fn_error $? "conditional \"NEED_CTF_QSORT_R\" was never defined.
 diff --git a/libctf/configure.ac b/libctf/configure.ac
-index 2e2ccf4b624..fbe5f27241b 100644
+index a0148a4c328..1901ade381d 100644
 --- a/libctf/configure.ac
 +++ b/libctf/configure.ac
-@@ -79,6 +79,16 @@ if test "${enable_libctf_hash_debugging}" = yes; then
+@@ -76,6 +76,16 @@ if test "${enable_libctf_hash_debugging}" = yes; then
  fi
  AM_CONDITIONAL(ENABLE_LIBCTF_HASH_DEBUGGING, test "${enable_libctf_hash_debugging}" = yes)
  
@@ -189,5 +189,5 @@ index 2e2ccf4b624..fbe5f27241b 100644
  OLD_CFLAGS=$CFLAGS
  OLD_LDFLAGS=$LDFLAGS
 -- 
-2.38.0
+2.38.2
 

diff --git a/9999/0006-Gentoo-XFAIL-15-broken-ld.gold-tests.patch b/9999/0006-Gentoo-XFAIL-15-broken-ld.gold-tests.patch
index 23e7576..303942b 100644
--- a/9999/0006-Gentoo-XFAIL-15-broken-ld.gold-tests.patch
+++ b/9999/0006-Gentoo-XFAIL-15-broken-ld.gold-tests.patch
@@ -1,4 +1,4 @@
-From 85c162be0eea0006c9d73fae243d771f7d0c9756 Mon Sep 17 00:00:00 2001
+From a5ae5bca2b691999092655fe0df9b6c22e76ffaa Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
 Date: Sat, 31 Jul 2021 01:18:18 +0200
 Subject: [PATCH 6/6] Gentoo: XFAIL 15 broken ld.gold tests
@@ -16,7 +16,7 @@ Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=27303
  2 files changed, 18 insertions(+), 4 deletions(-)
 
 diff --git a/gold/testsuite/Makefile.am b/gold/testsuite/Makefile.am
-index 843fd0d197c..4940119c190 100644
+index df9405c1aac..749921633b2 100644
 --- a/gold/testsuite/Makefile.am
 +++ b/gold/testsuite/Makefile.am
 @@ -1,5 +1,11 @@
@@ -32,7 +32,7 @@ index 843fd0d197c..4940119c190 100644
  # system and the host system are the same.  So these tests will not
  # work when building with a cross-compiler.
 diff --git a/gold/testsuite/Makefile.in b/gold/testsuite/Makefile.in
-index 21804df6573..6a4e2b5c5bb 100644
+index fb0eb12553b..b506a7f8da7 100644
 --- a/gold/testsuite/Makefile.in
 +++ b/gold/testsuite/Makefile.in
 @@ -15,10 +15,6 @@
@@ -61,7 +61,7 @@ index 21804df6573..6a4e2b5c5bb 100644
  check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
  	$(am__EXEEXT_4) $(am__EXEEXT_5) $(am__EXEEXT_6) \
  	$(am__EXEEXT_7) $(am__EXEEXT_8) $(am__EXEEXT_9) \
-@@ -2757,6 +2761,10 @@ top_srcdir = @top_srcdir@
+@@ -2759,6 +2763,10 @@ top_srcdir = @top_srcdir@
  zlibdir = @zlibdir@
  zlibinc = @zlibinc@
  
@@ -73,5 +73,5 @@ index 21804df6573..6a4e2b5c5bb 100644
  AUTOMAKE_OPTIONS = foreign -Wno-portability
  
 -- 
-2.38.0
+2.38.2
 


^ permalink raw reply related	[flat|nested] 39+ messages in thread

* [gentoo-commits] proj/toolchain/binutils-patches:master commit in: 9999/
@ 2023-01-03 23:03 Andreas K. Hüttel
  0 siblings, 0 replies; 39+ messages in thread
From: Andreas K. Hüttel @ 2023-01-03 23:03 UTC (permalink / raw
  To: gentoo-commits

commit:     c0ada7cf5326b17ffd2a4f8e6e9699f83e8e9b04
Author:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
AuthorDate: Tue Jan  3 23:02:41 2023 +0000
Commit:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
CommitDate: Tue Jan  3 23:02:41 2023 +0000
URL:        https://gitweb.gentoo.org/proj/toolchain/binutils-patches.git/commit/?id=c0ada7cf

Fix tests on aarch64 (submitted upstream)

Signed-off-by: Andreas K. Hüttel <dilfridge <AT> gentoo.org>

 ...e-relax-regexps-to-make-tests-pass-on-aar.patch | 52 ++++++++++++++++++++++
 ...e-un-xfail-pr19719-tests-on-aarch64-seems.patch | 26 +++++++++++
 2 files changed, 78 insertions(+)

diff --git a/9999/0007-ld-testsuite-relax-regexps-to-make-tests-pass-on-aar.patch b/9999/0007-ld-testsuite-relax-regexps-to-make-tests-pass-on-aar.patch
new file mode 100644
index 0000000..d129d85
--- /dev/null
+++ b/9999/0007-ld-testsuite-relax-regexps-to-make-tests-pass-on-aar.patch
@@ -0,0 +1,52 @@
+From 80c4388424197f5994fa71646fe81ba77b69d996 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
+Date: Tue, 3 Jan 2023 22:23:02 +0100
+Subject: [PATCH 1/2] ld testsuite: relax regexps to make tests pass on
+ aarch64, bug 29843
+
+---
+ ld/testsuite/ld-aarch64/bti-plt-5.d              | 8 ++++----
+ ld/testsuite/ld-aarch64/tls-relax-gdesc-le-now.d | 2 +-
+ 2 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/ld/testsuite/ld-aarch64/bti-plt-5.d b/ld/testsuite/ld-aarch64/bti-plt-5.d
+index 12abbc2e055..ed0029b8de1 100644
+--- a/ld/testsuite/ld-aarch64/bti-plt-5.d
++++ b/ld/testsuite/ld-aarch64/bti-plt-5.d
+@@ -13,8 +13,8 @@ Disassembly of section \.plt:
+ .*:	d503245f 	bti	c
+ .*:	a9bf7bf0 	stp	x16, x30, \[sp, #-16\]!
+ .*:	90000090 	adrp	x16, 410000 <.*>
+-.*:	f9421611 	ldr	x17, \[x16, #1064\]
+-.*:	9110a210 	add	x16, x16, #0x428
++.*:	f9...... 	ldr	x17, \[x16, #....\]
++.*:	91...... 	add	x16, x16, #0x...
+ .*:	d61f0220 	br	x17
+ .*:	d503201f 	nop
+ .*:	d503201f 	nop
+@@ -22,7 +22,7 @@ Disassembly of section \.plt:
+ [0-9a-f]+ <.*>:
+ .*:	d503245f 	bti	c
+ .*:	90000090 	adrp	x16, 410000 <.*>
+-.*:	f9421a11 	ldr	x17, \[x16, #1072\]
+-.*:	9110c210 	add	x16, x16, #0x430
++.*:	f9...... 	ldr	x17, \[x16, #....\]
++.*:	91...... 	add	x16, x16, #0x...
+ .*:	d61f0220 	br	x17
+ .*:	d503201f 	nop
+diff --git a/ld/testsuite/ld-aarch64/tls-relax-gdesc-le-now.d b/ld/testsuite/ld-aarch64/tls-relax-gdesc-le-now.d
+index 8b6dceff81b..dcf913428fb 100644
+--- a/ld/testsuite/ld-aarch64/tls-relax-gdesc-le-now.d
++++ b/ld/testsuite/ld-aarch64/tls-relax-gdesc-le-now.d
+@@ -11,7 +11,7 @@
+  0x.+ \(PLTRELSZ\) \s+.+ \(bytes\)
+  0x.+ \(PLTREL\)   \s+RELA
+  0x.+ \(JMPREL\)   \s+0x.+
+- 0x.+ \(BIND_NOW\) \s+
++ 0x.+ (\(BIND_NOW\) \s+|\(FLAGS\)  \s+   BIND_NOW)
+  0x.+ \(FLAGS_1\)  \s+   Flags: NOW
+  0x.+ \(NULL\)     \s+   0x0
+ 
+-- 
+2.38.2
+

diff --git a/9999/0008-ld-testsuite-un-xfail-pr19719-tests-on-aarch64-seems.patch b/9999/0008-ld-testsuite-un-xfail-pr19719-tests-on-aarch64-seems.patch
new file mode 100644
index 0000000..7168d7e
--- /dev/null
+++ b/9999/0008-ld-testsuite-un-xfail-pr19719-tests-on-aarch64-seems.patch
@@ -0,0 +1,26 @@
+From 0564593ab415665b6de8089debf4a0205582d8ef Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
+Date: Tue, 3 Jan 2023 22:39:24 +0100
+Subject: [PATCH 2/2] ld testsuite: un-xfail pr19719 tests on aarch64, seems to
+ succeed now
+
+---
+ ld/testsuite/ld-elf/shared.exp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/ld/testsuite/ld-elf/shared.exp b/ld/testsuite/ld-elf/shared.exp
+index 6dd99bb5c9d..db9d71398de 100644
+--- a/ld/testsuite/ld-elf/shared.exp
++++ b/ld/testsuite/ld-elf/shared.exp
+@@ -1656,7 +1656,7 @@ proc mix_pic_and_non_pic {xfails cflags ldflags exe} {
+     }
+ }
+ 
+-mix_pic_and_non_pic [list "arm*-*-*" "aarch64*-*-*"] "" "" "pr19719"
++mix_pic_and_non_pic [list "arm*-*-*"] "" "" "pr19719"
+ mix_pic_and_non_pic [] "-fPIE" "-pie" "pr19719pie"
+ 
+ set AFLAGS_PIE ""
+-- 
+2.38.2
+


^ permalink raw reply related	[flat|nested] 39+ messages in thread

* [gentoo-commits] proj/toolchain/binutils-patches:master commit in: 9999/
@ 2023-01-05 16:21 Andreas K. Hüttel
  0 siblings, 0 replies; 39+ messages in thread
From: Andreas K. Hüttel @ 2023-01-05 16:21 UTC (permalink / raw
  To: gentoo-commits

commit:     701c5749a5548f5fb002477ad33e9379889a77c4
Author:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
AuthorDate: Thu Jan  5 16:21:05 2023 +0000
Commit:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
CommitDate: Thu Jan  5 16:21:05 2023 +0000
URL:        https://gitweb.gentoo.org/proj/toolchain/binutils-patches.git/commit/?id=701c5749

Patch 0007 pushed upstream

Signed-off-by: Andreas K. Hüttel <dilfridge <AT> gentoo.org>

 ...e-relax-regexps-to-make-tests-pass-on-aar.patch | 52 ----------------------
 1 file changed, 52 deletions(-)

diff --git a/9999/0007-ld-testsuite-relax-regexps-to-make-tests-pass-on-aar.patch b/9999/0007-ld-testsuite-relax-regexps-to-make-tests-pass-on-aar.patch
deleted file mode 100644
index d129d85..0000000
--- a/9999/0007-ld-testsuite-relax-regexps-to-make-tests-pass-on-aar.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 80c4388424197f5994fa71646fe81ba77b69d996 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
-Date: Tue, 3 Jan 2023 22:23:02 +0100
-Subject: [PATCH 1/2] ld testsuite: relax regexps to make tests pass on
- aarch64, bug 29843
-
----
- ld/testsuite/ld-aarch64/bti-plt-5.d              | 8 ++++----
- ld/testsuite/ld-aarch64/tls-relax-gdesc-le-now.d | 2 +-
- 2 files changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/ld/testsuite/ld-aarch64/bti-plt-5.d b/ld/testsuite/ld-aarch64/bti-plt-5.d
-index 12abbc2e055..ed0029b8de1 100644
---- a/ld/testsuite/ld-aarch64/bti-plt-5.d
-+++ b/ld/testsuite/ld-aarch64/bti-plt-5.d
-@@ -13,8 +13,8 @@ Disassembly of section \.plt:
- .*:	d503245f 	bti	c
- .*:	a9bf7bf0 	stp	x16, x30, \[sp, #-16\]!
- .*:	90000090 	adrp	x16, 410000 <.*>
--.*:	f9421611 	ldr	x17, \[x16, #1064\]
--.*:	9110a210 	add	x16, x16, #0x428
-+.*:	f9...... 	ldr	x17, \[x16, #....\]
-+.*:	91...... 	add	x16, x16, #0x...
- .*:	d61f0220 	br	x17
- .*:	d503201f 	nop
- .*:	d503201f 	nop
-@@ -22,7 +22,7 @@ Disassembly of section \.plt:
- [0-9a-f]+ <.*>:
- .*:	d503245f 	bti	c
- .*:	90000090 	adrp	x16, 410000 <.*>
--.*:	f9421a11 	ldr	x17, \[x16, #1072\]
--.*:	9110c210 	add	x16, x16, #0x430
-+.*:	f9...... 	ldr	x17, \[x16, #....\]
-+.*:	91...... 	add	x16, x16, #0x...
- .*:	d61f0220 	br	x17
- .*:	d503201f 	nop
-diff --git a/ld/testsuite/ld-aarch64/tls-relax-gdesc-le-now.d b/ld/testsuite/ld-aarch64/tls-relax-gdesc-le-now.d
-index 8b6dceff81b..dcf913428fb 100644
---- a/ld/testsuite/ld-aarch64/tls-relax-gdesc-le-now.d
-+++ b/ld/testsuite/ld-aarch64/tls-relax-gdesc-le-now.d
-@@ -11,7 +11,7 @@
-  0x.+ \(PLTRELSZ\) \s+.+ \(bytes\)
-  0x.+ \(PLTREL\)   \s+RELA
-  0x.+ \(JMPREL\)   \s+0x.+
-- 0x.+ \(BIND_NOW\) \s+
-+ 0x.+ (\(BIND_NOW\) \s+|\(FLAGS\)  \s+   BIND_NOW)
-  0x.+ \(FLAGS_1\)  \s+   Flags: NOW
-  0x.+ \(NULL\)     \s+   0x0
- 
--- 
-2.38.2
-


^ permalink raw reply related	[flat|nested] 39+ messages in thread

* [gentoo-commits] proj/toolchain/binutils-patches:master commit in: 9999/
@ 2023-01-05 16:22 Andreas K. Hüttel
  0 siblings, 0 replies; 39+ messages in thread
From: Andreas K. Hüttel @ 2023-01-05 16:22 UTC (permalink / raw
  To: gentoo-commits

commit:     39d3e22103c9b44afb5c9b6eba4298a9f3394c9f
Author:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
AuthorDate: Thu Jan  5 16:22:01 2023 +0000
Commit:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
CommitDate: Thu Jan  5 16:22:01 2023 +0000
URL:        https://gitweb.gentoo.org/proj/toolchain/binutils-patches.git/commit/?id=39d3e221

Patch 0008 pushed upstream

Signed-off-by: Andreas K. Hüttel <dilfridge <AT> gentoo.org>

 ...e-un-xfail-pr19719-tests-on-aarch64-seems.patch | 26 ----------------------
 1 file changed, 26 deletions(-)

diff --git a/9999/0008-ld-testsuite-un-xfail-pr19719-tests-on-aarch64-seems.patch b/9999/0008-ld-testsuite-un-xfail-pr19719-tests-on-aarch64-seems.patch
deleted file mode 100644
index 7168d7e..0000000
--- a/9999/0008-ld-testsuite-un-xfail-pr19719-tests-on-aarch64-seems.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 0564593ab415665b6de8089debf4a0205582d8ef Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
-Date: Tue, 3 Jan 2023 22:39:24 +0100
-Subject: [PATCH 2/2] ld testsuite: un-xfail pr19719 tests on aarch64, seems to
- succeed now
-
----
- ld/testsuite/ld-elf/shared.exp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/ld/testsuite/ld-elf/shared.exp b/ld/testsuite/ld-elf/shared.exp
-index 6dd99bb5c9d..db9d71398de 100644
---- a/ld/testsuite/ld-elf/shared.exp
-+++ b/ld/testsuite/ld-elf/shared.exp
-@@ -1656,7 +1656,7 @@ proc mix_pic_and_non_pic {xfails cflags ldflags exe} {
-     }
- }
- 
--mix_pic_and_non_pic [list "arm*-*-*" "aarch64*-*-*"] "" "" "pr19719"
-+mix_pic_and_non_pic [list "arm*-*-*"] "" "" "pr19719"
- mix_pic_and_non_pic [] "-fPIE" "-pie" "pr19719pie"
- 
- set AFLAGS_PIE ""
--- 
-2.38.2
-


^ permalink raw reply related	[flat|nested] 39+ messages in thread

* [gentoo-commits] proj/toolchain/binutils-patches:master commit in: 9999/
@ 2023-04-02 11:44 Andreas K. Hüttel
  0 siblings, 0 replies; 39+ messages in thread
From: Andreas K. Hüttel @ 2023-04-02 11:44 UTC (permalink / raw
  To: gentoo-commits

commit:     b359e23310a3269a6b25f49fa0c962364ece0fc5
Author:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
AuthorDate: Sun Apr  2 11:43:34 2023 +0000
Commit:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
CommitDate: Sun Apr  2 11:43:34 2023 +0000
URL:        https://gitweb.gentoo.org/proj/toolchain/binutils-patches.git/commit/?id=b359e233

Apply build fix for libiberty to libopcodes and libgprofng

To be upstreamed properly

Bug: https://bugs.gentoo.org/834720
Signed-off-by: Andreas K. Hüttel <dilfridge <AT> gentoo.org>

 ...ilar-libiberty-fix-as-in-7d53105d-for-lib.patch | 84 ++++++++++++++++++++++
 1 file changed, 84 insertions(+)

diff --git a/9999/0007-Apply-a-similar-libiberty-fix-as-in-7d53105d-for-lib.patch b/9999/0007-Apply-a-similar-libiberty-fix-as-in-7d53105d-for-lib.patch
new file mode 100644
index 0000000..d915528
--- /dev/null
+++ b/9999/0007-Apply-a-similar-libiberty-fix-as-in-7d53105d-for-lib.patch
@@ -0,0 +1,84 @@
+From afc5e9fab399c9164f7355b69d0e23318d0559a5 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
+Date: Wed, 22 Feb 2023 20:05:35 +0100
+Subject: [PATCH] Apply a similar libiberty fix as in 7d53105d for libopcodes
+ and libgprofng
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=29042
+Bug: https://bugs.gentoo.org/834720
+Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
+---
+ gprofng/src/Makefile.am | 3 ++-
+ gprofng/src/Makefile.in | 3 ++-
+ opcodes/configure       | 4 ++--
+ opcodes/configure.ac    | 4 ++--
+ 4 files changed, 8 insertions(+), 6 deletions(-)
+
+diff --git a/gprofng/src/Makefile.am b/gprofng/src/Makefile.am
+index ab90bb08c5f..96256faf788 100644
+--- a/gprofng/src/Makefile.am
++++ b/gprofng/src/Makefile.am
+@@ -131,7 +131,8 @@ libgprofng_la_LDFLAGS = -version-info 0:0:0
+ # Pass -lpthread instead of $(PTHREAD_LIBS) due to $(PTHREAD_LIBS) being empty
+ # when -nostdlib is passed to libtool.
+ # See bug 29364 - libgprofng.so: needs to link against -pthread
+-libgprofng_la_LIBADD = $(top_builddir)/../opcodes/libopcodes.la \
++libgprofng_la_LIBADD = $(GPROFNG_LIBADD) \
++	$(top_builddir)/../opcodes/libopcodes.la \
+ 	$(top_builddir)/../bfd/libbfd.la \
+ 	$(GPROFNG_LIBADD) \
+ 	-lpthread -ldl
+diff --git a/gprofng/src/Makefile.in b/gprofng/src/Makefile.in
+index 605fa4f6fd4..f968d8d6e59 100644
+--- a/gprofng/src/Makefile.in
++++ b/gprofng/src/Makefile.in
+@@ -555,7 +555,8 @@ libgprofng_la_LDFLAGS = -version-info 0:0:0
+ # Pass -lpthread instead of $(PTHREAD_LIBS) due to $(PTHREAD_LIBS) being empty
+ # when -nostdlib is passed to libtool.
+ # See bug 29364 - libgprofng.so: needs to link against -pthread
+-libgprofng_la_LIBADD = $(top_builddir)/../opcodes/libopcodes.la \
++libgprofng_la_LIBADD = $(GPROFNG_LIBADD) \
++	$(top_builddir)/../opcodes/libopcodes.la \
+ 	$(top_builddir)/../bfd/libbfd.la \
+ 	$(GPROFNG_LIBADD) \
+ 	-lpthread -ldl
+diff --git a/opcodes/configure b/opcodes/configure
+index d2364991ee8..1f483e37fc9 100755
+--- a/opcodes/configure
++++ b/opcodes/configure
+@@ -12445,10 +12445,10 @@ if test "$enable_shared" = "yes"; then
+   case "${host}" in
+     *-*-cygwin*)
+       SHARED_LDFLAGS="-no-undefined"
+-      SHARED_LIBADD="-L`pwd`/../bfd -lbfd -L`pwd`/../libiberty -liberty $SHARED_LIBADD"
++      SHARED_LIBADD="$SHARED_LIBADD -L`pwd`/../bfd -lbfd -L`pwd`/../libiberty -liberty $SHARED_LIBADD"
+       ;;
+     *)
+-      SHARED_LIBADD="../bfd/libbfd.la ${SHARED_LIBADD}"
++      SHARED_LIBADD="${SHARED_LIBADD} ../bfd/libbfd.la ${SHARED_LIBADD}"
+       SHARED_DEPENDENCIES="../bfd/libbfd.la"
+       ;;
+   esac
+diff --git a/opcodes/configure.ac b/opcodes/configure.ac
+index 1beb72e87e0..79310916f7d 100644
+--- a/opcodes/configure.ac
++++ b/opcodes/configure.ac
+@@ -193,10 +193,10 @@ if test "$enable_shared" = "yes"; then
+   case "${host}" in
+     *-*-cygwin*)
+       SHARED_LDFLAGS="-no-undefined"
+-      SHARED_LIBADD="-L`pwd`/../bfd -lbfd -L`pwd`/../libiberty -liberty $SHARED_LIBADD"
++      SHARED_LIBADD="$SHARED_LIBADD -L`pwd`/../bfd -lbfd -L`pwd`/../libiberty -liberty $SHARED_LIBADD"
+       ;;
+     *)
+-      SHARED_LIBADD="../bfd/libbfd.la ${SHARED_LIBADD}"
++      SHARED_LIBADD="${SHARED_LIBADD} ../bfd/libbfd.la ${SHARED_LIBADD}"
+       SHARED_DEPENDENCIES="../bfd/libbfd.la"
+       ;;
+   esac
+-- 
+2.39.2
+


^ permalink raw reply related	[flat|nested] 39+ messages in thread

* [gentoo-commits] proj/toolchain/binutils-patches:master commit in: 9999/
@ 2023-06-30  9:21 WANG Xuerui
  0 siblings, 0 replies; 39+ messages in thread
From: WANG Xuerui @ 2023-06-30  9:21 UTC (permalink / raw
  To: gentoo-commits

commit:     73a506ab573568d06b30206258b2d4875b5450fb
Author:     WANG Xuerui <xen0n <AT> gentoo <DOT> org>
AuthorDate: Fri Jun 30 09:19:42 2023 +0000
Commit:     WANG Xuerui <xen0n <AT> gentoo <DOT> org>
CommitDate: Fri Jun 30 09:19:50 2023 +0000
URL:        https://gitweb.gentoo.org/proj/toolchain/binutils-patches.git/commit/?id=73a506ab

Rebase on top of upstream commit 6637ae9232f0ba44

Signed-off-by: WANG Xuerui <xen0n <AT> gentoo.org>

 ...-ld-add-support-for-poisoned-system-direc.patch | 32 ++++++++---------
 ...iberty-install-PIC-version-of-libiberty.a.patch |  6 ++--
 ...oo-add-with-extra-soversion-suffix-option.patch | 20 +++++------
 ...ss-hash-style-sysv-to-ld-in-the-testsuite.patch | 12 +++----
 ...-also-libctf-optionally-a-gentoo-specific.patch | 40 +++++++++++-----------
 ...0006-Gentoo-XFAIL-15-broken-ld.gold-tests.patch |  6 ++--
 ...ilar-libiberty-fix-as-in-7d53105d-for-lib.patch | 16 ++++-----
 7 files changed, 66 insertions(+), 66 deletions(-)

diff --git a/9999/0001-Gentoo-gold-ld-add-support-for-poisoned-system-direc.patch b/9999/0001-Gentoo-gold-ld-add-support-for-poisoned-system-direc.patch
index c9a15e1..716fa9b 100644
--- a/9999/0001-Gentoo-gold-ld-add-support-for-poisoned-system-direc.patch
+++ b/9999/0001-Gentoo-gold-ld-add-support-for-poisoned-system-direc.patch
@@ -1,7 +1,7 @@
-From febeab1e92e6aaf19a3a67a8729cbe0a444ddf59 Mon Sep 17 00:00:00 2001
+From 38cf5d1565c113e64a5cdfc9d55d554919bc10d7 Mon Sep 17 00:00:00 2001
 From: Mike Frysinger <vapier@gentoo.org>
 Date: Tue, 20 Jul 2021 21:08:31 +0200
-Subject: [PATCH 1/6] Gentoo: gold/ld: add support for poisoned system
+Subject: [PATCH 1/7] Gentoo: gold/ld: add support for poisoned system
  directories
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
@@ -88,10 +88,10 @@ index c9834b66159..bd3e948a61b 100644
    if (this->shared() && this->is_static())
      gold_fatal(_("-shared and -static are incompatible"));
 diff --git a/gold/options.h b/gold/options.h
-index 1aa451c7711..524c7c859df 100644
+index 46f658f23ea..8f9b8c177ad 100644
 --- a/gold/options.h
 +++ b/gold/options.h
-@@ -1398,6 +1398,13 @@ class General_options
+@@ -1402,6 +1402,13 @@ class General_options
    DEFINE_bool(warn_multiple_gp, options::TWO_DASHES, '\0', false,
  	      N_("Ignored"), NULL);
  
@@ -200,7 +200,7 @@ index 77edac3258c..a74dac63038 100644
  dnl "install_as_default" is set to false if gold is the default linker.
  dnl "installed_linker" is the installed BFD linker name.
 diff --git a/ld/ld.h b/ld/ld.h
-index 05649ff61b8..ce9e8229ac5 100644
+index a0f8a15c7a9..69420b6673a 100644
 --- a/ld/ld.h
 +++ b/ld/ld.h
 @@ -163,6 +163,13 @@ typedef struct
@@ -218,10 +218,10 @@ index 05649ff61b8..ce9e8229ac5 100644
    enum endian_enum endian;
  
 diff --git a/ld/ld.texi b/ld/ld.texi
-index db3a9f09b45..5b543914e67 100644
+index aa8b1aa86eb..b57b0d5c9f5 100644
 --- a/ld/ld.texi
 +++ b/ld/ld.texi
-@@ -2960,6 +2960,24 @@ creation of the metadata note, if one had been enabled by an earlier
+@@ -3059,6 +3059,24 @@ creation of the metadata note, if one had been enabled by an earlier
  occurrence of the --package-metdata option.
  If the linker has been built with libjansson, then the JSON string
  will be validated.
@@ -247,10 +247,10 @@ index db3a9f09b45..5b543914e67 100644
  
  @c man end
 diff --git a/ld/ldfile.c b/ld/ldfile.c
-index b8fd4e5d8e0..639204f4c29 100644
+index c8a6874978b..6ba20992b66 100644
 --- a/ld/ldfile.c
 +++ b/ld/ldfile.c
-@@ -117,6 +117,26 @@ ldfile_add_library_path (const char *name, bool cmdline)
+@@ -327,6 +327,26 @@ ldfile_add_library_path (const char *name, bool cmdline)
      new_dirs->name = concat (ld_sysroot, name + strlen ("$SYSROOT"), (const char *) NULL);
    else
      new_dirs->name = xstrdup (name);
@@ -278,7 +278,7 @@ index b8fd4e5d8e0..639204f4c29 100644
  
  /* Try to open a BFD for a lang_input_statement.  */
 diff --git a/ld/ldlex.h b/ld/ldlex.h
-index 0538f0a06a1..82685348055 100644
+index 87cac02141d..d79ec8faa15 100644
 --- a/ld/ldlex.h
 +++ b/ld/ldlex.h
 @@ -151,6 +151,9 @@ enum option_values
@@ -292,10 +292,10 @@ index 0538f0a06a1..82685348055 100644
    OPTION_POP_STATE,
    OPTION_DISABLE_MULTIPLE_DEFS_ABS,
 diff --git a/ld/ldmain.c b/ld/ldmain.c
-index 9290a189b0d..da25dbb13b7 100644
+index 25cc89b72f9..9c81fd6f539 100644
 --- a/ld/ldmain.c
 +++ b/ld/ldmain.c
-@@ -321,6 +321,13 @@ main (int argc, char **argv)
+@@ -325,6 +325,13 @@ main (int argc, char **argv)
    command_line.warn_mismatch = true;
    command_line.warn_search_mismatch = true;
    command_line.check_section_addresses = -1;
@@ -310,10 +310,10 @@ index 9290a189b0d..da25dbb13b7 100644
    /* We initialize DEMANGLING based on the environment variable
       COLLECT_NO_DEMANGLE.  The gcc collect2 program will demangle the
 diff --git a/ld/lexsup.c b/ld/lexsup.c
-index c5960385572..950b6969cb8 100644
+index fe8722313fe..5fd7350efc5 100644
 --- a/ld/lexsup.c
 +++ b/ld/lexsup.c
-@@ -584,6 +584,18 @@ static const struct ld_option ld_options[] =
+@@ -594,6 +594,18 @@ static const struct ld_option ld_options[] =
      OPTION_IGNORE_UNRESOLVED_SYMBOL},
      '\0', N_("SYMBOL"),
      N_("Unresolved SYMBOL will not cause an error or warning"), TWO_DASHES },
@@ -332,7 +332,7 @@ index c5960385572..950b6969cb8 100644
    { {"push-state", no_argument, NULL, OPTION_PUSH_STATE},
      '\0', NULL, N_("Push state of flags governing input file handling"),
      TWO_DASHES },
-@@ -1692,6 +1704,18 @@ parse_args (unsigned argc, char **argv)
+@@ -1738,6 +1750,18 @@ parse_args (unsigned argc, char **argv)
  	  }
  	  break;
  
@@ -352,5 +352,5 @@ index c5960385572..950b6969cb8 100644
  	  input_flags.pushed = xmemdup (&input_flags,
  					sizeof (input_flags),
 -- 
-2.38.2
+2.40.0
 

diff --git a/9999/0002-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch b/9999/0002-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch
index f5936c6..550f0a1 100644
--- a/9999/0002-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch
+++ b/9999/0002-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch
@@ -1,7 +1,7 @@
-From 041fec351bca1ec30fa639ee80c0810a413b2d89 Mon Sep 17 00:00:00 2001
+From 0486446fa828245f0ac260d170ebe3e7123932c4 Mon Sep 17 00:00:00 2001
 From: Mike Frysinger <vapier@gentoo.org>
 Date: Fri, 7 Jan 2005 00:15:53 -0500
-Subject: [PATCH 2/6] Gentoo: libiberty: install PIC version of libiberty.a
+Subject: [PATCH 2/7] Gentoo: libiberty: install PIC version of libiberty.a
 
 This will install a PIC version of libiberty.a by overwriting the non-PIC
 version of libiberty.a while compiling.  We do this because there is no
@@ -30,5 +30,5 @@ index f9fbba23e2c..d37488d1bf8 100644
  	else true; fi; \
  	if [ x"$(NOASANFLAG)" != x ]; then \
 -- 
-2.38.2
+2.40.0
 

diff --git a/9999/0003-Gentoo-add-with-extra-soversion-suffix-option.patch b/9999/0003-Gentoo-add-with-extra-soversion-suffix-option.patch
index 8921582..0597531 100644
--- a/9999/0003-Gentoo-add-with-extra-soversion-suffix-option.patch
+++ b/9999/0003-Gentoo-add-with-extra-soversion-suffix-option.patch
@@ -1,7 +1,7 @@
-From b1e693934cde0f00e0b2fea50753e0f965bf7f88 Mon Sep 17 00:00:00 2001
+From 36fef3463cc9273249699cf372bf9cb59744df36 Mon Sep 17 00:00:00 2001
 From: Sergei Trofimovich <slyfox@gentoo.org>
 Date: Tue, 20 Jul 2021 21:12:38 +0200
-Subject: [PATCH 3/6] Gentoo: add --with-extra-soversion-suffix= option
+Subject: [PATCH 3/7] Gentoo: add --with-extra-soversion-suffix= option
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
@@ -34,7 +34,7 @@ Ported to binutils 2.37 by Andreas K. Hüttel <dilfridge@gentoo.org>
  4 files changed, 29 insertions(+)
 
 diff --git a/bfd/Makefile.am b/bfd/Makefile.am
-index 75d21db88d1..9137f025b87 100644
+index 5c5fdefd3b8..fe26bbf4f0f 100644
 --- a/bfd/Makefile.am
 +++ b/bfd/Makefile.am
 @@ -64,6 +64,8 @@ bfdinclude_HEADERS += $(INCDIR)/plugin-api.h
@@ -46,7 +46,7 @@ index 75d21db88d1..9137f025b87 100644
  # bfd.h goes here, for now
  BFD_H = bfd.h
  
-@@ -994,6 +996,9 @@ bfdver.h: $(srcdir)/version.h $(srcdir)/development.sh $(srcdir)/Makefile.in
+@@ -976,6 +978,9 @@ bfdver.h: $(srcdir)/version.h $(srcdir)/development.sh $(srcdir)/Makefile.in
  	  bfd_version_string="\"$(VERSION).$${bfd_version_date}\"" ;\
  	  bfd_soversion="$(VERSION).$${bfd_version_date}" ;\
  	fi ;\
@@ -57,10 +57,10 @@ index 75d21db88d1..9137f025b87 100644
  	    -e "s,@bfd_version_string@,$$bfd_version_string," \
  	    -e "s,@bfd_version_package@,$$bfd_version_package," \
 diff --git a/bfd/Makefile.in b/bfd/Makefile.in
-index 0b0bb1a950e..0ee27ecc111 100644
+index 4edfedee924..70a2442957e 100644
 --- a/bfd/Makefile.in
 +++ b/bfd/Makefile.in
-@@ -355,6 +355,7 @@ ECHO_T = @ECHO_T@
+@@ -342,6 +342,7 @@ ECHO_T = @ECHO_T@
  EGREP = @EGREP@
  EXEEXT = @EXEEXT@
  EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@
@@ -68,7 +68,7 @@ index 0b0bb1a950e..0ee27ecc111 100644
  FGREP = @FGREP@
  GENCAT = @GENCAT@
  GMSGFMT = @GMSGFMT@
-@@ -2474,6 +2475,9 @@ bfdver.h: $(srcdir)/version.h $(srcdir)/development.sh $(srcdir)/Makefile.in
+@@ -2435,6 +2436,9 @@ bfdver.h: $(srcdir)/version.h $(srcdir)/development.sh $(srcdir)/Makefile.in
  	  bfd_version_string="\"$(VERSION).$${bfd_version_date}\"" ;\
  	  bfd_soversion="$(VERSION).$${bfd_version_date}" ;\
  	fi ;\
@@ -79,7 +79,7 @@ index 0b0bb1a950e..0ee27ecc111 100644
  	    -e "s,@bfd_version_string@,$$bfd_version_string," \
  	    -e "s,@bfd_version_package@,$$bfd_version_package," \
 diff --git a/bfd/configure b/bfd/configure
-index 5af8af2ee37..42bd8f32145 100755
+index 41d280ef461..18e7e3acdbd 100755
 --- a/bfd/configure
 +++ b/bfd/configure
 @@ -695,6 +695,7 @@ WARN_CFLAGS
@@ -124,7 +124,7 @@ index 5af8af2ee37..42bd8f32145 100755
  
  # Check whether --with-pkgversion was given.
 diff --git a/bfd/configure.ac b/bfd/configure.ac
-index 82a3d1f832e..2b882c735d4 100644
+index f044616f4d9..f22a87f8f54 100644
 --- a/bfd/configure.ac
 +++ b/bfd/configure.ac
 @@ -168,6 +168,13 @@ AC_ARG_WITH(separate-debug-dir,
@@ -142,5 +142,5 @@ index 82a3d1f832e..2b882c735d4 100644
  ACX_BUGURL([https://sourceware.org/bugzilla/])
  
 -- 
-2.38.2
+2.40.0
 

diff --git a/9999/0004-Gentoo-Pass-hash-style-sysv-to-ld-in-the-testsuite.patch b/9999/0004-Gentoo-Pass-hash-style-sysv-to-ld-in-the-testsuite.patch
index 4411e88..4242ba8 100644
--- a/9999/0004-Gentoo-Pass-hash-style-sysv-to-ld-in-the-testsuite.patch
+++ b/9999/0004-Gentoo-Pass-hash-style-sysv-to-ld-in-the-testsuite.patch
@@ -1,7 +1,7 @@
-From c45749c4cc5750db631e16b301133f15adfb94c7 Mon Sep 17 00:00:00 2001
+From 50af4f7750d537ada9cdb9946804f12e19bb6842 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
 Date: Tue, 20 Jul 2021 21:15:24 +0200
-Subject: [PATCH 4/6] Gentoo: Pass --hash-style=sysv to ld in the testsuite
+Subject: [PATCH 4/7] Gentoo: Pass --hash-style=sysv to ld in the testsuite
 
 ---
  binutils/testsuite/lib/binutils-common.exp |  2 +-
@@ -9,10 +9,10 @@ Subject: [PATCH 4/6] Gentoo: Pass --hash-style=sysv to ld in the testsuite
  2 files changed, 15 insertions(+), 3 deletions(-)
 
 diff --git a/binutils/testsuite/lib/binutils-common.exp b/binutils/testsuite/lib/binutils-common.exp
-index b0190ac51ac..aeef8e55b87 100644
+index 7e6bf16ee6e..0491fff2883 100644
 --- a/binutils/testsuite/lib/binutils-common.exp
 +++ b/binutils/testsuite/lib/binutils-common.exp
-@@ -1308,7 +1308,7 @@ proc run_dump_test { name {extra_options {}} } {
+@@ -1354,7 +1354,7 @@ proc run_dump_test { name {extra_options {}} } {
  
  	    # Add -L$srcdir/$subdir so that the linker command can use
  	    # linker scripts in the source directory.
@@ -22,7 +22,7 @@ index b0190ac51ac..aeef8e55b87 100644
  
  	    # If needed then check for, or add a -Map option.
 diff --git a/ld/testsuite/lib/ld-lib.exp b/ld/testsuite/lib/ld-lib.exp
-index 47e86a7b27c..55192a05f35 100644
+index 918464069a9..7d22ee70b27 100644
 --- a/ld/testsuite/lib/ld-lib.exp
 +++ b/ld/testsuite/lib/ld-lib.exp
 @@ -171,7 +171,7 @@ proc default_ld_relocate { ld target objects } {
@@ -57,5 +57,5 @@ index 47e86a7b27c..55192a05f35 100644
  
      # We don't care if we get a warning about a non-existent start
 -- 
-2.38.2
+2.40.0
 

diff --git a/9999/0005-Gentoo-Give-also-libctf-optionally-a-gentoo-specific.patch b/9999/0005-Gentoo-Give-also-libctf-optionally-a-gentoo-specific.patch
index 3ac7217..e5342b3 100644
--- a/9999/0005-Gentoo-Give-also-libctf-optionally-a-gentoo-specific.patch
+++ b/9999/0005-Gentoo-Give-also-libctf-optionally-a-gentoo-specific.patch
@@ -1,7 +1,7 @@
-From ffb569acc3bfa5a22cc6581338108f79fd3d8c55 Mon Sep 17 00:00:00 2001
+From c7ff4b542556d68004ccc30e2da25c56380dcea2 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
 Date: Sat, 24 Jul 2021 15:20:16 +0200
-Subject: [PATCH 5/6] Gentoo: Give also libctf optionally a gentoo-specific
+Subject: [PATCH 5/7] Gentoo: Give also libctf optionally a gentoo-specific
  soversion
 
 ---
@@ -12,7 +12,7 @@ Subject: [PATCH 5/6] Gentoo: Give also libctf optionally a gentoo-specific
  4 files changed, 64 insertions(+), 4 deletions(-)
 
 diff --git a/libctf/Makefile.am b/libctf/Makefile.am
-index c4809f70bae..5571eef8aa1 100644
+index b1dbc2f6ba4..d282ceb619a 100644
 --- a/libctf/Makefile.am
 +++ b/libctf/Makefile.am
 @@ -26,6 +26,9 @@ info_TEXINFOS =
@@ -45,10 +45,10 @@ index c4809f70bae..5571eef8aa1 100644
  libctf_nobfd_la_CPPFLAGS = $(AM_CPPFLAGS) -DNOBFD=1
  libctf_nobfd_la_SOURCES = ctf-archive.c ctf-dump.c ctf-create.c ctf-decl.c ctf-error.c \
 diff --git a/libctf/Makefile.in b/libctf/Makefile.in
-index f2b852e3fae..14fc79bf5a9 100644
+index 3d2696bcc47..664d6360c47 100644
 --- a/libctf/Makefile.in
 +++ b/libctf/Makefile.in
-@@ -381,6 +381,7 @@ AUTOCONF = @AUTOCONF@
+@@ -380,6 +380,7 @@ AUTOCONF = @AUTOCONF@
  AUTOHEADER = @AUTOHEADER@
  AUTOMAKE = @AUTOMAKE@
  AWK = @AWK@
@@ -56,7 +56,7 @@ index f2b852e3fae..14fc79bf5a9 100644
  CATALOGS = @CATALOGS@
  CATOBJEXT = @CATOBJEXT@
  CC = @CC@
-@@ -403,6 +404,7 @@ EXEEXT = @EXEEXT@
+@@ -402,6 +403,7 @@ EXEEXT = @EXEEXT@
  
  # Setup the testing framework, if you have one
  EXPECT = expect
@@ -80,10 +80,10 @@ index f2b852e3fae..14fc79bf5a9 100644
  libctf_nobfd_la_CPPFLAGS = $(AM_CPPFLAGS) -DNOBFD=1
  libctf_nobfd_la_SOURCES = ctf-archive.c ctf-dump.c ctf-create.c \
 diff --git a/libctf/configure b/libctf/configure
-index 17463a74cca..b0b5c78a7a6 100755
+index a0e40f49a80..356503f689f 100755
 --- a/libctf/configure
 +++ b/libctf/configure
-@@ -646,6 +646,10 @@ BUILD_INFO_FALSE
+@@ -645,6 +645,10 @@ BUILD_INFO_FALSE
  BUILD_INFO_TRUE
  NEED_CTF_QSORT_R_FALSE
  NEED_CTF_QSORT_R_TRUE
@@ -94,7 +94,7 @@ index 17463a74cca..b0b5c78a7a6 100755
  ENABLE_LIBCTF_HASH_DEBUGGING_FALSE
  ENABLE_LIBCTF_HASH_DEBUGGING_TRUE
  zlibinc
-@@ -807,6 +811,7 @@ enable_maintainer_mode
+@@ -806,6 +810,7 @@ enable_maintainer_mode
  enable_install_libbfd
  with_system_zlib
  enable_libctf_hash_debugging
@@ -102,7 +102,7 @@ index 17463a74cca..b0b5c78a7a6 100755
  '
        ac_precious_vars='build_alias
  host_alias
-@@ -1464,6 +1469,8 @@ Optional Packages:
+@@ -1463,6 +1468,8 @@ Optional Packages:
                            both]
    --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
    --with-system-zlib      use installed libz
@@ -111,25 +111,25 @@ index 17463a74cca..b0b5c78a7a6 100755
  
  Some influential environment variables:
    CC          C compiler command
-@@ -11632,7 +11639,7 @@ else
+@@ -11631,7 +11638,7 @@ else
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
--#line 11635 "configure"
-+#line 11665 "configure"
+-#line 11634 "configure"
++#line 11641 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
-@@ -11738,7 +11745,7 @@ else
+@@ -11737,7 +11744,7 @@ else
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
--#line 11741 "configure"
-+#line 11771 "configure"
+-#line 11740 "configure"
++#line 11747 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
-@@ -14305,6 +14312,26 @@ else
+@@ -14304,6 +14311,26 @@ else
  fi
  
  
@@ -156,7 +156,7 @@ index 17463a74cca..b0b5c78a7a6 100755
  # Similar to GDB_AC_CHECK_BFD.
  OLD_CFLAGS=$CFLAGS
  OLD_LDFLAGS=$LDFLAGS
-@@ -15199,6 +15226,10 @@ if test -z "${ENABLE_LIBCTF_HASH_DEBUGGING_TRUE}" && test -z "${ENABLE_LIBCTF_HA
+@@ -15196,6 +15223,10 @@ if test -z "${ENABLE_LIBCTF_HASH_DEBUGGING_TRUE}" && test -z "${ENABLE_LIBCTF_HA
    as_fn_error $? "conditional \"ENABLE_LIBCTF_HASH_DEBUGGING\" was never defined.
  Usually this means the macro was only invoked conditionally." "$LINENO" 5
  fi
@@ -168,7 +168,7 @@ index 17463a74cca..b0b5c78a7a6 100755
  if test -z "${NEED_CTF_QSORT_R_TRUE}" && test -z "${NEED_CTF_QSORT_R_FALSE}"; then
    as_fn_error $? "conditional \"NEED_CTF_QSORT_R\" was never defined.
 diff --git a/libctf/configure.ac b/libctf/configure.ac
-index a0148a4c328..1901ade381d 100644
+index 6a5eade1855..a0e65a4aeda 100644
 --- a/libctf/configure.ac
 +++ b/libctf/configure.ac
 @@ -76,6 +76,16 @@ if test "${enable_libctf_hash_debugging}" = yes; then
@@ -189,5 +189,5 @@ index a0148a4c328..1901ade381d 100644
  OLD_CFLAGS=$CFLAGS
  OLD_LDFLAGS=$LDFLAGS
 -- 
-2.38.2
+2.40.0
 

diff --git a/9999/0006-Gentoo-XFAIL-15-broken-ld.gold-tests.patch b/9999/0006-Gentoo-XFAIL-15-broken-ld.gold-tests.patch
index 303942b..eb2c2b0 100644
--- a/9999/0006-Gentoo-XFAIL-15-broken-ld.gold-tests.patch
+++ b/9999/0006-Gentoo-XFAIL-15-broken-ld.gold-tests.patch
@@ -1,7 +1,7 @@
-From a5ae5bca2b691999092655fe0df9b6c22e76ffaa Mon Sep 17 00:00:00 2001
+From 15971356d40e17c2409f729d376237a6d1a980c6 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
 Date: Sat, 31 Jul 2021 01:18:18 +0200
-Subject: [PATCH 6/6] Gentoo: XFAIL 15 broken ld.gold tests
+Subject: [PATCH 6/7] Gentoo: XFAIL 15 broken ld.gold tests
 
 It seems like either the tests or ld.gold in general cannot handle
 compilers built with --enable-default-pie. No fix yet, so let's ignore
@@ -73,5 +73,5 @@ index fb0eb12553b..b506a7f8da7 100644
  AUTOMAKE_OPTIONS = foreign -Wno-portability
  
 -- 
-2.38.2
+2.40.0
 

diff --git a/9999/0007-Apply-a-similar-libiberty-fix-as-in-7d53105d-for-lib.patch b/9999/0007-Apply-a-similar-libiberty-fix-as-in-7d53105d-for-lib.patch
index d915528..808d877 100644
--- a/9999/0007-Apply-a-similar-libiberty-fix-as-in-7d53105d-for-lib.patch
+++ b/9999/0007-Apply-a-similar-libiberty-fix-as-in-7d53105d-for-lib.patch
@@ -1,8 +1,8 @@
-From afc5e9fab399c9164f7355b69d0e23318d0559a5 Mon Sep 17 00:00:00 2001
+From d76981d4b7bb9bc31825a3ccf5a075ac2694a4c0 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
 Date: Wed, 22 Feb 2023 20:05:35 +0100
-Subject: [PATCH] Apply a similar libiberty fix as in 7d53105d for libopcodes
- and libgprofng
+Subject: [PATCH 7/7] Apply a similar libiberty fix as in 7d53105d for
+ libopcodes and libgprofng
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
@@ -18,7 +18,7 @@ Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
  4 files changed, 8 insertions(+), 6 deletions(-)
 
 diff --git a/gprofng/src/Makefile.am b/gprofng/src/Makefile.am
-index ab90bb08c5f..96256faf788 100644
+index 219367fb9ce..d9365260e8d 100644
 --- a/gprofng/src/Makefile.am
 +++ b/gprofng/src/Makefile.am
 @@ -131,7 +131,8 @@ libgprofng_la_LDFLAGS = -version-info 0:0:0
@@ -32,10 +32,10 @@ index ab90bb08c5f..96256faf788 100644
  	$(GPROFNG_LIBADD) \
  	-lpthread -ldl
 diff --git a/gprofng/src/Makefile.in b/gprofng/src/Makefile.in
-index 605fa4f6fd4..f968d8d6e59 100644
+index b881268b0d9..0e8b707f7d7 100644
 --- a/gprofng/src/Makefile.in
 +++ b/gprofng/src/Makefile.in
-@@ -555,7 +555,8 @@ libgprofng_la_LDFLAGS = -version-info 0:0:0
+@@ -552,7 +552,8 @@ libgprofng_la_LDFLAGS = -version-info 0:0:0
  # Pass -lpthread instead of $(PTHREAD_LIBS) due to $(PTHREAD_LIBS) being empty
  # when -nostdlib is passed to libtool.
  # See bug 29364 - libgprofng.so: needs to link against -pthread
@@ -46,7 +46,7 @@ index 605fa4f6fd4..f968d8d6e59 100644
  	$(GPROFNG_LIBADD) \
  	-lpthread -ldl
 diff --git a/opcodes/configure b/opcodes/configure
-index d2364991ee8..1f483e37fc9 100755
+index 8717d99ca26..fbdf41f87be 100755
 --- a/opcodes/configure
 +++ b/opcodes/configure
 @@ -12445,10 +12445,10 @@ if test "$enable_shared" = "yes"; then
@@ -80,5 +80,5 @@ index 1beb72e87e0..79310916f7d 100644
        ;;
    esac
 -- 
-2.39.2
+2.40.0
 


^ permalink raw reply related	[flat|nested] 39+ messages in thread

* [gentoo-commits] proj/toolchain/binutils-patches:master commit in: 9999/
@ 2023-07-28 16:23 Andreas K. Hüttel
  0 siblings, 0 replies; 39+ messages in thread
From: Andreas K. Hüttel @ 2023-07-28 16:23 UTC (permalink / raw
  To: gentoo-commits

commit:     8a47acd3d764114d0fa52bf76e079d6afc0e0c45
Author:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
AuthorDate: Fri Jul 28 16:23:07 2023 +0000
Commit:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
CommitDate: Fri Jul 28 16:23:07 2023 +0000
URL:        https://gitweb.gentoo.org/proj/toolchain/binutils-patches.git/commit/?id=8a47acd3

Rebase for upcoming 2.41

Signed-off-by: Andreas K. Hüttel <dilfridge <AT> gentoo.org>

 ...-Gentoo-gold-ld-add-support-for-poisoned-system-direc.patch | 10 +++++-----
 ...2-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch |  4 ++--
 9999/0003-Gentoo-add-with-extra-soversion-suffix-option.patch  |  6 +++---
 ...04-Gentoo-Pass-hash-style-sysv-to-ld-in-the-testsuite.patch |  4 ++--
 ...-Gentoo-Give-also-libctf-optionally-a-gentoo-specific.patch |  4 ++--
 9999/0006-Gentoo-XFAIL-15-broken-ld.gold-tests.patch           |  4 ++--
 ...-Apply-a-similar-libiberty-fix-as-in-7d53105d-for-lib.patch |  6 +++---
 7 files changed, 19 insertions(+), 19 deletions(-)

diff --git a/9999/0001-Gentoo-gold-ld-add-support-for-poisoned-system-direc.patch b/9999/0001-Gentoo-gold-ld-add-support-for-poisoned-system-direc.patch
index 716fa9b..a724494 100644
--- a/9999/0001-Gentoo-gold-ld-add-support-for-poisoned-system-direc.patch
+++ b/9999/0001-Gentoo-gold-ld-add-support-for-poisoned-system-direc.patch
@@ -1,4 +1,4 @@
-From 38cf5d1565c113e64a5cdfc9d55d554919bc10d7 Mon Sep 17 00:00:00 2001
+From 930c326fd4f16299f06610cf3ff3ee94b13130e0 Mon Sep 17 00:00:00 2001
 From: Mike Frysinger <vapier@gentoo.org>
 Date: Tue, 20 Jul 2021 21:08:31 +0200
 Subject: [PATCH 1/7] Gentoo: gold/ld: add support for poisoned system
@@ -120,7 +120,7 @@ index ad0dc6a106c..d21edaddce7 100644
  #undef EXTRA_SHLIB_EXTENSION
  
 diff --git a/ld/configure b/ld/configure
-index 03b9e46f56d..091d5913ee4 100755
+index 0c32b16241a..549b8d49f5e 100755
 --- a/ld/configure
 +++ b/ld/configure
 @@ -839,6 +839,7 @@ with_lib_path
@@ -247,7 +247,7 @@ index aa8b1aa86eb..b57b0d5c9f5 100644
  
  @c man end
 diff --git a/ld/ldfile.c b/ld/ldfile.c
-index c8a6874978b..6ba20992b66 100644
+index df7c9cbd65e..ed15262e0bc 100644
 --- a/ld/ldfile.c
 +++ b/ld/ldfile.c
 @@ -327,6 +327,26 @@ ldfile_add_library_path (const char *name, bool cmdline)
@@ -292,7 +292,7 @@ index 87cac02141d..d79ec8faa15 100644
    OPTION_POP_STATE,
    OPTION_DISABLE_MULTIPLE_DEFS_ABS,
 diff --git a/ld/ldmain.c b/ld/ldmain.c
-index 25cc89b72f9..9c81fd6f539 100644
+index 06ac2c64fa8..5ec931a0255 100644
 --- a/ld/ldmain.c
 +++ b/ld/ldmain.c
 @@ -325,6 +325,13 @@ main (int argc, char **argv)
@@ -352,5 +352,5 @@ index fe8722313fe..5fd7350efc5 100644
  	  input_flags.pushed = xmemdup (&input_flags,
  					sizeof (input_flags),
 -- 
-2.40.0
+2.41.0
 

diff --git a/9999/0002-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch b/9999/0002-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch
index 550f0a1..a0bffea 100644
--- a/9999/0002-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch
+++ b/9999/0002-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch
@@ -1,4 +1,4 @@
-From 0486446fa828245f0ac260d170ebe3e7123932c4 Mon Sep 17 00:00:00 2001
+From 68b7e6f60dd42159af779d5b475b7df553655d1f Mon Sep 17 00:00:00 2001
 From: Mike Frysinger <vapier@gentoo.org>
 Date: Fri, 7 Jan 2005 00:15:53 -0500
 Subject: [PATCH 2/7] Gentoo: libiberty: install PIC version of libiberty.a
@@ -30,5 +30,5 @@ index f9fbba23e2c..d37488d1bf8 100644
  	else true; fi; \
  	if [ x"$(NOASANFLAG)" != x ]; then \
 -- 
-2.40.0
+2.41.0
 

diff --git a/9999/0003-Gentoo-add-with-extra-soversion-suffix-option.patch b/9999/0003-Gentoo-add-with-extra-soversion-suffix-option.patch
index 0597531..3c08be6 100644
--- a/9999/0003-Gentoo-add-with-extra-soversion-suffix-option.patch
+++ b/9999/0003-Gentoo-add-with-extra-soversion-suffix-option.patch
@@ -1,4 +1,4 @@
-From 36fef3463cc9273249699cf372bf9cb59744df36 Mon Sep 17 00:00:00 2001
+From 3a489acb4547c320ba43858ead3586fed34c92b4 Mon Sep 17 00:00:00 2001
 From: Sergei Trofimovich <slyfox@gentoo.org>
 Date: Tue, 20 Jul 2021 21:12:38 +0200
 Subject: [PATCH 3/7] Gentoo: add --with-extra-soversion-suffix= option
@@ -79,7 +79,7 @@ index 4edfedee924..70a2442957e 100644
  	    -e "s,@bfd_version_string@,$$bfd_version_string," \
  	    -e "s,@bfd_version_package@,$$bfd_version_package," \
 diff --git a/bfd/configure b/bfd/configure
-index 41d280ef461..18e7e3acdbd 100755
+index dcb10317390..94a4e39d691 100755
 --- a/bfd/configure
 +++ b/bfd/configure
 @@ -695,6 +695,7 @@ WARN_CFLAGS
@@ -142,5 +142,5 @@ index f044616f4d9..f22a87f8f54 100644
  ACX_BUGURL([https://sourceware.org/bugzilla/])
  
 -- 
-2.40.0
+2.41.0
 

diff --git a/9999/0004-Gentoo-Pass-hash-style-sysv-to-ld-in-the-testsuite.patch b/9999/0004-Gentoo-Pass-hash-style-sysv-to-ld-in-the-testsuite.patch
index 4242ba8..59c18ef 100644
--- a/9999/0004-Gentoo-Pass-hash-style-sysv-to-ld-in-the-testsuite.patch
+++ b/9999/0004-Gentoo-Pass-hash-style-sysv-to-ld-in-the-testsuite.patch
@@ -1,4 +1,4 @@
-From 50af4f7750d537ada9cdb9946804f12e19bb6842 Mon Sep 17 00:00:00 2001
+From eb585240ae3079a2cdc081a2cd96e09db95947ef Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
 Date: Tue, 20 Jul 2021 21:15:24 +0200
 Subject: [PATCH 4/7] Gentoo: Pass --hash-style=sysv to ld in the testsuite
@@ -57,5 +57,5 @@ index 918464069a9..7d22ee70b27 100644
  
      # We don't care if we get a warning about a non-existent start
 -- 
-2.40.0
+2.41.0
 

diff --git a/9999/0005-Gentoo-Give-also-libctf-optionally-a-gentoo-specific.patch b/9999/0005-Gentoo-Give-also-libctf-optionally-a-gentoo-specific.patch
index e5342b3..192fa4f 100644
--- a/9999/0005-Gentoo-Give-also-libctf-optionally-a-gentoo-specific.patch
+++ b/9999/0005-Gentoo-Give-also-libctf-optionally-a-gentoo-specific.patch
@@ -1,4 +1,4 @@
-From c7ff4b542556d68004ccc30e2da25c56380dcea2 Mon Sep 17 00:00:00 2001
+From 1de1744597aa5b2e29ddedfea42cd7f99796b0ec Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
 Date: Sat, 24 Jul 2021 15:20:16 +0200
 Subject: [PATCH 5/7] Gentoo: Give also libctf optionally a gentoo-specific
@@ -189,5 +189,5 @@ index 6a5eade1855..a0e65a4aeda 100644
  OLD_CFLAGS=$CFLAGS
  OLD_LDFLAGS=$LDFLAGS
 -- 
-2.40.0
+2.41.0
 

diff --git a/9999/0006-Gentoo-XFAIL-15-broken-ld.gold-tests.patch b/9999/0006-Gentoo-XFAIL-15-broken-ld.gold-tests.patch
index eb2c2b0..210563c 100644
--- a/9999/0006-Gentoo-XFAIL-15-broken-ld.gold-tests.patch
+++ b/9999/0006-Gentoo-XFAIL-15-broken-ld.gold-tests.patch
@@ -1,4 +1,4 @@
-From 15971356d40e17c2409f729d376237a6d1a980c6 Mon Sep 17 00:00:00 2001
+From 4718611dc4145a8d8de7534f150053c5accf96a1 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
 Date: Sat, 31 Jul 2021 01:18:18 +0200
 Subject: [PATCH 6/7] Gentoo: XFAIL 15 broken ld.gold tests
@@ -73,5 +73,5 @@ index fb0eb12553b..b506a7f8da7 100644
  AUTOMAKE_OPTIONS = foreign -Wno-portability
  
 -- 
-2.40.0
+2.41.0
 

diff --git a/9999/0007-Apply-a-similar-libiberty-fix-as-in-7d53105d-for-lib.patch b/9999/0007-Apply-a-similar-libiberty-fix-as-in-7d53105d-for-lib.patch
index 808d877..8d7acd1 100644
--- a/9999/0007-Apply-a-similar-libiberty-fix-as-in-7d53105d-for-lib.patch
+++ b/9999/0007-Apply-a-similar-libiberty-fix-as-in-7d53105d-for-lib.patch
@@ -1,4 +1,4 @@
-From d76981d4b7bb9bc31825a3ccf5a075ac2694a4c0 Mon Sep 17 00:00:00 2001
+From 7fbdb5f138dccdd3b65a0bd048802662c6302ea1 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
 Date: Wed, 22 Feb 2023 20:05:35 +0100
 Subject: [PATCH 7/7] Apply a similar libiberty fix as in 7d53105d for
@@ -46,7 +46,7 @@ index b881268b0d9..0e8b707f7d7 100644
  	$(GPROFNG_LIBADD) \
  	-lpthread -ldl
 diff --git a/opcodes/configure b/opcodes/configure
-index 8717d99ca26..fbdf41f87be 100755
+index 71504e10c51..cb669ed994f 100755
 --- a/opcodes/configure
 +++ b/opcodes/configure
 @@ -12445,10 +12445,10 @@ if test "$enable_shared" = "yes"; then
@@ -80,5 +80,5 @@ index 1beb72e87e0..79310916f7d 100644
        ;;
    esac
 -- 
-2.40.0
+2.41.0
 


^ permalink raw reply related	[flat|nested] 39+ messages in thread

* [gentoo-commits] proj/toolchain/binutils-patches:master commit in: 9999/
@ 2023-07-30 14:49 Andreas K. Hüttel
  0 siblings, 0 replies; 39+ messages in thread
From: Andreas K. Hüttel @ 2023-07-30 14:49 UTC (permalink / raw
  To: gentoo-commits

commit:     60851e7be32d7d3014de98b85bd5b58b1ad6fdd3
Author:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
AuthorDate: Sun Jul 30 14:49:36 2023 +0000
Commit:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
CommitDate: Sun Jul 30 14:49:36 2023 +0000
URL:        https://gitweb.gentoo.org/proj/toolchain/binutils-patches.git/commit/?id=60851e7b

Add Sam's textrel patch

Signed-off-by: Andreas K. Hüttel <dilfridge <AT> gentoo.org>

 ...-failures-with-enable-textrel-check-error.patch | 139 +++++++++++++++++++++
 1 file changed, 139 insertions(+)

diff --git a/9999/0008-ld-Fix-test-failures-with-enable-textrel-check-error.patch b/9999/0008-ld-Fix-test-failures-with-enable-textrel-check-error.patch
new file mode 100644
index 0000000..7bf6a47
--- /dev/null
+++ b/9999/0008-ld-Fix-test-failures-with-enable-textrel-check-error.patch
@@ -0,0 +1,139 @@
+From mboxrd@z Thu Jan  1 00:00:00 1970
+Return-Path: <SRS0=Su1r=DO=gentoo.org=sam@sourceware.org>
+Received: from smtp.gentoo.org (woodpecker.gentoo.org [140.211.166.183])
+	by sourceware.org (Postfix) with ESMTP id 3725A3858D20
+	for <binutils@sourceware.org>; Fri, 28 Jul 2023 15:20:56 +0000 (GMT)
+DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 3725A3858D20
+Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gentoo.org
+Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gentoo.org
+From: Sam James <sam@gentoo.org>
+To: binutils@sourceware.org
+Cc: nickc@redhat.com,
+	Sam James <sam@gentoo.org>
+Subject: [PATCH] ld: Fix test failures with --enable-textrel-check=error
+Date: Fri, 28 Jul 2023 16:20:34 +0100
+Message-ID: <20230728152042.401562-1-sam@gentoo.org>
+X-Mailer: git-send-email 2.41.0
+MIME-Version: 1.0
+Content-Transfer-Encoding: 8bit
+X-Spam-Status: No, score=-9.9 required=5.0 tests=BAYES_00,GIT_PATCH_0,JMQ_SPF_NEUTRAL,KAM_DMARC_STATUS,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6
+X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org
+List-Id: <binutils.sourceware.org>
+
+Tested with the following:
+* --enable-textrel-check=error
+* --enable-warn-execstack=yes
+* --enable-warn-rwx-segments=yes
+* --enable-default-execstack=no
+in preparation for hopefully toggling these in Gentoo Hardened
+at least.
+
+This is similar in nature to 0ab7005043ee404dabfd690952efc25c399995ae
+and 340640f710e690b37c885166949595cde5f827b2.
+
+This fixes the following test failures:
+* FAIL: ld-x86-64/pr18801a
+* FAIL: ld-x86-64/pr18801b
+* FAIL: ld-x86-64/ifunc-textrel-1a
+* FAIL: ld-x86-64/ifunc-textrel-1b
+* FAIL: ld-i386/pr18801a
+* FAIL: ld-i386/pr18801b
+* FAIL: ld-i386/ifunc-textrel-1a
+* FAIL: ld-i386/ifunc-textrel-1b
+
+Signed-off-by: Sam James <sam@gentoo.org>
+---
+ ld/testsuite/ld-i386/ifunc-textrel-1a.d   | 2 +-
+ ld/testsuite/ld-i386/ifunc-textrel-1b.d   | 2 +-
+ ld/testsuite/ld-i386/pr18801a.d           | 2 +-
+ ld/testsuite/ld-i386/pr18801b.d           | 2 +-
+ ld/testsuite/ld-x86-64/ifunc-textrel-1a.d | 2 +-
+ ld/testsuite/ld-x86-64/ifunc-textrel-1b.d | 2 +-
+ ld/testsuite/ld-x86-64/pr18801a.d         | 2 +-
+ ld/testsuite/ld-x86-64/pr18801b.d         | 2 +-
+ 8 files changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/ld/testsuite/ld-i386/ifunc-textrel-1a.d b/ld/testsuite/ld-i386/ifunc-textrel-1a.d
+index 15f545db03d..aad77e7d230 100644
+--- a/ld/testsuite/ld-i386/ifunc-textrel-1a.d
++++ b/ld/testsuite/ld-i386/ifunc-textrel-1a.d
+@@ -1,4 +1,4 @@
+ #source: ../ld-x86-64/ifunc-textrel-1.s
+ #as: --32
+-#ld: -m elf_i386 -pie
++#ld: -m elf_i386 -pie -z notext
+ #warning: GNU indirect functions with DT_TEXTREL may result in a segfault at runtime; recompile with -fPIE
+diff --git a/ld/testsuite/ld-i386/ifunc-textrel-1b.d b/ld/testsuite/ld-i386/ifunc-textrel-1b.d
+index 6e4a67c48f0..bf0f2ac5df9 100644
+--- a/ld/testsuite/ld-i386/ifunc-textrel-1b.d
++++ b/ld/testsuite/ld-i386/ifunc-textrel-1b.d
+@@ -1,4 +1,4 @@
+ #source: ../ld-x86-64/ifunc-textrel-1.s
+ #as: --32
+-#ld: -m elf_i386 -shared
++#ld: -m elf_i386 -shared -z notext
+ #warning: GNU indirect functions with DT_TEXTREL may result in a segfault at runtime; recompile with -fPIC
+diff --git a/ld/testsuite/ld-i386/pr18801a.d b/ld/testsuite/ld-i386/pr18801a.d
+index 73cb5d17beb..b1ef145a882 100644
+--- a/ld/testsuite/ld-i386/pr18801a.d
++++ b/ld/testsuite/ld-i386/pr18801a.d
+@@ -1,4 +1,4 @@
+ #source: pr18801.s
+ #as: --32
+-#ld: -m elf_i386 -pie
++#ld: -m elf_i386 -pie -z notext
+ #warning: GNU indirect functions with DT_TEXTREL may result in a segfault at runtime; recompile with -fPIE
+diff --git a/ld/testsuite/ld-i386/pr18801b.d b/ld/testsuite/ld-i386/pr18801b.d
+index 0bf7fb729cb..983346ca248 100644
+--- a/ld/testsuite/ld-i386/pr18801b.d
++++ b/ld/testsuite/ld-i386/pr18801b.d
+@@ -1,4 +1,4 @@
+ #source: pr18801.s
+ #as: --32
+-#ld: -m elf_i386 -shared
++#ld: -m elf_i386 -shared -z notext
+ #warning: GNU indirect functions with DT_TEXTREL may result in a segfault at runtime; recompile with -fPIC
+diff --git a/ld/testsuite/ld-x86-64/ifunc-textrel-1a.d b/ld/testsuite/ld-x86-64/ifunc-textrel-1a.d
+index 64a1e7021fd..667366091b9 100644
+--- a/ld/testsuite/ld-x86-64/ifunc-textrel-1a.d
++++ b/ld/testsuite/ld-x86-64/ifunc-textrel-1a.d
+@@ -1,4 +1,4 @@
+ #source: ifunc-textrel-1.s
+ #as: --64 -defsym __x86_64__=1
+-#ld: -m elf_x86_64 -pie
++#ld: -m elf_x86_64 -pie -z notext
+ #warning: GNU indirect functions with DT_TEXTREL may result in a segfault at runtime; recompile with -fPIE
+diff --git a/ld/testsuite/ld-x86-64/ifunc-textrel-1b.d b/ld/testsuite/ld-x86-64/ifunc-textrel-1b.d
+index aeb31fdb3dc..f7b8e02a72c 100644
+--- a/ld/testsuite/ld-x86-64/ifunc-textrel-1b.d
++++ b/ld/testsuite/ld-x86-64/ifunc-textrel-1b.d
+@@ -1,4 +1,4 @@
+ #source: ifunc-textrel-1.s
+ #as: --64 -defsym __x86_64__=1
+-#ld: -m elf_x86_64 -shared
++#ld: -m elf_x86_64 -shared -z notext
+ #warning: GNU indirect functions with DT_TEXTREL may result in a segfault at runtime; recompile with -fPIC
+diff --git a/ld/testsuite/ld-x86-64/pr18801a.d b/ld/testsuite/ld-x86-64/pr18801a.d
+index 2b4159d3044..61f9d991185 100644
+--- a/ld/testsuite/ld-x86-64/pr18801a.d
++++ b/ld/testsuite/ld-x86-64/pr18801a.d
+@@ -1,4 +1,4 @@
+ #source: pr18801.s
+ #as: --64
+-#ld: -melf_x86_64 -pie
++#ld: -melf_x86_64 -pie -z notext
+ #warning: GNU indirect functions with DT_TEXTREL may result in a segfault at runtime; recompile with -fPIE
+diff --git a/ld/testsuite/ld-x86-64/pr18801b.d b/ld/testsuite/ld-x86-64/pr18801b.d
+index 34dab1aa6cb..967a339f90b 100644
+--- a/ld/testsuite/ld-x86-64/pr18801b.d
++++ b/ld/testsuite/ld-x86-64/pr18801b.d
+@@ -1,4 +1,4 @@
+ #source: pr18801.s
+ #as: --64
+-#ld: -melf_x86_64 -shared
++#ld: -melf_x86_64 -shared -z notext
+ #warning: GNU indirect functions with DT_TEXTREL may result in a segfault at runtime; recompile with -fPIC
+-- 
+2.41.0
+
+


^ permalink raw reply related	[flat|nested] 39+ messages in thread

* [gentoo-commits] proj/toolchain/binutils-patches:master commit in: 9999/
@ 2023-10-27  0:44 Sam James
  0 siblings, 0 replies; 39+ messages in thread
From: Sam James @ 2023-10-27  0:44 UTC (permalink / raw
  To: gentoo-commits

commit:     100720f399389f6fec20dcc98064db336e56c5b2
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Fri Oct 27 00:44:00 2023 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Fri Oct 27 00:44:00 2023 +0000
URL:        https://gitweb.gentoo.org/proj/toolchain/binutils-patches.git/commit/?id=100720f3

9999: rebase patches

Signed-off-by: Sam James <sam <AT> gentoo.org>

 ...-ld-add-support-for-poisoned-system-direc.patch |  48 ++----
 ...iberty-install-PIC-version-of-libiberty.a.patch |   4 +-
 ...oo-add-with-extra-soversion-suffix-option.patch |  18 +--
 ...ss-hash-style-sysv-to-ld-in-the-testsuite.patch |  10 +-
 ...-also-libctf-optionally-a-gentoo-specific.patch |  32 +---
 ...0006-Gentoo-XFAIL-15-broken-ld.gold-tests.patch |   4 +-
 ...ilar-libiberty-fix-as-in-7d53105d-for-lib.patch |  18 +--
 ...-failures-with-enable-textrel-check-error.patch | 139 -----------------
 9999/0009-tests-objcopy-keep-debug.patch           |  36 -----
 9999/0010-tests-pr23169b.patch                     |  21 ---
 9999/0011-tests-gprofng.patch                      | 164 ---------------------
 9999/0012-lto-type-mismatch.patch                  |  20 ---
 12 files changed, 49 insertions(+), 465 deletions(-)

diff --git a/9999/0001-Gentoo-gold-ld-add-support-for-poisoned-system-direc.patch b/9999/0001-Gentoo-gold-ld-add-support-for-poisoned-system-direc.patch
index a724494..e054415 100644
--- a/9999/0001-Gentoo-gold-ld-add-support-for-poisoned-system-direc.patch
+++ b/9999/0001-Gentoo-gold-ld-add-support-for-poisoned-system-direc.patch
@@ -1,4 +1,4 @@
-From 930c326fd4f16299f06610cf3ff3ee94b13130e0 Mon Sep 17 00:00:00 2001
+From 7b47d0be518ef97bb5259a5dbb70d6b3f22011f6 Mon Sep 17 00:00:00 2001
 From: Mike Frysinger <vapier@gentoo.org>
 Date: Tue, 20 Jul 2021 21:08:31 +0200
 Subject: [PATCH 1/7] Gentoo: gold/ld: add support for poisoned system
@@ -33,7 +33,7 @@ Ported to binutils 2.39 by WANG Xuerui <xen0n@gentoo.org>
  gold/options.cc | 33 +++++++++++++++++++++++++++++++++
  gold/options.h  |  7 +++++++
  ld/config.in    |  3 +++
- ld/configure    | 20 ++++++++++++++++++--
+ ld/configure    | 16 ++++++++++++++++
  ld/configure.ac | 10 ++++++++++
  ld/ld.h         |  7 +++++++
  ld/ld.texi      | 18 ++++++++++++++++++
@@ -41,7 +41,7 @@ Ported to binutils 2.39 by WANG Xuerui <xen0n@gentoo.org>
  ld/ldlex.h      |  3 +++
  ld/ldmain.c     |  7 +++++++
  ld/lexsup.c     | 24 ++++++++++++++++++++++++
- 11 files changed, 150 insertions(+), 2 deletions(-)
+ 11 files changed, 148 insertions(+)
 
 diff --git a/gold/options.cc b/gold/options.cc
 index c9834b66159..bd3e948a61b 100644
@@ -106,7 +106,7 @@ index 46f658f23ea..8f9b8c177ad 100644
  	      N_("Warn when skipping an incompatible library"),
  	      N_("Don't warn when skipping an incompatible library"));
 diff --git a/ld/config.in b/ld/config.in
-index ad0dc6a106c..d21edaddce7 100644
+index a453c7f7241..a0bc2a56013 100644
 --- a/ld/config.in
 +++ b/ld/config.in
 @@ -58,6 +58,9 @@
@@ -120,10 +120,10 @@ index ad0dc6a106c..d21edaddce7 100644
  #undef EXTRA_SHLIB_EXTENSION
  
 diff --git a/ld/configure b/ld/configure
-index 0c32b16241a..549b8d49f5e 100755
+index d2cdf256b89..0f32e98bc34 100755
 --- a/ld/configure
 +++ b/ld/configure
-@@ -839,6 +839,7 @@ with_lib_path
+@@ -838,6 +838,7 @@ with_lib_path
  enable_targets
  enable_64_bit_bfd
  with_sysroot
@@ -131,7 +131,7 @@ index 0c32b16241a..549b8d49f5e 100755
  enable_gold
  enable_got
  enable_compressed_debug_sections
-@@ -1521,6 +1522,8 @@ Optional Features:
+@@ -1520,6 +1521,8 @@ Optional Features:
    --enable-checking       enable run-time checks
    --enable-targets        alternative target configurations
    --enable-64-bit-bfd     64-bit support (on hosts with narrower word sizes)
@@ -140,25 +140,7 @@ index 0c32b16241a..549b8d49f5e 100755
    --enable-gold[=ARG]     build gold [ARG={default,yes,no}]
    --enable-got=<type>     GOT handling scheme (target, single, negative,
                            multigot)
-@@ -11625,7 +11628,7 @@ else
-   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-   lt_status=$lt_dlunknown
-   cat > conftest.$ac_ext <<_LT_EOF
--#line 11628 "configure"
-+#line 11626 "configure"
- #include "confdefs.h"
- 
- #if HAVE_DLFCN_H
-@@ -11731,7 +11734,7 @@ else
-   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-   lt_status=$lt_dlunknown
-   cat > conftest.$ac_ext <<_LT_EOF
--#line 11734 "configure"
-+#line 11732 "configure"
- #include "confdefs.h"
- 
- #if HAVE_DLFCN_H
-@@ -15483,6 +15486,19 @@ fi
+@@ -15538,6 +15541,19 @@ fi
  
  
  
@@ -179,7 +161,7 @@ index 0c32b16241a..549b8d49f5e 100755
  if test "${enable_gold+set}" = set; then :
    enableval=$enable_gold; case "${enableval}" in
 diff --git a/ld/configure.ac b/ld/configure.ac
-index 77edac3258c..a74dac63038 100644
+index c3ebd3ec7e4..71790d7640f 100644
 --- a/ld/configure.ac
 +++ b/ld/configure.ac
 @@ -103,6 +103,16 @@ AC_SUBST(use_sysroot)
@@ -218,11 +200,11 @@ index a0f8a15c7a9..69420b6673a 100644
    enum endian_enum endian;
  
 diff --git a/ld/ld.texi b/ld/ld.texi
-index aa8b1aa86eb..b57b0d5c9f5 100644
+index 1f56ded1041..1fa6bf7b225 100644
 --- a/ld/ld.texi
 +++ b/ld/ld.texi
-@@ -3059,6 +3059,24 @@ creation of the metadata note, if one had been enabled by an earlier
- occurrence of the --package-metdata option.
+@@ -3070,6 +3070,24 @@ creation of the metadata note, if one had been enabled by an earlier
+ occurrence of the --package-metadata option.
  If the linker has been built with libjansson, then the JSON string
  will be validated.
 +
@@ -247,7 +229,7 @@ index aa8b1aa86eb..b57b0d5c9f5 100644
  
  @c man end
 diff --git a/ld/ldfile.c b/ld/ldfile.c
-index df7c9cbd65e..ed15262e0bc 100644
+index 8f869c1f19e..ee9d4bccee2 100644
 --- a/ld/ldfile.c
 +++ b/ld/ldfile.c
 @@ -327,6 +327,26 @@ ldfile_add_library_path (const char *name, bool cmdline)
@@ -310,7 +292,7 @@ index 06ac2c64fa8..5ec931a0255 100644
    /* We initialize DEMANGLING based on the environment variable
       COLLECT_NO_DEMANGLE.  The gcc collect2 program will demangle the
 diff --git a/ld/lexsup.c b/ld/lexsup.c
-index fe8722313fe..5fd7350efc5 100644
+index 49dfc13382a..b2d1d967aa0 100644
 --- a/ld/lexsup.c
 +++ b/ld/lexsup.c
 @@ -594,6 +594,18 @@ static const struct ld_option ld_options[] =
@@ -352,5 +334,5 @@ index fe8722313fe..5fd7350efc5 100644
  	  input_flags.pushed = xmemdup (&input_flags,
  					sizeof (input_flags),
 -- 
-2.41.0
+2.42.0
 

diff --git a/9999/0002-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch b/9999/0002-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch
index a0bffea..d428c20 100644
--- a/9999/0002-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch
+++ b/9999/0002-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch
@@ -1,4 +1,4 @@
-From 68b7e6f60dd42159af779d5b475b7df553655d1f Mon Sep 17 00:00:00 2001
+From 1156f7b2f690654cf5810ef1e34791d18d207a9f Mon Sep 17 00:00:00 2001
 From: Mike Frysinger <vapier@gentoo.org>
 Date: Fri, 7 Jan 2005 00:15:53 -0500
 Subject: [PATCH 2/7] Gentoo: libiberty: install PIC version of libiberty.a
@@ -30,5 +30,5 @@ index f9fbba23e2c..d37488d1bf8 100644
  	else true; fi; \
  	if [ x"$(NOASANFLAG)" != x ]; then \
 -- 
-2.41.0
+2.42.0
 

diff --git a/9999/0003-Gentoo-add-with-extra-soversion-suffix-option.patch b/9999/0003-Gentoo-add-with-extra-soversion-suffix-option.patch
index 3c08be6..d4d4571 100644
--- a/9999/0003-Gentoo-add-with-extra-soversion-suffix-option.patch
+++ b/9999/0003-Gentoo-add-with-extra-soversion-suffix-option.patch
@@ -1,4 +1,4 @@
-From 3a489acb4547c320ba43858ead3586fed34c92b4 Mon Sep 17 00:00:00 2001
+From 411d52402227b6e1a9c779988f6f0fc1e17c6620 Mon Sep 17 00:00:00 2001
 From: Sergei Trofimovich <slyfox@gentoo.org>
 Date: Tue, 20 Jul 2021 21:12:38 +0200
 Subject: [PATCH 3/7] Gentoo: add --with-extra-soversion-suffix= option
@@ -34,7 +34,7 @@ Ported to binutils 2.37 by Andreas K. Hüttel <dilfridge@gentoo.org>
  4 files changed, 29 insertions(+)
 
 diff --git a/bfd/Makefile.am b/bfd/Makefile.am
-index 5c5fdefd3b8..fe26bbf4f0f 100644
+index 378c13198d6..e0fa379ca8e 100644
 --- a/bfd/Makefile.am
 +++ b/bfd/Makefile.am
 @@ -64,6 +64,8 @@ bfdinclude_HEADERS += $(INCDIR)/plugin-api.h
@@ -46,7 +46,7 @@ index 5c5fdefd3b8..fe26bbf4f0f 100644
  # bfd.h goes here, for now
  BFD_H = bfd.h
  
-@@ -976,6 +978,9 @@ bfdver.h: $(srcdir)/version.h $(srcdir)/development.sh $(srcdir)/Makefile.in
+@@ -991,6 +993,9 @@ bfdver.h: $(srcdir)/version.h $(srcdir)/development.sh $(srcdir)/Makefile.in
  	  bfd_version_string="\"$(VERSION).$${bfd_version_date}\"" ;\
  	  bfd_soversion="$(VERSION).$${bfd_version_date}" ;\
  	fi ;\
@@ -57,7 +57,7 @@ index 5c5fdefd3b8..fe26bbf4f0f 100644
  	    -e "s,@bfd_version_string@,$$bfd_version_string," \
  	    -e "s,@bfd_version_package@,$$bfd_version_package," \
 diff --git a/bfd/Makefile.in b/bfd/Makefile.in
-index 4edfedee924..70a2442957e 100644
+index 8d09f6fa4af..d397502bb4d 100644
 --- a/bfd/Makefile.in
 +++ b/bfd/Makefile.in
 @@ -342,6 +342,7 @@ ECHO_T = @ECHO_T@
@@ -68,7 +68,7 @@ index 4edfedee924..70a2442957e 100644
  FGREP = @FGREP@
  GENCAT = @GENCAT@
  GMSGFMT = @GMSGFMT@
-@@ -2435,6 +2436,9 @@ bfdver.h: $(srcdir)/version.h $(srcdir)/development.sh $(srcdir)/Makefile.in
+@@ -2454,6 +2455,9 @@ bfdver.h: $(srcdir)/version.h $(srcdir)/development.sh $(srcdir)/Makefile.in
  	  bfd_version_string="\"$(VERSION).$${bfd_version_date}\"" ;\
  	  bfd_soversion="$(VERSION).$${bfd_version_date}" ;\
  	fi ;\
@@ -79,7 +79,7 @@ index 4edfedee924..70a2442957e 100644
  	    -e "s,@bfd_version_string@,$$bfd_version_string," \
  	    -e "s,@bfd_version_package@,$$bfd_version_package," \
 diff --git a/bfd/configure b/bfd/configure
-index dcb10317390..94a4e39d691 100755
+index f0a07ff675f..2322e9b61cf 100755
 --- a/bfd/configure
 +++ b/bfd/configure
 @@ -695,6 +695,7 @@ WARN_CFLAGS
@@ -107,7 +107,7 @@ index dcb10317390..94a4e39d691 100755
    --with-pkgversion=PKG   Use PKG in the version string in place of "GNU
                            Binutils"
    --with-bugurl=URL       Direct users to URL to report a bug
-@@ -12033,6 +12037,15 @@ fi
+@@ -12064,6 +12068,15 @@ fi
  
  
  
@@ -124,7 +124,7 @@ index dcb10317390..94a4e39d691 100755
  
  # Check whether --with-pkgversion was given.
 diff --git a/bfd/configure.ac b/bfd/configure.ac
-index f044616f4d9..f22a87f8f54 100644
+index d1e7e3a4bf3..48f2d69991c 100644
 --- a/bfd/configure.ac
 +++ b/bfd/configure.ac
 @@ -168,6 +168,13 @@ AC_ARG_WITH(separate-debug-dir,
@@ -142,5 +142,5 @@ index f044616f4d9..f22a87f8f54 100644
  ACX_BUGURL([https://sourceware.org/bugzilla/])
  
 -- 
-2.41.0
+2.42.0
 

diff --git a/9999/0004-Gentoo-Pass-hash-style-sysv-to-ld-in-the-testsuite.patch b/9999/0004-Gentoo-Pass-hash-style-sysv-to-ld-in-the-testsuite.patch
index 59c18ef..6d820fe 100644
--- a/9999/0004-Gentoo-Pass-hash-style-sysv-to-ld-in-the-testsuite.patch
+++ b/9999/0004-Gentoo-Pass-hash-style-sysv-to-ld-in-the-testsuite.patch
@@ -1,4 +1,4 @@
-From eb585240ae3079a2cdc081a2cd96e09db95947ef Mon Sep 17 00:00:00 2001
+From 722482c5057cc921d1ab96266da29be4dc7d1354 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
 Date: Tue, 20 Jul 2021 21:15:24 +0200
 Subject: [PATCH 4/7] Gentoo: Pass --hash-style=sysv to ld in the testsuite
@@ -9,10 +9,10 @@ Subject: [PATCH 4/7] Gentoo: Pass --hash-style=sysv to ld in the testsuite
  2 files changed, 15 insertions(+), 3 deletions(-)
 
 diff --git a/binutils/testsuite/lib/binutils-common.exp b/binutils/testsuite/lib/binutils-common.exp
-index 7e6bf16ee6e..0491fff2883 100644
+index f89ac8a6108..2be9383b49e 100644
 --- a/binutils/testsuite/lib/binutils-common.exp
 +++ b/binutils/testsuite/lib/binutils-common.exp
-@@ -1354,7 +1354,7 @@ proc run_dump_test { name {extra_options {}} } {
+@@ -1340,7 +1340,7 @@ proc run_dump_test { name {extra_options {}} } {
  
  	    # Add -L$srcdir/$subdir so that the linker command can use
  	    # linker scripts in the source directory.
@@ -22,7 +22,7 @@ index 7e6bf16ee6e..0491fff2883 100644
  
  	    # If needed then check for, or add a -Map option.
 diff --git a/ld/testsuite/lib/ld-lib.exp b/ld/testsuite/lib/ld-lib.exp
-index 918464069a9..7d22ee70b27 100644
+index aca303e0728..44f2865116f 100644
 --- a/ld/testsuite/lib/ld-lib.exp
 +++ b/ld/testsuite/lib/ld-lib.exp
 @@ -171,7 +171,7 @@ proc default_ld_relocate { ld target objects } {
@@ -57,5 +57,5 @@ index 918464069a9..7d22ee70b27 100644
  
      # We don't care if we get a warning about a non-existent start
 -- 
-2.41.0
+2.42.0
 

diff --git a/9999/0005-Gentoo-Give-also-libctf-optionally-a-gentoo-specific.patch b/9999/0005-Gentoo-Give-also-libctf-optionally-a-gentoo-specific.patch
index 192fa4f..ab34ef9 100644
--- a/9999/0005-Gentoo-Give-also-libctf-optionally-a-gentoo-specific.patch
+++ b/9999/0005-Gentoo-Give-also-libctf-optionally-a-gentoo-specific.patch
@@ -1,4 +1,4 @@
-From 1de1744597aa5b2e29ddedfea42cd7f99796b0ec Mon Sep 17 00:00:00 2001
+From a0e9a882db04d45bf878b746a8a30c5e51619d8b Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
 Date: Sat, 24 Jul 2021 15:20:16 +0200
 Subject: [PATCH 5/7] Gentoo: Give also libctf optionally a gentoo-specific
@@ -7,9 +7,9 @@ Subject: [PATCH 5/7] Gentoo: Give also libctf optionally a gentoo-specific
 ---
  libctf/Makefile.am  | 14 +++++++++++++-
  libctf/Makefile.in  |  9 ++++++++-
- libctf/configure    | 35 +++++++++++++++++++++++++++++++++--
+ libctf/configure    | 31 +++++++++++++++++++++++++++++++
  libctf/configure.ac | 10 ++++++++++
- 4 files changed, 64 insertions(+), 4 deletions(-)
+ 4 files changed, 62 insertions(+), 2 deletions(-)
 
 diff --git a/libctf/Makefile.am b/libctf/Makefile.am
 index b1dbc2f6ba4..d282ceb619a 100644
@@ -80,7 +80,7 @@ index 3d2696bcc47..664d6360c47 100644
  libctf_nobfd_la_CPPFLAGS = $(AM_CPPFLAGS) -DNOBFD=1
  libctf_nobfd_la_SOURCES = ctf-archive.c ctf-dump.c ctf-create.c \
 diff --git a/libctf/configure b/libctf/configure
-index a0e40f49a80..356503f689f 100755
+index 4c01c022837..07778d52be4 100755
 --- a/libctf/configure
 +++ b/libctf/configure
 @@ -645,6 +645,10 @@ BUILD_INFO_FALSE
@@ -111,25 +111,7 @@ index a0e40f49a80..356503f689f 100755
  
  Some influential environment variables:
    CC          C compiler command
-@@ -11631,7 +11638,7 @@ else
-   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-   lt_status=$lt_dlunknown
-   cat > conftest.$ac_ext <<_LT_EOF
--#line 11634 "configure"
-+#line 11641 "configure"
- #include "confdefs.h"
- 
- #if HAVE_DLFCN_H
-@@ -11737,7 +11744,7 @@ else
-   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-   lt_status=$lt_dlunknown
-   cat > conftest.$ac_ext <<_LT_EOF
--#line 11740 "configure"
-+#line 11747 "configure"
- #include "confdefs.h"
- 
- #if HAVE_DLFCN_H
-@@ -14304,6 +14311,26 @@ else
+@@ -14335,6 +14342,26 @@ else
  fi
  
  
@@ -156,7 +138,7 @@ index a0e40f49a80..356503f689f 100755
  # Similar to GDB_AC_CHECK_BFD.
  OLD_CFLAGS=$CFLAGS
  OLD_LDFLAGS=$LDFLAGS
-@@ -15196,6 +15223,10 @@ if test -z "${ENABLE_LIBCTF_HASH_DEBUGGING_TRUE}" && test -z "${ENABLE_LIBCTF_HA
+@@ -15227,6 +15254,10 @@ if test -z "${ENABLE_LIBCTF_HASH_DEBUGGING_TRUE}" && test -z "${ENABLE_LIBCTF_HA
    as_fn_error $? "conditional \"ENABLE_LIBCTF_HASH_DEBUGGING\" was never defined.
  Usually this means the macro was only invoked conditionally." "$LINENO" 5
  fi
@@ -189,5 +171,5 @@ index 6a5eade1855..a0e65a4aeda 100644
  OLD_CFLAGS=$CFLAGS
  OLD_LDFLAGS=$LDFLAGS
 -- 
-2.41.0
+2.42.0
 

diff --git a/9999/0006-Gentoo-XFAIL-15-broken-ld.gold-tests.patch b/9999/0006-Gentoo-XFAIL-15-broken-ld.gold-tests.patch
index 210563c..2934cd3 100644
--- a/9999/0006-Gentoo-XFAIL-15-broken-ld.gold-tests.patch
+++ b/9999/0006-Gentoo-XFAIL-15-broken-ld.gold-tests.patch
@@ -1,4 +1,4 @@
-From 4718611dc4145a8d8de7534f150053c5accf96a1 Mon Sep 17 00:00:00 2001
+From 9bf3571ddf788d8986d1e45d54df356867bd23d9 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
 Date: Sat, 31 Jul 2021 01:18:18 +0200
 Subject: [PATCH 6/7] Gentoo: XFAIL 15 broken ld.gold tests
@@ -73,5 +73,5 @@ index fb0eb12553b..b506a7f8da7 100644
  AUTOMAKE_OPTIONS = foreign -Wno-portability
  
 -- 
-2.41.0
+2.42.0
 

diff --git a/9999/0007-Apply-a-similar-libiberty-fix-as-in-7d53105d-for-lib.patch b/9999/0007-Apply-a-similar-libiberty-fix-as-in-7d53105d-for-lib.patch
index 8d7acd1..2331b5c 100644
--- a/9999/0007-Apply-a-similar-libiberty-fix-as-in-7d53105d-for-lib.patch
+++ b/9999/0007-Apply-a-similar-libiberty-fix-as-in-7d53105d-for-lib.patch
@@ -1,4 +1,4 @@
-From 7fbdb5f138dccdd3b65a0bd048802662c6302ea1 Mon Sep 17 00:00:00 2001
+From 51b418fda84420da6d2c0e830435ad61409daffb Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
 Date: Wed, 22 Feb 2023 20:05:35 +0100
 Subject: [PATCH 7/7] Apply a similar libiberty fix as in 7d53105d for
@@ -18,10 +18,10 @@ Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
  4 files changed, 8 insertions(+), 6 deletions(-)
 
 diff --git a/gprofng/src/Makefile.am b/gprofng/src/Makefile.am
-index 219367fb9ce..d9365260e8d 100644
+index 20c8b0022e4..96dbc8e0e94 100644
 --- a/gprofng/src/Makefile.am
 +++ b/gprofng/src/Makefile.am
-@@ -131,7 +131,8 @@ libgprofng_la_LDFLAGS = -version-info 0:0:0
+@@ -144,7 +144,8 @@ libgprofng_la_LDFLAGS = -version-info 0:0:0
  # Pass -lpthread instead of $(PTHREAD_LIBS) due to $(PTHREAD_LIBS) being empty
  # when -nostdlib is passed to libtool.
  # See bug 29364 - libgprofng.so: needs to link against -pthread
@@ -32,7 +32,7 @@ index 219367fb9ce..d9365260e8d 100644
  	$(GPROFNG_LIBADD) \
  	-lpthread -ldl
 diff --git a/gprofng/src/Makefile.in b/gprofng/src/Makefile.in
-index b881268b0d9..0e8b707f7d7 100644
+index 47da873b80c..52a22279cf7 100644
 --- a/gprofng/src/Makefile.in
 +++ b/gprofng/src/Makefile.in
 @@ -552,7 +552,8 @@ libgprofng_la_LDFLAGS = -version-info 0:0:0
@@ -46,10 +46,10 @@ index b881268b0d9..0e8b707f7d7 100644
  	$(GPROFNG_LIBADD) \
  	-lpthread -ldl
 diff --git a/opcodes/configure b/opcodes/configure
-index 71504e10c51..cb669ed994f 100755
+index a65b0a2f95b..f412c1a6c96 100755
 --- a/opcodes/configure
 +++ b/opcodes/configure
-@@ -12445,10 +12445,10 @@ if test "$enable_shared" = "yes"; then
+@@ -12479,10 +12479,10 @@ if test "$enable_shared" = "yes"; then
    case "${host}" in
      *-*-cygwin*)
        SHARED_LDFLAGS="-no-undefined"
@@ -63,10 +63,10 @@ index 71504e10c51..cb669ed994f 100755
        ;;
    esac
 diff --git a/opcodes/configure.ac b/opcodes/configure.ac
-index 1beb72e87e0..79310916f7d 100644
+index cae2a67ff10..5cb194779e9 100644
 --- a/opcodes/configure.ac
 +++ b/opcodes/configure.ac
-@@ -193,10 +193,10 @@ if test "$enable_shared" = "yes"; then
+@@ -196,10 +196,10 @@ if test "$enable_shared" = "yes"; then
    case "${host}" in
      *-*-cygwin*)
        SHARED_LDFLAGS="-no-undefined"
@@ -80,5 +80,5 @@ index 1beb72e87e0..79310916f7d 100644
        ;;
    esac
 -- 
-2.41.0
+2.42.0
 

diff --git a/9999/0008-ld-Fix-test-failures-with-enable-textrel-check-error.patch b/9999/0008-ld-Fix-test-failures-with-enable-textrel-check-error.patch
deleted file mode 100644
index 7bf6a47..0000000
--- a/9999/0008-ld-Fix-test-failures-with-enable-textrel-check-error.patch
+++ /dev/null
@@ -1,139 +0,0 @@
-From mboxrd@z Thu Jan  1 00:00:00 1970
-Return-Path: <SRS0=Su1r=DO=gentoo.org=sam@sourceware.org>
-Received: from smtp.gentoo.org (woodpecker.gentoo.org [140.211.166.183])
-	by sourceware.org (Postfix) with ESMTP id 3725A3858D20
-	for <binutils@sourceware.org>; Fri, 28 Jul 2023 15:20:56 +0000 (GMT)
-DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 3725A3858D20
-Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gentoo.org
-Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gentoo.org
-From: Sam James <sam@gentoo.org>
-To: binutils@sourceware.org
-Cc: nickc@redhat.com,
-	Sam James <sam@gentoo.org>
-Subject: [PATCH] ld: Fix test failures with --enable-textrel-check=error
-Date: Fri, 28 Jul 2023 16:20:34 +0100
-Message-ID: <20230728152042.401562-1-sam@gentoo.org>
-X-Mailer: git-send-email 2.41.0
-MIME-Version: 1.0
-Content-Transfer-Encoding: 8bit
-X-Spam-Status: No, score=-9.9 required=5.0 tests=BAYES_00,GIT_PATCH_0,JMQ_SPF_NEUTRAL,KAM_DMARC_STATUS,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6
-X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org
-List-Id: <binutils.sourceware.org>
-
-Tested with the following:
-* --enable-textrel-check=error
-* --enable-warn-execstack=yes
-* --enable-warn-rwx-segments=yes
-* --enable-default-execstack=no
-in preparation for hopefully toggling these in Gentoo Hardened
-at least.
-
-This is similar in nature to 0ab7005043ee404dabfd690952efc25c399995ae
-and 340640f710e690b37c885166949595cde5f827b2.
-
-This fixes the following test failures:
-* FAIL: ld-x86-64/pr18801a
-* FAIL: ld-x86-64/pr18801b
-* FAIL: ld-x86-64/ifunc-textrel-1a
-* FAIL: ld-x86-64/ifunc-textrel-1b
-* FAIL: ld-i386/pr18801a
-* FAIL: ld-i386/pr18801b
-* FAIL: ld-i386/ifunc-textrel-1a
-* FAIL: ld-i386/ifunc-textrel-1b
-
-Signed-off-by: Sam James <sam@gentoo.org>
----
- ld/testsuite/ld-i386/ifunc-textrel-1a.d   | 2 +-
- ld/testsuite/ld-i386/ifunc-textrel-1b.d   | 2 +-
- ld/testsuite/ld-i386/pr18801a.d           | 2 +-
- ld/testsuite/ld-i386/pr18801b.d           | 2 +-
- ld/testsuite/ld-x86-64/ifunc-textrel-1a.d | 2 +-
- ld/testsuite/ld-x86-64/ifunc-textrel-1b.d | 2 +-
- ld/testsuite/ld-x86-64/pr18801a.d         | 2 +-
- ld/testsuite/ld-x86-64/pr18801b.d         | 2 +-
- 8 files changed, 8 insertions(+), 8 deletions(-)
-
-diff --git a/ld/testsuite/ld-i386/ifunc-textrel-1a.d b/ld/testsuite/ld-i386/ifunc-textrel-1a.d
-index 15f545db03d..aad77e7d230 100644
---- a/ld/testsuite/ld-i386/ifunc-textrel-1a.d
-+++ b/ld/testsuite/ld-i386/ifunc-textrel-1a.d
-@@ -1,4 +1,4 @@
- #source: ../ld-x86-64/ifunc-textrel-1.s
- #as: --32
--#ld: -m elf_i386 -pie
-+#ld: -m elf_i386 -pie -z notext
- #warning: GNU indirect functions with DT_TEXTREL may result in a segfault at runtime; recompile with -fPIE
-diff --git a/ld/testsuite/ld-i386/ifunc-textrel-1b.d b/ld/testsuite/ld-i386/ifunc-textrel-1b.d
-index 6e4a67c48f0..bf0f2ac5df9 100644
---- a/ld/testsuite/ld-i386/ifunc-textrel-1b.d
-+++ b/ld/testsuite/ld-i386/ifunc-textrel-1b.d
-@@ -1,4 +1,4 @@
- #source: ../ld-x86-64/ifunc-textrel-1.s
- #as: --32
--#ld: -m elf_i386 -shared
-+#ld: -m elf_i386 -shared -z notext
- #warning: GNU indirect functions with DT_TEXTREL may result in a segfault at runtime; recompile with -fPIC
-diff --git a/ld/testsuite/ld-i386/pr18801a.d b/ld/testsuite/ld-i386/pr18801a.d
-index 73cb5d17beb..b1ef145a882 100644
---- a/ld/testsuite/ld-i386/pr18801a.d
-+++ b/ld/testsuite/ld-i386/pr18801a.d
-@@ -1,4 +1,4 @@
- #source: pr18801.s
- #as: --32
--#ld: -m elf_i386 -pie
-+#ld: -m elf_i386 -pie -z notext
- #warning: GNU indirect functions with DT_TEXTREL may result in a segfault at runtime; recompile with -fPIE
-diff --git a/ld/testsuite/ld-i386/pr18801b.d b/ld/testsuite/ld-i386/pr18801b.d
-index 0bf7fb729cb..983346ca248 100644
---- a/ld/testsuite/ld-i386/pr18801b.d
-+++ b/ld/testsuite/ld-i386/pr18801b.d
-@@ -1,4 +1,4 @@
- #source: pr18801.s
- #as: --32
--#ld: -m elf_i386 -shared
-+#ld: -m elf_i386 -shared -z notext
- #warning: GNU indirect functions with DT_TEXTREL may result in a segfault at runtime; recompile with -fPIC
-diff --git a/ld/testsuite/ld-x86-64/ifunc-textrel-1a.d b/ld/testsuite/ld-x86-64/ifunc-textrel-1a.d
-index 64a1e7021fd..667366091b9 100644
---- a/ld/testsuite/ld-x86-64/ifunc-textrel-1a.d
-+++ b/ld/testsuite/ld-x86-64/ifunc-textrel-1a.d
-@@ -1,4 +1,4 @@
- #source: ifunc-textrel-1.s
- #as: --64 -defsym __x86_64__=1
--#ld: -m elf_x86_64 -pie
-+#ld: -m elf_x86_64 -pie -z notext
- #warning: GNU indirect functions with DT_TEXTREL may result in a segfault at runtime; recompile with -fPIE
-diff --git a/ld/testsuite/ld-x86-64/ifunc-textrel-1b.d b/ld/testsuite/ld-x86-64/ifunc-textrel-1b.d
-index aeb31fdb3dc..f7b8e02a72c 100644
---- a/ld/testsuite/ld-x86-64/ifunc-textrel-1b.d
-+++ b/ld/testsuite/ld-x86-64/ifunc-textrel-1b.d
-@@ -1,4 +1,4 @@
- #source: ifunc-textrel-1.s
- #as: --64 -defsym __x86_64__=1
--#ld: -m elf_x86_64 -shared
-+#ld: -m elf_x86_64 -shared -z notext
- #warning: GNU indirect functions with DT_TEXTREL may result in a segfault at runtime; recompile with -fPIC
-diff --git a/ld/testsuite/ld-x86-64/pr18801a.d b/ld/testsuite/ld-x86-64/pr18801a.d
-index 2b4159d3044..61f9d991185 100644
---- a/ld/testsuite/ld-x86-64/pr18801a.d
-+++ b/ld/testsuite/ld-x86-64/pr18801a.d
-@@ -1,4 +1,4 @@
- #source: pr18801.s
- #as: --64
--#ld: -melf_x86_64 -pie
-+#ld: -melf_x86_64 -pie -z notext
- #warning: GNU indirect functions with DT_TEXTREL may result in a segfault at runtime; recompile with -fPIE
-diff --git a/ld/testsuite/ld-x86-64/pr18801b.d b/ld/testsuite/ld-x86-64/pr18801b.d
-index 34dab1aa6cb..967a339f90b 100644
---- a/ld/testsuite/ld-x86-64/pr18801b.d
-+++ b/ld/testsuite/ld-x86-64/pr18801b.d
-@@ -1,4 +1,4 @@
- #source: pr18801.s
- #as: --64
--#ld: -melf_x86_64 -shared
-+#ld: -melf_x86_64 -shared -z notext
- #warning: GNU indirect functions with DT_TEXTREL may result in a segfault at runtime; recompile with -fPIC
--- 
-2.41.0
-
-

diff --git a/9999/0009-tests-objcopy-keep-debug.patch b/9999/0009-tests-objcopy-keep-debug.patch
deleted file mode 100644
index dbe2a63..0000000
--- a/9999/0009-tests-objcopy-keep-debug.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=b99a9693430a9f04165b1b868f890b622bb1b46c
-https://sourceware.org/PR30699
-
-From b99a9693430a9f04165b1b868f890b622bb1b46c Mon Sep 17 00:00:00 2001
-From: Nick Clifton <nickc@redhat.com>
-Date: Tue, 1 Aug 2023 14:37:04 +0100
-Subject: [PATCH] Fix "--only-keep-debug for ELF relocatables" binutils test
- for compilers which add .debug_macro sections to object files.
-
-  PR 30699
-  * binutils/testsuite/binutils-all/objcopy.exp (keep_debug_symbols_for_elf_relocatable): Do not add sections containing the string "debug_" to the list of non-debug sections.
---- a/binutils/testsuite/binutils-all/objcopy.exp
-+++ b/binutils/testsuite/binutils-all/objcopy.exp
-@@ -1028,7 +1028,11 @@ proc keep_debug_symbols_for_elf_relocatable { prog flags test } {
- 	    {[^a-zA-Z]+([a-zA-Z0-9_\.]+)[ \t]+([A-Z]+)[ \t]+[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ [0-9]+[ \t]+([A-Z]*)[ \t]+[0-9]+(.*)} \
- 	    $got all name type flag rest] } {
- 	if { $type != "NOTE" && [regexp {[AG]} $flag] } {
--	    lappend non_debug_sections $name
-+	    # PR 30699: Some debug sections can be in a group, so
-+	    # exclude sections whose name includes "debug_"
-+	    if { ! [regexp {debug_} $name] } {
-+		lappend non_debug_sections $name
-+	    }
- 	}
- 	set got $rest
-     }
-@@ -1086,6 +1090,7 @@ switch [copy_setup] {
- 	untested $test5
- 	if [is_elf_format] {
- 	    untested $test6
-+	    untested $test7
- 	}
-     }
-     "3" {
--- 
-2.39.3

diff --git a/9999/0010-tests-pr23169b.patch b/9999/0010-tests-pr23169b.patch
deleted file mode 100644
index 5f75b02..0000000
--- a/9999/0010-tests-pr23169b.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-https://sourceware.org/PR30698
---- a/ld/testsuite/ld-ifunc/ifunc.exp
-+++ b/ld/testsuite/ld-ifunc/ifunc.exp
-@@ -604,7 +604,7 @@ run_cc_link_tests [list \
-     ] \
-     [list \
- 	"Build libpr23169a.so" \
--	"-shared" \
-+	"-shared -Wl,-z,lazy" \
- 	"-fPIC -O2 -g" \
- 	{ pr23169a.c } \
- 	{} \
-@@ -751,7 +751,7 @@ run_ld_link_exec_tests [list \
-     ] \
-     [list \
- 	"Run pr23169b" \
--	"-pie -Wl,--no-as-needed tmpdir/libpr23169a.so" \
-+	"-pie -Wl,--no-as-needed,-z,lazy tmpdir/libpr23169a.so" \
- 	"" \
- 	{ pr23169b.c pr23169c.c } \
- 	"pr23169b" \

diff --git a/9999/0011-tests-gprofng.patch b/9999/0011-tests-gprofng.patch
deleted file mode 100644
index b95afda..0000000
--- a/9999/0011-tests-gprofng.patch
+++ /dev/null
@@ -1,164 +0,0 @@
-https://inbox.sourceware.org/binutils/20230803203339.822435-1-vladimir.mezentsev@oracle.com/
-https://sourceware.org/PR30700
-
-From mboxrd@z Thu Jan  1 00:00:00 1970
-Return-Path: <SRS0=V8/R=DU=oracle.com=vladimir.mezentsev@sourceware.org>
-Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32])
-	by sourceware.org (Postfix) with ESMTPS id 7F83B3858D38
-	for <binutils@sourceware.org>; Thu,  3 Aug 2023 20:33:54 +0000 (GMT)
-DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 7F83B3858D38
-Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=oracle.com
-Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=oracle.com
-Received: from pps.filterd (m0246632.ppops.net [127.0.0.1])
-	by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 373JJDB5001450
-	for <binutils@sourceware.org>; Thu, 3 Aug 2023 20:33:54 GMT
-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc :
- subject : date : message-id : content-transfer-encoding : content-type :
- mime-version; s=corp-2023-03-30;
- bh=aBWH9303Y8NcOBnrwOK3V46ZpHc2uMbEHRXIxE2Mg8U=;
- b=QXr05CxWU/hJ4gUV/hT+wrN4h0vjtTB48pepEU1M7MHli0ttn5Skv54tilAVfVKI/4cd
- 1XlcEgN90YOHmnidsmH50z0NQ4NlFvezd1MYrs2+24ay2kIbeHKrOhDQ/EVJIvNLfpt7
- pdZHkHpNkxl+glRpf9puwFHCFLe5Gqx6sSoz7C28I+5FMDB9/Rc3EQXtovTz90vIYSmO
- A1PsW5C3AJG373lrpoUVxpbcxbOsH1fygEdsB4le8DRv2Pgya2WMWz3T2zL7t2gEtFCZ
- XRbuIv+y4xYE2Q+aOJ4p5uxMbc4z3akRNes4LMwZ5U6NPRpwpOM3WFQw5x5jL6Wr6UXw zA== 
-Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20])
-	by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3s4tcu2fek-1
-	(version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK)
-	for <binutils@sourceware.org>; Thu, 03 Aug 2023 20:33:53 +0000
-Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1])
-	by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 373K58qp003980
-	for <binutils@sourceware.org>; Thu, 3 Aug 2023 20:33:51 GMT
-Received: from nam11-co1-obe.outbound.protection.outlook.com (mail-co1nam11lp2170.outbound.protection.outlook.com [104.47.56.170])
-	by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3s856rypc5-1
-	(version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK)
-	for <binutils@sourceware.org>; Thu, 03 Aug 2023 20:33:51 +0000
-ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
- b=kZLU5BLuqIUtYWeeq/p3fogSPj1DwGv5PNeVj8xjEepBlQWfzC0ad+4n0znV8bSy0v8FqBxF1sCEZFns3lhzblg1Go5psyG/nJAvlrJ7BZQFBvNmPGwAuX2cxp49Ea7lxFwwhGUmGE1BkxanejSE0fy1gnQqGZzgbiuJfYt6lUnejJOnNTmqxI34DIAaJibRkTj/gD+rLI0k7qwgZGMslll/9ZfKz+Bpzs/oQFGA9ZY9q9xkBVGgRPVIzHHC+9V2Y2vJvbOoHa6njxS0RHCmLL9gXh0kK4rJruYUesbu3T+jOy7Kno/6uqG08NdwBrUIFaPEQUoxVXVOijvXQHr5Zw==
-ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
- s=arcselector9901;
- h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
- bh=aBWH9303Y8NcOBnrwOK3V46ZpHc2uMbEHRXIxE2Mg8U=;
- b=ejmYk7X1Z7pY0al9fEFi1vg5hSm/VA0h9l09UExzqmPiotIxFvI639eDwaNWiylM73bCWqtKbbROnZRB3rV1iDj/U2UqBWxfHxB2rGfK5CwLFcX+em4U8F9J1gNZyOAT5HcITq6SUTQ+X2qCh7l/xyQeCp1EEiDqr6Go9U5Fgm8rtFZGEC0LQ8XHKYm33P6FBXJCxpKYv69RPQFkTnZbOf1ZOdhnbOCYBslZIivjDMTsg5nqDZkNF6Hu0CxPPDafAKxoLzBiUSgf8Uf7Eu6hCs6zmDrKqeYvPfv1KqtmivuuTvsoaqks0xCCZko6Nd2GnU1sKTotkumAXfO6Zi5BOQ==
-ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
- smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com;
- dkim=pass header.d=oracle.com; arc=none
-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
- d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com;
- h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
- bh=aBWH9303Y8NcOBnrwOK3V46ZpHc2uMbEHRXIxE2Mg8U=;
- b=R6vVOn08a3k+gcCdUObb97WwvDSXIzBkR1ReaZ1dnUqS3ZyElhaRikL5Lyc3Q04w6vKd8PN7h2gkGnwA82Cm+hFEccHGB6blNJNEjOhvFX2Mg6XjMjwPNZ5xQ+rzTiGp2I765cpVdXH7qk0ObwPiTR2WhuXcK/dtWIdU4To6ADk=
-Received: from SA2PR10MB4636.namprd10.prod.outlook.com (2603:10b6:806:11e::10)
- by SN7PR10MB6473.namprd10.prod.outlook.com (2603:10b6:806:2a0::18) with
- Microsoft SMTP Server (version=TLS1_2,
- cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6631.47; Thu, 3 Aug
- 2023 20:33:49 +0000
-Received: from SA2PR10MB4636.namprd10.prod.outlook.com
- ([fe80::a15b:c87d:10e3:5765]) by SA2PR10MB4636.namprd10.prod.outlook.com
- ([fe80::a15b:c87d:10e3:5765%7]) with mapi id 15.20.6631.046; Thu, 3 Aug 2023
- 20:33:49 +0000
-From: vladimir.mezentsev@oracle.com
-To: binutils@sourceware.org
-Cc: Vladimir Mezentsev <vladimir.mezentsev@oracle.com>
-Subject: [PATCH] gprofng: 30700 tmpdir/gp-collect-app_F test fails
-Date: Thu,  3 Aug 2023 13:33:39 -0700
-Message-Id: <20230803203339.822435-1-vladimir.mezentsev@oracle.com>
-X-Mailer: git-send-email 2.31.1
-Content-Transfer-Encoding: 8bit
-Content-Type: text/plain
-X-ClientProxiedBy: LO6P123CA0031.GBRP123.PROD.OUTLOOK.COM
- (2603:10a6:600:2fe::11) To SA2PR10MB4636.namprd10.prod.outlook.com
- (2603:10b6:806:11e::10)
-MIME-Version: 1.0
-X-MS-PublicTrafficType: Email
-X-MS-TrafficTypeDiagnostic: SA2PR10MB4636:EE_|SN7PR10MB6473:EE_
-X-MS-Office365-Filtering-Correlation-Id: 32d2aa61-d0f0-4bf7-c7e5-08db9460f18b
-X-MS-Exchange-SenderADCheck: 1
-X-MS-Exchange-AntiSpam-Relay: 0
-X-Microsoft-Antispam: BCL:0;
-X-Microsoft-Antispam-Message-Info: 
-	FtlSjDlfJ9H/HjBEUbcrniNfavhoIJJwMeiHr/7PhA98yEcoC1q9zylXvVp7m0JPVj/gnTmS4z69ouHzfKuVWqLENJB9dmRnMv+od0/AsNTwOXFrvlmWYd5TyqhBuIjoG+WuwwuwkVmmUPiKLKfNRwxTpG1gXLDhTN6Psviul8nKELjewe5C+S5mzpY5NhVwJVp4JxnsES3HmWgBTO8OvnLss+/Sr0bLQY4nYfOpHvUtWdRvrqw9S26LGlFE8Z65FJP9STwGKbuGMBerRcHqeCIXIhyGKBwV9H9CdXLn9gOkhlXmjhNzu4x8H4oSCzfo/67bC8JNYZxemIRfHR/MttqTtpBYGCgeTcVeA1rc5U89DUdc3eCf8CSP59iJgpEKWHjEsZlEeb7bcFM1MHgnOnXuWgV3Z9m5hESVpQS3AsXUVQLKvRBYny8REC27NXsUyAZ5/SJ04aJGaSQ9AIUORqw1Kky1OGzYGQocDr4CxduZ1hac+X+8bRiSCjv74qsIe6nb3TtA1AkITgFbX8gH7UOwDwRmS5b6YEARR6BshFys26Xn/ktn/opathwyrZhN
-X-Forefront-Antispam-Report: 
-	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SA2PR10MB4636.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(346002)(366004)(376002)(136003)(396003)(39860400002)(451199021)(66476007)(66556008)(66946007)(2616005)(316002)(4326008)(6916009)(5660300002)(107886003)(41300700001)(186003)(6506007)(8676002)(1076003)(8936002)(86362001)(9686003)(6512007)(6666004)(478600001)(6486002)(38100700002)(2906002)(36756003)(83380400001);DIR:OUT;SFP:1101;
-X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
-X-MS-Exchange-AntiSpam-MessageData-0: 
-	=?us-ascii?Q?2vVQXnKygJyQd+tHtgSFfe014vrOKhj7QtnqPMa5sAkBUzF4FJTFNTsO/pC4?=
- =?us-ascii?Q?gbe82wLSPsQ5xjf3KK41AKConilQU9fCfKMhaBEFVxH33ZS2DURmSf+gjSsJ?=
- =?us-ascii?Q?UAf/zzFrAaUhLIdqP4Tkz6g+0SiqXyTlJOodWIvT3V6JMuKqQA9D1xHbZXF0?=
- =?us-ascii?Q?0py1g7VYW0jYGcVzeCAq2lJsAHran5yjaHNDrR4SmoM4F9uNg2KNGw75ylRd?=
- =?us-ascii?Q?6jbbaGKhUrlHyB9CeTNkvz71c7NH28AuAci6B5fzwuWJkcgNbLOIx41Bq/ZX?=
- =?us-ascii?Q?Zgq4LF5BY80VuzfBGES1sjy2jFmuAsdvjYcBlnJGVcooG7qt9N6Fl/f8HUyu?=
- =?us-ascii?Q?P1rRJB4pgLWC3egtg8vS5Lh4K0KQi0XKs7ks46aVjAiGY/IfHVIzb1L2nD+G?=
- =?us-ascii?Q?RgCwy2Ubx//WcCBiTOQS5yjNxSFt4KZByQp99anrtZfJ8xiE6mghQyusbfWu?=
- =?us-ascii?Q?g1AyKl5aCp8FHXW/vb906djTCM2opRpwR1GmBxXIaMpO/v8j9/eRSQ1R/niB?=
- =?us-ascii?Q?YVZluKsc6R/xTJ2cZNeMJUcQafEYByOAik33U7t5Q9HNMWZ91jiWYsMWKVrj?=
- =?us-ascii?Q?8fibDL3u05AmgiaNeXbYjK7ISPXHOjIRThWj+ILCkdR9Wfmlv5D1svssgxeL?=
- =?us-ascii?Q?EFi3hdvD3shR2mvssmsOGWut6ZWbSEND49EhDnOS1nK6nvGRryfvIc8eAU9K?=
- =?us-ascii?Q?tEujniv2fU6TygAo+5qcav55Dd1ng19ndQFZNMle7b/w9bEA9jXH7mqLpPyd?=
- =?us-ascii?Q?nrNH8S3GeRmb9GCsePQApFOiwgv9gHDa18eSoOTBRlpltPb3HHmPCmaDZLWJ?=
- =?us-ascii?Q?dXB+SI80yXLZCQhiR6u6wHplpH+d5GjZGjFxk3aNFtCb2EhaFq6OHz/f4R34?=
- =?us-ascii?Q?FvutRMk+qKmCJ1/jop1nfn6tM6vFajL0AvOG6XVU9m24DxRAKd8AUDFVM/rO?=
- =?us-ascii?Q?FI1KBQs7oEMN0dSzxl6C4pPmhQx6JXDgZoIN1e42hk2xt4bptYUZAzjKDSxw?=
- =?us-ascii?Q?3CZ9+2dM0MjmLwaQkA9bmdGJNmK+UlBSIa2I+/iJeihktlMtgt0zQk+mUqCd?=
- =?us-ascii?Q?+/IsDmOj9RMecwrIMFUhbUPzCUlns3ZrK9TbBxcqpK5Z1tNOF3lIlcUGnOSw?=
- =?us-ascii?Q?I38m5CXSt4JAMsPpu379MT3JE+oVTrAjgPCOml29osBxGw/mPilKfqSfMJxi?=
- =?us-ascii?Q?8ZesU2hceSc6WFr+kgfbZTDNqQIQKwNPVphs2w566wP8Ae66Gu9qLp6Bk5HQ?=
- =?us-ascii?Q?cwZsfHa00oFB9vgkynYZ+mPu4dG9zV7WftOxsKEl59E/cORj3vQ24ZGMlUHG?=
- =?us-ascii?Q?LB0jLAznZgOQmkUqVmmsqxvtD1/skR3r5CGlJ/K9FN82gYMuVRUT79ppg/r9?=
- =?us-ascii?Q?e1JOgVXvnqlf4s2jYxQw3bi9QlyiFFy7MR9xMNLt7UdOV7+GdtALZXx+uOh3?=
- =?us-ascii?Q?9/9DT7Pt4hWzZuKZc8kZGCrrZRBcpK753R/j7RlyFtGC9glPHkNaV5aQBJ6+?=
- =?us-ascii?Q?Fwkt6CX12BvWW5krg2dy5ZCWkH+MBwS8/PxPbU5Z3bjW40j9fb2tTF8WUFVw?=
- =?us-ascii?Q?NOkA45fBWCbMM84rbOEjN9VJElsbua90fGNcuLYEAxRCve6My1paBT4jV+k5?=
- =?us-ascii?Q?pJraM4gq2jxgfMe/3re6+fc=3D?=
-X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
-X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 
-	5BKKV4T41EwJkqBWXCUBtKfSc0Kqk+2boYpd3LY1KKydGovf7vMEW8cZdK7DpnPReGtLMTe22G8WEdn+eueR59691BC3vrpoNVoYEMczhSi6Rf9TqO5yp8jgE/YufRIst16yC1oF14s88TE0rlftBH2NAVnB/7vKVBrmDa6SSwJyRcGyF1JIB8TKCuUj2m2a/aO9nNBSNZgl1xOBWfPKt3yBwe5hvrsmAQGm8H5Ms2bT4yhwxhA4M6f9bfj2BxBSHvDuCoJx4z7WCMycJJtY37+wT070rAkDGW6u7BTQfSdoup1NNo22gp74EJGxcn0jBDf6A0Oa6mVTe8SBy8SHFkhTwShvYYuj3R6PqqcUV8d0fvtXsNWbCydtFkZSwOugpE1y3RNtvvgtVHLdRSziiPl3CsW0cQEA0aQNdDec9xQV9uYmnQAQvHYQdMB8tGyV0viNsuIae7PaDF4fl0RJsz2Cj2EeuVwQP7txJ7YoU/qLVZLeVL9kk1F7ZCFD4L7tTjxH4/DN/AUWwpMq1U6yAiL6/ByELdB+ttlOTnbtHMN7HuNlJUosjFm59yldZZgz0nM8aiK8uZbcObBcmaHok0j11xKEKl/z3BjVuqKqtOfZs4HmKOCdLSr1cmf1JcnvvCFhjW5XCZySIqechbKUidMlivSQcIPvibERILfG3c+uU26pPEAZLwos3BWiBXFdBaN+nn2bjbrD85QjpnNUg7TF5YJOEXnodgzSvwrp9vD1SiT8sx3g4YD7kKy0E7YO
-X-OriginatorOrg: oracle.com
-X-MS-Exchange-CrossTenant-Network-Message-Id: 32d2aa61-d0f0-4bf7-c7e5-08db9460f18b
-X-MS-Exchange-CrossTenant-AuthSource: SA2PR10MB4636.namprd10.prod.outlook.com
-X-MS-Exchange-CrossTenant-AuthAs: Internal
-X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Aug 2023 20:33:49.4380
- (UTC)
-X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
-X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b
-X-MS-Exchange-CrossTenant-MailboxType: HOSTED
-X-MS-Exchange-CrossTenant-UserPrincipalName: mt6TZSKYv+lnLPXlQj7hP3NQSiJDZFEbIztaEFvS4u/Ey+jTQS21+Nywl1vdY7TPbl8qS+F2xjqerIF6YU3aJrJY+tEZOUTu7AfUUD4pUl8=
-X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR10MB6473
-X-Proofpoint-Virus-Version: vendor=baseguard
- engine=ICAP:2.0.254,Aquarius:18.0.957,Hydra:6.0.591,FMLib:17.11.176.26
- definitions=2023-08-03_22,2023-08-03_01,2023-05-22_02
-X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 phishscore=0 spamscore=0
- adultscore=0 malwarescore=0 suspectscore=0 mlxscore=0 mlxlogscore=999
- classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2306200000
- definitions=main-2308030184
-X-Proofpoint-GUID: Ai1oZyaQBQimnED3Xzjh2Aq6NHTga79T
-X-Proofpoint-ORIG-GUID: Ai1oZyaQBQimnED3Xzjh2Aq6NHTga79T
-X-Spam-Status: No, score=-12.6 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H5,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6
-X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org
-List-Id: <binutils.sourceware.org>
-
-From: Vladimir Mezentsev <vladimir.mezentsev@oracle.com>
-
-gprofng/ChangeLog
-2023-08-03  Vladimir Mezentsev  <vladimir.mezentsev@oracle.com>
-
-	PR gprofng/30700
-	* testsuite/gprofng.display/gp-collect-app_F.exp: Fix -name argument
-	for sub-experiment filtering.
---- a/gprofng/testsuite/gprofng.display/gp-collect-app_F.exp
-+++ b/gprofng/testsuite/gprofng.display/gp-collect-app_F.exp
-@@ -46,11 +46,11 @@ proc run_gp_collect_app { subExpCnt F_opt } {
-     return -code break
-   }
- 
--  set output [run_native_host_cmd "find $tdir -name '*x1.er' | wc -l"]
-+  set output [run_native_host_cmd "find $tdir -name '*_x?.er' | wc -l"]
-   set subExp [lindex $output 1]
-   if { $subExp != $subExpCnt } then {
-     set out [lindex $output 1]
--    send_log "Test failed for -F $F_opt. subExp=$subExp. Shold be $subExpCnt\n"
-+    send_log "Test failed for -F $F_opt. subExp=$subExp. Should be $subExpCnt\n"
-     fail $tdir
-     return -code break
-   }
--- 
-2.31.1

diff --git a/9999/0012-lto-type-mismatch.patch b/9999/0012-lto-type-mismatch.patch
deleted file mode 100644
index dbb6958..0000000
--- a/9999/0012-lto-type-mismatch.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=e34acfce343d53290e72c317213a28327bc52fb0
-
-From e34acfce343d53290e72c317213a28327bc52fb0 Mon Sep 17 00:00:00 2001
-From: Tom de Vries <tdevries@suse.de>
-Date: Thu, 3 Aug 2023 09:48:39 +0100
-Subject: [PATCH]  Fix Wlto-type-mismatch in opcodes/ft32-dis.c
-
---- a/opcodes/ft32-dis.c
-+++ b/opcodes/ft32-dis.c
-@@ -27,7 +27,7 @@
- #include "opcode/ft32.h"
- #include "disassemble.h"
- 
--extern const ft32_opc_info_t ft32_opc_info[128];
-+extern const ft32_opc_info_t ft32_opc_info[];
- 
- static fprintf_ftype fpr;
- static void *stream;
--- 
-2.39.3


^ permalink raw reply related	[flat|nested] 39+ messages in thread

* [gentoo-commits] proj/toolchain/binutils-patches:master commit in: 9999/
@ 2023-10-27  0:44 Sam James
  0 siblings, 0 replies; 39+ messages in thread
From: Sam James @ 2023-10-27  0:44 UTC (permalink / raw
  To: gentoo-commits

commit:     b7d242c5f8087d074f9caceb71d463cb6be264b3
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Mon Aug  7 23:28:19 2023 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Mon Aug  7 23:28:36 2023 +0000
URL:        https://gitweb.gentoo.org/proj/toolchain/binutils-patches.git/commit/?id=b7d242c5

9999: Add various test suite patches, as well as an LTO warning fix

All of these are upstream and will be in 2.42.

Signed-off-by: Sam James <sam <AT> gentoo.org>

 9999/0009-tests-objcopy-keep-debug.patch |  36 +++++++
 9999/0010-tests-pr23169b.patch           |  21 ++++
 9999/0011-tests-gprofng.patch            | 164 +++++++++++++++++++++++++++++++
 9999/0012-lto-type-mismatch.patch        |  20 ++++
 4 files changed, 241 insertions(+)

diff --git a/9999/0009-tests-objcopy-keep-debug.patch b/9999/0009-tests-objcopy-keep-debug.patch
new file mode 100644
index 0000000..dbe2a63
--- /dev/null
+++ b/9999/0009-tests-objcopy-keep-debug.patch
@@ -0,0 +1,36 @@
+https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=b99a9693430a9f04165b1b868f890b622bb1b46c
+https://sourceware.org/PR30699
+
+From b99a9693430a9f04165b1b868f890b622bb1b46c Mon Sep 17 00:00:00 2001
+From: Nick Clifton <nickc@redhat.com>
+Date: Tue, 1 Aug 2023 14:37:04 +0100
+Subject: [PATCH] Fix "--only-keep-debug for ELF relocatables" binutils test
+ for compilers which add .debug_macro sections to object files.
+
+  PR 30699
+  * binutils/testsuite/binutils-all/objcopy.exp (keep_debug_symbols_for_elf_relocatable): Do not add sections containing the string "debug_" to the list of non-debug sections.
+--- a/binutils/testsuite/binutils-all/objcopy.exp
++++ b/binutils/testsuite/binutils-all/objcopy.exp
+@@ -1028,7 +1028,11 @@ proc keep_debug_symbols_for_elf_relocatable { prog flags test } {
+ 	    {[^a-zA-Z]+([a-zA-Z0-9_\.]+)[ \t]+([A-Z]+)[ \t]+[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ [0-9]+[ \t]+([A-Z]*)[ \t]+[0-9]+(.*)} \
+ 	    $got all name type flag rest] } {
+ 	if { $type != "NOTE" && [regexp {[AG]} $flag] } {
+-	    lappend non_debug_sections $name
++	    # PR 30699: Some debug sections can be in a group, so
++	    # exclude sections whose name includes "debug_"
++	    if { ! [regexp {debug_} $name] } {
++		lappend non_debug_sections $name
++	    }
+ 	}
+ 	set got $rest
+     }
+@@ -1086,6 +1090,7 @@ switch [copy_setup] {
+ 	untested $test5
+ 	if [is_elf_format] {
+ 	    untested $test6
++	    untested $test7
+ 	}
+     }
+     "3" {
+-- 
+2.39.3

diff --git a/9999/0010-tests-pr23169b.patch b/9999/0010-tests-pr23169b.patch
new file mode 100644
index 0000000..5f75b02
--- /dev/null
+++ b/9999/0010-tests-pr23169b.patch
@@ -0,0 +1,21 @@
+https://sourceware.org/PR30698
+--- a/ld/testsuite/ld-ifunc/ifunc.exp
++++ b/ld/testsuite/ld-ifunc/ifunc.exp
+@@ -604,7 +604,7 @@ run_cc_link_tests [list \
+     ] \
+     [list \
+ 	"Build libpr23169a.so" \
+-	"-shared" \
++	"-shared -Wl,-z,lazy" \
+ 	"-fPIC -O2 -g" \
+ 	{ pr23169a.c } \
+ 	{} \
+@@ -751,7 +751,7 @@ run_ld_link_exec_tests [list \
+     ] \
+     [list \
+ 	"Run pr23169b" \
+-	"-pie -Wl,--no-as-needed tmpdir/libpr23169a.so" \
++	"-pie -Wl,--no-as-needed,-z,lazy tmpdir/libpr23169a.so" \
+ 	"" \
+ 	{ pr23169b.c pr23169c.c } \
+ 	"pr23169b" \

diff --git a/9999/0011-tests-gprofng.patch b/9999/0011-tests-gprofng.patch
new file mode 100644
index 0000000..b95afda
--- /dev/null
+++ b/9999/0011-tests-gprofng.patch
@@ -0,0 +1,164 @@
+https://inbox.sourceware.org/binutils/20230803203339.822435-1-vladimir.mezentsev@oracle.com/
+https://sourceware.org/PR30700
+
+From mboxrd@z Thu Jan  1 00:00:00 1970
+Return-Path: <SRS0=V8/R=DU=oracle.com=vladimir.mezentsev@sourceware.org>
+Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32])
+	by sourceware.org (Postfix) with ESMTPS id 7F83B3858D38
+	for <binutils@sourceware.org>; Thu,  3 Aug 2023 20:33:54 +0000 (GMT)
+DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 7F83B3858D38
+Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=oracle.com
+Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=oracle.com
+Received: from pps.filterd (m0246632.ppops.net [127.0.0.1])
+	by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 373JJDB5001450
+	for <binutils@sourceware.org>; Thu, 3 Aug 2023 20:33:54 GMT
+DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc :
+ subject : date : message-id : content-transfer-encoding : content-type :
+ mime-version; s=corp-2023-03-30;
+ bh=aBWH9303Y8NcOBnrwOK3V46ZpHc2uMbEHRXIxE2Mg8U=;
+ b=QXr05CxWU/hJ4gUV/hT+wrN4h0vjtTB48pepEU1M7MHli0ttn5Skv54tilAVfVKI/4cd
+ 1XlcEgN90YOHmnidsmH50z0NQ4NlFvezd1MYrs2+24ay2kIbeHKrOhDQ/EVJIvNLfpt7
+ pdZHkHpNkxl+glRpf9puwFHCFLe5Gqx6sSoz7C28I+5FMDB9/Rc3EQXtovTz90vIYSmO
+ A1PsW5C3AJG373lrpoUVxpbcxbOsH1fygEdsB4le8DRv2Pgya2WMWz3T2zL7t2gEtFCZ
+ XRbuIv+y4xYE2Q+aOJ4p5uxMbc4z3akRNes4LMwZ5U6NPRpwpOM3WFQw5x5jL6Wr6UXw zA== 
+Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20])
+	by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3s4tcu2fek-1
+	(version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK)
+	for <binutils@sourceware.org>; Thu, 03 Aug 2023 20:33:53 +0000
+Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1])
+	by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 373K58qp003980
+	for <binutils@sourceware.org>; Thu, 3 Aug 2023 20:33:51 GMT
+Received: from nam11-co1-obe.outbound.protection.outlook.com (mail-co1nam11lp2170.outbound.protection.outlook.com [104.47.56.170])
+	by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3s856rypc5-1
+	(version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK)
+	for <binutils@sourceware.org>; Thu, 03 Aug 2023 20:33:51 +0000
+ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
+ b=kZLU5BLuqIUtYWeeq/p3fogSPj1DwGv5PNeVj8xjEepBlQWfzC0ad+4n0znV8bSy0v8FqBxF1sCEZFns3lhzblg1Go5psyG/nJAvlrJ7BZQFBvNmPGwAuX2cxp49Ea7lxFwwhGUmGE1BkxanejSE0fy1gnQqGZzgbiuJfYt6lUnejJOnNTmqxI34DIAaJibRkTj/gD+rLI0k7qwgZGMslll/9ZfKz+Bpzs/oQFGA9ZY9q9xkBVGgRPVIzHHC+9V2Y2vJvbOoHa6njxS0RHCmLL9gXh0kK4rJruYUesbu3T+jOy7Kno/6uqG08NdwBrUIFaPEQUoxVXVOijvXQHr5Zw==
+ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
+ s=arcselector9901;
+ h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
+ bh=aBWH9303Y8NcOBnrwOK3V46ZpHc2uMbEHRXIxE2Mg8U=;
+ b=ejmYk7X1Z7pY0al9fEFi1vg5hSm/VA0h9l09UExzqmPiotIxFvI639eDwaNWiylM73bCWqtKbbROnZRB3rV1iDj/U2UqBWxfHxB2rGfK5CwLFcX+em4U8F9J1gNZyOAT5HcITq6SUTQ+X2qCh7l/xyQeCp1EEiDqr6Go9U5Fgm8rtFZGEC0LQ8XHKYm33P6FBXJCxpKYv69RPQFkTnZbOf1ZOdhnbOCYBslZIivjDMTsg5nqDZkNF6Hu0CxPPDafAKxoLzBiUSgf8Uf7Eu6hCs6zmDrKqeYvPfv1KqtmivuuTvsoaqks0xCCZko6Nd2GnU1sKTotkumAXfO6Zi5BOQ==
+ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
+ smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com;
+ dkim=pass header.d=oracle.com; arc=none
+DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
+ d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com;
+ h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
+ bh=aBWH9303Y8NcOBnrwOK3V46ZpHc2uMbEHRXIxE2Mg8U=;
+ b=R6vVOn08a3k+gcCdUObb97WwvDSXIzBkR1ReaZ1dnUqS3ZyElhaRikL5Lyc3Q04w6vKd8PN7h2gkGnwA82Cm+hFEccHGB6blNJNEjOhvFX2Mg6XjMjwPNZ5xQ+rzTiGp2I765cpVdXH7qk0ObwPiTR2WhuXcK/dtWIdU4To6ADk=
+Received: from SA2PR10MB4636.namprd10.prod.outlook.com (2603:10b6:806:11e::10)
+ by SN7PR10MB6473.namprd10.prod.outlook.com (2603:10b6:806:2a0::18) with
+ Microsoft SMTP Server (version=TLS1_2,
+ cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6631.47; Thu, 3 Aug
+ 2023 20:33:49 +0000
+Received: from SA2PR10MB4636.namprd10.prod.outlook.com
+ ([fe80::a15b:c87d:10e3:5765]) by SA2PR10MB4636.namprd10.prod.outlook.com
+ ([fe80::a15b:c87d:10e3:5765%7]) with mapi id 15.20.6631.046; Thu, 3 Aug 2023
+ 20:33:49 +0000
+From: vladimir.mezentsev@oracle.com
+To: binutils@sourceware.org
+Cc: Vladimir Mezentsev <vladimir.mezentsev@oracle.com>
+Subject: [PATCH] gprofng: 30700 tmpdir/gp-collect-app_F test fails
+Date: Thu,  3 Aug 2023 13:33:39 -0700
+Message-Id: <20230803203339.822435-1-vladimir.mezentsev@oracle.com>
+X-Mailer: git-send-email 2.31.1
+Content-Transfer-Encoding: 8bit
+Content-Type: text/plain
+X-ClientProxiedBy: LO6P123CA0031.GBRP123.PROD.OUTLOOK.COM
+ (2603:10a6:600:2fe::11) To SA2PR10MB4636.namprd10.prod.outlook.com
+ (2603:10b6:806:11e::10)
+MIME-Version: 1.0
+X-MS-PublicTrafficType: Email
+X-MS-TrafficTypeDiagnostic: SA2PR10MB4636:EE_|SN7PR10MB6473:EE_
+X-MS-Office365-Filtering-Correlation-Id: 32d2aa61-d0f0-4bf7-c7e5-08db9460f18b
+X-MS-Exchange-SenderADCheck: 1
+X-MS-Exchange-AntiSpam-Relay: 0
+X-Microsoft-Antispam: BCL:0;
+X-Microsoft-Antispam-Message-Info: 
+	FtlSjDlfJ9H/HjBEUbcrniNfavhoIJJwMeiHr/7PhA98yEcoC1q9zylXvVp7m0JPVj/gnTmS4z69ouHzfKuVWqLENJB9dmRnMv+od0/AsNTwOXFrvlmWYd5TyqhBuIjoG+WuwwuwkVmmUPiKLKfNRwxTpG1gXLDhTN6Psviul8nKELjewe5C+S5mzpY5NhVwJVp4JxnsES3HmWgBTO8OvnLss+/Sr0bLQY4nYfOpHvUtWdRvrqw9S26LGlFE8Z65FJP9STwGKbuGMBerRcHqeCIXIhyGKBwV9H9CdXLn9gOkhlXmjhNzu4x8H4oSCzfo/67bC8JNYZxemIRfHR/MttqTtpBYGCgeTcVeA1rc5U89DUdc3eCf8CSP59iJgpEKWHjEsZlEeb7bcFM1MHgnOnXuWgV3Z9m5hESVpQS3AsXUVQLKvRBYny8REC27NXsUyAZ5/SJ04aJGaSQ9AIUORqw1Kky1OGzYGQocDr4CxduZ1hac+X+8bRiSCjv74qsIe6nb3TtA1AkITgFbX8gH7UOwDwRmS5b6YEARR6BshFys26Xn/ktn/opathwyrZhN
+X-Forefront-Antispam-Report: 
+	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SA2PR10MB4636.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(346002)(366004)(376002)(136003)(396003)(39860400002)(451199021)(66476007)(66556008)(66946007)(2616005)(316002)(4326008)(6916009)(5660300002)(107886003)(41300700001)(186003)(6506007)(8676002)(1076003)(8936002)(86362001)(9686003)(6512007)(6666004)(478600001)(6486002)(38100700002)(2906002)(36756003)(83380400001);DIR:OUT;SFP:1101;
+X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
+X-MS-Exchange-AntiSpam-MessageData-0: 
+	=?us-ascii?Q?2vVQXnKygJyQd+tHtgSFfe014vrOKhj7QtnqPMa5sAkBUzF4FJTFNTsO/pC4?=
+ =?us-ascii?Q?gbe82wLSPsQ5xjf3KK41AKConilQU9fCfKMhaBEFVxH33ZS2DURmSf+gjSsJ?=
+ =?us-ascii?Q?UAf/zzFrAaUhLIdqP4Tkz6g+0SiqXyTlJOodWIvT3V6JMuKqQA9D1xHbZXF0?=
+ =?us-ascii?Q?0py1g7VYW0jYGcVzeCAq2lJsAHran5yjaHNDrR4SmoM4F9uNg2KNGw75ylRd?=
+ =?us-ascii?Q?6jbbaGKhUrlHyB9CeTNkvz71c7NH28AuAci6B5fzwuWJkcgNbLOIx41Bq/ZX?=
+ =?us-ascii?Q?Zgq4LF5BY80VuzfBGES1sjy2jFmuAsdvjYcBlnJGVcooG7qt9N6Fl/f8HUyu?=
+ =?us-ascii?Q?P1rRJB4pgLWC3egtg8vS5Lh4K0KQi0XKs7ks46aVjAiGY/IfHVIzb1L2nD+G?=
+ =?us-ascii?Q?RgCwy2Ubx//WcCBiTOQS5yjNxSFt4KZByQp99anrtZfJ8xiE6mghQyusbfWu?=
+ =?us-ascii?Q?g1AyKl5aCp8FHXW/vb906djTCM2opRpwR1GmBxXIaMpO/v8j9/eRSQ1R/niB?=
+ =?us-ascii?Q?YVZluKsc6R/xTJ2cZNeMJUcQafEYByOAik33U7t5Q9HNMWZ91jiWYsMWKVrj?=
+ =?us-ascii?Q?8fibDL3u05AmgiaNeXbYjK7ISPXHOjIRThWj+ILCkdR9Wfmlv5D1svssgxeL?=
+ =?us-ascii?Q?EFi3hdvD3shR2mvssmsOGWut6ZWbSEND49EhDnOS1nK6nvGRryfvIc8eAU9K?=
+ =?us-ascii?Q?tEujniv2fU6TygAo+5qcav55Dd1ng19ndQFZNMle7b/w9bEA9jXH7mqLpPyd?=
+ =?us-ascii?Q?nrNH8S3GeRmb9GCsePQApFOiwgv9gHDa18eSoOTBRlpltPb3HHmPCmaDZLWJ?=
+ =?us-ascii?Q?dXB+SI80yXLZCQhiR6u6wHplpH+d5GjZGjFxk3aNFtCb2EhaFq6OHz/f4R34?=
+ =?us-ascii?Q?FvutRMk+qKmCJ1/jop1nfn6tM6vFajL0AvOG6XVU9m24DxRAKd8AUDFVM/rO?=
+ =?us-ascii?Q?FI1KBQs7oEMN0dSzxl6C4pPmhQx6JXDgZoIN1e42hk2xt4bptYUZAzjKDSxw?=
+ =?us-ascii?Q?3CZ9+2dM0MjmLwaQkA9bmdGJNmK+UlBSIa2I+/iJeihktlMtgt0zQk+mUqCd?=
+ =?us-ascii?Q?+/IsDmOj9RMecwrIMFUhbUPzCUlns3ZrK9TbBxcqpK5Z1tNOF3lIlcUGnOSw?=
+ =?us-ascii?Q?I38m5CXSt4JAMsPpu379MT3JE+oVTrAjgPCOml29osBxGw/mPilKfqSfMJxi?=
+ =?us-ascii?Q?8ZesU2hceSc6WFr+kgfbZTDNqQIQKwNPVphs2w566wP8Ae66Gu9qLp6Bk5HQ?=
+ =?us-ascii?Q?cwZsfHa00oFB9vgkynYZ+mPu4dG9zV7WftOxsKEl59E/cORj3vQ24ZGMlUHG?=
+ =?us-ascii?Q?LB0jLAznZgOQmkUqVmmsqxvtD1/skR3r5CGlJ/K9FN82gYMuVRUT79ppg/r9?=
+ =?us-ascii?Q?e1JOgVXvnqlf4s2jYxQw3bi9QlyiFFy7MR9xMNLt7UdOV7+GdtALZXx+uOh3?=
+ =?us-ascii?Q?9/9DT7Pt4hWzZuKZc8kZGCrrZRBcpK753R/j7RlyFtGC9glPHkNaV5aQBJ6+?=
+ =?us-ascii?Q?Fwkt6CX12BvWW5krg2dy5ZCWkH+MBwS8/PxPbU5Z3bjW40j9fb2tTF8WUFVw?=
+ =?us-ascii?Q?NOkA45fBWCbMM84rbOEjN9VJElsbua90fGNcuLYEAxRCve6My1paBT4jV+k5?=
+ =?us-ascii?Q?pJraM4gq2jxgfMe/3re6+fc=3D?=
+X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
+X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 
+	5BKKV4T41EwJkqBWXCUBtKfSc0Kqk+2boYpd3LY1KKydGovf7vMEW8cZdK7DpnPReGtLMTe22G8WEdn+eueR59691BC3vrpoNVoYEMczhSi6Rf9TqO5yp8jgE/YufRIst16yC1oF14s88TE0rlftBH2NAVnB/7vKVBrmDa6SSwJyRcGyF1JIB8TKCuUj2m2a/aO9nNBSNZgl1xOBWfPKt3yBwe5hvrsmAQGm8H5Ms2bT4yhwxhA4M6f9bfj2BxBSHvDuCoJx4z7WCMycJJtY37+wT070rAkDGW6u7BTQfSdoup1NNo22gp74EJGxcn0jBDf6A0Oa6mVTe8SBy8SHFkhTwShvYYuj3R6PqqcUV8d0fvtXsNWbCydtFkZSwOugpE1y3RNtvvgtVHLdRSziiPl3CsW0cQEA0aQNdDec9xQV9uYmnQAQvHYQdMB8tGyV0viNsuIae7PaDF4fl0RJsz2Cj2EeuVwQP7txJ7YoU/qLVZLeVL9kk1F7ZCFD4L7tTjxH4/DN/AUWwpMq1U6yAiL6/ByELdB+ttlOTnbtHMN7HuNlJUosjFm59yldZZgz0nM8aiK8uZbcObBcmaHok0j11xKEKl/z3BjVuqKqtOfZs4HmKOCdLSr1cmf1JcnvvCFhjW5XCZySIqechbKUidMlivSQcIPvibERILfG3c+uU26pPEAZLwos3BWiBXFdBaN+nn2bjbrD85QjpnNUg7TF5YJOEXnodgzSvwrp9vD1SiT8sx3g4YD7kKy0E7YO
+X-OriginatorOrg: oracle.com
+X-MS-Exchange-CrossTenant-Network-Message-Id: 32d2aa61-d0f0-4bf7-c7e5-08db9460f18b
+X-MS-Exchange-CrossTenant-AuthSource: SA2PR10MB4636.namprd10.prod.outlook.com
+X-MS-Exchange-CrossTenant-AuthAs: Internal
+X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Aug 2023 20:33:49.4380
+ (UTC)
+X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
+X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b
+X-MS-Exchange-CrossTenant-MailboxType: HOSTED
+X-MS-Exchange-CrossTenant-UserPrincipalName: mt6TZSKYv+lnLPXlQj7hP3NQSiJDZFEbIztaEFvS4u/Ey+jTQS21+Nywl1vdY7TPbl8qS+F2xjqerIF6YU3aJrJY+tEZOUTu7AfUUD4pUl8=
+X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR10MB6473
+X-Proofpoint-Virus-Version: vendor=baseguard
+ engine=ICAP:2.0.254,Aquarius:18.0.957,Hydra:6.0.591,FMLib:17.11.176.26
+ definitions=2023-08-03_22,2023-08-03_01,2023-05-22_02
+X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 phishscore=0 spamscore=0
+ adultscore=0 malwarescore=0 suspectscore=0 mlxscore=0 mlxlogscore=999
+ classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2306200000
+ definitions=main-2308030184
+X-Proofpoint-GUID: Ai1oZyaQBQimnED3Xzjh2Aq6NHTga79T
+X-Proofpoint-ORIG-GUID: Ai1oZyaQBQimnED3Xzjh2Aq6NHTga79T
+X-Spam-Status: No, score=-12.6 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H5,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6
+X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org
+List-Id: <binutils.sourceware.org>
+
+From: Vladimir Mezentsev <vladimir.mezentsev@oracle.com>
+
+gprofng/ChangeLog
+2023-08-03  Vladimir Mezentsev  <vladimir.mezentsev@oracle.com>
+
+	PR gprofng/30700
+	* testsuite/gprofng.display/gp-collect-app_F.exp: Fix -name argument
+	for sub-experiment filtering.
+--- a/gprofng/testsuite/gprofng.display/gp-collect-app_F.exp
++++ b/gprofng/testsuite/gprofng.display/gp-collect-app_F.exp
+@@ -46,11 +46,11 @@ proc run_gp_collect_app { subExpCnt F_opt } {
+     return -code break
+   }
+ 
+-  set output [run_native_host_cmd "find $tdir -name '*x1.er' | wc -l"]
++  set output [run_native_host_cmd "find $tdir -name '*_x?.er' | wc -l"]
+   set subExp [lindex $output 1]
+   if { $subExp != $subExpCnt } then {
+     set out [lindex $output 1]
+-    send_log "Test failed for -F $F_opt. subExp=$subExp. Shold be $subExpCnt\n"
++    send_log "Test failed for -F $F_opt. subExp=$subExp. Should be $subExpCnt\n"
+     fail $tdir
+     return -code break
+   }
+-- 
+2.31.1

diff --git a/9999/0012-lto-type-mismatch.patch b/9999/0012-lto-type-mismatch.patch
new file mode 100644
index 0000000..dbb6958
--- /dev/null
+++ b/9999/0012-lto-type-mismatch.patch
@@ -0,0 +1,20 @@
+https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=e34acfce343d53290e72c317213a28327bc52fb0
+
+From e34acfce343d53290e72c317213a28327bc52fb0 Mon Sep 17 00:00:00 2001
+From: Tom de Vries <tdevries@suse.de>
+Date: Thu, 3 Aug 2023 09:48:39 +0100
+Subject: [PATCH]  Fix Wlto-type-mismatch in opcodes/ft32-dis.c
+
+--- a/opcodes/ft32-dis.c
++++ b/opcodes/ft32-dis.c
+@@ -27,7 +27,7 @@
+ #include "opcode/ft32.h"
+ #include "disassemble.h"
+ 
+-extern const ft32_opc_info_t ft32_opc_info[128];
++extern const ft32_opc_info_t ft32_opc_info[];
+ 
+ static fprintf_ftype fpr;
+ static void *stream;
+-- 
+2.39.3


^ permalink raw reply related	[flat|nested] 39+ messages in thread

* [gentoo-commits] proj/toolchain/binutils-patches:master commit in: 9999/
@ 2024-06-28 21:48 Andreas K. Hüttel
  0 siblings, 0 replies; 39+ messages in thread
From: Andreas K. Hüttel @ 2024-06-28 21:48 UTC (permalink / raw
  To: gentoo-commits

commit:     cf4082117e6e8e456dd2e4d92b3d1a50d38ce2c5
Author:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
AuthorDate: Fri Jun 28 21:48:16 2024 +0000
Commit:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
CommitDate: Fri Jun 28 21:48:16 2024 +0000
URL:        https://gitweb.gentoo.org/proj/toolchain/binutils-patches.git/commit/?id=cf408211

Rebase patches for master

Signed-off-by: Andreas K. Hüttel <dilfridge <AT> gentoo.org>

 ...-ld-add-support-for-poisoned-system-direc.patch | 76 +++++++++++-----------
 ...iberty-install-PIC-version-of-libiberty.a.patch |  6 +-
 ...oo-add-with-extra-soversion-suffix-option.patch | 28 ++++----
 ...ss-hash-style-sysv-to-ld-in-the-testsuite.patch | 10 +--
 ...-also-libctf-optionally-a-gentoo-specific.patch | 32 ++++-----
 ...0006-Gentoo-XFAIL-15-broken-ld.gold-tests.patch | 10 +--
 ...ilar-libiberty-fix-as-in-7d53105d-for-lib.patch | 16 ++---
 7 files changed, 89 insertions(+), 89 deletions(-)

diff --git a/9999/0001-Gentoo-gold-ld-add-support-for-poisoned-system-direc.patch b/9999/0001-Gentoo-gold-ld-add-support-for-poisoned-system-direc.patch
index e054415..f11678e 100644
--- a/9999/0001-Gentoo-gold-ld-add-support-for-poisoned-system-direc.patch
+++ b/9999/0001-Gentoo-gold-ld-add-support-for-poisoned-system-direc.patch
@@ -1,4 +1,4 @@
-From 7b47d0be518ef97bb5259a5dbb70d6b3f22011f6 Mon Sep 17 00:00:00 2001
+From 68b26b5bf2047d71fac89ee321c0f9231c85903e Mon Sep 17 00:00:00 2001
 From: Mike Frysinger <vapier@gentoo.org>
 Date: Tue, 20 Jul 2021 21:08:31 +0200
 Subject: [PATCH 1/7] Gentoo: gold/ld: add support for poisoned system
@@ -44,7 +44,7 @@ Ported to binutils 2.39 by WANG Xuerui <xen0n@gentoo.org>
  11 files changed, 148 insertions(+)
 
 diff --git a/gold/options.cc b/gold/options.cc
-index c9834b66159..bd3e948a61b 100644
+index 46f067fa72f..a07ba1c82ed 100644
 --- a/gold/options.cc
 +++ b/gold/options.cc
 @@ -1355,6 +1355,39 @@ General_options::finalize()
@@ -88,7 +88,7 @@ index c9834b66159..bd3e948a61b 100644
    if (this->shared() && this->is_static())
      gold_fatal(_("-shared and -static are incompatible"));
 diff --git a/gold/options.h b/gold/options.h
-index 46f658f23ea..8f9b8c177ad 100644
+index 446e8d42614..464863b45fa 100644
 --- a/gold/options.h
 +++ b/gold/options.h
 @@ -1402,6 +1402,13 @@ class General_options
@@ -106,10 +106,10 @@ index 46f658f23ea..8f9b8c177ad 100644
  	      N_("Warn when skipping an incompatible library"),
  	      N_("Don't warn when skipping an incompatible library"));
 diff --git a/ld/config.in b/ld/config.in
-index a453c7f7241..a0bc2a56013 100644
+index f7c9da3d02a..e4fdbf6db5b 100644
 --- a/ld/config.in
 +++ b/ld/config.in
-@@ -58,6 +58,9 @@
+@@ -74,6 +74,9 @@
     language is requested. */
  #undef ENABLE_NLS
  
@@ -120,10 +120,10 @@ index a453c7f7241..a0bc2a56013 100644
  #undef EXTRA_SHLIB_EXTENSION
  
 diff --git a/ld/configure b/ld/configure
-index d2cdf256b89..0f32e98bc34 100755
+index 4e8de840418..f6d3069133e 100755
 --- a/ld/configure
 +++ b/ld/configure
-@@ -838,6 +838,7 @@ with_lib_path
+@@ -844,6 +844,7 @@ with_lib_path
  enable_targets
  enable_64_bit_bfd
  with_sysroot
@@ -131,7 +131,7 @@ index d2cdf256b89..0f32e98bc34 100755
  enable_gold
  enable_got
  enable_compressed_debug_sections
-@@ -1520,6 +1521,8 @@ Optional Features:
+@@ -1535,6 +1536,8 @@ Optional Features:
    --enable-checking       enable run-time checks
    --enable-targets        alternative target configurations
    --enable-64-bit-bfd     64-bit support (on hosts with narrower word sizes)
@@ -140,7 +140,7 @@ index d2cdf256b89..0f32e98bc34 100755
    --enable-gold[=ARG]     build gold [ARG={default,yes,no}]
    --enable-got=<type>     GOT handling scheme (target, single, negative,
                            multigot)
-@@ -15538,6 +15541,19 @@ fi
+@@ -15566,6 +15569,19 @@ fi
  
  
  
@@ -161,10 +161,10 @@ index d2cdf256b89..0f32e98bc34 100755
  if test "${enable_gold+set}" = set; then :
    enableval=$enable_gold; case "${enableval}" in
 diff --git a/ld/configure.ac b/ld/configure.ac
-index c3ebd3ec7e4..71790d7640f 100644
+index bdf51a062fa..3d370ff92ce 100644
 --- a/ld/configure.ac
 +++ b/ld/configure.ac
-@@ -103,6 +103,16 @@ AC_SUBST(use_sysroot)
+@@ -102,6 +102,16 @@ AC_SUBST(use_sysroot)
  AC_SUBST(TARGET_SYSTEM_ROOT)
  AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)
  
@@ -182,10 +182,10 @@ index c3ebd3ec7e4..71790d7640f 100644
  dnl "install_as_default" is set to false if gold is the default linker.
  dnl "installed_linker" is the installed BFD linker name.
 diff --git a/ld/ld.h b/ld/ld.h
-index a0f8a15c7a9..69420b6673a 100644
+index 0dee944cf2a..a2bb9a10993 100644
 --- a/ld/ld.h
 +++ b/ld/ld.h
-@@ -163,6 +163,13 @@ typedef struct
+@@ -166,6 +166,13 @@ typedef struct
       in the linker script.  */
    bool force_group_allocation;
  
@@ -200,10 +200,10 @@ index a0f8a15c7a9..69420b6673a 100644
    enum endian_enum endian;
  
 diff --git a/ld/ld.texi b/ld/ld.texi
-index 1f56ded1041..1fa6bf7b225 100644
+index 89e3913317a..cd16eb9685e 100644
 --- a/ld/ld.texi
 +++ b/ld/ld.texi
-@@ -3070,6 +3070,24 @@ creation of the metadata note, if one had been enabled by an earlier
+@@ -3245,6 +3245,24 @@ creation of the metadata note, if one had been enabled by an earlier
  occurrence of the --package-metadata option.
  If the linker has been built with libjansson, then the JSON string
  will be validated.
@@ -229,15 +229,14 @@ index 1f56ded1041..1fa6bf7b225 100644
  
  @c man end
 diff --git a/ld/ldfile.c b/ld/ldfile.c
-index 8f869c1f19e..ee9d4bccee2 100644
+index 87be885d31a..469ab52f985 100644
 --- a/ld/ldfile.c
 +++ b/ld/ldfile.c
-@@ -327,6 +327,26 @@ ldfile_add_library_path (const char *name, bool cmdline)
-     new_dirs->name = concat (ld_sysroot, name + strlen ("$SYSROOT"), (const char *) NULL);
-   else
-     new_dirs->name = xstrdup (name);
-+
-+  if (command_line.warn_poison_system_directories
+@@ -344,6 +344,26 @@ ldfile_add_library_path (const char *name, enum search_dir_source source)
+       search_tail_ptr = &new_dirs->next;
+     }
+ 
++ if (command_line.warn_poison_system_directories
 +      && (!strncmp (name, "/lib", 4)
 +      /* TODO: This check is disabled for now due to a bunch of packages that
 +       * use libtool and relink with -L/usr/lib paths (albeit after the right
@@ -245,25 +244,26 @@ index 8f869c1f19e..ee9d4bccee2 100644
 +       * We also need to adjust it so it only rejects one or two levels deep.
 +       * Gcc's internal paths also live below /usr/lib.
 +       * http://crbug.com/488360  */
-+	  /* || !strncmp (name, "/usr/lib", 8) */
-+	  || !strncmp (name, "/usr/local/lib", 14)
-+	  || !strncmp (name, "/usr/X11R6/lib", 14)))
++       /* || !strncmp (name, "/usr/lib", 8) */
++          || !strncmp (name, "/usr/local/lib", 14)
++          || !strncmp (name, "/usr/X11R6/lib", 14)))
 +    {
 +      if (command_line.error_poison_system_directories)
-+	einfo (_("%X%P: error: library search path \"%s\" is unsafe for "
-+	         "cross-compilation\n"), name);
++        einfo (_("%X%P: error: library search path \"%s\" is unsafe for "
++                 "cross-compilation\n"), name);
 +      else
-+	einfo (_("%P: warning: library search path \"%s\" is unsafe for "
-+	         "cross-compilation\n"), name);
++        einfo (_("%P: warning: library search path \"%s\" is unsafe for "
++                 "cross-compilation\n"), name);
 +    }
++
+   return new_dirs;
  }
  
- /* Try to open a BFD for a lang_input_statement.  */
 diff --git a/ld/ldlex.h b/ld/ldlex.h
-index 87cac02141d..d79ec8faa15 100644
+index defe3fcbbb9..ab94487edc6 100644
 --- a/ld/ldlex.h
 +++ b/ld/ldlex.h
-@@ -151,6 +151,9 @@ enum option_values
+@@ -153,6 +153,9 @@ enum option_values
    OPTION_PRINT_OUTPUT_FORMAT,
    OPTION_PRINT_SYSROOT,
    OPTION_IGNORE_UNRESOLVED_SYMBOL,
@@ -274,10 +274,10 @@ index 87cac02141d..d79ec8faa15 100644
    OPTION_POP_STATE,
    OPTION_DISABLE_MULTIPLE_DEFS_ABS,
 diff --git a/ld/ldmain.c b/ld/ldmain.c
-index 06ac2c64fa8..5ec931a0255 100644
+index 037099b9d37..552a191a857 100644
 --- a/ld/ldmain.c
 +++ b/ld/ldmain.c
-@@ -325,6 +325,13 @@ main (int argc, char **argv)
+@@ -347,6 +347,13 @@ main (int argc, char **argv)
    command_line.warn_mismatch = true;
    command_line.warn_search_mismatch = true;
    command_line.check_section_addresses = -1;
@@ -292,10 +292,10 @@ index 06ac2c64fa8..5ec931a0255 100644
    /* We initialize DEMANGLING based on the environment variable
       COLLECT_NO_DEMANGLE.  The gcc collect2 program will demangle the
 diff --git a/ld/lexsup.c b/ld/lexsup.c
-index 49dfc13382a..b2d1d967aa0 100644
+index 4aa0124ce2f..e8e28ac7ea4 100644
 --- a/ld/lexsup.c
 +++ b/ld/lexsup.c
-@@ -594,6 +594,18 @@ static const struct ld_option ld_options[] =
+@@ -613,6 +613,18 @@ static const struct ld_option ld_options[] =
      OPTION_IGNORE_UNRESOLVED_SYMBOL},
      '\0', N_("SYMBOL"),
      N_("Unresolved SYMBOL will not cause an error or warning"), TWO_DASHES },
@@ -314,7 +314,7 @@ index 49dfc13382a..b2d1d967aa0 100644
    { {"push-state", no_argument, NULL, OPTION_PUSH_STATE},
      '\0', NULL, N_("Push state of flags governing input file handling"),
      TWO_DASHES },
-@@ -1738,6 +1750,18 @@ parse_args (unsigned argc, char **argv)
+@@ -1785,6 +1797,18 @@ parse_args (unsigned argc, char **argv)
  	  }
  	  break;
  
@@ -334,5 +334,5 @@ index 49dfc13382a..b2d1d967aa0 100644
  	  input_flags.pushed = xmemdup (&input_flags,
  					sizeof (input_flags),
 -- 
-2.42.0
+2.44.2
 

diff --git a/9999/0002-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch b/9999/0002-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch
index d428c20..a36bb51 100644
--- a/9999/0002-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch
+++ b/9999/0002-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch
@@ -1,4 +1,4 @@
-From 1156f7b2f690654cf5810ef1e34791d18d207a9f Mon Sep 17 00:00:00 2001
+From 1594a93229b13d3c34c679e5991e64663cace1b9 Mon Sep 17 00:00:00 2001
 From: Mike Frysinger <vapier@gentoo.org>
 Date: Fri, 7 Jan 2005 00:15:53 -0500
 Subject: [PATCH 2/7] Gentoo: libiberty: install PIC version of libiberty.a
@@ -18,7 +18,7 @@ general are fairly low, and we'd rather have things work for all of them.
  1 file changed, 1 insertion(+)
 
 diff --git a/libiberty/Makefile.in b/libiberty/Makefile.in
-index f9fbba23e2c..d37488d1bf8 100644
+index b77a41c781c..5e3725d16ff 100644
 --- a/libiberty/Makefile.in
 +++ b/libiberty/Makefile.in
 @@ -258,6 +258,7 @@ $(TARGETLIB): $(REQUIRED_OFILES) $(EXTRA_OFILES) $(LIBOBJS)
@@ -30,5 +30,5 @@ index f9fbba23e2c..d37488d1bf8 100644
  	else true; fi; \
  	if [ x"$(NOASANFLAG)" != x ]; then \
 -- 
-2.42.0
+2.44.2
 

diff --git a/9999/0003-Gentoo-add-with-extra-soversion-suffix-option.patch b/9999/0003-Gentoo-add-with-extra-soversion-suffix-option.patch
index d4d4571..3694049 100644
--- a/9999/0003-Gentoo-add-with-extra-soversion-suffix-option.patch
+++ b/9999/0003-Gentoo-add-with-extra-soversion-suffix-option.patch
@@ -1,4 +1,4 @@
-From 411d52402227b6e1a9c779988f6f0fc1e17c6620 Mon Sep 17 00:00:00 2001
+From 6d6cbf2ede96fd65bd7a9382c3364aaa9d0ac3bb Mon Sep 17 00:00:00 2001
 From: Sergei Trofimovich <slyfox@gentoo.org>
 Date: Tue, 20 Jul 2021 21:12:38 +0200
 Subject: [PATCH 3/7] Gentoo: add --with-extra-soversion-suffix= option
@@ -34,7 +34,7 @@ Ported to binutils 2.37 by Andreas K. Hüttel <dilfridge@gentoo.org>
  4 files changed, 29 insertions(+)
 
 diff --git a/bfd/Makefile.am b/bfd/Makefile.am
-index 378c13198d6..e0fa379ca8e 100644
+index 0dc733eaba9..5bd636d931a 100644
 --- a/bfd/Makefile.am
 +++ b/bfd/Makefile.am
 @@ -64,6 +64,8 @@ bfdinclude_HEADERS += $(INCDIR)/plugin-api.h
@@ -46,7 +46,7 @@ index 378c13198d6..e0fa379ca8e 100644
  # bfd.h goes here, for now
  BFD_H = bfd.h
  
-@@ -991,6 +993,9 @@ bfdver.h: $(srcdir)/version.h $(srcdir)/development.sh $(srcdir)/Makefile.in
+@@ -999,6 +1001,9 @@ bfdver.h: $(srcdir)/version.h $(srcdir)/development.sh $(srcdir)/Makefile.in
  	  bfd_version_string="\"$(VERSION).$${bfd_version_date}\"" ;\
  	  bfd_soversion="$(VERSION).$${bfd_version_date}" ;\
  	fi ;\
@@ -57,10 +57,10 @@ index 378c13198d6..e0fa379ca8e 100644
  	    -e "s,@bfd_version_string@,$$bfd_version_string," \
  	    -e "s,@bfd_version_package@,$$bfd_version_package," \
 diff --git a/bfd/Makefile.in b/bfd/Makefile.in
-index 8d09f6fa4af..d397502bb4d 100644
+index b3d97d478ea..38209d1b234 100644
 --- a/bfd/Makefile.in
 +++ b/bfd/Makefile.in
-@@ -342,6 +342,7 @@ ECHO_T = @ECHO_T@
+@@ -348,6 +348,7 @@ ECHO_T = @ECHO_T@
  EGREP = @EGREP@
  EXEEXT = @EXEEXT@
  EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@
@@ -68,7 +68,7 @@ index 8d09f6fa4af..d397502bb4d 100644
  FGREP = @FGREP@
  GENCAT = @GENCAT@
  GMSGFMT = @GMSGFMT@
-@@ -2454,6 +2455,9 @@ bfdver.h: $(srcdir)/version.h $(srcdir)/development.sh $(srcdir)/Makefile.in
+@@ -2471,6 +2472,9 @@ bfdver.h: $(srcdir)/version.h $(srcdir)/development.sh $(srcdir)/Makefile.in
  	  bfd_version_string="\"$(VERSION).$${bfd_version_date}\"" ;\
  	  bfd_soversion="$(VERSION).$${bfd_version_date}" ;\
  	fi ;\
@@ -79,10 +79,10 @@ index 8d09f6fa4af..d397502bb4d 100644
  	    -e "s,@bfd_version_string@,$$bfd_version_string," \
  	    -e "s,@bfd_version_package@,$$bfd_version_package," \
 diff --git a/bfd/configure b/bfd/configure
-index f0a07ff675f..2322e9b61cf 100755
+index 6458974951e..b43789851cd 100755
 --- a/bfd/configure
 +++ b/bfd/configure
-@@ -695,6 +695,7 @@ WARN_CFLAGS
+@@ -701,6 +701,7 @@ WARN_CFLAGS
  REPORT_BUGS_TEXI
  REPORT_BUGS_TO
  PKGVERSION
@@ -90,7 +90,7 @@ index f0a07ff675f..2322e9b61cf 100755
  DEBUGDIR
  ENABLE_BFD_64_BIT_FALSE
  ENABLE_BFD_64_BIT_TRUE
-@@ -836,6 +837,7 @@ enable_secureplt
+@@ -842,6 +843,7 @@ enable_secureplt
  enable_separate_code
  enable_leading_mingw64_underscores
  with_separate_debug_dir
@@ -98,7 +98,7 @@ index f0a07ff675f..2322e9b61cf 100755
  with_pkgversion
  with_bugurl
  enable_werror
-@@ -1518,6 +1520,8 @@ Optional Packages:
+@@ -1530,6 +1532,8 @@ Optional Packages:
    --with-separate-debug-dir=DIR
                            Look for global separate debug info in DIR
                            [[default=LIBDIR/debug]]
@@ -107,7 +107,7 @@ index f0a07ff675f..2322e9b61cf 100755
    --with-pkgversion=PKG   Use PKG in the version string in place of "GNU
                            Binutils"
    --with-bugurl=URL       Direct users to URL to report a bug
-@@ -12064,6 +12068,15 @@ fi
+@@ -12082,6 +12086,15 @@ fi
  
  
  
@@ -124,10 +124,10 @@ index f0a07ff675f..2322e9b61cf 100755
  
  # Check whether --with-pkgversion was given.
 diff --git a/bfd/configure.ac b/bfd/configure.ac
-index d1e7e3a4bf3..48f2d69991c 100644
+index 6bcfd1b7368..dde0a3af03e 100644
 --- a/bfd/configure.ac
 +++ b/bfd/configure.ac
-@@ -168,6 +168,13 @@ AC_ARG_WITH(separate-debug-dir,
+@@ -167,6 +167,13 @@ AC_ARG_WITH(separate-debug-dir,
  [DEBUGDIR="${withval}"])
  AC_SUBST(DEBUGDIR)
  
@@ -142,5 +142,5 @@ index d1e7e3a4bf3..48f2d69991c 100644
  ACX_BUGURL([https://sourceware.org/bugzilla/])
  
 -- 
-2.42.0
+2.44.2
 

diff --git a/9999/0004-Gentoo-Pass-hash-style-sysv-to-ld-in-the-testsuite.patch b/9999/0004-Gentoo-Pass-hash-style-sysv-to-ld-in-the-testsuite.patch
index 6d820fe..4cfd1da 100644
--- a/9999/0004-Gentoo-Pass-hash-style-sysv-to-ld-in-the-testsuite.patch
+++ b/9999/0004-Gentoo-Pass-hash-style-sysv-to-ld-in-the-testsuite.patch
@@ -1,4 +1,4 @@
-From 722482c5057cc921d1ab96266da29be4dc7d1354 Mon Sep 17 00:00:00 2001
+From b706ce22cbea4edb8ba06ef1b64f6b20f3502d0c Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
 Date: Tue, 20 Jul 2021 21:15:24 +0200
 Subject: [PATCH 4/7] Gentoo: Pass --hash-style=sysv to ld in the testsuite
@@ -9,10 +9,10 @@ Subject: [PATCH 4/7] Gentoo: Pass --hash-style=sysv to ld in the testsuite
  2 files changed, 15 insertions(+), 3 deletions(-)
 
 diff --git a/binutils/testsuite/lib/binutils-common.exp b/binutils/testsuite/lib/binutils-common.exp
-index f89ac8a6108..2be9383b49e 100644
+index f0136577b6c..afb6f7cc9c3 100644
 --- a/binutils/testsuite/lib/binutils-common.exp
 +++ b/binutils/testsuite/lib/binutils-common.exp
-@@ -1340,7 +1340,7 @@ proc run_dump_test { name {extra_options {}} } {
+@@ -1394,7 +1394,7 @@ proc run_dump_test { name {extra_options {}} } {
  
  	    # Add -L$srcdir/$subdir so that the linker command can use
  	    # linker scripts in the source directory.
@@ -22,7 +22,7 @@ index f89ac8a6108..2be9383b49e 100644
  
  	    # If needed then check for, or add a -Map option.
 diff --git a/ld/testsuite/lib/ld-lib.exp b/ld/testsuite/lib/ld-lib.exp
-index aca303e0728..44f2865116f 100644
+index e6e643ca3ca..b1164e9a96f 100644
 --- a/ld/testsuite/lib/ld-lib.exp
 +++ b/ld/testsuite/lib/ld-lib.exp
 @@ -171,7 +171,7 @@ proc default_ld_relocate { ld target objects } {
@@ -57,5 +57,5 @@ index aca303e0728..44f2865116f 100644
  
      # We don't care if we get a warning about a non-existent start
 -- 
-2.42.0
+2.44.2
 

diff --git a/9999/0005-Gentoo-Give-also-libctf-optionally-a-gentoo-specific.patch b/9999/0005-Gentoo-Give-also-libctf-optionally-a-gentoo-specific.patch
index ab34ef9..6964aab 100644
--- a/9999/0005-Gentoo-Give-also-libctf-optionally-a-gentoo-specific.patch
+++ b/9999/0005-Gentoo-Give-also-libctf-optionally-a-gentoo-specific.patch
@@ -1,4 +1,4 @@
-From a0e9a882db04d45bf878b746a8a30c5e51619d8b Mon Sep 17 00:00:00 2001
+From a8cf14f5ea0a210928250fd1c47b4e45c39974c5 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
 Date: Sat, 24 Jul 2021 15:20:16 +0200
 Subject: [PATCH 5/7] Gentoo: Give also libctf optionally a gentoo-specific
@@ -12,10 +12,10 @@ Subject: [PATCH 5/7] Gentoo: Give also libctf optionally a gentoo-specific
  4 files changed, 62 insertions(+), 2 deletions(-)
 
 diff --git a/libctf/Makefile.am b/libctf/Makefile.am
-index b1dbc2f6ba4..d282ceb619a 100644
+index fb1a306c888..5fcc73bd04e 100644
 --- a/libctf/Makefile.am
 +++ b/libctf/Makefile.am
-@@ -26,6 +26,9 @@ info_TEXINFOS =
+@@ -31,6 +31,9 @@ info_TEXINFOS =
  DISTCLEANFILES =
  MAINTAINERCLEANFILES =
  
@@ -25,7 +25,7 @@ index b1dbc2f6ba4..d282ceb619a 100644
  # This is where we get zlib from.  zlibdir is -L../zlib and zlibinc is
  # -I../zlib, unless we were configured with --with-system-zlib, in which
  # case both are empty.
-@@ -46,8 +49,17 @@ include_HEADERS =
+@@ -51,8 +54,17 @@ include_HEADERS =
  noinst_LTLIBRARIES = libctf.la libctf-nobfd.la
  endif
  
@@ -45,10 +45,10 @@ index b1dbc2f6ba4..d282ceb619a 100644
  libctf_nobfd_la_CPPFLAGS = $(AM_CPPFLAGS) -DNOBFD=1
  libctf_nobfd_la_SOURCES = ctf-archive.c ctf-dump.c ctf-create.c ctf-decl.c ctf-error.c \
 diff --git a/libctf/Makefile.in b/libctf/Makefile.in
-index 3d2696bcc47..664d6360c47 100644
+index 54f5daa79ee..b7a80edfab6 100644
 --- a/libctf/Makefile.in
 +++ b/libctf/Makefile.in
-@@ -380,6 +380,7 @@ AUTOCONF = @AUTOCONF@
+@@ -430,6 +430,7 @@ AUTOCONF = @AUTOCONF@
  AUTOHEADER = @AUTOHEADER@
  AUTOMAKE = @AUTOMAKE@
  AWK = @AWK@
@@ -56,7 +56,7 @@ index 3d2696bcc47..664d6360c47 100644
  CATALOGS = @CATALOGS@
  CATOBJEXT = @CATOBJEXT@
  CC = @CC@
-@@ -402,6 +403,7 @@ EXEEXT = @EXEEXT@
+@@ -452,6 +453,7 @@ EXEEXT = @EXEEXT@
  
  # Setup the testing framework, if you have one
  EXPECT = expect
@@ -64,7 +64,7 @@ index 3d2696bcc47..664d6360c47 100644
  FGREP = @FGREP@
  GENCAT = @GENCAT@
  GMSGFMT = @GMSGFMT@
-@@ -540,8 +542,13 @@ AM_CFLAGS = -std=gnu99 @ac_libctf_warn_cflags@ @warn@ @c_warn@ @WARN_PEDANTIC@ @
+@@ -603,8 +605,13 @@ AM_CFLAGS = -std=gnu99 @ac_libctf_warn_cflags@ @warn@ @c_warn@ @WARN_PEDANTIC@ @
  @INSTALL_LIBBFD_FALSE@include_HEADERS = 
  @INSTALL_LIBBFD_TRUE@include_HEADERS = $(INCDIR)/ctf.h $(INCDIR)/ctf-api.h
  @INSTALL_LIBBFD_FALSE@noinst_LTLIBRARIES = libctf.la libctf-nobfd.la
@@ -80,10 +80,10 @@ index 3d2696bcc47..664d6360c47 100644
  libctf_nobfd_la_CPPFLAGS = $(AM_CPPFLAGS) -DNOBFD=1
  libctf_nobfd_la_SOURCES = ctf-archive.c ctf-dump.c ctf-create.c \
 diff --git a/libctf/configure b/libctf/configure
-index 4c01c022837..07778d52be4 100755
+index 7466d56a18b..54c86592b70 100755
 --- a/libctf/configure
 +++ b/libctf/configure
-@@ -645,6 +645,10 @@ BUILD_INFO_FALSE
+@@ -646,6 +646,10 @@ BUILD_INFO_FALSE
  BUILD_INFO_TRUE
  NEED_CTF_QSORT_R_FALSE
  NEED_CTF_QSORT_R_TRUE
@@ -94,7 +94,7 @@ index 4c01c022837..07778d52be4 100755
  ENABLE_LIBCTF_HASH_DEBUGGING_FALSE
  ENABLE_LIBCTF_HASH_DEBUGGING_TRUE
  zlibinc
-@@ -806,6 +810,7 @@ enable_maintainer_mode
+@@ -821,6 +825,7 @@ enable_maintainer_mode
  enable_install_libbfd
  with_system_zlib
  enable_libctf_hash_debugging
@@ -102,7 +102,7 @@ index 4c01c022837..07778d52be4 100755
  '
        ac_precious_vars='build_alias
  host_alias
-@@ -1463,6 +1468,8 @@ Optional Packages:
+@@ -1487,6 +1492,8 @@ Optional Packages:
                            both]
    --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
    --with-system-zlib      use installed libz
@@ -111,7 +111,7 @@ index 4c01c022837..07778d52be4 100755
  
  Some influential environment variables:
    CC          C compiler command
-@@ -14335,6 +14342,26 @@ else
+@@ -16274,6 +16281,26 @@ else
  fi
  
  
@@ -138,7 +138,7 @@ index 4c01c022837..07778d52be4 100755
  # Similar to GDB_AC_CHECK_BFD.
  OLD_CFLAGS=$CFLAGS
  OLD_LDFLAGS=$LDFLAGS
-@@ -15227,6 +15254,10 @@ if test -z "${ENABLE_LIBCTF_HASH_DEBUGGING_TRUE}" && test -z "${ENABLE_LIBCTF_HA
+@@ -17177,6 +17204,10 @@ if test -z "${ENABLE_LIBCTF_HASH_DEBUGGING_TRUE}" && test -z "${ENABLE_LIBCTF_HA
    as_fn_error $? "conditional \"ENABLE_LIBCTF_HASH_DEBUGGING\" was never defined.
  Usually this means the macro was only invoked conditionally." "$LINENO" 5
  fi
@@ -150,7 +150,7 @@ index 4c01c022837..07778d52be4 100755
  if test -z "${NEED_CTF_QSORT_R_TRUE}" && test -z "${NEED_CTF_QSORT_R_FALSE}"; then
    as_fn_error $? "conditional \"NEED_CTF_QSORT_R\" was never defined.
 diff --git a/libctf/configure.ac b/libctf/configure.ac
-index 6a5eade1855..a0e65a4aeda 100644
+index 64544b83a9f..1ce43327c25 100644
 --- a/libctf/configure.ac
 +++ b/libctf/configure.ac
 @@ -76,6 +76,16 @@ if test "${enable_libctf_hash_debugging}" = yes; then
@@ -171,5 +171,5 @@ index 6a5eade1855..a0e65a4aeda 100644
  OLD_CFLAGS=$CFLAGS
  OLD_LDFLAGS=$LDFLAGS
 -- 
-2.42.0
+2.44.2
 

diff --git a/9999/0006-Gentoo-XFAIL-15-broken-ld.gold-tests.patch b/9999/0006-Gentoo-XFAIL-15-broken-ld.gold-tests.patch
index 2934cd3..fe6da95 100644
--- a/9999/0006-Gentoo-XFAIL-15-broken-ld.gold-tests.patch
+++ b/9999/0006-Gentoo-XFAIL-15-broken-ld.gold-tests.patch
@@ -1,4 +1,4 @@
-From 9bf3571ddf788d8986d1e45d54df356867bd23d9 Mon Sep 17 00:00:00 2001
+From d826b80fe902aefd77465be3650ab2d62af5e099 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
 Date: Sat, 31 Jul 2021 01:18:18 +0200
 Subject: [PATCH 6/7] Gentoo: XFAIL 15 broken ld.gold tests
@@ -16,7 +16,7 @@ Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=27303
  2 files changed, 18 insertions(+), 4 deletions(-)
 
 diff --git a/gold/testsuite/Makefile.am b/gold/testsuite/Makefile.am
-index df9405c1aac..749921633b2 100644
+index 2f1348fd6e2..1206460f191 100644
 --- a/gold/testsuite/Makefile.am
 +++ b/gold/testsuite/Makefile.am
 @@ -1,5 +1,11 @@
@@ -32,7 +32,7 @@ index df9405c1aac..749921633b2 100644
  # system and the host system are the same.  So these tests will not
  # work when building with a cross-compiler.
 diff --git a/gold/testsuite/Makefile.in b/gold/testsuite/Makefile.in
-index fb0eb12553b..b506a7f8da7 100644
+index 9cf21df8d7d..df14333c558 100644
 --- a/gold/testsuite/Makefile.in
 +++ b/gold/testsuite/Makefile.in
 @@ -15,10 +15,6 @@
@@ -61,7 +61,7 @@ index fb0eb12553b..b506a7f8da7 100644
  check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
  	$(am__EXEEXT_4) $(am__EXEEXT_5) $(am__EXEEXT_6) \
  	$(am__EXEEXT_7) $(am__EXEEXT_8) $(am__EXEEXT_9) \
-@@ -2759,6 +2763,10 @@ top_srcdir = @top_srcdir@
+@@ -2782,6 +2786,10 @@ top_srcdir = @top_srcdir@
  zlibdir = @zlibdir@
  zlibinc = @zlibinc@
  
@@ -73,5 +73,5 @@ index fb0eb12553b..b506a7f8da7 100644
  AUTOMAKE_OPTIONS = foreign -Wno-portability
  
 -- 
-2.42.0
+2.44.2
 

diff --git a/9999/0007-Apply-a-similar-libiberty-fix-as-in-7d53105d-for-lib.patch b/9999/0007-Apply-a-similar-libiberty-fix-as-in-7d53105d-for-lib.patch
index 2331b5c..6eebb98 100644
--- a/9999/0007-Apply-a-similar-libiberty-fix-as-in-7d53105d-for-lib.patch
+++ b/9999/0007-Apply-a-similar-libiberty-fix-as-in-7d53105d-for-lib.patch
@@ -1,4 +1,4 @@
-From 51b418fda84420da6d2c0e830435ad61409daffb Mon Sep 17 00:00:00 2001
+From bbaa9fafb08385e5ad836bc30a2db3af47d1cc5a Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
 Date: Wed, 22 Feb 2023 20:05:35 +0100
 Subject: [PATCH 7/7] Apply a similar libiberty fix as in 7d53105d for
@@ -18,7 +18,7 @@ Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
  4 files changed, 8 insertions(+), 6 deletions(-)
 
 diff --git a/gprofng/src/Makefile.am b/gprofng/src/Makefile.am
-index 20c8b0022e4..96dbc8e0e94 100644
+index fb4b8a0fafa..3d7cb18ff71 100644
 --- a/gprofng/src/Makefile.am
 +++ b/gprofng/src/Makefile.am
 @@ -144,7 +144,8 @@ libgprofng_la_LDFLAGS = -version-info 0:0:0
@@ -32,7 +32,7 @@ index 20c8b0022e4..96dbc8e0e94 100644
  	$(GPROFNG_LIBADD) \
  	-lpthread -ldl
 diff --git a/gprofng/src/Makefile.in b/gprofng/src/Makefile.in
-index 47da873b80c..52a22279cf7 100644
+index cef4b275305..295fd3ee2df 100644
 --- a/gprofng/src/Makefile.in
 +++ b/gprofng/src/Makefile.in
 @@ -552,7 +552,8 @@ libgprofng_la_LDFLAGS = -version-info 0:0:0
@@ -46,10 +46,10 @@ index 47da873b80c..52a22279cf7 100644
  	$(GPROFNG_LIBADD) \
  	-lpthread -ldl
 diff --git a/opcodes/configure b/opcodes/configure
-index a65b0a2f95b..f412c1a6c96 100755
+index 050fd5ff0ff..4b68211dea6 100755
 --- a/opcodes/configure
 +++ b/opcodes/configure
-@@ -12479,10 +12479,10 @@ if test "$enable_shared" = "yes"; then
+@@ -14379,10 +14379,10 @@ if test "$enable_shared" = "yes"; then
    case "${host}" in
      *-*-cygwin*)
        SHARED_LDFLAGS="-no-undefined"
@@ -63,10 +63,10 @@ index a65b0a2f95b..f412c1a6c96 100755
        ;;
    esac
 diff --git a/opcodes/configure.ac b/opcodes/configure.ac
-index cae2a67ff10..5cb194779e9 100644
+index 4d918e3ef9b..9692e69693e 100644
 --- a/opcodes/configure.ac
 +++ b/opcodes/configure.ac
-@@ -196,10 +196,10 @@ if test "$enable_shared" = "yes"; then
+@@ -195,10 +195,10 @@ if test "$enable_shared" = "yes"; then
    case "${host}" in
      *-*-cygwin*)
        SHARED_LDFLAGS="-no-undefined"
@@ -80,5 +80,5 @@ index cae2a67ff10..5cb194779e9 100644
        ;;
    esac
 -- 
-2.42.0
+2.44.2
 


^ permalink raw reply related	[flat|nested] 39+ messages in thread

* [gentoo-commits] proj/toolchain/binutils-patches:master commit in: 9999/
@ 2024-06-29 16:32 Andreas K. Hüttel
  0 siblings, 0 replies; 39+ messages in thread
From: Andreas K. Hüttel @ 2024-06-29 16:32 UTC (permalink / raw
  To: gentoo-commits

commit:     ef75bb26c983c91db82996224bf38e0feefd94c3
Author:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
AuthorDate: Sat Jun 29 16:31:33 2024 +0000
Commit:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
CommitDate: Sat Jun 29 16:31:33 2024 +0000
URL:        https://gitweb.gentoo.org/proj/toolchain/binutils-patches.git/commit/?id=ef75bb26

Not needed anymore

Signed-off-by: Andreas K. Hüttel <dilfridge <AT> gentoo.org>

 ...ss-hash-style-sysv-to-ld-in-the-testsuite.patch | 61 ----------------------
 1 file changed, 61 deletions(-)

diff --git a/9999/0004-Gentoo-Pass-hash-style-sysv-to-ld-in-the-testsuite.patch b/9999/0004-Gentoo-Pass-hash-style-sysv-to-ld-in-the-testsuite.patch
deleted file mode 100644
index 4cfd1da..0000000
--- a/9999/0004-Gentoo-Pass-hash-style-sysv-to-ld-in-the-testsuite.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From b706ce22cbea4edb8ba06ef1b64f6b20f3502d0c Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
-Date: Tue, 20 Jul 2021 21:15:24 +0200
-Subject: [PATCH 4/7] Gentoo: Pass --hash-style=sysv to ld in the testsuite
-
----
- binutils/testsuite/lib/binutils-common.exp |  2 +-
- ld/testsuite/lib/ld-lib.exp                | 16 ++++++++++++++--
- 2 files changed, 15 insertions(+), 3 deletions(-)
-
-diff --git a/binutils/testsuite/lib/binutils-common.exp b/binutils/testsuite/lib/binutils-common.exp
-index f0136577b6c..afb6f7cc9c3 100644
---- a/binutils/testsuite/lib/binutils-common.exp
-+++ b/binutils/testsuite/lib/binutils-common.exp
-@@ -1394,7 +1394,7 @@ proc run_dump_test { name {extra_options {}} } {
- 
- 	    # Add -L$srcdir/$subdir so that the linker command can use
- 	    # linker scripts in the source directory.
--	    set cmd "$LD $ld_extra_opt $LDFLAGS -L$srcdir/$subdir \
-+	    set cmd "$LD --hash-style=sysv $ld_extra_opt $LDFLAGS -L$srcdir/$subdir \
- 		   $opts(ld) -o $objfile $objfiles $opts(ld_after_inputfiles)"
- 
- 	    # If needed then check for, or add a -Map option.
-diff --git a/ld/testsuite/lib/ld-lib.exp b/ld/testsuite/lib/ld-lib.exp
-index e6e643ca3ca..b1164e9a96f 100644
---- a/ld/testsuite/lib/ld-lib.exp
-+++ b/ld/testsuite/lib/ld-lib.exp
-@@ -171,7 +171,7 @@ proc default_ld_relocate { ld target objects } {
-     global HOSTING_EMU
- 
-     remote_file host delete $target
--    return [run_host_cmd_yesno "$ld" "$HOSTING_EMU -o $target -r $objects"]
-+    return [run_host_cmd_yesno "$ld" "$HOSTING_EMU --hash-style=sysv -o $target -r $objects"]
- }
- 
- # Check to see if ld is being invoked with a non-endian output format
-@@ -202,8 +202,20 @@ proc default_ld_link { ld target objects } {
- 	set flags [big_or_little_endian]
-     }
- 
-+    # Hilariously, this procedure is called sometimes with $CC and sometimes
-+    # with $ld as parameter. If we want to change the default behaviour, we
-+    # need to take the different option formats into account.
-+    # We check the $ld parameter for
-+    # - ld-new         -> we're working with the new linker
-+    # - otherwise      -> we're likely working with the system compiler
-+    if {[regexp {ld-new$} $ld]} {
-+      set gentoosysv "--hash-style=sysv"
-+    } else {
-+      set gentoosysv "-Wl,--hash-style=sysv"
-+    }
-+
-     remote_file host delete $target
--    set exec_output [run_host_cmd "$ld" "$flags -o $target $objects"]
-+    set exec_output [run_host_cmd "$ld" "$gentoosysv $flags -o $target $objects"]
-     set exec_output [prune_warnings $exec_output]
- 
-     # We don't care if we get a warning about a non-existent start
--- 
-2.44.2
-


^ permalink raw reply related	[flat|nested] 39+ messages in thread

* [gentoo-commits] proj/toolchain/binutils-patches:master commit in: 9999/
@ 2024-06-29 16:32 Andreas K. Hüttel
  0 siblings, 0 replies; 39+ messages in thread
From: Andreas K. Hüttel @ 2024-06-29 16:32 UTC (permalink / raw
  To: gentoo-commits

commit:     1c1fe5a0f79546d17321568bcb07825552c53979
Author:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
AuthorDate: Sat Jun 29 16:31:59 2024 +0000
Commit:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
CommitDate: Sat Jun 29 16:31:59 2024 +0000
URL:        https://gitweb.gentoo.org/proj/toolchain/binutils-patches.git/commit/?id=1c1fe5a0

Let's try without poison

Signed-off-by: Andreas K. Hüttel <dilfridge <AT> gentoo.org>

 ...-ld-add-support-for-poisoned-system-direc.patch | 338 ---------------------
 1 file changed, 338 deletions(-)

diff --git a/9999/0001-Gentoo-gold-ld-add-support-for-poisoned-system-direc.patch b/9999/0001-Gentoo-gold-ld-add-support-for-poisoned-system-direc.patch
deleted file mode 100644
index f11678e..0000000
--- a/9999/0001-Gentoo-gold-ld-add-support-for-poisoned-system-direc.patch
+++ /dev/null
@@ -1,338 +0,0 @@
-From 68b26b5bf2047d71fac89ee321c0f9231c85903e Mon Sep 17 00:00:00 2001
-From: Mike Frysinger <vapier@gentoo.org>
-Date: Tue, 20 Jul 2021 21:08:31 +0200
-Subject: [PATCH 1/7] Gentoo: gold/ld: add support for poisoned system
- directories
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-This is based on the old CodeSourcery patch written by Joseph Myers to add
-support to the link for detecting & rejecting bad -L paths when using a
-cross-compiler.  The differences here:
-* The command line flags are always available.
-* We can turn on & off the warning via the command line.
-* The configure option controls the default warning behavior.
-* Add support for gold.
-
-It is not currently upstream, nor has it been submitted at all.  There are
-no plans to do so currently either.
-
-BUG=chromium:488360
-TEST=`cbuildbot chromiumos-sdk` passes  # tests arm/amd64/mipsel/x86
-TEST=`cbuildbot panther_moblab-full whirlwind-release` pass
-TEST=`cbuildbot {x32,arm64}-generic-full` has no new failures
-TEST=x86_64-cros-linux-gnu-ld throws warnings when using -L/lib (gold & bfd)
-
-Reviewed-on: https://chromium-review.googlesource.com/272083
-(cherry picked from commit f92dbf35c00ab13cee36f6be8ae5ca46454d9000)
-
-Ported to binutils 2.37 by Andreas K. Hüttel <dilfridge@gentoo.org>
-Ported to binutils 2.39 by WANG Xuerui <xen0n@gentoo.org>
----
- gold/options.cc | 33 +++++++++++++++++++++++++++++++++
- gold/options.h  |  7 +++++++
- ld/config.in    |  3 +++
- ld/configure    | 16 ++++++++++++++++
- ld/configure.ac | 10 ++++++++++
- ld/ld.h         |  7 +++++++
- ld/ld.texi      | 18 ++++++++++++++++++
- ld/ldfile.c     | 20 ++++++++++++++++++++
- ld/ldlex.h      |  3 +++
- ld/ldmain.c     |  7 +++++++
- ld/lexsup.c     | 24 ++++++++++++++++++++++++
- 11 files changed, 148 insertions(+)
-
-diff --git a/gold/options.cc b/gold/options.cc
-index 46f067fa72f..a07ba1c82ed 100644
---- a/gold/options.cc
-+++ b/gold/options.cc
-@@ -1355,6 +1355,39 @@ General_options::finalize()
-   // in the path, as appropriate.
-   this->add_sysroot();
- 
-+  // Now check if library_path is poisoned.
-+  if (this->warn_poison_system_directories())
-+    {
-+      std::vector<std::string> bad_paths;
-+
-+      bad_paths.push_back("/lib");
-+      // TODO: This check is disabled for now due to a bunch of packages that
-+      // use libtool and relink with -L/usr/lib paths (albeit after the right
-+      // sysroot path).  Once those are fixed we can enable.
-+      // We also need to adjust it so it only rejects one or two levels deep.
-+      // Gcc's internal paths also live below /usr/lib.
-+      // http://crbug.com/488360
-+      // bad_paths.push_back("/usr/lib");
-+      bad_paths.push_back("/usr/local/lib");
-+      bad_paths.push_back("/usr/X11R6/lib");
-+
-+      for (std::vector<std::string>::const_iterator b = bad_paths.begin();
-+	   b != bad_paths.end();
-+	   ++b)
-+	for (Dir_list::iterator p = this->library_path_.value.begin();
-+	     p != this->library_path_.value.end();
-+	     ++p)
-+	  if (!p->name().compare(0, b->size(), *b))
-+	    {
-+	      if (this->error_poison_system_directories())
-+		gold_fatal(_("library search path \"%s\" is unsafe for "
-+			     "cross-compilation"), p->name().c_str());
-+	      else
-+		gold_warning(_("library search path \"%s\" is unsafe for "
-+			       "cross-compilation"), p->name().c_str());
-+	    }
-+    }
-+
-   // Now that we've normalized the options, check for contradictory ones.
-   if (this->shared() && this->is_static())
-     gold_fatal(_("-shared and -static are incompatible"));
-diff --git a/gold/options.h b/gold/options.h
-index 446e8d42614..464863b45fa 100644
---- a/gold/options.h
-+++ b/gold/options.h
-@@ -1402,6 +1402,13 @@ class General_options
-   DEFINE_bool(warn_multiple_gp, options::TWO_DASHES, '\0', false,
- 	      N_("Ignored"), NULL);
- 
-+  DEFINE_bool(warn_poison_system_directories, options::TWO_DASHES, '\0', false,
-+	      N_("Warn for -L options using system directories"),
-+	      N_("Do not warn for -L options using system directories"));
-+  DEFINE_bool(error_poison_system_directories, options::TWO_DASHES, '\0', false,
-+	      N_("Give an error for -L options using system directories"),
-+	      NULL);
-+
-   DEFINE_bool(warn_search_mismatch, options::TWO_DASHES, '\0', true,
- 	      N_("Warn when skipping an incompatible library"),
- 	      N_("Don't warn when skipping an incompatible library"));
-diff --git a/ld/config.in b/ld/config.in
-index f7c9da3d02a..e4fdbf6db5b 100644
---- a/ld/config.in
-+++ b/ld/config.in
-@@ -74,6 +74,9 @@
-    language is requested. */
- #undef ENABLE_NLS
- 
-+/* Define to warn for use of native system library directories */
-+#undef ENABLE_POISON_SYSTEM_DIRECTORIES
-+
- /* Additional extension a shared object might have. */
- #undef EXTRA_SHLIB_EXTENSION
- 
-diff --git a/ld/configure b/ld/configure
-index 4e8de840418..f6d3069133e 100755
---- a/ld/configure
-+++ b/ld/configure
-@@ -844,6 +844,7 @@ with_lib_path
- enable_targets
- enable_64_bit_bfd
- with_sysroot
-+enable_poison_system_directories
- enable_gold
- enable_got
- enable_compressed_debug_sections
-@@ -1535,6 +1536,8 @@ Optional Features:
-   --enable-checking       enable run-time checks
-   --enable-targets        alternative target configurations
-   --enable-64-bit-bfd     64-bit support (on hosts with narrower word sizes)
-+  --enable-poison-system-directories
-+                          warn for use of native system library directories
-   --enable-gold[=ARG]     build gold [ARG={default,yes,no}]
-   --enable-got=<type>     GOT handling scheme (target, single, negative,
-                           multigot)
-@@ -15566,6 +15569,19 @@ fi
- 
- 
- 
-+# Check whether --enable-poison-system-directories was given.
-+if test "${enable_poison_system_directories+set}" = set; then :
-+  enableval=$enable_poison_system_directories;
-+else
-+  enable_poison_system_directories=no
-+fi
-+
-+if test "x${enable_poison_system_directories}" = "xyes"; then
-+
-+$as_echo "#define ENABLE_POISON_SYSTEM_DIRECTORIES 1" >>confdefs.h
-+
-+fi
-+
- # Check whether --enable-gold was given.
- if test "${enable_gold+set}" = set; then :
-   enableval=$enable_gold; case "${enableval}" in
-diff --git a/ld/configure.ac b/ld/configure.ac
-index bdf51a062fa..3d370ff92ce 100644
---- a/ld/configure.ac
-+++ b/ld/configure.ac
-@@ -102,6 +102,16 @@ AC_SUBST(use_sysroot)
- AC_SUBST(TARGET_SYSTEM_ROOT)
- AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)
- 
-+AC_ARG_ENABLE([poison-system-directories],
-+         AS_HELP_STRING([--enable-poison-system-directories],
-+                [warn for use of native system library directories]),,
-+         [enable_poison_system_directories=no])
-+if test "x${enable_poison_system_directories}" = "xyes"; then
-+  AC_DEFINE([ENABLE_POISON_SYSTEM_DIRECTORIES],
-+       [1],
-+       [Define to warn for use of native system library directories])
-+fi
-+
- dnl Use --enable-gold to decide if this linker should be the default.
- dnl "install_as_default" is set to false if gold is the default linker.
- dnl "installed_linker" is the installed BFD linker name.
-diff --git a/ld/ld.h b/ld/ld.h
-index 0dee944cf2a..a2bb9a10993 100644
---- a/ld/ld.h
-+++ b/ld/ld.h
-@@ -166,6 +166,13 @@ typedef struct
-      in the linker script.  */
-   bool force_group_allocation;
- 
-+  /* If true warn for uses of system directories when cross linking.  */
-+  bool warn_poison_system_directories;
-+
-+  /* If true (default false) give an error for uses of system
-+     directories when cross linking instead of a warning.  */
-+  bool error_poison_system_directories;
-+
-   /* Big or little endian as set on command line.  */
-   enum endian_enum endian;
- 
-diff --git a/ld/ld.texi b/ld/ld.texi
-index 89e3913317a..cd16eb9685e 100644
---- a/ld/ld.texi
-+++ b/ld/ld.texi
-@@ -3245,6 +3245,24 @@ creation of the metadata note, if one had been enabled by an earlier
- occurrence of the --package-metadata option.
- If the linker has been built with libjansson, then the JSON string
- will be validated.
-+
-+@kindex --warn-poison-system-directories
-+@item --warn-poison-system-directories
-+Warn for @option{-L} options using system directories such as
-+@file{/usr/lib} when cross linking.  This option is intended for use
-+in environments that want to detect and reject incorrect link settings.
-+
-+@kindex --no-warn-poison-system-directories
-+@item --no-warn-poison-system-directories
-+Do not warn for @option{-L} options using system directories such as
-+@file{/usr/lib} when cross linking.  This option is intended for use
-+in chroot environments when such directories contain the correct
-+libraries for the target system rather than the host.
-+
-+@kindex --error-poison-system-directories
-+@item --error-poison-system-directories
-+Give an error instead of a warning for @option{-L} options using
-+system directories when cross linking.
- @end table
- 
- @c man end
-diff --git a/ld/ldfile.c b/ld/ldfile.c
-index 87be885d31a..469ab52f985 100644
---- a/ld/ldfile.c
-+++ b/ld/ldfile.c
-@@ -344,6 +344,26 @@ ldfile_add_library_path (const char *name, enum search_dir_source source)
-       search_tail_ptr = &new_dirs->next;
-     }
- 
-+ if (command_line.warn_poison_system_directories
-+      && (!strncmp (name, "/lib", 4)
-+      /* TODO: This check is disabled for now due to a bunch of packages that
-+       * use libtool and relink with -L/usr/lib paths (albeit after the right
-+       * sysroot path).  Once those are fixed we can enable.
-+       * We also need to adjust it so it only rejects one or two levels deep.
-+       * Gcc's internal paths also live below /usr/lib.
-+       * http://crbug.com/488360  */
-+       /* || !strncmp (name, "/usr/lib", 8) */
-+          || !strncmp (name, "/usr/local/lib", 14)
-+          || !strncmp (name, "/usr/X11R6/lib", 14)))
-+    {
-+      if (command_line.error_poison_system_directories)
-+        einfo (_("%X%P: error: library search path \"%s\" is unsafe for "
-+                 "cross-compilation\n"), name);
-+      else
-+        einfo (_("%P: warning: library search path \"%s\" is unsafe for "
-+                 "cross-compilation\n"), name);
-+    }
-+
-   return new_dirs;
- }
- 
-diff --git a/ld/ldlex.h b/ld/ldlex.h
-index defe3fcbbb9..ab94487edc6 100644
---- a/ld/ldlex.h
-+++ b/ld/ldlex.h
-@@ -153,6 +153,9 @@ enum option_values
-   OPTION_PRINT_OUTPUT_FORMAT,
-   OPTION_PRINT_SYSROOT,
-   OPTION_IGNORE_UNRESOLVED_SYMBOL,
-+  OPTION_WARN_POISON_SYSTEM_DIRECTORIES,
-+  OPTION_NO_WARN_POISON_SYSTEM_DIRECTORIES,
-+  OPTION_ERROR_POISON_SYSTEM_DIRECTORIES,
-   OPTION_PUSH_STATE,
-   OPTION_POP_STATE,
-   OPTION_DISABLE_MULTIPLE_DEFS_ABS,
-diff --git a/ld/ldmain.c b/ld/ldmain.c
-index 037099b9d37..552a191a857 100644
---- a/ld/ldmain.c
-+++ b/ld/ldmain.c
-@@ -347,6 +347,13 @@ main (int argc, char **argv)
-   command_line.warn_mismatch = true;
-   command_line.warn_search_mismatch = true;
-   command_line.check_section_addresses = -1;
-+  command_line.warn_poison_system_directories =
-+#ifdef ENABLE_POISON_SYSTEM_DIRECTORIES
-+    true;
-+#else
-+    false;
-+#endif
-+  command_line.error_poison_system_directories = false;
- 
-   /* We initialize DEMANGLING based on the environment variable
-      COLLECT_NO_DEMANGLE.  The gcc collect2 program will demangle the
-diff --git a/ld/lexsup.c b/ld/lexsup.c
-index 4aa0124ce2f..e8e28ac7ea4 100644
---- a/ld/lexsup.c
-+++ b/ld/lexsup.c
-@@ -613,6 +613,18 @@ static const struct ld_option ld_options[] =
-     OPTION_IGNORE_UNRESOLVED_SYMBOL},
-     '\0', N_("SYMBOL"),
-     N_("Unresolved SYMBOL will not cause an error or warning"), TWO_DASHES },
-+  { {"warn-poison-system-directories", no_argument, NULL,
-+     OPTION_WARN_POISON_SYSTEM_DIRECTORIES},
-+    '\0', NULL, N_("Warn for -L options using system directories"),
-+    TWO_DASHES },
-+  { {"no-warn-poison-system-directories", no_argument, NULL,
-+     OPTION_NO_WARN_POISON_SYSTEM_DIRECTORIES},
-+    '\0', NULL, N_("Do not warn for -L options using system directories"),
-+    TWO_DASHES },
-+  { {"error-poison-system-directories", no_argument, NULL,
-+     OPTION_ERROR_POISON_SYSTEM_DIRECTORIES},
-+    '\0', NULL, N_("Give an error for -L options using system directories"),
-+    TWO_DASHES },
-   { {"push-state", no_argument, NULL, OPTION_PUSH_STATE},
-     '\0', NULL, N_("Push state of flags governing input file handling"),
-     TWO_DASHES },
-@@ -1785,6 +1797,18 @@ parse_args (unsigned argc, char **argv)
- 	  }
- 	  break;
- 
-+   case OPTION_WARN_POISON_SYSTEM_DIRECTORIES:
-+     command_line.warn_poison_system_directories = true;
-+     break;
-+
-+   case OPTION_NO_WARN_POISON_SYSTEM_DIRECTORIES:
-+     command_line.warn_poison_system_directories = false;
-+     break;
-+
-+   case OPTION_ERROR_POISON_SYSTEM_DIRECTORIES:
-+     command_line.error_poison_system_directories = true;
-+     break;
-+
- 	case OPTION_PUSH_STATE:
- 	  input_flags.pushed = xmemdup (&input_flags,
- 					sizeof (input_flags),
--- 
-2.44.2
-


^ permalink raw reply related	[flat|nested] 39+ messages in thread

* [gentoo-commits] proj/toolchain/binutils-patches:master commit in: 9999/
@ 2024-06-29 17:05 Andreas K. Hüttel
  0 siblings, 0 replies; 39+ messages in thread
From: Andreas K. Hüttel @ 2024-06-29 17:05 UTC (permalink / raw
  To: gentoo-commits

commit:     1fec9188faca01b3a679ec42cf74c638d4b34ebd
Author:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
AuthorDate: Sat Jun 29 17:05:16 2024 +0000
Commit:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
CommitDate: Sat Jun 29 17:05:16 2024 +0000
URL:        https://gitweb.gentoo.org/proj/toolchain/binutils-patches.git/commit/?id=1fec9188

Renumber patches

Signed-off-by: Andreas K. Hüttel <dilfridge <AT> gentoo.org>

 ...tch => 0001-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch} | 0
 ...ion.patch => 0002-Gentoo-add-with-extra-soversion-suffix-option.patch} | 0
 ...ch => 0003-Gentoo-Give-also-libctf-optionally-a-gentoo-specific.patch} | 0
 ...d.gold-tests.patch => 0004-Gentoo-XFAIL-15-broken-ld.gold-tests.patch} | 0
 ...ch => 0005-Apply-a-similar-libiberty-fix-as-in-7d53105d-for-lib.patch} | 0
 5 files changed, 0 insertions(+), 0 deletions(-)

diff --git a/9999/0002-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch b/9999/0001-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch
similarity index 100%
rename from 9999/0002-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch
rename to 9999/0001-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch

diff --git a/9999/0003-Gentoo-add-with-extra-soversion-suffix-option.patch b/9999/0002-Gentoo-add-with-extra-soversion-suffix-option.patch
similarity index 100%
rename from 9999/0003-Gentoo-add-with-extra-soversion-suffix-option.patch
rename to 9999/0002-Gentoo-add-with-extra-soversion-suffix-option.patch

diff --git a/9999/0005-Gentoo-Give-also-libctf-optionally-a-gentoo-specific.patch b/9999/0003-Gentoo-Give-also-libctf-optionally-a-gentoo-specific.patch
similarity index 100%
rename from 9999/0005-Gentoo-Give-also-libctf-optionally-a-gentoo-specific.patch
rename to 9999/0003-Gentoo-Give-also-libctf-optionally-a-gentoo-specific.patch

diff --git a/9999/0006-Gentoo-XFAIL-15-broken-ld.gold-tests.patch b/9999/0004-Gentoo-XFAIL-15-broken-ld.gold-tests.patch
similarity index 100%
rename from 9999/0006-Gentoo-XFAIL-15-broken-ld.gold-tests.patch
rename to 9999/0004-Gentoo-XFAIL-15-broken-ld.gold-tests.patch

diff --git a/9999/0007-Apply-a-similar-libiberty-fix-as-in-7d53105d-for-lib.patch b/9999/0005-Apply-a-similar-libiberty-fix-as-in-7d53105d-for-lib.patch
similarity index 100%
rename from 9999/0007-Apply-a-similar-libiberty-fix-as-in-7d53105d-for-lib.patch
rename to 9999/0005-Apply-a-similar-libiberty-fix-as-in-7d53105d-for-lib.patch


^ permalink raw reply	[flat|nested] 39+ messages in thread

* [gentoo-commits] proj/toolchain/binutils-patches:master commit in: 9999/
@ 2024-08-03 22:43 Andreas K. Hüttel
  0 siblings, 0 replies; 39+ messages in thread
From: Andreas K. Hüttel @ 2024-08-03 22:43 UTC (permalink / raw
  To: gentoo-commits

commit:     ec95ccad4a4802e2b375af024d901863444b8ecc
Author:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
AuthorDate: Sat Aug  3 22:43:00 2024 +0000
Commit:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
CommitDate: Sat Aug  3 22:43:00 2024 +0000
URL:        https://gitweb.gentoo.org/proj/toolchain/binutils-patches.git/commit/?id=ec95ccad

Trivial rebase

Signed-off-by: Andreas K. Hüttel <dilfridge <AT> gentoo.org>

 9999/0001-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch | 4 ++--
 9999/0002-Gentoo-add-with-extra-soversion-suffix-option.patch       | 6 +++---
 .../0003-Gentoo-Give-also-libctf-optionally-a-gentoo-specific.patch | 4 ++--
 9999/0004-Gentoo-XFAIL-15-broken-ld.gold-tests.patch                | 4 ++--
 .../0005-Apply-a-similar-libiberty-fix-as-in-7d53105d-for-lib.patch | 6 +++---
 5 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/9999/0001-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch b/9999/0001-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch
index a36bb51..34afb9b 100644
--- a/9999/0001-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch
+++ b/9999/0001-Gentoo-libiberty-install-PIC-version-of-libiberty.a.patch
@@ -1,7 +1,7 @@
-From 1594a93229b13d3c34c679e5991e64663cace1b9 Mon Sep 17 00:00:00 2001
+From a40f75efe4a34fbb447a026a52202b415013a984 Mon Sep 17 00:00:00 2001
 From: Mike Frysinger <vapier@gentoo.org>
 Date: Fri, 7 Jan 2005 00:15:53 -0500
-Subject: [PATCH 2/7] Gentoo: libiberty: install PIC version of libiberty.a
+Subject: [PATCH 1/5] Gentoo: libiberty: install PIC version of libiberty.a
 
 This will install a PIC version of libiberty.a by overwriting the non-PIC
 version of libiberty.a while compiling.  We do this because there is no

diff --git a/9999/0002-Gentoo-add-with-extra-soversion-suffix-option.patch b/9999/0002-Gentoo-add-with-extra-soversion-suffix-option.patch
index 3694049..e7e4ae8 100644
--- a/9999/0002-Gentoo-add-with-extra-soversion-suffix-option.patch
+++ b/9999/0002-Gentoo-add-with-extra-soversion-suffix-option.patch
@@ -1,7 +1,7 @@
-From 6d6cbf2ede96fd65bd7a9382c3364aaa9d0ac3bb Mon Sep 17 00:00:00 2001
+From 87a5dd82a8e08967694943e866aa9b26c4fc6a63 Mon Sep 17 00:00:00 2001
 From: Sergei Trofimovich <slyfox@gentoo.org>
 Date: Tue, 20 Jul 2021 21:12:38 +0200
-Subject: [PATCH 3/7] Gentoo: add --with-extra-soversion-suffix= option
+Subject: [PATCH 2/5] Gentoo: add --with-extra-soversion-suffix= option
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
@@ -79,7 +79,7 @@ index b3d97d478ea..38209d1b234 100644
  	    -e "s,@bfd_version_string@,$$bfd_version_string," \
  	    -e "s,@bfd_version_package@,$$bfd_version_package," \
 diff --git a/bfd/configure b/bfd/configure
-index 6458974951e..b43789851cd 100755
+index 83cb19c7015..a60c76319b9 100755
 --- a/bfd/configure
 +++ b/bfd/configure
 @@ -701,6 +701,7 @@ WARN_CFLAGS

diff --git a/9999/0003-Gentoo-Give-also-libctf-optionally-a-gentoo-specific.patch b/9999/0003-Gentoo-Give-also-libctf-optionally-a-gentoo-specific.patch
index 6964aab..70c605a 100644
--- a/9999/0003-Gentoo-Give-also-libctf-optionally-a-gentoo-specific.patch
+++ b/9999/0003-Gentoo-Give-also-libctf-optionally-a-gentoo-specific.patch
@@ -1,7 +1,7 @@
-From a8cf14f5ea0a210928250fd1c47b4e45c39974c5 Mon Sep 17 00:00:00 2001
+From 225a5f5b9f40c1f335146ec882bd5517e4573f62 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
 Date: Sat, 24 Jul 2021 15:20:16 +0200
-Subject: [PATCH 5/7] Gentoo: Give also libctf optionally a gentoo-specific
+Subject: [PATCH 3/5] Gentoo: Give also libctf optionally a gentoo-specific
  soversion
 
 ---

diff --git a/9999/0004-Gentoo-XFAIL-15-broken-ld.gold-tests.patch b/9999/0004-Gentoo-XFAIL-15-broken-ld.gold-tests.patch
index fe6da95..943d079 100644
--- a/9999/0004-Gentoo-XFAIL-15-broken-ld.gold-tests.patch
+++ b/9999/0004-Gentoo-XFAIL-15-broken-ld.gold-tests.patch
@@ -1,7 +1,7 @@
-From d826b80fe902aefd77465be3650ab2d62af5e099 Mon Sep 17 00:00:00 2001
+From 942b4489226184460d46eb9e7450eb63a1885621 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
 Date: Sat, 31 Jul 2021 01:18:18 +0200
-Subject: [PATCH 6/7] Gentoo: XFAIL 15 broken ld.gold tests
+Subject: [PATCH 4/5] Gentoo: XFAIL 15 broken ld.gold tests
 
 It seems like either the tests or ld.gold in general cannot handle
 compilers built with --enable-default-pie. No fix yet, so let's ignore

diff --git a/9999/0005-Apply-a-similar-libiberty-fix-as-in-7d53105d-for-lib.patch b/9999/0005-Apply-a-similar-libiberty-fix-as-in-7d53105d-for-lib.patch
index 6eebb98..54c7ba8 100644
--- a/9999/0005-Apply-a-similar-libiberty-fix-as-in-7d53105d-for-lib.patch
+++ b/9999/0005-Apply-a-similar-libiberty-fix-as-in-7d53105d-for-lib.patch
@@ -1,7 +1,7 @@
-From bbaa9fafb08385e5ad836bc30a2db3af47d1cc5a Mon Sep 17 00:00:00 2001
+From 24694fe84ea1ac172f709bd1b079ebb996e4feb9 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
 Date: Wed, 22 Feb 2023 20:05:35 +0100
-Subject: [PATCH 7/7] Apply a similar libiberty fix as in 7d53105d for
+Subject: [PATCH 5/5] Apply a similar libiberty fix as in 7d53105d for
  libopcodes and libgprofng
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
@@ -46,7 +46,7 @@ index cef4b275305..295fd3ee2df 100644
  	$(GPROFNG_LIBADD) \
  	-lpthread -ldl
 diff --git a/opcodes/configure b/opcodes/configure
-index 050fd5ff0ff..4b68211dea6 100755
+index 0075b6dc0ef..76fca3e9246 100755
 --- a/opcodes/configure
 +++ b/opcodes/configure
 @@ -14379,10 +14379,10 @@ if test "$enable_shared" = "yes"; then


^ permalink raw reply related	[flat|nested] 39+ messages in thread

* [gentoo-commits] proj/toolchain/binutils-patches:master commit in: 9999/
@ 2024-12-21  0:09 Sam James
  0 siblings, 0 replies; 39+ messages in thread
From: Sam James @ 2024-12-21  0:09 UTC (permalink / raw
  To: gentoo-commits

commit:     8338985dde30f332b85aa008f1ff932941c2583e
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Sat Dec 21 00:09:16 2024 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sat Dec 21 00:09:16 2024 +0000
URL:        https://gitweb.gentoo.org/proj/toolchain/binutils-patches.git/commit/?id=8338985d

9999: Revert patch breaking kernel build

Revert "Fix the handling or arguments and macro pseudo-variables inside
nested assembler macros."

This reverts upstream commit 9f2e3c21f6506f081f1360f02b847606e0e00995.

Breaks kernel build on amd64 and some multimedia bits on arm*, revert
for now.

Bug: https://sourceware.org/PR32484
Bug: https://sourceware.org/PR32486
Bug: https://sourceware.org/PR32487
Signed-off-by: Sam James <sam <AT> gentoo.org>

 ...the-handling-or-arguments-and-macro-pseud.patch | 908 +++++++++++++++++++++
 1 file changed, 908 insertions(+)

diff --git a/9999/0006-Revert-Fix-the-handling-or-arguments-and-macro-pseud.patch b/9999/0006-Revert-Fix-the-handling-or-arguments-and-macro-pseud.patch
new file mode 100644
index 0000000..3eff67e
--- /dev/null
+++ b/9999/0006-Revert-Fix-the-handling-or-arguments-and-macro-pseud.patch
@@ -0,0 +1,908 @@
+From 35123215fe882c439955a644a715b23d31c4174d Mon Sep 17 00:00:00 2001
+Message-ID: <35123215fe882c439955a644a715b23d31c4174d.1734739720.git.sam@gentoo.org>
+From: Sam James <sam@gentoo.org>
+Date: Sat, 21 Dec 2024 00:07:29 +0000
+Subject: [PATCH] Revert "Fix the handling or arguments and macro
+ pseudo-variables inside nested assembler macros."
+
+This reverts commit 9f2e3c21f6506f081f1360f02b847606e0e00995.
+
+Breaks kernel build on amd64 and some multimedia bits on arm*, revert
+for now.
+
+Bug: https://sourceware.org/PR32484
+Bug: https://sourceware.org/PR32486
+Bug: https://sourceware.org/PR32487
+Signed-off-by: Sam James <sam@gentoo.org>
+---
+ gas/config/tc-iq2000.c              |   6 +-
+ gas/doc/as.texi                     |  60 +------
+ gas/input-scrub.c                   |   7 +-
+ gas/macro.c                         | 270 +++++-----------------------
+ gas/macro.h                         |  17 +-
+ gas/read.c                          |  15 +-
+ gas/testsuite/gas/macros/macros.exp |   1 -
+ gas/testsuite/gas/macros/nesting.d  |  28 ---
+ gas/testsuite/gas/macros/nesting.s  | 104 -----------
+ 9 files changed, 64 insertions(+), 444 deletions(-)
+ delete mode 100644 gas/testsuite/gas/macros/nesting.d
+ delete mode 100644 gas/testsuite/gas/macros/nesting.s
+
+diff --git a/gas/config/tc-iq2000.c b/gas/config/tc-iq2000.c
+index 1cbc578281f..2198ffda2b9 100644
+--- a/gas/config/tc-iq2000.c
++++ b/gas/config/tc-iq2000.c
+@@ -105,6 +105,8 @@ struct iq2000_hi_fixup
+ /* The list of unmatched HI relocs.  */
+ static struct iq2000_hi_fixup * iq2000_hi_fixup_list;
+ 
++/* Macro hash table, which we will add to.  */
++extern struct htab *macro_hash;
+ \f
+ const char md_shortopts[] = "";
+ const struct option md_longopts[] =
+@@ -277,7 +279,9 @@ iq2000_add_macro (const char *  name,
+ 	}
+     }
+ 
+-  (void) add_macro (macro, true);
++  str_hash_insert (macro_hash, macro->name, macro, 1);
++
++  macro_defined = 1;
+ }
+ 
+ static void
+diff --git a/gas/doc/as.texi b/gas/doc/as.texi
+index 1683594a0bb..6be54b57599 100644
+--- a/gas/doc/as.texi
++++ b/gas/doc/as.texi
+@@ -6215,12 +6215,7 @@ With that definition, @samp{SUM 0,5} is equivalent to this assembly input:
+ @item .macro @var{macname}
+ @itemx .macro @var{macname} @var{macargs} @dots{}
+ @cindex @code{macro} directive
+-Begin the definition of a macro called @var{macname}.  Macro names are case
+-insensitive.  Macro definitions can be nested, although their behaviour is
+-sometimes counter intuitive.  Nested macros only have scope within their
+-defining macro.
+-
+-If your macro
++Begin the definition of a macro called @var{macname}.  If your macro
+ definition requires arguments, specify their names after the macro name,
+ separated by commas or spaces.  You can qualify the macro argument to
+ indicate whether all invocations must specify a non-blank value (through
+@@ -6385,29 +6380,6 @@ adjacent string literals - even if separated only by a blank - will not be
+ concatenated when determining macro arguments, even if they're only separated
+ by white space.  This is unlike certain other pseudo ops, e.g. @code{.ascii}.
+ 
+-Nested macros can access the arguments of their parents.  But also if their
+-argument names clash with those of their parents, their versions are used.  So
+-for example:
+-
+-@smallexample
+-.macro OUTER arg1, arg2, arg3:vararg
+-     .macro INNER arg4 arg2
+-        .dc.a \arg2
+-	.dc.a \arg3
+-     .endm
+-     INNER \arg1 bert
+-	.dc.a \arg2
+-.endm
+-
+-OUTER fred, jim, harry\arg4
+-@end smallexample
+-
+-This will generate references to symbols called @samp{jim} - from the
+-definition of the OUTER macro, @samp{bert} - from the definition in INNER
+-where arg2 has been overridden and @samp{harryfred} - from the definition in
+-INNER where the value of arg3 from OUTER is used, but with the value of arg4
+-substituted into the symbol.
+-
+ @item .endm
+ @cindex @code{endm} directive
+ Mark the end of a macro definition.
+@@ -6423,33 +6395,6 @@ Exit early from the current macro definition.
+ executed in this pseudo-variable; you can copy that number to your
+ output with @samp{\@@}, but @emph{only within a macro definition}.
+ 
+-Note - the @samp{\@@} counter is incremented at the end of the expansion of a
+-macro, but before the contents of any nested macros are evaluated.  This can
+-lead to counter-intuitive behaviour when nested macros are used.  For example:
+-
+-@smallexample
+-  .macro o
+-    .macro i
+-    _i\@@_:
+-    .endm
+-    i
+-    _o\@@_:
+-  .endm
+-  o
+-@end smallexample
+-
+-Produces two symbols @samp{_o0_} and @samp{_i1_}.  This happens because the
+-@samp{o} macro executes entirely first, putting the definition and invocation
+-of the @samp{i} macro into the input buffer.  It also puts the definition of
+-the @samp{_o\@@_} symbol into the input buffer, evaluating the @samp{\@@}
+-counter in the process and so generating a symbol called @samp{_o0_}.
+-
+-That finishes the invocation of @samp{o} so the @samp{\@@} counter is
+-incremented.  Then the input buffer is re-evaluated and the definition and
+-invocation of macro @samp{i} is found.  This results in @samp{_i\@@_} being put
+-into the input buffer and this time @samp{\@@} evaluates to 1, so the symbol
+-created is @samp{_i1_}.
+-
+ @cindex number of times a macro has been executed
+ @cindex macro, execution count
+ @item \+
+@@ -6736,9 +6681,6 @@ those explicitly specified with @code{.eject}.
+ Undefine the macro @var{name}, so that later uses of the string will not be
+ expanded.  @xref{Macro}.
+ 
+-Note - nested macros are automatically purged at the end of the macro that
+-defines them.
+-
+ @ifset ELF
+ @node PushSection
+ @section @code{.pushsection @var{name} [, @var{subsection}] [, "@var{flags}"[, @@@var{type}[,@var{arguments}]]]}
+diff --git a/gas/input-scrub.c b/gas/input-scrub.c
+index 25fac879a56..878edc8fd36 100644
+--- a/gas/input-scrub.c
++++ b/gas/input-scrub.c
+@@ -23,7 +23,6 @@
+ #include "input-file.h"
+ #include "sb.h"
+ #include "listing.h"
+-#include "macro.h"
+ 
+ /*
+  * O/S independent module to supply buffers of sanitised source code
+@@ -291,13 +290,12 @@ input_scrub_include_sb (sb *from, char *position, enum expansion expansion)
+       ++macro_nest;
+     }
+ 
++#ifdef md_macro_start
+   if (expansion == expanding_macro)
+     {
+-#ifdef md_macro_start
+       md_macro_start ();
+-#endif
+-      increment_macro_nesting_depth ();
+     }
++#endif
+ 
+   next_saved_file = input_scrub_push (position);
+ 
+@@ -352,7 +350,6 @@ input_scrub_next_buffer (char **bufp)
+ 	         data.  */
+ 	      md_macro_end ();
+ #endif
+-	      decrement_macro_nesting_depth ();
+ 	    }
+ 	  if (from_sb_expansion != expanding_app)
+ 	    --macro_nest;
+diff --git a/gas/macro.c b/gas/macro.c
+index a0f2a5c764c..8b376f7f490 100644
+--- a/gas/macro.c
++++ b/gas/macro.c
+@@ -44,24 +44,11 @@
+ 
+ /* The macro hash table.  */
+ 
+-/* Macro nesting depth.  Similar to macro_nest defined in sb.c, but this
+-   counter is specific to macros, whereas macro_nest also counts repeated
+-   string blocks.  */
+-static unsigned int macro_nesting_depth;
++htab_t macro_hash;
+ 
+-/* Maximum nesting depth.  Ideally the same as the value of max_macro_nest
+-   as defined in as.c (ie 100).  But there is one test in the assembler
+-   testsuite (bfin/allinsn16.s) that nests macros to a depth of 8192.  So
+-   we have a ridiculously large number here.  */
+-#define MAX_MACRO_DEPTH 8193
++/* Whether any macros have been defined.  */
+ 
+-static htab_t macro_hash[MAX_MACRO_DEPTH];
+-
+-/* Whether any macros have been defined.
+-   FIXME:  This could be a counter that is incremented
+-   with .macro and decremented with .purgem.  */
+-
+-static bool macros_defined = false;
++int macro_defined;
+ 
+ /* Whether we should strip '@' characters.  */
+ 
+@@ -73,18 +60,6 @@ static unsigned int macro_number;
+ 
+ static void free_macro (macro_entry *);
+ 
+-bool
+-add_macro (macro_entry * macro, bool replace)
+-{
+-  if (str_hash_insert (macro_hash [macro_nesting_depth],
+-		       macro->name, macro, replace) == NULL)
+-    {
+-      macros_defined = true;
+-      return true;
+-    }
+-  return false;
+-}
+-
+ static void
+ macro_del_f (void *ent)
+ {
+@@ -97,23 +72,15 @@ macro_del_f (void *ent)
+ void
+ macro_init (void)
+ {
+-  int i;
+-
+-  for (i = 0; i < MAX_MACRO_DEPTH; i++)
+-    macro_hash[i] = htab_create_alloc (16, hash_string_tuple, eq_string_tuple,
+-				       macro_del_f, notes_calloc, NULL);
+-  macros_defined = false;
++  macro_hash = htab_create_alloc (16, hash_string_tuple, eq_string_tuple,
++				  macro_del_f, notes_calloc, NULL);
++  macro_defined = 0;
+ }
+ 
+ void
+ macro_end (void)
+ {
+-  int i;
+-
+-  for (i = MAX_MACRO_DEPTH; i--;)
+-    htab_delete (macro_hash[i]);
+-
+-  macros_defined = false;
++  htab_delete (macro_hash);
+ }
+ 
+ /* Read input lines till we get to a TO string.
+@@ -688,13 +655,6 @@ free_macro (macro_entry *macro)
+   free (macro);
+ }
+ 
+-static macro_entry * last_recorded_macro = NULL;
+-void
+-macro_record_invocation (macro_entry * macro)
+-{
+-  last_recorded_macro = macro;
+-}
+-
+ /* Define a new macro.  */
+ 
+ macro_entry *
+@@ -758,19 +718,15 @@ define_macro (sb *in, sb *label, size_t (*get_line) (sb *))
+   /* And stick it in the macro hash table.  */
+   for (idx = 0; idx < name.len; idx++)
+     name.ptr[idx] = TOLOWER (name.ptr[idx]);
+-
+-  if (macro_nesting_depth > 0)
+-    macro->parent = last_recorded_macro;
+-  else
+-    macro->parent = NULL;
+-
+   if (!error)
+     {
+-      if (! add_macro (macro, false))
++      if (str_hash_insert (macro_hash, macro->name, macro, 0) != NULL)
+ 	error = _("Macro `%s' was already defined");
+     }
+ 
+-  if (error != NULL)
++  if (!error)
++    macro_defined = 1;
++  else
+     {
+       as_bad_where (macro->file, macro->line, error, macro->name);
+       free_macro (macro);
+@@ -794,25 +750,11 @@ get_apost_token (size_t idx, sb *in, sb *name, int kind)
+   return idx;
+ }
+ 
+-static const char *
+-macro_expand_body (sb *, sb *, formal_entry *, struct htab *,
+-		   const macro_entry *, unsigned int);
+-
+-/* Find the actual value for a formal parameter starting at START inside IN.
+-    Appends the value of parameter onto OUT.
+-   The hash table of formal parameters is provided by FORMAL_HASH.
+-   The character that indicated the presense of a formal parameter is passed
+-    in KIND.
+-   If COPYIFNOTTHERE is true and the parameter is not found in the hash table
+-    then it is appended as plain text onto OUT.
+-   The macro containing the formal parameters is passed in MACRO.
+-    This can be empty.
+-   Returns the offset inside IN after advanceing past the parameter.
+-   Also stores the parameter's name into T.  */
++/* Substitute the actual value for a formal parameter.  */
+ 
+ static size_t
+ sub_actual (size_t start, sb *in, sb *t, struct htab *formal_hash,
+-	    int kind, sb *out, int copyifnotthere, const macro_entry * macro)
++	    int kind, sb *out, int copyifnotthere)
+ {
+   size_t src;
+   formal_entry *ptr;
+@@ -826,12 +768,16 @@ sub_actual (size_t start, sb *in, sb *t, struct htab *formal_hash,
+     ptr = NULL;
+   else
+     ptr = str_hash_find (formal_hash, sb_terminate (t));
+-  
+   if (ptr)
+     {
+-      sb * add = ptr->actual.len ? &ptr->actual : &ptr->def;
+-
+-      sb_add_sb (out, add);
++      if (ptr->actual.len)
++	{
++	  sb_add_sb (out, &ptr->actual);
++	}
++      else
++	{
++	  sb_add_sb (out, &ptr->def);
++	}
+     }
+   else if (kind == '&')
+     {
+@@ -845,55 +791,6 @@ sub_actual (size_t start, sb *in, sb *t, struct htab *formal_hash,
+     {
+       sb_add_sb (out, t);
+     }
+-  else if (!macro_strip_at
+-	   && macro_nesting_depth > 0
+-	   && macro != NULL
+-	   && macro->parent != NULL)
+-    {
+-      const macro_entry * orig_macro = macro;
+-      bool success = false;
+-
+-      /* We have failed to find T, but we are inside nested macros.  So check
+-	 the parent macros so see if they have a FORMAL that matches T.  */
+-      while (macro->parent != NULL)
+-	{
+-	  macro = macro->parent;
+-
+-	  ptr = str_hash_find (macro->formal_hash, t->ptr);
+-	  if (ptr == NULL)
+-	    continue;
+-
+-	  sb * add = ptr->actual.len ? &ptr->actual : &ptr->def;
+-
+-	  /* The parent's FORMALs might contain parameters that need further
+-	     substitution.  See gas/testsuite/gas/arm/macro-vld1.s for an
+-	     example of this.  */
+-	  if (strchr (add->ptr, '\\'))
+-	    {
+-	      sb newadd;
+-
+-	      sb_new (&newadd);
+-	      /* FIXME: Should we do something if the call to
+-		 macro_expand_body returns an error message ?  */
+-	      (void) macro_expand_body (add, &newadd, NULL, NULL,
+-					orig_macro, orig_macro->count);
+-	      sb_add_sb (out, &newadd);
+-	    }
+-	  else
+-	    {
+-	      sb_add_sb (out, add);
+-	    }
+-	  success = true;
+-	  break;
+-	}
+-      if (! success)
+-	{
+-	  /* We reached the outermost macro and failed to find T, so
+-	     just copy the entire parameter as is.  */
+-	  sb_add_char (out, '\\');
+-	  sb_add_sb (out, t);
+-	}
+-    }
+   else
+     {
+       sb_add_char (out, '\\');
+@@ -902,12 +799,7 @@ sub_actual (size_t start, sb *in, sb *t, struct htab *formal_hash,
+   return src;
+ }
+ 
+-/* Expands the body of a macro / block of text IN, copying it into OUT.
+-   Parameters for substitution are found in FORMALS and FORMAL_HASH or
+-   MACRO.
+-   The number of times that this macro / block of text have already been
+-   copied into the output is held in INSTANCE.
+-   Returns NULL upon success or an error message otherwise.  */
++/* Expand the body of a macro.  */
+ 
+ static const char *
+ macro_expand_body (sb *in, sb *out, formal_entry *formals,
+@@ -919,38 +811,18 @@ macro_expand_body (sb *in, sb *out, formal_entry *formals,
+   int inquote = 0, macro_line = 0;
+   formal_entry *loclist = NULL;
+   const char *err = NULL;
+-  int nesting = 0;
+ 
+-  if (formals == NULL && macro != NULL)
+-    formals = macro->formals;
+-
+-  if (formal_hash == NULL && macro != NULL)
+-    formal_hash = macro->formal_hash;
+-  
+   sb_new (&t);
+ 
+   while (src < in->len && !err)
+     {
+-      if (in->ptr[src] == '.')
+-	{
+-	  /* Check to see if we have encountered ".macro" or ".endm" */
+-	  if (in->len > src + 5
+-	      && strncmp (in->ptr + src, ".macro", 6) == 0)
+-	    ++ nesting;
+-
+-	  else if (in->len > src + 4
+-		   && strncmp (in->ptr + src, ".endm", 5) == 0)
+-	    -- nesting;
+-	}
+-
+       if (in->ptr[src] == '&')
+ 	{
+ 	  sb_reset (&t);
+ 	  if (flag_mri)
+ 	    {
+ 	      if (src + 1 < in->len && in->ptr[src + 1] == '&')
+-		src = sub_actual (src + 2, in, &t, formal_hash,
+-				  '\'', out, 1, macro);
++		src = sub_actual (src + 2, in, &t, formal_hash, '\'', out, 1);
+ 	      else
+ 		sb_add_char (out, in->ptr[src++]);
+ 	    }
+@@ -958,8 +830,7 @@ macro_expand_body (sb *in, sb *out, formal_entry *formals,
+ 	    {
+ 	      /* Permit macro parameter substitution delineated with
+ 		 an '&' prefix and optional '&' suffix.  */
+-	      src = sub_actual (src + 1, in, &t, formal_hash,
+-				'&', out, 0, macro);
++	      src = sub_actual (src + 1, in, &t, formal_hash, '&', out, 0);
+ 	    }
+ 	}
+       else if (in->ptr[src] == '\\')
+@@ -980,12 +851,7 @@ macro_expand_body (sb *in, sb *out, formal_entry *formals,
+ 	      else
+ 		as_bad_where (macro->file, macro->line + macro_line, _("missing `)'"));
+ 	    }
+-	  else if (src < in->len
+-		   && in->ptr[src] == '@'
+-		   /* PR 32391: Do not perform the substition inside nested
+-		      macros.  Instead wait until they are re-evaluated and
+-		      perform the substition then.  */
+-		   && ! nesting)
++	  else if (src < in->len && in->ptr[src] == '@')
+ 	    {
+ 	      /* Sub in the total macro invocation number.  */
+ 
+@@ -994,12 +860,7 @@ macro_expand_body (sb *in, sb *out, formal_entry *formals,
+ 	      sprintf (buffer, "%u", macro_number);
+ 	      sb_add_string (out, buffer);
+ 	    }
+-	  else if (src < in->len
+-		   && in->ptr[src] == '+'
+-		   /* PR 32391: Do not perform the substition inside nested
+-		      macros.  Instead wait until they are re-evaluated and
+-		      perform the substition then.  */
+-		   && ! nesting)
++	  else if (src < in->len && in->ptr[src] == '+')
+ 	    {
+ 	      /* Sub in the current macro invocation number.  */
+ 
+@@ -1043,18 +904,7 @@ macro_expand_body (sb *in, sb *out, formal_entry *formals,
+ 	  else
+ 	    {
+ 	      sb_reset (&t);
+-
+-	      if (nesting)
+-		{
+-		  src = get_apost_token (src, in, &t, '\'');
+-		  sb_add_char (out, '\\');
+-		  sb_add_sb (out, &t);
+-		}
+-	      else
+-		{
+-		  src = sub_actual (src, in, &t, formal_hash,
+-				    '\'', out, 0, macro);
+-		}
++	      src = sub_actual (src, in, &t, formal_hash, '\'', out, 0);
+ 	    }
+ 	}
+       else if ((flag_macro_alternate || flag_mri)
+@@ -1073,7 +923,7 @@ macro_expand_body (sb *in, sb *out, formal_entry *formals,
+ 	      sb_reset (&t);
+ 	      src = sub_actual (src, in, &t, formal_hash,
+ 				(macro_strip_at && inquote) ? '@' : '\'',
+-				out, 1, macro);
++				out, 1);
+ 	    }
+ 	  else
+ 	    {
+@@ -1185,7 +1035,6 @@ macro_expand_body (sb *in, sb *out, formal_entry *formals,
+ 
+   if (!err && (out->len == 0 || out->ptr[out->len - 1] != '\n'))
+     sb_add_char (out, '\n');
+-
+   return err;
+ }
+ 
+@@ -1370,7 +1219,8 @@ macro_expand (size_t idx, sb *in, macro_entry *m, sb *out)
+ 	    }
+ 	}
+ 
+-      err = macro_expand_body (&m->sub, out, NULL, NULL, m, m->count);
++      err = macro_expand_body (&m->sub, out, m->formals, m->formal_hash, m,
++			       m->count);
+     }
+ 
+   /* Discard any unnamed formal arguments.  */
+@@ -1403,9 +1253,9 @@ macro_expand (size_t idx, sb *in, macro_entry *m, sb *out)
+ }
+ 
+ /* Check for a macro.  If one is found, put the expansion into
+-   *EXPAND.  Return TRUE if a macro is found, FALSE otherwise.  */
++   *EXPAND.  Return 1 if a macro is found, 0 otherwise.  */
+ 
+-bool
++int
+ check_macro (const char *line, sb *expand,
+ 	     const char **error, macro_entry **info)
+ {
+@@ -1414,12 +1264,9 @@ check_macro (const char *line, sb *expand,
+   macro_entry *macro;
+   sb line_sb;
+ 
+-  if (! macros_defined)
+-    return false;
+-
+   if (! is_name_beginner (*line)
+       && (! flag_mri || *line != '.'))
+-    return false;
++    return 0;
+ 
+   s = line + 1;
+   while (is_part_of_name (*s))
+@@ -1431,17 +1278,11 @@ check_macro (const char *line, sb *expand,
+   for (cls = copy; *cls != '\0'; cls ++)
+     *cls = TOLOWER (*cls);
+ 
+-  int i;
+-  for (i = macro_nesting_depth; i >= 0; i--)
+-    {
+-      macro = str_hash_find (macro_hash[i], copy);
+-      if (macro != NULL)
+-	break;
+-    }
++  macro = str_hash_find (macro_hash, copy);
+   free (copy);
+ 
+   if (macro == NULL)
+-    return false;
++    return 0;
+ 
+   /* Wrap the line up in an sb.  */
+   sb_new (&line_sb);
+@@ -1457,7 +1298,7 @@ check_macro (const char *line, sb *expand,
+   if (info)
+     *info = macro;
+ 
+-  return true;
++  return 1;
+ }
+ 
+ /* Delete a macro.  */
+@@ -1475,20 +1316,11 @@ delete_macro (const char *name)
+     copy[i] = TOLOWER (name[i]);
+   copy[i] = '\0';
+ 
+-  int j;
+-  for (j = macro_nesting_depth; j >= 0; j--)
+-    {
+-      macro = str_hash_find (macro_hash [j], copy);
+-      if (macro != NULL)
+-	{
+-	  str_hash_delete (macro_hash[j], copy);
+-	  break;
+-	}
+-    }
+-
+-  if (macro == NULL)
++  macro = str_hash_find (macro_hash, copy);
++  if (macro != NULL)
++    str_hash_delete (macro_hash, copy);
++  else
+     as_warn (_("Attempt to purge non-existing macro `%s'"), copy);
+-
+   free (copy);
+ }
+ 
+@@ -1590,25 +1422,3 @@ expand_irp (int irpc, size_t idx, sb *in, sb *out, size_t (*get_line) (sb *))
+ 
+   return err;
+ }
+-
+-void
+-increment_macro_nesting_depth (void)
+-{
+- if (macro_nesting_depth >= (MAX_MACRO_DEPTH - 1))
+-    as_fatal (_("macros nested too deeply"));
+-  else
+-    ++macro_nesting_depth;
+-}
+-
+-void
+-decrement_macro_nesting_depth (void)
+-{
+-  if (macro_nesting_depth == 0)
+-    as_fatal (_("too much macro un-nesting"));
+-  else
+-    {
+-      /* FIXME: Potential memory leak here.  */
+-      htab_empty (macro_hash [macro_nesting_depth]);
+-      --macro_nesting_depth;
+-    }
+-}
+diff --git a/gas/macro.h b/gas/macro.h
+index 97f2a5a4066..e87f64e70ca 100644
+--- a/gas/macro.h
++++ b/gas/macro.h
+@@ -64,28 +64,31 @@ typedef struct macro_struct
+   int             formal_count;		/* Number of formal args.  */
+   formal_entry *  formals;		/* List of formal_structs.  */
+   htab_t          formal_hash;		/* Hash table of formals.  */
+-  struct macro_struct * parent;         /* Parent of nested macros.  */
+   const char *    name;			/* Macro name.  */
+   const char *    file;			/* File the macro was defined in.  */
+   unsigned int    line;			/* Line number of definition.  */
+   unsigned int    count;                /* Invocation count.  */
+ } macro_entry;
+ 
+-/* The macro/text block nesting level.  */
++/* Whether any macros have been defined.  */
++
++extern int macro_defined;
++
++/* The macro nesting level.  */
+ 
+ extern int macro_nest;
+ 
++/* The macro hash table.  */
++
++extern htab_t macro_hash;
++
+ extern int buffer_and_nest (const char *, const char *, sb *,
+ 			    size_t (*) (sb *));
+ extern void macro_init (void);
+ extern void macro_end (void);
+ extern macro_entry *define_macro (sb *, sb *, size_t (*) (sb *));
+-extern bool check_macro (const char *, sb *, const char **, macro_entry **);
++extern int check_macro (const char *, sb *, const char **, macro_entry **);
+ extern void delete_macro (const char *);
+ extern const char *expand_irp (int, size_t, sb *, sb *, size_t (*) (sb *));
+-extern void increment_macro_nesting_depth (void);
+-extern void decrement_macro_nesting_depth (void);
+-extern void macro_record_invocation (macro_entry *);
+-extern bool add_macro (macro_entry *, bool);
+ 
+ #endif
+diff --git a/gas/read.c b/gas/read.c
+index e5185f4ba26..589c7b080c2 100644
+--- a/gas/read.c
++++ b/gas/read.c
+@@ -655,8 +655,7 @@ poend (void)
+     }
+ 
+ /* Helper function of read_a_source_file, which tries to expand a macro.  */
+-
+-static bool
++static int
+ try_macro (char term, const char *line)
+ {
+   sb out;
+@@ -673,14 +672,12 @@ try_macro (char term, const char *line)
+       sb_kill (&out);
+       buffer_limit =
+ 	input_scrub_next_buffer (&input_line_pointer);
+-
+-      macro_record_invocation (macro);
+ #ifdef md_macro_info
+       md_macro_info (macro);
+ #endif
+-      return true;
++      return 1;
+     }
+-  return false;
++  return 0;
+ }
+ 
+ #ifdef HANDLE_BUNDLE
+@@ -1272,7 +1269,7 @@ read_a_source_file (const char *name)
+ 			  s_ignore (0);
+ 			  nul_char = next_char = *--input_line_pointer;
+ 			  *input_line_pointer = '\0';
+-			  if (! try_macro (next_char, s))
++			  if (! macro_defined || ! try_macro (next_char, s))
+ 			    {
+ 			      *end = '\0';
+ 			      as_bad (_("unknown pseudo-op: `%s'"), s);
+@@ -1309,7 +1306,7 @@ read_a_source_file (const char *name)
+ 
+ 		      generate_lineno_debug ();
+ 
+-		      if (try_macro (next_char, s))
++		      if (macro_defined && try_macro (next_char, s))
+ 			continue;
+ 
+ 		      if (mri_pending_align)
+@@ -2819,7 +2816,7 @@ s_macro (int ignore ATTRIBUTE_UNUSED)
+ 	  as_warn_where (macro->file, macro->line,
+ 			 _("attempt to redefine pseudo-op `%s' ignored"),
+ 			 macro->name);
+-	  delete_macro (macro->name);
++	  str_hash_delete (macro_hash, macro->name);
+ 	}
+     }
+ 
+diff --git a/gas/testsuite/gas/macros/macros.exp b/gas/testsuite/gas/macros/macros.exp
+index 94ac37cdb8b..3ac199feaa5 100644
+--- a/gas/testsuite/gas/macros/macros.exp
++++ b/gas/testsuite/gas/macros/macros.exp
+@@ -112,4 +112,3 @@ run_list_test count
+ run_list_test irp-count
+ run_list_test irpc-quote
+ run_list_test rept-count
+-run_dump_test nesting
+diff --git a/gas/testsuite/gas/macros/nesting.d b/gas/testsuite/gas/macros/nesting.d
+deleted file mode 100644
+index 2f44aedb2dc..00000000000
+--- a/gas/testsuite/gas/macros/nesting.d
++++ /dev/null
+@@ -1,28 +0,0 @@
+-#nm: -j 
+-#name: Nested macros (PR 32391)
+-# Sone targets do not support macros used like this.
+-#skip: tic*-*-* mmix-*
+-
+-#...
+-_m7_
+-_m8_
+-after_at_0
+-after_at_3
+-after_plus_0
+-after_plus_1
+-before_at_0
+-before_at_3
+-before_plus_0
+-before_plus_1
+-bert
+-harryfred
+-i3_bar
+-inside_at_1
+-inside_at_2
+-inside_at_4
+-inside_at_5
+-inside_plus_0
+-inside_plus_1
+-jim
+-o3_foo
+-other_inner_6
+diff --git a/gas/testsuite/gas/macros/nesting.s b/gas/testsuite/gas/macros/nesting.s
+deleted file mode 100644
+index 438d5af8d00..00000000000
+--- a/gas/testsuite/gas/macros/nesting.s
++++ /dev/null
+@@ -1,104 +0,0 @@
+-
+-	.text
+-/* PR 32391: Automatic counters inside macros should increment when nested
+-	macros finish execution.  */
+-.macro o1
+-.global before_at_\@
+-before_at_\@:
+-.global before_plus_\+
+-before_plus_\+:
+-
+-	.macro i1
+-.global inside_at_\@
+-inside_at_\@:
+-.global inside_plus_\+
+-inside_plus_\+:
+-	.endm
+-
+-	i1
+-	i1
+-
+-.global after_at_\@
+-after_at_\@:
+-.global after_plus_\+
+-after_plus_\+:
+-
+-.endm
+-
+-/* Invoking o1 should produce these symbols in this order:
+-
+-	before_at_0
+-	before_plus_0
+-	inside_at_1
+-	inside_plus_0
+-	inside_at_2
+-	inside_plus_1
+-	after_at_0
+-	after_plus_0  */
+-o1
+-	
+-/* A second invocation of o1 should not produce any errors about
+-	symbols or macros being redefined.  */
+-o1
+-	
+-/* This definition should not collide with the definition inside o1.  */
+-.macro i1
+-.global other_inner_\@
+-other_inner_\@:
+-.endm 
+-
+-/* And invoking it should invoke the second defintion of i1, not the first.  */	
+-i1
+-		
+-.macro o2
+-.global _m\@_
+-_m\@_:
+-.macro i2
+-.global _m\@_
+-_m\@_:
+-.endm
+-i2
+-.endm
+-
+-/* This should not generate conflicting symbols because the assembler
+-   inserts the contents of o2 into the input buffer as pure text (ie
+-   without evaluating i2).  The first use of \@ is evaluated at this
+-   time, creating _m4_.  But the second use is not evaluated because
+-   it is inside a .macro definition.
+-	
+-   This finishes the evaluation of o2, so the \@ counter is incremented.
+-	
+-   Next the input buffer is re-evaluated and the i2 macro definition
+-   and invocation are encounterd.  The text from i2 are inserted into
+-   the input buffer and at this point the second use of \@ is evaluated
+-   resulting in the creation of a symbol called _m5_.  */
+-o2
+-
+-/* Macro arguments should be independent of nesting.  */
+-.macro O3 arg
+-.global o3_\arg
+-o3_\arg:
+-
+-	.macro I3 arg
+-.global i3_\arg
+-i3_\arg:
+-       .endm
+-
+-	i3 bar		/* Macro names are case insensitive.  */
+-.endm
+-
+-o3 foo	/* Should produce two labels: o3_foo and i3_bar.  */
+-
+-/* Nested macros can access the arguments of their parents.
+-   In addition their arguments can be substituted into the arguments
+-   that are substited from their parents:  */
+-.macro OUTER arg1, arg2, arg3:vararg
+-     .macro INNER arg4 arg2
+-        .dc.a \arg2
+-	.dc.a \arg3
+-     .endm
+-     INNER \arg1 bert
+-	.dc.a \arg2
+-.endm
+-
+-OUTER fred, jim, harry\arg4 /* This produces references to "jim", "bert" and "harryfred".  */
+
+base-commit: 14848fc2b22e6e718abadcfbcc0491688df19a8e
+-- 
+2.47.1
+


^ permalink raw reply related	[flat|nested] 39+ messages in thread

* [gentoo-commits] proj/toolchain/binutils-patches:master commit in: 9999/
@ 2024-12-24  6:27 Sam James
  0 siblings, 0 replies; 39+ messages in thread
From: Sam James @ 2024-12-24  6:27 UTC (permalink / raw
  To: gentoo-commits

commit:     43f28a46d9f3ea14979b20a23d05eadf76b76d14
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Tue Dec 24 06:27:14 2024 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Tue Dec 24 06:27:14 2024 +0000
URL:        https://gitweb.gentoo.org/proj/toolchain/binutils-patches.git/commit/?id=43f28a46

9999: add more macro reverts

Bug: https://sourceware.org/PR32484
Bug: https://sourceware.org/PR32486
Bug: https://sourceware.org/PR32487
Signed-off-by: Sam James <sam <AT> gentoo.org>

 9999/0006-Revert-PR-32391-testcase.patch           | 183 +++++++++++++++++++++
 ...Fix-error-macro-may-be-used-uninitialized.patch |  39 +++++
 ...he-handling-or-arguments-and-macro-pseud.patch} |  20 +--
 3 files changed, 228 insertions(+), 14 deletions(-)

diff --git a/9999/0006-Revert-PR-32391-testcase.patch b/9999/0006-Revert-PR-32391-testcase.patch
new file mode 100644
index 0000000..d847d98
--- /dev/null
+++ b/9999/0006-Revert-PR-32391-testcase.patch
@@ -0,0 +1,183 @@
+From 423c670c7d80a334fb9f10b71dcc68c022c2a2a5 Mon Sep 17 00:00:00 2001
+Message-ID: <423c670c7d80a334fb9f10b71dcc68c022c2a2a5.1735021582.git.sam@gentoo.org>
+From: Sam James <sam@gentoo.org>
+Date: Tue, 24 Dec 2024 06:25:51 +0000
+Subject: [PATCH 1/3] Revert "PR 32391 testcase"
+
+This reverts commit c8fcfa9aad211dfd8296ae6e978a356797936c61.
+---
+ gas/testsuite/gas/macros/nesting.s | 120 ++++++++++++++---------------
+ 1 file changed, 60 insertions(+), 60 deletions(-)
+
+diff --git a/gas/testsuite/gas/macros/nesting.s b/gas/testsuite/gas/macros/nesting.s
+index 9746ca183ef..438d5af8d00 100644
+--- a/gas/testsuite/gas/macros/nesting.s
++++ b/gas/testsuite/gas/macros/nesting.s
+@@ -1,104 +1,104 @@
+- .text
++
++	.text
+ /* PR 32391: Automatic counters inside macros should increment when nested
+-   macros finish execution.  */
+- .macro o1
+- .global before_at_\@
++	macros finish execution.  */
++.macro o1
++.global before_at_\@
+ before_at_\@:
+- .global before_plus_\+
++.global before_plus_\+
+ before_plus_\+:
+ 
+- .macro i1
+- .global inside_at_\@
++	.macro i1
++.global inside_at_\@
+ inside_at_\@:
+- .global inside_plus_\+
++.global inside_plus_\+
+ inside_plus_\+:
+- .endm
++	.endm
+ 
+- i1
+- i1
++	i1
++	i1
+ 
+- .global after_at_\@
++.global after_at_\@
+ after_at_\@:
+- .global after_plus_\+
++.global after_plus_\+
+ after_plus_\+:
+ 
+- .endm
++.endm
+ 
+ /* Invoking o1 should produce these symbols in this order:
+ 
+-   before_at_0
+-   before_plus_0
+-   inside_at_1
+-   inside_plus_0
+-   inside_at_2
+-   inside_plus_1
+-   after_at_0
+-   after_plus_0  */
+- o1
+-
++	before_at_0
++	before_plus_0
++	inside_at_1
++	inside_plus_0
++	inside_at_2
++	inside_plus_1
++	after_at_0
++	after_plus_0  */
++o1
++	
+ /* A second invocation of o1 should not produce any errors about
+-   symbols or macros being redefined.  */
+- o1
+-
++	symbols or macros being redefined.  */
++o1
++	
+ /* This definition should not collide with the definition inside o1.  */
+- .macro i1
+- .global other_inner_\@
++.macro i1
++.global other_inner_\@
+ other_inner_\@:
+- .endm
++.endm 
+ 
+-/* And invoking it should invoke the second defintion of i1, not the first.  */
+- i1
+-
+- .macro o2
+- .global _m\@_
++/* And invoking it should invoke the second defintion of i1, not the first.  */	
++i1
++		
++.macro o2
++.global _m\@_
+ _m\@_:
+- .macro i2
+- .global _m\@_
++.macro i2
++.global _m\@_
+ _m\@_:
+- .endm
+- i2
+- .endm
++.endm
++i2
++.endm
+ 
+ /* This should not generate conflicting symbols because the assembler
+    inserts the contents of o2 into the input buffer as pure text (ie
+    without evaluating i2).  The first use of \@ is evaluated at this
+    time, creating _m4_.  But the second use is not evaluated because
+    it is inside a .macro definition.
+-
++	
+    This finishes the evaluation of o2, so the \@ counter is incremented.
+-
++	
+    Next the input buffer is re-evaluated and the i2 macro definition
+    and invocation are encounterd.  The text from i2 are inserted into
+    the input buffer and at this point the second use of \@ is evaluated
+    resulting in the creation of a symbol called _m5_.  */
+- o2
++o2
+ 
+ /* Macro arguments should be independent of nesting.  */
+- .macro O3 arg
+- .global o3_\arg
++.macro O3 arg
++.global o3_\arg
+ o3_\arg:
+ 
+- .macro I3 arg
+- .global i3_\arg
++	.macro I3 arg
++.global i3_\arg
+ i3_\arg:
+- .endm
++       .endm
+ 
+- i3 bar		/* Macro names are case insensitive.  */
+- .endm
++	i3 bar		/* Macro names are case insensitive.  */
++.endm
+ 
+- o3 foo		/* Should produce two labels: o3_foo and i3_bar.  */
++o3 foo	/* Should produce two labels: o3_foo and i3_bar.  */
+ 
+ /* Nested macros can access the arguments of their parents.
+    In addition their arguments can be substituted into the arguments
+    that are substited from their parents:  */
+- .macro OUTER arg1, arg2, arg3:vararg
+- .macro INNER arg4 arg2
++.macro OUTER arg1, arg2, arg3:vararg
++     .macro INNER arg4 arg2
+         .dc.a \arg2
+- .dc.a \arg3
+- .endm
+- INNER \arg1 bert
+- .dc.a \arg2
+- .endm
++	.dc.a \arg3
++     .endm
++     INNER \arg1 bert
++	.dc.a \arg2
++.endm
+ 
+-/* This produces references to "jim", "bert" and "harryfred".  */
+- OUTER fred, jim, harry\arg4
++OUTER fred, jim, harry\arg4 /* This produces references to "jim", "bert" and "harryfred".  */
+-- 
+2.47.1
+

diff --git a/9999/0007-Revert-Fix-error-macro-may-be-used-uninitialized.patch b/9999/0007-Revert-Fix-error-macro-may-be-used-uninitialized.patch
new file mode 100644
index 0000000..410cf76
--- /dev/null
+++ b/9999/0007-Revert-Fix-error-macro-may-be-used-uninitialized.patch
@@ -0,0 +1,39 @@
+From bbdfc672d363ee12f00ce6fc6c7660032cdf4f88 Mon Sep 17 00:00:00 2001
+Message-ID: <bbdfc672d363ee12f00ce6fc6c7660032cdf4f88.1735021582.git.sam@gentoo.org>
+In-Reply-To: <423c670c7d80a334fb9f10b71dcc68c022c2a2a5.1735021582.git.sam@gentoo.org>
+References: <423c670c7d80a334fb9f10b71dcc68c022c2a2a5.1735021582.git.sam@gentoo.org>
+From: Sam James <sam@gentoo.org>
+Date: Tue, 24 Dec 2024 06:25:57 +0000
+Subject: [PATCH 2/3] Revert "Fix error: macro may be used uninitialized"
+
+This reverts commit f404dc565a4ccfe6922b45cf5526c319aedf75d6.
+---
+ gas/macro.c | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/gas/macro.c b/gas/macro.c
+index 3d5a9f14341..a0f2a5c764c 100644
+--- a/gas/macro.c
++++ b/gas/macro.c
+@@ -1411,6 +1411,7 @@ check_macro (const char *line, sb *expand,
+ {
+   const char *s;
+   char *copy, *cls;
++  macro_entry *macro;
+   sb line_sb;
+ 
+   if (! macros_defined)
+@@ -1430,8 +1431,8 @@ check_macro (const char *line, sb *expand,
+   for (cls = copy; *cls != '\0'; cls ++)
+     *cls = TOLOWER (*cls);
+ 
+-  macro_entry *macro = NULL;
+-  for (int i = macro_nesting_depth; i >= 0; i--)
++  int i;
++  for (i = macro_nesting_depth; i >= 0; i--)
+     {
+       macro = str_hash_find (macro_hash[i], copy);
+       if (macro != NULL)
+-- 
+2.47.1
+

diff --git a/9999/0006-Revert-Fix-the-handling-or-arguments-and-macro-pseud.patch b/9999/0008-Revert-Fix-the-handling-or-arguments-and-macro-pseud.patch
similarity index 98%
rename from 9999/0006-Revert-Fix-the-handling-or-arguments-and-macro-pseud.patch
rename to 9999/0008-Revert-Fix-the-handling-or-arguments-and-macro-pseud.patch
index 3eff67e..ab3210d 100644
--- a/9999/0006-Revert-Fix-the-handling-or-arguments-and-macro-pseud.patch
+++ b/9999/0008-Revert-Fix-the-handling-or-arguments-and-macro-pseud.patch
@@ -1,19 +1,13 @@
-From 35123215fe882c439955a644a715b23d31c4174d Mon Sep 17 00:00:00 2001
-Message-ID: <35123215fe882c439955a644a715b23d31c4174d.1734739720.git.sam@gentoo.org>
+From 6bb8e5ad25557fc476ccc64ee925d9c1d199a39a Mon Sep 17 00:00:00 2001
+Message-ID: <6bb8e5ad25557fc476ccc64ee925d9c1d199a39a.1735021582.git.sam@gentoo.org>
+In-Reply-To: <423c670c7d80a334fb9f10b71dcc68c022c2a2a5.1735021582.git.sam@gentoo.org>
+References: <423c670c7d80a334fb9f10b71dcc68c022c2a2a5.1735021582.git.sam@gentoo.org>
 From: Sam James <sam@gentoo.org>
-Date: Sat, 21 Dec 2024 00:07:29 +0000
-Subject: [PATCH] Revert "Fix the handling or arguments and macro
+Date: Tue, 24 Dec 2024 06:26:16 +0000
+Subject: [PATCH 3/3] Revert "Fix the handling or arguments and macro
  pseudo-variables inside nested assembler macros."
 
 This reverts commit 9f2e3c21f6506f081f1360f02b847606e0e00995.
-
-Breaks kernel build on amd64 and some multimedia bits on arm*, revert
-for now.
-
-Bug: https://sourceware.org/PR32484
-Bug: https://sourceware.org/PR32486
-Bug: https://sourceware.org/PR32487
-Signed-off-by: Sam James <sam@gentoo.org>
 ---
  gas/config/tc-iq2000.c              |   6 +-
  gas/doc/as.texi                     |  60 +------
@@ -901,8 +895,6 @@ index 438d5af8d00..00000000000
 -.endm
 -
 -OUTER fred, jim, harry\arg4 /* This produces references to "jim", "bert" and "harryfred".  */
-
-base-commit: 14848fc2b22e6e718abadcfbcc0491688df19a8e
 -- 
 2.47.1
 


^ permalink raw reply related	[flat|nested] 39+ messages in thread

* [gentoo-commits] proj/toolchain/binutils-patches:master commit in: 9999/
@ 2024-12-26  1:21 Sam James
  0 siblings, 0 replies; 39+ messages in thread
From: Sam James @ 2024-12-26  1:21 UTC (permalink / raw
  To: gentoo-commits

commit:     d3feed6f35091e1269b51b59ecb1c406dc497e5d
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Thu Dec 26 01:20:33 2024 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Thu Dec 26 01:20:33 2024 +0000
URL:        https://gitweb.gentoo.org/proj/toolchain/binutils-patches.git/commit/?id=d3feed6f

9999: add more more macro reverts

Bug: https://sourceware.org/PR32484
Bug: https://sourceware.org/PR32486
Bug: https://sourceware.org/PR32487
Signed-off-by: Sam James <sam <AT> gentoo.org>

 ...6-Revert-macro.c-871-heap-buffer-overflow.patch | 38 ++++++++++++++++++++++
 ...e.patch => 0007-Revert-PR-32391-testcase.patch} |  8 +++--
 ...ix-error-macro-may-be-used-uninitialized.patch} | 10 +++---
 ...he-handling-or-arguments-and-macro-pseud.patch} | 10 +++---
 4 files changed, 53 insertions(+), 13 deletions(-)

diff --git a/9999/0006-Revert-macro.c-871-heap-buffer-overflow.patch b/9999/0006-Revert-macro.c-871-heap-buffer-overflow.patch
new file mode 100644
index 0000000..4d0ac10
--- /dev/null
+++ b/9999/0006-Revert-macro.c-871-heap-buffer-overflow.patch
@@ -0,0 +1,38 @@
+From a6aac087c94bab6335335e24aa9ab58ce0682859 Mon Sep 17 00:00:00 2001
+Message-ID: <a6aac087c94bab6335335e24aa9ab58ce0682859.1735175975.git.sam@gentoo.org>
+From: Sam James <sam@gentoo.org>
+Date: Thu, 26 Dec 2024 01:15:13 +0000
+Subject: [PATCH 1/4] Revert "macro.c:871 heap-buffer-overflow"
+
+This reverts commit 6d9b7667974372357fed1f02c54a805f8c21dcde.
+---
+ gas/macro.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/gas/macro.c b/gas/macro.c
+index ded0645be8d..3d5a9f14341 100644
+--- a/gas/macro.c
++++ b/gas/macro.c
+@@ -868,7 +868,7 @@ sub_actual (size_t start, sb *in, sb *t, struct htab *formal_hash,
+ 	  /* The parent's FORMALs might contain parameters that need further
+ 	     substitution.  See gas/testsuite/gas/arm/macro-vld1.s for an
+ 	     example of this.  */
+-	  if (memchr (add->ptr, '\\', add->len))
++	  if (strchr (add->ptr, '\\'))
+ 	    {
+ 	      sb newadd;
+ 
+@@ -1485,7 +1485,7 @@ delete_macro (const char *name)
+ 	}
+     }
+ 
+-  if (j < 0)
++  if (macro == NULL)
+     as_warn (_("Attempt to purge non-existing macro `%s'"), copy);
+ 
+   free (copy);
+
+base-commit: fa93e88f754e10dfb60dd4c9bf9cef858d4c7e4a
+-- 
+2.47.1
+

diff --git a/9999/0006-Revert-PR-32391-testcase.patch b/9999/0007-Revert-PR-32391-testcase.patch
similarity index 92%
rename from 9999/0006-Revert-PR-32391-testcase.patch
rename to 9999/0007-Revert-PR-32391-testcase.patch
index d847d98..5cfdeec 100644
--- a/9999/0006-Revert-PR-32391-testcase.patch
+++ b/9999/0007-Revert-PR-32391-testcase.patch
@@ -1,8 +1,10 @@
-From 423c670c7d80a334fb9f10b71dcc68c022c2a2a5 Mon Sep 17 00:00:00 2001
-Message-ID: <423c670c7d80a334fb9f10b71dcc68c022c2a2a5.1735021582.git.sam@gentoo.org>
+From bf07b8ac6f4c0ffe4977951d099c09c50fbe0c29 Mon Sep 17 00:00:00 2001
+Message-ID: <bf07b8ac6f4c0ffe4977951d099c09c50fbe0c29.1735175975.git.sam@gentoo.org>
+In-Reply-To: <a6aac087c94bab6335335e24aa9ab58ce0682859.1735175975.git.sam@gentoo.org>
+References: <a6aac087c94bab6335335e24aa9ab58ce0682859.1735175975.git.sam@gentoo.org>
 From: Sam James <sam@gentoo.org>
 Date: Tue, 24 Dec 2024 06:25:51 +0000
-Subject: [PATCH 1/3] Revert "PR 32391 testcase"
+Subject: [PATCH 2/4] Revert "PR 32391 testcase"
 
 This reverts commit c8fcfa9aad211dfd8296ae6e978a356797936c61.
 ---

diff --git a/9999/0007-Revert-Fix-error-macro-may-be-used-uninitialized.patch b/9999/0008-Revert-Fix-error-macro-may-be-used-uninitialized.patch
similarity index 72%
rename from 9999/0007-Revert-Fix-error-macro-may-be-used-uninitialized.patch
rename to 9999/0008-Revert-Fix-error-macro-may-be-used-uninitialized.patch
index 410cf76..52cbc39 100644
--- a/9999/0007-Revert-Fix-error-macro-may-be-used-uninitialized.patch
+++ b/9999/0008-Revert-Fix-error-macro-may-be-used-uninitialized.patch
@@ -1,10 +1,10 @@
-From bbdfc672d363ee12f00ce6fc6c7660032cdf4f88 Mon Sep 17 00:00:00 2001
-Message-ID: <bbdfc672d363ee12f00ce6fc6c7660032cdf4f88.1735021582.git.sam@gentoo.org>
-In-Reply-To: <423c670c7d80a334fb9f10b71dcc68c022c2a2a5.1735021582.git.sam@gentoo.org>
-References: <423c670c7d80a334fb9f10b71dcc68c022c2a2a5.1735021582.git.sam@gentoo.org>
+From cc2fcd3f83d79ca491c61654b94e267386cdab3a Mon Sep 17 00:00:00 2001
+Message-ID: <cc2fcd3f83d79ca491c61654b94e267386cdab3a.1735175975.git.sam@gentoo.org>
+In-Reply-To: <a6aac087c94bab6335335e24aa9ab58ce0682859.1735175975.git.sam@gentoo.org>
+References: <a6aac087c94bab6335335e24aa9ab58ce0682859.1735175975.git.sam@gentoo.org>
 From: Sam James <sam@gentoo.org>
 Date: Tue, 24 Dec 2024 06:25:57 +0000
-Subject: [PATCH 2/3] Revert "Fix error: macro may be used uninitialized"
+Subject: [PATCH 3/4] Revert "Fix error: macro may be used uninitialized"
 
 This reverts commit f404dc565a4ccfe6922b45cf5526c319aedf75d6.
 ---

diff --git a/9999/0008-Revert-Fix-the-handling-or-arguments-and-macro-pseud.patch b/9999/0009-Revert-Fix-the-handling-or-arguments-and-macro-pseud.patch
similarity index 98%
rename from 9999/0008-Revert-Fix-the-handling-or-arguments-and-macro-pseud.patch
rename to 9999/0009-Revert-Fix-the-handling-or-arguments-and-macro-pseud.patch
index ab3210d..e24e8d2 100644
--- a/9999/0008-Revert-Fix-the-handling-or-arguments-and-macro-pseud.patch
+++ b/9999/0009-Revert-Fix-the-handling-or-arguments-and-macro-pseud.patch
@@ -1,10 +1,10 @@
-From 6bb8e5ad25557fc476ccc64ee925d9c1d199a39a Mon Sep 17 00:00:00 2001
-Message-ID: <6bb8e5ad25557fc476ccc64ee925d9c1d199a39a.1735021582.git.sam@gentoo.org>
-In-Reply-To: <423c670c7d80a334fb9f10b71dcc68c022c2a2a5.1735021582.git.sam@gentoo.org>
-References: <423c670c7d80a334fb9f10b71dcc68c022c2a2a5.1735021582.git.sam@gentoo.org>
+From 499b2dbc38cbd668b62704165ee572c6ab784a4e Mon Sep 17 00:00:00 2001
+Message-ID: <499b2dbc38cbd668b62704165ee572c6ab784a4e.1735175975.git.sam@gentoo.org>
+In-Reply-To: <a6aac087c94bab6335335e24aa9ab58ce0682859.1735175975.git.sam@gentoo.org>
+References: <a6aac087c94bab6335335e24aa9ab58ce0682859.1735175975.git.sam@gentoo.org>
 From: Sam James <sam@gentoo.org>
 Date: Tue, 24 Dec 2024 06:26:16 +0000
-Subject: [PATCH 3/3] Revert "Fix the handling or arguments and macro
+Subject: [PATCH 4/4] Revert "Fix the handling or arguments and macro
  pseudo-variables inside nested assembler macros."
 
 This reverts commit 9f2e3c21f6506f081f1360f02b847606e0e00995.


^ permalink raw reply related	[flat|nested] 39+ messages in thread

* [gentoo-commits] proj/toolchain/binutils-patches:master commit in: 9999/
@ 2025-01-01 14:05 Sam James
  0 siblings, 0 replies; 39+ messages in thread
From: Sam James @ 2025-01-01 14:05 UTC (permalink / raw
  To: gentoo-commits

commit:     6832c5a8fb253c080d9fb43ba83210c67bcbe2a2
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Wed Jan  1 14:04:51 2025 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Wed Jan  1 14:04:51 2025 +0000
URL:        https://gitweb.gentoo.org/proj/toolchain/binutils-patches.git/commit/?id=6832c5a8

9999: add more more macro reverts

Bug: https://sourceware.org/PR32484
Bug: https://sourceware.org/PR32486
Bug: https://sourceware.org/PR32487
Signed-off-by: Sam James <sam <AT> gentoo.org>

 9999/0006-Revert-PR-32391-memory-leak.patch        | 28 +++++++++++++++++
 ...-Revert-macro.c-871-heap-buffer-overflow.patch} | 14 ++++-----
 ...e.patch => 0008-Revert-PR-32391-testcase.patch} | 12 ++++----
 ...ix-error-macro-may-be-used-uninitialized.patch} | 14 ++++-----
 ...he-handling-or-arguments-and-macro-pseud.patch} | 36 +++++++++++-----------
 5 files changed, 66 insertions(+), 38 deletions(-)

diff --git a/9999/0006-Revert-PR-32391-memory-leak.patch b/9999/0006-Revert-PR-32391-memory-leak.patch
new file mode 100644
index 0000000..a20c54d
--- /dev/null
+++ b/9999/0006-Revert-PR-32391-memory-leak.patch
@@ -0,0 +1,28 @@
+From 4bed21d47f9d838dc6b55ce026989ede4eacc789 Mon Sep 17 00:00:00 2001
+Message-ID: <4bed21d47f9d838dc6b55ce026989ede4eacc789.1735740264.git.sam@gentoo.org>
+From: Sam James <sam@gentoo.org>
+Date: Wed, 1 Jan 2025 14:03:43 +0000
+Subject: [PATCH 06/10] Revert "PR 32391 memory leak"
+
+This reverts commit 599739cc1c5d70ac958583130b4b5413aa101d8e.
+---
+ gas/macro.c | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/gas/macro.c b/gas/macro.c
+index 9eefc8360b1..9670b38c152 100644
+--- a/gas/macro.c
++++ b/gas/macro.c
+@@ -878,7 +878,6 @@ sub_actual (size_t start, sb *in, sb *t, struct htab *formal_hash,
+ 	      (void) macro_expand_body (add, &newadd, NULL, NULL,
+ 					orig_macro, orig_macro->count);
+ 	      sb_add_sb (out, &newadd);
+-	      sb_kill (&newadd);
+ 	    }
+ 	  else
+ 	    {
+
+base-commit: 94e2b2a770fc49e42c9baec80f4fb88f63391a4e
+-- 
+2.47.1
+

diff --git a/9999/0006-Revert-macro.c-871-heap-buffer-overflow.patch b/9999/0007-Revert-macro.c-871-heap-buffer-overflow.patch
similarity index 65%
rename from 9999/0006-Revert-macro.c-871-heap-buffer-overflow.patch
rename to 9999/0007-Revert-macro.c-871-heap-buffer-overflow.patch
index 4d0ac10..b461443 100644
--- a/9999/0006-Revert-macro.c-871-heap-buffer-overflow.patch
+++ b/9999/0007-Revert-macro.c-871-heap-buffer-overflow.patch
@@ -1,8 +1,10 @@
-From a6aac087c94bab6335335e24aa9ab58ce0682859 Mon Sep 17 00:00:00 2001
-Message-ID: <a6aac087c94bab6335335e24aa9ab58ce0682859.1735175975.git.sam@gentoo.org>
+From 7daa5da3eab39e733f40eccbf4f6cd2078e3335e Mon Sep 17 00:00:00 2001
+Message-ID: <7daa5da3eab39e733f40eccbf4f6cd2078e3335e.1735740264.git.sam@gentoo.org>
+In-Reply-To: <4bed21d47f9d838dc6b55ce026989ede4eacc789.1735740264.git.sam@gentoo.org>
+References: <4bed21d47f9d838dc6b55ce026989ede4eacc789.1735740264.git.sam@gentoo.org>
 From: Sam James <sam@gentoo.org>
-Date: Thu, 26 Dec 2024 01:15:13 +0000
-Subject: [PATCH 1/4] Revert "macro.c:871 heap-buffer-overflow"
+Date: Wed, 1 Jan 2025 14:03:44 +0000
+Subject: [PATCH 07/10] Revert "macro.c:871 heap-buffer-overflow"
 
 This reverts commit 6d9b7667974372357fed1f02c54a805f8c21dcde.
 ---
@@ -10,7 +12,7 @@ This reverts commit 6d9b7667974372357fed1f02c54a805f8c21dcde.
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/gas/macro.c b/gas/macro.c
-index ded0645be8d..3d5a9f14341 100644
+index 9670b38c152..5fa2011ab7a 100644
 --- a/gas/macro.c
 +++ b/gas/macro.c
 @@ -868,7 +868,7 @@ sub_actual (size_t start, sb *in, sb *t, struct htab *formal_hash,
@@ -31,8 +33,6 @@ index ded0645be8d..3d5a9f14341 100644
      as_warn (_("Attempt to purge non-existing macro `%s'"), copy);
  
    free (copy);
-
-base-commit: fa93e88f754e10dfb60dd4c9bf9cef858d4c7e4a
 -- 
 2.47.1
 

diff --git a/9999/0007-Revert-PR-32391-testcase.patch b/9999/0008-Revert-PR-32391-testcase.patch
similarity index 91%
rename from 9999/0007-Revert-PR-32391-testcase.patch
rename to 9999/0008-Revert-PR-32391-testcase.patch
index 5cfdeec..4376e58 100644
--- a/9999/0007-Revert-PR-32391-testcase.patch
+++ b/9999/0008-Revert-PR-32391-testcase.patch
@@ -1,10 +1,10 @@
-From bf07b8ac6f4c0ffe4977951d099c09c50fbe0c29 Mon Sep 17 00:00:00 2001
-Message-ID: <bf07b8ac6f4c0ffe4977951d099c09c50fbe0c29.1735175975.git.sam@gentoo.org>
-In-Reply-To: <a6aac087c94bab6335335e24aa9ab58ce0682859.1735175975.git.sam@gentoo.org>
-References: <a6aac087c94bab6335335e24aa9ab58ce0682859.1735175975.git.sam@gentoo.org>
+From da631c6ce21783acebd2dc44b834fd17c84a0381 Mon Sep 17 00:00:00 2001
+Message-ID: <da631c6ce21783acebd2dc44b834fd17c84a0381.1735740264.git.sam@gentoo.org>
+In-Reply-To: <4bed21d47f9d838dc6b55ce026989ede4eacc789.1735740264.git.sam@gentoo.org>
+References: <4bed21d47f9d838dc6b55ce026989ede4eacc789.1735740264.git.sam@gentoo.org>
 From: Sam James <sam@gentoo.org>
-Date: Tue, 24 Dec 2024 06:25:51 +0000
-Subject: [PATCH 2/4] Revert "PR 32391 testcase"
+Date: Wed, 1 Jan 2025 14:03:45 +0000
+Subject: [PATCH 08/10] Revert "PR 32391 testcase"
 
 This reverts commit c8fcfa9aad211dfd8296ae6e978a356797936c61.
 ---

diff --git a/9999/0008-Revert-Fix-error-macro-may-be-used-uninitialized.patch b/9999/0009-Revert-Fix-error-macro-may-be-used-uninitialized.patch
similarity index 66%
rename from 9999/0008-Revert-Fix-error-macro-may-be-used-uninitialized.patch
rename to 9999/0009-Revert-Fix-error-macro-may-be-used-uninitialized.patch
index 52cbc39..dd6ff9a 100644
--- a/9999/0008-Revert-Fix-error-macro-may-be-used-uninitialized.patch
+++ b/9999/0009-Revert-Fix-error-macro-may-be-used-uninitialized.patch
@@ -1,10 +1,10 @@
-From cc2fcd3f83d79ca491c61654b94e267386cdab3a Mon Sep 17 00:00:00 2001
-Message-ID: <cc2fcd3f83d79ca491c61654b94e267386cdab3a.1735175975.git.sam@gentoo.org>
-In-Reply-To: <a6aac087c94bab6335335e24aa9ab58ce0682859.1735175975.git.sam@gentoo.org>
-References: <a6aac087c94bab6335335e24aa9ab58ce0682859.1735175975.git.sam@gentoo.org>
+From 44100045e8d1df5df3578d60206df94498bcd236 Mon Sep 17 00:00:00 2001
+Message-ID: <44100045e8d1df5df3578d60206df94498bcd236.1735740264.git.sam@gentoo.org>
+In-Reply-To: <4bed21d47f9d838dc6b55ce026989ede4eacc789.1735740264.git.sam@gentoo.org>
+References: <4bed21d47f9d838dc6b55ce026989ede4eacc789.1735740264.git.sam@gentoo.org>
 From: Sam James <sam@gentoo.org>
-Date: Tue, 24 Dec 2024 06:25:57 +0000
-Subject: [PATCH 3/4] Revert "Fix error: macro may be used uninitialized"
+Date: Wed, 1 Jan 2025 14:03:46 +0000
+Subject: [PATCH 09/10] Revert "Fix error: macro may be used uninitialized"
 
 This reverts commit f404dc565a4ccfe6922b45cf5526c319aedf75d6.
 ---
@@ -12,7 +12,7 @@ This reverts commit f404dc565a4ccfe6922b45cf5526c319aedf75d6.
  1 file changed, 3 insertions(+), 2 deletions(-)
 
 diff --git a/gas/macro.c b/gas/macro.c
-index 3d5a9f14341..a0f2a5c764c 100644
+index 5fa2011ab7a..c1b43e76a61 100644
 --- a/gas/macro.c
 +++ b/gas/macro.c
 @@ -1411,6 +1411,7 @@ check_macro (const char *line, sb *expand,

diff --git a/9999/0009-Revert-Fix-the-handling-or-arguments-and-macro-pseud.patch b/9999/0010-Revert-Fix-the-handling-or-arguments-and-macro-pseud.patch
similarity index 96%
rename from 9999/0009-Revert-Fix-the-handling-or-arguments-and-macro-pseud.patch
rename to 9999/0010-Revert-Fix-the-handling-or-arguments-and-macro-pseud.patch
index e24e8d2..3a3b6c0 100644
--- a/9999/0009-Revert-Fix-the-handling-or-arguments-and-macro-pseud.patch
+++ b/9999/0010-Revert-Fix-the-handling-or-arguments-and-macro-pseud.patch
@@ -1,10 +1,10 @@
-From 499b2dbc38cbd668b62704165ee572c6ab784a4e Mon Sep 17 00:00:00 2001
-Message-ID: <499b2dbc38cbd668b62704165ee572c6ab784a4e.1735175975.git.sam@gentoo.org>
-In-Reply-To: <a6aac087c94bab6335335e24aa9ab58ce0682859.1735175975.git.sam@gentoo.org>
-References: <a6aac087c94bab6335335e24aa9ab58ce0682859.1735175975.git.sam@gentoo.org>
+From cfb2c161d55d2a4ab5ab3729b16ad364c8ec1c3f Mon Sep 17 00:00:00 2001
+Message-ID: <cfb2c161d55d2a4ab5ab3729b16ad364c8ec1c3f.1735740264.git.sam@gentoo.org>
+In-Reply-To: <4bed21d47f9d838dc6b55ce026989ede4eacc789.1735740264.git.sam@gentoo.org>
+References: <4bed21d47f9d838dc6b55ce026989ede4eacc789.1735740264.git.sam@gentoo.org>
 From: Sam James <sam@gentoo.org>
-Date: Tue, 24 Dec 2024 06:26:16 +0000
-Subject: [PATCH 4/4] Revert "Fix the handling or arguments and macro
+Date: Wed, 1 Jan 2025 14:03:46 +0000
+Subject: [PATCH 10/10] Revert "Fix the handling or arguments and macro
  pseudo-variables inside nested assembler macros."
 
 This reverts commit 9f2e3c21f6506f081f1360f02b847606e0e00995.
@@ -23,7 +23,7 @@ This reverts commit 9f2e3c21f6506f081f1360f02b847606e0e00995.
  delete mode 100644 gas/testsuite/gas/macros/nesting.s
 
 diff --git a/gas/config/tc-iq2000.c b/gas/config/tc-iq2000.c
-index 1cbc578281f..2198ffda2b9 100644
+index 8dc3b768e3a..c65f264528f 100644
 --- a/gas/config/tc-iq2000.c
 +++ b/gas/config/tc-iq2000.c
 @@ -105,6 +105,8 @@ struct iq2000_hi_fixup
@@ -47,7 +47,7 @@ index 1cbc578281f..2198ffda2b9 100644
  
  static void
 diff --git a/gas/doc/as.texi b/gas/doc/as.texi
-index 1683594a0bb..6be54b57599 100644
+index 69d6d3c88b0..c9f65a47125 100644
 --- a/gas/doc/as.texi
 +++ b/gas/doc/as.texi
 @@ -6215,12 +6215,7 @@ With that definition, @samp{SUM 0,5} is equivalent to this assembly input:
@@ -139,7 +139,7 @@ index 1683594a0bb..6be54b57599 100644
  @node PushSection
  @section @code{.pushsection @var{name} [, @var{subsection}] [, "@var{flags}"[, @@@var{type}[,@var{arguments}]]]}
 diff --git a/gas/input-scrub.c b/gas/input-scrub.c
-index 25fac879a56..878edc8fd36 100644
+index 3433bc6472d..2e0ce832b2b 100644
 --- a/gas/input-scrub.c
 +++ b/gas/input-scrub.c
 @@ -23,7 +23,6 @@
@@ -175,7 +175,7 @@ index 25fac879a56..878edc8fd36 100644
  	  if (from_sb_expansion != expanding_app)
  	    --macro_nest;
 diff --git a/gas/macro.c b/gas/macro.c
-index a0f2a5c764c..8b376f7f490 100644
+index c1b43e76a61..5ae76c6e661 100644
 --- a/gas/macro.c
 +++ b/gas/macro.c
 @@ -44,24 +44,11 @@
@@ -642,7 +642,7 @@ index a0f2a5c764c..8b376f7f490 100644
 -    }
 -}
 diff --git a/gas/macro.h b/gas/macro.h
-index 97f2a5a4066..e87f64e70ca 100644
+index 55b28b2f82a..3ebcfe8c8fd 100644
 --- a/gas/macro.h
 +++ b/gas/macro.h
 @@ -64,28 +64,31 @@ typedef struct macro_struct
@@ -685,10 +685,10 @@ index 97f2a5a4066..e87f64e70ca 100644
  
  #endif
 diff --git a/gas/read.c b/gas/read.c
-index e5185f4ba26..589c7b080c2 100644
+index 5be2686822d..6d0d4b5e31a 100644
 --- a/gas/read.c
 +++ b/gas/read.c
-@@ -655,8 +655,7 @@ poend (void)
+@@ -656,8 +656,7 @@ poend (void)
      }
  
  /* Helper function of read_a_source_file, which tries to expand a macro.  */
@@ -698,7 +698,7 @@ index e5185f4ba26..589c7b080c2 100644
  try_macro (char term, const char *line)
  {
    sb out;
-@@ -673,14 +672,12 @@ try_macro (char term, const char *line)
+@@ -674,14 +673,12 @@ try_macro (char term, const char *line)
        sb_kill (&out);
        buffer_limit =
  	input_scrub_next_buffer (&input_line_pointer);
@@ -715,7 +715,7 @@ index e5185f4ba26..589c7b080c2 100644
  }
  
  #ifdef HANDLE_BUNDLE
-@@ -1272,7 +1269,7 @@ read_a_source_file (const char *name)
+@@ -1273,7 +1270,7 @@ read_a_source_file (const char *name)
  			  s_ignore (0);
  			  nul_char = next_char = *--input_line_pointer;
  			  *input_line_pointer = '\0';
@@ -724,7 +724,7 @@ index e5185f4ba26..589c7b080c2 100644
  			    {
  			      *end = '\0';
  			      as_bad (_("unknown pseudo-op: `%s'"), s);
-@@ -1309,7 +1306,7 @@ read_a_source_file (const char *name)
+@@ -1310,7 +1307,7 @@ read_a_source_file (const char *name)
  
  		      generate_lineno_debug ();
  
@@ -733,7 +733,7 @@ index e5185f4ba26..589c7b080c2 100644
  			continue;
  
  		      if (mri_pending_align)
-@@ -2819,7 +2816,7 @@ s_macro (int ignore ATTRIBUTE_UNUSED)
+@@ -2820,7 +2817,7 @@ s_macro (int ignore ATTRIBUTE_UNUSED)
  	  as_warn_where (macro->file, macro->line,
  			 _("attempt to redefine pseudo-op `%s' ignored"),
  			 macro->name);
@@ -743,7 +743,7 @@ index e5185f4ba26..589c7b080c2 100644
      }
  
 diff --git a/gas/testsuite/gas/macros/macros.exp b/gas/testsuite/gas/macros/macros.exp
-index 94ac37cdb8b..3ac199feaa5 100644
+index de3df4d803d..278cf405225 100644
 --- a/gas/testsuite/gas/macros/macros.exp
 +++ b/gas/testsuite/gas/macros/macros.exp
 @@ -112,4 +112,3 @@ run_list_test count


^ permalink raw reply related	[flat|nested] 39+ messages in thread

* [gentoo-commits] proj/toolchain/binutils-patches:master commit in: 9999/
@ 2025-01-02 13:48 Sam James
  0 siblings, 0 replies; 39+ messages in thread
From: Sam James @ 2025-01-02 13:48 UTC (permalink / raw
  To: gentoo-commits

commit:     58f7f7f524284de1cbbacdc6403021b1d33a720b
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Thu Jan  2 13:48:12 2025 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Thu Jan  2 13:48:12 2025 +0000
URL:        https://gitweb.gentoo.org/proj/toolchain/binutils-patches.git/commit/?id=58f7f7f5

9999: drop macro reverts

H.J. landed it upstream now.

Signed-off-by: Sam James <sam <AT> gentoo.org>

 9999/0006-Revert-PR-32391-memory-leak.patch        |  28 -
 ...7-Revert-macro.c-871-heap-buffer-overflow.patch |  38 -
 9999/0008-Revert-PR-32391-testcase.patch           | 185 -----
 ...Fix-error-macro-may-be-used-uninitialized.patch |  39 -
 ...the-handling-or-arguments-and-macro-pseud.patch | 900 ---------------------
 5 files changed, 1190 deletions(-)

diff --git a/9999/0006-Revert-PR-32391-memory-leak.patch b/9999/0006-Revert-PR-32391-memory-leak.patch
deleted file mode 100644
index a20c54d..0000000
--- a/9999/0006-Revert-PR-32391-memory-leak.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 4bed21d47f9d838dc6b55ce026989ede4eacc789 Mon Sep 17 00:00:00 2001
-Message-ID: <4bed21d47f9d838dc6b55ce026989ede4eacc789.1735740264.git.sam@gentoo.org>
-From: Sam James <sam@gentoo.org>
-Date: Wed, 1 Jan 2025 14:03:43 +0000
-Subject: [PATCH 06/10] Revert "PR 32391 memory leak"
-
-This reverts commit 599739cc1c5d70ac958583130b4b5413aa101d8e.
----
- gas/macro.c | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/gas/macro.c b/gas/macro.c
-index 9eefc8360b1..9670b38c152 100644
---- a/gas/macro.c
-+++ b/gas/macro.c
-@@ -878,7 +878,6 @@ sub_actual (size_t start, sb *in, sb *t, struct htab *formal_hash,
- 	      (void) macro_expand_body (add, &newadd, NULL, NULL,
- 					orig_macro, orig_macro->count);
- 	      sb_add_sb (out, &newadd);
--	      sb_kill (&newadd);
- 	    }
- 	  else
- 	    {
-
-base-commit: 94e2b2a770fc49e42c9baec80f4fb88f63391a4e
--- 
-2.47.1
-

diff --git a/9999/0007-Revert-macro.c-871-heap-buffer-overflow.patch b/9999/0007-Revert-macro.c-871-heap-buffer-overflow.patch
deleted file mode 100644
index b461443..0000000
--- a/9999/0007-Revert-macro.c-871-heap-buffer-overflow.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 7daa5da3eab39e733f40eccbf4f6cd2078e3335e Mon Sep 17 00:00:00 2001
-Message-ID: <7daa5da3eab39e733f40eccbf4f6cd2078e3335e.1735740264.git.sam@gentoo.org>
-In-Reply-To: <4bed21d47f9d838dc6b55ce026989ede4eacc789.1735740264.git.sam@gentoo.org>
-References: <4bed21d47f9d838dc6b55ce026989ede4eacc789.1735740264.git.sam@gentoo.org>
-From: Sam James <sam@gentoo.org>
-Date: Wed, 1 Jan 2025 14:03:44 +0000
-Subject: [PATCH 07/10] Revert "macro.c:871 heap-buffer-overflow"
-
-This reverts commit 6d9b7667974372357fed1f02c54a805f8c21dcde.
----
- gas/macro.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/gas/macro.c b/gas/macro.c
-index 9670b38c152..5fa2011ab7a 100644
---- a/gas/macro.c
-+++ b/gas/macro.c
-@@ -868,7 +868,7 @@ sub_actual (size_t start, sb *in, sb *t, struct htab *formal_hash,
- 	  /* The parent's FORMALs might contain parameters that need further
- 	     substitution.  See gas/testsuite/gas/arm/macro-vld1.s for an
- 	     example of this.  */
--	  if (memchr (add->ptr, '\\', add->len))
-+	  if (strchr (add->ptr, '\\'))
- 	    {
- 	      sb newadd;
- 
-@@ -1485,7 +1485,7 @@ delete_macro (const char *name)
- 	}
-     }
- 
--  if (j < 0)
-+  if (macro == NULL)
-     as_warn (_("Attempt to purge non-existing macro `%s'"), copy);
- 
-   free (copy);
--- 
-2.47.1
-

diff --git a/9999/0008-Revert-PR-32391-testcase.patch b/9999/0008-Revert-PR-32391-testcase.patch
deleted file mode 100644
index 4376e58..0000000
--- a/9999/0008-Revert-PR-32391-testcase.patch
+++ /dev/null
@@ -1,185 +0,0 @@
-From da631c6ce21783acebd2dc44b834fd17c84a0381 Mon Sep 17 00:00:00 2001
-Message-ID: <da631c6ce21783acebd2dc44b834fd17c84a0381.1735740264.git.sam@gentoo.org>
-In-Reply-To: <4bed21d47f9d838dc6b55ce026989ede4eacc789.1735740264.git.sam@gentoo.org>
-References: <4bed21d47f9d838dc6b55ce026989ede4eacc789.1735740264.git.sam@gentoo.org>
-From: Sam James <sam@gentoo.org>
-Date: Wed, 1 Jan 2025 14:03:45 +0000
-Subject: [PATCH 08/10] Revert "PR 32391 testcase"
-
-This reverts commit c8fcfa9aad211dfd8296ae6e978a356797936c61.
----
- gas/testsuite/gas/macros/nesting.s | 120 ++++++++++++++---------------
- 1 file changed, 60 insertions(+), 60 deletions(-)
-
-diff --git a/gas/testsuite/gas/macros/nesting.s b/gas/testsuite/gas/macros/nesting.s
-index 9746ca183ef..438d5af8d00 100644
---- a/gas/testsuite/gas/macros/nesting.s
-+++ b/gas/testsuite/gas/macros/nesting.s
-@@ -1,104 +1,104 @@
-- .text
-+
-+	.text
- /* PR 32391: Automatic counters inside macros should increment when nested
--   macros finish execution.  */
-- .macro o1
-- .global before_at_\@
-+	macros finish execution.  */
-+.macro o1
-+.global before_at_\@
- before_at_\@:
-- .global before_plus_\+
-+.global before_plus_\+
- before_plus_\+:
- 
-- .macro i1
-- .global inside_at_\@
-+	.macro i1
-+.global inside_at_\@
- inside_at_\@:
-- .global inside_plus_\+
-+.global inside_plus_\+
- inside_plus_\+:
-- .endm
-+	.endm
- 
-- i1
-- i1
-+	i1
-+	i1
- 
-- .global after_at_\@
-+.global after_at_\@
- after_at_\@:
-- .global after_plus_\+
-+.global after_plus_\+
- after_plus_\+:
- 
-- .endm
-+.endm
- 
- /* Invoking o1 should produce these symbols in this order:
- 
--   before_at_0
--   before_plus_0
--   inside_at_1
--   inside_plus_0
--   inside_at_2
--   inside_plus_1
--   after_at_0
--   after_plus_0  */
-- o1
--
-+	before_at_0
-+	before_plus_0
-+	inside_at_1
-+	inside_plus_0
-+	inside_at_2
-+	inside_plus_1
-+	after_at_0
-+	after_plus_0  */
-+o1
-+	
- /* A second invocation of o1 should not produce any errors about
--   symbols or macros being redefined.  */
-- o1
--
-+	symbols or macros being redefined.  */
-+o1
-+	
- /* This definition should not collide with the definition inside o1.  */
-- .macro i1
-- .global other_inner_\@
-+.macro i1
-+.global other_inner_\@
- other_inner_\@:
-- .endm
-+.endm 
- 
--/* And invoking it should invoke the second defintion of i1, not the first.  */
-- i1
--
-- .macro o2
-- .global _m\@_
-+/* And invoking it should invoke the second defintion of i1, not the first.  */	
-+i1
-+		
-+.macro o2
-+.global _m\@_
- _m\@_:
-- .macro i2
-- .global _m\@_
-+.macro i2
-+.global _m\@_
- _m\@_:
-- .endm
-- i2
-- .endm
-+.endm
-+i2
-+.endm
- 
- /* This should not generate conflicting symbols because the assembler
-    inserts the contents of o2 into the input buffer as pure text (ie
-    without evaluating i2).  The first use of \@ is evaluated at this
-    time, creating _m4_.  But the second use is not evaluated because
-    it is inside a .macro definition.
--
-+	
-    This finishes the evaluation of o2, so the \@ counter is incremented.
--
-+	
-    Next the input buffer is re-evaluated and the i2 macro definition
-    and invocation are encounterd.  The text from i2 are inserted into
-    the input buffer and at this point the second use of \@ is evaluated
-    resulting in the creation of a symbol called _m5_.  */
-- o2
-+o2
- 
- /* Macro arguments should be independent of nesting.  */
-- .macro O3 arg
-- .global o3_\arg
-+.macro O3 arg
-+.global o3_\arg
- o3_\arg:
- 
-- .macro I3 arg
-- .global i3_\arg
-+	.macro I3 arg
-+.global i3_\arg
- i3_\arg:
-- .endm
-+       .endm
- 
-- i3 bar		/* Macro names are case insensitive.  */
-- .endm
-+	i3 bar		/* Macro names are case insensitive.  */
-+.endm
- 
-- o3 foo		/* Should produce two labels: o3_foo and i3_bar.  */
-+o3 foo	/* Should produce two labels: o3_foo and i3_bar.  */
- 
- /* Nested macros can access the arguments of their parents.
-    In addition their arguments can be substituted into the arguments
-    that are substited from their parents:  */
-- .macro OUTER arg1, arg2, arg3:vararg
-- .macro INNER arg4 arg2
-+.macro OUTER arg1, arg2, arg3:vararg
-+     .macro INNER arg4 arg2
-         .dc.a \arg2
-- .dc.a \arg3
-- .endm
-- INNER \arg1 bert
-- .dc.a \arg2
-- .endm
-+	.dc.a \arg3
-+     .endm
-+     INNER \arg1 bert
-+	.dc.a \arg2
-+.endm
- 
--/* This produces references to "jim", "bert" and "harryfred".  */
-- OUTER fred, jim, harry\arg4
-+OUTER fred, jim, harry\arg4 /* This produces references to "jim", "bert" and "harryfred".  */
--- 
-2.47.1
-

diff --git a/9999/0009-Revert-Fix-error-macro-may-be-used-uninitialized.patch b/9999/0009-Revert-Fix-error-macro-may-be-used-uninitialized.patch
deleted file mode 100644
index dd6ff9a..0000000
--- a/9999/0009-Revert-Fix-error-macro-may-be-used-uninitialized.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 44100045e8d1df5df3578d60206df94498bcd236 Mon Sep 17 00:00:00 2001
-Message-ID: <44100045e8d1df5df3578d60206df94498bcd236.1735740264.git.sam@gentoo.org>
-In-Reply-To: <4bed21d47f9d838dc6b55ce026989ede4eacc789.1735740264.git.sam@gentoo.org>
-References: <4bed21d47f9d838dc6b55ce026989ede4eacc789.1735740264.git.sam@gentoo.org>
-From: Sam James <sam@gentoo.org>
-Date: Wed, 1 Jan 2025 14:03:46 +0000
-Subject: [PATCH 09/10] Revert "Fix error: macro may be used uninitialized"
-
-This reverts commit f404dc565a4ccfe6922b45cf5526c319aedf75d6.
----
- gas/macro.c | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/gas/macro.c b/gas/macro.c
-index 5fa2011ab7a..c1b43e76a61 100644
---- a/gas/macro.c
-+++ b/gas/macro.c
-@@ -1411,6 +1411,7 @@ check_macro (const char *line, sb *expand,
- {
-   const char *s;
-   char *copy, *cls;
-+  macro_entry *macro;
-   sb line_sb;
- 
-   if (! macros_defined)
-@@ -1430,8 +1431,8 @@ check_macro (const char *line, sb *expand,
-   for (cls = copy; *cls != '\0'; cls ++)
-     *cls = TOLOWER (*cls);
- 
--  macro_entry *macro = NULL;
--  for (int i = macro_nesting_depth; i >= 0; i--)
-+  int i;
-+  for (i = macro_nesting_depth; i >= 0; i--)
-     {
-       macro = str_hash_find (macro_hash[i], copy);
-       if (macro != NULL)
--- 
-2.47.1
-

diff --git a/9999/0010-Revert-Fix-the-handling-or-arguments-and-macro-pseud.patch b/9999/0010-Revert-Fix-the-handling-or-arguments-and-macro-pseud.patch
deleted file mode 100644
index 3a3b6c0..0000000
--- a/9999/0010-Revert-Fix-the-handling-or-arguments-and-macro-pseud.patch
+++ /dev/null
@@ -1,900 +0,0 @@
-From cfb2c161d55d2a4ab5ab3729b16ad364c8ec1c3f Mon Sep 17 00:00:00 2001
-Message-ID: <cfb2c161d55d2a4ab5ab3729b16ad364c8ec1c3f.1735740264.git.sam@gentoo.org>
-In-Reply-To: <4bed21d47f9d838dc6b55ce026989ede4eacc789.1735740264.git.sam@gentoo.org>
-References: <4bed21d47f9d838dc6b55ce026989ede4eacc789.1735740264.git.sam@gentoo.org>
-From: Sam James <sam@gentoo.org>
-Date: Wed, 1 Jan 2025 14:03:46 +0000
-Subject: [PATCH 10/10] Revert "Fix the handling or arguments and macro
- pseudo-variables inside nested assembler macros."
-
-This reverts commit 9f2e3c21f6506f081f1360f02b847606e0e00995.
----
- gas/config/tc-iq2000.c              |   6 +-
- gas/doc/as.texi                     |  60 +------
- gas/input-scrub.c                   |   7 +-
- gas/macro.c                         | 270 +++++-----------------------
- gas/macro.h                         |  17 +-
- gas/read.c                          |  15 +-
- gas/testsuite/gas/macros/macros.exp |   1 -
- gas/testsuite/gas/macros/nesting.d  |  28 ---
- gas/testsuite/gas/macros/nesting.s  | 104 -----------
- 9 files changed, 64 insertions(+), 444 deletions(-)
- delete mode 100644 gas/testsuite/gas/macros/nesting.d
- delete mode 100644 gas/testsuite/gas/macros/nesting.s
-
-diff --git a/gas/config/tc-iq2000.c b/gas/config/tc-iq2000.c
-index 8dc3b768e3a..c65f264528f 100644
---- a/gas/config/tc-iq2000.c
-+++ b/gas/config/tc-iq2000.c
-@@ -105,6 +105,8 @@ struct iq2000_hi_fixup
- /* The list of unmatched HI relocs.  */
- static struct iq2000_hi_fixup * iq2000_hi_fixup_list;
- 
-+/* Macro hash table, which we will add to.  */
-+extern struct htab *macro_hash;
- \f
- const char md_shortopts[] = "";
- const struct option md_longopts[] =
-@@ -277,7 +279,9 @@ iq2000_add_macro (const char *  name,
- 	}
-     }
- 
--  (void) add_macro (macro, true);
-+  str_hash_insert (macro_hash, macro->name, macro, 1);
-+
-+  macro_defined = 1;
- }
- 
- static void
-diff --git a/gas/doc/as.texi b/gas/doc/as.texi
-index 69d6d3c88b0..c9f65a47125 100644
---- a/gas/doc/as.texi
-+++ b/gas/doc/as.texi
-@@ -6215,12 +6215,7 @@ With that definition, @samp{SUM 0,5} is equivalent to this assembly input:
- @item .macro @var{macname}
- @itemx .macro @var{macname} @var{macargs} @dots{}
- @cindex @code{macro} directive
--Begin the definition of a macro called @var{macname}.  Macro names are case
--insensitive.  Macro definitions can be nested, although their behaviour is
--sometimes counter intuitive.  Nested macros only have scope within their
--defining macro.
--
--If your macro
-+Begin the definition of a macro called @var{macname}.  If your macro
- definition requires arguments, specify their names after the macro name,
- separated by commas or spaces.  You can qualify the macro argument to
- indicate whether all invocations must specify a non-blank value (through
-@@ -6385,29 +6380,6 @@ adjacent string literals - even if separated only by a blank - will not be
- concatenated when determining macro arguments, even if they're only separated
- by white space.  This is unlike certain other pseudo ops, e.g. @code{.ascii}.
- 
--Nested macros can access the arguments of their parents.  But also if their
--argument names clash with those of their parents, their versions are used.  So
--for example:
--
--@smallexample
--.macro OUTER arg1, arg2, arg3:vararg
--     .macro INNER arg4 arg2
--        .dc.a \arg2
--	.dc.a \arg3
--     .endm
--     INNER \arg1 bert
--	.dc.a \arg2
--.endm
--
--OUTER fred, jim, harry\arg4
--@end smallexample
--
--This will generate references to symbols called @samp{jim} - from the
--definition of the OUTER macro, @samp{bert} - from the definition in INNER
--where arg2 has been overridden and @samp{harryfred} - from the definition in
--INNER where the value of arg3 from OUTER is used, but with the value of arg4
--substituted into the symbol.
--
- @item .endm
- @cindex @code{endm} directive
- Mark the end of a macro definition.
-@@ -6423,33 +6395,6 @@ Exit early from the current macro definition.
- executed in this pseudo-variable; you can copy that number to your
- output with @samp{\@@}, but @emph{only within a macro definition}.
- 
--Note - the @samp{\@@} counter is incremented at the end of the expansion of a
--macro, but before the contents of any nested macros are evaluated.  This can
--lead to counter-intuitive behaviour when nested macros are used.  For example:
--
--@smallexample
--  .macro o
--    .macro i
--    _i\@@_:
--    .endm
--    i
--    _o\@@_:
--  .endm
--  o
--@end smallexample
--
--Produces two symbols @samp{_o0_} and @samp{_i1_}.  This happens because the
--@samp{o} macro executes entirely first, putting the definition and invocation
--of the @samp{i} macro into the input buffer.  It also puts the definition of
--the @samp{_o\@@_} symbol into the input buffer, evaluating the @samp{\@@}
--counter in the process and so generating a symbol called @samp{_o0_}.
--
--That finishes the invocation of @samp{o} so the @samp{\@@} counter is
--incremented.  Then the input buffer is re-evaluated and the definition and
--invocation of macro @samp{i} is found.  This results in @samp{_i\@@_} being put
--into the input buffer and this time @samp{\@@} evaluates to 1, so the symbol
--created is @samp{_i1_}.
--
- @cindex number of times a macro has been executed
- @cindex macro, execution count
- @item \+
-@@ -6736,9 +6681,6 @@ those explicitly specified with @code{.eject}.
- Undefine the macro @var{name}, so that later uses of the string will not be
- expanded.  @xref{Macro}.
- 
--Note - nested macros are automatically purged at the end of the macro that
--defines them.
--
- @ifset ELF
- @node PushSection
- @section @code{.pushsection @var{name} [, @var{subsection}] [, "@var{flags}"[, @@@var{type}[,@var{arguments}]]]}
-diff --git a/gas/input-scrub.c b/gas/input-scrub.c
-index 3433bc6472d..2e0ce832b2b 100644
---- a/gas/input-scrub.c
-+++ b/gas/input-scrub.c
-@@ -23,7 +23,6 @@
- #include "input-file.h"
- #include "sb.h"
- #include "listing.h"
--#include "macro.h"
- 
- /*
-  * O/S independent module to supply buffers of sanitised source code
-@@ -291,13 +290,12 @@ input_scrub_include_sb (sb *from, char *position, enum expansion expansion)
-       ++macro_nest;
-     }
- 
-+#ifdef md_macro_start
-   if (expansion == expanding_macro)
-     {
--#ifdef md_macro_start
-       md_macro_start ();
--#endif
--      increment_macro_nesting_depth ();
-     }
-+#endif
- 
-   next_saved_file = input_scrub_push (position);
- 
-@@ -352,7 +350,6 @@ input_scrub_next_buffer (char **bufp)
- 	         data.  */
- 	      md_macro_end ();
- #endif
--	      decrement_macro_nesting_depth ();
- 	    }
- 	  if (from_sb_expansion != expanding_app)
- 	    --macro_nest;
-diff --git a/gas/macro.c b/gas/macro.c
-index c1b43e76a61..5ae76c6e661 100644
---- a/gas/macro.c
-+++ b/gas/macro.c
-@@ -44,24 +44,11 @@
- 
- /* The macro hash table.  */
- 
--/* Macro nesting depth.  Similar to macro_nest defined in sb.c, but this
--   counter is specific to macros, whereas macro_nest also counts repeated
--   string blocks.  */
--static unsigned int macro_nesting_depth;
-+htab_t macro_hash;
- 
--/* Maximum nesting depth.  Ideally the same as the value of max_macro_nest
--   as defined in as.c (ie 100).  But there is one test in the assembler
--   testsuite (bfin/allinsn16.s) that nests macros to a depth of 8192.  So
--   we have a ridiculously large number here.  */
--#define MAX_MACRO_DEPTH 8193
-+/* Whether any macros have been defined.  */
- 
--static htab_t macro_hash[MAX_MACRO_DEPTH];
--
--/* Whether any macros have been defined.
--   FIXME:  This could be a counter that is incremented
--   with .macro and decremented with .purgem.  */
--
--static bool macros_defined = false;
-+int macro_defined;
- 
- /* Whether we should strip '@' characters.  */
- 
-@@ -73,18 +60,6 @@ static unsigned int macro_number;
- 
- static void free_macro (macro_entry *);
- 
--bool
--add_macro (macro_entry * macro, bool replace)
--{
--  if (str_hash_insert (macro_hash [macro_nesting_depth],
--		       macro->name, macro, replace) == NULL)
--    {
--      macros_defined = true;
--      return true;
--    }
--  return false;
--}
--
- static void
- macro_del_f (void *ent)
- {
-@@ -97,23 +72,15 @@ macro_del_f (void *ent)
- void
- macro_init (void)
- {
--  int i;
--
--  for (i = 0; i < MAX_MACRO_DEPTH; i++)
--    macro_hash[i] = htab_create_alloc (16, hash_string_tuple, eq_string_tuple,
--				       macro_del_f, notes_calloc, NULL);
--  macros_defined = false;
-+  macro_hash = htab_create_alloc (16, hash_string_tuple, eq_string_tuple,
-+				  macro_del_f, notes_calloc, NULL);
-+  macro_defined = 0;
- }
- 
- void
- macro_end (void)
- {
--  int i;
--
--  for (i = MAX_MACRO_DEPTH; i--;)
--    htab_delete (macro_hash[i]);
--
--  macros_defined = false;
-+  htab_delete (macro_hash);
- }
- 
- /* Read input lines till we get to a TO string.
-@@ -688,13 +655,6 @@ free_macro (macro_entry *macro)
-   free (macro);
- }
- 
--static macro_entry * last_recorded_macro = NULL;
--void
--macro_record_invocation (macro_entry * macro)
--{
--  last_recorded_macro = macro;
--}
--
- /* Define a new macro.  */
- 
- macro_entry *
-@@ -758,19 +718,15 @@ define_macro (sb *in, sb *label, size_t (*get_line) (sb *))
-   /* And stick it in the macro hash table.  */
-   for (idx = 0; idx < name.len; idx++)
-     name.ptr[idx] = TOLOWER (name.ptr[idx]);
--
--  if (macro_nesting_depth > 0)
--    macro->parent = last_recorded_macro;
--  else
--    macro->parent = NULL;
--
-   if (!error)
-     {
--      if (! add_macro (macro, false))
-+      if (str_hash_insert (macro_hash, macro->name, macro, 0) != NULL)
- 	error = _("Macro `%s' was already defined");
-     }
- 
--  if (error != NULL)
-+  if (!error)
-+    macro_defined = 1;
-+  else
-     {
-       as_bad_where (macro->file, macro->line, error, macro->name);
-       free_macro (macro);
-@@ -794,25 +750,11 @@ get_apost_token (size_t idx, sb *in, sb *name, int kind)
-   return idx;
- }
- 
--static const char *
--macro_expand_body (sb *, sb *, formal_entry *, struct htab *,
--		   const macro_entry *, unsigned int);
--
--/* Find the actual value for a formal parameter starting at START inside IN.
--    Appends the value of parameter onto OUT.
--   The hash table of formal parameters is provided by FORMAL_HASH.
--   The character that indicated the presense of a formal parameter is passed
--    in KIND.
--   If COPYIFNOTTHERE is true and the parameter is not found in the hash table
--    then it is appended as plain text onto OUT.
--   The macro containing the formal parameters is passed in MACRO.
--    This can be empty.
--   Returns the offset inside IN after advanceing past the parameter.
--   Also stores the parameter's name into T.  */
-+/* Substitute the actual value for a formal parameter.  */
- 
- static size_t
- sub_actual (size_t start, sb *in, sb *t, struct htab *formal_hash,
--	    int kind, sb *out, int copyifnotthere, const macro_entry * macro)
-+	    int kind, sb *out, int copyifnotthere)
- {
-   size_t src;
-   formal_entry *ptr;
-@@ -826,12 +768,16 @@ sub_actual (size_t start, sb *in, sb *t, struct htab *formal_hash,
-     ptr = NULL;
-   else
-     ptr = str_hash_find (formal_hash, sb_terminate (t));
--  
-   if (ptr)
-     {
--      sb * add = ptr->actual.len ? &ptr->actual : &ptr->def;
--
--      sb_add_sb (out, add);
-+      if (ptr->actual.len)
-+	{
-+	  sb_add_sb (out, &ptr->actual);
-+	}
-+      else
-+	{
-+	  sb_add_sb (out, &ptr->def);
-+	}
-     }
-   else if (kind == '&')
-     {
-@@ -845,55 +791,6 @@ sub_actual (size_t start, sb *in, sb *t, struct htab *formal_hash,
-     {
-       sb_add_sb (out, t);
-     }
--  else if (!macro_strip_at
--	   && macro_nesting_depth > 0
--	   && macro != NULL
--	   && macro->parent != NULL)
--    {
--      const macro_entry * orig_macro = macro;
--      bool success = false;
--
--      /* We have failed to find T, but we are inside nested macros.  So check
--	 the parent macros so see if they have a FORMAL that matches T.  */
--      while (macro->parent != NULL)
--	{
--	  macro = macro->parent;
--
--	  ptr = str_hash_find (macro->formal_hash, t->ptr);
--	  if (ptr == NULL)
--	    continue;
--
--	  sb * add = ptr->actual.len ? &ptr->actual : &ptr->def;
--
--	  /* The parent's FORMALs might contain parameters that need further
--	     substitution.  See gas/testsuite/gas/arm/macro-vld1.s for an
--	     example of this.  */
--	  if (strchr (add->ptr, '\\'))
--	    {
--	      sb newadd;
--
--	      sb_new (&newadd);
--	      /* FIXME: Should we do something if the call to
--		 macro_expand_body returns an error message ?  */
--	      (void) macro_expand_body (add, &newadd, NULL, NULL,
--					orig_macro, orig_macro->count);
--	      sb_add_sb (out, &newadd);
--	    }
--	  else
--	    {
--	      sb_add_sb (out, add);
--	    }
--	  success = true;
--	  break;
--	}
--      if (! success)
--	{
--	  /* We reached the outermost macro and failed to find T, so
--	     just copy the entire parameter as is.  */
--	  sb_add_char (out, '\\');
--	  sb_add_sb (out, t);
--	}
--    }
-   else
-     {
-       sb_add_char (out, '\\');
-@@ -902,12 +799,7 @@ sub_actual (size_t start, sb *in, sb *t, struct htab *formal_hash,
-   return src;
- }
- 
--/* Expands the body of a macro / block of text IN, copying it into OUT.
--   Parameters for substitution are found in FORMALS and FORMAL_HASH or
--   MACRO.
--   The number of times that this macro / block of text have already been
--   copied into the output is held in INSTANCE.
--   Returns NULL upon success or an error message otherwise.  */
-+/* Expand the body of a macro.  */
- 
- static const char *
- macro_expand_body (sb *in, sb *out, formal_entry *formals,
-@@ -919,38 +811,18 @@ macro_expand_body (sb *in, sb *out, formal_entry *formals,
-   int inquote = 0, macro_line = 0;
-   formal_entry *loclist = NULL;
-   const char *err = NULL;
--  int nesting = 0;
- 
--  if (formals == NULL && macro != NULL)
--    formals = macro->formals;
--
--  if (formal_hash == NULL && macro != NULL)
--    formal_hash = macro->formal_hash;
--  
-   sb_new (&t);
- 
-   while (src < in->len && !err)
-     {
--      if (in->ptr[src] == '.')
--	{
--	  /* Check to see if we have encountered ".macro" or ".endm" */
--	  if (in->len > src + 5
--	      && strncmp (in->ptr + src, ".macro", 6) == 0)
--	    ++ nesting;
--
--	  else if (in->len > src + 4
--		   && strncmp (in->ptr + src, ".endm", 5) == 0)
--	    -- nesting;
--	}
--
-       if (in->ptr[src] == '&')
- 	{
- 	  sb_reset (&t);
- 	  if (flag_mri)
- 	    {
- 	      if (src + 1 < in->len && in->ptr[src + 1] == '&')
--		src = sub_actual (src + 2, in, &t, formal_hash,
--				  '\'', out, 1, macro);
-+		src = sub_actual (src + 2, in, &t, formal_hash, '\'', out, 1);
- 	      else
- 		sb_add_char (out, in->ptr[src++]);
- 	    }
-@@ -958,8 +830,7 @@ macro_expand_body (sb *in, sb *out, formal_entry *formals,
- 	    {
- 	      /* Permit macro parameter substitution delineated with
- 		 an '&' prefix and optional '&' suffix.  */
--	      src = sub_actual (src + 1, in, &t, formal_hash,
--				'&', out, 0, macro);
-+	      src = sub_actual (src + 1, in, &t, formal_hash, '&', out, 0);
- 	    }
- 	}
-       else if (in->ptr[src] == '\\')
-@@ -980,12 +851,7 @@ macro_expand_body (sb *in, sb *out, formal_entry *formals,
- 	      else
- 		as_bad_where (macro->file, macro->line + macro_line, _("missing `)'"));
- 	    }
--	  else if (src < in->len
--		   && in->ptr[src] == '@'
--		   /* PR 32391: Do not perform the substition inside nested
--		      macros.  Instead wait until they are re-evaluated and
--		      perform the substition then.  */
--		   && ! nesting)
-+	  else if (src < in->len && in->ptr[src] == '@')
- 	    {
- 	      /* Sub in the total macro invocation number.  */
- 
-@@ -994,12 +860,7 @@ macro_expand_body (sb *in, sb *out, formal_entry *formals,
- 	      sprintf (buffer, "%u", macro_number);
- 	      sb_add_string (out, buffer);
- 	    }
--	  else if (src < in->len
--		   && in->ptr[src] == '+'
--		   /* PR 32391: Do not perform the substition inside nested
--		      macros.  Instead wait until they are re-evaluated and
--		      perform the substition then.  */
--		   && ! nesting)
-+	  else if (src < in->len && in->ptr[src] == '+')
- 	    {
- 	      /* Sub in the current macro invocation number.  */
- 
-@@ -1043,18 +904,7 @@ macro_expand_body (sb *in, sb *out, formal_entry *formals,
- 	  else
- 	    {
- 	      sb_reset (&t);
--
--	      if (nesting)
--		{
--		  src = get_apost_token (src, in, &t, '\'');
--		  sb_add_char (out, '\\');
--		  sb_add_sb (out, &t);
--		}
--	      else
--		{
--		  src = sub_actual (src, in, &t, formal_hash,
--				    '\'', out, 0, macro);
--		}
-+	      src = sub_actual (src, in, &t, formal_hash, '\'', out, 0);
- 	    }
- 	}
-       else if ((flag_macro_alternate || flag_mri)
-@@ -1073,7 +923,7 @@ macro_expand_body (sb *in, sb *out, formal_entry *formals,
- 	      sb_reset (&t);
- 	      src = sub_actual (src, in, &t, formal_hash,
- 				(macro_strip_at && inquote) ? '@' : '\'',
--				out, 1, macro);
-+				out, 1);
- 	    }
- 	  else
- 	    {
-@@ -1185,7 +1035,6 @@ macro_expand_body (sb *in, sb *out, formal_entry *formals,
- 
-   if (!err && (out->len == 0 || out->ptr[out->len - 1] != '\n'))
-     sb_add_char (out, '\n');
--
-   return err;
- }
- 
-@@ -1370,7 +1219,8 @@ macro_expand (size_t idx, sb *in, macro_entry *m, sb *out)
- 	    }
- 	}
- 
--      err = macro_expand_body (&m->sub, out, NULL, NULL, m, m->count);
-+      err = macro_expand_body (&m->sub, out, m->formals, m->formal_hash, m,
-+			       m->count);
-     }
- 
-   /* Discard any unnamed formal arguments.  */
-@@ -1403,9 +1253,9 @@ macro_expand (size_t idx, sb *in, macro_entry *m, sb *out)
- }
- 
- /* Check for a macro.  If one is found, put the expansion into
--   *EXPAND.  Return TRUE if a macro is found, FALSE otherwise.  */
-+   *EXPAND.  Return 1 if a macro is found, 0 otherwise.  */
- 
--bool
-+int
- check_macro (const char *line, sb *expand,
- 	     const char **error, macro_entry **info)
- {
-@@ -1414,12 +1264,9 @@ check_macro (const char *line, sb *expand,
-   macro_entry *macro;
-   sb line_sb;
- 
--  if (! macros_defined)
--    return false;
--
-   if (! is_name_beginner (*line)
-       && (! flag_mri || *line != '.'))
--    return false;
-+    return 0;
- 
-   s = line + 1;
-   while (is_part_of_name (*s))
-@@ -1431,17 +1278,11 @@ check_macro (const char *line, sb *expand,
-   for (cls = copy; *cls != '\0'; cls ++)
-     *cls = TOLOWER (*cls);
- 
--  int i;
--  for (i = macro_nesting_depth; i >= 0; i--)
--    {
--      macro = str_hash_find (macro_hash[i], copy);
--      if (macro != NULL)
--	break;
--    }
-+  macro = str_hash_find (macro_hash, copy);
-   free (copy);
- 
-   if (macro == NULL)
--    return false;
-+    return 0;
- 
-   /* Wrap the line up in an sb.  */
-   sb_new (&line_sb);
-@@ -1457,7 +1298,7 @@ check_macro (const char *line, sb *expand,
-   if (info)
-     *info = macro;
- 
--  return true;
-+  return 1;
- }
- 
- /* Delete a macro.  */
-@@ -1475,20 +1316,11 @@ delete_macro (const char *name)
-     copy[i] = TOLOWER (name[i]);
-   copy[i] = '\0';
- 
--  int j;
--  for (j = macro_nesting_depth; j >= 0; j--)
--    {
--      macro = str_hash_find (macro_hash [j], copy);
--      if (macro != NULL)
--	{
--	  str_hash_delete (macro_hash[j], copy);
--	  break;
--	}
--    }
--
--  if (macro == NULL)
-+  macro = str_hash_find (macro_hash, copy);
-+  if (macro != NULL)
-+    str_hash_delete (macro_hash, copy);
-+  else
-     as_warn (_("Attempt to purge non-existing macro `%s'"), copy);
--
-   free (copy);
- }
- 
-@@ -1590,25 +1422,3 @@ expand_irp (int irpc, size_t idx, sb *in, sb *out, size_t (*get_line) (sb *))
- 
-   return err;
- }
--
--void
--increment_macro_nesting_depth (void)
--{
-- if (macro_nesting_depth >= (MAX_MACRO_DEPTH - 1))
--    as_fatal (_("macros nested too deeply"));
--  else
--    ++macro_nesting_depth;
--}
--
--void
--decrement_macro_nesting_depth (void)
--{
--  if (macro_nesting_depth == 0)
--    as_fatal (_("too much macro un-nesting"));
--  else
--    {
--      /* FIXME: Potential memory leak here.  */
--      htab_empty (macro_hash [macro_nesting_depth]);
--      --macro_nesting_depth;
--    }
--}
-diff --git a/gas/macro.h b/gas/macro.h
-index 55b28b2f82a..3ebcfe8c8fd 100644
---- a/gas/macro.h
-+++ b/gas/macro.h
-@@ -64,28 +64,31 @@ typedef struct macro_struct
-   int             formal_count;		/* Number of formal args.  */
-   formal_entry *  formals;		/* List of formal_structs.  */
-   htab_t          formal_hash;		/* Hash table of formals.  */
--  struct macro_struct * parent;         /* Parent of nested macros.  */
-   const char *    name;			/* Macro name.  */
-   const char *    file;			/* File the macro was defined in.  */
-   unsigned int    line;			/* Line number of definition.  */
-   unsigned int    count;                /* Invocation count.  */
- } macro_entry;
- 
--/* The macro/text block nesting level.  */
-+/* Whether any macros have been defined.  */
-+
-+extern int macro_defined;
-+
-+/* The macro nesting level.  */
- 
- extern int macro_nest;
- 
-+/* The macro hash table.  */
-+
-+extern htab_t macro_hash;
-+
- extern int buffer_and_nest (const char *, const char *, sb *,
- 			    size_t (*) (sb *));
- extern void macro_init (void);
- extern void macro_end (void);
- extern macro_entry *define_macro (sb *, sb *, size_t (*) (sb *));
--extern bool check_macro (const char *, sb *, const char **, macro_entry **);
-+extern int check_macro (const char *, sb *, const char **, macro_entry **);
- extern void delete_macro (const char *);
- extern const char *expand_irp (int, size_t, sb *, sb *, size_t (*) (sb *));
--extern void increment_macro_nesting_depth (void);
--extern void decrement_macro_nesting_depth (void);
--extern void macro_record_invocation (macro_entry *);
--extern bool add_macro (macro_entry *, bool);
- 
- #endif
-diff --git a/gas/read.c b/gas/read.c
-index 5be2686822d..6d0d4b5e31a 100644
---- a/gas/read.c
-+++ b/gas/read.c
-@@ -656,8 +656,7 @@ poend (void)
-     }
- 
- /* Helper function of read_a_source_file, which tries to expand a macro.  */
--
--static bool
-+static int
- try_macro (char term, const char *line)
- {
-   sb out;
-@@ -674,14 +673,12 @@ try_macro (char term, const char *line)
-       sb_kill (&out);
-       buffer_limit =
- 	input_scrub_next_buffer (&input_line_pointer);
--
--      macro_record_invocation (macro);
- #ifdef md_macro_info
-       md_macro_info (macro);
- #endif
--      return true;
-+      return 1;
-     }
--  return false;
-+  return 0;
- }
- 
- #ifdef HANDLE_BUNDLE
-@@ -1273,7 +1270,7 @@ read_a_source_file (const char *name)
- 			  s_ignore (0);
- 			  nul_char = next_char = *--input_line_pointer;
- 			  *input_line_pointer = '\0';
--			  if (! try_macro (next_char, s))
-+			  if (! macro_defined || ! try_macro (next_char, s))
- 			    {
- 			      *end = '\0';
- 			      as_bad (_("unknown pseudo-op: `%s'"), s);
-@@ -1310,7 +1307,7 @@ read_a_source_file (const char *name)
- 
- 		      generate_lineno_debug ();
- 
--		      if (try_macro (next_char, s))
-+		      if (macro_defined && try_macro (next_char, s))
- 			continue;
- 
- 		      if (mri_pending_align)
-@@ -2820,7 +2817,7 @@ s_macro (int ignore ATTRIBUTE_UNUSED)
- 	  as_warn_where (macro->file, macro->line,
- 			 _("attempt to redefine pseudo-op `%s' ignored"),
- 			 macro->name);
--	  delete_macro (macro->name);
-+	  str_hash_delete (macro_hash, macro->name);
- 	}
-     }
- 
-diff --git a/gas/testsuite/gas/macros/macros.exp b/gas/testsuite/gas/macros/macros.exp
-index de3df4d803d..278cf405225 100644
---- a/gas/testsuite/gas/macros/macros.exp
-+++ b/gas/testsuite/gas/macros/macros.exp
-@@ -112,4 +112,3 @@ run_list_test count
- run_list_test irp-count
- run_list_test irpc-quote
- run_list_test rept-count
--run_dump_test nesting
-diff --git a/gas/testsuite/gas/macros/nesting.d b/gas/testsuite/gas/macros/nesting.d
-deleted file mode 100644
-index 2f44aedb2dc..00000000000
---- a/gas/testsuite/gas/macros/nesting.d
-+++ /dev/null
-@@ -1,28 +0,0 @@
--#nm: -j 
--#name: Nested macros (PR 32391)
--# Sone targets do not support macros used like this.
--#skip: tic*-*-* mmix-*
--
--#...
--_m7_
--_m8_
--after_at_0
--after_at_3
--after_plus_0
--after_plus_1
--before_at_0
--before_at_3
--before_plus_0
--before_plus_1
--bert
--harryfred
--i3_bar
--inside_at_1
--inside_at_2
--inside_at_4
--inside_at_5
--inside_plus_0
--inside_plus_1
--jim
--o3_foo
--other_inner_6
-diff --git a/gas/testsuite/gas/macros/nesting.s b/gas/testsuite/gas/macros/nesting.s
-deleted file mode 100644
-index 438d5af8d00..00000000000
---- a/gas/testsuite/gas/macros/nesting.s
-+++ /dev/null
-@@ -1,104 +0,0 @@
--
--	.text
--/* PR 32391: Automatic counters inside macros should increment when nested
--	macros finish execution.  */
--.macro o1
--.global before_at_\@
--before_at_\@:
--.global before_plus_\+
--before_plus_\+:
--
--	.macro i1
--.global inside_at_\@
--inside_at_\@:
--.global inside_plus_\+
--inside_plus_\+:
--	.endm
--
--	i1
--	i1
--
--.global after_at_\@
--after_at_\@:
--.global after_plus_\+
--after_plus_\+:
--
--.endm
--
--/* Invoking o1 should produce these symbols in this order:
--
--	before_at_0
--	before_plus_0
--	inside_at_1
--	inside_plus_0
--	inside_at_2
--	inside_plus_1
--	after_at_0
--	after_plus_0  */
--o1
--	
--/* A second invocation of o1 should not produce any errors about
--	symbols or macros being redefined.  */
--o1
--	
--/* This definition should not collide with the definition inside o1.  */
--.macro i1
--.global other_inner_\@
--other_inner_\@:
--.endm 
--
--/* And invoking it should invoke the second defintion of i1, not the first.  */	
--i1
--		
--.macro o2
--.global _m\@_
--_m\@_:
--.macro i2
--.global _m\@_
--_m\@_:
--.endm
--i2
--.endm
--
--/* This should not generate conflicting symbols because the assembler
--   inserts the contents of o2 into the input buffer as pure text (ie
--   without evaluating i2).  The first use of \@ is evaluated at this
--   time, creating _m4_.  But the second use is not evaluated because
--   it is inside a .macro definition.
--	
--   This finishes the evaluation of o2, so the \@ counter is incremented.
--	
--   Next the input buffer is re-evaluated and the i2 macro definition
--   and invocation are encounterd.  The text from i2 are inserted into
--   the input buffer and at this point the second use of \@ is evaluated
--   resulting in the creation of a symbol called _m5_.  */
--o2
--
--/* Macro arguments should be independent of nesting.  */
--.macro O3 arg
--.global o3_\arg
--o3_\arg:
--
--	.macro I3 arg
--.global i3_\arg
--i3_\arg:
--       .endm
--
--	i3 bar		/* Macro names are case insensitive.  */
--.endm
--
--o3 foo	/* Should produce two labels: o3_foo and i3_bar.  */
--
--/* Nested macros can access the arguments of their parents.
--   In addition their arguments can be substituted into the arguments
--   that are substited from their parents:  */
--.macro OUTER arg1, arg2, arg3:vararg
--     .macro INNER arg4 arg2
--        .dc.a \arg2
--	.dc.a \arg3
--     .endm
--     INNER \arg1 bert
--	.dc.a \arg2
--.endm
--
--OUTER fred, jim, harry\arg4 /* This produces references to "jim", "bert" and "harryfred".  */
--- 
-2.47.1
-


^ permalink raw reply related	[flat|nested] 39+ messages in thread

* [gentoo-commits] proj/toolchain/binutils-patches:master commit in: 9999/
@ 2025-01-13  6:11 Sam James
  0 siblings, 0 replies; 39+ messages in thread
From: Sam James @ 2025-01-13  6:11 UTC (permalink / raw
  To: gentoo-commits

commit:     f46bcb376cd5e2a21d6fb9cbf98bcf02c666927c
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Mon Jan 13 06:10:39 2025 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Mon Jan 13 06:11:29 2025 +0000
URL:        https://gitweb.gentoo.org/proj/toolchain/binutils-patches.git/commit/?id=f46bcb37

9999: add H.J.'s LTO patches

This is needed for -ffat-lto-objects to work well. We are hoping
this will land in 2.44. Add it in binutils-patches for now to give it
some early testing for live.

Link: https://inbox.sourceware.org/binutils/20250112220244.597636-1-hjl.tools <AT> gmail.com/
Signed-off-by: Sam James <sam <AT> gentoo.org>

 ...-LTO-and-none-LTO-output-support-for-ld-r.patch | 2928 ++++++++++++++++++++
 ...ment-mixing-LTO-and-non-LTO-objects-for-r.patch |   42 +
 ...008-h8300-Handle-.gnu_object_only-section.patch |   37 +
 3 files changed, 3007 insertions(+)

diff --git a/9999/0006-ld-Add-LTO-and-none-LTO-output-support-for-ld-r.patch b/9999/0006-ld-Add-LTO-and-none-LTO-output-support-for-ld-r.patch
new file mode 100644
index 0000000..b26d48f
--- /dev/null
+++ b/9999/0006-ld-Add-LTO-and-none-LTO-output-support-for-ld-r.patch
@@ -0,0 +1,2928 @@
+From 9f57274faacf1dbb6c2b56d29de150b5e79ecb3d Mon Sep 17 00:00:00 2001
+Message-ID: <9f57274faacf1dbb6c2b56d29de150b5e79ecb3d.1736748624.git.sam@gentoo.org>
+From: "H.J. Lu" <hjl.tools@gmail.com>
+Date: Mon, 4 Nov 2013 09:17:45 -0800
+Subject: [PATCH 6/8] ld: Add LTO and none-LTO output support for ld -r
+
+Link with mixed IR/non-IR objects
+
+* 2 kinds of object files
+  o non-IR object file has
+    * non-IR sections
+  o IR object file has
+    * IR sections
+    * non-IR sections
+    * The output of "ld -r" with mixed IR/non-IR objects should work with:
+        o Compilers/linkers with IR support.
+	o Compilers/linkers without IR support.
+* Add the mixed object file which has
+  o IR sections
+  o non-IR sections:
+    * Object codes from IR sections.
+    * Object codes from non-IR object files.
+  o Object-only section:
+    * With section name ".gnu_object_only" and SHT_GNU_OBJECT_ONLY type
+    on ELF:
+    https://gitlab.com/x86-psABIs/Linux-ABI
+    #define SHT_GNU_OBJECT_ONLY 0x6ffffff8	/* Object only */
+    * Contain non-IR object file.
+    * Input is discarded after link.
+* Linker action:
+  o Classify each input object file:
+    * If there is a ".gnu_object_only" section, it is a mixed object file.
+    * If there is a IR section, it is an IR object file.
+    * Otherwise, it is a non-IR object file.
+  o Relocatable non-IR link:
+    * Prepare for an object-only output.
+    * Prepare for a regular output.
+    * For each mixed object file:
+      * Add IR and non-IR sections to the regular output.
+      * For object-only section:
+	* Extract object only file.
+	* Add it to the object-only output.
+	* Discard object-only section.
+    * For each IR object file:
+      * Add IR and non-IR sections to the regular output.
+    * For each non-IR object file:
+      * Add non-IR sections to the regular output.
+      * Add non-IR sections to the object-only output.
+    * Final output:
+      * If there are IR objects, non-IR objects and the object-only
+      output isn't empty:
+	* Put the object-only output into the object-only section.
+	* Add the object-only section to the regular output.
+	* Remove the object-only output.
+  o Normal link and relocatable IR link:
+    * Prepare for output.
+    * IR link:
+      * For each mixed object file:
+	* Compile and add IR sections to the output.
+	* Discard non-IR sections.
+	* Object-only section:
+	  * Extract object only file.
+	  * Add it to the output.
+	  * Discard object-only section.
+      * For each IR object file:
+        * Compile and add IR sections to the output.
+	* Discard non-IR sections.
+      * For each non-IR object file:
+	* Add non-IR sections to the output.
+    * Non-IR link:
+      * For each mixed object file:
+	* Add non-IR sections to the output.
+	* Discard IR sections and object-only section.
+      * For each IR object file:
+	* Add non-IR sections to the output.
+	* Discard IR sections.
+      * For each non-IR object file:
+	* Add non-IR sections to the output.
+
+This is useful for Linux kernel build with LTO.
+
+bfd/
+
+	PR ld/12291
+	PR ld/12430
+	PR ld/13298
+	* bfd.c (bfd_lto_object_type): Add lto_mixed_object.
+	(bfd): Add object_only_section.
+	(bfd_group_signature): New.
+	* elf.c (special_sections_g): Add .gnu_object_only.
+	* format.c: Include "plugin-api.h" and "plugin.h" if
+	BFD_SUPPORTS_PLUGINS is defined.
+	(bfd_set_lto_type): Set type to lto_mixed_object for
+	GNU_OBJECT_ONLY_SECTION_NAME section.
+	(bfd_check_format_matches): Don't check the plugin target twice
+	if the plugin target is explicitly specified.
+	* opncls.c (bfd_extract_object_only_section): New.
+	* plugin.c (bfd_plugin_fake_text_section): New.
+	(bfd_plugin_fake_data_section): Likewise.
+	(bfd_plugin_fake_bss_section): Likewise.
+	(bfd_plugin_fake_common_section): Likewise.
+	(bfd_plugin_get_symbols_in_object_only): Likewise.
+	* plugin.c (add_symbols): Call
+	bfd_plugin_get_symbols_in_object_only and count
+	plugin_data->object_only_nsyms.
+	(bfd_plugin_get_symtab_upper_bound): Count
+	plugin_data->object_only_nsyms.
+	bfd_plugin_get_symbols_in_object_only and add symbols from
+	object only section.
+	(bfd_plugin_canonicalize_symtab): Remove fake_section,
+	fake_data_section, fake_bss_section and fake_common_section.
+	Set udata.p to NULL.  Use bfd_plugin_fake_text_section,
+	bfd_plugin_fake_data_section, bfd_plugin_fake_bss_section and
+	bfd_plugin_fake_common_section.
+	Set udata.p to NULL.
+	* plugin.h (plugin_data_struct): Add object_only_nsyms and
+	object_only_syms.
+	* section.c (GNU_OBJECT_ONLY_SECTION_NAME): New.
+	* bfd-in2.h: Regenerated.
+
+binutils/
+
+	PR ld/12291
+	PR ld/12430
+	PR ld/13298
+	* objcopy.c (group_signature): Removed.
+	(is_strip_section): Replace group_signature with
+	bfd_group_signature.
+	(setup_section): Likewise.
+	* readelf.c (get_os_specific_section_type_name): Handle
+	SHT_GNU_OBJECT_ONLY.
+
+gas/
+
+	PR ld/12291
+	PR ld/12430
+	PR ld/13298
+	* testsuite/gas/elf/section9.s: Add the .gnu_object_only test.
+	* testsuite/gas/elf/section9.d: Updated.
+
+include/
+
+	PR ld/12291
+	PR ld/12430
+	PR ld/13298
+	* elf/common.h (SHT_GNU_OBJECT_ONLY): New.
+
+ld/
+
+	PR ld/12291
+	PR ld/12430
+	PR ld/13298
+	* ld.h (ld_config_type): Add emit_gnu_object_only and
+	emitting_gnu_object_only.
+	* ldelf.c (orphan_init_done): Make it file scope.
+	(ldelf_place_orphan): Rename hold to orig_hold.  Initialize hold
+	from orig_hold at run-time.
+	(ldelf_finish): New.
+	* ldelf.h (ldelf_finish): New.
+	* ldexp.c (ldexp_init): Take a bfd_boolean argument to supprt
+	object-only output.
+	(ldexp_finish): Likewise.
+	* ldexp.h (ldexp_init): Take a bfd_boolean argument.
+	(ldexp_finish): Likewise.
+	* ldfile.c (ldfile_try_open_bfd): Call
+	cmdline_check_object_only_section.
+	* ldlang.c: Include "ldwrite.h" and elf-bfd.h.
+	* ldlang.c (cmdline_object_only_file_list): New.
+	(cmdline_object_only_archive_list): Likewise.
+	(cmdline_temp_object_only_list): Likewise.
+	(cmdline_lists_init): Likewise.
+	(cmdline_list_new): Likewise.
+	(cmdline_list_append): Likewise.
+	(print_cmdline_list): Likewise.
+	(cmdline_on_object_only_archive_list_p): Likewise.
+	(cmdline_object_only_list_append): Likewise.
+	(cmdline_get_object_only_input_files): Likewise.
+	(cmdline_arg): Likewise.
+	(setup_section): Likewise.
+	(copy_section): Likewise.
+	(cmdline_fopen_temp): Likewise.
+	(cmdline_add_object_only_section): Likewise.
+	(cmdline_emit_object_only_section): Likewise.
+	(cmdline_extract_object_only_section): Likewise.
+	(cmdline_check_object_only_section): Likewise.
+	(cmdline_remove_object_only_files): Likewise.
+	(lang_init): Take a bfd_boolean argument to supprt object-only
+	output.  Call cmdline_lists_init.
+	(load_symbols): Call cmdline_on_object_only_archive_list_p
+	to check if an archive member should be loaded.
+	(lang_process): Handle object-only link.
+	* ldlang.h (lang_init): Take a bfd_boolean argument.
+	(cmdline_enum_type): New.
+	(cmdline_header_type): Likewise.
+	(cmdline_file_type): Likewise.
+	(cmdline_bfd_type): Likewise.
+	(cmdline_union_type): Likewise.
+	(cmdline_list_type): Likewise.
+	(cmdline_emit_object_only_section): Likewise.
+	(cmdline_check_object_only_section): Likewise.
+	(cmdline_remove_object_only_files): Likewise.
+	* ldmain.c (main): Call xatexit with
+	cmdline_remove_object_only_files.  Pass FALSE to lang_init,
+	ldexp_init and ldexp_finish.  Use ld_parse_linker_script.
+	Set link_info.output_bfd to NULL after close.  Call
+	cmdline_emit_object_only_section if needed.
+	(add_archive_element): Call cmdline_check_object_only_section.
+	(ld_parse_linker_script): New.
+	* ldmain.h (ld_parse_linker_script): New.
+	* plugin.c (plugin_maybe_claim): Call
+	cmdline_check_object_only_section on claimed IR files.
+	* scripttempl/elf.sc: Also discard .gnu_object_only sections.
+	* scripttempl/elf64hppa.sc: Likewise.
+	* scripttempl/elfxtensa.sc: Likewise.
+	* scripttempl/mep.sc: Likewise.
+	* scripttempl/pe.sc: Likewise.
+	* scripttempl/pep.sc: Likewise.
+	* emultempl/aarch64elf.em (gld${EMULATION_NAME}_finish): Replace
+	finish_default with ldelf_finish.
+	* emultempl/alphaelf.em (alpha_finish): Likewise.
+	* emultempl/avrelf.em (avr_finish): Likewise.
+	* emultempl/elf.em (ld_${EMULATION_NAME}_emulation): Likewise.
+	* emultempl/ppc32elf.em (ppc_finish): Likewise.
+	* emultempl/ppc64elf.em (gld${EMULATION_NAME}_finish): Likewise.
+	* emultempl/spuelf.em (gld${EMULATION_NAME}_finish): Likewise.
+	* testsuite/ld-plugin/lto-10.out: New file.
+	* testsuite/ld-plugin/lto-10a.c: Likewise.
+	* testsuite/ld-plugin/lto-10b.c: Likewise.
+	* testsuite/ld-plugin/lto-10r.d: Likewise.
+	* testsuite/ld-plugin/lto-4.out: Likewise.
+	* testsuite/ld-plugin/lto-4a.c: Likewise.
+	* testsuite/ld-plugin/lto-4b.c: Likewise.
+	* testsuite/ld-plugin/lto-4c.c: Likewise.
+	* testsuite/ld-plugin/lto-4r-a.d: Likewise.
+	* testsuite/ld-plugin/lto-4r-b.d: Likewise.
+	* testsuite/ld-plugin/lto-4r-c.d: Likewise.
+	* testsuite/ld-plugin/lto-4r-d.d: Likewise.
+	* testsuite/ld-plugin/lto.exp (lto_link_tests): Prepare for
+	"LTO 4[acd]", "lto-4r-[abcd]" and "LTO 10" tests.
+	(lto_run_tests): Add "LTO 4[acd]" and "LTO 10" tests.
+	Build liblto-4.a.  Run "lto-4r-[abcd]" tests.
+	Run lto-10r and create tmpdir/lto-10.o.
+	Add test for nm on mixed LTO/non-LTO object.
+
+Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
+---
+ bfd/bfd-in2.h                     |   16 +-
+ bfd/bfd.c                         |   46 +-
+ bfd/elf.c                         |    1 +
+ bfd/format.c                      |   37 +-
+ bfd/opncls.c                      |   66 ++
+ bfd/plugin.c                      |  193 +++++-
+ bfd/plugin.h                      |    2 +
+ bfd/section.c                     |    3 +
+ binutils/objcopy.c                |   32 +-
+ binutils/readelf.c                |    1 +
+ gas/testsuite/gas/elf/section9.d  |    1 +
+ gas/testsuite/gas/elf/section9.s  |    2 +
+ include/elf/common.h              |    1 +
+ ld/emultempl/aarch64elf.em        |    2 +-
+ ld/emultempl/alphaelf.em          |    2 +-
+ ld/emultempl/armelf.em            |    2 +-
+ ld/emultempl/avrelf.em            |    2 +-
+ ld/emultempl/elf.em               |    1 +
+ ld/emultempl/ppc32elf.em          |    2 +-
+ ld/emultempl/ppc64elf.em          |    2 +-
+ ld/emultempl/spuelf.em            |    2 +-
+ ld/ld.h                           |    6 +
+ ld/ldelf.c                        |   26 +-
+ ld/ldelf.h                        |    1 +
+ ld/ldexp.c                        |   16 +-
+ ld/ldexp.h                        |    4 +-
+ ld/ldfile.c                       |    2 +
+ ld/ldlang.c                       | 1027 ++++++++++++++++++++++++++++-
+ ld/ldlang.h                       |   44 +-
+ ld/ldmain.c                       |   80 ++-
+ ld/ldmain.h                       |    2 +
+ ld/plugin.c                       |    3 +
+ ld/scripttempl/elf.sc             |    2 +-
+ ld/scripttempl/elf64hppa.sc       |    2 +-
+ ld/scripttempl/elfxtensa.sc       |    2 +-
+ ld/scripttempl/mep.sc             |    2 +-
+ ld/scripttempl/pe.sc              |    1 +
+ ld/scripttempl/pep.sc             |    1 +
+ ld/testsuite/ld-plugin/lto-10.out |    1 +
+ ld/testsuite/ld-plugin/lto-10a.c  |    6 +
+ ld/testsuite/ld-plugin/lto-10b.c  |    7 +
+ ld/testsuite/ld-plugin/lto-10r.d  |    9 +
+ ld/testsuite/ld-plugin/lto-4.out  |    2 +
+ ld/testsuite/ld-plugin/lto-4a.c   |    7 +
+ ld/testsuite/ld-plugin/lto-4b.c   |    9 +
+ ld/testsuite/ld-plugin/lto-4c.c   |    6 +
+ ld/testsuite/ld-plugin/lto-4r-a.d |    7 +
+ ld/testsuite/ld-plugin/lto-4r-b.d |    7 +
+ ld/testsuite/ld-plugin/lto-4r-c.d |    7 +
+ ld/testsuite/ld-plugin/lto-4r-d.d |    7 +
+ ld/testsuite/ld-plugin/lto.exp    |   66 ++
+ 51 files changed, 1653 insertions(+), 125 deletions(-)
+ create mode 100644 ld/testsuite/ld-plugin/lto-10.out
+ create mode 100644 ld/testsuite/ld-plugin/lto-10a.c
+ create mode 100644 ld/testsuite/ld-plugin/lto-10b.c
+ create mode 100644 ld/testsuite/ld-plugin/lto-10r.d
+ create mode 100644 ld/testsuite/ld-plugin/lto-4.out
+ create mode 100644 ld/testsuite/ld-plugin/lto-4a.c
+ create mode 100644 ld/testsuite/ld-plugin/lto-4b.c
+ create mode 100644 ld/testsuite/ld-plugin/lto-4c.c
+ create mode 100644 ld/testsuite/ld-plugin/lto-4r-a.d
+ create mode 100644 ld/testsuite/ld-plugin/lto-4r-b.d
+ create mode 100644 ld/testsuite/ld-plugin/lto-4r-c.d
+ create mode 100644 ld/testsuite/ld-plugin/lto-4r-d.d
+
+diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
+index 3a5a6dd8a5f..1b82b6bcc99 100644
+--- a/bfd/bfd-in2.h
++++ b/bfd/bfd-in2.h
+@@ -925,6 +925,9 @@ extern asection _bfd_std_section[4];
+ #define BFD_COM_SECTION_NAME "*COM*"
+ #define BFD_IND_SECTION_NAME "*IND*"
+ 
++/* GNU object-only section name.  */
++#define GNU_OBJECT_ONLY_SECTION_NAME ".gnu_object_only"
++
+ /* Pointer to the common section.  */
+ #define bfd_com_section_ptr (&_bfd_std_section[0])
+ /* Pointer to the undefined section.  */
+@@ -1962,7 +1965,8 @@ enum bfd_lto_object_type
+     lto_non_object,            /* Not an LTO object.  */
+     lto_non_ir_object,         /* An object without LTO IR.  */
+     lto_slim_ir_object,        /* A slim LTO IR object.  */
+-    lto_fat_ir_object          /* A fat LTO IR object.  */
++    lto_fat_ir_object,         /* A fat LTO IR object.  */
++    lto_mixed_object           /* A mixed LTO IR object.  */
+   };
+ 
+ struct bfd_mmapped_entry
+@@ -2185,7 +2189,7 @@ struct bfd
+   unsigned int read_only : 1;
+ 
+   /* LTO object type.  */
+-  ENUM_BITFIELD (bfd_lto_object_type) lto_type : 2;
++  ENUM_BITFIELD (bfd_lto_object_type) lto_type : 3;
+ 
+   /* Set if this BFD is currently being processed by
+      bfd_check_format_matches.  This is checked by the cache to
+@@ -2217,6 +2221,9 @@ struct bfd
+   /* The last section on the section list.  */
+   struct bfd_section *section_last;
+ 
++  /* The object-only section on the section list.  */
++  struct bfd_section *object_only_section;
++
+   /* The number of sections.  */
+   unsigned int section_count;
+ 
+@@ -2790,6 +2797,8 @@ bfd_vma bfd_emul_get_commonpagesize (const char *);
+ 
+ char *bfd_demangle (bfd *, const char *, int);
+ 
++asymbol *bfd_group_signature (asection *group, asymbol **isympp);
++
+ /* Extracted from bfdio.c.  */
+ bfd_size_type bfd_read (void *, bfd_size_type, bfd *)
+ ATTRIBUTE_WARN_UNUSED_RESULT;
+@@ -3073,6 +3082,9 @@ char *bfd_follow_build_id_debuglink (bfd *abfd, const char *dir);
+ 
+ const char *bfd_set_filename (bfd *abfd, const char *filename);
+ 
++const char *bfd_extract_object_only_section
++   (bfd *abfd);
++
+ /* Extracted from reloc.c.  */
+ typedef enum bfd_reloc_status
+ {
+diff --git a/bfd/bfd.c b/bfd/bfd.c
+index 194f24179fd..a8d1314b83f 100644
+--- a/bfd/bfd.c
++++ b/bfd/bfd.c
+@@ -80,7 +80,8 @@ EXTERNAL
+ .    lto_non_object,		{* Not an LTO object.  *}
+ .    lto_non_ir_object,		{* An object without LTO IR.  *}
+ .    lto_slim_ir_object,	{* A slim LTO IR object.  *}
+-.    lto_fat_ir_object		{* A fat LTO IR object.  *}
++.    lto_fat_ir_object,		{* A fat LTO IR object.  *}
++.    lto_mixed_object		{* A mixed LTO IR object.  *}
+ .  };
+ .
+ .struct bfd_mmapped_entry
+@@ -306,7 +307,7 @@ CODE_FRAGMENT
+ .  unsigned int read_only : 1;
+ .
+ .  {* LTO object type.  *}
+-.  ENUM_BITFIELD (bfd_lto_object_type) lto_type : 2;
++.  ENUM_BITFIELD (bfd_lto_object_type) lto_type : 3;
+ .
+ .  {* Set if this BFD is currently being processed by
+ .     bfd_check_format_matches.  This is checked by the cache to
+@@ -338,6 +339,9 @@ CODE_FRAGMENT
+ .  {* The last section on the section list.  *}
+ .  struct bfd_section *section_last;
+ .
++.  {* The object-only section on the section list.  *}
++.  struct bfd_section *object_only_section;
++.
+ .  {* The number of sections.  *}
+ .  unsigned int section_count;
+ .
+@@ -3034,3 +3038,41 @@ _bfd_get_link_info (bfd *abfd)
+ 
+   return elf_link_info (abfd);
+ }
++
++/*
++FUNCTION
++	bfd_group_signature
++
++SYNOPSIS
++	asymbol *bfd_group_signature (asection *group, asymbol **isympp);
++
++DESCRIPTION
++	Return a pointer to the symbol used as a signature for GROUP.
++*/
++
++asymbol *
++bfd_group_signature (asection *group, asymbol **isympp)
++{
++  bfd *abfd = group->owner;
++  Elf_Internal_Shdr *ghdr;
++
++  /* PR 20089: An earlier error may have prevented us from loading the
++     symbol table.  */
++  if (isympp == NULL)
++    return NULL;
++
++  if (bfd_get_flavour (abfd) != bfd_target_elf_flavour)
++    return NULL;
++
++  ghdr = &elf_section_data (group)->this_hdr;
++  if (ghdr->sh_link == elf_onesymtab (abfd))
++    {
++      const struct elf_backend_data *bed = get_elf_backend_data (abfd);
++      Elf_Internal_Shdr *symhdr = &elf_symtab_hdr (abfd);
++
++      if (ghdr->sh_info > 0
++	  && ghdr->sh_info < symhdr->sh_size / bed->s->sizeof_sym)
++	return isympp[ghdr->sh_info - 1];
++    }
++  return NULL;
++}
+diff --git a/bfd/elf.c b/bfd/elf.c
+index 218d58df8be..30bbdc662af 100644
+--- a/bfd/elf.c
++++ b/bfd/elf.c
+@@ -3014,6 +3014,7 @@ static const struct bfd_elf_special_section special_sections_g[] =
+   { STRING_COMMA_LEN (".gnu.linkonce.p"), -2, SHT_PROGBITS,    SHF_ALLOC + SHF_WRITE },
+   { STRING_COMMA_LEN (".gnu.lto_"),	  -1, SHT_PROGBITS,    SHF_EXCLUDE },
+   { STRING_COMMA_LEN (".got"),		   0, SHT_PROGBITS,    SHF_ALLOC + SHF_WRITE },
++  { STRING_COMMA_LEN (".gnu_object_only"), 0, SHT_GNU_OBJECT_ONLY, SHF_EXCLUDE },
+   { STRING_COMMA_LEN (".gnu.version"),	   0, SHT_GNU_versym,  0 },
+   { STRING_COMMA_LEN (".gnu.version_d"),   0, SHT_GNU_verdef,  0 },
+   { STRING_COMMA_LEN (".gnu.version_r"),   0, SHT_GNU_verneed, 0 },
+diff --git a/bfd/format.c b/bfd/format.c
+index 125815935f6..7769ad095f6 100644
+--- a/bfd/format.c
++++ b/bfd/format.c
+@@ -46,6 +46,10 @@ SUBSECTION
+ #include "sysdep.h"
+ #include "bfd.h"
+ #include "libbfd.h"
++#if BFD_SUPPORTS_PLUGINS
++#include "plugin-api.h"
++#include "plugin.h"
++#endif
+ 
+ /* IMPORT from targets.c.  */
+ extern const size_t _bfd_target_vector_entries;
+@@ -349,23 +353,32 @@ bfd_set_lto_type (bfd *abfd ATTRIBUTE_UNUSED)
+ #if BFD_SUPPORTS_PLUGINS
+   if (abfd->format == bfd_object
+       && abfd->lto_type == lto_non_object
+-      && (abfd->flags & (DYNAMIC | EXEC_P)) == 0)
++      && (abfd->flags
++	  & (DYNAMIC
++	     | (bfd_get_flavour (abfd) == bfd_target_elf_flavour
++		? EXEC_P : 0))) == 0)
+     {
+       asection *sec;
+       enum bfd_lto_object_type type = lto_non_ir_object;
+-      struct lto_section lsection;
++      struct lto_section lsection = { 0, 0, 0, 0 };
+       /* GCC uses .gnu.lto_.lto.<some_hash> as a LTO bytecode information
+ 	 section.  */
+       for (sec = abfd->sections; sec != NULL; sec = sec->next)
+-	if (startswith (sec->name, ".gnu.lto_.lto.")
+-	    && bfd_get_section_contents (abfd, sec, &lsection, 0,
+-					 sizeof (struct lto_section)))
++	if (strcmp (sec->name, GNU_OBJECT_ONLY_SECTION_NAME) == 0)
++	  {
++	    type = lto_mixed_object;
++	    abfd->object_only_section = sec;
++	    break;
++	  }
++	else if (lsection.major_version == 0
++		 && startswith (sec->name, ".gnu.lto_.lto.")
++		 && bfd_get_section_contents (abfd, sec, &lsection, 0,
++					      sizeof (struct lto_section)))
+ 	  {
+ 	    if (lsection.slim_object)
+ 	      type = lto_slim_ir_object;
+ 	    else
+ 	      type = lto_fat_ir_object;
+-	    break;
+ 	  }
+ 
+       abfd->lto_type = type;
+@@ -397,9 +410,6 @@ bool
+ bfd_check_format_matches (bfd *abfd, bfd_format format, char ***matching)
+ {
+   extern const bfd_target binary_vec;
+-#if BFD_SUPPORTS_PLUGINS
+-  extern const bfd_target plugin_vec;
+-#endif
+   const bfd_target * const *target;
+   const bfd_target **matching_vector = NULL;
+   const bfd_target *save_targ, *right_targ, *ar_right_targ, *match_targ;
+@@ -507,11 +517,18 @@ bfd_check_format_matches (bfd *abfd, bfd_format format, char ***matching)
+ 	 check the default target twice.  */
+       if (*target == &binary_vec
+ #if BFD_SUPPORTS_PLUGINS
+-	  || (match_count != 0 && *target == &plugin_vec)
++	  || (match_count != 0 && bfd_plugin_target_p (*target))
+ #endif
+ 	  || (!abfd->target_defaulted && *target == save_targ))
+ 	continue;
+ 
++#if BFD_SUPPORTS_PLUGINS
++      /* If the plugin target is explicitly specified when a BFD file
++	 is opened, don't check it twice.  */
++      if (bfd_plugin_specified_p () && bfd_plugin_target_p (*target))
++	continue;
++#endif
++
+       /* If we already tried a match, the bfd is modified and may
+ 	 have sections attached, which will confuse the next
+ 	 _bfd_check_format call.  */
+diff --git a/bfd/opncls.c b/bfd/opncls.c
+index 93adbf117f0..ca7dbf23aa6 100644
+--- a/bfd/opncls.c
++++ b/bfd/opncls.c
+@@ -2054,3 +2054,69 @@ bfd_set_filename (bfd *abfd, const char *filename)
+ 
+   return n;
+ }
++
++/*
++FUNCTION
++	bfd_extract_object_only_section
++
++SYNOPSIS
++	const char *bfd_extract_object_only_section
++	  (bfd *abfd);
++
++DESCRIPTION
++
++	Takes a @var{ABFD} and extract the .gnu_object_only section into
++	a temporary file.
++
++RETURNS
++	The name of the temporary file is returned if all is ok.
++	Otherwise <<NULL>> is returned and bfd_error is set.
++*/
++
++const char *
++bfd_extract_object_only_section (bfd *abfd)
++{
++  asection *sec = abfd->object_only_section;
++  const char *name;
++  FILE *file;
++  bfd_byte *memhunk = NULL;
++  size_t off, size;
++  bfd_error_type err;
++
++  /* Get a temporary object-only file.  */
++  name = make_temp_file (".obj-only.o");
++
++  /* Open the object-only file.  */
++  file = _bfd_real_fopen (name, FOPEN_WB);
++  if (!bfd_get_full_section_contents (abfd, sec, &memhunk))
++    {
++      err = bfd_get_error ();
++
++loser:
++      free (memhunk);
++      fclose (file);
++      unlink (name);
++      bfd_set_error (err);
++      return NULL;
++    }
++
++  off = 0;
++  size = sec->size;
++  while (off != size)
++    {
++      size_t written, nwrite = size - off;
++
++      written = fwrite (memhunk + off, 1, nwrite, file);
++      if (written < nwrite && ferror (file))
++	{
++	  err = bfd_error_system_call;
++	  goto loser;
++	}
++
++      off += written;
++    }
++
++  free (memhunk);
++  fclose (file);
++  return name;
++}
+diff --git a/bfd/plugin.c b/bfd/plugin.c
+index 67454adffb9..d57ae593e78 100644
+--- a/bfd/plugin.c
++++ b/bfd/plugin.c
+@@ -160,6 +160,158 @@ register_claim_file (ld_plugin_claim_file_handler handler)
+   return LDPS_OK;
+ }
+ 
++static asection bfd_plugin_fake_text_section
++  = BFD_FAKE_SECTION (bfd_plugin_fake_text_section, NULL, "plug", 0,
++		      SEC_ALLOC | SEC_LOAD | SEC_CODE | SEC_HAS_CONTENTS);
++static asection bfd_plugin_fake_data_section
++  = BFD_FAKE_SECTION (bfd_plugin_fake_data_section, NULL, "plug", 0,
++		      SEC_ALLOC | SEC_LOAD | SEC_DATA | SEC_HAS_CONTENTS);
++static asection bfd_plugin_fake_bss_section
++  = BFD_FAKE_SECTION (bfd_plugin_fake_bss_section, NULL, "plug", 0,
++		      SEC_ALLOC);
++static asection bfd_plugin_fake_common_section
++  = BFD_FAKE_SECTION (bfd_plugin_fake_common_section, NULL, NULL,
++		      0, SEC_IS_COMMON);
++
++/* Get symbols from object only section.  */
++
++static void
++bfd_plugin_get_symbols_in_object_only (bfd *abfd)
++{
++  struct plugin_data_struct *plugin_data = abfd->tdata.plugin_data;
++  const char *object_only_file;
++  bfd *nbfd;
++  long storage;
++  long object_only_nsyms, added_nsyms, i;
++  asymbol **object_only_syms, **added_syms;
++
++  plugin_data->object_only_syms = NULL;
++  plugin_data->object_only_nsyms = 0;
++
++  if (abfd->sections == NULL && abfd->my_archive == NULL)
++    {
++      nbfd = bfd_openr (abfd->filename, NULL);
++      if (nbfd == NULL)
++	{
++	  (*_bfd_error_handler)
++	    (_("%s: failed to open to extract object only section: %s"),
++	     abfd->filename, bfd_errmsg (bfd_get_error ()));
++	  return;
++	}
++      else if (!bfd_check_format (nbfd, bfd_object))
++	{
++	  /* There is no object only section if it isn't a bfd_object
++	     file.  */
++	  bfd_close (nbfd);
++	  return;
++	}
++    }
++  else
++    {
++      if (!bfd_check_format (abfd, bfd_object))
++	{
++	  (*_bfd_error_handler)
++	    (_("%pB: invalid file to extract object only section: %s"),
++	     abfd, bfd_errmsg (bfd_get_error ()));
++	  return;
++	}
++      nbfd = abfd;
++    }
++
++  if (nbfd->lto_type == lto_mixed_object
++      && (nbfd->flags & HAS_SYMS) != 0)
++    {
++      object_only_file = bfd_extract_object_only_section (nbfd);
++      if (object_only_file == NULL)
++	(*_bfd_error_handler)
++	  (_("%pB: failed to extract object only section: %s"),
++	   abfd, bfd_errmsg (bfd_get_error ()));
++    }
++  else
++    object_only_file = NULL;
++
++  /* Close the new bfd we just opened.  */
++  if (nbfd != abfd)
++    bfd_close (nbfd);
++
++  /* Return if there is no object only section or there is no
++     symbol in object only section.  */
++  if (!object_only_file)
++    return;
++
++  /* Open the file containing object only section.  */
++  nbfd = bfd_openr (object_only_file, NULL);
++  if (!bfd_check_format (nbfd, bfd_object))
++    {
++      (*_bfd_error_handler)
++	(_("%pB: failed to open object only section: %s"),
++	 abfd, bfd_errmsg (bfd_get_error ()));
++      goto quit;
++    }
++
++  storage = bfd_get_symtab_upper_bound (nbfd);
++  if (storage <= 0)
++    {
++      if (storage < 0)
++	(*_bfd_error_handler)
++	  (_("%pB: failed to get symbol table in object only section: %s"),
++	   abfd, bfd_errmsg (bfd_get_error ()));
++
++      goto quit;
++    }
++
++  object_only_syms = (asymbol **) bfd_malloc (storage);
++  object_only_nsyms = bfd_canonicalize_symtab (nbfd, object_only_syms);
++
++  /* FIXME: We waste some spaces if not all symbols are copied.  */
++  added_syms = (asymbol **) bfd_alloc (abfd, storage);
++  added_nsyms = 0;
++
++  /* Copy only global symbols from object only section.  */
++  for (i = 0; i < object_only_nsyms; i++)
++    {
++      asection *sec = object_only_syms[i]->section;
++      flagword flags = object_only_syms[i]->flags;
++      asymbol *s;
++
++      if (bfd_is_com_section (sec))
++	sec = &bfd_plugin_fake_common_section;
++      else if (bfd_is_und_section (sec))
++	;
++      else if ((flags & (BSF_GLOBAL | BSF_WEAK | BSF_GNU_UNIQUE)) != 0)
++	{
++	  if ((sec->flags & SEC_CODE) != 0)
++	    sec = &bfd_plugin_fake_text_section;
++	  else if ((sec->flags & SEC_LOAD) != 0)
++	    sec = &bfd_plugin_fake_data_section;
++	  else
++	    sec = &bfd_plugin_fake_bss_section;
++	}
++      else
++	continue;
++
++      s = bfd_alloc (abfd, sizeof (asymbol));
++      BFD_ASSERT (s);
++      added_syms[added_nsyms++] = s;
++
++      s->section = sec;
++      s->the_bfd = abfd;
++      s->name = xstrdup (object_only_syms[i]->name);
++      s->value = 0;
++      s->flags = flags;
++      s->udata.p = NULL;
++    }
++
++  plugin_data->object_only_syms = added_syms;
++  plugin_data->object_only_nsyms = added_nsyms;
++
++  free (object_only_syms);
++
++quit:
++  /* Close and remove the object only section file.  */
++  bfd_close (nbfd);
++  unlink (object_only_file);
++}
+ 
+ /* Register a claim-file handler, version 2. */
+ 
+@@ -185,10 +337,13 @@ add_symbols (void * handle,
+   plugin_data->nsyms = nsyms;
+   plugin_data->syms = syms;
+ 
+-  if (nsyms != 0)
++  abfd->tdata.plugin_data = plugin_data;
++
++  bfd_plugin_get_symbols_in_object_only (abfd);
++
++  if ((nsyms + plugin_data->object_only_nsyms) != 0)
+     abfd->flags |= HAS_SYMS;
+ 
+-  abfd->tdata.plugin_data = plugin_data;
+   return LDPS_OK;
+ }
+ 
+@@ -678,7 +833,8 @@ static long
+ bfd_plugin_get_symtab_upper_bound (bfd *abfd)
+ {
+   struct plugin_data_struct *plugin_data = abfd->tdata.plugin_data;
+-  long nsyms = plugin_data->nsyms;
++  /* Add symbols from object only section.  */
++  long nsyms = plugin_data->nsyms + plugin_data->object_only_nsyms;
+ 
+   BFD_ASSERT (nsyms >= 0);
+ 
+@@ -712,18 +868,7 @@ bfd_plugin_canonicalize_symtab (bfd *abfd,
+   struct plugin_data_struct *plugin_data = abfd->tdata.plugin_data;
+   long nsyms = plugin_data->nsyms;
+   const struct ld_plugin_symbol *syms = plugin_data->syms;
+-  static asection fake_text_section
+-    = BFD_FAKE_SECTION (fake_text_section, NULL, "plug", 0,
+-			SEC_ALLOC | SEC_LOAD | SEC_CODE | SEC_HAS_CONTENTS);
+-  static asection fake_data_section
+-    = BFD_FAKE_SECTION (fake_data_section, NULL, "plug", 0,
+-			SEC_ALLOC | SEC_LOAD | SEC_DATA | SEC_HAS_CONTENTS);
+-  static asection fake_bss_section
+-    = BFD_FAKE_SECTION (fake_bss_section, NULL, "plug", 0,
+-			SEC_ALLOC);
+-  static asection fake_common_section
+-    = BFD_FAKE_SECTION (fake_common_section, NULL, "plug", 0, SEC_IS_COMMON);
+-  int i;
++  int i, j;
+ 
+   for (i = 0; i < nsyms; i++)
+     {
+@@ -736,10 +881,11 @@ bfd_plugin_canonicalize_symtab (bfd *abfd,
+       s->name = syms[i].name;
+       s->value = 0;
+       s->flags = convert_flags (&syms[i]);
++      s->udata.p = NULL;
+       switch (syms[i].def)
+ 	{
+ 	case LDPK_COMMON:
+-	  s->section = &fake_common_section;
++	  s->section = &bfd_plugin_fake_common_section;
+ 	  break;
+ 	case LDPK_UNDEF:
+ 	case LDPK_WEAKUNDEF:
+@@ -755,25 +901,28 @@ bfd_plugin_canonicalize_symtab (bfd *abfd,
+ 	      case LDST_UNKNOWN:
+ 		/* What is the best fake section for LDST_UNKNOWN?  */
+ 	      case LDST_FUNCTION:
+-		s->section = &fake_text_section;
++		s->section = &bfd_plugin_fake_text_section;
+ 		break;
+ 	      case LDST_VARIABLE:
+ 		if (syms[i].section_kind == LDSSK_BSS)
+-		  s->section = &fake_bss_section;
++		  s->section = &bfd_plugin_fake_bss_section;
+ 		else
+-		  s->section = &fake_data_section;
++		  s->section = &bfd_plugin_fake_data_section;
+ 		break;
+ 	      }
+ 	  else
+-	    s->section = &fake_text_section;
++	    s->section = &bfd_plugin_fake_text_section;
+ 	  break;
+ 	default:
+ 	  BFD_ASSERT (0);
+ 	}
+-
+-      s->udata.p = (void *) &syms[i];
+     }
+ 
++  /* Copy symbols from object only section.  */
++  nsyms += plugin_data->object_only_nsyms;
++  for (j = 0; j < plugin_data->object_only_nsyms; j++, i++)
++    alocation[i] = plugin_data->object_only_syms[j];
++
+   return nsyms;
+ }
+ 
+diff --git a/bfd/plugin.h b/bfd/plugin.h
+index 510689c96ba..f61e6168e2b 100644
+--- a/bfd/plugin.h
++++ b/bfd/plugin.h
+@@ -34,6 +34,8 @@ typedef struct plugin_data_struct
+ {
+   int nsyms;
+   const struct ld_plugin_symbol *syms;
++  int object_only_nsyms;
++  asymbol **object_only_syms;
+ }
+ plugin_data_struct;
+ 
+diff --git a/bfd/section.c b/bfd/section.c
+index 8456c73e8d0..e7674c9dc1a 100644
+--- a/bfd/section.c
++++ b/bfd/section.c
+@@ -661,6 +661,9 @@ EXTERNAL
+ .#define BFD_COM_SECTION_NAME "*COM*"
+ .#define BFD_IND_SECTION_NAME "*IND*"
+ .
++.{* GNU object-only section name.  *}
++.#define GNU_OBJECT_ONLY_SECTION_NAME ".gnu_object_only"
++.
+ .{* Pointer to the common section.  *}
+ .#define bfd_com_section_ptr (&_bfd_std_section[0])
+ .{* Pointer to the undefined section.  *}
+diff --git a/binutils/objcopy.c b/binutils/objcopy.c
+index f64417697cb..e2e6bd7ee83 100644
+--- a/binutils/objcopy.c
++++ b/binutils/objcopy.c
+@@ -1266,34 +1266,6 @@ is_specified_symbol (const char *name, htab_t htab)
+   return htab_find (htab, name) != NULL;
+ }
+ 
+-/* Return a pointer to the symbol used as a signature for GROUP.  */
+-
+-static asymbol *
+-group_signature (asection *group)
+-{
+-  bfd *abfd = group->owner;
+-  Elf_Internal_Shdr *ghdr;
+-
+-  /* PR 20089: An earlier error may have prevented us from loading the symbol table.  */
+-  if (isympp == NULL)
+-    return NULL;
+-
+-  if (bfd_get_flavour (abfd) != bfd_target_elf_flavour)
+-    return NULL;
+-
+-  ghdr = &elf_section_data (group)->this_hdr;
+-  if (ghdr->sh_link == elf_onesymtab (abfd))
+-    {
+-      const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+-      Elf_Internal_Shdr *symhdr = &elf_symtab_hdr (abfd);
+-
+-      if (ghdr->sh_info > 0
+-	  && ghdr->sh_info < symhdr->sh_size / bed->s->sizeof_sym)
+-	return isympp[ghdr->sh_info - 1];
+-    }
+-  return NULL;
+-}
+-
+ /* Return TRUE if the section is a DWO section.  */
+ 
+ static bool
+@@ -1438,7 +1410,7 @@ is_strip_section (bfd *abfd ATTRIBUTE_UNUSED, asection *sec)
+       const char *gname;
+       asection *elt, *first;
+ 
+-      gsym = group_signature (sec);
++      gsym = bfd_group_signature (sec, isympp);
+       /* Strip groups without a valid signature.  */
+       if (gsym == NULL)
+ 	return true;
+@@ -4398,7 +4370,7 @@ setup_section (bfd *ibfd, sec_ptr isection, bfd *obfd)
+ 
+   if ((isection->flags & SEC_GROUP) != 0)
+     {
+-      asymbol *gsym = group_signature (isection);
++      asymbol *gsym = bfd_group_signature (isection, isympp);
+ 
+       if (gsym != NULL)
+ 	{
+diff --git a/binutils/readelf.c b/binutils/readelf.c
+index 4f8f879cf91..949395483bb 100644
+--- a/binutils/readelf.c
++++ b/binutils/readelf.c
+@@ -5941,6 +5941,7 @@ get_os_specific_section_type_name (Filedata * filedata, unsigned int sh_type)
+     case SHT_GNU_ATTRIBUTES:          return "GNU_ATTRIBUTES";
+     case SHT_GNU_HASH:                return "GNU_HASH";
+     case SHT_GNU_LIBLIST:             return "GNU_LIBLIST";
++    case SHT_GNU_OBJECT_ONLY:	      return "GNU_OBJECT_ONLY";
+ 
+     case SHT_SUNW_move:               return "SUNW_MOVE";
+     case SHT_SUNW_COMDAT:             return "SUNW_COMDAT";
+diff --git a/gas/testsuite/gas/elf/section9.d b/gas/testsuite/gas/elf/section9.d
+index 63152fe4b4d..d7e97c014ac 100644
+--- a/gas/testsuite/gas/elf/section9.d
++++ b/gas/testsuite/gas/elf/section9.d
+@@ -4,4 +4,5 @@
+ #...
+ [ 	]*\[.*\][ 	]+\.gnu\.lto_main[ 	]+PROGBITS.*[ 	]+E[   ]+.*
+ [ 	]*\[.*\][ 	]+\.gnu\.lto_\.pureconst[ 	]+PROGBITS.*[ 	]+E[   ]+.*
++[ 	]*\[.*\][ 	]+\.gnu_object_only[ 	]+GNU_OBJECT_ONLY.*[ 	]+E[   ]+.*
+ #pass
+diff --git a/gas/testsuite/gas/elf/section9.s b/gas/testsuite/gas/elf/section9.s
+index 6b8b1074ca3..abcdea10aad 100644
+--- a/gas/testsuite/gas/elf/section9.s
++++ b/gas/testsuite/gas/elf/section9.s
+@@ -2,3 +2,5 @@
+ 	.byte 0,0,0,0
+ 	.section .gnu.lto_.pureconst,"",%progbits
+ 	.byte 0,0,0,0
++	.section .gnu_object_only
++	.byte 0,0,0,0
+diff --git a/include/elf/common.h b/include/elf/common.h
+index 6077db7a8b7..b0b54d87ab4 100644
+--- a/include/elf/common.h
++++ b/include/elf/common.h
+@@ -572,6 +572,7 @@
+ #define SHT_GNU_HASH	             0x6ffffff6	/* GNU style symbol hash table */
+ #define SHT_GNU_LIBLIST	             0x6ffffff7	/* List of prelink dependencies */
+ #define SHT_CHECKSUM	             0x6ffffff8	/* Checksum for DSO content.  */
++#define SHT_GNU_OBJECT_ONLY	     0x6ffffff9	/* Object only */
+ 
+ #define SHT_SUNW_move	             0x6ffffffa
+ #define SHT_SUNW_COMDAT              0x6ffffffb
+diff --git a/ld/emultempl/aarch64elf.em b/ld/emultempl/aarch64elf.em
+index faa0d3ecd79..ae79961ada1 100644
+--- a/ld/emultempl/aarch64elf.em
++++ b/ld/emultempl/aarch64elf.em
+@@ -309,7 +309,7 @@ gld${EMULATION_NAME}_finish (void)
+ 	}
+     }
+ 
+-  finish_default ();
++  ldelf_finish ();
+ }
+ 
+ /* This is a convenient point to tell BFD about target specific flags.
+diff --git a/ld/emultempl/alphaelf.em b/ld/emultempl/alphaelf.em
+index 6ecacb76a10..5ae2587a653 100644
+--- a/ld/emultempl/alphaelf.em
++++ b/ld/emultempl/alphaelf.em
+@@ -104,7 +104,7 @@ alpha_finish (void)
+   if (limit_32bit)
+     elf_elfheader (link_info.output_bfd)->e_flags |= EF_ALPHA_32BIT;
+ 
+-  finish_default ();
++  ldelf_finish ();
+ }
+ EOF
+ 
+diff --git a/ld/emultempl/armelf.em b/ld/emultempl/armelf.em
+index dc2cd9f1139..02a97e7c1ff 100644
+--- a/ld/emultempl/armelf.em
++++ b/ld/emultempl/armelf.em
+@@ -456,7 +456,7 @@ gld${EMULATION_NAME}_finish (void)
+ 	}
+     }
+ 
+-  finish_default ();
++  ldelf_finish ();
+ 
+   if (params.thumb_entry_symbol)
+     {
+diff --git a/ld/emultempl/avrelf.em b/ld/emultempl/avrelf.em
+index 7696a9050d9..0945702bfb6 100644
+--- a/ld/emultempl/avrelf.em
++++ b/ld/emultempl/avrelf.em
+@@ -227,7 +227,7 @@ avr_finish (void)
+ 	elf_elfheader (abfd)->e_flags &= ~EF_AVR_LINKRELAX_PREPARED;
+     }
+ 
+-  finish_default ();
++  ldelf_finish ();
+ }
+ EOF
+ 
+diff --git a/ld/emultempl/elf.em b/ld/emultempl/elf.em
+index 4d431995d2e..0bad25d3a46 100644
+--- a/ld/emultempl/elf.em
++++ b/ld/emultempl/elf.em
+@@ -1173,6 +1173,7 @@ LDEMUL_BEFORE_PLACE_ORPHANS=${LDEMUL_BEFORE_PLACE_ORPHANS-ldelf_before_place_orp
+ LDEMUL_AFTER_ALLOCATION=${LDEMUL_AFTER_ALLOCATION-gld${EMULATION_NAME}_after_allocation}
+ LDEMUL_SET_OUTPUT_ARCH=${LDEMUL_SET_OUTPUT_ARCH-ldelf_set_output_arch}
+ LDEMUL_BEFORE_ALLOCATION=${LDEMUL_BEFORE_ALLOCATION-gld${EMULATION_NAME}_before_allocation}
++LDEMUL_FINISH=${LDEMUL_FINISH-ldelf_finish}
+ LDEMUL_OPEN_DYNAMIC_ARCHIVE=${LDEMUL_OPEN_DYNAMIC_ARCHIVE-ldelf_open_dynamic_archive}
+ LDEMUL_PLACE_ORPHAN=${LDEMUL_PLACE_ORPHAN-ldelf_place_orphan}
+ LDEMUL_ADD_OPTIONS=gld${EMULATION_NAME}_add_options
+diff --git a/ld/emultempl/ppc32elf.em b/ld/emultempl/ppc32elf.em
+index acd673a7b84..529a5920920 100644
+--- a/ld/emultempl/ppc32elf.em
++++ b/ld/emultempl/ppc32elf.em
+@@ -238,7 +238,7 @@ ppc_finish (void)
+     lang_for_each_statement (no_zero_padding);
+   if (!ppc_finish_symbols (&link_info))
+     einfo (_("%X%P: ppc_finish_symbols problem %E\n"));
+-  finish_default ();
++  ldelf_finish ();
+ }
+ 
+ EOF
+diff --git a/ld/emultempl/ppc64elf.em b/ld/emultempl/ppc64elf.em
+index f9ace66a5b2..1e6ae7af738 100644
+--- a/ld/emultempl/ppc64elf.em
++++ b/ld/emultempl/ppc64elf.em
+@@ -616,7 +616,7 @@ gld${EMULATION_NAME}_finish (void)
+   fflush (stderr);
+   free (msg);
+ 
+-  finish_default ();
++  ldelf_finish ();
+ }
+ 
+ 
+diff --git a/ld/emultempl/spuelf.em b/ld/emultempl/spuelf.em
+index dd8d259a31f..76776ba2555 100644
+--- a/ld/emultempl/spuelf.em
++++ b/ld/emultempl/spuelf.em
+@@ -432,7 +432,7 @@ gld${EMULATION_NAME}_finish (void)
+ 	einfo (_("%P: --auto-overlay ignored with zero local store range\n"));
+     }
+ 
+-  finish_default ();
++  ldelf_finish ();
+ }
+ 
+ static char *
+diff --git a/ld/ld.h b/ld/ld.h
+index 48d34bc6acd..254f0a097bb 100644
+--- a/ld/ld.h
++++ b/ld/ld.h
+@@ -306,6 +306,12 @@ typedef struct
+   /* If set, store plugin intermediate files permanently.  */
+   bool plugin_save_temps;
+ 
++  /* If set, if the .gnu_object_only section should be created.  */
++  bool emit_gnu_object_only;
++
++  /* If set, if the .gnu_object_only section is being created.  */
++  bool emitting_gnu_object_only;
++
+   /* If set, print discarded sections in map file output.  */
+   bool print_map_discarded;
+ 
+diff --git a/ld/ldelf.c b/ld/ldelf.c
+index 4cbfc19c161..a66d1d21394 100644
+--- a/ld/ldelf.c
++++ b/ld/ldelf.c
+@@ -63,6 +63,7 @@ static lang_input_statement_type *global_found;
+ static struct stat global_stat;
+ static struct bfd_link_needed_list *global_vercheck_needed;
+ static bool global_vercheck_failed;
++static bool orphan_init_done;
+ 
+ void
+ ldelf_after_parse (void)
+@@ -2101,7 +2102,7 @@ elf_orphan_compatible (asection *in, asection *out)
+ lang_output_section_statement_type *
+ ldelf_place_orphan (asection *s, const char *secname, int constraint)
+ {
+-  static struct orphan_save hold[] =
++  static struct orphan_save orig_hold[] =
+     {
+       { ".text",
+ 	SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_READONLY | SEC_CODE,
+@@ -2131,6 +2132,7 @@ ldelf_place_orphan (asection *s, const char *secname, int constraint)
+ 	SEC_HAS_CONTENTS,
+ 	0, 0, 0, 0 },
+     };
++  static struct orphan_save hold[ARRAY_SIZE (orig_hold)];
+   enum orphan_save_index
+     {
+       orphan_text = 0,
+@@ -2143,7 +2145,6 @@ ldelf_place_orphan (asection *s, const char *secname, int constraint)
+       orphan_sdata,
+       orphan_nonalloc
+     };
+-  static int orphan_init_done = 0;
+   struct orphan_save *place;
+   lang_output_section_statement_type *after;
+   lang_output_section_statement_type *os;
+@@ -2272,16 +2273,23 @@ ldelf_place_orphan (asection *s, const char *secname, int constraint)
+ 
+   if (!orphan_init_done)
+     {
+-      struct orphan_save *ho;
++      struct orphan_save *ho, *horig;
+ 
+       for (ho = hold; ho < hold + sizeof (hold) / sizeof (hold[0]); ++ho)
++      for (ho = hold, horig = orig_hold;
++	   ho < hold + ARRAY_SIZE (hold);
++	   ++ho, ++horig)
++	{
++	  *ho = *horig;
++	  if (ho->name != NULL)
+ 	if (ho->name != NULL)
+ 	  {
+ 	    ho->os = lang_output_section_find (ho->name);
+ 	    if (ho->os != NULL && ho->os->flags == 0)
+ 	      ho->os->flags = ho->flags;
+ 	  }
+-      orphan_init_done = 1;
++	}
++      orphan_init_done = true;
+     }
+ 
+   /* If this is a final link, then always put .gnu.warning.SYMBOL
+@@ -2428,3 +2436,13 @@ ldelf_set_output_arch (void)
+   if (link_info.output_bfd->xvec->flavour == bfd_target_elf_flavour)
+     elf_link_info (link_info.output_bfd) = &link_info;
+ }
++
++void
++ldelf_finish (void)
++{
++  /* Support the object-only output.  */
++  if (config.emit_gnu_object_only)
++    orphan_init_done = false;
++
++  finish_default ();
++}
+diff --git a/ld/ldelf.h b/ld/ldelf.h
+index 96fb1e5b6a8..a6498cf2758 100644
+--- a/ld/ldelf.h
++++ b/ld/ldelf.h
+@@ -21,6 +21,7 @@
+ extern const char *ldelf_emit_note_gnu_build_id;
+ extern const char *ldelf_emit_note_fdo_package_metadata;
+ 
++extern void ldelf_finish (void);
+ extern void ldelf_after_parse (void);
+ extern bool ldelf_load_symbols (lang_input_statement_type *);
+ extern void ldelf_before_plugin_all_symbols_read (int, int, int, int,
+diff --git a/ld/ldexp.c b/ld/ldexp.c
+index f0b8d7cb748..035cef60448 100644
+--- a/ld/ldexp.c
++++ b/ld/ldexp.c
+@@ -1699,14 +1699,15 @@ align_n (bfd_vma value, bfd_vma align)
+ }
+ 
+ void
+-ldexp_init (void)
++ldexp_init (bool object_only)
+ {
+   /* The value "13" is ad-hoc, somewhat related to the expected number of
+      assignments in a linker script.  */
+-  if (!bfd_hash_table_init_n (&definedness_table,
+-			      definedness_newfunc,
+-			      sizeof (struct definedness_hash_entry),
+-			      13))
++  if (!object_only
++      && !bfd_hash_table_init_n (&definedness_table,
++				 definedness_newfunc,
++				 sizeof (struct definedness_hash_entry),
++				 13))
+     einfo (_("%F%P: can not create hash table: %E\n"));
+ }
+ 
+@@ -1763,7 +1764,8 @@ ldexp_is_final_sym_absolute (const struct bfd_link_hash_entry *h)
+ }
+ 
+ void
+-ldexp_finish (void)
++ldexp_finish (bool object_only)
+ {
+-  bfd_hash_table_free (&definedness_table);
++  if (!object_only)
++    bfd_hash_table_free (&definedness_table);
+ }
+diff --git a/ld/ldexp.h b/ld/ldexp.h
+index f7d2cba4f4c..16953caf7cd 100644
+--- a/ld/ldexp.h
++++ b/ld/ldexp.h
+@@ -250,9 +250,9 @@ fill_type *exp_get_fill
+   (etree_type *, fill_type *, char *);
+ bfd_vma exp_get_abs_int
+   (etree_type *, int, char *);
+-void ldexp_init (void);
++void ldexp_init (bool);
+ void ldexp_finalize_syms (void);
+ bool ldexp_is_final_sym_absolute (const struct bfd_link_hash_entry *);
+-void ldexp_finish (void);
++void ldexp_finish (bool);
+ 
+ #endif
+diff --git a/ld/ldfile.c b/ld/ldfile.c
+index 9bf5014ad95..530a5fef5e3 100644
+--- a/ld/ldfile.c
++++ b/ld/ldfile.c
+@@ -532,7 +532,9 @@ ldfile_try_open_bfd (const char *attempt,
+       && !no_more_claiming
+       && bfd_check_format (entry->the_bfd, bfd_object))
+     plugin_maybe_claim (entry);
++  else
+ #endif /* BFD_SUPPORTS_PLUGINS */
++    cmdline_check_object_only_section (entry->the_bfd, false);
+ 
+   /* It opened OK, the format checked out, and the plugins have had
+      their chance to claim it, so this is success.  */
+diff --git a/ld/ldlang.c b/ld/ldlang.c
+index 4c8d4e7a7fc..e1e491732a9 100644
+--- a/ld/ldlang.c
++++ b/ld/ldlang.c
+@@ -37,6 +37,7 @@
+ #include "ldctor.h"
+ #include "ldfile.h"
+ #include "ldemul.h"
++#include "ldwrite.h"
+ #include "fnmatch.h"
+ #include "demangle.h"
+ #include "hashtab.h"
+@@ -47,6 +48,9 @@
+ #include "plugin.h"
+ #endif
+ 
++/* FIXME: Put it here to avoid NAME conflict from ldgram.h.  */
++#include "elf-bfd.h"
++
+ #ifndef offsetof
+ #define offsetof(TYPE, MEMBER) ((size_t) & (((TYPE*) 0)->MEMBER))
+ #endif
+@@ -76,6 +80,9 @@ static lang_statement_list_type **stat_save_ptr = &stat_save[0];
+ static struct unique_sections *unique_section_list;
+ static struct asneeded_minfo *asneeded_list_head;
+ static unsigned int opb_shift = 0;
++static cmdline_list_type cmdline_object_only_file_list;
++static cmdline_list_type cmdline_object_only_archive_list;
++static cmdline_list_type cmdline_temp_object_only_list;
+ 
+ /* Forward declarations.  */
+ static void exp_init_os (etree_type *);
+@@ -99,6 +106,10 @@ static void lang_do_version_exports_section (void);
+ static void lang_finalize_version_expr_head
+   (struct bfd_elf_version_expr_head *);
+ static void lang_do_memory_regions (bool);
++static void cmdline_lists_init (void);
++static void cmdline_get_object_only_input_files (void);
++static void print_cmdline_list (cmdline_union_type *);
++static bool cmdline_on_object_only_archive_list_p (bfd *);
+ 
+ /* Exported variables.  */
+ const char *output_target;
+@@ -1353,15 +1364,20 @@ output_section_statement_table_free (void)
+ /* Build enough state so that the parser can build its tree.  */
+ 
+ void
+-lang_init (void)
++lang_init (bool object_only)
+ {
+-  obstack_begin (&stat_obstack, 1000);
+-  obstack_init (&pt_obstack);
++  if (!object_only)
++    {
++      obstack_begin (&stat_obstack, 1000);
++      obstack_init (&pt_obstack);
++    }
+ 
+   stat_ptr = &statement_list;
+ 
+   output_section_statement_table_init ();
+ 
++  cmdline_lists_init ();
++
+   lang_list_init (stat_ptr);
+ 
+   lang_list_init (&input_file_chain);
+@@ -3142,6 +3158,12 @@ load_symbols (lang_input_statement_type *entry,
+ 		  loaded = false;
+ 		}
+ 
++	      if (config.emitting_gnu_object_only)
++		{
++		  if (!cmdline_on_object_only_archive_list_p (member))
++		    continue;
++		}
++
+ 	      subsbfd = member;
+ 	      if (!(*link_info.callbacks
+ 		    ->add_archive_element) (&link_info, member,
+@@ -8343,7 +8365,42 @@ lang_process (void)
+ 	    }
+ 	}
+     }
++  else
+ #endif /* BFD_SUPPORTS_PLUGINS */
++    if (bfd_link_relocatable (&link_info))
++    {
++      /* Check if .gnu_object_only section should be created.  */
++      bfd *p;
++      int object_type;
++
++      object_type = 0;
++      for (p = link_info.input_bfds; p != (bfd *) NULL; p = p->link.next)
++	{
++	  enum bfd_lto_object_type lto_type = bfd_get_lto_type (p);
++	  /* NB: Treat fat IR object as IR object here.  */
++	  if (lto_type == lto_fat_ir_object)
++	    lto_type = lto_slim_ir_object;
++	  object_type |= 1 << lto_type;
++	  if ((object_type & (1 << lto_mixed_object)) != 0
++	      || ((object_type
++		   & (1 << lto_non_ir_object
++		      | 1 << lto_slim_ir_object))
++		  == (1 << lto_non_ir_object | 1 << lto_slim_ir_object)))
++	    {
++	      config.emit_gnu_object_only = true;
++	      break;
++	    }
++	}
++
++      if (verbose
++	  && (cmdline_object_only_file_list.head
++	      || cmdline_object_only_archive_list.head))
++	{
++	  info_msg (_("Object-only input files:\n "));
++	  print_cmdline_list (cmdline_object_only_file_list.head);
++	  print_cmdline_list (cmdline_object_only_archive_list.head);
++	}
++    }
+ 
+   struct bfd_sym_chain **sym = &link_info.gc_sym_list;
+   while (*sym)
+@@ -10022,3 +10079,967 @@ lang_print_memory_usage (void)
+       printf ("\n");
+     }
+ }
++
++static void
++cmdline_lists_init (void)
++{
++  cmdline_object_only_file_list.tail
++    = &cmdline_object_only_file_list.head;
++  cmdline_object_only_archive_list.tail
++    = &cmdline_object_only_archive_list.head;
++  cmdline_temp_object_only_list.tail
++    = &cmdline_temp_object_only_list.head;
++}
++
++/* Allocate an item with TYPE and DATA.  */
++
++static cmdline_union_type *
++cmdline_list_new (cmdline_enum_type type, void *data)
++{
++  cmdline_union_type *new_opt;
++
++  new_opt = (cmdline_union_type *) stat_alloc (sizeof (*new_opt));
++  new_opt->header.type = type;
++  switch (type)
++    {
++    default:
++      break;
++    case cmdline_is_file_enum:
++      new_opt->file.filename = (const char *) data;
++      break;
++    case cmdline_is_bfd_enum:
++      new_opt->abfd.abfd = (bfd *) data;
++      break;
++    }
++  return new_opt;
++}
++
++/* Append an item with TYPE and DATA to LIST.  */
++
++static void
++cmdline_list_append (cmdline_list_type *list, cmdline_enum_type type,
++		     void *data)
++{
++  cmdline_union_type *new_opt = cmdline_list_new (type, data);
++  new_opt->header.next = NULL;
++  *list->tail = new_opt;
++  list->tail = &new_opt->header.next;
++}
++
++static void
++print_cmdline_list (cmdline_union_type *c)
++{
++  for (; c != NULL; c = c->header.next)
++    switch (c->header.type)
++      {
++      default:
++	abort ();
++      case cmdline_is_file_enum:
++	info_msg (" %s", c->file.filename);
++	break;
++      case cmdline_is_bfd_enum:
++	info_msg (" [%B]", c->abfd.abfd);
++	break;
++      }
++
++  info_msg ("\n");
++}
++
++/* Return TRUE if ABFD is on cmdline_object_only_archive_list.  */
++
++static bool
++cmdline_on_object_only_archive_list_p (bfd *abfd)
++{
++  cmdline_union_type *c, *next;
++  bfd *archive, *obfd, *oarchive;
++  ufile_ptr origin = abfd->origin;
++
++  archive = abfd->my_archive;
++  for (c = cmdline_object_only_archive_list.head; c != NULL; c = next)
++    {
++      if (c->header.type != cmdline_is_bfd_enum)
++	abort ();
++
++      next = c->header.next;
++      obfd = c->abfd.abfd;
++      oarchive = obfd->my_archive;
++
++      /* The list is grouped by archive file name and sorted by member
++	 origin.  */
++      if (strcmp (archive->filename, oarchive->filename) != 0)
++	continue;
++
++      if (origin == obfd->origin)
++	return true;
++      else if (origin < obfd->origin)
++	return false;
++    }
++
++  return false;
++}
++
++/* Append an item with TYPE and DATA to cmdline_object_only_file_list
++   or cmdline_object_only_archive_list if needed.  */
++
++static void
++cmdline_object_only_list_append (cmdline_enum_type type, void *data)
++{
++  cmdline_union_type *c;
++  cmdline_union_type *new_opt, *next, **prev;
++  bfd *abfd, *archive;
++  bfd *obfd, *oarchive;
++  bfd *nbfd, *narchive;
++  ufile_ptr origin, norigin;
++
++  /* Put it on cmdline_object_only_file_list if it isn't an archive
++     member.  */
++  switch (type)
++    {
++    default:
++      abort ();
++    case cmdline_is_bfd_enum:
++      abfd = (bfd *) data;
++      archive = abfd->my_archive;
++      if (archive)
++	break;
++      /* Fallthru */
++    case cmdline_is_file_enum:
++      cmdline_list_append (&cmdline_object_only_file_list, type, data);
++      return;
++    }
++
++  /* Put archive member on cmdline_object_only_archive_list and sort
++     the list by archive name and archive member origin.  */
++  new_opt = (cmdline_union_type *) stat_alloc (sizeof (*new_opt));
++  new_opt->header.type = cmdline_is_bfd_enum;
++  new_opt->header.next = NULL;
++  new_opt->abfd.abfd = (bfd *) data;
++
++  c = cmdline_object_only_archive_list.head;
++  if (c == NULL)
++    {
++      cmdline_object_only_archive_list.head = new_opt;
++      cmdline_object_only_archive_list.tail = &new_opt->header.next;
++      return;
++    }
++
++  prev = NULL;
++  origin = abfd->origin;
++  for (; c != NULL; c = next)
++    {
++      if (c->header.type != cmdline_is_bfd_enum)
++	abort ();
++
++      next = c->header.next;
++
++      obfd = c->abfd.abfd;
++      oarchive = obfd->my_archive;
++
++      if (strcmp (archive->filename, oarchive->filename) == 0)
++	{
++	  bool after;
++
++	  if (origin < obfd->origin)
++	    {
++	      /* Insert it before the current.  */
++	      new_opt->header.next = c;
++	      if (prev)
++		*prev = new_opt;
++	      else
++		cmdline_object_only_archive_list.head = new_opt;
++	      return;
++	    }
++
++	  after = true;
++
++	  /* Check origin.  */
++	  while (next)
++	    {
++	      if (next->header.type != cmdline_is_bfd_enum)
++		abort ();
++
++	      nbfd = next->abfd.abfd;
++	      norigin = nbfd->origin;
++	      if (origin > norigin)
++		{
++		  /* Insert it after NEXT.  */
++		  break;
++		}
++
++	      narchive = nbfd->my_archive;
++	      if (strcmp (archive->filename, narchive->filename) != 0)
++		{
++		  /* Insert it befor NEXT.  */
++		  after = false;
++		  break;
++		}
++
++	      c = next;
++	      next = next->header.next;
++	    }
++
++	  if (after && next)
++	    {
++	      c = next;
++	      next = next->header.next;
++	    }
++
++	  if (*cmdline_object_only_archive_list.tail == c->header.next)
++	    cmdline_object_only_archive_list.tail
++	      = &new_opt->header.next;
++
++	  prev = &c->header.next;
++	  new_opt->header.next = next;
++	  *prev = new_opt;
++	  return;
++	}
++
++      prev = &c->header.next;
++    }
++
++  *cmdline_object_only_archive_list.tail = new_opt;
++  cmdline_object_only_archive_list.tail = &new_opt->header.next;
++}
++
++/* Get object-only input files.  */
++
++static void
++cmdline_get_object_only_input_files (void)
++{
++  cmdline_union_type *c, *next;
++  bfd *abfd, *archive;
++  bfd *nbfd, *narchive;
++
++  /* Add files first.  */
++  for (c = cmdline_object_only_file_list.head;
++       c != NULL; c = c->header.next)
++    switch (c->header.type)
++      {
++      default:
++	abort ();
++      case cmdline_is_file_enum:
++	lang_add_input_file (c->file.filename,
++			     lang_input_file_is_file_enum, NULL);
++	break;
++      case cmdline_is_bfd_enum:
++	abfd = c->abfd.abfd;
++	if (abfd->my_archive)
++	  abort ();
++	lang_add_input_file (abfd->filename,
++			     lang_input_file_is_file_enum, NULL);
++	break;
++      }
++
++  /* Add archive members next.  */
++  for (c = cmdline_object_only_archive_list.head; c != NULL; c = next)
++    {
++      if (c->header.type != cmdline_is_bfd_enum)
++	abort ();
++
++      next = c->header.next;
++
++      abfd = c->abfd.abfd;
++      archive = abfd->my_archive;
++
++      /* Add the first archive of the archive member group.  */
++      lang_add_input_file (archive->filename,
++			   lang_input_file_is_file_enum, NULL);
++
++      /* Skip the rest members in the archive member group.  */
++      do
++	{
++	  if (!next)
++	    break;
++
++	  if (next->header.type != cmdline_is_bfd_enum)
++	    abort ();
++
++	  next = next->header.next;
++	  if (!next)
++	    break;
++	  nbfd = next->abfd.abfd;
++	  narchive = nbfd->my_archive;
++	}
++      while (strcmp (archive->filename, narchive->filename) == 0);
++    }
++}
++
++struct cmdline_arg
++{
++  bfd *obfd;
++  asymbol **isympp;
++  int status;
++};
++
++/* Create a section in OBFD with the same
++   name and attributes as ISECTION in IBFD.  */
++
++static void
++setup_section (bfd *ibfd, sec_ptr isection, void *p)
++{
++  struct cmdline_arg *arg = (struct cmdline_arg *) p;
++  bfd *obfd = arg->obfd;
++  asymbol **isympp = arg->isympp;
++  const char *name = isection->name;
++  sec_ptr osection;
++  const char *err;
++
++  /* Skip the object-only section.  */
++  if (ibfd->object_only_section == isection)
++    return;
++
++  /* If we have already failed earlier on, do not keep on generating
++     complaints now.  */
++  if (arg->status)
++    return;
++
++  osection = bfd_make_section_anyway_with_flags (obfd, name,
++						 isection->flags);
++
++  if (osection == NULL)
++    {
++      err = _("failed to create output section");
++      goto loser;
++    }
++
++  osection->size = isection->size;
++  osection->vma = isection->vma;
++  osection->lma = isection->lma;
++  osection->alignment_power = isection->alignment_power;
++
++  /* Copy merge entity size.  */
++  osection->entsize = isection->entsize;
++
++  /* This used to be mangle_section; we do here to avoid using
++     bfd_get_section_by_name since some formats allow multiple
++     sections with the same name.  */
++  isection->output_section = osection;
++  isection->output_offset = 0;
++
++  if ((isection->flags & SEC_GROUP) != 0)
++    {
++      asymbol *gsym = bfd_group_signature (isection, isympp);
++
++      if (gsym != NULL)
++	{
++	  gsym->flags |= BSF_KEEP;
++	  if (ibfd->xvec->flavour == bfd_target_elf_flavour)
++	    elf_group_id (isection) = gsym;
++	}
++    }
++
++  /* Allow the BFD backend to copy any private data it understands
++     from the input section to the output section.  */
++  if (!bfd_copy_private_section_data (ibfd, isection, obfd, osection))
++    {
++      err = _("failed to copy private data");
++      goto loser;
++    }
++
++  /* All went well.  */
++  return;
++
++loser:
++  arg->status = 1;
++  einfo (_("%P%F: setup_section: %s: %s\n"), err, name);
++}
++
++/* Copy the data of input section ISECTION of IBFD
++   to an output section with the same name in OBFD.
++   If stripping then don't copy any relocation info.  */
++
++static void
++copy_section (bfd *ibfd, sec_ptr isection, void *p)
++{
++  struct cmdline_arg *arg = (struct cmdline_arg *) p;
++  bfd *obfd = arg->obfd;
++  asymbol **isympp = arg->isympp;
++  arelent **relpp;
++  long relcount;
++  sec_ptr osection;
++  bfd_size_type size;
++  long relsize;
++  flagword flags;
++  const char *err;
++
++  /* Skip the object-only section.  */
++  if (ibfd->object_only_section == isection)
++    return;
++
++  /* If we have already failed earlier on, do not keep on generating
++     complaints now.  */
++  if (arg->status)
++    return;
++
++  flags = bfd_section_flags (isection);
++  if ((flags & SEC_GROUP) != 0)
++    return;
++
++  osection = isection->output_section;
++  size = bfd_section_size (isection);
++
++  if (size == 0 || osection == 0)
++    return;
++
++  relsize = bfd_get_reloc_upper_bound (ibfd, isection);
++
++  if (relsize < 0)
++    {
++      /* Do not complain if the target does not support relocations.  */
++      if (relsize == -1
++	  && bfd_get_error () == bfd_error_invalid_operation)
++	relsize = 0;
++      else
++	{
++	  err = bfd_errmsg (bfd_get_error ());
++	  goto loser;
++	}
++    }
++
++  if (relsize == 0)
++    bfd_set_reloc (obfd, osection, NULL, 0);
++  else
++    {
++      relpp = (arelent **) xmalloc (relsize);
++      relcount = bfd_canonicalize_reloc (ibfd, isection, relpp, isympp);
++      if (relcount < 0)
++	{
++	  err = _("relocation count is negative");
++	  goto loser;
++	}
++
++      bfd_set_reloc (obfd, osection,
++		     relcount == 0 ? NULL : relpp, relcount);
++      if (relcount == 0)
++	free (relpp);
++    }
++
++  if (bfd_section_flags (isection) & SEC_HAS_CONTENTS)
++    {
++      bfd_byte *memhunk = NULL;
++
++      if (!bfd_get_full_section_contents (ibfd, isection, &memhunk))
++	{
++	  err = bfd_errmsg (bfd_get_error ());
++	  goto loser;
++	}
++
++      if (!bfd_set_section_contents (obfd, osection, memhunk, 0, size))
++	{
++	  err = bfd_errmsg (bfd_get_error ());
++	  goto loser;
++	}
++      free (memhunk);
++    }
++
++  /* All went well.  */
++  return;
++
++loser:
++  einfo (_("%P%F: copy_section: %s: %s\n"), err, isection->name);
++}
++/* Open the temporary bfd created in the same directory as PATH.  */
++
++static bfd *
++cmdline_fopen_temp (const char *path, const char *target,
++		    const char *mode)
++{
++#define template "ldXXXXXX"
++  const char *slash = strrchr (path, '/');
++  char *tmpname;
++  size_t len;
++  int fd;
++
++#ifdef HAVE_DOS_BASED_FILE_SYSTEM
++  {
++    /* We could have foo/bar\\baz, or foo\\bar, or d:bar.  */
++    char *bslash = strrchr (path, '\\');
++
++    if (slash == NULL || (bslash != NULL && bslash > slash))
++      slash = bslash;
++    if (slash == NULL && path[0] != '\0' && path[1] == ':')
++      slash = path + 1;
++  }
++#endif
++
++  if (slash != (char *) NULL)
++    {
++      len = slash - path;
++      tmpname = (char *) xmalloc (len + sizeof (template) + 2);
++      memcpy (tmpname, path, len);
++
++#ifdef HAVE_DOS_BASED_FILE_SYSTEM
++      /* If tmpname is "X:", appending a slash will make it a root
++	 directory on drive X, which is NOT the same as the current
++	 directory on drive X.  */
++      if (len == 2 && tmpname[1] == ':')
++	tmpname[len++] = '.';
++#endif
++      tmpname[len++] = '/';
++    }
++  else
++    {
++      tmpname = (char *) xmalloc (sizeof (template));
++      len = 0;
++    }
++
++  memcpy (tmpname + len, template, sizeof (template));
++#undef template
++
++#ifdef HAVE_MKSTEMP
++  fd = mkstemp (tmpname);
++#else
++  tmpname = mktemp (tmpname);
++  if (tmpname == NULL)
++    return NULL;
++  fd = open (tmpname, O_RDWR | O_CREAT | O_EXCL, 0600);
++#endif
++  if (fd == -1)
++    return NULL;
++  return bfd_fopen (tmpname, target, mode, fd);
++}
++
++/* Add the object-only section.  */
++
++static void
++cmdline_add_object_only_section (bfd_byte *contents, size_t size)
++{
++  bfd_vma start;
++  flagword flags;
++  enum bfd_architecture iarch;
++  unsigned int imach;
++  long symcount;
++  long symsize;
++  asymbol **isympp = NULL;
++  asymbol **osympp = NULL;
++  bfd *obfd = NULL, *ibfd;
++  const char *err;
++  struct arg
++    {
++      bfd *obfd;
++      asymbol **isympp;
++      int status;
++    } arg;
++  char **matching;
++  char *ofilename = NULL;
++  asection *sec;
++
++  ibfd = bfd_openr (output_filename, output_target);
++  if (!ibfd)
++    {
++      err = bfd_errmsg (bfd_get_error ());
++      goto loser;
++    }
++
++  if (!bfd_check_format_matches (ibfd, bfd_object, &matching))
++    {
++      err = bfd_errmsg (bfd_get_error ());
++      goto loser;
++    }
++
++  obfd = cmdline_fopen_temp (output_filename, output_target, FOPEN_WB);
++  if (!obfd)
++    {
++      err = bfd_errmsg (bfd_get_error ());
++      goto loser;
++    }
++  /* To be used after bfd_close ().  */
++  ofilename = xstrdup (bfd_get_filename (obfd));
++
++  if (!bfd_set_format (obfd, bfd_object))
++    {
++      err = bfd_errmsg (bfd_get_error ());
++      goto loser;
++    }
++
++  /* Copy the start address, flags and architecture of input file to
++     output file.  */
++  flags = bfd_get_file_flags (ibfd);
++  start = bfd_get_start_address (ibfd);
++  iarch = bfd_get_arch (ibfd);
++  imach = bfd_get_mach (ibfd);
++  if (!bfd_set_start_address (obfd, start)
++      || !bfd_set_file_flags (obfd, flags)
++      || !bfd_set_arch_mach (obfd, iarch, imach))
++    {
++      err = bfd_errmsg (bfd_get_error ());
++      goto loser;
++    }
++
++  symsize = bfd_get_symtab_upper_bound (ibfd);
++  if (symsize < 0)
++    {
++      err = bfd_errmsg (bfd_get_error ());
++      goto loser;
++    }
++
++  isympp = (asymbol **) xmalloc (symsize);
++  symcount = bfd_canonicalize_symtab (ibfd, isympp);
++  if (symcount < 0)
++    {
++      err = bfd_errmsg (bfd_get_error ());
++      goto loser;
++    }
++
++  arg.obfd = obfd;
++  arg.isympp = isympp;
++  arg.status = 0;
++
++  /* BFD mandates that all output sections be created and sizes set before
++     any output is done.  Thus, we traverse all sections multiple times.  */
++  bfd_map_over_sections (ibfd, setup_section, &arg);
++
++  if (arg.status)
++    {
++      err = _("error setting up sections");
++      goto loser;
++    }
++
++  /* Allow the BFD backend to copy any private data it understands
++     from the input section to the output section.  */
++  if (! bfd_copy_private_header_data (ibfd, obfd))
++    {
++      err = _("error copying private header data");
++      goto loser;
++    }
++
++  /* Create the object-only section.  */
++  sec = bfd_make_section_with_flags (obfd,
++				     GNU_OBJECT_ONLY_SECTION_NAME,
++				     (SEC_HAS_CONTENTS
++				      | SEC_READONLY
++				      | SEC_DATA
++				      | SEC_LINKER_CREATED));
++  if (sec == NULL)
++    {
++      err = _("can't create object-only section");
++      goto loser;
++    }
++
++  if (! bfd_set_section_size (sec, size))
++    {
++      err = _("can't set object-only section size");
++      goto loser;
++    }
++
++  if (ibfd->object_only_section)
++    {
++      /* Filter out the object-only section symbol.  */
++      long src_count = 0, dst_count = 0;
++      asymbol **from, **to;
++
++      osympp = (asymbol **) xmalloc (symcount * sizeof (asymbol *));
++      from = isympp;
++      to = osympp;
++      for (; src_count < symcount; src_count++)
++	{
++	  asymbol *sym = from[src_count];
++	  if (bfd_asymbol_section (sym) != ibfd->object_only_section)
++	    to[dst_count++] = sym;
++	}
++      to[dst_count] = NULL;
++      symcount = dst_count;
++      bfd_set_symtab (obfd, osympp, symcount);
++    }
++  else
++    bfd_set_symtab (obfd, isympp, symcount);
++
++  /* This has to happen after the symbol table has been set.  */
++  bfd_map_over_sections (ibfd, copy_section, &arg);
++
++  if (arg.status)
++    {
++      err = _("error copying sections");
++      goto loser;
++    }
++
++  /* Copy the object-only section to the output.  */
++  if (! bfd_set_section_contents (obfd, sec, contents, 0, size))
++    {
++      err = _("error adding object-only section");
++      goto loser;
++    }
++
++  /* Allow the BFD backend to copy any private data it understands
++     from the input BFD to the output BFD.  This is done last to
++     permit the routine to look at the filtered symbol table, which is
++     important for the ECOFF code at least.  */
++  if (! bfd_copy_private_bfd_data (ibfd, obfd))
++    {
++      err = _("error copying private BFD data");
++      goto loser;
++    }
++
++  if (!bfd_close (obfd))
++    {
++      unlink (ofilename);
++      einfo (_("%P%F: failed to finish output with object-only section\n"));
++    }
++
++  /* Must be freed after bfd_close ().  */
++  free (isympp);
++  if (osympp)
++    free (osympp);
++
++  if (rename (ofilename, output_filename))
++    {
++      unlink (ofilename);
++      einfo (_("%P%F: failed to rename output with object-only section\n"));
++    }
++
++  free (ofilename);
++  return;
++
++loser:
++  if (isympp)
++    free (isympp);
++  if (osympp)
++    free (osympp);
++  if (obfd)
++    bfd_close (obfd);
++  if (ofilename)
++    unlink (ofilename);
++  einfo (_("%P%F: failed to add object-only section: %s\n"), err);
++}
++
++/* Emit the final output with object-only section.  */
++
++void
++cmdline_emit_object_only_section (void)
++{
++  const char *saved_output_filename = output_filename;
++  int fd;
++  size_t size, off;
++  bfd_byte *contents;
++  struct stat st;
++
++  /* Get a temporary object-only file.  */
++  output_filename = make_temp_file (".obj-only.o");
++
++  had_output_filename = false;
++  link_info.input_bfds = NULL;
++  link_info.input_bfds_tail = &link_info.input_bfds;
++
++  lang_init (true);
++  ldexp_init (true);
++
++  ld_parse_linker_script ();
++
++  /* Set up the object-only output. */
++  lang_final ();
++
++  /* Open the object-only file for output.  */
++  lang_for_each_statement (ldlang_open_output);
++
++  ldemul_create_output_section_statements ();
++
++  if (!bfd_section_already_linked_table_init ())
++    einfo (_("%P%F: Failed to create hash table\n"));
++
++  /* Call cmdline_on_object_only_archive_list_p to check which member
++     should be loaded.  */
++  input_flags.whole_archive = true;
++
++  /* Set it to avoid adding more to cmdline lists.  */
++  config.emitting_gnu_object_only = true;
++
++  /* Get object-only input files.  */
++  cmdline_get_object_only_input_files ();
++
++  /* Open object-only input files.  */
++  open_input_bfds (statement_list.head, NULL, OPEN_BFD_NORMAL);
++
++  ldemul_after_open ();
++
++  bfd_section_already_linked_table_free ();
++
++  /* Make sure that we're not mixing architectures.  We call this
++     after all the input files have been opened, but before we do any
++     other processing, so that any operations merge_private_bfd_data
++     does on the output file will be known during the rest of the
++     link.  */
++  lang_check ();
++
++  /* Size up the common data.  */
++  lang_common ();
++
++  /* Update wild statements.  */
++  update_wild_statements (statement_list.head);
++
++  /* Run through the contours of the script and attach input sections
++     to the correct output sections.  */
++  map_input_to_output_sections (statement_list.head, NULL, NULL);
++
++  /* Find any sections not attached explicitly and handle them.  */
++  lang_place_orphans ();
++
++  /* Do anything special before sizing sections.  This is where ELF
++     and other back-ends size dynamic sections.  */
++  ldemul_before_allocation ();
++
++  /* Size up the sections.  */
++  lang_size_sections (NULL, ! RELAXATION_ENABLED);
++
++  /* See if anything special should be done now we know how big
++     everything is.  This is where relaxation is done.  */
++  ldemul_after_allocation ();
++
++  ldemul_finish ();
++
++  /* Make sure that the section addresses make sense.  */
++  if (command_line.check_section_addresses)
++    lang_check_section_addresses ();
++
++  lang_end ();
++
++  ldwrite ();
++
++  ldexp_finish (true);
++  lang_finish ();
++
++  if (! bfd_close (link_info.output_bfd))
++    einfo (_("%P%F:%s: final close failed on object-only output: %E\n"),
++	   output_filename);
++
++  link_info.output_bfd = NULL;
++
++  /* Read in the object-only file.  */
++  fd = open (output_filename, O_RDONLY | O_BINARY);
++  if (fd < 0)
++    {
++      bfd_set_error (bfd_error_system_call);
++      einfo (_("%P%F:%s: cannot open object-only output: %E\n"),
++	     output_filename);
++    }
++
++  /* Get the object-only file size.  */
++  if (fstat (fd, &st) != 0)
++    {
++      bfd_set_error (bfd_error_system_call);
++      einfo (_("%P%F:%s: cannot stat object-only output: %E\n"),
++	     output_filename);
++    }
++
++  size = st.st_size;
++  off = 0;
++  contents = (bfd_byte *) xmalloc (size);
++  while (off != size)
++    {
++      ssize_t got;
++
++      got = read (fd, contents + off, size - off);
++      if (got < 0)
++	{
++	  bfd_set_error (bfd_error_system_call);
++	  einfo (_("%P%F:%s: read failed on object-only output: %E\n"),
++		 output_filename);
++	}
++
++      off += got;
++    }
++
++  close (fd);
++
++  /* Remove the temporary object-only file.  */
++  unlink (output_filename);
++
++  output_filename = saved_output_filename;
++
++  cmdline_add_object_only_section (contents, size);
++
++  free (contents);
++}
++
++/* Extract the object-only section.  */
++
++static const char *
++cmdline_extract_object_only_section (bfd *abfd)
++{
++  const char *name = bfd_extract_object_only_section (abfd);
++
++  if (name == NULL)
++    einfo (_("%P%F: cannot extract object-only section from %B: %E\n"),
++	   abfd);
++
++  /* It should be removed after it is done.  */
++  cmdline_list_append (&cmdline_temp_object_only_list,
++		       cmdline_is_file_enum, (void *) name);
++
++  return name;
++}
++
++/* Check and handle the object-only section.   */
++
++void
++cmdline_check_object_only_section (bfd *abfd, bool lto)
++{
++  const char *filename;
++
++  if (config.emitting_gnu_object_only || abfd->format != bfd_object)
++    return;
++
++  if (lto)
++    {
++      /* For LTO link, we only need to extract object-only section
++	 from the mixed object, add it to input, and put it on LTO
++	 claimed output.  */
++      switch (bfd_get_lto_type (abfd))
++	{
++	default:
++	  abort ();
++	case lto_mixed_object:
++	  filename = cmdline_extract_object_only_section (abfd);
++	  lang_add_input_file (filename,
++			       lang_input_file_is_file_enum, NULL);
++	  break;
++	case lto_non_ir_object:
++	case lto_slim_ir_object:
++	case lto_fat_ir_object:
++	  break;
++	}
++    }
++  else if (bfd_link_relocatable (&link_info))
++    {
++      /* For non-LTO relocatable link, we need to append non-IR object
++	 file and the object file in object-only section to the object
++	 only list.  */
++      switch (bfd_get_lto_type (abfd))
++	{
++	default:
++	  abort ();
++	case lto_mixed_object:
++	  filename = cmdline_extract_object_only_section (abfd);
++	  cmdline_object_only_list_append (cmdline_is_file_enum,
++					  (void *) filename);
++	  break;
++	case lto_non_ir_object:
++	  cmdline_object_only_list_append (cmdline_is_bfd_enum, abfd);
++	  break;
++	case lto_slim_ir_object:
++	case lto_fat_ir_object:
++	  break;
++	}
++    }
++}
++
++/* Remove temporary object-only files.  */
++
++void
++cmdline_remove_object_only_files (void)
++{
++  cmdline_union_type *c;
++
++  if (config.plugin_save_temps)
++    return;
++
++  c = cmdline_temp_object_only_list.head;
++  for (; c != NULL; c = c->header.next)
++    switch (c->header.type)
++      {
++      default:
++	abort ();
++      case cmdline_is_file_enum:
++	unlink (c->file.filename);
++	break;
++      }
++}
+diff --git a/ld/ldlang.h b/ld/ldlang.h
+index e32c5acaaca..91779a584b4 100644
+--- a/ld/ldlang.h
++++ b/ld/ldlang.h
+@@ -552,7 +552,7 @@ extern struct asneeded_minfo **asneeded_list_tail;
+ extern void (*output_bfd_hash_table_free_fn) (struct bfd_link_hash_table *);
+ 
+ extern void lang_init
+-  (void);
++  (bool);
+ extern void lang_finish
+   (void);
+ extern lang_memory_region_type * lang_memory_region_lookup
+@@ -746,4 +746,46 @@ print_one_symbol (struct bfd_link_hash_entry *, void *);
+ 
+ extern void lang_add_version_string
+   (void);
++
++typedef enum
++{
++  cmdline_is_file_enum,
++  cmdline_is_bfd_enum
++} cmdline_enum_type;
++
++typedef struct cmdline_header_struct
++{
++  union cmdline_union *next;
++  cmdline_enum_type type;
++} cmdline_header_type;
++
++typedef struct cmdline_file_struct
++{
++  cmdline_header_type header;
++  const char *filename;
++} cmdline_file_type;
++
++typedef struct cmdline_bfd_struct
++{
++  cmdline_header_type header;
++  bfd *abfd;
++} cmdline_bfd_type;
++
++typedef union cmdline_union
++{
++  cmdline_header_type header;
++  cmdline_file_type file;
++  cmdline_bfd_type abfd;
++} cmdline_union_type;
++
++typedef struct cmdline_list
++{
++  cmdline_union_type *head;
++  cmdline_union_type **tail;
++} cmdline_list_type;
++
++extern void cmdline_emit_object_only_section (void);
++extern void cmdline_check_object_only_section (bfd *, bool);
++extern void cmdline_remove_object_only_files (void);
++
+ #endif
+diff --git a/ld/ldmain.c b/ld/ldmain.c
+index 64c4cce8371..dcef7bb9278 100644
+--- a/ld/ldmain.c
++++ b/ld/ldmain.c
+@@ -302,6 +302,9 @@ main (int argc, char **argv)
+ 
+   xatexit (ld_cleanup);
+ 
++  /* Remove temporary object-only files.  */
++  xatexit (cmdline_remove_object_only_files);
++
+   /* Set up the sysroot directory.  */
+   ld_sysroot = get_sysroot (argc, argv);
+   if (*ld_sysroot)
+@@ -391,8 +394,8 @@ main (int argc, char **argv)
+   emulation = get_emulation (argc, argv);
+   ldemul_choose_mode (emulation);
+   default_target = ldemul_choose_target (argc, argv);
+-  lang_init ();
+-  ldexp_init ();
++  lang_init (false);
++  ldexp_init (false);
+   ldemul_before_parse ();
+   lang_has_input_file = false;
+   parse_args (argc, argv);
+@@ -407,34 +410,7 @@ main (int argc, char **argv)
+ 
+   ldemul_set_symbols ();
+ 
+-  /* If we have not already opened and parsed a linker script,
+-     try the default script from command line first.  */
+-  if (saved_script_handle == NULL
+-      && command_line.default_script != NULL)
+-    {
+-      ldfile_open_script_file (command_line.default_script);
+-      parser_input = input_script;
+-      yyparse ();
+-    }
+-
+-  /* If we have not already opened and parsed a linker script
+-     read the emulation's appropriate default script.  */
+-  if (saved_script_handle == NULL)
+-    {
+-      int isfile;
+-      char *s = ldemul_get_script (&isfile);
+-
+-      if (isfile)
+-	ldfile_open_default_command_file (s);
+-      else
+-	{
+-	  lex_string = s;
+-	  lex_redirect (s, _("built in linker script"), 1);
+-	}
+-      parser_input = input_script;
+-      yyparse ();
+-      lex_string = NULL;
+-    }
++  ld_parse_linker_script ();
+ 
+   if (verbose)
+     {
+@@ -572,7 +548,7 @@ main (int argc, char **argv)
+     fprintf (stderr, "lookup = %p val %lx\n", h, h ? h->u.def.value : 1);
+   }
+ #endif
+-  ldexp_finish ();
++  ldexp_finish (false);
+   lang_finish ();
+ 
+   if (config.dependency_file != NULL)
+@@ -597,6 +573,8 @@ main (int argc, char **argv)
+       if (!bfd_close (obfd))
+ 	einfo (_("%F%P: %s: final close failed: %E\n"), output_filename);
+ 
++      link_info.output_bfd = NULL;
++
+       /* If the --force-exe-suffix is enabled, and we're making an
+ 	 executable file and it doesn't end in .exe, copy it to one
+ 	 which does.  */
+@@ -644,6 +622,9 @@ main (int argc, char **argv)
+ 	}
+     }
+ 
++  if (config.emit_gnu_object_only)
++    cmdline_emit_object_only_section ();
++
+   if (config.stats)
+     {
+       long run_time = get_run_time () - start_time;
+@@ -951,7 +932,9 @@ add_archive_element (struct bfd_link_info *info,
+ 	  *subsbfd = input->the_bfd;
+ 	}
+     }
++  else
+ #endif /* BFD_SUPPORTS_PLUGINS */
++    cmdline_check_object_only_section (input->the_bfd, false);
+ 
+   if (link_info.input_bfds_tail == &input->the_bfd->link.next
+       || input->the_bfd->link.next != NULL)
+@@ -1694,3 +1677,38 @@ notice (struct bfd_link_info *info,
+ 
+   return true;
+ }
++
++/* Parse the linker script.   */
++
++void
++ld_parse_linker_script (void)
++{
++  /* If we have not already opened and parsed a linker script,
++     try the default script from command line first.  */
++  if (saved_script_handle == NULL
++      && command_line.default_script != NULL)
++    {
++      ldfile_open_script_file (command_line.default_script);
++      parser_input = input_script;
++      yyparse ();
++    }
++
++  /* If we have not already opened and parsed a linker script
++     read the emulation's appropriate default script.  */
++  if (saved_script_handle == NULL)
++    {
++      int isfile;
++      char *s = ldemul_get_script (&isfile);
++
++      if (isfile)
++	ldfile_open_default_command_file (s);
++      else
++	{
++	  lex_string = s;
++	  lex_redirect (s, _("built in linker script"), 1);
++	}
++      parser_input = input_script;
++      yyparse ();
++      lex_string = NULL;
++    }
++}
+diff --git a/ld/ldmain.h b/ld/ldmain.h
+index 0baa3c305c3..34770762f1c 100644
+--- a/ld/ldmain.h
++++ b/ld/ldmain.h
+@@ -63,4 +63,6 @@ extern void add_ignoresym (struct bfd_link_info *, const char *);
+ extern void add_keepsyms_file (const char *);
+ extern void track_dependency_files (const char *);
+ 
++extern void ld_parse_linker_script (void);
++
+ #endif
+diff --git a/ld/plugin.c b/ld/plugin.c
+index ecced25bd9b..ea0c6fcdd67 100644
+--- a/ld/plugin.c
++++ b/ld/plugin.c
+@@ -1341,6 +1341,9 @@ plugin_maybe_claim (lang_input_statement_type *entry)
+     {
+       bfd *abfd = entry->the_bfd->plugin_dummy_bfd;
+ 
++      /* Check object only section.  */
++      cmdline_check_object_only_section (entry->the_bfd, true);
++
+       /* Discard the real file's BFD and substitute the dummy one.  */
+ 
+       /* We can't call bfd_close on archives.  BFD archive handling
+diff --git a/ld/scripttempl/elf.sc b/ld/scripttempl/elf.sc
+index ccecc1088b8..deb69dde543 100644
+--- a/ld/scripttempl/elf.sc
++++ b/ld/scripttempl/elf.sc
+@@ -244,7 +244,7 @@ RELA_IPLT=".rela.iplt    ${RELOCATING-0} :
+ DYNAMIC=".dynamic      ${RELOCATING-0} : { *(.dynamic) }"
+ RODATA=".${RODATA_NAME}       ${RELOCATING-0} : { *(.${RODATA_NAME}${RELOCATING+ .${RODATA_NAME}.* .gnu.linkonce.r.*}) }"
+ DATARELRO=".data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }"
+-DISCARDED="/DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) }"
++DISCARDED="/DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) }"
+ if test -z "${NO_SMALL_DATA}"; then
+   SBSS=".${SBSS_NAME}         ${RELOCATING-0} :
+   {
+diff --git a/ld/scripttempl/elf64hppa.sc b/ld/scripttempl/elf64hppa.sc
+index c468453d79d..b6701bf1d26 100644
+--- a/ld/scripttempl/elf64hppa.sc
++++ b/ld/scripttempl/elf64hppa.sc
+@@ -132,7 +132,7 @@ fi
+ DYNAMIC=".dynamic      ${RELOCATING-0} : { *(.dynamic) }"
+ RODATA=".rodata       ${RELOCATING-0} : { *(.rodata${RELOCATING+ .rodata.* .gnu.linkonce.r.*}) }"
+ DATARELRO=".data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }"
+-DISCARDED="/DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink)  *(.gnu.lto_*) }"
++DISCARDED="/DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) }"
+ if test -z "${NO_SMALL_DATA}"; then
+   SBSS=".sbss         ${RELOCATING-0} :
+   {
+diff --git a/ld/scripttempl/elfxtensa.sc b/ld/scripttempl/elfxtensa.sc
+index fcda83c4dc9..2f62c2dbc54 100644
+--- a/ld/scripttempl/elfxtensa.sc
++++ b/ld/scripttempl/elfxtensa.sc
+@@ -145,7 +145,7 @@ fi
+ DYNAMIC=".dynamic      ${RELOCATING-0} : { *(.dynamic) }"
+ RODATA=".rodata       ${RELOCATING-0} : { *(.rodata${RELOCATING+ .rodata.* .gnu.linkonce.r.*}) }"
+ DATARELRO=".data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }"
+-DISCARDED="/DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink)  *(.gnu.lto_*) }"
++DISCARDED="/DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) }"
+ INIT_LIT=".init.literal 0 : { *(.init.literal)	}"
+ INIT=".init         0 : { KEEP (*(SORT_NONE(.init))) }"
+ FINI_LIT=".fini.literal 0 : { *(.fini.literal)	}"
+diff --git a/ld/scripttempl/mep.sc b/ld/scripttempl/mep.sc
+index 7f0f46ae8e9..8fdf3117a40 100644
+--- a/ld/scripttempl/mep.sc
++++ b/ld/scripttempl/mep.sc
+@@ -119,7 +119,7 @@ fi
+ DYNAMIC=".dynamic      ${RELOCATING-0} : { *(.dynamic) }"
+ RODATA=".rodata       ${RELOCATING-0} : { *(.rodata${RELOCATING+ .rodata.* .gnu.linkonce.r.*}) }"
+ DATARELRO=".data.rel.ro : { *(.data.rel.ro.local) *(.data.rel.ro .data.rel.ro.*) }"
+-DISCARDED="/DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink)  *(.gnu.lto_*) }"
++DISCARDED="/DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) }"
+ if test -z "${NO_SMALL_DATA}"; then
+   SBSS=".sbss         ${RELOCATING-0} :
+   {
+diff --git a/ld/scripttempl/pe.sc b/ld/scripttempl/pe.sc
+index 6ca5f040a36..96a47515444 100644
+--- a/ld/scripttempl/pe.sc
++++ b/ld/scripttempl/pe.sc
+@@ -230,6 +230,7 @@ SECTIONS
+     ${RELOCATING+ *(.drectve)}
+     ${RELOCATING+ *(.note.GNU-stack)}
+     ${RELOCATING+ *(.gnu.lto_*)}
++    ${RELOCATING+ *(.gnu_object_only)}
+   }
+ 
+   .idata ${RELOCATING+BLOCK(__section_alignment__)} :
+diff --git a/ld/scripttempl/pep.sc b/ld/scripttempl/pep.sc
+index d9ba2be49d9..e2c6c2cedd2 100644
+--- a/ld/scripttempl/pep.sc
++++ b/ld/scripttempl/pep.sc
+@@ -237,6 +237,7 @@ SECTIONS
+     ${RELOCATING+ *(.drectve)}
+     ${RELOCATING+ *(.note.GNU-stack)}
+     ${RELOCATING+ *(.gnu.lto_*)}
++    ${RELOCATING+ *(.gnu_object_only)}
+   }
+ 
+   .idata ${RELOCATING+BLOCK(__section_alignment__)} :
+diff --git a/ld/testsuite/ld-plugin/lto-10.out b/ld/testsuite/ld-plugin/lto-10.out
+new file mode 100644
+index 00000000000..ce013625030
+--- /dev/null
++++ b/ld/testsuite/ld-plugin/lto-10.out
+@@ -0,0 +1 @@
++hello
+diff --git a/ld/testsuite/ld-plugin/lto-10a.c b/ld/testsuite/ld-plugin/lto-10a.c
+new file mode 100644
+index 00000000000..93d57b520cb
+--- /dev/null
++++ b/ld/testsuite/ld-plugin/lto-10a.c
+@@ -0,0 +1,6 @@
++extern int foo(void);
++
++int main(void)
++{
++  return foo();
++}
+diff --git a/ld/testsuite/ld-plugin/lto-10b.c b/ld/testsuite/ld-plugin/lto-10b.c
+new file mode 100644
+index 00000000000..507055be341
+--- /dev/null
++++ b/ld/testsuite/ld-plugin/lto-10b.c
+@@ -0,0 +1,7 @@
++#include <stdio.h>
++
++int foo(void)
++{
++  printf ("hello\n");
++  return 0;
++}
+diff --git a/ld/testsuite/ld-plugin/lto-10r.d b/ld/testsuite/ld-plugin/lto-10r.d
+new file mode 100644
+index 00000000000..3502056153d
+--- /dev/null
++++ b/ld/testsuite/ld-plugin/lto-10r.d
+@@ -0,0 +1,9 @@
++#ld: -r tmpdir/lto-10a.o tmpdir/lto-10b.o
++#source: dummy.s
++#objdump: -h
++
++#...
++ *[0-9]+ +\.gnu\.lto_\.[0-9a-zA-Z_\.]+ +[0-9a-f]+ +[0-9a-f]+  +[0-9a-f]+ +[0-9a-f]+ .*
++#...
++ *[0-9]+ +\.gnu_object_only +[0-9a-f]+ +0+ +0+ +0+[1-9a-f][0-9a-f]+ +.*
++#pass
+diff --git a/ld/testsuite/ld-plugin/lto-4.out b/ld/testsuite/ld-plugin/lto-4.out
+new file mode 100644
+index 00000000000..8d8cc9240c8
+--- /dev/null
++++ b/ld/testsuite/ld-plugin/lto-4.out
+@@ -0,0 +1,2 @@
++hello bar
++hello foo
+diff --git a/ld/testsuite/ld-plugin/lto-4a.c b/ld/testsuite/ld-plugin/lto-4a.c
+new file mode 100644
+index 00000000000..2d07cf585da
+--- /dev/null
++++ b/ld/testsuite/ld-plugin/lto-4a.c
+@@ -0,0 +1,7 @@
++extern void foo(void);
++
++int main(void)
++{
++  foo();
++  return 0;
++}
+diff --git a/ld/testsuite/ld-plugin/lto-4b.c b/ld/testsuite/ld-plugin/lto-4b.c
+new file mode 100644
+index 00000000000..bb4a68bb986
+--- /dev/null
++++ b/ld/testsuite/ld-plugin/lto-4b.c
+@@ -0,0 +1,9 @@
++#include <stdio.h>
++
++extern void bar (void);
++
++void foo(void)
++{
++  bar ();
++  printf ("hello foo\n");
++}
+diff --git a/ld/testsuite/ld-plugin/lto-4c.c b/ld/testsuite/ld-plugin/lto-4c.c
+new file mode 100644
+index 00000000000..317e6fcdacd
+--- /dev/null
++++ b/ld/testsuite/ld-plugin/lto-4c.c
+@@ -0,0 +1,6 @@
++#include <stdio.h>
++
++void bar (void)
++{
++  printf ("hello bar\n");
++}
+diff --git a/ld/testsuite/ld-plugin/lto-4r-a.d b/ld/testsuite/ld-plugin/lto-4r-a.d
+new file mode 100644
+index 00000000000..c618cffb028
+--- /dev/null
++++ b/ld/testsuite/ld-plugin/lto-4r-a.d
+@@ -0,0 +1,7 @@
++#ld: -r tmpdir/lto-4a.o tmpdir/lto-4b.o tmpdir/lto-4c.o
++#source: dummy.s
++#objdump: -h
++
++#...
++.* .gnu_object_only.*
++#pass
+diff --git a/ld/testsuite/ld-plugin/lto-4r-b.d b/ld/testsuite/ld-plugin/lto-4r-b.d
+new file mode 100644
+index 00000000000..07d71cb5328
+--- /dev/null
++++ b/ld/testsuite/ld-plugin/lto-4r-b.d
+@@ -0,0 +1,7 @@
++#ld: -r tmpdir/lto-4a.o tmpdir/lto-4b.o
++#source: dummy.s
++#objdump: -h
++
++#...
++.* .gnu_object_only.*
++#pass
+diff --git a/ld/testsuite/ld-plugin/lto-4r-c.d b/ld/testsuite/ld-plugin/lto-4r-c.d
+new file mode 100644
+index 00000000000..4e691ea01ac
+--- /dev/null
++++ b/ld/testsuite/ld-plugin/lto-4r-c.d
+@@ -0,0 +1,7 @@
++#ld: -r tmpdir/lto-4r-b.o tmpdir/lto-4c.o --no-warn-execstack --no-error-execstack
++#source: dummy.s
++#objdump: -h
++
++#...
++.* .gnu_object_only.*
++#pass
+diff --git a/ld/testsuite/ld-plugin/lto-4r-d.d b/ld/testsuite/ld-plugin/lto-4r-d.d
+new file mode 100644
+index 00000000000..d4c58526cc5
+--- /dev/null
++++ b/ld/testsuite/ld-plugin/lto-4r-d.d
+@@ -0,0 +1,7 @@
++#ld: -r --whole-archive tmpdir/liblto-4.a
++#source: dummy.s
++#objdump: -h
++
++#...
++.* .gnu_object_only.*
++#pass
+diff --git a/ld/testsuite/ld-plugin/lto.exp b/ld/testsuite/ld-plugin/lto.exp
+index e36480aee78..e454b485ed9 100644
+--- a/ld/testsuite/ld-plugin/lto.exp
++++ b/ld/testsuite/ld-plugin/lto.exp
+@@ -72,6 +72,15 @@ set lto_link_tests [list \
+   [list "Build liblto-3.a" \
+    "" "-flto $lto_fat" \
+    {lto-3b.c} {} "liblto-3.a"] \
++  [list "Compile 4a" \
++   "" "-flto $lto_fat" \
++   {lto-4a.c} {} ""] \
++  [list "Compile 4b" \
++   "" "-O2" \
++   {lto-4b.c} {} ""] \
++  [list "Compile 4c" \
++   "" "-O2" \
++   {lto-4c.c} {} ""] \
+   [list "Compile 5a" \
+    "" "-flto $lto_fat" \
+    {lto-5a.c} {} ""] \
+@@ -84,6 +93,12 @@ set lto_link_tests [list \
+   [list "Compile 9" \
+    "" "-O2 -finline -flto" \
+    {lto-9.cc} {} "" "c++"] \
++  [list "Compile 10a" \
++   "" "-O2" \
++   {lto-10a.c} {} ""] \
++  [list "Compile 10b" \
++   "" "-O2 -flto $lto_fat" \
++   {lto-10b.c} {} ""] \
+   [list "Compile 11a" \
+    "" "-O -flto" \
+    {lto-11a.c} {} ""] \
+@@ -711,9 +726,29 @@ set lto_run_tests [list \
+   [list "LTO 3c" \
+    "-O2 -flto -fuse-linker-plugin tmpdir/lto-3a.o tmpdir/lto-3c.o -Wl,--whole-archive tmpdir/liblto-3.a -Wl,--no-whole-archive tmpdir/liblto-3.a" "" \
+    {dummy.c} "lto-3d.exe" "lto-3.out" "" "c"] \
++  [list "LTO 4a" \
++   "-O2 -flto -fuse-linker-plugin \
++    -Wl,--no-warn-execstack,--no-error-execstack \
++    tmpdir/lto-4r-a.o" "" \
++   {dummy.c} "lto-4a.exe" "lto-4.out" "" "c"] \
++  [list "LTO 4c" \
++   "-O2 -flto -fuse-linker-plugin \
++    -Wl,--no-warn-execstack,--no-error-execstack \
++    tmpdir/lto-4r-c.o" "" \
++   {dummy.c} "lto-4c.exe" "lto-4.out" "" "c"] \
++  [list "LTO 4d" \
++   "-O2 -flto -fuse-linker-plugin \
++    -Wl,--no-warn-execstack,--no-error-execstack \
++    tmpdir/lto-4r-d.o" "" \
++   {dummy.c} "lto-4d.exe" "lto-4.out" "" "c"] \
+   [list "LTO 5" \
+    "-O2 -flto -fuse-linker-plugin tmpdir/lto-5.o" "" \
+    {dummy.c} "lto-5.exe" "lto-5.out" "" "c"] \
++  [list "LTO 10" \
++   "-O2 -flto -fuse-linker-plugin \
++    -Wl,--no-warn-execstack,--no-error-execstack \
++    tmpdir/lto-10.o" "" \
++   {dummy.c} "lto-10.exe" "lto-10.out" "" "c"] \
+   [list "LTO 11" \
+    "-O -flto -fuse-linker-plugin tmpdir/liblto-11.a" "" \
+    {dummy.c} "lto-11.exe" "lto-11.out" "" "c"] \
+@@ -979,6 +1014,15 @@ if [string match "" $exec_output] then {
+     fail "PR ld/28138 (build only)"
+ }
+ 
++set testname "Build liblto-4.a"
++remote_file host delete "tmpdir/liblto-4.a"
++set catch_output [run_host_cmd "$ar" "rc tmpdir/liblto-4.a tmpdir/lto-4a.o tmpdir/lto-4b.o tmpdir/lto-4c.o"]
++if {![string match "" $catch_output]} {
++    unresolved $testname
++    restore_notify
++    return
++}
++
+ 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"]
+@@ -1091,8 +1135,30 @@ if { [at_least_gcc_version 4 7] } {
+ # Run "ld -r" to generate inputs for complex LTO tests.
+ run_dump_test "lto-3r"
+ remote_exec host "mv" "tmpdir/dump tmpdir/lto-3.o"
++run_dump_test "lto-4r-a"
++remote_exec host "mv" "tmpdir/dump tmpdir/lto-4r-a.o"
++run_dump_test "lto-4r-b"
++remote_exec host "mv" "tmpdir/dump tmpdir/lto-4r-b.o"
++run_dump_test "lto-4r-c"
++remote_exec host "mv" "tmpdir/dump tmpdir/lto-4r-c.o"
++run_dump_test "lto-4r-d"
++remote_exec host "mv" "tmpdir/dump tmpdir/lto-4r-d.o"
+ run_dump_test "lto-5r"
+ remote_exec host "mv" "tmpdir/dump tmpdir/lto-5.o"
++run_dump_test "lto-10r"
++remote_exec host "mv" "tmpdir/dump tmpdir/lto-10.o"
++set testname "nm mixed object"
++set lto_plugin [string trim [run_host_cmd "$CC_FOR_TARGET" "-print-prog-name=liblto_plugin.so"]]
++if { [ regexp "liblto_plugin.so" $lto_plugin ] } {
++    set exec_output [run_host_cmd "$NM" "--plugin $lto_plugin tmpdir/lto-10.o"]
++    if { [ regexp "T main" $exec_output ] } {
++	pass $testname
++    } {
++	fail $testname
++    }
++} {
++    fail $testname
++ }
+ 
+ run_cc_link_tests $lto_link_symbol_tests
+ 
+-- 
+2.48.0
+

diff --git a/9999/0007-ld-Document-mixing-LTO-and-non-LTO-objects-for-r.patch b/9999/0007-ld-Document-mixing-LTO-and-non-LTO-objects-for-r.patch
new file mode 100644
index 0000000..9c17dc9
--- /dev/null
+++ b/9999/0007-ld-Document-mixing-LTO-and-non-LTO-objects-for-r.patch
@@ -0,0 +1,42 @@
+From 2c86c77dc5795a7f1e8f915c138c27893d8141d4 Mon Sep 17 00:00:00 2001
+Message-ID: <2c86c77dc5795a7f1e8f915c138c27893d8141d4.1736748624.git.sam@gentoo.org>
+In-Reply-To: <9f57274faacf1dbb6c2b56d29de150b5e79ecb3d.1736748624.git.sam@gentoo.org>
+References: <9f57274faacf1dbb6c2b56d29de150b5e79ecb3d.1736748624.git.sam@gentoo.org>
+From: "H.J. Lu" <hjl.tools@gmail.com>
+Date: Sat, 11 Jan 2025 07:23:27 +0800
+Subject: [PATCH 7/8] ld: Document mixing LTO and non-LTO objects for -r
+
+	* ld.texi: Document mixing LTO and non-LTO relocatable files for
+	"ld -r".
+
+Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
+---
+ ld/ld.texi | 12 ++++++++++++
+ 1 file changed, 12 insertions(+)
+
+diff --git a/ld/ld.texi b/ld/ld.texi
+index da714a20855..d1787453f57 100644
+--- a/ld/ld.texi
++++ b/ld/ld.texi
+@@ -1126,6 +1126,18 @@ relocations.  Different output formats can have further restrictions; for
+ example some @code{a.out}-based formats do not support partial linking
+ with input files in other formats at all.
+ 
++On ELF platforms, when the relocatable output contains both contents
++which require link-time optimization (LTO) and contents which don't
++require LTO, a .gnu_object_only section will be created to contain a
++relocatable object file, as if @samp{-r} is applied to all relocatable
++inputs which don't require LTO.  When processing a relocatable input
++with a .gnu_object_only section, the linker will extract the
++.gnu_object_only section as a separate input.
++
++Note that since @samp{-r} groups some sections from different input files
++together, there may be negative impacts on code size and locality in
++final executable or shared library.
++
+ This option does the same thing as @samp{-i}.
+ 
+ @kindex -R @var{file}
+-- 
+2.48.0
+

diff --git a/9999/0008-h8300-Handle-.gnu_object_only-section.patch b/9999/0008-h8300-Handle-.gnu_object_only-section.patch
new file mode 100644
index 0000000..1336250
--- /dev/null
+++ b/9999/0008-h8300-Handle-.gnu_object_only-section.patch
@@ -0,0 +1,37 @@
+From c5f942b863c660280535dac32586e64d45308550 Mon Sep 17 00:00:00 2001
+Message-ID: <c5f942b863c660280535dac32586e64d45308550.1736748624.git.sam@gentoo.org>
+In-Reply-To: <9f57274faacf1dbb6c2b56d29de150b5e79ecb3d.1736748624.git.sam@gentoo.org>
+References: <9f57274faacf1dbb6c2b56d29de150b5e79ecb3d.1736748624.git.sam@gentoo.org>
+From: "H.J. Lu" <hjl.tools@gmail.com>
+Date: Tue, 27 Oct 2020 06:39:59 -0700
+Subject: [PATCH 8/8] h8300: Handle .gnu_object_only section
+
+	PR ld/12291
+	PR ld/12430
+	PR ld/13298
+	* config/tc-h8300.c (h8300_elf_section): Handle .gnu_object_only
+	section.
+---
+ gas/config/tc-h8300.c | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/gas/config/tc-h8300.c b/gas/config/tc-h8300.c
+index f8e54064166..105461da92b 100644
+--- a/gas/config/tc-h8300.c
++++ b/gas/config/tc-h8300.c
+@@ -146,8 +146,10 @@ pint (int arg ATTRIBUTE_UNUSED)
+ static void
+ h8300_elf_section (int push)
+ {
+-  static const char * known_data_sections [] = { ".rodata", ".tdata", ".tbss" };
+-  static const char * known_data_prefixes [] = { ".debug", ".zdebug", ".gnu.warning" };
++  static const char * known_data_sections []
++    = { ".rodata", ".tdata", ".tbss", ".gnu_object_only" };
++  static const char * known_data_prefixes []
++    = { ".debug", ".zdebug", ".gnu.warning" };
+   char * saved_ilp = input_line_pointer;
+   const char * name;
+ 
+-- 
+2.48.0
+


^ permalink raw reply related	[flat|nested] 39+ messages in thread

* [gentoo-commits] proj/toolchain/binutils-patches:master commit in: 9999/
@ 2025-01-14  2:09 Sam James
  0 siblings, 0 replies; 39+ messages in thread
From: Sam James @ 2025-01-14  2:09 UTC (permalink / raw
  To: gentoo-commits

commit:     043dad090e6059d52cfc14f7224ad755cdde1dc2
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Tue Jan 14 02:08:51 2025 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Tue Jan 14 02:08:51 2025 +0000
URL:        https://gitweb.gentoo.org/proj/toolchain/binutils-patches.git/commit/?id=043dad09

9999: drop upstream LTO patches

Signed-off-by: Sam James <sam <AT> gentoo.org>

 ...-LTO-and-none-LTO-output-support-for-ld-r.patch | 2928 --------------------
 ...ment-mixing-LTO-and-non-LTO-objects-for-r.patch |   42 -
 ...008-h8300-Handle-.gnu_object_only-section.patch |   37 -
 3 files changed, 3007 deletions(-)

diff --git a/9999/0006-ld-Add-LTO-and-none-LTO-output-support-for-ld-r.patch b/9999/0006-ld-Add-LTO-and-none-LTO-output-support-for-ld-r.patch
deleted file mode 100644
index b26d48f..0000000
--- a/9999/0006-ld-Add-LTO-and-none-LTO-output-support-for-ld-r.patch
+++ /dev/null
@@ -1,2928 +0,0 @@
-From 9f57274faacf1dbb6c2b56d29de150b5e79ecb3d Mon Sep 17 00:00:00 2001
-Message-ID: <9f57274faacf1dbb6c2b56d29de150b5e79ecb3d.1736748624.git.sam@gentoo.org>
-From: "H.J. Lu" <hjl.tools@gmail.com>
-Date: Mon, 4 Nov 2013 09:17:45 -0800
-Subject: [PATCH 6/8] ld: Add LTO and none-LTO output support for ld -r
-
-Link with mixed IR/non-IR objects
-
-* 2 kinds of object files
-  o non-IR object file has
-    * non-IR sections
-  o IR object file has
-    * IR sections
-    * non-IR sections
-    * The output of "ld -r" with mixed IR/non-IR objects should work with:
-        o Compilers/linkers with IR support.
-	o Compilers/linkers without IR support.
-* Add the mixed object file which has
-  o IR sections
-  o non-IR sections:
-    * Object codes from IR sections.
-    * Object codes from non-IR object files.
-  o Object-only section:
-    * With section name ".gnu_object_only" and SHT_GNU_OBJECT_ONLY type
-    on ELF:
-    https://gitlab.com/x86-psABIs/Linux-ABI
-    #define SHT_GNU_OBJECT_ONLY 0x6ffffff8	/* Object only */
-    * Contain non-IR object file.
-    * Input is discarded after link.
-* Linker action:
-  o Classify each input object file:
-    * If there is a ".gnu_object_only" section, it is a mixed object file.
-    * If there is a IR section, it is an IR object file.
-    * Otherwise, it is a non-IR object file.
-  o Relocatable non-IR link:
-    * Prepare for an object-only output.
-    * Prepare for a regular output.
-    * For each mixed object file:
-      * Add IR and non-IR sections to the regular output.
-      * For object-only section:
-	* Extract object only file.
-	* Add it to the object-only output.
-	* Discard object-only section.
-    * For each IR object file:
-      * Add IR and non-IR sections to the regular output.
-    * For each non-IR object file:
-      * Add non-IR sections to the regular output.
-      * Add non-IR sections to the object-only output.
-    * Final output:
-      * If there are IR objects, non-IR objects and the object-only
-      output isn't empty:
-	* Put the object-only output into the object-only section.
-	* Add the object-only section to the regular output.
-	* Remove the object-only output.
-  o Normal link and relocatable IR link:
-    * Prepare for output.
-    * IR link:
-      * For each mixed object file:
-	* Compile and add IR sections to the output.
-	* Discard non-IR sections.
-	* Object-only section:
-	  * Extract object only file.
-	  * Add it to the output.
-	  * Discard object-only section.
-      * For each IR object file:
-        * Compile and add IR sections to the output.
-	* Discard non-IR sections.
-      * For each non-IR object file:
-	* Add non-IR sections to the output.
-    * Non-IR link:
-      * For each mixed object file:
-	* Add non-IR sections to the output.
-	* Discard IR sections and object-only section.
-      * For each IR object file:
-	* Add non-IR sections to the output.
-	* Discard IR sections.
-      * For each non-IR object file:
-	* Add non-IR sections to the output.
-
-This is useful for Linux kernel build with LTO.
-
-bfd/
-
-	PR ld/12291
-	PR ld/12430
-	PR ld/13298
-	* bfd.c (bfd_lto_object_type): Add lto_mixed_object.
-	(bfd): Add object_only_section.
-	(bfd_group_signature): New.
-	* elf.c (special_sections_g): Add .gnu_object_only.
-	* format.c: Include "plugin-api.h" and "plugin.h" if
-	BFD_SUPPORTS_PLUGINS is defined.
-	(bfd_set_lto_type): Set type to lto_mixed_object for
-	GNU_OBJECT_ONLY_SECTION_NAME section.
-	(bfd_check_format_matches): Don't check the plugin target twice
-	if the plugin target is explicitly specified.
-	* opncls.c (bfd_extract_object_only_section): New.
-	* plugin.c (bfd_plugin_fake_text_section): New.
-	(bfd_plugin_fake_data_section): Likewise.
-	(bfd_plugin_fake_bss_section): Likewise.
-	(bfd_plugin_fake_common_section): Likewise.
-	(bfd_plugin_get_symbols_in_object_only): Likewise.
-	* plugin.c (add_symbols): Call
-	bfd_plugin_get_symbols_in_object_only and count
-	plugin_data->object_only_nsyms.
-	(bfd_plugin_get_symtab_upper_bound): Count
-	plugin_data->object_only_nsyms.
-	bfd_plugin_get_symbols_in_object_only and add symbols from
-	object only section.
-	(bfd_plugin_canonicalize_symtab): Remove fake_section,
-	fake_data_section, fake_bss_section and fake_common_section.
-	Set udata.p to NULL.  Use bfd_plugin_fake_text_section,
-	bfd_plugin_fake_data_section, bfd_plugin_fake_bss_section and
-	bfd_plugin_fake_common_section.
-	Set udata.p to NULL.
-	* plugin.h (plugin_data_struct): Add object_only_nsyms and
-	object_only_syms.
-	* section.c (GNU_OBJECT_ONLY_SECTION_NAME): New.
-	* bfd-in2.h: Regenerated.
-
-binutils/
-
-	PR ld/12291
-	PR ld/12430
-	PR ld/13298
-	* objcopy.c (group_signature): Removed.
-	(is_strip_section): Replace group_signature with
-	bfd_group_signature.
-	(setup_section): Likewise.
-	* readelf.c (get_os_specific_section_type_name): Handle
-	SHT_GNU_OBJECT_ONLY.
-
-gas/
-
-	PR ld/12291
-	PR ld/12430
-	PR ld/13298
-	* testsuite/gas/elf/section9.s: Add the .gnu_object_only test.
-	* testsuite/gas/elf/section9.d: Updated.
-
-include/
-
-	PR ld/12291
-	PR ld/12430
-	PR ld/13298
-	* elf/common.h (SHT_GNU_OBJECT_ONLY): New.
-
-ld/
-
-	PR ld/12291
-	PR ld/12430
-	PR ld/13298
-	* ld.h (ld_config_type): Add emit_gnu_object_only and
-	emitting_gnu_object_only.
-	* ldelf.c (orphan_init_done): Make it file scope.
-	(ldelf_place_orphan): Rename hold to orig_hold.  Initialize hold
-	from orig_hold at run-time.
-	(ldelf_finish): New.
-	* ldelf.h (ldelf_finish): New.
-	* ldexp.c (ldexp_init): Take a bfd_boolean argument to supprt
-	object-only output.
-	(ldexp_finish): Likewise.
-	* ldexp.h (ldexp_init): Take a bfd_boolean argument.
-	(ldexp_finish): Likewise.
-	* ldfile.c (ldfile_try_open_bfd): Call
-	cmdline_check_object_only_section.
-	* ldlang.c: Include "ldwrite.h" and elf-bfd.h.
-	* ldlang.c (cmdline_object_only_file_list): New.
-	(cmdline_object_only_archive_list): Likewise.
-	(cmdline_temp_object_only_list): Likewise.
-	(cmdline_lists_init): Likewise.
-	(cmdline_list_new): Likewise.
-	(cmdline_list_append): Likewise.
-	(print_cmdline_list): Likewise.
-	(cmdline_on_object_only_archive_list_p): Likewise.
-	(cmdline_object_only_list_append): Likewise.
-	(cmdline_get_object_only_input_files): Likewise.
-	(cmdline_arg): Likewise.
-	(setup_section): Likewise.
-	(copy_section): Likewise.
-	(cmdline_fopen_temp): Likewise.
-	(cmdline_add_object_only_section): Likewise.
-	(cmdline_emit_object_only_section): Likewise.
-	(cmdline_extract_object_only_section): Likewise.
-	(cmdline_check_object_only_section): Likewise.
-	(cmdline_remove_object_only_files): Likewise.
-	(lang_init): Take a bfd_boolean argument to supprt object-only
-	output.  Call cmdline_lists_init.
-	(load_symbols): Call cmdline_on_object_only_archive_list_p
-	to check if an archive member should be loaded.
-	(lang_process): Handle object-only link.
-	* ldlang.h (lang_init): Take a bfd_boolean argument.
-	(cmdline_enum_type): New.
-	(cmdline_header_type): Likewise.
-	(cmdline_file_type): Likewise.
-	(cmdline_bfd_type): Likewise.
-	(cmdline_union_type): Likewise.
-	(cmdline_list_type): Likewise.
-	(cmdline_emit_object_only_section): Likewise.
-	(cmdline_check_object_only_section): Likewise.
-	(cmdline_remove_object_only_files): Likewise.
-	* ldmain.c (main): Call xatexit with
-	cmdline_remove_object_only_files.  Pass FALSE to lang_init,
-	ldexp_init and ldexp_finish.  Use ld_parse_linker_script.
-	Set link_info.output_bfd to NULL after close.  Call
-	cmdline_emit_object_only_section if needed.
-	(add_archive_element): Call cmdline_check_object_only_section.
-	(ld_parse_linker_script): New.
-	* ldmain.h (ld_parse_linker_script): New.
-	* plugin.c (plugin_maybe_claim): Call
-	cmdline_check_object_only_section on claimed IR files.
-	* scripttempl/elf.sc: Also discard .gnu_object_only sections.
-	* scripttempl/elf64hppa.sc: Likewise.
-	* scripttempl/elfxtensa.sc: Likewise.
-	* scripttempl/mep.sc: Likewise.
-	* scripttempl/pe.sc: Likewise.
-	* scripttempl/pep.sc: Likewise.
-	* emultempl/aarch64elf.em (gld${EMULATION_NAME}_finish): Replace
-	finish_default with ldelf_finish.
-	* emultempl/alphaelf.em (alpha_finish): Likewise.
-	* emultempl/avrelf.em (avr_finish): Likewise.
-	* emultempl/elf.em (ld_${EMULATION_NAME}_emulation): Likewise.
-	* emultempl/ppc32elf.em (ppc_finish): Likewise.
-	* emultempl/ppc64elf.em (gld${EMULATION_NAME}_finish): Likewise.
-	* emultempl/spuelf.em (gld${EMULATION_NAME}_finish): Likewise.
-	* testsuite/ld-plugin/lto-10.out: New file.
-	* testsuite/ld-plugin/lto-10a.c: Likewise.
-	* testsuite/ld-plugin/lto-10b.c: Likewise.
-	* testsuite/ld-plugin/lto-10r.d: Likewise.
-	* testsuite/ld-plugin/lto-4.out: Likewise.
-	* testsuite/ld-plugin/lto-4a.c: Likewise.
-	* testsuite/ld-plugin/lto-4b.c: Likewise.
-	* testsuite/ld-plugin/lto-4c.c: Likewise.
-	* testsuite/ld-plugin/lto-4r-a.d: Likewise.
-	* testsuite/ld-plugin/lto-4r-b.d: Likewise.
-	* testsuite/ld-plugin/lto-4r-c.d: Likewise.
-	* testsuite/ld-plugin/lto-4r-d.d: Likewise.
-	* testsuite/ld-plugin/lto.exp (lto_link_tests): Prepare for
-	"LTO 4[acd]", "lto-4r-[abcd]" and "LTO 10" tests.
-	(lto_run_tests): Add "LTO 4[acd]" and "LTO 10" tests.
-	Build liblto-4.a.  Run "lto-4r-[abcd]" tests.
-	Run lto-10r and create tmpdir/lto-10.o.
-	Add test for nm on mixed LTO/non-LTO object.
-
-Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
----
- bfd/bfd-in2.h                     |   16 +-
- bfd/bfd.c                         |   46 +-
- bfd/elf.c                         |    1 +
- bfd/format.c                      |   37 +-
- bfd/opncls.c                      |   66 ++
- bfd/plugin.c                      |  193 +++++-
- bfd/plugin.h                      |    2 +
- bfd/section.c                     |    3 +
- binutils/objcopy.c                |   32 +-
- binutils/readelf.c                |    1 +
- gas/testsuite/gas/elf/section9.d  |    1 +
- gas/testsuite/gas/elf/section9.s  |    2 +
- include/elf/common.h              |    1 +
- ld/emultempl/aarch64elf.em        |    2 +-
- ld/emultempl/alphaelf.em          |    2 +-
- ld/emultempl/armelf.em            |    2 +-
- ld/emultempl/avrelf.em            |    2 +-
- ld/emultempl/elf.em               |    1 +
- ld/emultempl/ppc32elf.em          |    2 +-
- ld/emultempl/ppc64elf.em          |    2 +-
- ld/emultempl/spuelf.em            |    2 +-
- ld/ld.h                           |    6 +
- ld/ldelf.c                        |   26 +-
- ld/ldelf.h                        |    1 +
- ld/ldexp.c                        |   16 +-
- ld/ldexp.h                        |    4 +-
- ld/ldfile.c                       |    2 +
- ld/ldlang.c                       | 1027 ++++++++++++++++++++++++++++-
- ld/ldlang.h                       |   44 +-
- ld/ldmain.c                       |   80 ++-
- ld/ldmain.h                       |    2 +
- ld/plugin.c                       |    3 +
- ld/scripttempl/elf.sc             |    2 +-
- ld/scripttempl/elf64hppa.sc       |    2 +-
- ld/scripttempl/elfxtensa.sc       |    2 +-
- ld/scripttempl/mep.sc             |    2 +-
- ld/scripttempl/pe.sc              |    1 +
- ld/scripttempl/pep.sc             |    1 +
- ld/testsuite/ld-plugin/lto-10.out |    1 +
- ld/testsuite/ld-plugin/lto-10a.c  |    6 +
- ld/testsuite/ld-plugin/lto-10b.c  |    7 +
- ld/testsuite/ld-plugin/lto-10r.d  |    9 +
- ld/testsuite/ld-plugin/lto-4.out  |    2 +
- ld/testsuite/ld-plugin/lto-4a.c   |    7 +
- ld/testsuite/ld-plugin/lto-4b.c   |    9 +
- ld/testsuite/ld-plugin/lto-4c.c   |    6 +
- ld/testsuite/ld-plugin/lto-4r-a.d |    7 +
- ld/testsuite/ld-plugin/lto-4r-b.d |    7 +
- ld/testsuite/ld-plugin/lto-4r-c.d |    7 +
- ld/testsuite/ld-plugin/lto-4r-d.d |    7 +
- ld/testsuite/ld-plugin/lto.exp    |   66 ++
- 51 files changed, 1653 insertions(+), 125 deletions(-)
- create mode 100644 ld/testsuite/ld-plugin/lto-10.out
- create mode 100644 ld/testsuite/ld-plugin/lto-10a.c
- create mode 100644 ld/testsuite/ld-plugin/lto-10b.c
- create mode 100644 ld/testsuite/ld-plugin/lto-10r.d
- create mode 100644 ld/testsuite/ld-plugin/lto-4.out
- create mode 100644 ld/testsuite/ld-plugin/lto-4a.c
- create mode 100644 ld/testsuite/ld-plugin/lto-4b.c
- create mode 100644 ld/testsuite/ld-plugin/lto-4c.c
- create mode 100644 ld/testsuite/ld-plugin/lto-4r-a.d
- create mode 100644 ld/testsuite/ld-plugin/lto-4r-b.d
- create mode 100644 ld/testsuite/ld-plugin/lto-4r-c.d
- create mode 100644 ld/testsuite/ld-plugin/lto-4r-d.d
-
-diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
-index 3a5a6dd8a5f..1b82b6bcc99 100644
---- a/bfd/bfd-in2.h
-+++ b/bfd/bfd-in2.h
-@@ -925,6 +925,9 @@ extern asection _bfd_std_section[4];
- #define BFD_COM_SECTION_NAME "*COM*"
- #define BFD_IND_SECTION_NAME "*IND*"
- 
-+/* GNU object-only section name.  */
-+#define GNU_OBJECT_ONLY_SECTION_NAME ".gnu_object_only"
-+
- /* Pointer to the common section.  */
- #define bfd_com_section_ptr (&_bfd_std_section[0])
- /* Pointer to the undefined section.  */
-@@ -1962,7 +1965,8 @@ enum bfd_lto_object_type
-     lto_non_object,            /* Not an LTO object.  */
-     lto_non_ir_object,         /* An object without LTO IR.  */
-     lto_slim_ir_object,        /* A slim LTO IR object.  */
--    lto_fat_ir_object          /* A fat LTO IR object.  */
-+    lto_fat_ir_object,         /* A fat LTO IR object.  */
-+    lto_mixed_object           /* A mixed LTO IR object.  */
-   };
- 
- struct bfd_mmapped_entry
-@@ -2185,7 +2189,7 @@ struct bfd
-   unsigned int read_only : 1;
- 
-   /* LTO object type.  */
--  ENUM_BITFIELD (bfd_lto_object_type) lto_type : 2;
-+  ENUM_BITFIELD (bfd_lto_object_type) lto_type : 3;
- 
-   /* Set if this BFD is currently being processed by
-      bfd_check_format_matches.  This is checked by the cache to
-@@ -2217,6 +2221,9 @@ struct bfd
-   /* The last section on the section list.  */
-   struct bfd_section *section_last;
- 
-+  /* The object-only section on the section list.  */
-+  struct bfd_section *object_only_section;
-+
-   /* The number of sections.  */
-   unsigned int section_count;
- 
-@@ -2790,6 +2797,8 @@ bfd_vma bfd_emul_get_commonpagesize (const char *);
- 
- char *bfd_demangle (bfd *, const char *, int);
- 
-+asymbol *bfd_group_signature (asection *group, asymbol **isympp);
-+
- /* Extracted from bfdio.c.  */
- bfd_size_type bfd_read (void *, bfd_size_type, bfd *)
- ATTRIBUTE_WARN_UNUSED_RESULT;
-@@ -3073,6 +3082,9 @@ char *bfd_follow_build_id_debuglink (bfd *abfd, const char *dir);
- 
- const char *bfd_set_filename (bfd *abfd, const char *filename);
- 
-+const char *bfd_extract_object_only_section
-+   (bfd *abfd);
-+
- /* Extracted from reloc.c.  */
- typedef enum bfd_reloc_status
- {
-diff --git a/bfd/bfd.c b/bfd/bfd.c
-index 194f24179fd..a8d1314b83f 100644
---- a/bfd/bfd.c
-+++ b/bfd/bfd.c
-@@ -80,7 +80,8 @@ EXTERNAL
- .    lto_non_object,		{* Not an LTO object.  *}
- .    lto_non_ir_object,		{* An object without LTO IR.  *}
- .    lto_slim_ir_object,	{* A slim LTO IR object.  *}
--.    lto_fat_ir_object		{* A fat LTO IR object.  *}
-+.    lto_fat_ir_object,		{* A fat LTO IR object.  *}
-+.    lto_mixed_object		{* A mixed LTO IR object.  *}
- .  };
- .
- .struct bfd_mmapped_entry
-@@ -306,7 +307,7 @@ CODE_FRAGMENT
- .  unsigned int read_only : 1;
- .
- .  {* LTO object type.  *}
--.  ENUM_BITFIELD (bfd_lto_object_type) lto_type : 2;
-+.  ENUM_BITFIELD (bfd_lto_object_type) lto_type : 3;
- .
- .  {* Set if this BFD is currently being processed by
- .     bfd_check_format_matches.  This is checked by the cache to
-@@ -338,6 +339,9 @@ CODE_FRAGMENT
- .  {* The last section on the section list.  *}
- .  struct bfd_section *section_last;
- .
-+.  {* The object-only section on the section list.  *}
-+.  struct bfd_section *object_only_section;
-+.
- .  {* The number of sections.  *}
- .  unsigned int section_count;
- .
-@@ -3034,3 +3038,41 @@ _bfd_get_link_info (bfd *abfd)
- 
-   return elf_link_info (abfd);
- }
-+
-+/*
-+FUNCTION
-+	bfd_group_signature
-+
-+SYNOPSIS
-+	asymbol *bfd_group_signature (asection *group, asymbol **isympp);
-+
-+DESCRIPTION
-+	Return a pointer to the symbol used as a signature for GROUP.
-+*/
-+
-+asymbol *
-+bfd_group_signature (asection *group, asymbol **isympp)
-+{
-+  bfd *abfd = group->owner;
-+  Elf_Internal_Shdr *ghdr;
-+
-+  /* PR 20089: An earlier error may have prevented us from loading the
-+     symbol table.  */
-+  if (isympp == NULL)
-+    return NULL;
-+
-+  if (bfd_get_flavour (abfd) != bfd_target_elf_flavour)
-+    return NULL;
-+
-+  ghdr = &elf_section_data (group)->this_hdr;
-+  if (ghdr->sh_link == elf_onesymtab (abfd))
-+    {
-+      const struct elf_backend_data *bed = get_elf_backend_data (abfd);
-+      Elf_Internal_Shdr *symhdr = &elf_symtab_hdr (abfd);
-+
-+      if (ghdr->sh_info > 0
-+	  && ghdr->sh_info < symhdr->sh_size / bed->s->sizeof_sym)
-+	return isympp[ghdr->sh_info - 1];
-+    }
-+  return NULL;
-+}
-diff --git a/bfd/elf.c b/bfd/elf.c
-index 218d58df8be..30bbdc662af 100644
---- a/bfd/elf.c
-+++ b/bfd/elf.c
-@@ -3014,6 +3014,7 @@ static const struct bfd_elf_special_section special_sections_g[] =
-   { STRING_COMMA_LEN (".gnu.linkonce.p"), -2, SHT_PROGBITS,    SHF_ALLOC + SHF_WRITE },
-   { STRING_COMMA_LEN (".gnu.lto_"),	  -1, SHT_PROGBITS,    SHF_EXCLUDE },
-   { STRING_COMMA_LEN (".got"),		   0, SHT_PROGBITS,    SHF_ALLOC + SHF_WRITE },
-+  { STRING_COMMA_LEN (".gnu_object_only"), 0, SHT_GNU_OBJECT_ONLY, SHF_EXCLUDE },
-   { STRING_COMMA_LEN (".gnu.version"),	   0, SHT_GNU_versym,  0 },
-   { STRING_COMMA_LEN (".gnu.version_d"),   0, SHT_GNU_verdef,  0 },
-   { STRING_COMMA_LEN (".gnu.version_r"),   0, SHT_GNU_verneed, 0 },
-diff --git a/bfd/format.c b/bfd/format.c
-index 125815935f6..7769ad095f6 100644
---- a/bfd/format.c
-+++ b/bfd/format.c
-@@ -46,6 +46,10 @@ SUBSECTION
- #include "sysdep.h"
- #include "bfd.h"
- #include "libbfd.h"
-+#if BFD_SUPPORTS_PLUGINS
-+#include "plugin-api.h"
-+#include "plugin.h"
-+#endif
- 
- /* IMPORT from targets.c.  */
- extern const size_t _bfd_target_vector_entries;
-@@ -349,23 +353,32 @@ bfd_set_lto_type (bfd *abfd ATTRIBUTE_UNUSED)
- #if BFD_SUPPORTS_PLUGINS
-   if (abfd->format == bfd_object
-       && abfd->lto_type == lto_non_object
--      && (abfd->flags & (DYNAMIC | EXEC_P)) == 0)
-+      && (abfd->flags
-+	  & (DYNAMIC
-+	     | (bfd_get_flavour (abfd) == bfd_target_elf_flavour
-+		? EXEC_P : 0))) == 0)
-     {
-       asection *sec;
-       enum bfd_lto_object_type type = lto_non_ir_object;
--      struct lto_section lsection;
-+      struct lto_section lsection = { 0, 0, 0, 0 };
-       /* GCC uses .gnu.lto_.lto.<some_hash> as a LTO bytecode information
- 	 section.  */
-       for (sec = abfd->sections; sec != NULL; sec = sec->next)
--	if (startswith (sec->name, ".gnu.lto_.lto.")
--	    && bfd_get_section_contents (abfd, sec, &lsection, 0,
--					 sizeof (struct lto_section)))
-+	if (strcmp (sec->name, GNU_OBJECT_ONLY_SECTION_NAME) == 0)
-+	  {
-+	    type = lto_mixed_object;
-+	    abfd->object_only_section = sec;
-+	    break;
-+	  }
-+	else if (lsection.major_version == 0
-+		 && startswith (sec->name, ".gnu.lto_.lto.")
-+		 && bfd_get_section_contents (abfd, sec, &lsection, 0,
-+					      sizeof (struct lto_section)))
- 	  {
- 	    if (lsection.slim_object)
- 	      type = lto_slim_ir_object;
- 	    else
- 	      type = lto_fat_ir_object;
--	    break;
- 	  }
- 
-       abfd->lto_type = type;
-@@ -397,9 +410,6 @@ bool
- bfd_check_format_matches (bfd *abfd, bfd_format format, char ***matching)
- {
-   extern const bfd_target binary_vec;
--#if BFD_SUPPORTS_PLUGINS
--  extern const bfd_target plugin_vec;
--#endif
-   const bfd_target * const *target;
-   const bfd_target **matching_vector = NULL;
-   const bfd_target *save_targ, *right_targ, *ar_right_targ, *match_targ;
-@@ -507,11 +517,18 @@ bfd_check_format_matches (bfd *abfd, bfd_format format, char ***matching)
- 	 check the default target twice.  */
-       if (*target == &binary_vec
- #if BFD_SUPPORTS_PLUGINS
--	  || (match_count != 0 && *target == &plugin_vec)
-+	  || (match_count != 0 && bfd_plugin_target_p (*target))
- #endif
- 	  || (!abfd->target_defaulted && *target == save_targ))
- 	continue;
- 
-+#if BFD_SUPPORTS_PLUGINS
-+      /* If the plugin target is explicitly specified when a BFD file
-+	 is opened, don't check it twice.  */
-+      if (bfd_plugin_specified_p () && bfd_plugin_target_p (*target))
-+	continue;
-+#endif
-+
-       /* If we already tried a match, the bfd is modified and may
- 	 have sections attached, which will confuse the next
- 	 _bfd_check_format call.  */
-diff --git a/bfd/opncls.c b/bfd/opncls.c
-index 93adbf117f0..ca7dbf23aa6 100644
---- a/bfd/opncls.c
-+++ b/bfd/opncls.c
-@@ -2054,3 +2054,69 @@ bfd_set_filename (bfd *abfd, const char *filename)
- 
-   return n;
- }
-+
-+/*
-+FUNCTION
-+	bfd_extract_object_only_section
-+
-+SYNOPSIS
-+	const char *bfd_extract_object_only_section
-+	  (bfd *abfd);
-+
-+DESCRIPTION
-+
-+	Takes a @var{ABFD} and extract the .gnu_object_only section into
-+	a temporary file.
-+
-+RETURNS
-+	The name of the temporary file is returned if all is ok.
-+	Otherwise <<NULL>> is returned and bfd_error is set.
-+*/
-+
-+const char *
-+bfd_extract_object_only_section (bfd *abfd)
-+{
-+  asection *sec = abfd->object_only_section;
-+  const char *name;
-+  FILE *file;
-+  bfd_byte *memhunk = NULL;
-+  size_t off, size;
-+  bfd_error_type err;
-+
-+  /* Get a temporary object-only file.  */
-+  name = make_temp_file (".obj-only.o");
-+
-+  /* Open the object-only file.  */
-+  file = _bfd_real_fopen (name, FOPEN_WB);
-+  if (!bfd_get_full_section_contents (abfd, sec, &memhunk))
-+    {
-+      err = bfd_get_error ();
-+
-+loser:
-+      free (memhunk);
-+      fclose (file);
-+      unlink (name);
-+      bfd_set_error (err);
-+      return NULL;
-+    }
-+
-+  off = 0;
-+  size = sec->size;
-+  while (off != size)
-+    {
-+      size_t written, nwrite = size - off;
-+
-+      written = fwrite (memhunk + off, 1, nwrite, file);
-+      if (written < nwrite && ferror (file))
-+	{
-+	  err = bfd_error_system_call;
-+	  goto loser;
-+	}
-+
-+      off += written;
-+    }
-+
-+  free (memhunk);
-+  fclose (file);
-+  return name;
-+}
-diff --git a/bfd/plugin.c b/bfd/plugin.c
-index 67454adffb9..d57ae593e78 100644
---- a/bfd/plugin.c
-+++ b/bfd/plugin.c
-@@ -160,6 +160,158 @@ register_claim_file (ld_plugin_claim_file_handler handler)
-   return LDPS_OK;
- }
- 
-+static asection bfd_plugin_fake_text_section
-+  = BFD_FAKE_SECTION (bfd_plugin_fake_text_section, NULL, "plug", 0,
-+		      SEC_ALLOC | SEC_LOAD | SEC_CODE | SEC_HAS_CONTENTS);
-+static asection bfd_plugin_fake_data_section
-+  = BFD_FAKE_SECTION (bfd_plugin_fake_data_section, NULL, "plug", 0,
-+		      SEC_ALLOC | SEC_LOAD | SEC_DATA | SEC_HAS_CONTENTS);
-+static asection bfd_plugin_fake_bss_section
-+  = BFD_FAKE_SECTION (bfd_plugin_fake_bss_section, NULL, "plug", 0,
-+		      SEC_ALLOC);
-+static asection bfd_plugin_fake_common_section
-+  = BFD_FAKE_SECTION (bfd_plugin_fake_common_section, NULL, NULL,
-+		      0, SEC_IS_COMMON);
-+
-+/* Get symbols from object only section.  */
-+
-+static void
-+bfd_plugin_get_symbols_in_object_only (bfd *abfd)
-+{
-+  struct plugin_data_struct *plugin_data = abfd->tdata.plugin_data;
-+  const char *object_only_file;
-+  bfd *nbfd;
-+  long storage;
-+  long object_only_nsyms, added_nsyms, i;
-+  asymbol **object_only_syms, **added_syms;
-+
-+  plugin_data->object_only_syms = NULL;
-+  plugin_data->object_only_nsyms = 0;
-+
-+  if (abfd->sections == NULL && abfd->my_archive == NULL)
-+    {
-+      nbfd = bfd_openr (abfd->filename, NULL);
-+      if (nbfd == NULL)
-+	{
-+	  (*_bfd_error_handler)
-+	    (_("%s: failed to open to extract object only section: %s"),
-+	     abfd->filename, bfd_errmsg (bfd_get_error ()));
-+	  return;
-+	}
-+      else if (!bfd_check_format (nbfd, bfd_object))
-+	{
-+	  /* There is no object only section if it isn't a bfd_object
-+	     file.  */
-+	  bfd_close (nbfd);
-+	  return;
-+	}
-+    }
-+  else
-+    {
-+      if (!bfd_check_format (abfd, bfd_object))
-+	{
-+	  (*_bfd_error_handler)
-+	    (_("%pB: invalid file to extract object only section: %s"),
-+	     abfd, bfd_errmsg (bfd_get_error ()));
-+	  return;
-+	}
-+      nbfd = abfd;
-+    }
-+
-+  if (nbfd->lto_type == lto_mixed_object
-+      && (nbfd->flags & HAS_SYMS) != 0)
-+    {
-+      object_only_file = bfd_extract_object_only_section (nbfd);
-+      if (object_only_file == NULL)
-+	(*_bfd_error_handler)
-+	  (_("%pB: failed to extract object only section: %s"),
-+	   abfd, bfd_errmsg (bfd_get_error ()));
-+    }
-+  else
-+    object_only_file = NULL;
-+
-+  /* Close the new bfd we just opened.  */
-+  if (nbfd != abfd)
-+    bfd_close (nbfd);
-+
-+  /* Return if there is no object only section or there is no
-+     symbol in object only section.  */
-+  if (!object_only_file)
-+    return;
-+
-+  /* Open the file containing object only section.  */
-+  nbfd = bfd_openr (object_only_file, NULL);
-+  if (!bfd_check_format (nbfd, bfd_object))
-+    {
-+      (*_bfd_error_handler)
-+	(_("%pB: failed to open object only section: %s"),
-+	 abfd, bfd_errmsg (bfd_get_error ()));
-+      goto quit;
-+    }
-+
-+  storage = bfd_get_symtab_upper_bound (nbfd);
-+  if (storage <= 0)
-+    {
-+      if (storage < 0)
-+	(*_bfd_error_handler)
-+	  (_("%pB: failed to get symbol table in object only section: %s"),
-+	   abfd, bfd_errmsg (bfd_get_error ()));
-+
-+      goto quit;
-+    }
-+
-+  object_only_syms = (asymbol **) bfd_malloc (storage);
-+  object_only_nsyms = bfd_canonicalize_symtab (nbfd, object_only_syms);
-+
-+  /* FIXME: We waste some spaces if not all symbols are copied.  */
-+  added_syms = (asymbol **) bfd_alloc (abfd, storage);
-+  added_nsyms = 0;
-+
-+  /* Copy only global symbols from object only section.  */
-+  for (i = 0; i < object_only_nsyms; i++)
-+    {
-+      asection *sec = object_only_syms[i]->section;
-+      flagword flags = object_only_syms[i]->flags;
-+      asymbol *s;
-+
-+      if (bfd_is_com_section (sec))
-+	sec = &bfd_plugin_fake_common_section;
-+      else if (bfd_is_und_section (sec))
-+	;
-+      else if ((flags & (BSF_GLOBAL | BSF_WEAK | BSF_GNU_UNIQUE)) != 0)
-+	{
-+	  if ((sec->flags & SEC_CODE) != 0)
-+	    sec = &bfd_plugin_fake_text_section;
-+	  else if ((sec->flags & SEC_LOAD) != 0)
-+	    sec = &bfd_plugin_fake_data_section;
-+	  else
-+	    sec = &bfd_plugin_fake_bss_section;
-+	}
-+      else
-+	continue;
-+
-+      s = bfd_alloc (abfd, sizeof (asymbol));
-+      BFD_ASSERT (s);
-+      added_syms[added_nsyms++] = s;
-+
-+      s->section = sec;
-+      s->the_bfd = abfd;
-+      s->name = xstrdup (object_only_syms[i]->name);
-+      s->value = 0;
-+      s->flags = flags;
-+      s->udata.p = NULL;
-+    }
-+
-+  plugin_data->object_only_syms = added_syms;
-+  plugin_data->object_only_nsyms = added_nsyms;
-+
-+  free (object_only_syms);
-+
-+quit:
-+  /* Close and remove the object only section file.  */
-+  bfd_close (nbfd);
-+  unlink (object_only_file);
-+}
- 
- /* Register a claim-file handler, version 2. */
- 
-@@ -185,10 +337,13 @@ add_symbols (void * handle,
-   plugin_data->nsyms = nsyms;
-   plugin_data->syms = syms;
- 
--  if (nsyms != 0)
-+  abfd->tdata.plugin_data = plugin_data;
-+
-+  bfd_plugin_get_symbols_in_object_only (abfd);
-+
-+  if ((nsyms + plugin_data->object_only_nsyms) != 0)
-     abfd->flags |= HAS_SYMS;
- 
--  abfd->tdata.plugin_data = plugin_data;
-   return LDPS_OK;
- }
- 
-@@ -678,7 +833,8 @@ static long
- bfd_plugin_get_symtab_upper_bound (bfd *abfd)
- {
-   struct plugin_data_struct *plugin_data = abfd->tdata.plugin_data;
--  long nsyms = plugin_data->nsyms;
-+  /* Add symbols from object only section.  */
-+  long nsyms = plugin_data->nsyms + plugin_data->object_only_nsyms;
- 
-   BFD_ASSERT (nsyms >= 0);
- 
-@@ -712,18 +868,7 @@ bfd_plugin_canonicalize_symtab (bfd *abfd,
-   struct plugin_data_struct *plugin_data = abfd->tdata.plugin_data;
-   long nsyms = plugin_data->nsyms;
-   const struct ld_plugin_symbol *syms = plugin_data->syms;
--  static asection fake_text_section
--    = BFD_FAKE_SECTION (fake_text_section, NULL, "plug", 0,
--			SEC_ALLOC | SEC_LOAD | SEC_CODE | SEC_HAS_CONTENTS);
--  static asection fake_data_section
--    = BFD_FAKE_SECTION (fake_data_section, NULL, "plug", 0,
--			SEC_ALLOC | SEC_LOAD | SEC_DATA | SEC_HAS_CONTENTS);
--  static asection fake_bss_section
--    = BFD_FAKE_SECTION (fake_bss_section, NULL, "plug", 0,
--			SEC_ALLOC);
--  static asection fake_common_section
--    = BFD_FAKE_SECTION (fake_common_section, NULL, "plug", 0, SEC_IS_COMMON);
--  int i;
-+  int i, j;
- 
-   for (i = 0; i < nsyms; i++)
-     {
-@@ -736,10 +881,11 @@ bfd_plugin_canonicalize_symtab (bfd *abfd,
-       s->name = syms[i].name;
-       s->value = 0;
-       s->flags = convert_flags (&syms[i]);
-+      s->udata.p = NULL;
-       switch (syms[i].def)
- 	{
- 	case LDPK_COMMON:
--	  s->section = &fake_common_section;
-+	  s->section = &bfd_plugin_fake_common_section;
- 	  break;
- 	case LDPK_UNDEF:
- 	case LDPK_WEAKUNDEF:
-@@ -755,25 +901,28 @@ bfd_plugin_canonicalize_symtab (bfd *abfd,
- 	      case LDST_UNKNOWN:
- 		/* What is the best fake section for LDST_UNKNOWN?  */
- 	      case LDST_FUNCTION:
--		s->section = &fake_text_section;
-+		s->section = &bfd_plugin_fake_text_section;
- 		break;
- 	      case LDST_VARIABLE:
- 		if (syms[i].section_kind == LDSSK_BSS)
--		  s->section = &fake_bss_section;
-+		  s->section = &bfd_plugin_fake_bss_section;
- 		else
--		  s->section = &fake_data_section;
-+		  s->section = &bfd_plugin_fake_data_section;
- 		break;
- 	      }
- 	  else
--	    s->section = &fake_text_section;
-+	    s->section = &bfd_plugin_fake_text_section;
- 	  break;
- 	default:
- 	  BFD_ASSERT (0);
- 	}
--
--      s->udata.p = (void *) &syms[i];
-     }
- 
-+  /* Copy symbols from object only section.  */
-+  nsyms += plugin_data->object_only_nsyms;
-+  for (j = 0; j < plugin_data->object_only_nsyms; j++, i++)
-+    alocation[i] = plugin_data->object_only_syms[j];
-+
-   return nsyms;
- }
- 
-diff --git a/bfd/plugin.h b/bfd/plugin.h
-index 510689c96ba..f61e6168e2b 100644
---- a/bfd/plugin.h
-+++ b/bfd/plugin.h
-@@ -34,6 +34,8 @@ typedef struct plugin_data_struct
- {
-   int nsyms;
-   const struct ld_plugin_symbol *syms;
-+  int object_only_nsyms;
-+  asymbol **object_only_syms;
- }
- plugin_data_struct;
- 
-diff --git a/bfd/section.c b/bfd/section.c
-index 8456c73e8d0..e7674c9dc1a 100644
---- a/bfd/section.c
-+++ b/bfd/section.c
-@@ -661,6 +661,9 @@ EXTERNAL
- .#define BFD_COM_SECTION_NAME "*COM*"
- .#define BFD_IND_SECTION_NAME "*IND*"
- .
-+.{* GNU object-only section name.  *}
-+.#define GNU_OBJECT_ONLY_SECTION_NAME ".gnu_object_only"
-+.
- .{* Pointer to the common section.  *}
- .#define bfd_com_section_ptr (&_bfd_std_section[0])
- .{* Pointer to the undefined section.  *}
-diff --git a/binutils/objcopy.c b/binutils/objcopy.c
-index f64417697cb..e2e6bd7ee83 100644
---- a/binutils/objcopy.c
-+++ b/binutils/objcopy.c
-@@ -1266,34 +1266,6 @@ is_specified_symbol (const char *name, htab_t htab)
-   return htab_find (htab, name) != NULL;
- }
- 
--/* Return a pointer to the symbol used as a signature for GROUP.  */
--
--static asymbol *
--group_signature (asection *group)
--{
--  bfd *abfd = group->owner;
--  Elf_Internal_Shdr *ghdr;
--
--  /* PR 20089: An earlier error may have prevented us from loading the symbol table.  */
--  if (isympp == NULL)
--    return NULL;
--
--  if (bfd_get_flavour (abfd) != bfd_target_elf_flavour)
--    return NULL;
--
--  ghdr = &elf_section_data (group)->this_hdr;
--  if (ghdr->sh_link == elf_onesymtab (abfd))
--    {
--      const struct elf_backend_data *bed = get_elf_backend_data (abfd);
--      Elf_Internal_Shdr *symhdr = &elf_symtab_hdr (abfd);
--
--      if (ghdr->sh_info > 0
--	  && ghdr->sh_info < symhdr->sh_size / bed->s->sizeof_sym)
--	return isympp[ghdr->sh_info - 1];
--    }
--  return NULL;
--}
--
- /* Return TRUE if the section is a DWO section.  */
- 
- static bool
-@@ -1438,7 +1410,7 @@ is_strip_section (bfd *abfd ATTRIBUTE_UNUSED, asection *sec)
-       const char *gname;
-       asection *elt, *first;
- 
--      gsym = group_signature (sec);
-+      gsym = bfd_group_signature (sec, isympp);
-       /* Strip groups without a valid signature.  */
-       if (gsym == NULL)
- 	return true;
-@@ -4398,7 +4370,7 @@ setup_section (bfd *ibfd, sec_ptr isection, bfd *obfd)
- 
-   if ((isection->flags & SEC_GROUP) != 0)
-     {
--      asymbol *gsym = group_signature (isection);
-+      asymbol *gsym = bfd_group_signature (isection, isympp);
- 
-       if (gsym != NULL)
- 	{
-diff --git a/binutils/readelf.c b/binutils/readelf.c
-index 4f8f879cf91..949395483bb 100644
---- a/binutils/readelf.c
-+++ b/binutils/readelf.c
-@@ -5941,6 +5941,7 @@ get_os_specific_section_type_name (Filedata * filedata, unsigned int sh_type)
-     case SHT_GNU_ATTRIBUTES:          return "GNU_ATTRIBUTES";
-     case SHT_GNU_HASH:                return "GNU_HASH";
-     case SHT_GNU_LIBLIST:             return "GNU_LIBLIST";
-+    case SHT_GNU_OBJECT_ONLY:	      return "GNU_OBJECT_ONLY";
- 
-     case SHT_SUNW_move:               return "SUNW_MOVE";
-     case SHT_SUNW_COMDAT:             return "SUNW_COMDAT";
-diff --git a/gas/testsuite/gas/elf/section9.d b/gas/testsuite/gas/elf/section9.d
-index 63152fe4b4d..d7e97c014ac 100644
---- a/gas/testsuite/gas/elf/section9.d
-+++ b/gas/testsuite/gas/elf/section9.d
-@@ -4,4 +4,5 @@
- #...
- [ 	]*\[.*\][ 	]+\.gnu\.lto_main[ 	]+PROGBITS.*[ 	]+E[   ]+.*
- [ 	]*\[.*\][ 	]+\.gnu\.lto_\.pureconst[ 	]+PROGBITS.*[ 	]+E[   ]+.*
-+[ 	]*\[.*\][ 	]+\.gnu_object_only[ 	]+GNU_OBJECT_ONLY.*[ 	]+E[   ]+.*
- #pass
-diff --git a/gas/testsuite/gas/elf/section9.s b/gas/testsuite/gas/elf/section9.s
-index 6b8b1074ca3..abcdea10aad 100644
---- a/gas/testsuite/gas/elf/section9.s
-+++ b/gas/testsuite/gas/elf/section9.s
-@@ -2,3 +2,5 @@
- 	.byte 0,0,0,0
- 	.section .gnu.lto_.pureconst,"",%progbits
- 	.byte 0,0,0,0
-+	.section .gnu_object_only
-+	.byte 0,0,0,0
-diff --git a/include/elf/common.h b/include/elf/common.h
-index 6077db7a8b7..b0b54d87ab4 100644
---- a/include/elf/common.h
-+++ b/include/elf/common.h
-@@ -572,6 +572,7 @@
- #define SHT_GNU_HASH	             0x6ffffff6	/* GNU style symbol hash table */
- #define SHT_GNU_LIBLIST	             0x6ffffff7	/* List of prelink dependencies */
- #define SHT_CHECKSUM	             0x6ffffff8	/* Checksum for DSO content.  */
-+#define SHT_GNU_OBJECT_ONLY	     0x6ffffff9	/* Object only */
- 
- #define SHT_SUNW_move	             0x6ffffffa
- #define SHT_SUNW_COMDAT              0x6ffffffb
-diff --git a/ld/emultempl/aarch64elf.em b/ld/emultempl/aarch64elf.em
-index faa0d3ecd79..ae79961ada1 100644
---- a/ld/emultempl/aarch64elf.em
-+++ b/ld/emultempl/aarch64elf.em
-@@ -309,7 +309,7 @@ gld${EMULATION_NAME}_finish (void)
- 	}
-     }
- 
--  finish_default ();
-+  ldelf_finish ();
- }
- 
- /* This is a convenient point to tell BFD about target specific flags.
-diff --git a/ld/emultempl/alphaelf.em b/ld/emultempl/alphaelf.em
-index 6ecacb76a10..5ae2587a653 100644
---- a/ld/emultempl/alphaelf.em
-+++ b/ld/emultempl/alphaelf.em
-@@ -104,7 +104,7 @@ alpha_finish (void)
-   if (limit_32bit)
-     elf_elfheader (link_info.output_bfd)->e_flags |= EF_ALPHA_32BIT;
- 
--  finish_default ();
-+  ldelf_finish ();
- }
- EOF
- 
-diff --git a/ld/emultempl/armelf.em b/ld/emultempl/armelf.em
-index dc2cd9f1139..02a97e7c1ff 100644
---- a/ld/emultempl/armelf.em
-+++ b/ld/emultempl/armelf.em
-@@ -456,7 +456,7 @@ gld${EMULATION_NAME}_finish (void)
- 	}
-     }
- 
--  finish_default ();
-+  ldelf_finish ();
- 
-   if (params.thumb_entry_symbol)
-     {
-diff --git a/ld/emultempl/avrelf.em b/ld/emultempl/avrelf.em
-index 7696a9050d9..0945702bfb6 100644
---- a/ld/emultempl/avrelf.em
-+++ b/ld/emultempl/avrelf.em
-@@ -227,7 +227,7 @@ avr_finish (void)
- 	elf_elfheader (abfd)->e_flags &= ~EF_AVR_LINKRELAX_PREPARED;
-     }
- 
--  finish_default ();
-+  ldelf_finish ();
- }
- EOF
- 
-diff --git a/ld/emultempl/elf.em b/ld/emultempl/elf.em
-index 4d431995d2e..0bad25d3a46 100644
---- a/ld/emultempl/elf.em
-+++ b/ld/emultempl/elf.em
-@@ -1173,6 +1173,7 @@ LDEMUL_BEFORE_PLACE_ORPHANS=${LDEMUL_BEFORE_PLACE_ORPHANS-ldelf_before_place_orp
- LDEMUL_AFTER_ALLOCATION=${LDEMUL_AFTER_ALLOCATION-gld${EMULATION_NAME}_after_allocation}
- LDEMUL_SET_OUTPUT_ARCH=${LDEMUL_SET_OUTPUT_ARCH-ldelf_set_output_arch}
- LDEMUL_BEFORE_ALLOCATION=${LDEMUL_BEFORE_ALLOCATION-gld${EMULATION_NAME}_before_allocation}
-+LDEMUL_FINISH=${LDEMUL_FINISH-ldelf_finish}
- LDEMUL_OPEN_DYNAMIC_ARCHIVE=${LDEMUL_OPEN_DYNAMIC_ARCHIVE-ldelf_open_dynamic_archive}
- LDEMUL_PLACE_ORPHAN=${LDEMUL_PLACE_ORPHAN-ldelf_place_orphan}
- LDEMUL_ADD_OPTIONS=gld${EMULATION_NAME}_add_options
-diff --git a/ld/emultempl/ppc32elf.em b/ld/emultempl/ppc32elf.em
-index acd673a7b84..529a5920920 100644
---- a/ld/emultempl/ppc32elf.em
-+++ b/ld/emultempl/ppc32elf.em
-@@ -238,7 +238,7 @@ ppc_finish (void)
-     lang_for_each_statement (no_zero_padding);
-   if (!ppc_finish_symbols (&link_info))
-     einfo (_("%X%P: ppc_finish_symbols problem %E\n"));
--  finish_default ();
-+  ldelf_finish ();
- }
- 
- EOF
-diff --git a/ld/emultempl/ppc64elf.em b/ld/emultempl/ppc64elf.em
-index f9ace66a5b2..1e6ae7af738 100644
---- a/ld/emultempl/ppc64elf.em
-+++ b/ld/emultempl/ppc64elf.em
-@@ -616,7 +616,7 @@ gld${EMULATION_NAME}_finish (void)
-   fflush (stderr);
-   free (msg);
- 
--  finish_default ();
-+  ldelf_finish ();
- }
- 
- 
-diff --git a/ld/emultempl/spuelf.em b/ld/emultempl/spuelf.em
-index dd8d259a31f..76776ba2555 100644
---- a/ld/emultempl/spuelf.em
-+++ b/ld/emultempl/spuelf.em
-@@ -432,7 +432,7 @@ gld${EMULATION_NAME}_finish (void)
- 	einfo (_("%P: --auto-overlay ignored with zero local store range\n"));
-     }
- 
--  finish_default ();
-+  ldelf_finish ();
- }
- 
- static char *
-diff --git a/ld/ld.h b/ld/ld.h
-index 48d34bc6acd..254f0a097bb 100644
---- a/ld/ld.h
-+++ b/ld/ld.h
-@@ -306,6 +306,12 @@ typedef struct
-   /* If set, store plugin intermediate files permanently.  */
-   bool plugin_save_temps;
- 
-+  /* If set, if the .gnu_object_only section should be created.  */
-+  bool emit_gnu_object_only;
-+
-+  /* If set, if the .gnu_object_only section is being created.  */
-+  bool emitting_gnu_object_only;
-+
-   /* If set, print discarded sections in map file output.  */
-   bool print_map_discarded;
- 
-diff --git a/ld/ldelf.c b/ld/ldelf.c
-index 4cbfc19c161..a66d1d21394 100644
---- a/ld/ldelf.c
-+++ b/ld/ldelf.c
-@@ -63,6 +63,7 @@ static lang_input_statement_type *global_found;
- static struct stat global_stat;
- static struct bfd_link_needed_list *global_vercheck_needed;
- static bool global_vercheck_failed;
-+static bool orphan_init_done;
- 
- void
- ldelf_after_parse (void)
-@@ -2101,7 +2102,7 @@ elf_orphan_compatible (asection *in, asection *out)
- lang_output_section_statement_type *
- ldelf_place_orphan (asection *s, const char *secname, int constraint)
- {
--  static struct orphan_save hold[] =
-+  static struct orphan_save orig_hold[] =
-     {
-       { ".text",
- 	SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_READONLY | SEC_CODE,
-@@ -2131,6 +2132,7 @@ ldelf_place_orphan (asection *s, const char *secname, int constraint)
- 	SEC_HAS_CONTENTS,
- 	0, 0, 0, 0 },
-     };
-+  static struct orphan_save hold[ARRAY_SIZE (orig_hold)];
-   enum orphan_save_index
-     {
-       orphan_text = 0,
-@@ -2143,7 +2145,6 @@ ldelf_place_orphan (asection *s, const char *secname, int constraint)
-       orphan_sdata,
-       orphan_nonalloc
-     };
--  static int orphan_init_done = 0;
-   struct orphan_save *place;
-   lang_output_section_statement_type *after;
-   lang_output_section_statement_type *os;
-@@ -2272,16 +2273,23 @@ ldelf_place_orphan (asection *s, const char *secname, int constraint)
- 
-   if (!orphan_init_done)
-     {
--      struct orphan_save *ho;
-+      struct orphan_save *ho, *horig;
- 
-       for (ho = hold; ho < hold + sizeof (hold) / sizeof (hold[0]); ++ho)
-+      for (ho = hold, horig = orig_hold;
-+	   ho < hold + ARRAY_SIZE (hold);
-+	   ++ho, ++horig)
-+	{
-+	  *ho = *horig;
-+	  if (ho->name != NULL)
- 	if (ho->name != NULL)
- 	  {
- 	    ho->os = lang_output_section_find (ho->name);
- 	    if (ho->os != NULL && ho->os->flags == 0)
- 	      ho->os->flags = ho->flags;
- 	  }
--      orphan_init_done = 1;
-+	}
-+      orphan_init_done = true;
-     }
- 
-   /* If this is a final link, then always put .gnu.warning.SYMBOL
-@@ -2428,3 +2436,13 @@ ldelf_set_output_arch (void)
-   if (link_info.output_bfd->xvec->flavour == bfd_target_elf_flavour)
-     elf_link_info (link_info.output_bfd) = &link_info;
- }
-+
-+void
-+ldelf_finish (void)
-+{
-+  /* Support the object-only output.  */
-+  if (config.emit_gnu_object_only)
-+    orphan_init_done = false;
-+
-+  finish_default ();
-+}
-diff --git a/ld/ldelf.h b/ld/ldelf.h
-index 96fb1e5b6a8..a6498cf2758 100644
---- a/ld/ldelf.h
-+++ b/ld/ldelf.h
-@@ -21,6 +21,7 @@
- extern const char *ldelf_emit_note_gnu_build_id;
- extern const char *ldelf_emit_note_fdo_package_metadata;
- 
-+extern void ldelf_finish (void);
- extern void ldelf_after_parse (void);
- extern bool ldelf_load_symbols (lang_input_statement_type *);
- extern void ldelf_before_plugin_all_symbols_read (int, int, int, int,
-diff --git a/ld/ldexp.c b/ld/ldexp.c
-index f0b8d7cb748..035cef60448 100644
---- a/ld/ldexp.c
-+++ b/ld/ldexp.c
-@@ -1699,14 +1699,15 @@ align_n (bfd_vma value, bfd_vma align)
- }
- 
- void
--ldexp_init (void)
-+ldexp_init (bool object_only)
- {
-   /* The value "13" is ad-hoc, somewhat related to the expected number of
-      assignments in a linker script.  */
--  if (!bfd_hash_table_init_n (&definedness_table,
--			      definedness_newfunc,
--			      sizeof (struct definedness_hash_entry),
--			      13))
-+  if (!object_only
-+      && !bfd_hash_table_init_n (&definedness_table,
-+				 definedness_newfunc,
-+				 sizeof (struct definedness_hash_entry),
-+				 13))
-     einfo (_("%F%P: can not create hash table: %E\n"));
- }
- 
-@@ -1763,7 +1764,8 @@ ldexp_is_final_sym_absolute (const struct bfd_link_hash_entry *h)
- }
- 
- void
--ldexp_finish (void)
-+ldexp_finish (bool object_only)
- {
--  bfd_hash_table_free (&definedness_table);
-+  if (!object_only)
-+    bfd_hash_table_free (&definedness_table);
- }
-diff --git a/ld/ldexp.h b/ld/ldexp.h
-index f7d2cba4f4c..16953caf7cd 100644
---- a/ld/ldexp.h
-+++ b/ld/ldexp.h
-@@ -250,9 +250,9 @@ fill_type *exp_get_fill
-   (etree_type *, fill_type *, char *);
- bfd_vma exp_get_abs_int
-   (etree_type *, int, char *);
--void ldexp_init (void);
-+void ldexp_init (bool);
- void ldexp_finalize_syms (void);
- bool ldexp_is_final_sym_absolute (const struct bfd_link_hash_entry *);
--void ldexp_finish (void);
-+void ldexp_finish (bool);
- 
- #endif
-diff --git a/ld/ldfile.c b/ld/ldfile.c
-index 9bf5014ad95..530a5fef5e3 100644
---- a/ld/ldfile.c
-+++ b/ld/ldfile.c
-@@ -532,7 +532,9 @@ ldfile_try_open_bfd (const char *attempt,
-       && !no_more_claiming
-       && bfd_check_format (entry->the_bfd, bfd_object))
-     plugin_maybe_claim (entry);
-+  else
- #endif /* BFD_SUPPORTS_PLUGINS */
-+    cmdline_check_object_only_section (entry->the_bfd, false);
- 
-   /* It opened OK, the format checked out, and the plugins have had
-      their chance to claim it, so this is success.  */
-diff --git a/ld/ldlang.c b/ld/ldlang.c
-index 4c8d4e7a7fc..e1e491732a9 100644
---- a/ld/ldlang.c
-+++ b/ld/ldlang.c
-@@ -37,6 +37,7 @@
- #include "ldctor.h"
- #include "ldfile.h"
- #include "ldemul.h"
-+#include "ldwrite.h"
- #include "fnmatch.h"
- #include "demangle.h"
- #include "hashtab.h"
-@@ -47,6 +48,9 @@
- #include "plugin.h"
- #endif
- 
-+/* FIXME: Put it here to avoid NAME conflict from ldgram.h.  */
-+#include "elf-bfd.h"
-+
- #ifndef offsetof
- #define offsetof(TYPE, MEMBER) ((size_t) & (((TYPE*) 0)->MEMBER))
- #endif
-@@ -76,6 +80,9 @@ static lang_statement_list_type **stat_save_ptr = &stat_save[0];
- static struct unique_sections *unique_section_list;
- static struct asneeded_minfo *asneeded_list_head;
- static unsigned int opb_shift = 0;
-+static cmdline_list_type cmdline_object_only_file_list;
-+static cmdline_list_type cmdline_object_only_archive_list;
-+static cmdline_list_type cmdline_temp_object_only_list;
- 
- /* Forward declarations.  */
- static void exp_init_os (etree_type *);
-@@ -99,6 +106,10 @@ static void lang_do_version_exports_section (void);
- static void lang_finalize_version_expr_head
-   (struct bfd_elf_version_expr_head *);
- static void lang_do_memory_regions (bool);
-+static void cmdline_lists_init (void);
-+static void cmdline_get_object_only_input_files (void);
-+static void print_cmdline_list (cmdline_union_type *);
-+static bool cmdline_on_object_only_archive_list_p (bfd *);
- 
- /* Exported variables.  */
- const char *output_target;
-@@ -1353,15 +1364,20 @@ output_section_statement_table_free (void)
- /* Build enough state so that the parser can build its tree.  */
- 
- void
--lang_init (void)
-+lang_init (bool object_only)
- {
--  obstack_begin (&stat_obstack, 1000);
--  obstack_init (&pt_obstack);
-+  if (!object_only)
-+    {
-+      obstack_begin (&stat_obstack, 1000);
-+      obstack_init (&pt_obstack);
-+    }
- 
-   stat_ptr = &statement_list;
- 
-   output_section_statement_table_init ();
- 
-+  cmdline_lists_init ();
-+
-   lang_list_init (stat_ptr);
- 
-   lang_list_init (&input_file_chain);
-@@ -3142,6 +3158,12 @@ load_symbols (lang_input_statement_type *entry,
- 		  loaded = false;
- 		}
- 
-+	      if (config.emitting_gnu_object_only)
-+		{
-+		  if (!cmdline_on_object_only_archive_list_p (member))
-+		    continue;
-+		}
-+
- 	      subsbfd = member;
- 	      if (!(*link_info.callbacks
- 		    ->add_archive_element) (&link_info, member,
-@@ -8343,7 +8365,42 @@ lang_process (void)
- 	    }
- 	}
-     }
-+  else
- #endif /* BFD_SUPPORTS_PLUGINS */
-+    if (bfd_link_relocatable (&link_info))
-+    {
-+      /* Check if .gnu_object_only section should be created.  */
-+      bfd *p;
-+      int object_type;
-+
-+      object_type = 0;
-+      for (p = link_info.input_bfds; p != (bfd *) NULL; p = p->link.next)
-+	{
-+	  enum bfd_lto_object_type lto_type = bfd_get_lto_type (p);
-+	  /* NB: Treat fat IR object as IR object here.  */
-+	  if (lto_type == lto_fat_ir_object)
-+	    lto_type = lto_slim_ir_object;
-+	  object_type |= 1 << lto_type;
-+	  if ((object_type & (1 << lto_mixed_object)) != 0
-+	      || ((object_type
-+		   & (1 << lto_non_ir_object
-+		      | 1 << lto_slim_ir_object))
-+		  == (1 << lto_non_ir_object | 1 << lto_slim_ir_object)))
-+	    {
-+	      config.emit_gnu_object_only = true;
-+	      break;
-+	    }
-+	}
-+
-+      if (verbose
-+	  && (cmdline_object_only_file_list.head
-+	      || cmdline_object_only_archive_list.head))
-+	{
-+	  info_msg (_("Object-only input files:\n "));
-+	  print_cmdline_list (cmdline_object_only_file_list.head);
-+	  print_cmdline_list (cmdline_object_only_archive_list.head);
-+	}
-+    }
- 
-   struct bfd_sym_chain **sym = &link_info.gc_sym_list;
-   while (*sym)
-@@ -10022,3 +10079,967 @@ lang_print_memory_usage (void)
-       printf ("\n");
-     }
- }
-+
-+static void
-+cmdline_lists_init (void)
-+{
-+  cmdline_object_only_file_list.tail
-+    = &cmdline_object_only_file_list.head;
-+  cmdline_object_only_archive_list.tail
-+    = &cmdline_object_only_archive_list.head;
-+  cmdline_temp_object_only_list.tail
-+    = &cmdline_temp_object_only_list.head;
-+}
-+
-+/* Allocate an item with TYPE and DATA.  */
-+
-+static cmdline_union_type *
-+cmdline_list_new (cmdline_enum_type type, void *data)
-+{
-+  cmdline_union_type *new_opt;
-+
-+  new_opt = (cmdline_union_type *) stat_alloc (sizeof (*new_opt));
-+  new_opt->header.type = type;
-+  switch (type)
-+    {
-+    default:
-+      break;
-+    case cmdline_is_file_enum:
-+      new_opt->file.filename = (const char *) data;
-+      break;
-+    case cmdline_is_bfd_enum:
-+      new_opt->abfd.abfd = (bfd *) data;
-+      break;
-+    }
-+  return new_opt;
-+}
-+
-+/* Append an item with TYPE and DATA to LIST.  */
-+
-+static void
-+cmdline_list_append (cmdline_list_type *list, cmdline_enum_type type,
-+		     void *data)
-+{
-+  cmdline_union_type *new_opt = cmdline_list_new (type, data);
-+  new_opt->header.next = NULL;
-+  *list->tail = new_opt;
-+  list->tail = &new_opt->header.next;
-+}
-+
-+static void
-+print_cmdline_list (cmdline_union_type *c)
-+{
-+  for (; c != NULL; c = c->header.next)
-+    switch (c->header.type)
-+      {
-+      default:
-+	abort ();
-+      case cmdline_is_file_enum:
-+	info_msg (" %s", c->file.filename);
-+	break;
-+      case cmdline_is_bfd_enum:
-+	info_msg (" [%B]", c->abfd.abfd);
-+	break;
-+      }
-+
-+  info_msg ("\n");
-+}
-+
-+/* Return TRUE if ABFD is on cmdline_object_only_archive_list.  */
-+
-+static bool
-+cmdline_on_object_only_archive_list_p (bfd *abfd)
-+{
-+  cmdline_union_type *c, *next;
-+  bfd *archive, *obfd, *oarchive;
-+  ufile_ptr origin = abfd->origin;
-+
-+  archive = abfd->my_archive;
-+  for (c = cmdline_object_only_archive_list.head; c != NULL; c = next)
-+    {
-+      if (c->header.type != cmdline_is_bfd_enum)
-+	abort ();
-+
-+      next = c->header.next;
-+      obfd = c->abfd.abfd;
-+      oarchive = obfd->my_archive;
-+
-+      /* The list is grouped by archive file name and sorted by member
-+	 origin.  */
-+      if (strcmp (archive->filename, oarchive->filename) != 0)
-+	continue;
-+
-+      if (origin == obfd->origin)
-+	return true;
-+      else if (origin < obfd->origin)
-+	return false;
-+    }
-+
-+  return false;
-+}
-+
-+/* Append an item with TYPE and DATA to cmdline_object_only_file_list
-+   or cmdline_object_only_archive_list if needed.  */
-+
-+static void
-+cmdline_object_only_list_append (cmdline_enum_type type, void *data)
-+{
-+  cmdline_union_type *c;
-+  cmdline_union_type *new_opt, *next, **prev;
-+  bfd *abfd, *archive;
-+  bfd *obfd, *oarchive;
-+  bfd *nbfd, *narchive;
-+  ufile_ptr origin, norigin;
-+
-+  /* Put it on cmdline_object_only_file_list if it isn't an archive
-+     member.  */
-+  switch (type)
-+    {
-+    default:
-+      abort ();
-+    case cmdline_is_bfd_enum:
-+      abfd = (bfd *) data;
-+      archive = abfd->my_archive;
-+      if (archive)
-+	break;
-+      /* Fallthru */
-+    case cmdline_is_file_enum:
-+      cmdline_list_append (&cmdline_object_only_file_list, type, data);
-+      return;
-+    }
-+
-+  /* Put archive member on cmdline_object_only_archive_list and sort
-+     the list by archive name and archive member origin.  */
-+  new_opt = (cmdline_union_type *) stat_alloc (sizeof (*new_opt));
-+  new_opt->header.type = cmdline_is_bfd_enum;
-+  new_opt->header.next = NULL;
-+  new_opt->abfd.abfd = (bfd *) data;
-+
-+  c = cmdline_object_only_archive_list.head;
-+  if (c == NULL)
-+    {
-+      cmdline_object_only_archive_list.head = new_opt;
-+      cmdline_object_only_archive_list.tail = &new_opt->header.next;
-+      return;
-+    }
-+
-+  prev = NULL;
-+  origin = abfd->origin;
-+  for (; c != NULL; c = next)
-+    {
-+      if (c->header.type != cmdline_is_bfd_enum)
-+	abort ();
-+
-+      next = c->header.next;
-+
-+      obfd = c->abfd.abfd;
-+      oarchive = obfd->my_archive;
-+
-+      if (strcmp (archive->filename, oarchive->filename) == 0)
-+	{
-+	  bool after;
-+
-+	  if (origin < obfd->origin)
-+	    {
-+	      /* Insert it before the current.  */
-+	      new_opt->header.next = c;
-+	      if (prev)
-+		*prev = new_opt;
-+	      else
-+		cmdline_object_only_archive_list.head = new_opt;
-+	      return;
-+	    }
-+
-+	  after = true;
-+
-+	  /* Check origin.  */
-+	  while (next)
-+	    {
-+	      if (next->header.type != cmdline_is_bfd_enum)
-+		abort ();
-+
-+	      nbfd = next->abfd.abfd;
-+	      norigin = nbfd->origin;
-+	      if (origin > norigin)
-+		{
-+		  /* Insert it after NEXT.  */
-+		  break;
-+		}
-+
-+	      narchive = nbfd->my_archive;
-+	      if (strcmp (archive->filename, narchive->filename) != 0)
-+		{
-+		  /* Insert it befor NEXT.  */
-+		  after = false;
-+		  break;
-+		}
-+
-+	      c = next;
-+	      next = next->header.next;
-+	    }
-+
-+	  if (after && next)
-+	    {
-+	      c = next;
-+	      next = next->header.next;
-+	    }
-+
-+	  if (*cmdline_object_only_archive_list.tail == c->header.next)
-+	    cmdline_object_only_archive_list.tail
-+	      = &new_opt->header.next;
-+
-+	  prev = &c->header.next;
-+	  new_opt->header.next = next;
-+	  *prev = new_opt;
-+	  return;
-+	}
-+
-+      prev = &c->header.next;
-+    }
-+
-+  *cmdline_object_only_archive_list.tail = new_opt;
-+  cmdline_object_only_archive_list.tail = &new_opt->header.next;
-+}
-+
-+/* Get object-only input files.  */
-+
-+static void
-+cmdline_get_object_only_input_files (void)
-+{
-+  cmdline_union_type *c, *next;
-+  bfd *abfd, *archive;
-+  bfd *nbfd, *narchive;
-+
-+  /* Add files first.  */
-+  for (c = cmdline_object_only_file_list.head;
-+       c != NULL; c = c->header.next)
-+    switch (c->header.type)
-+      {
-+      default:
-+	abort ();
-+      case cmdline_is_file_enum:
-+	lang_add_input_file (c->file.filename,
-+			     lang_input_file_is_file_enum, NULL);
-+	break;
-+      case cmdline_is_bfd_enum:
-+	abfd = c->abfd.abfd;
-+	if (abfd->my_archive)
-+	  abort ();
-+	lang_add_input_file (abfd->filename,
-+			     lang_input_file_is_file_enum, NULL);
-+	break;
-+      }
-+
-+  /* Add archive members next.  */
-+  for (c = cmdline_object_only_archive_list.head; c != NULL; c = next)
-+    {
-+      if (c->header.type != cmdline_is_bfd_enum)
-+	abort ();
-+
-+      next = c->header.next;
-+
-+      abfd = c->abfd.abfd;
-+      archive = abfd->my_archive;
-+
-+      /* Add the first archive of the archive member group.  */
-+      lang_add_input_file (archive->filename,
-+			   lang_input_file_is_file_enum, NULL);
-+
-+      /* Skip the rest members in the archive member group.  */
-+      do
-+	{
-+	  if (!next)
-+	    break;
-+
-+	  if (next->header.type != cmdline_is_bfd_enum)
-+	    abort ();
-+
-+	  next = next->header.next;
-+	  if (!next)
-+	    break;
-+	  nbfd = next->abfd.abfd;
-+	  narchive = nbfd->my_archive;
-+	}
-+      while (strcmp (archive->filename, narchive->filename) == 0);
-+    }
-+}
-+
-+struct cmdline_arg
-+{
-+  bfd *obfd;
-+  asymbol **isympp;
-+  int status;
-+};
-+
-+/* Create a section in OBFD with the same
-+   name and attributes as ISECTION in IBFD.  */
-+
-+static void
-+setup_section (bfd *ibfd, sec_ptr isection, void *p)
-+{
-+  struct cmdline_arg *arg = (struct cmdline_arg *) p;
-+  bfd *obfd = arg->obfd;
-+  asymbol **isympp = arg->isympp;
-+  const char *name = isection->name;
-+  sec_ptr osection;
-+  const char *err;
-+
-+  /* Skip the object-only section.  */
-+  if (ibfd->object_only_section == isection)
-+    return;
-+
-+  /* If we have already failed earlier on, do not keep on generating
-+     complaints now.  */
-+  if (arg->status)
-+    return;
-+
-+  osection = bfd_make_section_anyway_with_flags (obfd, name,
-+						 isection->flags);
-+
-+  if (osection == NULL)
-+    {
-+      err = _("failed to create output section");
-+      goto loser;
-+    }
-+
-+  osection->size = isection->size;
-+  osection->vma = isection->vma;
-+  osection->lma = isection->lma;
-+  osection->alignment_power = isection->alignment_power;
-+
-+  /* Copy merge entity size.  */
-+  osection->entsize = isection->entsize;
-+
-+  /* This used to be mangle_section; we do here to avoid using
-+     bfd_get_section_by_name since some formats allow multiple
-+     sections with the same name.  */
-+  isection->output_section = osection;
-+  isection->output_offset = 0;
-+
-+  if ((isection->flags & SEC_GROUP) != 0)
-+    {
-+      asymbol *gsym = bfd_group_signature (isection, isympp);
-+
-+      if (gsym != NULL)
-+	{
-+	  gsym->flags |= BSF_KEEP;
-+	  if (ibfd->xvec->flavour == bfd_target_elf_flavour)
-+	    elf_group_id (isection) = gsym;
-+	}
-+    }
-+
-+  /* Allow the BFD backend to copy any private data it understands
-+     from the input section to the output section.  */
-+  if (!bfd_copy_private_section_data (ibfd, isection, obfd, osection))
-+    {
-+      err = _("failed to copy private data");
-+      goto loser;
-+    }
-+
-+  /* All went well.  */
-+  return;
-+
-+loser:
-+  arg->status = 1;
-+  einfo (_("%P%F: setup_section: %s: %s\n"), err, name);
-+}
-+
-+/* Copy the data of input section ISECTION of IBFD
-+   to an output section with the same name in OBFD.
-+   If stripping then don't copy any relocation info.  */
-+
-+static void
-+copy_section (bfd *ibfd, sec_ptr isection, void *p)
-+{
-+  struct cmdline_arg *arg = (struct cmdline_arg *) p;
-+  bfd *obfd = arg->obfd;
-+  asymbol **isympp = arg->isympp;
-+  arelent **relpp;
-+  long relcount;
-+  sec_ptr osection;
-+  bfd_size_type size;
-+  long relsize;
-+  flagword flags;
-+  const char *err;
-+
-+  /* Skip the object-only section.  */
-+  if (ibfd->object_only_section == isection)
-+    return;
-+
-+  /* If we have already failed earlier on, do not keep on generating
-+     complaints now.  */
-+  if (arg->status)
-+    return;
-+
-+  flags = bfd_section_flags (isection);
-+  if ((flags & SEC_GROUP) != 0)
-+    return;
-+
-+  osection = isection->output_section;
-+  size = bfd_section_size (isection);
-+
-+  if (size == 0 || osection == 0)
-+    return;
-+
-+  relsize = bfd_get_reloc_upper_bound (ibfd, isection);
-+
-+  if (relsize < 0)
-+    {
-+      /* Do not complain if the target does not support relocations.  */
-+      if (relsize == -1
-+	  && bfd_get_error () == bfd_error_invalid_operation)
-+	relsize = 0;
-+      else
-+	{
-+	  err = bfd_errmsg (bfd_get_error ());
-+	  goto loser;
-+	}
-+    }
-+
-+  if (relsize == 0)
-+    bfd_set_reloc (obfd, osection, NULL, 0);
-+  else
-+    {
-+      relpp = (arelent **) xmalloc (relsize);
-+      relcount = bfd_canonicalize_reloc (ibfd, isection, relpp, isympp);
-+      if (relcount < 0)
-+	{
-+	  err = _("relocation count is negative");
-+	  goto loser;
-+	}
-+
-+      bfd_set_reloc (obfd, osection,
-+		     relcount == 0 ? NULL : relpp, relcount);
-+      if (relcount == 0)
-+	free (relpp);
-+    }
-+
-+  if (bfd_section_flags (isection) & SEC_HAS_CONTENTS)
-+    {
-+      bfd_byte *memhunk = NULL;
-+
-+      if (!bfd_get_full_section_contents (ibfd, isection, &memhunk))
-+	{
-+	  err = bfd_errmsg (bfd_get_error ());
-+	  goto loser;
-+	}
-+
-+      if (!bfd_set_section_contents (obfd, osection, memhunk, 0, size))
-+	{
-+	  err = bfd_errmsg (bfd_get_error ());
-+	  goto loser;
-+	}
-+      free (memhunk);
-+    }
-+
-+  /* All went well.  */
-+  return;
-+
-+loser:
-+  einfo (_("%P%F: copy_section: %s: %s\n"), err, isection->name);
-+}
-+/* Open the temporary bfd created in the same directory as PATH.  */
-+
-+static bfd *
-+cmdline_fopen_temp (const char *path, const char *target,
-+		    const char *mode)
-+{
-+#define template "ldXXXXXX"
-+  const char *slash = strrchr (path, '/');
-+  char *tmpname;
-+  size_t len;
-+  int fd;
-+
-+#ifdef HAVE_DOS_BASED_FILE_SYSTEM
-+  {
-+    /* We could have foo/bar\\baz, or foo\\bar, or d:bar.  */
-+    char *bslash = strrchr (path, '\\');
-+
-+    if (slash == NULL || (bslash != NULL && bslash > slash))
-+      slash = bslash;
-+    if (slash == NULL && path[0] != '\0' && path[1] == ':')
-+      slash = path + 1;
-+  }
-+#endif
-+
-+  if (slash != (char *) NULL)
-+    {
-+      len = slash - path;
-+      tmpname = (char *) xmalloc (len + sizeof (template) + 2);
-+      memcpy (tmpname, path, len);
-+
-+#ifdef HAVE_DOS_BASED_FILE_SYSTEM
-+      /* If tmpname is "X:", appending a slash will make it a root
-+	 directory on drive X, which is NOT the same as the current
-+	 directory on drive X.  */
-+      if (len == 2 && tmpname[1] == ':')
-+	tmpname[len++] = '.';
-+#endif
-+      tmpname[len++] = '/';
-+    }
-+  else
-+    {
-+      tmpname = (char *) xmalloc (sizeof (template));
-+      len = 0;
-+    }
-+
-+  memcpy (tmpname + len, template, sizeof (template));
-+#undef template
-+
-+#ifdef HAVE_MKSTEMP
-+  fd = mkstemp (tmpname);
-+#else
-+  tmpname = mktemp (tmpname);
-+  if (tmpname == NULL)
-+    return NULL;
-+  fd = open (tmpname, O_RDWR | O_CREAT | O_EXCL, 0600);
-+#endif
-+  if (fd == -1)
-+    return NULL;
-+  return bfd_fopen (tmpname, target, mode, fd);
-+}
-+
-+/* Add the object-only section.  */
-+
-+static void
-+cmdline_add_object_only_section (bfd_byte *contents, size_t size)
-+{
-+  bfd_vma start;
-+  flagword flags;
-+  enum bfd_architecture iarch;
-+  unsigned int imach;
-+  long symcount;
-+  long symsize;
-+  asymbol **isympp = NULL;
-+  asymbol **osympp = NULL;
-+  bfd *obfd = NULL, *ibfd;
-+  const char *err;
-+  struct arg
-+    {
-+      bfd *obfd;
-+      asymbol **isympp;
-+      int status;
-+    } arg;
-+  char **matching;
-+  char *ofilename = NULL;
-+  asection *sec;
-+
-+  ibfd = bfd_openr (output_filename, output_target);
-+  if (!ibfd)
-+    {
-+      err = bfd_errmsg (bfd_get_error ());
-+      goto loser;
-+    }
-+
-+  if (!bfd_check_format_matches (ibfd, bfd_object, &matching))
-+    {
-+      err = bfd_errmsg (bfd_get_error ());
-+      goto loser;
-+    }
-+
-+  obfd = cmdline_fopen_temp (output_filename, output_target, FOPEN_WB);
-+  if (!obfd)
-+    {
-+      err = bfd_errmsg (bfd_get_error ());
-+      goto loser;
-+    }
-+  /* To be used after bfd_close ().  */
-+  ofilename = xstrdup (bfd_get_filename (obfd));
-+
-+  if (!bfd_set_format (obfd, bfd_object))
-+    {
-+      err = bfd_errmsg (bfd_get_error ());
-+      goto loser;
-+    }
-+
-+  /* Copy the start address, flags and architecture of input file to
-+     output file.  */
-+  flags = bfd_get_file_flags (ibfd);
-+  start = bfd_get_start_address (ibfd);
-+  iarch = bfd_get_arch (ibfd);
-+  imach = bfd_get_mach (ibfd);
-+  if (!bfd_set_start_address (obfd, start)
-+      || !bfd_set_file_flags (obfd, flags)
-+      || !bfd_set_arch_mach (obfd, iarch, imach))
-+    {
-+      err = bfd_errmsg (bfd_get_error ());
-+      goto loser;
-+    }
-+
-+  symsize = bfd_get_symtab_upper_bound (ibfd);
-+  if (symsize < 0)
-+    {
-+      err = bfd_errmsg (bfd_get_error ());
-+      goto loser;
-+    }
-+
-+  isympp = (asymbol **) xmalloc (symsize);
-+  symcount = bfd_canonicalize_symtab (ibfd, isympp);
-+  if (symcount < 0)
-+    {
-+      err = bfd_errmsg (bfd_get_error ());
-+      goto loser;
-+    }
-+
-+  arg.obfd = obfd;
-+  arg.isympp = isympp;
-+  arg.status = 0;
-+
-+  /* BFD mandates that all output sections be created and sizes set before
-+     any output is done.  Thus, we traverse all sections multiple times.  */
-+  bfd_map_over_sections (ibfd, setup_section, &arg);
-+
-+  if (arg.status)
-+    {
-+      err = _("error setting up sections");
-+      goto loser;
-+    }
-+
-+  /* Allow the BFD backend to copy any private data it understands
-+     from the input section to the output section.  */
-+  if (! bfd_copy_private_header_data (ibfd, obfd))
-+    {
-+      err = _("error copying private header data");
-+      goto loser;
-+    }
-+
-+  /* Create the object-only section.  */
-+  sec = bfd_make_section_with_flags (obfd,
-+				     GNU_OBJECT_ONLY_SECTION_NAME,
-+				     (SEC_HAS_CONTENTS
-+				      | SEC_READONLY
-+				      | SEC_DATA
-+				      | SEC_LINKER_CREATED));
-+  if (sec == NULL)
-+    {
-+      err = _("can't create object-only section");
-+      goto loser;
-+    }
-+
-+  if (! bfd_set_section_size (sec, size))
-+    {
-+      err = _("can't set object-only section size");
-+      goto loser;
-+    }
-+
-+  if (ibfd->object_only_section)
-+    {
-+      /* Filter out the object-only section symbol.  */
-+      long src_count = 0, dst_count = 0;
-+      asymbol **from, **to;
-+
-+      osympp = (asymbol **) xmalloc (symcount * sizeof (asymbol *));
-+      from = isympp;
-+      to = osympp;
-+      for (; src_count < symcount; src_count++)
-+	{
-+	  asymbol *sym = from[src_count];
-+	  if (bfd_asymbol_section (sym) != ibfd->object_only_section)
-+	    to[dst_count++] = sym;
-+	}
-+      to[dst_count] = NULL;
-+      symcount = dst_count;
-+      bfd_set_symtab (obfd, osympp, symcount);
-+    }
-+  else
-+    bfd_set_symtab (obfd, isympp, symcount);
-+
-+  /* This has to happen after the symbol table has been set.  */
-+  bfd_map_over_sections (ibfd, copy_section, &arg);
-+
-+  if (arg.status)
-+    {
-+      err = _("error copying sections");
-+      goto loser;
-+    }
-+
-+  /* Copy the object-only section to the output.  */
-+  if (! bfd_set_section_contents (obfd, sec, contents, 0, size))
-+    {
-+      err = _("error adding object-only section");
-+      goto loser;
-+    }
-+
-+  /* Allow the BFD backend to copy any private data it understands
-+     from the input BFD to the output BFD.  This is done last to
-+     permit the routine to look at the filtered symbol table, which is
-+     important for the ECOFF code at least.  */
-+  if (! bfd_copy_private_bfd_data (ibfd, obfd))
-+    {
-+      err = _("error copying private BFD data");
-+      goto loser;
-+    }
-+
-+  if (!bfd_close (obfd))
-+    {
-+      unlink (ofilename);
-+      einfo (_("%P%F: failed to finish output with object-only section\n"));
-+    }
-+
-+  /* Must be freed after bfd_close ().  */
-+  free (isympp);
-+  if (osympp)
-+    free (osympp);
-+
-+  if (rename (ofilename, output_filename))
-+    {
-+      unlink (ofilename);
-+      einfo (_("%P%F: failed to rename output with object-only section\n"));
-+    }
-+
-+  free (ofilename);
-+  return;
-+
-+loser:
-+  if (isympp)
-+    free (isympp);
-+  if (osympp)
-+    free (osympp);
-+  if (obfd)
-+    bfd_close (obfd);
-+  if (ofilename)
-+    unlink (ofilename);
-+  einfo (_("%P%F: failed to add object-only section: %s\n"), err);
-+}
-+
-+/* Emit the final output with object-only section.  */
-+
-+void
-+cmdline_emit_object_only_section (void)
-+{
-+  const char *saved_output_filename = output_filename;
-+  int fd;
-+  size_t size, off;
-+  bfd_byte *contents;
-+  struct stat st;
-+
-+  /* Get a temporary object-only file.  */
-+  output_filename = make_temp_file (".obj-only.o");
-+
-+  had_output_filename = false;
-+  link_info.input_bfds = NULL;
-+  link_info.input_bfds_tail = &link_info.input_bfds;
-+
-+  lang_init (true);
-+  ldexp_init (true);
-+
-+  ld_parse_linker_script ();
-+
-+  /* Set up the object-only output. */
-+  lang_final ();
-+
-+  /* Open the object-only file for output.  */
-+  lang_for_each_statement (ldlang_open_output);
-+
-+  ldemul_create_output_section_statements ();
-+
-+  if (!bfd_section_already_linked_table_init ())
-+    einfo (_("%P%F: Failed to create hash table\n"));
-+
-+  /* Call cmdline_on_object_only_archive_list_p to check which member
-+     should be loaded.  */
-+  input_flags.whole_archive = true;
-+
-+  /* Set it to avoid adding more to cmdline lists.  */
-+  config.emitting_gnu_object_only = true;
-+
-+  /* Get object-only input files.  */
-+  cmdline_get_object_only_input_files ();
-+
-+  /* Open object-only input files.  */
-+  open_input_bfds (statement_list.head, NULL, OPEN_BFD_NORMAL);
-+
-+  ldemul_after_open ();
-+
-+  bfd_section_already_linked_table_free ();
-+
-+  /* Make sure that we're not mixing architectures.  We call this
-+     after all the input files have been opened, but before we do any
-+     other processing, so that any operations merge_private_bfd_data
-+     does on the output file will be known during the rest of the
-+     link.  */
-+  lang_check ();
-+
-+  /* Size up the common data.  */
-+  lang_common ();
-+
-+  /* Update wild statements.  */
-+  update_wild_statements (statement_list.head);
-+
-+  /* Run through the contours of the script and attach input sections
-+     to the correct output sections.  */
-+  map_input_to_output_sections (statement_list.head, NULL, NULL);
-+
-+  /* Find any sections not attached explicitly and handle them.  */
-+  lang_place_orphans ();
-+
-+  /* Do anything special before sizing sections.  This is where ELF
-+     and other back-ends size dynamic sections.  */
-+  ldemul_before_allocation ();
-+
-+  /* Size up the sections.  */
-+  lang_size_sections (NULL, ! RELAXATION_ENABLED);
-+
-+  /* See if anything special should be done now we know how big
-+     everything is.  This is where relaxation is done.  */
-+  ldemul_after_allocation ();
-+
-+  ldemul_finish ();
-+
-+  /* Make sure that the section addresses make sense.  */
-+  if (command_line.check_section_addresses)
-+    lang_check_section_addresses ();
-+
-+  lang_end ();
-+
-+  ldwrite ();
-+
-+  ldexp_finish (true);
-+  lang_finish ();
-+
-+  if (! bfd_close (link_info.output_bfd))
-+    einfo (_("%P%F:%s: final close failed on object-only output: %E\n"),
-+	   output_filename);
-+
-+  link_info.output_bfd = NULL;
-+
-+  /* Read in the object-only file.  */
-+  fd = open (output_filename, O_RDONLY | O_BINARY);
-+  if (fd < 0)
-+    {
-+      bfd_set_error (bfd_error_system_call);
-+      einfo (_("%P%F:%s: cannot open object-only output: %E\n"),
-+	     output_filename);
-+    }
-+
-+  /* Get the object-only file size.  */
-+  if (fstat (fd, &st) != 0)
-+    {
-+      bfd_set_error (bfd_error_system_call);
-+      einfo (_("%P%F:%s: cannot stat object-only output: %E\n"),
-+	     output_filename);
-+    }
-+
-+  size = st.st_size;
-+  off = 0;
-+  contents = (bfd_byte *) xmalloc (size);
-+  while (off != size)
-+    {
-+      ssize_t got;
-+
-+      got = read (fd, contents + off, size - off);
-+      if (got < 0)
-+	{
-+	  bfd_set_error (bfd_error_system_call);
-+	  einfo (_("%P%F:%s: read failed on object-only output: %E\n"),
-+		 output_filename);
-+	}
-+
-+      off += got;
-+    }
-+
-+  close (fd);
-+
-+  /* Remove the temporary object-only file.  */
-+  unlink (output_filename);
-+
-+  output_filename = saved_output_filename;
-+
-+  cmdline_add_object_only_section (contents, size);
-+
-+  free (contents);
-+}
-+
-+/* Extract the object-only section.  */
-+
-+static const char *
-+cmdline_extract_object_only_section (bfd *abfd)
-+{
-+  const char *name = bfd_extract_object_only_section (abfd);
-+
-+  if (name == NULL)
-+    einfo (_("%P%F: cannot extract object-only section from %B: %E\n"),
-+	   abfd);
-+
-+  /* It should be removed after it is done.  */
-+  cmdline_list_append (&cmdline_temp_object_only_list,
-+		       cmdline_is_file_enum, (void *) name);
-+
-+  return name;
-+}
-+
-+/* Check and handle the object-only section.   */
-+
-+void
-+cmdline_check_object_only_section (bfd *abfd, bool lto)
-+{
-+  const char *filename;
-+
-+  if (config.emitting_gnu_object_only || abfd->format != bfd_object)
-+    return;
-+
-+  if (lto)
-+    {
-+      /* For LTO link, we only need to extract object-only section
-+	 from the mixed object, add it to input, and put it on LTO
-+	 claimed output.  */
-+      switch (bfd_get_lto_type (abfd))
-+	{
-+	default:
-+	  abort ();
-+	case lto_mixed_object:
-+	  filename = cmdline_extract_object_only_section (abfd);
-+	  lang_add_input_file (filename,
-+			       lang_input_file_is_file_enum, NULL);
-+	  break;
-+	case lto_non_ir_object:
-+	case lto_slim_ir_object:
-+	case lto_fat_ir_object:
-+	  break;
-+	}
-+    }
-+  else if (bfd_link_relocatable (&link_info))
-+    {
-+      /* For non-LTO relocatable link, we need to append non-IR object
-+	 file and the object file in object-only section to the object
-+	 only list.  */
-+      switch (bfd_get_lto_type (abfd))
-+	{
-+	default:
-+	  abort ();
-+	case lto_mixed_object:
-+	  filename = cmdline_extract_object_only_section (abfd);
-+	  cmdline_object_only_list_append (cmdline_is_file_enum,
-+					  (void *) filename);
-+	  break;
-+	case lto_non_ir_object:
-+	  cmdline_object_only_list_append (cmdline_is_bfd_enum, abfd);
-+	  break;
-+	case lto_slim_ir_object:
-+	case lto_fat_ir_object:
-+	  break;
-+	}
-+    }
-+}
-+
-+/* Remove temporary object-only files.  */
-+
-+void
-+cmdline_remove_object_only_files (void)
-+{
-+  cmdline_union_type *c;
-+
-+  if (config.plugin_save_temps)
-+    return;
-+
-+  c = cmdline_temp_object_only_list.head;
-+  for (; c != NULL; c = c->header.next)
-+    switch (c->header.type)
-+      {
-+      default:
-+	abort ();
-+      case cmdline_is_file_enum:
-+	unlink (c->file.filename);
-+	break;
-+      }
-+}
-diff --git a/ld/ldlang.h b/ld/ldlang.h
-index e32c5acaaca..91779a584b4 100644
---- a/ld/ldlang.h
-+++ b/ld/ldlang.h
-@@ -552,7 +552,7 @@ extern struct asneeded_minfo **asneeded_list_tail;
- extern void (*output_bfd_hash_table_free_fn) (struct bfd_link_hash_table *);
- 
- extern void lang_init
--  (void);
-+  (bool);
- extern void lang_finish
-   (void);
- extern lang_memory_region_type * lang_memory_region_lookup
-@@ -746,4 +746,46 @@ print_one_symbol (struct bfd_link_hash_entry *, void *);
- 
- extern void lang_add_version_string
-   (void);
-+
-+typedef enum
-+{
-+  cmdline_is_file_enum,
-+  cmdline_is_bfd_enum
-+} cmdline_enum_type;
-+
-+typedef struct cmdline_header_struct
-+{
-+  union cmdline_union *next;
-+  cmdline_enum_type type;
-+} cmdline_header_type;
-+
-+typedef struct cmdline_file_struct
-+{
-+  cmdline_header_type header;
-+  const char *filename;
-+} cmdline_file_type;
-+
-+typedef struct cmdline_bfd_struct
-+{
-+  cmdline_header_type header;
-+  bfd *abfd;
-+} cmdline_bfd_type;
-+
-+typedef union cmdline_union
-+{
-+  cmdline_header_type header;
-+  cmdline_file_type file;
-+  cmdline_bfd_type abfd;
-+} cmdline_union_type;
-+
-+typedef struct cmdline_list
-+{
-+  cmdline_union_type *head;
-+  cmdline_union_type **tail;
-+} cmdline_list_type;
-+
-+extern void cmdline_emit_object_only_section (void);
-+extern void cmdline_check_object_only_section (bfd *, bool);
-+extern void cmdline_remove_object_only_files (void);
-+
- #endif
-diff --git a/ld/ldmain.c b/ld/ldmain.c
-index 64c4cce8371..dcef7bb9278 100644
---- a/ld/ldmain.c
-+++ b/ld/ldmain.c
-@@ -302,6 +302,9 @@ main (int argc, char **argv)
- 
-   xatexit (ld_cleanup);
- 
-+  /* Remove temporary object-only files.  */
-+  xatexit (cmdline_remove_object_only_files);
-+
-   /* Set up the sysroot directory.  */
-   ld_sysroot = get_sysroot (argc, argv);
-   if (*ld_sysroot)
-@@ -391,8 +394,8 @@ main (int argc, char **argv)
-   emulation = get_emulation (argc, argv);
-   ldemul_choose_mode (emulation);
-   default_target = ldemul_choose_target (argc, argv);
--  lang_init ();
--  ldexp_init ();
-+  lang_init (false);
-+  ldexp_init (false);
-   ldemul_before_parse ();
-   lang_has_input_file = false;
-   parse_args (argc, argv);
-@@ -407,34 +410,7 @@ main (int argc, char **argv)
- 
-   ldemul_set_symbols ();
- 
--  /* If we have not already opened and parsed a linker script,
--     try the default script from command line first.  */
--  if (saved_script_handle == NULL
--      && command_line.default_script != NULL)
--    {
--      ldfile_open_script_file (command_line.default_script);
--      parser_input = input_script;
--      yyparse ();
--    }
--
--  /* If we have not already opened and parsed a linker script
--     read the emulation's appropriate default script.  */
--  if (saved_script_handle == NULL)
--    {
--      int isfile;
--      char *s = ldemul_get_script (&isfile);
--
--      if (isfile)
--	ldfile_open_default_command_file (s);
--      else
--	{
--	  lex_string = s;
--	  lex_redirect (s, _("built in linker script"), 1);
--	}
--      parser_input = input_script;
--      yyparse ();
--      lex_string = NULL;
--    }
-+  ld_parse_linker_script ();
- 
-   if (verbose)
-     {
-@@ -572,7 +548,7 @@ main (int argc, char **argv)
-     fprintf (stderr, "lookup = %p val %lx\n", h, h ? h->u.def.value : 1);
-   }
- #endif
--  ldexp_finish ();
-+  ldexp_finish (false);
-   lang_finish ();
- 
-   if (config.dependency_file != NULL)
-@@ -597,6 +573,8 @@ main (int argc, char **argv)
-       if (!bfd_close (obfd))
- 	einfo (_("%F%P: %s: final close failed: %E\n"), output_filename);
- 
-+      link_info.output_bfd = NULL;
-+
-       /* If the --force-exe-suffix is enabled, and we're making an
- 	 executable file and it doesn't end in .exe, copy it to one
- 	 which does.  */
-@@ -644,6 +622,9 @@ main (int argc, char **argv)
- 	}
-     }
- 
-+  if (config.emit_gnu_object_only)
-+    cmdline_emit_object_only_section ();
-+
-   if (config.stats)
-     {
-       long run_time = get_run_time () - start_time;
-@@ -951,7 +932,9 @@ add_archive_element (struct bfd_link_info *info,
- 	  *subsbfd = input->the_bfd;
- 	}
-     }
-+  else
- #endif /* BFD_SUPPORTS_PLUGINS */
-+    cmdline_check_object_only_section (input->the_bfd, false);
- 
-   if (link_info.input_bfds_tail == &input->the_bfd->link.next
-       || input->the_bfd->link.next != NULL)
-@@ -1694,3 +1677,38 @@ notice (struct bfd_link_info *info,
- 
-   return true;
- }
-+
-+/* Parse the linker script.   */
-+
-+void
-+ld_parse_linker_script (void)
-+{
-+  /* If we have not already opened and parsed a linker script,
-+     try the default script from command line first.  */
-+  if (saved_script_handle == NULL
-+      && command_line.default_script != NULL)
-+    {
-+      ldfile_open_script_file (command_line.default_script);
-+      parser_input = input_script;
-+      yyparse ();
-+    }
-+
-+  /* If we have not already opened and parsed a linker script
-+     read the emulation's appropriate default script.  */
-+  if (saved_script_handle == NULL)
-+    {
-+      int isfile;
-+      char *s = ldemul_get_script (&isfile);
-+
-+      if (isfile)
-+	ldfile_open_default_command_file (s);
-+      else
-+	{
-+	  lex_string = s;
-+	  lex_redirect (s, _("built in linker script"), 1);
-+	}
-+      parser_input = input_script;
-+      yyparse ();
-+      lex_string = NULL;
-+    }
-+}
-diff --git a/ld/ldmain.h b/ld/ldmain.h
-index 0baa3c305c3..34770762f1c 100644
---- a/ld/ldmain.h
-+++ b/ld/ldmain.h
-@@ -63,4 +63,6 @@ extern void add_ignoresym (struct bfd_link_info *, const char *);
- extern void add_keepsyms_file (const char *);
- extern void track_dependency_files (const char *);
- 
-+extern void ld_parse_linker_script (void);
-+
- #endif
-diff --git a/ld/plugin.c b/ld/plugin.c
-index ecced25bd9b..ea0c6fcdd67 100644
---- a/ld/plugin.c
-+++ b/ld/plugin.c
-@@ -1341,6 +1341,9 @@ plugin_maybe_claim (lang_input_statement_type *entry)
-     {
-       bfd *abfd = entry->the_bfd->plugin_dummy_bfd;
- 
-+      /* Check object only section.  */
-+      cmdline_check_object_only_section (entry->the_bfd, true);
-+
-       /* Discard the real file's BFD and substitute the dummy one.  */
- 
-       /* We can't call bfd_close on archives.  BFD archive handling
-diff --git a/ld/scripttempl/elf.sc b/ld/scripttempl/elf.sc
-index ccecc1088b8..deb69dde543 100644
---- a/ld/scripttempl/elf.sc
-+++ b/ld/scripttempl/elf.sc
-@@ -244,7 +244,7 @@ RELA_IPLT=".rela.iplt    ${RELOCATING-0} :
- DYNAMIC=".dynamic      ${RELOCATING-0} : { *(.dynamic) }"
- RODATA=".${RODATA_NAME}       ${RELOCATING-0} : { *(.${RODATA_NAME}${RELOCATING+ .${RODATA_NAME}.* .gnu.linkonce.r.*}) }"
- DATARELRO=".data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }"
--DISCARDED="/DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) }"
-+DISCARDED="/DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) }"
- if test -z "${NO_SMALL_DATA}"; then
-   SBSS=".${SBSS_NAME}         ${RELOCATING-0} :
-   {
-diff --git a/ld/scripttempl/elf64hppa.sc b/ld/scripttempl/elf64hppa.sc
-index c468453d79d..b6701bf1d26 100644
---- a/ld/scripttempl/elf64hppa.sc
-+++ b/ld/scripttempl/elf64hppa.sc
-@@ -132,7 +132,7 @@ fi
- DYNAMIC=".dynamic      ${RELOCATING-0} : { *(.dynamic) }"
- RODATA=".rodata       ${RELOCATING-0} : { *(.rodata${RELOCATING+ .rodata.* .gnu.linkonce.r.*}) }"
- DATARELRO=".data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }"
--DISCARDED="/DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink)  *(.gnu.lto_*) }"
-+DISCARDED="/DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) }"
- if test -z "${NO_SMALL_DATA}"; then
-   SBSS=".sbss         ${RELOCATING-0} :
-   {
-diff --git a/ld/scripttempl/elfxtensa.sc b/ld/scripttempl/elfxtensa.sc
-index fcda83c4dc9..2f62c2dbc54 100644
---- a/ld/scripttempl/elfxtensa.sc
-+++ b/ld/scripttempl/elfxtensa.sc
-@@ -145,7 +145,7 @@ fi
- DYNAMIC=".dynamic      ${RELOCATING-0} : { *(.dynamic) }"
- RODATA=".rodata       ${RELOCATING-0} : { *(.rodata${RELOCATING+ .rodata.* .gnu.linkonce.r.*}) }"
- DATARELRO=".data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }"
--DISCARDED="/DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink)  *(.gnu.lto_*) }"
-+DISCARDED="/DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) }"
- INIT_LIT=".init.literal 0 : { *(.init.literal)	}"
- INIT=".init         0 : { KEEP (*(SORT_NONE(.init))) }"
- FINI_LIT=".fini.literal 0 : { *(.fini.literal)	}"
-diff --git a/ld/scripttempl/mep.sc b/ld/scripttempl/mep.sc
-index 7f0f46ae8e9..8fdf3117a40 100644
---- a/ld/scripttempl/mep.sc
-+++ b/ld/scripttempl/mep.sc
-@@ -119,7 +119,7 @@ fi
- DYNAMIC=".dynamic      ${RELOCATING-0} : { *(.dynamic) }"
- RODATA=".rodata       ${RELOCATING-0} : { *(.rodata${RELOCATING+ .rodata.* .gnu.linkonce.r.*}) }"
- DATARELRO=".data.rel.ro : { *(.data.rel.ro.local) *(.data.rel.ro .data.rel.ro.*) }"
--DISCARDED="/DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink)  *(.gnu.lto_*) }"
-+DISCARDED="/DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) }"
- if test -z "${NO_SMALL_DATA}"; then
-   SBSS=".sbss         ${RELOCATING-0} :
-   {
-diff --git a/ld/scripttempl/pe.sc b/ld/scripttempl/pe.sc
-index 6ca5f040a36..96a47515444 100644
---- a/ld/scripttempl/pe.sc
-+++ b/ld/scripttempl/pe.sc
-@@ -230,6 +230,7 @@ SECTIONS
-     ${RELOCATING+ *(.drectve)}
-     ${RELOCATING+ *(.note.GNU-stack)}
-     ${RELOCATING+ *(.gnu.lto_*)}
-+    ${RELOCATING+ *(.gnu_object_only)}
-   }
- 
-   .idata ${RELOCATING+BLOCK(__section_alignment__)} :
-diff --git a/ld/scripttempl/pep.sc b/ld/scripttempl/pep.sc
-index d9ba2be49d9..e2c6c2cedd2 100644
---- a/ld/scripttempl/pep.sc
-+++ b/ld/scripttempl/pep.sc
-@@ -237,6 +237,7 @@ SECTIONS
-     ${RELOCATING+ *(.drectve)}
-     ${RELOCATING+ *(.note.GNU-stack)}
-     ${RELOCATING+ *(.gnu.lto_*)}
-+    ${RELOCATING+ *(.gnu_object_only)}
-   }
- 
-   .idata ${RELOCATING+BLOCK(__section_alignment__)} :
-diff --git a/ld/testsuite/ld-plugin/lto-10.out b/ld/testsuite/ld-plugin/lto-10.out
-new file mode 100644
-index 00000000000..ce013625030
---- /dev/null
-+++ b/ld/testsuite/ld-plugin/lto-10.out
-@@ -0,0 +1 @@
-+hello
-diff --git a/ld/testsuite/ld-plugin/lto-10a.c b/ld/testsuite/ld-plugin/lto-10a.c
-new file mode 100644
-index 00000000000..93d57b520cb
---- /dev/null
-+++ b/ld/testsuite/ld-plugin/lto-10a.c
-@@ -0,0 +1,6 @@
-+extern int foo(void);
-+
-+int main(void)
-+{
-+  return foo();
-+}
-diff --git a/ld/testsuite/ld-plugin/lto-10b.c b/ld/testsuite/ld-plugin/lto-10b.c
-new file mode 100644
-index 00000000000..507055be341
---- /dev/null
-+++ b/ld/testsuite/ld-plugin/lto-10b.c
-@@ -0,0 +1,7 @@
-+#include <stdio.h>
-+
-+int foo(void)
-+{
-+  printf ("hello\n");
-+  return 0;
-+}
-diff --git a/ld/testsuite/ld-plugin/lto-10r.d b/ld/testsuite/ld-plugin/lto-10r.d
-new file mode 100644
-index 00000000000..3502056153d
---- /dev/null
-+++ b/ld/testsuite/ld-plugin/lto-10r.d
-@@ -0,0 +1,9 @@
-+#ld: -r tmpdir/lto-10a.o tmpdir/lto-10b.o
-+#source: dummy.s
-+#objdump: -h
-+
-+#...
-+ *[0-9]+ +\.gnu\.lto_\.[0-9a-zA-Z_\.]+ +[0-9a-f]+ +[0-9a-f]+  +[0-9a-f]+ +[0-9a-f]+ .*
-+#...
-+ *[0-9]+ +\.gnu_object_only +[0-9a-f]+ +0+ +0+ +0+[1-9a-f][0-9a-f]+ +.*
-+#pass
-diff --git a/ld/testsuite/ld-plugin/lto-4.out b/ld/testsuite/ld-plugin/lto-4.out
-new file mode 100644
-index 00000000000..8d8cc9240c8
---- /dev/null
-+++ b/ld/testsuite/ld-plugin/lto-4.out
-@@ -0,0 +1,2 @@
-+hello bar
-+hello foo
-diff --git a/ld/testsuite/ld-plugin/lto-4a.c b/ld/testsuite/ld-plugin/lto-4a.c
-new file mode 100644
-index 00000000000..2d07cf585da
---- /dev/null
-+++ b/ld/testsuite/ld-plugin/lto-4a.c
-@@ -0,0 +1,7 @@
-+extern void foo(void);
-+
-+int main(void)
-+{
-+  foo();
-+  return 0;
-+}
-diff --git a/ld/testsuite/ld-plugin/lto-4b.c b/ld/testsuite/ld-plugin/lto-4b.c
-new file mode 100644
-index 00000000000..bb4a68bb986
---- /dev/null
-+++ b/ld/testsuite/ld-plugin/lto-4b.c
-@@ -0,0 +1,9 @@
-+#include <stdio.h>
-+
-+extern void bar (void);
-+
-+void foo(void)
-+{
-+  bar ();
-+  printf ("hello foo\n");
-+}
-diff --git a/ld/testsuite/ld-plugin/lto-4c.c b/ld/testsuite/ld-plugin/lto-4c.c
-new file mode 100644
-index 00000000000..317e6fcdacd
---- /dev/null
-+++ b/ld/testsuite/ld-plugin/lto-4c.c
-@@ -0,0 +1,6 @@
-+#include <stdio.h>
-+
-+void bar (void)
-+{
-+  printf ("hello bar\n");
-+}
-diff --git a/ld/testsuite/ld-plugin/lto-4r-a.d b/ld/testsuite/ld-plugin/lto-4r-a.d
-new file mode 100644
-index 00000000000..c618cffb028
---- /dev/null
-+++ b/ld/testsuite/ld-plugin/lto-4r-a.d
-@@ -0,0 +1,7 @@
-+#ld: -r tmpdir/lto-4a.o tmpdir/lto-4b.o tmpdir/lto-4c.o
-+#source: dummy.s
-+#objdump: -h
-+
-+#...
-+.* .gnu_object_only.*
-+#pass
-diff --git a/ld/testsuite/ld-plugin/lto-4r-b.d b/ld/testsuite/ld-plugin/lto-4r-b.d
-new file mode 100644
-index 00000000000..07d71cb5328
---- /dev/null
-+++ b/ld/testsuite/ld-plugin/lto-4r-b.d
-@@ -0,0 +1,7 @@
-+#ld: -r tmpdir/lto-4a.o tmpdir/lto-4b.o
-+#source: dummy.s
-+#objdump: -h
-+
-+#...
-+.* .gnu_object_only.*
-+#pass
-diff --git a/ld/testsuite/ld-plugin/lto-4r-c.d b/ld/testsuite/ld-plugin/lto-4r-c.d
-new file mode 100644
-index 00000000000..4e691ea01ac
---- /dev/null
-+++ b/ld/testsuite/ld-plugin/lto-4r-c.d
-@@ -0,0 +1,7 @@
-+#ld: -r tmpdir/lto-4r-b.o tmpdir/lto-4c.o --no-warn-execstack --no-error-execstack
-+#source: dummy.s
-+#objdump: -h
-+
-+#...
-+.* .gnu_object_only.*
-+#pass
-diff --git a/ld/testsuite/ld-plugin/lto-4r-d.d b/ld/testsuite/ld-plugin/lto-4r-d.d
-new file mode 100644
-index 00000000000..d4c58526cc5
---- /dev/null
-+++ b/ld/testsuite/ld-plugin/lto-4r-d.d
-@@ -0,0 +1,7 @@
-+#ld: -r --whole-archive tmpdir/liblto-4.a
-+#source: dummy.s
-+#objdump: -h
-+
-+#...
-+.* .gnu_object_only.*
-+#pass
-diff --git a/ld/testsuite/ld-plugin/lto.exp b/ld/testsuite/ld-plugin/lto.exp
-index e36480aee78..e454b485ed9 100644
---- a/ld/testsuite/ld-plugin/lto.exp
-+++ b/ld/testsuite/ld-plugin/lto.exp
-@@ -72,6 +72,15 @@ set lto_link_tests [list \
-   [list "Build liblto-3.a" \
-    "" "-flto $lto_fat" \
-    {lto-3b.c} {} "liblto-3.a"] \
-+  [list "Compile 4a" \
-+   "" "-flto $lto_fat" \
-+   {lto-4a.c} {} ""] \
-+  [list "Compile 4b" \
-+   "" "-O2" \
-+   {lto-4b.c} {} ""] \
-+  [list "Compile 4c" \
-+   "" "-O2" \
-+   {lto-4c.c} {} ""] \
-   [list "Compile 5a" \
-    "" "-flto $lto_fat" \
-    {lto-5a.c} {} ""] \
-@@ -84,6 +93,12 @@ set lto_link_tests [list \
-   [list "Compile 9" \
-    "" "-O2 -finline -flto" \
-    {lto-9.cc} {} "" "c++"] \
-+  [list "Compile 10a" \
-+   "" "-O2" \
-+   {lto-10a.c} {} ""] \
-+  [list "Compile 10b" \
-+   "" "-O2 -flto $lto_fat" \
-+   {lto-10b.c} {} ""] \
-   [list "Compile 11a" \
-    "" "-O -flto" \
-    {lto-11a.c} {} ""] \
-@@ -711,9 +726,29 @@ set lto_run_tests [list \
-   [list "LTO 3c" \
-    "-O2 -flto -fuse-linker-plugin tmpdir/lto-3a.o tmpdir/lto-3c.o -Wl,--whole-archive tmpdir/liblto-3.a -Wl,--no-whole-archive tmpdir/liblto-3.a" "" \
-    {dummy.c} "lto-3d.exe" "lto-3.out" "" "c"] \
-+  [list "LTO 4a" \
-+   "-O2 -flto -fuse-linker-plugin \
-+    -Wl,--no-warn-execstack,--no-error-execstack \
-+    tmpdir/lto-4r-a.o" "" \
-+   {dummy.c} "lto-4a.exe" "lto-4.out" "" "c"] \
-+  [list "LTO 4c" \
-+   "-O2 -flto -fuse-linker-plugin \
-+    -Wl,--no-warn-execstack,--no-error-execstack \
-+    tmpdir/lto-4r-c.o" "" \
-+   {dummy.c} "lto-4c.exe" "lto-4.out" "" "c"] \
-+  [list "LTO 4d" \
-+   "-O2 -flto -fuse-linker-plugin \
-+    -Wl,--no-warn-execstack,--no-error-execstack \
-+    tmpdir/lto-4r-d.o" "" \
-+   {dummy.c} "lto-4d.exe" "lto-4.out" "" "c"] \
-   [list "LTO 5" \
-    "-O2 -flto -fuse-linker-plugin tmpdir/lto-5.o" "" \
-    {dummy.c} "lto-5.exe" "lto-5.out" "" "c"] \
-+  [list "LTO 10" \
-+   "-O2 -flto -fuse-linker-plugin \
-+    -Wl,--no-warn-execstack,--no-error-execstack \
-+    tmpdir/lto-10.o" "" \
-+   {dummy.c} "lto-10.exe" "lto-10.out" "" "c"] \
-   [list "LTO 11" \
-    "-O -flto -fuse-linker-plugin tmpdir/liblto-11.a" "" \
-    {dummy.c} "lto-11.exe" "lto-11.out" "" "c"] \
-@@ -979,6 +1014,15 @@ if [string match "" $exec_output] then {
-     fail "PR ld/28138 (build only)"
- }
- 
-+set testname "Build liblto-4.a"
-+remote_file host delete "tmpdir/liblto-4.a"
-+set catch_output [run_host_cmd "$ar" "rc tmpdir/liblto-4.a tmpdir/lto-4a.o tmpdir/lto-4b.o tmpdir/lto-4c.o"]
-+if {![string match "" $catch_output]} {
-+    unresolved $testname
-+    restore_notify
-+    return
-+}
-+
- 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"]
-@@ -1091,8 +1135,30 @@ if { [at_least_gcc_version 4 7] } {
- # Run "ld -r" to generate inputs for complex LTO tests.
- run_dump_test "lto-3r"
- remote_exec host "mv" "tmpdir/dump tmpdir/lto-3.o"
-+run_dump_test "lto-4r-a"
-+remote_exec host "mv" "tmpdir/dump tmpdir/lto-4r-a.o"
-+run_dump_test "lto-4r-b"
-+remote_exec host "mv" "tmpdir/dump tmpdir/lto-4r-b.o"
-+run_dump_test "lto-4r-c"
-+remote_exec host "mv" "tmpdir/dump tmpdir/lto-4r-c.o"
-+run_dump_test "lto-4r-d"
-+remote_exec host "mv" "tmpdir/dump tmpdir/lto-4r-d.o"
- run_dump_test "lto-5r"
- remote_exec host "mv" "tmpdir/dump tmpdir/lto-5.o"
-+run_dump_test "lto-10r"
-+remote_exec host "mv" "tmpdir/dump tmpdir/lto-10.o"
-+set testname "nm mixed object"
-+set lto_plugin [string trim [run_host_cmd "$CC_FOR_TARGET" "-print-prog-name=liblto_plugin.so"]]
-+if { [ regexp "liblto_plugin.so" $lto_plugin ] } {
-+    set exec_output [run_host_cmd "$NM" "--plugin $lto_plugin tmpdir/lto-10.o"]
-+    if { [ regexp "T main" $exec_output ] } {
-+	pass $testname
-+    } {
-+	fail $testname
-+    }
-+} {
-+    fail $testname
-+ }
- 
- run_cc_link_tests $lto_link_symbol_tests
- 
--- 
-2.48.0
-

diff --git a/9999/0007-ld-Document-mixing-LTO-and-non-LTO-objects-for-r.patch b/9999/0007-ld-Document-mixing-LTO-and-non-LTO-objects-for-r.patch
deleted file mode 100644
index 9c17dc9..0000000
--- a/9999/0007-ld-Document-mixing-LTO-and-non-LTO-objects-for-r.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 2c86c77dc5795a7f1e8f915c138c27893d8141d4 Mon Sep 17 00:00:00 2001
-Message-ID: <2c86c77dc5795a7f1e8f915c138c27893d8141d4.1736748624.git.sam@gentoo.org>
-In-Reply-To: <9f57274faacf1dbb6c2b56d29de150b5e79ecb3d.1736748624.git.sam@gentoo.org>
-References: <9f57274faacf1dbb6c2b56d29de150b5e79ecb3d.1736748624.git.sam@gentoo.org>
-From: "H.J. Lu" <hjl.tools@gmail.com>
-Date: Sat, 11 Jan 2025 07:23:27 +0800
-Subject: [PATCH 7/8] ld: Document mixing LTO and non-LTO objects for -r
-
-	* ld.texi: Document mixing LTO and non-LTO relocatable files for
-	"ld -r".
-
-Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
----
- ld/ld.texi | 12 ++++++++++++
- 1 file changed, 12 insertions(+)
-
-diff --git a/ld/ld.texi b/ld/ld.texi
-index da714a20855..d1787453f57 100644
---- a/ld/ld.texi
-+++ b/ld/ld.texi
-@@ -1126,6 +1126,18 @@ relocations.  Different output formats can have further restrictions; for
- example some @code{a.out}-based formats do not support partial linking
- with input files in other formats at all.
- 
-+On ELF platforms, when the relocatable output contains both contents
-+which require link-time optimization (LTO) and contents which don't
-+require LTO, a .gnu_object_only section will be created to contain a
-+relocatable object file, as if @samp{-r} is applied to all relocatable
-+inputs which don't require LTO.  When processing a relocatable input
-+with a .gnu_object_only section, the linker will extract the
-+.gnu_object_only section as a separate input.
-+
-+Note that since @samp{-r} groups some sections from different input files
-+together, there may be negative impacts on code size and locality in
-+final executable or shared library.
-+
- This option does the same thing as @samp{-i}.
- 
- @kindex -R @var{file}
--- 
-2.48.0
-

diff --git a/9999/0008-h8300-Handle-.gnu_object_only-section.patch b/9999/0008-h8300-Handle-.gnu_object_only-section.patch
deleted file mode 100644
index 1336250..0000000
--- a/9999/0008-h8300-Handle-.gnu_object_only-section.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From c5f942b863c660280535dac32586e64d45308550 Mon Sep 17 00:00:00 2001
-Message-ID: <c5f942b863c660280535dac32586e64d45308550.1736748624.git.sam@gentoo.org>
-In-Reply-To: <9f57274faacf1dbb6c2b56d29de150b5e79ecb3d.1736748624.git.sam@gentoo.org>
-References: <9f57274faacf1dbb6c2b56d29de150b5e79ecb3d.1736748624.git.sam@gentoo.org>
-From: "H.J. Lu" <hjl.tools@gmail.com>
-Date: Tue, 27 Oct 2020 06:39:59 -0700
-Subject: [PATCH 8/8] h8300: Handle .gnu_object_only section
-
-	PR ld/12291
-	PR ld/12430
-	PR ld/13298
-	* config/tc-h8300.c (h8300_elf_section): Handle .gnu_object_only
-	section.
----
- gas/config/tc-h8300.c | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/gas/config/tc-h8300.c b/gas/config/tc-h8300.c
-index f8e54064166..105461da92b 100644
---- a/gas/config/tc-h8300.c
-+++ b/gas/config/tc-h8300.c
-@@ -146,8 +146,10 @@ pint (int arg ATTRIBUTE_UNUSED)
- static void
- h8300_elf_section (int push)
- {
--  static const char * known_data_sections [] = { ".rodata", ".tdata", ".tbss" };
--  static const char * known_data_prefixes [] = { ".debug", ".zdebug", ".gnu.warning" };
-+  static const char * known_data_sections []
-+    = { ".rodata", ".tdata", ".tbss", ".gnu_object_only" };
-+  static const char * known_data_prefixes []
-+    = { ".debug", ".zdebug", ".gnu.warning" };
-   char * saved_ilp = input_line_pointer;
-   const char * name;
- 
--- 
-2.48.0
-


^ permalink raw reply related	[flat|nested] 39+ messages in thread

* [gentoo-commits] proj/toolchain/binutils-patches:master commit in: 9999/
@ 2025-02-03 18:02 Andreas K. Hüttel
  0 siblings, 0 replies; 39+ messages in thread
From: Andreas K. Hüttel @ 2025-02-03 18:02 UTC (permalink / raw
  To: gentoo-commits

commit:     2be385087cbca35633d0fb6777017ec8f07875cc
Author:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
AuthorDate: Mon Feb  3 18:01:36 2025 +0000
Commit:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
CommitDate: Mon Feb  3 18:01:36 2025 +0000
URL:        https://gitweb.gentoo.org/proj/toolchain/binutils-patches.git/commit/?id=2be38508

Drop gold patch (XFAIL 15 tests)

Signed-off-by: Andreas K. Hüttel <dilfridge <AT> gentoo.org>

 ...lar-libiberty-fix-as-in-7d53105d-for-lib.patch} |  0
 ...0004-Gentoo-XFAIL-15-broken-ld.gold-tests.patch | 77 ----------------------
 2 files changed, 77 deletions(-)

diff --git a/9999/0005-Apply-a-similar-libiberty-fix-as-in-7d53105d-for-lib.patch b/9999/0004-Apply-a-similar-libiberty-fix-as-in-7d53105d-for-lib.patch
similarity index 100%
rename from 9999/0005-Apply-a-similar-libiberty-fix-as-in-7d53105d-for-lib.patch
rename to 9999/0004-Apply-a-similar-libiberty-fix-as-in-7d53105d-for-lib.patch

diff --git a/9999/0004-Gentoo-XFAIL-15-broken-ld.gold-tests.patch b/9999/0004-Gentoo-XFAIL-15-broken-ld.gold-tests.patch
deleted file mode 100644
index 943d079..0000000
--- a/9999/0004-Gentoo-XFAIL-15-broken-ld.gold-tests.patch
+++ /dev/null
@@ -1,77 +0,0 @@
-From 942b4489226184460d46eb9e7450eb63a1885621 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
-Date: Sat, 31 Jul 2021 01:18:18 +0200
-Subject: [PATCH 4/5] Gentoo: XFAIL 15 broken ld.gold tests
-
-It seems like either the tests or ld.gold in general cannot handle
-compilers built with --enable-default-pie. No fix yet, so let's ignore
-these test failures for the moment. For details see the linked bugs.
-
-Bug: https://bugs.gentoo.org/684046
-Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=22755
-Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=27303
----
- gold/testsuite/Makefile.am |  6 ++++++
- gold/testsuite/Makefile.in | 16 ++++++++++++----
- 2 files changed, 18 insertions(+), 4 deletions(-)
-
-diff --git a/gold/testsuite/Makefile.am b/gold/testsuite/Makefile.am
-index 2f1348fd6e2..1206460f191 100644
---- a/gold/testsuite/Makefile.am
-+++ b/gold/testsuite/Makefile.am
-@@ -1,5 +1,11 @@
- # Process this file with automake to generate Makefile.in
- 
-+# Gentoo, https://bugs.gentoo.org/684046
-+XFAIL_TESTS = exception_separate_shared_12_test exception_separate_shared_21_test \
-+	weak_undef_test initpri3a justsyms_exec script_test_2 script_test_1 \
-+	justsyms binary_test script_test_3 tls_phdrs_script_test script_test_12i \
-+	dynamic_list_2 incremental_test_2 incremental_test_5
-+
- # As far as I can tell automake testing support assumes that the build
- # system and the host system are the same.  So these tests will not
- # work when building with a cross-compiler.
-diff --git a/gold/testsuite/Makefile.in b/gold/testsuite/Makefile.in
-index 9cf21df8d7d..df14333c558 100644
---- a/gold/testsuite/Makefile.in
-+++ b/gold/testsuite/Makefile.in
-@@ -15,10 +15,6 @@
- @SET_MAKE@
- 
- # Process this file with automake to generate Makefile.in
--
--# As far as I can tell automake testing support assumes that the build
--# system and the host system are the same.  So these tests will not
--# work when building with a cross-compiler.
- VPATH = @srcdir@
- am__is_gnu_make = { \
-   if test -z '$(MAKELEVEL)'; then \
-@@ -94,6 +90,14 @@ POST_UNINSTALL = :
- build_triplet = @build@
- host_triplet = @host@
- target_triplet = @target@
-+XFAIL_TESTS = exception_separate_shared_12_test$(EXEEXT) \
-+	exception_separate_shared_21_test$(EXEEXT) \
-+	weak_undef_test$(EXEEXT) initpri3a$(EXEEXT) \
-+	justsyms_exec$(EXEEXT) script_test_2$(EXEEXT) \
-+	script_test_1$(EXEEXT) justsyms$(EXEEXT) binary_test$(EXEEXT) \
-+	script_test_3$(EXEEXT) tls_phdrs_script_test$(EXEEXT) \
-+	script_test_12i$(EXEEXT) dynamic_list_2$(EXEEXT) \
-+	incremental_test_2$(EXEEXT) incremental_test_5$(EXEEXT)
- check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
- 	$(am__EXEEXT_4) $(am__EXEEXT_5) $(am__EXEEXT_6) \
- 	$(am__EXEEXT_7) $(am__EXEEXT_8) $(am__EXEEXT_9) \
-@@ -2782,6 +2786,10 @@ top_srcdir = @top_srcdir@
- zlibdir = @zlibdir@
- zlibinc = @zlibinc@
- 
-+# As far as I can tell automake testing support assumes that the build
-+# system and the host system are the same.  So these tests will not
-+# work when building with a cross-compiler.
-+
- # Ignore warning about AM_PROG_CC_C_O due to large_CFLAGS
- AUTOMAKE_OPTIONS = foreign -Wno-portability
- 
--- 
-2.44.2
-


^ permalink raw reply related	[flat|nested] 39+ messages in thread

end of thread, other threads:[~2025-02-03 18:02 UTC | newest]

Thread overview: 39+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-07-25 12:26 [gentoo-commits] proj/toolchain/binutils-patches:master commit in: 9999/ Andreas K. Hüttel
  -- strict thread matches above, loose matches on Subject: below --
2025-02-03 18:02 Andreas K. Hüttel
2025-01-14  2:09 Sam James
2025-01-13  6:11 Sam James
2025-01-02 13:48 Sam James
2025-01-01 14:05 Sam James
2024-12-26  1:21 Sam James
2024-12-24  6:27 Sam James
2024-12-21  0:09 Sam James
2024-08-03 22:43 Andreas K. Hüttel
2024-06-29 17:05 Andreas K. Hüttel
2024-06-29 16:32 Andreas K. Hüttel
2024-06-29 16:32 Andreas K. Hüttel
2024-06-28 21:48 Andreas K. Hüttel
2023-10-27  0:44 Sam James
2023-10-27  0:44 Sam James
2023-07-30 14:49 Andreas K. Hüttel
2023-07-28 16:23 Andreas K. Hüttel
2023-06-30  9:21 WANG Xuerui
2023-04-02 11:44 Andreas K. Hüttel
2023-01-05 16:22 Andreas K. Hüttel
2023-01-05 16:21 Andreas K. Hüttel
2023-01-03 23:03 Andreas K. Hüttel
2023-01-02 23:50 Andreas K. Hüttel
2022-10-08 12:15 WANG Xuerui
2022-07-29  7:55 WANG Xuerui
2022-01-15 22:27 Andreas K. Hüttel
2021-08-17 20:07 Andreas K. Hüttel
2021-07-30 23:25 Andreas K. Hüttel
2021-07-24 20:57 Andreas K. Hüttel
2021-07-20 19:53 Andreas K. Hüttel
2021-07-20 19:50 Andreas K. Hüttel
2021-07-06  7:04 Sergei Trofimovich
2021-07-06  7:04 Sergei Trofimovich
2021-07-06  7:04 Sergei Trofimovich
2020-07-25 17:27 Andreas K. Hüttel
2020-07-25 12:23 Andreas K. Hüttel
2020-07-25 12:20 Andreas K. Hüttel
2020-05-19 21:12 Andreas K. Hüttel

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox