diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2016-07-23 20:41:05 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2016-07-23 20:41:05 +0000 |
| commit | 01095a5d43bbfde13731688ddcf6048ebb8b7721 (patch) | |
| tree | 4def12e759965de927d963ac65840d663ef9d1ea /test/MC/MachO | |
| parent | f0f4822ed4b66e3579e92a89f368f8fb860e218e (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.ll | 14 | ||||
| -rw-r--r-- | test/MC/MachO/AArch64/data-in-code.s | 49 | ||||
| -rw-r--r-- | test/MC/MachO/absolute.s | 9 | ||||
| -rw-r--r-- | test/MC/MachO/altentry.s | 77 | ||||
| -rw-r--r-- | test/MC/MachO/empty-twice.ll | 2 | ||||
| -rw-r--r-- | test/MC/MachO/undefined-directional.s | 11 | ||||
| -rw-r--r-- | test/MC/MachO/variable-exprs.s | 8 | ||||
| -rw-r--r-- | test/MC/MachO/x86-data-in-code.ll | 107 | ||||
| -rw-r--r-- | test/MC/MachO/x86-data-in-code.s | 47 | ||||
| -rw-r--r-- | test/MC/MachO/x86_64-reloc-arithmetic.s | 3 |
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: } |
