summaryrefslogtreecommitdiff
path: root/test/MC/ELF/got-relaxed-rex.s
diff options
context:
space:
mode:
Diffstat (limited to 'test/MC/ELF/got-relaxed-rex.s')
-rw-r--r--test/MC/ELF/got-relaxed-rex.s29
1 files changed, 29 insertions, 0 deletions
diff --git a/test/MC/ELF/got-relaxed-rex.s b/test/MC/ELF/got-relaxed-rex.s
new file mode 100644
index 000000000000..d35afaab3e52
--- /dev/null
+++ b/test/MC/ELF/got-relaxed-rex.s
@@ -0,0 +1,29 @@
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux %s -o - | llvm-readobj -r | FileCheck %s
+
+// these should produce R_X86_64_REX_GOTPCRELX
+
+ movq mov@GOTPCREL(%rip), %rax
+ test %rax, test@GOTPCREL(%rip)
+ adc adc@GOTPCREL(%rip), %rax
+ add add@GOTPCREL(%rip), %rax
+ and and@GOTPCREL(%rip), %rax
+ cmp cmp@GOTPCREL(%rip), %rax
+ or or@GOTPCREL(%rip), %rax
+ sbb sbb@GOTPCREL(%rip), %rax
+ sub sub@GOTPCREL(%rip), %rax
+ xor xor@GOTPCREL(%rip), %rax
+
+// CHECK: Relocations [
+// CHECK-NEXT: Section ({{.*}}) .rela.text {
+// CHECK-NEXT: R_X86_64_REX_GOTPCRELX mov
+// CHECK-NEXT: R_X86_64_REX_GOTPCRELX test
+// CHECK-NEXT: R_X86_64_REX_GOTPCRELX adc
+// CHECK-NEXT: R_X86_64_REX_GOTPCRELX add
+// CHECK-NEXT: R_X86_64_REX_GOTPCRELX and
+// CHECK-NEXT: R_X86_64_REX_GOTPCRELX cmp
+// CHECK-NEXT: R_X86_64_REX_GOTPCRELX or
+// CHECK-NEXT: R_X86_64_REX_GOTPCRELX sbb
+// CHECK-NEXT: R_X86_64_REX_GOTPCRELX sub
+// CHECK-NEXT: R_X86_64_REX_GOTPCRELX xor
+// CHECK-NEXT: }
+// CHECK-NEXT: ]