diff options
author | Alan Modra <amodra@gmail.com> | 2019-09-20 12:21:50 +0930 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2019-09-20 12:51:19 +0930 |
commit | e59a1001222d853f0517c7e974bb51589ba86710 (patch) | |
tree | d31bde00fd91d48b7367a4ed9eb83984cdcd97bb /gold | |
parent | e4153ae630fcc779ba414fdcea960394cb479e04 (diff) | |
download | binutils-e59a1001222d853f0517c7e974bb51589ba86710.zip binutils-e59a1001222d853f0517c7e974bb51589ba86710.tar.gz binutils-e59a1001222d853f0517c7e974bb51589ba86710.tar.bz2 |
PowerPC64, error on unsupported dynamic relocation
This patch corrects the set of dynamic relocations recognised by gold
as supported by glibc, and teaches ld.bfd to report an error similar
to the gold error. Note that ld --noinhibit-exec can be used to
produce an output, supporting older ld with newer glibc if the set of
supported glibc dynamic relocations changes.
bfd/
* elf64-ppc.c (ppc64_glibc_dynamic_reloc): New function.
(ppc64_elf_relocate_section): Error if emitting unsupported
dynamic relocations.
gold/
* powerpc.cc (Target_powerpc::Scan::check_non_pic): Move REL24
to 32-bit supported.
Diffstat (limited to 'gold')
-rw-r--r-- | gold/ChangeLog | 5 | ||||
-rw-r--r-- | gold/powerpc.cc | 2 |
2 files changed, 6 insertions, 1 deletions
diff --git a/gold/ChangeLog b/gold/ChangeLog index 9e45c0f..8ec7014 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,3 +1,8 @@ +2019-09-20 Alan Modra <amodra@gmail.com> + + * powerpc.cc (Target_powerpc::Scan::check_non_pic): Move REL24 + to 32-bit supported. + 2019-09-18 Simon Marchi <simon.marchi@polymtl.ca> * testsuite/Makefile.in: Re-generate. diff --git a/gold/powerpc.cc b/gold/powerpc.cc index e69ce19..ad35095 100644 --- a/gold/powerpc.cc +++ b/gold/powerpc.cc @@ -7355,7 +7355,6 @@ Target_powerpc<size, big_endian>::Scan::check_non_pic(Relobj* object, case elfcpp::R_POWERPC_ADDR14_BRTAKEN: case elfcpp::R_POWERPC_ADDR14_BRNTAKEN: case elfcpp::R_POWERPC_REL32: - case elfcpp::R_POWERPC_REL24: case elfcpp::R_POWERPC_TPREL16: case elfcpp::R_POWERPC_TPREL16_LO: case elfcpp::R_POWERPC_TPREL16_HI: @@ -7404,6 +7403,7 @@ Target_powerpc<size, big_endian>::Scan::check_non_pic(Relobj* object, { // These are the relocation types supported only on 32-bit. // ??? glibc ld.so doesn't need to support these. + case elfcpp::R_POWERPC_REL24: case elfcpp::R_POWERPC_DTPREL16: case elfcpp::R_POWERPC_DTPREL16_LO: case elfcpp::R_POWERPC_DTPREL16_HI: |