2001-06-08 H.J. Lu <hjl@gnu.org>
authorH.J. Lu <hjl.tools@gmail.com>
Fri, 8 Jun 2001 15:30:52 +0000 (15:30 +0000)
committerH.J. Lu <hjl.tools@gmail.com>
Fri, 8 Jun 2001 15:30:52 +0000 (15:30 +0000)
* elf.c (swap_out_syms): Keep names for global section symbols.

bfd/ChangeLog
bfd/elf.c

index 21cf85c..b60ba18 100644 (file)
@@ -1,3 +1,7 @@
+2001-06-08  H.J. Lu  <hjl@gnu.org>
+
+       * elf.c (swap_out_syms): Keep names for global section symbols.
+
 2001-06-07  H.J. Lu  <hjl@gnu.org>
 
        * config.bfd: Put back ecoff for Linux/mips. Firmwares on some
index fc31cdc..665d99f 100644 (file)
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -4394,9 +4394,9 @@ swap_out_syms (abfd, sttp, relocatable_p)
        flagword flags = syms[idx]->flags;
        int type;
 
-       if ((flags & BSF_SECTION_SYM) != 0)
+       if ((flags & (BSF_SECTION_SYM | BSF_GLOBAL)) == BSF_SECTION_SYM)
          {
-           /* Section symbols have no name.  */
+           /* Local section symbols have no name.  */
            sym.st_name = 0;
          }
        else
@@ -4505,7 +4505,12 @@ swap_out_syms (abfd, sttp, relocatable_p)
           type = (*bed->elf_backend_get_symbol_type) (&type_ptr->internal_elf_sym, type);
 
        if (flags & BSF_SECTION_SYM)
-         sym.st_info = ELF_ST_INFO (STB_LOCAL, STT_SECTION);
+         {
+           if (flags & BSF_GLOBAL)
+             sym.st_info = ELF_ST_INFO (STB_GLOBAL, STT_SECTION);
+           else
+             sym.st_info = ELF_ST_INFO (STB_LOCAL, STT_SECTION);
+         }
        else if (bfd_is_com_section (syms[idx]->section))
          sym.st_info = ELF_ST_INFO (STB_GLOBAL, type);
        else if (bfd_is_und_section (syms[idx]->section))