Set STB_GNU_UNIQUE only if symbol is defined in regular object
authorH.J. Lu <hjl.tools@gmail.com>
Fri, 8 Feb 2013 01:33:01 +0000 (01:33 +0000)
committerH.J. Lu <hjl.tools@gmail.com>
Fri, 8 Feb 2013 01:33:01 +0000 (01:33 +0000)
bfd/

PR ld/15107
* elflink.c (elf_link_output_extsym): Set STB_GNU_UNIQUE only if
symbol is defined in regular object.

ld/testsuite/

PR ld/15107
* ld-unique/unique_empty.s: Add reference to "b".

bfd/ChangeLog
bfd/elflink.c
ld/testsuite/ChangeLog
ld/testsuite/ld-unique/unique_empty.s

index c652c35..4c93611 100644 (file)
@@ -1,3 +1,9 @@
+2013-02-07  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR ld/15107
+       * elflink.c (elf_link_output_extsym): Set STB_GNU_UNIQUE only if
+       symbol is defined in regular object.
+
 2013-02-07  Roberto Agostino Vitillo  <ra.vitillo@gmail.com>
 
        PR binutils/15106
index d336730..e6c8351 100644 (file)
@@ -8868,7 +8868,8 @@ elf_link_output_extsym (struct bfd_hash_entry *bh, void *data)
       /* Turn off visibility on local symbol.  */
       sym.st_other &= ~ELF_ST_VISIBILITY (-1);
     }
-  else if (h->unique_global)
+  /* Set STB_GNU_UNIQUE only if symbol is defined in regular object.  */
+  else if (h->unique_global && h->def_regular)
     sym.st_info = ELF_ST_INFO (STB_GNU_UNIQUE, h->type);
   else if (h->root.type == bfd_link_hash_undefweak
           || h->root.type == bfd_link_hash_defweak)
index 2c12a52..c031a5e 100644 (file)
@@ -1,3 +1,8 @@
+2013-02-07  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR ld/15107
+       * ld-unique/unique_empty.s: Add reference to "b".
+
 2013-02-06  H.J. Lu  <hongjiu.lu@intel.com>
 
        * ld-size/size-10.rd: Updated.
index efd6683..c4c52c2 100644 (file)
@@ -1,4 +1,4 @@
         .type main,"function"
         .global main
 main:
-        .long 0
+        .dc.a b