From 09e2aba4327cd450908bed05c6e1d4d2dcb09b32 Mon Sep 17 00:00:00 2001 From: Dave Korn Date: Mon, 4 May 2009 12:09:30 +0000 Subject: bfd/ChangeLog * elflink.c (find_version_for_sym): Remove from here, ... * linker.c (bfd_find_version_for_sym): ... rename, replace here, make public and update all callers. * bfd-in2.h: Regenerate. ld/ChangeLog * NEWS: Mention new feature. * ld.texinfo (--version-script): Document extent of PE support. (WIN32): Mention --version-script. Extend auto-export description. * pe-dll.c (process_def_file): Use version script info to filter symbols from auto-export. * testsuite/ld-pe/vers-script-1.d: New file. * testsuite/ld-pe/vers-script-2.d: New file. * testsuite/ld-pe/vers-script-3.d: New file. * testsuite/ld-pe/vers-script-4.d: New file. * testsuite/ld-pe/vers-script-1.ver: New file. * testsuite/ld-pe/vers-script-2.ver: New file. * testsuite/ld-pe/vers-script-3.ver: New file. * testsuite/ld-pe/vers-script-4.ver: New file. * testsuite/ld-pe/vers-script-dll.c: New file. * testsuite/ld-pe/vers-script.exp: New test script. --- ld/pe-dll.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'ld/pe-dll.c') diff --git a/ld/pe-dll.c b/ld/pe-dll.c index 397b66e..b5470c5 100644 --- a/ld/pe-dll.c +++ b/ld/pe-dll.c @@ -670,9 +670,18 @@ process_def_file (bfd *abfd ATTRIBUTE_UNUSED, struct bfd_link_info *info) /* We should export symbols which are either global or not anything at all. (.bss data is the latter) We should not export undefined symbols. */ - if (symbols[j]->section != &bfd_und_section - && ((symbols[j]->flags & BSF_GLOBAL) - || (symbols[j]->flags == 0))) + bfd_boolean would_export = symbols[j]->section != &bfd_und_section + && ((symbols[j]->flags & BSF_GLOBAL) + || (symbols[j]->flags == 0)); + if (lang_elf_version_info && would_export) + { + bfd_boolean hide = 0; + char ofs = pe_details->underscored && symbols[j]->name[0] == '_'; + (void) bfd_find_version_for_sym (lang_elf_version_info, + symbols[j]->name + ofs, &hide); + would_export = !hide; + } + if (would_export) { const char *sn = symbols[j]->name; -- cgit v1.1