* elflink.h (elf_link_input_bfd): Discard local symbols that are
authorIan Lance Taylor <ian@airs.com>
Thu, 6 Feb 1997 22:02:51 +0000 (22:02 +0000)
committerIan Lance Taylor <ian@airs.com>
Thu, 6 Feb 1997 22:02:51 +0000 (22:02 +0000)
attached to sections which are not being included in the link.

bfd/elflink.h

index 86352f04dceac6309c2cdc698d845798f0662112..dd5b4db72637be11cdedeb8c1889fc4d7f7163c9 100644 (file)
@@ -2881,9 +2881,20 @@ elf_link_input_bfd (finfo, input_bfd)
       if (finfo->info->discard == discard_all)
        continue;
 
+      /* If this symbol is defined in a section which we are
+         discarding, we don't need to keep it.  For the benefit of the
+         MIPS ELF linker, we check SEC_EXCLUDE as well as linker_mark.  */
+      if (isym->st_shndx > 0
+         && isym->st_shndx < SHN_LORESERVE
+         && isec != NULL
+         && (! isec->linker_mark
+             || (! finfo->info->relocateable
+                 && (isec->flags & SEC_EXCLUDE) != 0)))
+       continue;
+
       /* Get the name of the symbol.  */
       name = bfd_elf_string_from_elf_section (input_bfd, symtab_hdr->sh_link,
-                                         isym->st_name);
+                                             isym->st_name);
       if (name == NULL)
        return false;