diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2000-05-30 20:51:36 +0000 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2000-05-30 20:51:36 +0000 |
commit | 38048eb91133e21141ab4bb16ef2221852eebc86 (patch) | |
tree | cf4cc83eab920c41a578b59edd38f93c1ad4fa7c /bfd/elflink.c | |
parent | 896ad910163de1066275320baea937053688f1ef (diff) | |
download | gdb-38048eb91133e21141ab4bb16ef2221852eebc86.zip gdb-38048eb91133e21141ab4bb16ef2221852eebc86.tar.gz gdb-38048eb91133e21141ab4bb16ef2221852eebc86.tar.bz2 |
2000-05-30 H.J. Lu <hjl@gnu.org>
* elflink.c (_bfd_elf_link_record_dynamic_symbol): Clear the
visibility bits if the symbol is undefined. Correctly handle
weak undefined symbols with hidden and internal attributes.
* elflink.h (elf_link_add_object_symbols): Always turn the
symbol into local if it has the hidden or internal attribute.
Diffstat (limited to 'bfd/elflink.c')
-rw-r--r-- | bfd/elflink.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/bfd/elflink.c b/bfd/elflink.c index 1b1548a..c593e49 100644 --- a/bfd/elflink.c +++ b/bfd/elflink.c @@ -235,10 +235,16 @@ _bfd_elf_link_record_dynamic_symbol (info, h) (*info->callbacks->undefined_symbol) (info, name, abfd, bfd_und_section_ptr, 0, true); + + /* We have flaged a fatal error. We now treat this as + a normal symbol to avoid further error messages. */ + h->other ^= ELF_ST_VISIBILITY (h->other); + } + else if (h->root.type != bfd_link_hash_undefweak) + { + h->elf_link_hash_flags |= ELF_LINK_FORCED_LOCAL; + return true; } - - h->elf_link_hash_flags |= ELF_LINK_FORCED_LOCAL; - return true; default: break; |