[PATCH] D28115: RuntimeDyldELF: add support for R_AARCH64_ADD_ABS_LO12_NC
Eugene Leviant via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Dec 27 02:02:28 PST 2016
This revision was automatically updated to reflect the committed changes.
Closed by commit rL290598: RuntimeDyldELF: add R_AARCH64_ADD_ABS_LO12_NC reloc (authored by evgeny777).
Changed prior to commit:
https://reviews.llvm.org/D28115?vs=82510&id=82531#toc
Repository:
rL LLVM
https://reviews.llvm.org/D28115
Files:
llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp
llvm/trunk/test/ExecutionEngine/RuntimeDyld/AArch64/ELF_ARM64_relocations.s
Index: llvm/trunk/test/ExecutionEngine/RuntimeDyld/AArch64/ELF_ARM64_relocations.s
===================================================================
--- llvm/trunk/test/ExecutionEngine/RuntimeDyld/AArch64/ELF_ARM64_relocations.s
+++ llvm/trunk/test/ExecutionEngine/RuntimeDyld/AArch64/ELF_ARM64_relocations.s
@@ -14,6 +14,9 @@
movk x0, #:abs_g1_nc:f
# R_AARCH64_MOVW_UABS_G0_NC
movk x0, #:abs_g0_nc:f
+a:
+# R_AARCH64_ADD_ABS_LO12_NC
+ add x0, x0, :lo12:f
ret
.Lfunc_end0:
.size g, .Lfunc_end0-g
@@ -31,3 +34,7 @@
# rtdyld-check: *{4}(g + 8) = 0xf2b13560
# rtdyld-check: *{4}(g + 12) = 0xf299bde0
# rtdyld-check: *{8}k = f
+
+## f & 0xFFF = 0xdef (bits 11:0 of f)
+## 0xdef << 10 = 0x37bc00
+# rtdyld-check: *{4}(a) = 0x9137bc00
Index: llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp
===================================================================
--- llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp
+++ llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp
@@ -453,6 +453,15 @@
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;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D28115.82531.patch
Type: text/x-patch
Size: 1531 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20161227/7e7bf7c8/attachment.bin>
More information about the llvm-commits
mailing list