diff options
author | Stephen Hines <srhines@google.com> | 2014-12-01 14:51:49 -0800 |
---|---|---|
committer | Stephen Hines <srhines@google.com> | 2014-12-02 16:08:10 -0800 |
commit | 37ed9c199ca639565f6ce88105f9e39e898d82d0 (patch) | |
tree | 8fb36d3910e3ee4c4e1b7422f4f017108efc52f5 /test/MC/ELF | |
parent | d2327b22152ced7bc46dc629fc908959e8a52d03 (diff) | |
download | external_llvm-37ed9c199ca639565f6ce88105f9e39e898d82d0.zip external_llvm-37ed9c199ca639565f6ce88105f9e39e898d82d0.tar.gz external_llvm-37ed9c199ca639565f6ce88105f9e39e898d82d0.tar.bz2 |
Update aosp/master LLVM for rebase to r222494.
Change-Id: Ic787f5e0124df789bd26f3f24680f45e678eef2d
Diffstat (limited to 'test/MC/ELF')
-rw-r--r-- | test/MC/ELF/cfi-version.ll | 12 | ||||
-rw-r--r-- | test/MC/ELF/comdat.s | 4 | ||||
-rw-r--r-- | test/MC/ELF/reloc-same-name-section.s | 31 | ||||
-rw-r--r-- | test/MC/ELF/section-sym-err.s | 6 | ||||
-rw-r--r-- | test/MC/ELF/section-sym.s | 91 | ||||
-rw-r--r-- | test/MC/ELF/section-sym2.s | 28 |
6 files changed, 164 insertions, 8 deletions
diff --git a/test/MC/ELF/cfi-version.ll b/test/MC/ELF/cfi-version.ll index 10daa1d..2938dc7 100644 --- a/test/MC/ELF/cfi-version.ll +++ b/test/MC/ELF/cfi-version.ll @@ -22,17 +22,17 @@ attributes #1 = { "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "n !llvm.module.flags = !{!9, !10} !llvm.ident = !{!11} -!0 = metadata !{i32 786449, metadata !1, i32 12, metadata !"clang version 3.5.0 ", i1 false, metadata !"", i32 0, metadata !2, metadata !2, metadata !3, metadata !2, metadata !2, metadata !"", i32 1} ; [ DW_TAG_compile_unit ] [/tmp/test.c] [DW_LANG_C99] +!0 = metadata !{metadata !"0x11\0012\00clang version 3.5.0 \000\00\000\00\001", metadata !1, metadata !2, metadata !2, metadata !3, metadata !2, metadata !2} ; [ DW_TAG_compile_unit ] [/tmp/test.c] [DW_LANG_C99] !1 = metadata !{metadata !"test.c", metadata !"/tmp"} !2 = metadata !{} !3 = metadata !{metadata !4} -!4 = metadata !{i32 786478, metadata !1, metadata !5, metadata !"foo", metadata !"foo", metadata !"", i32 2, metadata !6, i1 false, i1 true, i32 0, i32 0, null, i32 256, i1 false, i32 ()* @foo, null, null, metadata !2, i32 2} ; [ DW_TAG_subprogram ] [line 2] [def] [foo] -!5 = metadata !{i32 786473, metadata !1} ; [ DW_TAG_file_type ] [/tmp/test.c] -!6 = metadata !{i32 786453, i32 0, null, metadata !"", i32 0, i64 0, i64 0, i64 0, i32 0, null, metadata !7, i32 0, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ] +!4 = metadata !{metadata !"0x2e\00foo\00foo\00\002\000\001\000\006\00256\000\002", metadata !1, metadata !5, metadata !6, null, i32 ()* @foo, null, null, metadata !2} ; [ DW_TAG_subprogram ] [line 2] [def] [foo] +!5 = metadata !{metadata !"0x29", metadata !1} ; [ DW_TAG_file_type ] [/tmp/test.c] +!6 = metadata !{metadata !"0x15\00\000\000\000\000\000\000", i32 0, null, null, metadata !7, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ] !7 = metadata !{metadata !8} -!8 = metadata !{i32 786468, null, null, metadata !"int", i32 0, i64 32, i64 32, i64 0, i32 0, i32 5} ; [ DW_TAG_base_type ] [int] [line 0, size 32, align 32, offset 0, enc DW_ATE_signed] +!8 = metadata !{metadata !"0x24\00int\000\0032\0032\000\000\005", null, null} ; [ DW_TAG_base_type ] [int] [line 0, size 32, align 32, offset 0, enc DW_ATE_signed] !9 = metadata !{i32 2, metadata !"Dwarf Version", i32 4} -!10 = metadata !{i32 1, metadata !"Debug Info Version", i32 1} +!10 = metadata !{i32 1, metadata !"Debug Info Version", i32 2} !11 = metadata !{metadata !"clang version 3.5.0 "} !12 = metadata !{i32 2, i32 0, metadata !4, null} diff --git a/test/MC/ELF/comdat.s b/test/MC/ELF/comdat.s index 68b0f32..4796675 100644 --- a/test/MC/ELF/comdat.s +++ b/test/MC/ELF/comdat.s @@ -1,6 +1,6 @@ // RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -t | FileCheck %s -// Test that we produce the group sections and that they are a the beginning +// Test that we produce the group sections and that they are at the beginning // of the file. // CHECK: Section { @@ -41,7 +41,7 @@ // CHECK-NEXT: Offset: 0x54 // CHECK-NEXT: Size: 12 // CHECK-NEXT: Link: 13 -// CHECK-NEXT: Info: 13 +// CHECK-NEXT: Info: 10 // CHECK-NEXT: AddressAlignment: 4 // CHECK-NEXT: EntrySize: 4 // CHECK-NEXT: } diff --git a/test/MC/ELF/reloc-same-name-section.s b/test/MC/ELF/reloc-same-name-section.s new file mode 100644 index 0000000..e63ea54 --- /dev/null +++ b/test/MC/ELF/reloc-same-name-section.s @@ -0,0 +1,31 @@ +// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux %s -o - | llvm-readobj -r --expand-relocs | FileCheck %s + +// test that we produce one relocation against each section. + +// CHECK: Relocations [ +// CHECK-NEXT: Section {{.*}} { +// CHECK-NEXT: Relocation { +// CHECK-NEXT: Offset: +// CHECK-NEXT: Type: +// CHECK-NEXT: Symbol: .foo (7) +// CHECK-NEXT: Addend: +// CHECK-NEXT: } +// CHECK-NEXT: Relocation { +// CHECK-NEXT: Offset: +// CHECK-NEXT: Type: +// CHECK-NEXT: Symbol: .foo (8) +// CHECK-NEXT: Addend: +// CHECK-NEXT: } +// CHECK-NEXT: } +// CHECK-NEXT: ] + + .section .foo,"aG",@progbits,v,comdat +f: + + .section .foo,"a",@progbits +g: + + + .section .bar + .quad f + .quad g diff --git a/test/MC/ELF/section-sym-err.s b/test/MC/ELF/section-sym-err.s new file mode 100644 index 0000000..789fee7 --- /dev/null +++ b/test/MC/ELF/section-sym-err.s @@ -0,0 +1,6 @@ +// RUN: not llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o %t.o 2>&1 | FileCheck %s + +.section foo +foo: + +// CHECK: error: invalid symbol redefinition diff --git a/test/MC/ELF/section-sym.s b/test/MC/ELF/section-sym.s new file mode 100644 index 0000000..3b76d81 --- /dev/null +++ b/test/MC/ELF/section-sym.s @@ -0,0 +1,91 @@ +// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -t -r --expand-relocs | FileCheck %s + +.section foo, "aG", @progbits, f1, comdat +.section foo, "G", @progbits, f2, comdat +.section bar +.long foo + +// Test that the relocation points to the first section foo. + +// The first seciton foo has index 6 +// CHECK: Section { +// CHECK: Index: 6 +// CHECK-NEXT: Name: foo (28) +// CHECK-NEXT: Type: SHT_PROGBITS (0x1) +// CHECK-NEXT: Flags [ (0x202) +// CHECK-NEXT: SHF_ALLOC (0x2) +// CHECK-NEXT: SHF_GROUP (0x200) +// CHECK-NEXT: ] +// CHECK-NEXT: Address: 0x0 +// CHECK-NEXT: Offset: 0x50 +// CHECK-NEXT: Size: 0 +// CHECK-NEXT: Link: 0 +// CHECK-NEXT: Info: 0 +// CHECK-NEXT: AddressAlignment: 1 +// CHECK-NEXT: EntrySize: 0 +// CHECK-NEXT: } +// CHECK-NEXT: Section { +// CHECK-NEXT: Index: 7 +// CHECK-NEXT: Name: foo (28) +// CHECK-NEXT: Type: SHT_PROGBITS (0x1) +// CHECK-NEXT: Flags [ (0x200) +// CHECK-NEXT: SHF_GROUP (0x200) +// CHECK-NEXT: ] +// CHECK-NEXT: Address: 0x0 +// CHECK-NEXT: Offset: 0x50 +// CHECK-NEXT: Size: 0 +// CHECK-NEXT: Link: 0 +// CHECK-NEXT: Info: 0 +// CHECK-NEXT: AddressAlignment: 1 +// CHECK-NEXT: EntrySize: 0 +// CHECK-NEXT: } + +// The relocation points to symbol 6 +// CHECK: Relocations [ +// CHECK-NEXT: Section (9) .relabar { +// CHECK-NEXT: Relocation { +// CHECK-NEXT: Offset: 0x0 +// CHECK-NEXT: Type: R_X86_64_32 (10) +// CHECK-NEXT: Symbol: foo (6) +// CHECK-NEXT: Addend: 0x0 +// CHECK-NEXT: } +// CHECK-NEXT: } +// CHECK-NEXT: ] + + +// The symbol 6 corresponds section 6 +// CHECK: Symbols [ + +// symbol 0 +// CHECK-NOT: Name +// CHECK: Name: + +// symbol 1 +// CHECK-NOT: Name +// CHECK: Name: f1 + +// symbol 2 +// CHECK-NOT: Name +// CHECK: Name: f2 + +// symbol 3 +// CHECK-NOT: Name +// CHECK: Name: .text + +// symbol 4 +// CHECK-NOT: Name +// CHECK: Name: .data + +// symbol 5 +// CHECK-NOT: Name +// CHECK: Name: .bss + +// symbol 6 +// CHECK-NOT: Name +// CHECK: Name: foo +// CHECK: Section: foo (0x6) + +// symbol 7 +// CHECK-NOT: Name +// CHECK: Name: foo +// CHECK: Section: foo (0x7) diff --git a/test/MC/ELF/section-sym2.s b/test/MC/ELF/section-sym2.s new file mode 100644 index 0000000..acdb7d9 --- /dev/null +++ b/test/MC/ELF/section-sym2.s @@ -0,0 +1,28 @@ +// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -t -r --expand-relocs | FileCheck %s + +// Test that we can forward reference a section. + +mov .rodata, %rsi +.section .rodata + +// CHECK:Relocations [ +// CHECK: Section (2) .rela.text { +// CHECK: Relocation { +// CHECK: Offset: 0x4 +// CHECK: Type: R_X86_64_32S (11) +// CHECK: Symbol: .rodata +// CHECK: Addend: 0x0 +// CHECK: } +// CHECK: } +// CHECK:] + +// There is only one .rodata symbol + +// CHECK:Symbols [ +// CHECK-NOT: Name: .rodata +// CHECK: Name: .rodata +// CHECK-NEXT: Value: 0x0 +// CHECK-NEXT: Size: 0 +// CHECK-NEXT: Binding: Local (0x0) +// CHECK-NEXT: Type: Section (0x3) +// CHECK-NOT: Name: .rodata |