diff options
author | Alan Modra <amodra@gmail.com> | 2017-04-19 01:26:57 +0930 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2017-04-19 20:39:52 +0930 |
commit | 954b63d4c8645f86e40c7ef6c6d60acd2bf019de (patch) | |
tree | 7e351a33b44fe2672265e418e9d3d4f9e38215d1 /include | |
parent | 951787ed6d13f8f441d93fc3f6fb870c234774af (diff) | |
download | fsf-binutils-gdb-954b63d4c8645f86e40c7ef6c6d60acd2bf019de.zip fsf-binutils-gdb-954b63d4c8645f86e40c7ef6c6d60acd2bf019de.tar.gz fsf-binutils-gdb-954b63d4c8645f86e40c7ef6c6d60acd2bf019de.tar.bz2 |
Implement -z dynamic-undefined-weak
-z nodynamic-undefined-weak is only implemented for x86. (The sparc
backend has some support code but doesn't enable the option by
including ld/emulparams/dynamic_undefined_weak.sh, and since the
support looks like it may be broken I haven't enabled it.) This patch
adds the complementary -z dynamic-undefined-weak, extends both options
to affect building of shared libraries as well as executables, and
adds support for the option on powerpc.
include/
* bfdlink.h (struct bfd_link_info <dynamic_undefined_weak>):
Revise comment.
bfd/
* elflink.c (_bfd_elf_adjust_dynamic_symbol): Hide undefweak
or make dynamic for info->dynamic_undefined_weak 0 and 1.
* elf32-ppc.c:Formatting.
(ensure_undefweak_dynamic): Don't make dynamic when
info->dynamic_undefined_weak is zero.
(allocate_dynrelocs): Discard undefweak dyn_relocs for
info->dynamic_undefined_weak. Discard undef dyn_relocs when
not default visibility. Discard undef and undefweak
dyn_relocs earlier.
(ppc_elf_relocate_section): Adjust to suit.
* elf64-ppc.c: Formatting.
(ensure_undefweak_dynamic): Don't make dynamic when
info->dynamic_undefined_weak is zero.
(allocate_dynrelocs): Discard undefweak dyn_relocs for
info->dynamic_undefined_weak. Discard them earlier.
ld/
* ld.texinfo (dynamic-undefined-weak): Document.
(nodynamic-undefined-weak): Document that this option now can
be used with shared libs.
* emulparams/dynamic_undefined_weak.sh: Support -z
dynamic-undefined-weak.
* emulparams/elf32ppccommon.sh: Include dynamic_undefined_weak.sh.
* testsuite/ld-undefined/weak-undef.exp (undef_weak_so),
(undef_weak_exe): New. Use them. Add -z dynamic-undefined-weak
and -z nodynamic-undefined-weak tests.
* Makefile.am: Update powerpc dependencies.
* Makefile.in: Regenerate.
Diffstat (limited to 'include')
-rw-r--r-- | include/ChangeLog | 5 | ||||
-rw-r--r-- | include/bfdlink.h | 5 |
2 files changed, 8 insertions, 2 deletions
diff --git a/include/ChangeLog b/include/ChangeLog index b0e30ab..90c4c8d 100644 --- a/include/ChangeLog +++ b/include/ChangeLog @@ -1,3 +1,8 @@ +2017-04-19 Alan Modra <amodra@gmail.com> + + * bfdlink.h (struct bfd_link_info <dynamic_undefined_weak>): + Revise comment. + 2017-04-11 Alan Modra <amodra@gmail.com> * opcode/ppc.h (PPC_OPCODE_ALTIVEC2): Delete. diff --git a/include/bfdlink.h b/include/bfdlink.h index 3835fcb..18dea0c 100644 --- a/include/bfdlink.h +++ b/include/bfdlink.h @@ -584,8 +584,9 @@ struct bfd_link_info backend to decide. */ int extern_protected_data; - /* > 0 to treat undefined weak symbol in the executable as dynamic, - requiring dynamic relocation. */ + /* 1 to make undefined weak symbols dynamic when building a dynamic + object. 0 to resolve undefined weak symbols to zero. -1 to let + the backend decide. */ int dynamic_undefined_weak; /* Non-zero if auto-import thunks for DATA items in pei386 DLLs |