[Patch] PR 26198 Failure to merge read only data of machine code object file and LTO object file on MinGW

Alan Modra amodra@gmail.com
Tue Jul 14 23:03:28 GMT 2020


On Tue, Jul 14, 2020 at 01:12:58PM +0200, Markus Böck wrote:
> Tested with and without the patch against the entirety of the g++ and gcc
> testsuite using the mingw target and lto enable and observed no changes in
> test results.

Thanks.  I've also run a full gcc bootstrap and regression test on
x86_64-linux for the corresponding change to
_bfd_elf_section_already_linked.

Committed.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 3cb4881feb..813e3f219b 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,11 @@
+2020-07-15  Markus Böck  <markus.boeck02@gmail.com>
+	    Alan Modra  <amodra@gmail.com>
+
+	PR 26198
+	* coffgen.c (_bfd_coff_section_already_linked): Allow for plugin
+	objects both before and after normal object files.
+	* elflink.c (_bfd_elf_section_already_linked): Likewise.
+
 2020-07-10  Alan Modra  <amodra@gmail.com>
 
 	* elf64-ppc.h (struct ppc64_elf_params): Add power10_stubs.
diff --git a/bfd/coffgen.c b/bfd/coffgen.c
index 3291b693eb..d49b2ff201 100644
--- a/bfd/coffgen.c
+++ b/bfd/coffgen.c
@@ -2662,7 +2662,8 @@ _bfd_coff_section_already_linked (bfd *abfd,
 	 .gnu.linkonce.*.<key>.  */
       if (((s_comdat != NULL) == (l_comdat != NULL)
 	   && strcmp (name, l->sec->name) == 0)
-	  || (l->sec->owner->flags & BFD_PLUGIN) != 0)
+	  || (l->sec->owner->flags & BFD_PLUGIN) != 0
+	  || (sec->owner->flags & BFD_PLUGIN) != 0)
 	{
 	  /* The section has already been linked.  See if we should
 	     issue a warning.  */
diff --git a/bfd/elflink.c b/bfd/elflink.c
index 998b72f228..6978df56db 100644
--- a/bfd/elflink.c
+++ b/bfd/elflink.c
@@ -14534,7 +14534,8 @@ _bfd_elf_section_already_linked (bfd *abfd,
       if (((flags & SEC_GROUP) == (l->sec->flags & SEC_GROUP)
 	   && ((flags & SEC_GROUP) != 0
 	       || strcmp (name, l->sec->name) == 0))
-	  || (l->sec->owner->flags & BFD_PLUGIN) != 0)
+	  || (l->sec->owner->flags & BFD_PLUGIN) != 0
+	  || (sec->owner->flags & BFD_PLUGIN) != 0)
 	{
 	  /* The section has already been linked.  See if we should
 	     issue a warning.  */

-- 
Alan Modra
Australia Development Lab, IBM


More information about the Binutils mailing list