2000-02-22 H.J. Lu <hjl@gnu.org>
authorIan Lance Taylor <ian@airs.com>
Tue, 22 Feb 2000 05:51:02 +0000 (05:51 +0000)
committerIan Lance Taylor <ian@airs.com>
Tue, 22 Feb 2000 05:51:02 +0000 (05:51 +0000)
        * elflink.h (elf_bfd_final_link): Call output_extsym for global
symbols converted to local symbols even when stripping all
symbols.
        (elf_link_output_extsym): Process global symbols converted to
local symbols even if they are being stripped.

bfd/elflink.h

index 54577a66b984c1781b4fd817b50e27a279d4c09e..00037b38a985779f1c58111b97f8f4ca45e7e2f5 100644 (file)
@@ -1,5 +1,5 @@
 /* ELF linker support.
-   Copyright 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
+   Copyright 1995, 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
 
 This file is part of BFD, the Binary File Descriptor library.
 
@@ -4393,7 +4393,7 @@ elf_bfd_final_link (abfd, info)
   /* That wrote out all the local symbols.  Finish up the symbol table
      with the global symbols.  */
 
-  if (info->strip != strip_all && info->shared)
+  if (info->shared)
     {
       /* Output any global symbols that got converted to local in a
          version script.  We do this in a separate step since ELF
@@ -4928,8 +4928,10 @@ elf_link_output_extsym (h, data)
     strip = false;
 
   /* If we're stripping it, and it's not a dynamic symbol, there's
-     nothing else to do.  */
-  if (strip && h->dynindx == -1)
+     nothing else to do unless it is a forced local symbol.  */
+  if (strip
+      && h->dynindx == -1
+      && (h->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) == 0)
     return true;
 
   sym.st_value = 0;