[PATCH] D93259: [ELF] Error for out-of-range R_X86_64_[REX_]GOTPCRELX
Fangrui Song via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Dec 14 16:19:54 PST 2020
MaskRay created this revision.
MaskRay added reviewers: grimar, jhenderson.
Herald added subscribers: arichardson, emaste.
Herald added a reviewer: espindola.
MaskRay requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D93259
Files:
lld/ELF/Arch/X86_64.cpp
lld/test/ELF/x86-64-gotpc-err.s
Index: lld/test/ELF/x86-64-gotpc-err.s
===================================================================
--- /dev/null
+++ lld/test/ELF/x86-64-gotpc-err.s
@@ -0,0 +1,25 @@
+# REQUIRES: x86
+# RUN: split-file %s %t
+# RUN: llvm-mc -filetype=obj -triple=x86_64 %t/a.s -o %t/a.o
+# RUN: not ld.lld -T %t/lds %t/a.o -o /dev/null 2>&1 | FileCheck %s
+
+# CHECK: error: {{.*}}:(.text+0x2): relocation R_X86_64_GOTPCRELX out of range: 2147483655 is not in [-2147483648, 2147483647]; references data
+# CHECK: error: {{.*}}:(.text+0x9): relocation R_X86_64_REX_GOTPCRELX out of range: 2147483648 is not in [-2147483648, 2147483647]; references data
+# CHECK-NOT: error:
+
+#--- a.s
+ movl data at GOTPCREL(%rip), %eax # out of range
+ movq data at GOTPCREL(%rip), %rax # out of range
+ movq data at GOTPCREL(%rip), %rax # in range
+
+.data
+.space 13
+.globl data
+data:
+ .long 0
+
+#--- lds
+SECTIONS {
+ .text 0x200000 : { *(.text) }
+ .data 0x80200000 : { *(.data) }
+}
Index: lld/ELF/Arch/X86_64.cpp
===================================================================
--- lld/ELF/Arch/X86_64.cpp
+++ lld/ELF/Arch/X86_64.cpp
@@ -828,7 +828,8 @@
write32le(loc, val);
}
-void X86_64::relaxGot(uint8_t *loc, const Relocation &, uint64_t val) const {
+void X86_64::relaxGot(uint8_t *loc, const Relocation &rel, uint64_t val) const {
+ checkInt(loc, val, 32, rel);
const uint8_t op = loc[-2];
const uint8_t modRm = loc[-1];
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D93259.311741.patch
Type: text/x-patch
Size: 1440 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20201215/4a340df6/attachment.bin>
More information about the llvm-commits
mailing list