+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.
/* 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;
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. */