diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2005-01-19 16:15:11 +0000 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2005-01-19 16:15:11 +0000 |
commit | 1c16dfa5fdc5576b3129d29775da52302b72c500 (patch) | |
tree | 615eb5ef0ba2f79ffa340e1a485762e05f73faba | |
parent | 8a9de0e488f81e29b62e2ebb7ec4619e4fece4b6 (diff) | |
download | gdb-1c16dfa5fdc5576b3129d29775da52302b72c500.zip gdb-1c16dfa5fdc5576b3129d29775da52302b72c500.tar.gz gdb-1c16dfa5fdc5576b3129d29775da52302b72c500.tar.bz2 |
2005-01-19 H.J. Lu <hongjiu.lu@intel.com>
PR 679
* elflink.c (_bfd_elf_dynamic_symbol_p): Only protected
non-function symbols are local.
(_bfd_elf_symbol_refs_local_p): Likewise.
-rw-r--r-- | bfd/ChangeLog | 7 | ||||
-rw-r--r-- | bfd/elflink.c | 6 |
2 files changed, 12 insertions, 1 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 97a61bd..e2abbe8 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,10 @@ +2005-01-19 H.J. Lu <hongjiu.lu@intel.com> + + PR 679 + * elflink.c (_bfd_elf_dynamic_symbol_p): Only protected + non-function symbols are local. + (_bfd_elf_symbol_refs_local_p): Likewise. + 2005-01-18 Alan Modra <amodra@bigpond.net.au> * bfd.c (bfd_link_just_syms): Add abfd param. diff --git a/bfd/elflink.c b/bfd/elflink.c index a973cd5..7a02d34 100644 --- a/bfd/elflink.c +++ b/bfd/elflink.c @@ -2479,7 +2479,7 @@ _bfd_elf_dynamic_symbol_p (struct elf_link_hash_entry *h, /* Proper resolution for function pointer equality may require that these symbols perhaps be resolved dynamically, even though we should be resolving them to the current module. */ - if (!ignore_protected) + if (!ignore_protected || h->type != STT_FUNC) binding_stays_local_p = TRUE; break; @@ -2542,6 +2542,10 @@ _bfd_elf_symbol_refs_local_p (struct elf_link_hash_entry *h, if (ELF_ST_VISIBILITY (h->other) != STV_PROTECTED) return TRUE; + /* STV_PROTECTED non-function symbols are local. */ + if (h->type != STT_FUNC) + return TRUE; + /* Function pointer equality tests may require that STV_PROTECTED symbols be treated as dynamic symbols, even when we know that the dynamic linker will resolve them locally. */ |