diff options
author | Fangrui Song <maskray@google.com> | 2019-08-30 02:20:49 +0000 |
---|---|---|
committer | Fangrui Song <maskray@google.com> | 2019-08-30 02:20:49 +0000 |
commit | 7704b54389c8dc3a24b6c086217e4697f0d022c3 (patch) | |
tree | 160015568c5fe8c2e14e25bbcb624c3c6ea5cbd4 /llvm/lib/Object/WindowsResource.cpp | |
parent | ca4216abde786cf0335dcc8982a8c914a5763b83 (diff) | |
download | llvm-7704b54389c8dc3a24b6c086217e4697f0d022c3.zip llvm-7704b54389c8dc3a24b6c086217e4697f0d022c3.tar.gz llvm-7704b54389c8dc3a24b6c086217e4697f0d022c3.tar.bz2 |
[PPC32] Emit R_PPC_GOT_TPREL16 instead R_PPC_GOT_TPREL16_LO
Unlike ppc64, which has ADDISgotTprelHA+LDgotTprelL pairs,
ppc32 just uses LDgotTprelL32, so it does not make lots of sense to use
_LO without a paired _HA.
Emit R_PPC_GOT_TPREL16 instead R_PPC_GOT_TPREL16_LO to match GCC, and
get better linker relocation check. Note, R_PPC_GOT_TPREL16_{HA,LO}
don't have good linker support:
(a) lld does not support R_PPC_GOT_TPREL16_{HA,LO}.
(b) Top of tree ld.bfd does not support R_PPC_GOT_REL16_HA Initial-Exec -> Local-Exec relaxation:
// a.o
addis 3, 3, tsd_tls@got@tprel@ha
lwz 3, tsd_tls@got@tprel@l(3)
add 3, 3, tsd_tls@tls
// b.o
.section .tdata,"awT"; .globl tsd_tls; tsd_tls:
// ld/ld-new a.o b.o
internal error, aborting at ../../bfd/elf32-ppc.c:7952 in ppc_elf_relocate_section
Reviewed By: adalava
Differential Revision: https://reviews.llvm.org/D66925
llvm-svn: 370426
Diffstat (limited to 'llvm/lib/Object/WindowsResource.cpp')
0 files changed, 0 insertions, 0 deletions