summaryrefslogtreecommitdiff
path: root/test/MC/MachO
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2010-03-09 21:27:58 +0000
committerDaniel Dunbar <daniel@zuster.org>2010-03-09 21:27:58 +0000
commitf3a066f7c3ef4e729c92929acab352a93f8d7563 (patch)
treeb8f1cb4ce987581be42a2369851b2b085859ab08 /test/MC/MachO
parentaef9d7af69913740f313c5cc1dfe2a8e1d352227 (diff)
downloadllvm-f3a066f7c3ef4e729c92929acab352a93f8d7563.tar.gz
llvm-f3a066f7c3ef4e729c92929acab352a93f8d7563.tar.bz2
llvm-f3a066f7c3ef4e729c92929acab352a93f8d7563.tar.xz
MC/Mach-O: For PCrel relocations, we need to compensate for the PCrel adjustment when determining if we need a scattered relocation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98082 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/MC/MachO')
-rw-r--r--test/MC/MachO/reloc-pcrel.s62
1 files changed, 62 insertions, 0 deletions
diff --git a/test/MC/MachO/reloc-pcrel.s b/test/MC/MachO/reloc-pcrel.s
new file mode 100644
index 0000000000..fff7cc0ada
--- /dev/null
+++ b/test/MC/MachO/reloc-pcrel.s
@@ -0,0 +1,62 @@
+// RUN: llvm-mc -triple i386-apple-darwin9 %s -filetype=obj -o - | macho-dump | FileCheck %s
+
+// CHECK: # Relocation 0
+// CHECK: (('word-0', 0xe4000045),
+// CHECK: ('word-1', 0x4)),
+// CHECK: # Relocation 1
+// CHECK: (('word-0', 0xe1000000),
+// CHECK: ('word-1', 0x6)),
+// CHECK: # Relocation 2
+// CHECK: (('word-0', 0x40),
+// CHECK: ('word-1', 0xd000002)),
+// CHECK: # Relocation 3
+// CHECK: (('word-0', 0x3b),
+// CHECK: ('word-1', 0xd000002)),
+// CHECK: # Relocation 4
+// CHECK: (('word-0', 0x36),
+// CHECK: ('word-1', 0xd000002)),
+// CHECK: # Relocation 5
+// CHECK: (('word-0', 0xe0000031),
+// CHECK: ('word-1', 0x4)),
+// CHECK: # Relocation 6
+// CHECK: (('word-0', 0xe000002c),
+// CHECK: ('word-1', 0x4)),
+// CHECK: # Relocation 7
+// CHECK: (('word-0', 0x27),
+// CHECK: ('word-1', 0x5000001)),
+// CHECK: # Relocation 8
+// CHECK: (('word-0', 0xe0000022),
+// CHECK: ('word-1', 0x2)),
+// CHECK: # Relocation 9
+// CHECK: (('word-0', 0xe000001d),
+// CHECK: ('word-1', 0x2)),
+// CHECK: # Relocation 10
+// CHECK: (('word-0', 0x18),
+// CHECK: ('word-1', 0x5000001)),
+// CHECK-NEXT: ])
+
+ xorl %eax,%eax
+
+ .globl _a
+_a:
+ xorl %eax,%eax
+_b:
+ xorl %eax,%eax
+L0:
+ xorl %eax,%eax
+L1:
+
+ call L0
+ call L0 - 1
+ call L0 + 1
+ call _a
+ call _a - 1
+ call _a + 1
+ call _b
+ call _b - 1
+ call _b + 1
+ call _c
+ call _c - 1
+ call _c + 1
+// call _a - L0
+ call _b - L0