diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2011-09-16 01:15:18 +0000 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2011-09-16 01:15:18 +0000 |
commit | bd5bb372a93328acd501b49d91b9fd856bcb532e (patch) | |
tree | cdb47d48e2340b1bd9839f7bb8ec1f365c0ac2c9 /bfd/linker.c | |
parent | 107507823edb763f8d5f6d60e7616244257cb4e8 (diff) | |
download | binutils-redhat-bd5bb372a93328acd501b49d91b9fd856bcb532e.tar.gz |
Check if a symbol is hidden by linker script.
bfd/
2011-09-15 H.J. Lu <hongjiu.lu@intel.com>
PR ld/12975
* bfd-in.h (bfd_elf_size_dynamic_sections): Remove pointer
to struct bfd_elf_version_tree.
* elflink.c (elf_info_failed): Remove verdefs.
(_bfd_elf_export_symbol): Updated.
_bfd_elf_link_assign_sym_version): Likewise.
(bfd_elf_size_dynamic_sections): Remove pointer to struct
bfd_elf_version_tree. Updated.
(bfd_elf_gc_mark_dynamic_ref_symbol): Check if a symbol is hidden
by linker script.
* linker.c (bfd_hide_sym_by_version): New.
* bfd-in2.h: Regenerated.
include/
2011-09-15 H.J. Lu <hongjiu.lu@intel.com>
PR ld/12975
* bfdlink.h (bfd_link_info): Add version_info.
ld/
2011-09-15 H.J. Lu <hongjiu.lu@intel.com>
PR ld/12975
* ldlang.c (lang_elf_version_info): Removed.
(lang_register_vers_node): Replace lang_elf_version_info with
link_info.version_info.
(lang_add_vers_depend): Likewise.
* pe-dll.c (process_def_file_and_drectve): Likewise.
* emultempl/solaris2.em (elf_solaris2_before_allocation): Likewise.
* ldlang.h (lang_elf_version_info): Removed.
* plugin.c (is_visible_from_outside): Check if symbol is hidden
by version script.
* emultempl/elf32.em (gld${EMULATION_NAME}_before_allocation):
Remove lang_elf_version_info.
ld/testsuite/
2011-09-15 H.J. Lu <hongjiu.lu@intel.com>
PR ld/12975
* ld-elf/pr12975.d: New.
* ld-elf/pr12975.s: Likewise.
* ld-elf/pr12975.t: Likewise.
Diffstat (limited to 'bfd/linker.c')
-rw-r--r-- | bfd/linker.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/bfd/linker.c b/bfd/linker.c index e44386232d..7a01e114a2 100644 --- a/bfd/linker.c +++ b/bfd/linker.c @@ -3380,3 +3380,26 @@ bfd_find_version_for_sym (struct bfd_elf_version_tree *verdefs, return NULL; } + +/* +FUNCTION + bfd_hide_sym_by_version + +SYNOPSIS + bfd_boolean bfd_hide_sym_by_version + (struct bfd_elf_version_tree *verdefs, const char *sym_name); + +DESCRIPTION + Search an elf version script tree for symbol versioning + info for a given symbol. Return TRUE if the symbol is hidden. + +*/ + +bfd_boolean +bfd_hide_sym_by_version (struct bfd_elf_version_tree *verdefs, + const char *sym_name) +{ + bfd_boolean hidden = FALSE; + bfd_find_version_for_sym (verdefs, sym_name, &hidden); + return hidden; +} |