[lld] f2c144f - [LLD][TEST] Add testing for negative addends for R_X86_64_32 and R_X86_64_PC32 relocations
via llvm-commits
llvm-commits at lists.llvm.org
Mon Oct 18 08:39:21 PDT 2021
Author: gbreynoo
Date: 2021-10-18T16:38:33+01:00
New Revision: f2c144fc1866c00e88fb923ceccf158060fe03d7
URL: https://github.com/llvm/llvm-project/commit/f2c144fc1866c00e88fb923ceccf158060fe03d7
DIFF: https://github.com/llvm/llvm-project/commit/f2c144fc1866c00e88fb923ceccf158060fe03d7.diff
LOG: [LLD][TEST] Add testing for negative addends for R_X86_64_32 and R_X86_64_PC32 relocations
This change is derived from a test case we have locally but I could not
see an equivalent in LLD's testing.
Differential Revision: https://reviews.llvm.org/D111803
Added:
lld/test/ELF/x86-64-reloc-32.s
lld/test/ELF/x86-64-reloc-pc32.s
Modified:
Removed:
lld/test/ELF/x86-64-reloc-32-fpic.s
lld/test/ELF/x86-64-reloc-pc32-fpic.s
################################################################################
diff --git a/lld/test/ELF/x86-64-reloc-32-fpic.s b/lld/test/ELF/x86-64-reloc-32-fpic.s
deleted file mode 100644
index 1c4754f1e2c66..0000000000000
--- a/lld/test/ELF/x86-64-reloc-32-fpic.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# REQUIRES: x86
-# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.o
-# RUN: not ld.lld -shared %t.o -o /dev/null 2>&1 | FileCheck %s
-
-# CHECK: relocation R_X86_64_32 cannot be used against symbol _shared; recompile with -fPIC
-# CHECK: >>> defined in {{.*}}
-# CHECK: >>> referenced by {{.*}}:(.data+0x0)
-
-.data
-.long _shared
diff --git a/lld/test/ELF/x86-64-reloc-32.s b/lld/test/ELF/x86-64-reloc-32.s
new file mode 100644
index 0000000000000..e2871914725f7
--- /dev/null
+++ b/lld/test/ELF/x86-64-reloc-32.s
@@ -0,0 +1,27 @@
+# REQUIRES: x86
+# RUN: rm -rf %t && split-file %s %t
+
+## Check recompile with -fPIC error message
+# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %t/shared.s -o %t/shared.o
+# RUN: not ld.lld -shared %t/shared.o -o /dev/null 2>&1 | FileCheck %s
+
+# CHECK: relocation R_X86_64_32 cannot be used against symbol _shared; recompile with -fPIC
+# CHECK: >>> defined in {{.*}}
+# CHECK: >>> referenced by {{.*}}:(.data+0x0)
+
+## Check patching of negative addends
+# RUN: llvm-mc -filetype=obj -triple=x86_64 %t/addend.s -o %t/addend.o
+# RUN: not ld.lld --section-start=.text=0x0 %t/addend.o -o /dev/null 2>&1 | FileCheck %s --check-prefix RANGE
+
+# RANGE: relocation R_X86_64_32 out of range
+
+#--- shared.s
+.data
+.long _shared
+
+#--- addend.s
+.text
+.globl _start
+_start:
+ .reloc ., R_X86_64_32, .text-1
+ .space 4
diff --git a/lld/test/ELF/x86-64-reloc-pc32-fpic.s b/lld/test/ELF/x86-64-reloc-pc32-fpic.s
deleted file mode 100644
index 2dfd1bfb444c9..0000000000000
--- a/lld/test/ELF/x86-64-reloc-pc32-fpic.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# REQUIRES: x86
-# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.o
-# RUN: not ld.lld -shared %t.o -o /dev/null 2>&1 | FileCheck %s
-
-# CHECK: relocation R_X86_64_PC32 cannot be used against symbol _shared; recompile with -fPIC
-# CHECK: >>> defined in {{.*}}
-# CHECK: >>> referenced by {{.*}}:(.data+0x1)
-
-.data
- .byte 0xe8
- .long _shared - .
diff --git a/lld/test/ELF/x86-64-reloc-pc32.s b/lld/test/ELF/x86-64-reloc-pc32.s
new file mode 100644
index 0000000000000..ba66a51b81b49
--- /dev/null
+++ b/lld/test/ELF/x86-64-reloc-pc32.s
@@ -0,0 +1,39 @@
+# REQUIRES: x86
+# RUN: rm -rf %t && split-file %s %t
+
+## Check recompile with -fPIC error message
+# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %t/shared.s -o %t/shared.o
+# RUN: not ld.lld -shared %t/shared.o -o /dev/null 2>&1 | FileCheck %s
+
+# CHECK: relocation R_X86_64_PC32 cannot be used against symbol _shared; recompile with -fPIC
+# CHECK: >>> defined in {{.*}}
+# CHECK: >>> referenced by {{.*}}:(.data+0x1)
+
+## Check patching of negative addends
+
+# RUN: llvm-mc -filetype=obj -triple=x86_64 -defsym ADDEND=1 %t/addend.s -o %t/1.o
+# RUN: llvm-mc -filetype=obj -triple=x86_64 -defsym ADDEND=2147483648 %t/addend.s -o %t/2.o
+# RUN: llvm-mc -filetype=obj -triple=x86_64 -defsym ADDEND=2147483649 %t/addend.s -o %t/3.o
+
+# RUN: ld.lld --section-start=.text=0x0 %t/1.o -o %t/1out
+# RUN: ld.lld --section-start=.text=0x0 %t/2.o -o %t/2out
+# RUN: not ld.lld --section-start=.text=0x0 %t/3.o -o /dev/null 2>&1 | FileCheck %s --check-prefix RANGE
+
+# RANGE: relocation R_X86_64_PC32 out of range
+
+# RUN: llvm-readelf --hex-dump=.text %t/1out | FileCheck %s -DADDEND=ffffffff --check-prefix DUMP
+# RUN: llvm-readelf --hex-dump=.text %t/2out | FileCheck %s -DADDEND=00000080 --check-prefix DUMP
+
+# DUMP: 0x00000000 [[ADDEND]]
+
+#--- shared.s
+.data
+ .byte 0xe8
+ .long _shared - .
+
+#--- addend.s
+.text
+.globl _start
+_start:
+ .reloc ., R_X86_64_PC32, .text-ADDEND
+ .space 4
More information about the llvm-commits
mailing list