aboutsummaryrefslogtreecommitdiff
path: root/bfd/elfcode.h
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@airs.com>1995-01-06 21:50:28 +0000
committerIan Lance Taylor <ian@airs.com>1995-01-06 21:50:28 +0000
commit42cf6d7950ebbb91215bac2035055ceb0d5ccda4 (patch)
tree41b6033b36dc1c0adce0a390afa4ff6e6ba428d7 /bfd/elfcode.h
parent09722039025db14916df14dc44fbc093317851c1 (diff)
downloadgdb-42cf6d7950ebbb91215bac2035055ceb0d5ccda4.zip
gdb-42cf6d7950ebbb91215bac2035055ceb0d5ccda4.tar.gz
gdb-42cf6d7950ebbb91215bac2035055ceb0d5ccda4.tar.bz2
* elfcode.h (elf_slurp_symbol_table): Don't set BSF_GLOBAL for an
undefined or common symbol. (elf_link_add_object_symbols): Likewise.
Diffstat (limited to 'bfd/elfcode.h')
-rw-r--r--bfd/elfcode.h12
1 files changed, 10 insertions, 2 deletions
diff --git a/bfd/elfcode.h b/bfd/elfcode.h
index f0b515b..ec3828e 100644
--- a/bfd/elfcode.h
+++ b/bfd/elfcode.h
@@ -2801,7 +2801,9 @@ elf_slurp_symbol_table (abfd, symptrs, dynamic)
sym->symbol.flags |= BSF_LOCAL;
break;
case STB_GLOBAL:
- sym->symbol.flags |= BSF_GLOBAL;
+ if (i_sym.st_shndx != SHN_UNDEF
+ && i_sym.st_shndx != SHN_COMMON)
+ sym->symbol.flags |= BSF_GLOBAL;
break;
case STB_WEAK:
sym->symbol.flags |= BSF_WEAK;
@@ -4202,7 +4204,13 @@ elf_link_add_object_symbols (abfd, info)
continue;
}
else if (bind == STB_GLOBAL)
- flags = BSF_GLOBAL;
+ {
+ if (sym.st_shndx != SHN_UNDEF
+ && sym.st_shndx != SHN_COMMON)
+ flags = BSF_GLOBAL;
+ else
+ flags = 0;
+ }
else if (bind == STB_WEAK)
flags = BSF_WEAK;
else