PR ld/12760
authorAlan Modra <amodra@gmail.com>
Mon, 16 May 2011 00:58:11 +0000 (00:58 +0000)
committerAlan Modra <amodra@gmail.com>
Mon, 16 May 2011 00:58:11 +0000 (00:58 +0000)
* plugin.c (plugin_notice): Set u.undef.abfd for symbols made
undefweak.

ld/ChangeLog
ld/plugin.c

index b8ecfc3..c26c7dd 100644 (file)
@@ -1,3 +1,9 @@
+2011-05-16  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR ld/12760
+       * plugin.c (plugin_notice): Set u.undef.abfd for symbols made
+       undefweak.
+
 2011-05-16  Alan Modra  <amodra@gmail.com>
 
        * ldlang.c (lang_leave_output_section_statement): Don't copy
index 8d9603b..07c6068 100644 (file)
@@ -912,6 +912,8 @@ plugin_notice (struct bfd_link_info *info,
 {
   if (h != NULL)
     {
+      bfd *sym_bfd;
+
       /* No further processing if this def/ref is from an IR dummy BFD.  */
       if (is_ir_dummy_bfd (abfd))
        return TRUE;
@@ -928,10 +930,13 @@ plugin_notice (struct bfd_link_info *info,
         to be undefined.  */
       else if (((h->type == bfd_link_hash_defweak
                 || h->type == bfd_link_hash_defined)
-               && is_ir_dummy_bfd (h->u.def.section->owner))
+               && is_ir_dummy_bfd (sym_bfd = h->u.def.section->owner))
               || (h->type == bfd_link_hash_common
-                  && is_ir_dummy_bfd (h->u.c.p->section->owner)))
-       h->type = bfd_link_hash_undefweak;
+                  && is_ir_dummy_bfd (sym_bfd = h->u.c.p->section->owner)))
+       {
+         h->type = bfd_link_hash_undefweak;
+         h->u.undef.abfd = sym_bfd;
+       }
     }
 
   /* Continue with cref/nocrossref/trace-sym processing.  */