diff options
author | Eugene Leviant <eleviant@accesssoftek.com> | 2016-12-27 09:51:38 +0000 |
---|---|---|
committer | Eugene Leviant <eleviant@accesssoftek.com> | 2016-12-27 09:51:38 +0000 |
commit | 920908352a6f13fec54c481fb38d982858366dff (patch) | |
tree | 0ed2694ad8048b98944f444c69c037093bc48dbb /llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp | |
parent | c089e406b9d7e654fda5e27f34b5747553d75d15 (diff) | |
download | bcm5719-llvm-920908352a6f13fec54c481fb38d982858366dff.tar.gz bcm5719-llvm-920908352a6f13fec54c481fb38d982858366dff.zip |
RuntimeDyldELF: add R_AARCH64_ADD_ABS_LO12_NC reloc
Differential revision: https://reviews.llvm.org/D28115
llvm-svn: 290598
Diffstat (limited to 'llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp')
-rw-r--r-- | llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp b/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp index a977dce06bb..fea932078c4 100644 --- a/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp +++ b/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp @@ -453,6 +453,15 @@ void RuntimeDyldELF::resolveAArch64Relocation(const SectionEntry &Section, support::ulittle32_t::ref{TargetPtr} = TargetValue; break; } + case ELF::R_AARCH64_ADD_ABS_LO12_NC: { + // Operation: S + A + uint64_t Result = Value + Addend; + + // Immediate goes in bits 21:10 of LD/ST instruction, taken + // from bits 11:0 of X + *TargetPtr |= ((Result & 0xfff) << 10); + break; + } case ELF::R_AARCH64_LDST32_ABS_LO12_NC: { // Operation: S + A uint64_t Result = Value + Addend; |