aboutsummaryrefslogtreecommitdiff
path: root/test/MC/X86/reloc-directive.s
diff options
context:
space:
mode:
Diffstat (limited to 'test/MC/X86/reloc-directive.s')
-rw-r--r--test/MC/X86/reloc-directive.s40
1 files changed, 40 insertions, 0 deletions
diff --git a/test/MC/X86/reloc-directive.s b/test/MC/X86/reloc-directive.s
new file mode 100644
index 000000000000..901427a6ab6c
--- /dev/null
+++ b/test/MC/X86/reloc-directive.s
@@ -0,0 +1,40 @@
+# RUN: llvm-mc -triple i686-pc-win32 < %s -show-encoding \
+# RUN: | FileCheck -check-prefix=ASM %s
+# RUN: llvm-mc -triple i686-pc-win32 < %s -show-encoding \
+# RUN: -filetype=obj | llvm-readobj -sections -section-data -r | \
+# RUN: FileCheck -check-prefix=OBJ-32 %s
+# RUN: llvm-mc -triple x86_64-pc-win32 < %s -show-encoding \
+# RUN: -filetype=obj | llvm-readobj -sections -section-data -r | \
+# RUN: FileCheck -check-prefix=OBJ-64 %s
+ .text
+foo:
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .reloc 4, dir32, foo # ASM: .reloc 4, dir32, foo
+ .reloc 0, secrel32, foo+4 # ASM: .reloc 0, secrel32, foo+4
+ .reloc 8, secidx, foo+8 # ASM: .reloc 8, secidx, foo+8
+ .reloc 12, dir32, foo@secrel32 # ASM: .reloc 12, dir32, foo@SECREL32
+ .reloc 16, dir32, foo@imgrel # ASM: .reloc 16, dir32, foo@IMGREL
+
+# OBJ-32-LABEL: Name: .text
+# OBJ-32: 0000: 04000000 00000000 00000000
+# OBJ-32-LABEL: }
+# OBJ-32-LABEL: Relocations [
+# OBJ-32: 0x4 IMAGE_REL_I386_DIR32 foo
+# OBJ-32: 0x0 IMAGE_REL_I386_SECREL foo
+# OBJ-32: 0x8 IMAGE_REL_I386_SECTION foo
+# OBJ-32: 0xC IMAGE_REL_I386_SECREL foo
+# OBJ-32: 0x10 IMAGE_REL_I386_DIR32NB foo
+
+# OBJ-64-LABEL: Name: .text
+# OBJ-64: 0000: 04000000 00000000 00000000
+# OBJ-64-LABEL: }
+# OBJ-64-LABEL: Relocations [
+# OBJ-64: 0x4 IMAGE_REL_AMD64_ADDR32 foo
+# OBJ-64: 0x0 IMAGE_REL_AMD64_SECREL foo
+# OBJ-64: 0x8 IMAGE_REL_AMD64_SECTION foo
+# OBJ-64: 0xC IMAGE_REL_AMD64_SECREL foo
+# OBJ-64: 0x10 IMAGE_REL_AMD64_ADDR32NB foo