diff options
author | Fangrui Song <maskray@google.com> | 2019-11-23 00:57:54 -0800 |
---|---|---|
committer | Fangrui Song <maskray@google.com> | 2019-12-02 10:07:24 -0800 |
commit | bf535ac4a28268e6a481acee5a794ef5deed5018 (patch) | |
tree | 19ffa622528127d9bfad0173afad0e2e08ac04b4 /lldb/packages/Python/lldbsuite/test/python_api/breakpoint | |
parent | af4e59949cc4cc895be76a441a2a867189ee0f55 (diff) | |
download | bcm5719-llvm-bf535ac4a28268e6a481acee5a794ef5deed5018.tar.gz bcm5719-llvm-bf535ac4a28268e6a481acee5a794ef5deed5018.zip |
[ELF][AArch64] Support R_AARCH64_{CALL26,JUMP26} range extension thunks with addends
Fixes AArch64 part of PR40438
The current range extension thunk framework does not handle a relocation
relative to a STT_SECTION symbol with a non-zero addend, which may be
used by jumps/calls to local functions on some RELA targets (AArch64,
powerpc ELFv1, powerpc64 ELFv2, etc). See PR40438 and the following
code for examples:
// clang -target $target a.cc
// .text.cold may be placed in a separate output section.
// The distance between bar in .text.cold and foo in .text may be larger than 128MiB.
static void foo() {}
__attribute__((section(".text.cold"))) static int bar() { foo(); return
0; }
__attribute__((used)) static int dummy = bar();
This patch makes such thunks with addends work for AArch64. The target
independent part can be reused by PPC in the future.
On REL targets (ARM, MIPS), jumps/calls are not represented as
STT_SECTION + non-zero addend (see
MCELFObjectTargetWriter::needsRelocateWithSymbol), so they don't need
this feature, but we need to make sure this patch does not affect them.
Reviewed By: peter.smith
Differential Revision: https://reviews.llvm.org/D70637
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/python_api/breakpoint')
0 files changed, 0 insertions, 0 deletions