aboutsummaryrefslogtreecommitdiff
path: root/test/MC/MachO
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2016-07-23 20:41:05 +0000
committerDimitry Andric <dim@FreeBSD.org>2016-07-23 20:41:05 +0000
commit01095a5d43bbfde13731688ddcf6048ebb8b7721 (patch)
tree4def12e759965de927d963ac65840d663ef9d1ea /test/MC/MachO
parentf0f4822ed4b66e3579e92a89f368f8fb860e218e (diff)
Vendor import of llvm release_39 branch r276489:vendor/llvm/llvm-release_39-r276489
Diffstat (limited to 'test/MC/MachO')
-rw-r--r--test/MC/MachO/AArch64/cstexpr-gotpcrel.ll14
-rw-r--r--test/MC/MachO/AArch64/data-in-code.s49
-rw-r--r--test/MC/MachO/absolute.s9
-rw-r--r--test/MC/MachO/altentry.s77
-rw-r--r--test/MC/MachO/empty-twice.ll2
-rw-r--r--test/MC/MachO/undefined-directional.s11
-rw-r--r--test/MC/MachO/variable-exprs.s8
-rw-r--r--test/MC/MachO/x86-data-in-code.ll107
-rw-r--r--test/MC/MachO/x86-data-in-code.s47
-rw-r--r--test/MC/MachO/x86_64-reloc-arithmetic.s3
10 files changed, 204 insertions, 123 deletions
diff --git a/test/MC/MachO/AArch64/cstexpr-gotpcrel.ll b/test/MC/MachO/AArch64/cstexpr-gotpcrel.ll
index b52a5abecab2..0cfb764a835a 100644
--- a/test/MC/MachO/AArch64/cstexpr-gotpcrel.ll
+++ b/test/MC/MachO/AArch64/cstexpr-gotpcrel.ll
@@ -28,8 +28,8 @@
; CHECK: .long 5
; CHECK-NOT: .long _localgotequiv-(_table+20)
-; CHECK-NEXT: Ltmp1:
-; CHECK-NEXT: .long _localfoo@GOT-Ltmp1
+; CHECK-NEXT: Ltmp0:
+; CHECK-NEXT: .long _localfoo@GOT-Ltmp0
%struct.data { i32 4, %struct.anon { i32 5,
i32 trunc (i64 sub (i64 ptrtoint (i32** @localgotequiv to i64),
i64 ptrtoint (i32* getelementptr inbounds ([4 x %struct.data], [4 x %struct.data]* @table, i32 0, i64 1, i32 1, i32 1) to i64))
@@ -38,8 +38,8 @@
; CHECK: .long 5
; CHECK-NOT: _extgotequiv-(_table+32)
-; CHECK-NEXT: Ltmp2:
-; CHECK-NEXT: _extfoo@GOT-Ltmp2
+; CHECK-NEXT: Ltmp1:
+; CHECK-NEXT: _extfoo@GOT-Ltmp1
%struct.data { i32 4, %struct.anon { i32 5,
i32 trunc (i64 sub (i64 ptrtoint (i32** @extgotequiv to i64),
i64 ptrtoint (i32* getelementptr inbounds ([4 x %struct.data], [4 x %struct.data]* @table, i32 0, i64 2, i32 1, i32 1) to i64))
@@ -49,7 +49,7 @@
; supported on x86-64 but not on ARM64
; CHECK: .long 5
-; CHECK-NEXT: .long (l_extgotequiv-(_table+44))+24
+; CHECK-NEXT: .long ((l_extgotequiv-_table)-44)+24
%struct.data { i32 4, %struct.anon { i32 5,
i32 add (i32 trunc (i64 sub (i64 ptrtoint (i32** @extgotequiv to i64),
i64 ptrtoint (i32* getelementptr inbounds ([4 x %struct.data], [4 x %struct.data]* @table, i32 0, i64 3, i32 1, i32 1) to i64))
@@ -60,8 +60,8 @@
; Test multiple uses of GOT equivalents.
; CHECK-LABEL: _delta
-; CHECK: Ltmp3:
-; CHECK-NEXT: .long _extfoo@GOT-Ltmp3
+; CHECK: Ltmp2:
+; CHECK-NEXT: .long _extfoo@GOT-Ltmp2
@delta = global i32 trunc (i64 sub (i64 ptrtoint (i32** @extgotequiv to i64),
i64 ptrtoint (i32* @delta to i64))
to i32)
diff --git a/test/MC/MachO/AArch64/data-in-code.s b/test/MC/MachO/AArch64/data-in-code.s
new file mode 100644
index 000000000000..cf7d860a622f
--- /dev/null
+++ b/test/MC/MachO/AArch64/data-in-code.s
@@ -0,0 +1,49 @@
+// RUN: llvm-mc -triple arm64-apple-darwin10 -filetype=obj -o - < %s | llvm-readobj --macho-data-in-code | FileCheck %s
+ .text
+_foo:
+.data_region
+ .long 10
+.end_data_region
+.data_region jt32
+ .long 1
+.end_data_region
+.data_region jt16
+ .short 2
+.end_data_region
+.data_region jt8
+ .byte 3
+.end_data_region
+
+// CHECK: File: <stdin>
+// CHECK: Format: Mach-O arm64
+// CHECK: Arch: aarch64
+// CHECK: AddressSize: 64bit
+// CHECK: DataInCode {
+// CHECK: Data size: 32
+// CHECK: Data entries [
+// CHECK: Entry {
+// CHECK: Index: 0
+// CHECK: Offset: 0
+// CHECK: Length: 4
+// CHECK: Kind: 1
+// CHECK: }
+// CHECK: Entry {
+// CHECK: Index: 1
+// CHECK: Offset: 4
+// CHECK: Length: 4
+// CHECK: Kind: 4
+// CHECK: }
+// CHECK: Entry {
+// CHECK: Index: 2
+// CHECK: Offset: 8
+// CHECK: Length: 2
+// CHECK: Kind: 3
+// CHECK: }
+// CHECK: Entry {
+// CHECK: Index: 3
+// CHECK: Offset: 10
+// CHECK: Length: 1
+// CHECK: Kind: 2
+// CHECK: }
+// CHECK: ]
+// CHECK: }
diff --git a/test/MC/MachO/absolute.s b/test/MC/MachO/absolute.s
index 36a0ae5ec5bb..26850a2d09ab 100644
--- a/test/MC/MachO/absolute.s
+++ b/test/MC/MachO/absolute.s
@@ -79,7 +79,8 @@ foo_equals2 = (_foo - _bar + 0xffff0000)
// CHECK: Type: Section (0xE)
// CHECK: Section: __text (0x1)
// CHECK: RefType: UndefinedNonLazy (0x0)
-// CHECK: Flags [ (0x20)
+// CHECK: Flags [ (0x220)
+// CHECK: AltEntry (0x200)
// CHECK: NoDeadStrip (0x20)
// CHECK: ]
// CHECK: Value: 0xFFFF0001
@@ -99,7 +100,8 @@ foo_equals2 = (_foo - _bar + 0xffff0000)
// CHECK: Type: Section (0xE)
// CHECK: Section: __text (0x1)
// CHECK: RefType: UndefinedNonLazy (0x0)
-// CHECK: Flags [ (0x0)
+// CHECK: Flags [ (0x200)
+// CHECK: AltEntry (0x200)
// CHECK: ]
// CHECK: Value: 0xFFFF0001
// CHECK: }
@@ -118,7 +120,8 @@ foo_equals2 = (_foo - _bar + 0xffff0000)
// CHECK: Type: Section (0xE)
// CHECK: Section: __text (0x1)
// CHECK: RefType: UndefinedNonLazy (0x0)
-// CHECK: Flags [ (0x20)
+// CHECK: Flags [ (0x220)
+// CHECK: AltEntry (0x200)
// CHECK: NoDeadStrip (0x20)
// CHECK: ]
// CHECK: Value: 0xFFFF0001
diff --git a/test/MC/MachO/altentry.s b/test/MC/MachO/altentry.s
new file mode 100644
index 000000000000..e63db2b0ca18
--- /dev/null
+++ b/test/MC/MachO/altentry.s
@@ -0,0 +1,77 @@
+// RUN: llvm-mc -triple x86_64-apple-darwin -filetype=obj %s -o - | llvm-readobj -t | FileCheck %s
+
+// CHECK: Symbol {
+// CHECK: Name: _foo
+// CHECK: Flags [ (0x0)
+// CHECK: Value: 0x0
+
+// CHECK: Symbol {
+// CHECK: Name: _bar
+// CHECK: Flags [ (0x0)
+// CHECK: Value: 0x0
+
+// CHECK: Symbol {
+// CHECK: Name: _baz
+// CHECK: Flags [ (0x200)
+// CHECK: Value: 0x1
+
+// CHECK: Symbol {
+// CHECK: Name: _offsetsym0
+// CHECK: Flags [ (0x0)
+// CHECK: Value: 0x8
+
+// CHECK: Symbol {
+// CHECK: Name: _offsetsym1
+// CHECK: Flags [ (0x200)
+// CHECK: Value: 0xC
+
+// CHECK: Symbol {
+// CHECK: Name: _offsetsym2
+// CHECK: Flags [ (0x200)
+// CHECK: Value: 0x10
+
+// CHECK: Symbol {
+// CHECK: Name: _offsetsym3
+// CHECK: Flags [ (0x200)
+// CHECK: Value: 0x20
+
+// CHECK: Symbol {
+// CHECK: Symbol {
+// CHECK: Symbol {
+
+ .section __TEXT,__text,regular,pure_instructions
+
+_foo:
+_bar = _foo
+ nop
+_baz = .
+
+ .comm _g0,4,2
+
+ .section __DATA,__data
+ .globl _s0
+ .align 3
+_s0:
+ .long 31
+ .long 32
+ .quad _g0
+
+ .globl _s1
+ .align 3
+_s1:
+ .long 33
+ .long 34
+ .quad _g0
+
+ .globl _offsetsym0
+ _offsetsym0 = _s0
+ .globl _offsetsym1
+ .alt_entry _offsetsym1
+ _offsetsym1 = _s0+4
+ .globl _offsetsym2
+ .alt_entry _offsetsym2
+ _offsetsym2 = _s0+8
+ .globl _offsetsym3
+ .alt_entry _offsetsym3
+ _offsetsym3 = _s1+8
+ .subsections_via_symbols
diff --git a/test/MC/MachO/empty-twice.ll b/test/MC/MachO/empty-twice.ll
index 6914c73a58d1..6ac6a0b5227a 100644
--- a/test/MC/MachO/empty-twice.ll
+++ b/test/MC/MachO/empty-twice.ll
@@ -6,7 +6,7 @@
!llvm.dbg.cu = !{!0}
!llvm.module.flags = !{!3, !4}
-!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "LLVM", isOptimized: true)
+!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "LLVM", isOptimized: true, emissionKind: FullDebug)
!1 = !DIFile(filename: "<stdin>", directory: "/")
!3 = !{i32 2, !"Dwarf Version", i32 4}
!4 = !{i32 2, !"Debug Info Version", i32 3}
diff --git a/test/MC/MachO/undefined-directional.s b/test/MC/MachO/undefined-directional.s
new file mode 100644
index 000000000000..80af9caf68c2
--- /dev/null
+++ b/test/MC/MachO/undefined-directional.s
@@ -0,0 +1,11 @@
+// RUN: not llvm-mc -triple x86_64-apple-macosx -filetype=obj -o /dev/null %s 2>&1 | FileCheck %s
+
+// CHECK: [[@LINE+1]]:{{[0-9]+}}: error: directional label undefined
+ jmp 1b
+// CHECK: [[@LINE+1]]:{{[0-9]+}}: error: directional label undefined
+ jmp 1f
+# 10 "wibble.s"
+// CHECK: wibble.s:11:{{[0-9]+}}: error: directional label undefined
+ jmp 2f
+
+# 42 "invalid.s"
diff --git a/test/MC/MachO/variable-exprs.s b/test/MC/MachO/variable-exprs.s
index 85f395fd3be8..5369622d8cfe 100644
--- a/test/MC/MachO/variable-exprs.s
+++ b/test/MC/MachO/variable-exprs.s
@@ -151,7 +151,7 @@ Lt0_x = Lt0_a - Lt0_b
// CHECK-I386: Type: Section (0xE)
// CHECK-I386: Section: __data (0x2)
// CHECK-I386: RefType: UndefinedNonLazy (0x0)
-// CHECK-I386: Flags [ (0x0)
+// CHECK-I386: Flags [ (0x200)
// CHECK-I386: ]
// CHECK-I386: Value: 0x9
// CHECK-I386: }
@@ -208,7 +208,7 @@ Lt0_x = Lt0_a - Lt0_b
// CHECK-I386: Type: Undef (0x0)
// CHECK-I386: Section: (0x0)
// CHECK-I386: RefType: UndefinedNonLazy (0x0)
-// CHECK-I386: Flags [ (0x0)
+// CHECK-I386: Flags [ (0x200)
// CHECK-I386: ]
// CHECK-I386: Value: 0x0
// CHECK-I386: }
@@ -360,7 +360,7 @@ Lt0_x = Lt0_a - Lt0_b
// CHECK-X86_64: Type: Section (0xE)
// CHECK-X86_64: Section: __data (0x2)
// CHECK-X86_64: RefType: UndefinedNonLazy (0x0)
-// CHECK-X86_64: Flags [ (0x0)
+// CHECK-X86_64: Flags [ (0x200)
// CHECK-X86_64: ]
// CHECK-X86_64: Value: 0x9
// CHECK-X86_64: }
@@ -417,7 +417,7 @@ Lt0_x = Lt0_a - Lt0_b
// CHECK-X86_64: Type: Undef (0x0)
// CHECK-X86_64: Section: (0x0)
// CHECK-X86_64: RefType: UndefinedNonLazy (0x0)
-// CHECK-X86_64: Flags [ (0x0)
+// CHECK-X86_64: Flags [ (0x200)
// CHECK-X86_64: ]
// CHECK-X86_64: Value: 0x0
// CHECK-X86_64: }
diff --git a/test/MC/MachO/x86-data-in-code.ll b/test/MC/MachO/x86-data-in-code.ll
deleted file mode 100644
index b8d3a185cbd9..000000000000
--- a/test/MC/MachO/x86-data-in-code.ll
+++ /dev/null
@@ -1,107 +0,0 @@
-; RUN: llc -O0 -mtriple=x86_64-apple-darwin -filetype=obj -o - %s | llvm-readobj -macho-data-in-code | FileCheck %s
-
-; There should not be a data-in-code load command (type 0x29) for x86_64
-; jump tables, even though they are in the text section.
-; CHECK-NOT: DataInCode {
-
-define void @foo(i32* %ptr) nounwind ssp {
- %tmp = load i32, i32* %ptr, align 4
- switch i32 %tmp, label %default [
- i32 11, label %bb0
- i32 10, label %bb1
- i32 8, label %bb2
- i32 4, label %bb3
- i32 2, label %bb4
- i32 6, label %bb5
- i32 9, label %bb6
- i32 15, label %bb7
- i32 1, label %bb8
- i32 3, label %bb9
- i32 5, label %bb10
- i32 30, label %bb11
- i32 31, label %bb12
- i32 13, label %bb13
- i32 14, label %bb14
- i32 20, label %bb15
- i32 19, label %bb16
- i32 17, label %bb17
- i32 18, label %bb18
- i32 21, label %bb19
- i32 22, label %bb20
- i32 16, label %bb21
- i32 24, label %bb22
- i32 25, label %bb23
- i32 26, label %bb24
- i32 27, label %bb25
- i32 28, label %bb26
- i32 23, label %bb27
- i32 12, label %bb28
- ]
-
-default:
- br label %exit
-bb0:
- br label %exit
-bb1:
- br label %exit
-bb2:
- br label %exit
-bb3:
- br label %exit
-bb4:
- br label %exit
-bb5:
- br label %exit
-bb6:
- br label %exit
-bb7:
- br label %exit
-bb8:
- br label %exit
-bb9:
- br label %exit
-bb10:
- br label %exit
-bb11:
- br label %exit
-bb12:
- br label %exit
-bb13:
- br label %exit
-bb14:
- br label %exit
-bb15:
- br label %exit
-bb16:
- br label %exit
-bb17:
- br label %exit
-bb18:
- br label %exit
-bb19:
- br label %exit
-bb20:
- br label %exit
-bb21:
- br label %exit
-bb22:
- br label %exit
-bb23:
- br label %exit
-bb24:
- br label %exit
-bb25:
- br label %exit
-bb26:
- br label %exit
-bb27:
- br label %exit
-bb28:
- br label %exit
-
-
-exit:
-
- ret void
-}
-
diff --git a/test/MC/MachO/x86-data-in-code.s b/test/MC/MachO/x86-data-in-code.s
new file mode 100644
index 000000000000..e7b2406e5d09
--- /dev/null
+++ b/test/MC/MachO/x86-data-in-code.s
@@ -0,0 +1,47 @@
+// RUN: llvm-mc -triple x86_64-apple-darwin10 -filetype=obj -o - < %s | llvm-readobj --macho-data-in-code | FileCheck %s
+// RUN: llvm-mc -triple i686-apple-darwin10 -filetype=obj -o - < %s | llvm-readobj --macho-data-in-code | FileCheck %s
+
+ .text
+_foo:
+.data_region
+ .long 10
+.end_data_region
+.data_region jt32
+ .long 1
+.end_data_region
+.data_region jt16
+ .short 2
+.end_data_region
+.data_region jt8
+ .byte 3
+.end_data_region
+
+// CHECK: DataInCode {
+// CHECK: Data size: 32
+// CHECK: Data entries [
+// CHECK: Entry {
+// CHECK: Index: 0
+// CHECK: Offset: 0
+// CHECK: Length: 4
+// CHECK: Kind: 1
+// CHECK: }
+// CHECK: Entry {
+// CHECK: Index: 1
+// CHECK: Offset: 4
+// CHECK: Length: 4
+// CHECK: Kind: 4
+// CHECK: }
+// CHECK: Entry {
+// CHECK: Index: 2
+// CHECK: Offset: 8
+// CHECK: Length: 2
+// CHECK: Kind: 3
+// CHECK: }
+// CHECK: Entry {
+// CHECK: Index: 3
+// CHECK: Offset: 10
+// CHECK: Length: 1
+// CHECK: Kind: 2
+// CHECK: }
+// CHECK: ]
+// CHECK: }
diff --git a/test/MC/MachO/x86_64-reloc-arithmetic.s b/test/MC/MachO/x86_64-reloc-arithmetic.s
index de524791faa3..bce9dbdbe4ca 100644
--- a/test/MC/MachO/x86_64-reloc-arithmetic.s
+++ b/test/MC/MachO/x86_64-reloc-arithmetic.s
@@ -31,7 +31,8 @@ _baz:
// CHECK-NEXT: Type: Section (0xE)
// CHECK-NEXT: Section: __text (0x1)
// CHECK-NEXT: RefType: UndefinedNonLazy (0x0)
-// CHECK-NEXT: Flags [ (0x0)
+// CHECK-NEXT: Flags [ (0x200)
+// CHECK-NEXT: AltEntry (0x200)
// CHECK-NEXT: ]
// CHECK-NEXT: Value: 0x102
// CHECK-NEXT: }