aboutsummaryrefslogtreecommitdiff
path: root/bfd/elflink.c
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2000-05-30 20:51:36 +0000
committerH.J. Lu <hjl.tools@gmail.com>2000-05-30 20:51:36 +0000
commit38048eb91133e21141ab4bb16ef2221852eebc86 (patch)
treecf4cc83eab920c41a578b59edd38f93c1ad4fa7c /bfd/elflink.c
parent896ad910163de1066275320baea937053688f1ef (diff)
downloadgdb-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.c12
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;