[binutils-gdb] ld: Override the IR definition for non-ELF targets

H.J. Lu hjl@sourceware.org
Wed Sep 30 12:24:46 GMT 2020


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=04e433a8571e727108b8f1b9a04ba5c7ab20112c

commit 04e433a8571e727108b8f1b9a04ba5c7ab20112c
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Wed Sep 30 05:23:20 2020 -0700

    ld: Override the IR definition for non-ELF targets
    
    For non-ELF targets, override the IR definition before all LTO symbols
    have been read.
    
            PR ld/26675
            * plugin.c (plugin_notice): Override the IR definition before
            all LTO symbols have been read for non-ELF targets.

Diff:
---
 ld/ChangeLog | 6 ++++++
 ld/plugin.c  | 6 ++++--
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/ld/ChangeLog b/ld/ChangeLog
index 369252761cc..134db8cdac8 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,9 @@
+2020-09-30  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR ld/26675
+	* plugin.c (plugin_notice): Override the IR definition before
+	all LTO symbols have been read for non-ELF targets.
+
 2020-09-30  Jeremy Drake  <sourceware-bugzilla@jdrake.com>
 
 	PR 26588
diff --git a/ld/plugin.c b/ld/plugin.c
index 5640b8975b9..067551c4766 100644
--- a/ld/plugin.c
+++ b/ld/plugin.c
@@ -1436,8 +1436,10 @@ plugin_notice (struct bfd_link_info *info,
 	 this by making the symbol appear to be undefined.
 
 	 NB: We change the previous definition in the IR object to
-	 undefweak only after all LTO symbols have been read.  */
-      else if (info->lto_all_symbols_read
+	 undefweak only after all LTO symbols have been read or for
+	 non-ELF targets.  */
+      else if ((info->lto_all_symbols_read
+		|| bfd_get_flavour (abfd) != bfd_target_elf_flavour)
 	       && (((h->type == bfd_link_hash_defweak
 		     || h->type == bfd_link_hash_defined)
 		    && is_ir_dummy_bfd (sym_bfd = h->u.def.section->owner))


More information about the Binutils-cvs mailing list