]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commit
ld: Add --export-dynamic-symbol and --export-dynamic-symbol-list
authorFangrui Song <maskray@google.com>
Wed, 3 Jun 2020 13:37:39 +0000 (06:37 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Wed, 3 Jun 2020 13:37:39 +0000 (06:37 -0700)
commit37a141bfed4dd3c33d77c15dfde00e4b4f5b24c7
tree05fc3a047c219a7e59357a758472a566e926a570
parent433953ffa1a59531a5537327a4e3ce24565e609c
ld: Add --export-dynamic-symbol and --export-dynamic-symbol-list

--export-dynamic-symbol-list is like a dynamic list, but without
the symbolic property for unspecified symbols.

When creating an executable, --export-dynamic-symbol-list is treated
like --dynamic-list.

When creating a shared library, it is treated like --dynamic-list if
-Bsymbolic or --dynamic-list are used,  otherwise, it is ignored, so
that references to matched symbols will not be bound to the definitions
within the shared library.

PR ld/25910
* NEWS: Mention --export-dynamic-symbol[-list].
* ld.texi: Document --export-dynamic-symbol[-list].
* ldgram.y: Pass current_dynamic_list_p to
lang_append_dynamic_list.
* ldlang.c (current_dynamic_list_p): New.
(ang_append_dynamic_list): Updated to take a pointer to
struct bfd_elf_dynamic_list * argument instead of using
link_info.dynamic_list.
(lang_append_dynamic_list_cpp_typeinfo): Pass
&link_info.dynamic_list to ang_append_dynamic_list.
(lang_append_dynamic_list_cpp_new): Likewise.
* ldlang.h (current_dynamic_list_p): New.
(lang_append_dynamic_list): Add a pointer to
struct bfd_elf_dynamic_list * argument.
* ldlex.h (option_values): Add OPTION_EXPORT_DYNAMIC_SYMBOL and
OPTION_EXPORT_DYNAMIC_SYMBOL_LIST.
* lexsup.c (ld_options): Add entries for
OPTION_EXPORT_DYNAMIC_SYMBOL and
OPTION_EXPORT_DYNAMIC_SYMBOL_LIST.
(parse_args): Handle --export-dynamic-symbol and
--export-dynamic-symbol-list.
* testsuite/ld-dynamic/export-dynamic-symbol-1.d: New.
* testsuite/ld-dynamic/export-dynamic-symbol-2.d: New.
* testsuite/ld-dynamic/export-dynamic-symbol-glob.d: New.
* testsuite/ld-dynamic/export-dynamic-symbol-list-1.d: New.
* testsuite/ld-dynamic/export-dynamic-symbol-list-2.d: New.
* testsuite/ld-dynamic/export-dynamic-symbol-list-glob.d: New.
* testsuite/ld-dynamic/export-dynamic-symbol.exp: New.
* testsuite/ld-dynamic/export-dynamic-symbol.s: New.
* testsuite/ld-dynamic/foo-bar.list: New.
* testsuite/ld-dynamic/foo.list: New.
* testsuite/ld-dynamic/foo.s: New.
* testsuite/ld-dynamic/fstar.list: New.
* testsuite/ld-elf/dlempty.list: New.
* testsuite/ld-elf/shared.exp: Add tests for
--export-dynamic-symbol and --export-dynamic-symbol-list.
22 files changed:
ld/ChangeLog
ld/NEWS
ld/ld.texi
ld/ldgram.y
ld/ldlang.c
ld/ldlang.h
ld/ldlex.h
ld/lexsup.c
ld/testsuite/ld-dynamic/export-dynamic-symbol-1.d [new file with mode: 0644]
ld/testsuite/ld-dynamic/export-dynamic-symbol-2.d [new file with mode: 0644]
ld/testsuite/ld-dynamic/export-dynamic-symbol-glob.d [new file with mode: 0644]
ld/testsuite/ld-dynamic/export-dynamic-symbol-list-1.d [new file with mode: 0644]
ld/testsuite/ld-dynamic/export-dynamic-symbol-list-2.d [new file with mode: 0644]
ld/testsuite/ld-dynamic/export-dynamic-symbol-list-glob.d [new file with mode: 0644]
ld/testsuite/ld-dynamic/export-dynamic-symbol.exp [new file with mode: 0644]
ld/testsuite/ld-dynamic/export-dynamic-symbol.s [new file with mode: 0644]
ld/testsuite/ld-dynamic/foo-bar.list [new file with mode: 0644]
ld/testsuite/ld-dynamic/foo.list [new file with mode: 0644]
ld/testsuite/ld-dynamic/foo.s [new file with mode: 0644]
ld/testsuite/ld-dynamic/fstar.list [new file with mode: 0644]
ld/testsuite/ld-elf/dlempty.list [new file with mode: 0644]
ld/testsuite/ld-elf/shared.exp