diff options
author | Feng Zou <feng.zou@intel.com> | 2024-11-21 16:13:11 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-11-21 16:13:11 +0800 |
commit | 6f76b2a3c010cd25acf4efb56cbde2a678b6242c (patch) | |
tree | d476d968bbfa05e5eb3c2e7956e74fc891db77e4 /clang/unittests/Serialization/InMemoryModuleCacheTest.cpp | |
parent | 46f43b6d92e49b80df13e8a537a95767ffbaac9f (diff) | |
download | llvm-6f76b2a3c010cd25acf4efb56cbde2a678b6242c.zip llvm-6f76b2a3c010cd25acf4efb56cbde2a678b6242c.tar.gz llvm-6f76b2a3c010cd25acf4efb56cbde2a678b6242c.tar.bz2 |
[X86][MC] Add R_X86_64_CODE_4_GOTTPOFF (#116633)
For
mov name@GOTTPOFF(%rip), %reg
add name@GOTTPOFF(%rip), %reg
add
`R_X86_64_CODE_4_GOTTPOFF` = 44
if the instruction starts at 4 bytes before the relocation offset. It's
similar to R_X86_64_GOTTPOFF.
Linker can treat `R_X86_64_CODE_4_GOTTPOFF` as `R_X86_64_GOTTPOFF` or
convert the instructions above to
mov $name@tpoff, %reg
add $name@tpoff, %reg
if the first byte of the instruction at the relocation `offset - 4` is
`0xd5` (namely, encoded w/REX2 prefix) when possible.
Binutils patch:
https://github.com/bminor/binutils-gdb/commit/a533c8df598b5ef99c54a13e2b137c98b34b043c
Binutils mailthread:
https://sourceware.org/pipermail/binutils/2023-December/131463.html
ABI discussion:
https://groups.google.com/g/x86-64-abi/c/ACwD-UQXVDs/m/vrgTenKyFwAJ
Blog: https://kanrobert.github.io/rfc/All-about-APX-relocation
Diffstat (limited to 'clang/unittests/Serialization/InMemoryModuleCacheTest.cpp')
0 files changed, 0 insertions, 0 deletions