* elf32-cris.c (elf_cris_discard_excess_program_dynamics): Don't
authorHans-Peter Nilsson <hp@axis.com>
Thu, 31 Jan 2002 10:46:24 +0000 (10:46 +0000)
committerHans-Peter Nilsson <hp@axis.com>
Thu, 31 Jan 2002 10:46:24 +0000 (10:46 +0000)
unexport unreferenced symbols when --export-dynamic.  Call
_bfd_elf_strtab_delref when unexporting.

bfd/ChangeLog
bfd/elf32-cris.c

index 8781578..824e851 100644 (file)
@@ -1,3 +1,9 @@
+2002-01-31  Hans-Peter Nilsson  <hp@axis.com>
+
+       * elf32-cris.c (elf_cris_discard_excess_program_dynamics): Don't
+       unexport unreferenced symbols when --export-dynamic.  Call
+       _bfd_elf_strtab_delref when unexporting.
+
 2002-01-30  Daniel Jacobowitz  <drow@mvista.com>
 
        * bfd-in.h: Include <stdbool.h> if it is available.
index 6feb292..c588adc 100644 (file)
@@ -2936,8 +2936,14 @@ elf_cris_discard_excess_program_dynamics (h, inf)
       /* If the locally-defined symbol isn't used by a DSO, then we don't
         have to export it as a dynamic symbol.  This was already done for
         functions; doing this for all symbols would presumably not
-        introduce new problems.  */
-      h->root.dynindx = -1;
+        introduce new problems.  Of course we don't do this if we're
+        exporting all dynamic symbols.  */
+      if (! info->export_dynamic)
+       {
+         h->root.dynindx = -1;
+         _bfd_elf_strtab_delref (elf_hash_table (info)->dynstr,
+                                 h->root.dynstr_index);
+       }
     }
 
   return true;