Don't output symbol version definitions for non-DT_NEEDED libs
PR 16452, 16457 * elflink.c (_bfd_elf_link_find_version_dependencies): Exclude symbols from libraries that won't be listed in DT_NEEDED. (elf_link_output_extsym): Don't output verdefs for such symbols.
This commit is contained in:
parent
b6a8f012d1
commit
7b20f09964
|
@ -1,3 +1,10 @@
|
|||
2014-11-30 Alan Modra <amodra@gmail.com>
|
||||
|
||||
PR 16452, 16457
|
||||
* elflink.c (_bfd_elf_link_find_version_dependencies): Exclude
|
||||
symbols from libraries that won't be listed in DT_NEEDED.
|
||||
(elf_link_output_extsym): Don't output verdefs for such symbols.
|
||||
|
||||
2014-11-28 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* elf.c (_bfd_elf_slurp_version_tables): Exit loops when vn_next/
|
||||
|
|
|
@ -1832,7 +1832,9 @@ _bfd_elf_link_find_version_dependencies (struct elf_link_hash_entry *h,
|
|||
if (!h->def_dynamic
|
||||
|| h->def_regular
|
||||
|| h->dynindx == -1
|
||||
|| h->verinfo.verdef == NULL)
|
||||
|| h->verinfo.verdef == NULL
|
||||
|| (elf_dyn_lib_class (h->verinfo.verdef->vd_bfd)
|
||||
& (DYN_AS_NEEDED | DYN_DT_NEEDED | DYN_NO_NEEDED)))
|
||||
return TRUE;
|
||||
|
||||
/* See if we already know about this version. */
|
||||
|
@ -9050,7 +9052,9 @@ elf_link_output_extsym (struct bfd_hash_entry *bh, void *data)
|
|||
|
||||
if (!h->def_regular)
|
||||
{
|
||||
if (h->verinfo.verdef == NULL)
|
||||
if (h->verinfo.verdef == NULL
|
||||
|| (elf_dyn_lib_class (h->verinfo.verdef->vd_bfd)
|
||||
& (DYN_AS_NEEDED | DYN_DT_NEEDED | DYN_NO_NEEDED)))
|
||||
iversym.vs_vers = 0;
|
||||
else
|
||||
iversym.vs_vers = h->verinfo.verdef->vd_exp_refno + 1;
|
||||
|
|
Loading…
Reference in New Issue