diff options
Diffstat (limited to 'test/MC/ELF')
78 files changed, 658 insertions, 414 deletions
diff --git a/test/MC/ELF/alias-to-local.s b/test/MC/ELF/alias-to-local.s new file mode 100644 index 000000000000..4983833b33af --- /dev/null +++ b/test/MC/ELF/alias-to-local.s @@ -0,0 +1,18 @@ +// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu < %s | llvm-readobj -r | FileCheck %s + +// CHECK: Relocations [ +// CHECK-NEXT: Section {{.*}} .rela.text { +// CHECK-NEXT: 0x1 R_X86_64_32 zed 0x0 +// CHECK-NEXT: } +// CHECK-NEXT: ] + +foo: + movl $zed, %eax + + + .section .data.bar,"aGw",@progbits,zed,comdat +bar: + .byte 42 + + .globl zed +zed = bar diff --git a/test/MC/ELF/alias.s b/test/MC/ELF/alias.s index 8e1318230bb8..0ab6dd4b5b8e 100644 --- a/test/MC/ELF/alias.s +++ b/test/MC/ELF/alias.s @@ -24,6 +24,15 @@ bar5 = bar4 bar6 = bar5 bar6: +// Test that indirect local aliases do not appear as symbols. +.data +.Llocal: + +.text +leaq .Llocal1(%rip), %rdi +.Llocal1 = .Llocal2 +.Llocal2 = .Llocal + // CHECK: Symbols [ // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: (0) @@ -99,12 +108,15 @@ bar6: // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: .text (0) +// CHECK-NOT: Symbol { // CHECK: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: .data (0) +// CHECK-NOT: Symbol { // CHECK: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: .bss (0) +// CHECK-NOT: Symbol { // CHECK: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: bar3 diff --git a/test/MC/ELF/align.s b/test/MC/ELF/align.s index 46be3df62f2d..43f5b548d9ee 100644 --- a/test/MC/ELF/align.s +++ b/test/MC/ELF/align.s @@ -23,7 +23,7 @@ // CHECK-NEXT: EntrySize: 0 // CHECK-NEXT: } // CHECK-NEXT: Section { -// CHECK-NEXT: Index: 4 +// CHECK-NEXT: Index: // CHECK-NEXT: Name: .rodata // CHECK-NEXT: Type: SHT_PROGBITS // CHECK-NEXT: Flags [ diff --git a/test/MC/ELF/basic-elf-32.s b/test/MC/ELF/basic-elf-32.s index e12fc526369e..16266af7f445 100644 --- a/test/MC/ELF/basic-elf-32.s +++ b/test/MC/ELF/basic-elf-32.s @@ -45,7 +45,7 @@ main: # @main // CHECK: Name: .rel.text // CHECK: Relocations [ -// CHECK: Section (2) .rel.text { +// CHECK: Section {{.*}} .rel.text { // CHECK: 0x6 R_386_32 .L.str1 // CHECK: 0xB R_386_PC32 puts // CHECK: 0x12 R_386_32 .L.str2 diff --git a/test/MC/ELF/basic-elf-64.s b/test/MC/ELF/basic-elf-64.s index a77f3e63e093..d99125e06a91 100644 --- a/test/MC/ELF/basic-elf-64.s +++ b/test/MC/ELF/basic-elf-64.s @@ -45,7 +45,7 @@ main: # @main // CHECK: Name: .rela.text // CHECK: Relocations [ -// CHECK: Section (2) .rela.text { +// CHECK: Section {{.*}} .rela.text { // CHECK: 0x5 R_X86_64_32 .rodata.str1.1 0x0 // CHECK: 0xA R_X86_64_PC32 puts 0xFFFFFFFFFFFFFFFC // CHECK: 0xF R_X86_64_32 .rodata.str1.1 0x6 diff --git a/test/MC/ELF/bracket-exprs.s b/test/MC/ELF/bracket-exprs.s index 96f9f9aa450a..e7299fde7009 100644 --- a/test/MC/ELF/bracket-exprs.s +++ b/test/MC/ELF/bracket-exprs.s @@ -1,7 +1,7 @@ // RUN: llvm-mc -triple i386-unknown-unknown %s | FileCheck %s // CHECK: .byte 1 -.if [~0 >> 1] == -1 +.if [~0 >> 63] == 1 .byte 1 .else .byte 2 diff --git a/test/MC/ELF/cfi-adjust-cfa-offset.s b/test/MC/ELF/cfi-adjust-cfa-offset.s index 9d639f70d8dd..398ad54fe75b 100644 --- a/test/MC/ELF/cfi-adjust-cfa-offset.s +++ b/test/MC/ELF/cfi-adjust-cfa-offset.s @@ -11,16 +11,26 @@ f: ret .cfi_endproc + .cfi_startproc + nop + .cfi_adjust_cfa_offset 4 + .cfi_endproc + + .cfi_startproc + nop + .cfi_adjust_cfa_offset 4 + .cfi_endproc + // CHECK: Section { -// CHECK: Index: 4 -// CHECK-NEXT: Name: .eh_frame +// CHECK: Index: +// CHECK: Name: .eh_frame // CHECK-NEXT: Type: SHT_PROGBITS // CHECK-NEXT: Flags [ // CHECK-NEXT: SHF_ALLOC // CHECK-NEXT: ] // CHECK-NEXT: Address: 0x0 // CHECK-NEXT: Offset: 0x50 -// CHECK-NEXT: Size: 56 +// CHECK-NEXT: Size: 96 // CHECK-NEXT: Link: 0 // CHECK-NEXT: Info: 0 // CHECK-NEXT: AddressAlignment: 8 @@ -28,26 +38,30 @@ f: // CHECK-NEXT: Relocations [ // CHECK-NEXT: ] // CHECK-NEXT: SectionData ( -// CHECK-NEXT: 0000: 14000000 00000000 037A5200 01781001 -// CHECK-NEXT: 0010: 1B0C0708 90010000 1C000000 1C000000 +// CHECK-NEXT: 0000: 14000000 00000000 017A5200 01781001 +// CHECK-NEXT: 0010: 1B0C0708 90010000 18000000 1C000000 // CHECK-NEXT: 0020: 00000000 0A000000 00440E10 410E1444 -// CHECK-NEXT: 0030: 0E080000 00000000 +// CHECK-NEXT: 0030: 0E080000 10000000 38000000 00000000 +// CHECK-NEXT: 0040: 01000000 00410E0C 14000000 4C000000 +// CHECK-NEXT: 0050: 00000000 01000000 00410E0C 00000000 // CHECK-NEXT: ) // CHECK-NEXT: } // CHECK-NEXT: Section { -// CHECK-NEXT: Index: 5 +// CHECK-NEXT: Index: // CHECK-NEXT: Name: .rela.eh_frame // CHECK-NEXT: Type: SHT_RELA // CHECK-NEXT: Flags [ // CHECK-NEXT: ] // CHECK-NEXT: Address: 0x0 -// CHECK-NEXT: Offset: 0x3A0 -// CHECK-NEXT: Size: 24 -// CHECK-NEXT: Link: 7 -// CHECK-NEXT: Info: 4 +// CHECK-NEXT: Offset: +// CHECK-NEXT: Size: 72 +// CHECK-NEXT: Link: +// CHECK-NEXT: Info: // CHECK-NEXT: AddressAlignment: 8 // CHECK-NEXT: EntrySize: 24 // CHECK-NEXT: Relocations [ // CHECK-NEXT: 0x20 R_X86_64_PC32 .text 0x0 +// CHECK-NEXT: 0x3C R_X86_64_PC32 .text 0x +// CHECK-NEXT: 0x50 R_X86_64_PC32 .text 0x // CHECK-NEXT: ] // CHECK: } diff --git a/test/MC/ELF/cfi-advance-loc2.s b/test/MC/ELF/cfi-advance-loc2.s index 98caa0185f59..133979201273 100644 --- a/test/MC/ELF/cfi-advance-loc2.s +++ b/test/MC/ELF/cfi-advance-loc2.s @@ -26,7 +26,7 @@ f: // CHECK-NEXT: Relocations [ // CHECK-NEXT: ] // CHECK-NEXT: SectionData ( -// CHECK-NEXT: 0000: 14000000 00000000 037A5200 01781001 +// CHECK-NEXT: 0000: 14000000 00000000 017A5200 01781001 // CHECK-NEXT: 0010: 1B0C0708 90010000 14000000 1C000000 // CHECK-NEXT: 0020: 00000000 01010000 00030001 0E080000 // CHECK-NEXT: ) @@ -38,10 +38,10 @@ f: // CHECK-NEXT: Flags [ // CHECK-NEXT: ] // CHECK-NEXT: Address: 0x0 -// CHECK-NEXT: Offset: 0x490 +// CHECK-NEXT: Offset: // CHECK-NEXT: Size: 24 -// CHECK-NEXT: Link: 7 -// CHECK-NEXT: Info: 4 +// CHECK-NEXT: Link: +// CHECK-NEXT: Info: // CHECK-NEXT: AddressAlignment: 8 // CHECK-NEXT: EntrySize: 24 // CHECK-NEXT: Relocations [ diff --git a/test/MC/ELF/cfi-def-cfa-offset.s b/test/MC/ELF/cfi-def-cfa-offset.s index 59f740055d47..3e4ca57a5161 100644 --- a/test/MC/ELF/cfi-def-cfa-offset.s +++ b/test/MC/ELF/cfi-def-cfa-offset.s @@ -11,8 +11,8 @@ f: .cfi_endproc // CHECK: Section { -// CHECK: Index: 4 -// CHECK-NEXT: Name: .eh_frame +// CHECK: Index: +// CHECK: Name: .eh_frame // CHECK-NEXT: Type: SHT_PROGBITS // CHECK-NEXT: Flags [ // CHECK-NEXT: SHF_ALLOC @@ -27,23 +27,23 @@ f: // CHECK-NEXT: Relocations [ // CHECK-NEXT: ] // CHECK-NEXT: SectionData ( -// CHECK-NEXT: 0000: 14000000 00000000 037A5200 01781001 +// CHECK-NEXT: 0000: 14000000 00000000 017A5200 01781001 // CHECK-NEXT: 0010: 1B0C0708 90010000 14000000 1C000000 // CHECK-NEXT: 0020: 00000000 0A000000 00440E10 450E0800 // CHECK-NEXT: ) // CHECK-NEXT: } // CHECK: Section { -// CHECK: Index: 5 -// CHECK-NEXT: Name: .rela.eh_frame +// CHECK: Index: +// CHECK: Name: .rela.eh_frame // CHECK-NEXT: Type: SHT_RELA // CHECK-NEXT: Flags [ // CHECK-NEXT: ] // CHECK-NEXT: Address: 0x0 -// CHECK-NEXT: Offset: 0x398 +// CHECK-NEXT: Offset: // CHECK-NEXT: Size: 24 -// CHECK-NEXT: Link: 7 -// CHECK-NEXT: Info: 4 +// CHECK-NEXT: Link: +// CHECK-NEXT: Info: // CHECK-NEXT: AddressAlignment: 8 // CHECK-NEXT: EntrySize: 24 // CHECK-NEXT: Relocations [ diff --git a/test/MC/ELF/cfi-def-cfa-register.s b/test/MC/ELF/cfi-def-cfa-register.s index 178ba32882dc..53174cb2f552 100644 --- a/test/MC/ELF/cfi-def-cfa-register.s +++ b/test/MC/ELF/cfi-def-cfa-register.s @@ -23,7 +23,7 @@ f: // CHECK-NEXT: Relocations [ // CHECK-NEXT: ] // CHECK-NEXT: SectionData ( -// CHECK-NEXT: 0000: 14000000 00000000 037A5200 01781001 +// CHECK-NEXT: 0000: 14000000 00000000 017A5200 01781001 // CHECK-NEXT: 0010: 1B0C0708 90010000 14000000 1C000000 // CHECK-NEXT: 0020: 00000000 02000000 00410D06 00000000 // CHECK-NEXT: ) @@ -35,10 +35,10 @@ f: // CHECK-NEXT: Flags [ // CHECK-NEXT: ] // CHECK-NEXT: Address: 0x0 -// CHECK-NEXT: Offset: 0x390 +// CHECK-NEXT: Offset: // CHECK-NEXT: Size: 24 -// CHECK-NEXT: Link: 7 -// CHECK-NEXT: Info: 4 +// CHECK-NEXT: Link: +// CHECK-NEXT: Info: // CHECK-NEXT: AddressAlignment: 8 // CHECK-NEXT: EntrySize: 24 // CHECK-NEXT: Relocations [ diff --git a/test/MC/ELF/cfi-def-cfa.s b/test/MC/ELF/cfi-def-cfa.s index dfb0d4b59396..9706c4da097b 100644 --- a/test/MC/ELF/cfi-def-cfa.s +++ b/test/MC/ELF/cfi-def-cfa.s @@ -23,7 +23,7 @@ f: // CHECK-NEXT: Relocations [ // CHECK-NEXT: ] // CHECK-NEXT: SectionData ( -// CHECK-NEXT: 0000: 14000000 00000000 037A5200 01781001 +// CHECK-NEXT: 0000: 14000000 00000000 017A5200 01781001 // CHECK-NEXT: 0010: 1B0C0708 90010000 14000000 1C000000 // CHECK-NEXT: 0020: 00000000 02000000 00410C07 08000000 // CHECK-NEXT: ) @@ -35,10 +35,10 @@ f: // CHECK-NEXT: Flags [ // CHECK-NEXT: ] // CHECK-NEXT: Address: 0x0 -// CHECK-NEXT: Offset: 0x390 +// CHECK-NEXT: Offset: // CHECK-NEXT: Size: 24 -// CHECK-NEXT: Link: 7 -// CHECK-NEXT: Info: 4 +// CHECK-NEXT: Link: +// CHECK-NEXT: Info: // CHECK-NEXT: AddressAlignment: 8 // CHECK-NEXT: EntrySize: 24 // CHECK-NEXT: Relocations [ diff --git a/test/MC/ELF/cfi-escape.s b/test/MC/ELF/cfi-escape.s index 5394ee414aa7..e93d5f7be5f0 100644 --- a/test/MC/ELF/cfi-escape.s +++ b/test/MC/ELF/cfi-escape.s @@ -8,8 +8,8 @@ f: .cfi_endproc // CHECK: Section { -// CHECK: Index: 4 -// CHECK-NEXT: Name: .eh_frame +// CHECK: Index: +// CHECK: Name: .eh_frame // CHECK-NEXT: Type: SHT_PROGBITS // CHECK-NEXT: Flags [ // CHECK-NEXT: SHF_ALLOC @@ -24,22 +24,22 @@ f: // CHECK-NEXT: Relocations [ // CHECK-NEXT: ] // CHECK-NEXT: SectionData ( -// CHECK-NEXT: 0000: 14000000 00000000 037A5200 01781001 +// CHECK-NEXT: 0000: 14000000 00000000 017A5200 01781001 // CHECK-NEXT: 0010: 1B0C0708 90010000 14000000 1C000000 // CHECK-NEXT: 0020: 00000000 02000000 00411507 7F000000 // CHECK-NEXT: ) // CHECK-NEXT: } // CHECK-NEXT: Section { -// CHECK-NEXT: Index: 5 +// CHECK-NEXT: Index: // CHECK-NEXT: Name: .rela.eh_frame // CHECK-NEXT: Type: SHT_RELA // CHECK-NEXT: Flags [ // CHECK-NEXT: ] // CHECK-NEXT: Address: 0x0 -// CHECK-NEXT: Offset: 0x390 +// CHECK-NEXT: Offset: // CHECK-NEXT: Size: 24 -// CHECK-NEXT: Link: 7 -// CHECK-NEXT: Info: 4 +// CHECK-NEXT: Link: +// CHECK-NEXT: Info: // CHECK-NEXT: AddressAlignment: 8 // CHECK-NEXT: EntrySize: 24 // CHECK-NEXT: Relocations [ diff --git a/test/MC/ELF/cfi-large-model.s b/test/MC/ELF/cfi-large-model.s index 16073ad7f0ee..f4a20c26267c 100644 --- a/test/MC/ELF/cfi-large-model.s +++ b/test/MC/ELF/cfi-large-model.s @@ -16,7 +16,7 @@ // CHECK-NEXT: AddressAlignment: 8 // CHECK-NEXT: EntrySize: 0 // CHECK-NEXT: SectionData ( -// CHECK-NEXT: 0000: 14000000 00000000 037A5200 01781001 |.........zR..x..| +// CHECK-NEXT: 0000: 14000000 00000000 017A5200 01781001 |.........zR..x..| // CHECK-NEXT: 0010: 1C0C0708 90010000 1C000000 1C000000 |................| // CHECK-NEXT: 0020: 00000000 00000000 00000000 00000000 |................| // CHECK-NEXT: 0030: 00000000 00000000 |........| diff --git a/test/MC/ELF/cfi-offset.s b/test/MC/ELF/cfi-offset.s index a65b4fc783c7..9038def03a64 100644 --- a/test/MC/ELF/cfi-offset.s +++ b/test/MC/ELF/cfi-offset.s @@ -23,7 +23,7 @@ f: // CHECK-NEXT: Relocations [ // CHECK-NEXT: ] // CHECK-NEXT: SectionData ( -// CHECK-NEXT: 0000: 14000000 00000000 037A5200 01781001 +// CHECK-NEXT: 0000: 14000000 00000000 017A5200 01781001 // CHECK-NEXT: 0010: 1B0C0708 90010000 14000000 1C000000 // CHECK-NEXT: 0020: 00000000 02000000 00418602 00000000 // CHECK-NEXT: ) @@ -35,10 +35,10 @@ f: // CHECK-NEXT: Flags [ // CHECK-NEXT: ] // CHECK-NEXT: Address: 0x0 -// CHECK-NEXT: Offset: 0x390 +// CHECK-NEXT: Offset: // CHECK-NEXT: Size: 24 -// CHECK-NEXT: Link: 7 -// CHECK-NEXT: Info: 4 +// CHECK-NEXT: Link: +// CHECK-NEXT: Info: // CHECK-NEXT: AddressAlignment: 8 // CHECK-NEXT: EntrySize: 24 // CHECK-NEXT: Relocations [ diff --git a/test/MC/ELF/cfi-register.s b/test/MC/ELF/cfi-register.s index 94417702c13c..be60e2ea2e81 100644 --- a/test/MC/ELF/cfi-register.s +++ b/test/MC/ELF/cfi-register.s @@ -8,8 +8,8 @@ f: .cfi_endproc // CHECK: Section { -// CHECK: Index: 4 -// CHECK-NEXT: Name: .eh_frame +// CHECK: Index: +// CHECK: Name: .eh_frame // CHECK-NEXT: Type: SHT_PROGBITS // CHECK-NEXT: Flags [ // CHECK-NEXT: SHF_ALLOC @@ -24,22 +24,22 @@ f: // CHECK-NEXT: Relocations [ // CHECK-NEXT: ] // CHECK-NEXT: SectionData ( -// CHECK-NEXT: 0000: 14000000 00000000 037A5200 01781001 +// CHECK-NEXT: 0000: 14000000 00000000 017A5200 01781001 // CHECK-NEXT: 0010: 1B0C0708 90010000 14000000 1C000000 // CHECK-NEXT: 0020: 00000000 02000000 00410906 00000000 // CHECK-NEXT: ) // CHECK-NEXT: } // CHECK-NEXT: Section { -// CHECK-NEXT: Index: 5 +// CHECK-NEXT: Index: // CHECK-NEXT: Name: .rela.eh_frame // CHECK-NEXT: Type: SHT_RELA // CHECK-NEXT: Flags [ // CHECK-NEXT: ] // CHECK-NEXT: Address: 0x0 -// CHECK-NEXT: Offset: 0x390 +// CHECK-NEXT: Offset: // CHECK-NEXT: Size: 24 -// CHECK-NEXT: Link: 7 -// CHECK-NEXT: Info: 4 +// CHECK-NEXT: Link: +// CHECK-NEXT: Info: // CHECK-NEXT: AddressAlignment: 8 // CHECK-NEXT: EntrySize: 24 // CHECK-NEXT: Relocations [ diff --git a/test/MC/ELF/cfi-rel-offset.s b/test/MC/ELF/cfi-rel-offset.s index 0dc69c89cf4c..892cda165ba6 100644 --- a/test/MC/ELF/cfi-rel-offset.s +++ b/test/MC/ELF/cfi-rel-offset.s @@ -15,8 +15,8 @@ f: .cfi_endproc // CHECK: Section { -// CHECK: Index: 4 -// CHECK-NEXT: Name: .eh_frame +// CHECK: Index: +// CHECK: Name: .eh_frame // CHECK-NEXT: Type: SHT_PROGBITS // CHECK-NEXT: Flags [ // CHECK-NEXT: SHF_ALLOC @@ -31,23 +31,23 @@ f: // CHECK-NEXT: Relocations [ // CHECK-NEXT: ] // CHECK-NEXT: SectionData ( -// CHECK-NEXT: 0000: 14000000 00000000 037A5200 01781001 +// CHECK-NEXT: 0000: 14000000 00000000 017A5200 01781001 // CHECK-NEXT: 0010: 1B0C0708 90010000 24000000 1C000000 // CHECK-NEXT: 0020: 00000000 05000000 00410E08 410D0641 // CHECK-NEXT: 0030: 11067F41 0E104186 02000000 00000000 // CHECK-NEXT: ) // CHECK-NEXT: } // CHECK-NEXT: Section { -// CHECK-NEXT: Index: 5 +// CHECK-NEXT: Index: // CHECK-NEXT: Name: .rela.eh_frame // CHECK-NEXT: Type: SHT_RELA // CHECK-NEXT: Flags [ // CHECK-NEXT: ] // CHECK-NEXT: Address: 0x0 -// CHECK-NEXT: Offset: 0x3A0 +// CHECK-NEXT: Offset: // CHECK-NEXT: Size: 24 -// CHECK-NEXT: Link: 7 -// CHECK-NEXT: Info: 4 +// CHECK-NEXT: Link: +// CHECK-NEXT: Info: // CHECK-NEXT: AddressAlignment: 8 // CHECK-NEXT: EntrySize: 24 // CHECK-NEXT: Relocations [ diff --git a/test/MC/ELF/cfi-rel-offset2.s b/test/MC/ELF/cfi-rel-offset2.s index 360e7b0ea0f5..805b0b290bc8 100644 --- a/test/MC/ELF/cfi-rel-offset2.s +++ b/test/MC/ELF/cfi-rel-offset2.s @@ -7,8 +7,8 @@ f: .cfi_endproc // CHECK: Section { -// CHECK: Index: 4 -// CHECK-NEXT: Name: .eh_frame +// CHECK: Index: +// CHECK: Name: .eh_frame // CHECK-NEXT: Type: SHT_PROGBITS // CHECK-NEXT: Flags [ // CHECK-NEXT: SHF_ALLOC @@ -23,22 +23,22 @@ f: // CHECK-NEXT: Relocations [ // CHECK-NEXT: ] // CHECK-NEXT: SectionData ( -// CHECK-NEXT: 0000: 14000000 00000000 037A5200 01781001 +// CHECK-NEXT: 0000: 14000000 00000000 017A5200 01781001 // CHECK-NEXT: 0010: 1B0C0708 90010000 14000000 1C000000 // CHECK-NEXT: 0020: 00000000 01000000 00411106 7F000000 // CHECK-NEXT: ) // CHECK-NEXT: } // CHECK-NEXT: Section { -// CHECK-NEXT: Index: 5 +// CHECK-NEXT: Index: // CHECK-NEXT: Name: .rela.eh_frame // CHECK-NEXT: Type: SHT_RELA // CHECK-NEXT: Flags [ // CHECK-NEXT: ] // CHECK-NEXT: Address: 0x0 -// CHECK-NEXT: Offset: 0x390 +// CHECK-NEXT: Offset: // CHECK-NEXT: Size: 24 -// CHECK-NEXT: Link: 7 -// CHECK-NEXT: Info: 4 +// CHECK-NEXT: Link: +// CHECK-NEXT: Info: // CHECK-NEXT: AddressAlignment: 8 // CHECK-NEXT: EntrySize: 24 // CHECK-NEXT: Relocations [ diff --git a/test/MC/ELF/cfi-remember.s b/test/MC/ELF/cfi-remember.s index 3a38948b6a3e..ae112f59ebef 100644 --- a/test/MC/ELF/cfi-remember.s +++ b/test/MC/ELF/cfi-remember.s @@ -10,8 +10,8 @@ f: .cfi_endproc // CHECK: Section { -// CHECK: Index: 4 -// CHECK-NEXT: Name: .eh_frame +// CHECK: Index: +// CHECK: Name: .eh_frame // CHECK-NEXT: Type: SHT_PROGBITS // CHECK-NEXT: Flags [ // CHECK-NEXT: SHF_ALLOC @@ -26,22 +26,22 @@ f: // CHECK-NEXT: Relocations [ // CHECK-NEXT: ] // CHECK-NEXT: SectionData ( -// CHECK-NEXT: 0000: 14000000 00000000 037A5200 01781001 +// CHECK-NEXT: 0000: 14000000 00000000 017A5200 01781001 // CHECK-NEXT: 0010: 1B0C0708 90010000 14000000 1C000000 // CHECK-NEXT: 0020: 00000000 03000000 00410A41 0B000000 // CHECK-NEXT: ) // CHECK-NEXT: } // CHECK: Section { -// CHECK: Index: 5 +// CHECK: Index: // CHECK-NEXT: Name: .rela.eh_frame // CHECK-NEXT: Type: SHT_RELA // CHECK-NEXT: Flags [ // CHECK-NEXT: ] // CHECK-NEXT: Address: 0x0 -// CHECK-NEXT: Offset: 0x390 +// CHECK-NEXT: Offset: // CHECK-NEXT: Size: 24 -// CHECK-NEXT: Link: 7 -// CHECK-NEXT: Info: 4 +// CHECK-NEXT: Link: +// CHECK-NEXT: Info: // CHECK-NEXT: AddressAlignment: 8 // CHECK-NEXT: EntrySize: 24 // CHECK-NEXT: Relocations [ diff --git a/test/MC/ELF/cfi-restore.s b/test/MC/ELF/cfi-restore.s index e225797f54d6..2bc87cf691a1 100644 --- a/test/MC/ELF/cfi-restore.s +++ b/test/MC/ELF/cfi-restore.s @@ -8,8 +8,8 @@ f: .cfi_endproc // CHECK: Section { -// CHECK: Index: 4 -// CHECK-NEXT: Name: .eh_frame +// CHECK: Index: +// CHECK: Name: .eh_frame // CHECK-NEXT: Type: SHT_PROGBITS // CHECK-NEXT: Flags [ // CHECK-NEXT: SHF_ALLOC @@ -24,22 +24,22 @@ f: // CHECK-NEXT: Relocations [ // CHECK-NEXT: ] // CHECK-NEXT: SectionData ( -// CHECK-NEXT: 0000: 14000000 00000000 037A5200 01781001 +// CHECK-NEXT: 0000: 14000000 00000000 017A5200 01781001 // CHECK-NEXT: 0010: 1B0C0708 90010000 14000000 1C000000 // CHECK-NEXT: 0020: 00000000 02000000 0041C600 00000000 // CHECK-NEXT: ) // CHECK-NEXT: } // CHECK-NEXT: Section { -// CHECK-NEXT: Index: 5 +// CHECK-NEXT: Index: // CHECK-NEXT: Name: .rela.eh_frame // CHECK-NEXT: Type: SHT_RELA // CHECK-NEXT: Flags [ // CHECK-NEXT: ] // CHECK-NEXT: Address: 0x0 -// CHECK-NEXT: Offset: 0x390 +// CHECK-NEXT: Offset: // CHECK-NEXT: Size: 24 -// CHECK-NEXT: Link: 7 -// CHECK-NEXT: Info: 4 +// CHECK-NEXT: Link: +// CHECK-NEXT: Info: // CHECK-NEXT: AddressAlignment: 8 // CHECK-NEXT: EntrySize: 24 // CHECK-NEXT: Relocations [ diff --git a/test/MC/ELF/cfi-same-value.s b/test/MC/ELF/cfi-same-value.s index 2d37f4d0b43e..7df4cbbb6dd1 100644 --- a/test/MC/ELF/cfi-same-value.s +++ b/test/MC/ELF/cfi-same-value.s @@ -8,8 +8,8 @@ f: .cfi_endproc // CHECK: Section { -// CHECK: Index: 4 -// CHECK-NEXT: Name: .eh_frame +// CHECK: Index: +// CHECK: Name: .eh_frame // CHECK-NEXT: Type: SHT_PROGBITS // CHECK-NEXT: Flags [ // CHECK-NEXT: SHF_ALLOC @@ -24,22 +24,22 @@ f: // CHECK-NEXT: Relocations [ // CHECK-NEXT: ] // CHECK-NEXT: SectionData ( -// CHECK-NEXT: 0000: 14000000 00000000 037A5200 01781001 +// CHECK-NEXT: 0000: 14000000 00000000 017A5200 01781001 // CHECK-NEXT: 0010: 1B0C0708 90010000 14000000 1C000000 // CHECK-NEXT: 0020: 00000000 02000000 00410806 00000000 // CHECK-NEXT: ) // CHECK-NEXT: } // CHECK-NEXT: Section { -// CHECK-NEXT: Index: 5 +// CHECK-NEXT: Index: // CHECK-NEXT: Name: .rela.eh_frame // CHECK-NEXT: Type: SHT_RELA // CHECK-NEXT: Flags [ // CHECK-NEXT: ] // CHECK-NEXT: Address: 0x0 -// CHECK-NEXT: Offset: 0x390 +// CHECK-NEXT: Offset: // CHECK-NEXT: Size: 24 -// CHECK-NEXT: Link: 7 -// CHECK-NEXT: Info: 4 +// CHECK-NEXT: Link: +// CHECK-NEXT: Info: // CHECK-NEXT: AddressAlignment: 8 // CHECK-NEXT: EntrySize: 24 // CHECK-NEXT: Relocations [ diff --git a/test/MC/ELF/cfi-sections.s b/test/MC/ELF/cfi-sections.s index b0ba543e5bdb..830fe260ec2c 100644 --- a/test/MC/ELF/cfi-sections.s +++ b/test/MC/ELF/cfi-sections.s @@ -1,5 +1,11 @@ -// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sd | FileCheck -check-prefix=ELF_64 %s -// RUN: llvm-mc -filetype=obj -triple i686-pc-linux-gnu %s -o - | llvm-readobj -s -sd | FileCheck -check-prefix=ELF_32 %s +// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu -dwarf-version 2 %s -o - | llvm-readobj -s -sd | FileCheck -check-prefix=ELF_64 -check-prefix=ELF_64_DWARF_2 %s +// RUN: llvm-mc -filetype=obj -triple i686-pc-linux-gnu -dwarf-version 2 %s -o - | llvm-readobj -s -sd | FileCheck -check-prefix=ELF_32 -check-prefix=ELF_32_DWARF_2 %s + +// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu -dwarf-version 3 %s -o - | llvm-readobj -s -sd | FileCheck -check-prefix=ELF_64 -check-prefix=ELF_64_DWARF_3 %s +// RUN: llvm-mc -filetype=obj -triple i686-pc-linux-gnu -dwarf-version 3 %s -o - | llvm-readobj -s -sd | FileCheck -check-prefix=ELF_32 -check-prefix=ELF_32_DWARF_3 %s + +// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu -dwarf-version 4 %s -o - | llvm-readobj -s -sd | FileCheck -check-prefix=ELF_64 -check-prefix=ELF_64_DWARF_4 %s +// RUN: llvm-mc -filetype=obj -triple i686-pc-linux-gnu -dwarf-version 4 %s -o - | llvm-readobj -s -sd | FileCheck -check-prefix=ELF_32 -check-prefix=ELF_32_DWARF_4 %s .cfi_sections .debug_frame @@ -26,8 +32,12 @@ f2: // ELF_64-NEXT: AddressAlignment: 8 // ELF_64-NEXT: EntrySize: 0 // ELF_64-NEXT: SectionData ( -// ELF_64-NEXT: 0000: 14000000 FFFFFFFF 03000178 100C0708 -// ELF_64-NEXT: 0010: 90010000 00000000 14000000 00000000 +// ELF_64_DWARF_2-NEXT: 0000: 14000000 FFFFFFFF 01000178 100C0708 +// ELF_64_DWARF_2-NEXT: 0010: 90010000 00000000 14000000 00000000 +// ELF_64_DWARF_3-NEXT: 0000: 14000000 FFFFFFFF 03000178 100C0708 +// ELF_64_DWARF_3-NEXT: 0010: 90010000 00000000 14000000 00000000 +// ELF_64_DWARF_4-NEXT: 0000: 14000000 FFFFFFFF 04000800 0178100C +// ELF_64_DWARF_4-NEXT: 0010: 07089001 00000000 14000000 00000000 // ELF_64-NEXT: 0020: 00000000 00000000 01000000 00000000 // ELF_64-NEXT: 0030: 14000000 00000000 00000000 00000000 // ELF_64-NEXT: 0040: 01000000 00000000 @@ -47,9 +57,14 @@ f2: // ELF_32-NEXT: AddressAlignment: 4 // ELF_32-NEXT: EntrySize: 0 // ELF_32-NEXT: SectionData ( -// ELF_32-NEXT: 0000: 10000000 FFFFFFFF 0300017C 080C0404 -// ELF_32-NEXT: 0010: 88010000 0C000000 00000000 00000000 +// ELF_32_DWARF_2-NEXT: 0000: 10000000 FFFFFFFF 0100017C 080C0404 +// ELF_32_DWARF_2-NEXT: 0010: 88010000 0C000000 00000000 00000000 +// ELF_32_DWARF_3-NEXT: 0000: 10000000 FFFFFFFF 0300017C 080C0404 +// ELF_32_DWARF_3-NEXT: 0010: 88010000 0C000000 00000000 00000000 +// ELF_32_DWARF_4-NEXT: 0000: 10000000 FFFFFFFF 04000400 017C080C +// ELF_32_DWARF_4-NEXT: 0010: 04048801 0C000000 00000000 00000000 // ELF_32-NEXT: 0020: 01000000 0C000000 00000000 01000000 // ELF_32-NEXT: 0030: 01000000 + // ELF_32-NEXT: ) // ELF_32-NEXT: } diff --git a/test/MC/ELF/cfi-signal-frame.s b/test/MC/ELF/cfi-signal-frame.s index 98deb0a1de5c..023311962189 100644 --- a/test/MC/ELF/cfi-signal-frame.s +++ b/test/MC/ELF/cfi-signal-frame.s @@ -23,10 +23,10 @@ g: // CHECK-NEXT: AddressAlignment: 8 // CHECK-NEXT: EntrySize: 0 // CHECK-NEXT: SectionData ( -// CHECK-NEXT: 0000: 14000000 00000000 037A5253 00017810 +// CHECK-NEXT: 0000: 14000000 00000000 017A5253 00017810 // CHECK-NEXT: 0010: 011B0C07 08900100 10000000 1C000000 // CHECK-NEXT: 0020: 00000000 00000000 00000000 14000000 -// CHECK-NEXT: 0030: 00000000 037A5200 01781001 1B0C0708 +// CHECK-NEXT: 0030: 00000000 017A5200 01781001 1B0C0708 // CHECK-NEXT: 0040: 90010000 10000000 1C000000 00000000 // CHECK-NEXT: 0050: 00000000 00000000 // CHECK-NEXT: ) diff --git a/test/MC/ELF/cfi-undefined.s b/test/MC/ELF/cfi-undefined.s index 568b3159cc44..9a7012310ade 100644 --- a/test/MC/ELF/cfi-undefined.s +++ b/test/MC/ELF/cfi-undefined.s @@ -8,8 +8,8 @@ f: .cfi_endproc // CHECK: Section { -// CHECK: Index: 4 -// CHECK-NEXT: Name: .eh_frame +// CHECK: Index: +// CHECK: Name: .eh_frame // CHECK-NEXT: Type: SHT_PROGBITS // CHECK-NEXT: Flags [ // CHECK-NEXT: SHF_ALLOC @@ -24,22 +24,22 @@ f: // CHECK-NEXT: Relocations [ // CHECK-NEXT: ] // CHECK-NEXT: SectionData ( -// CHECK-NEXT: 0000: 14000000 00000000 037A5200 01781001 +// CHECK-NEXT: 0000: 14000000 00000000 017A5200 01781001 // CHECK-NEXT: 0010: 1B0C0708 90010000 14000000 1C000000 // CHECK-NEXT: 0020: 00000000 02000000 00410706 00000000 // CHECK-NEXT: ) // CHECK-NEXT: } // CHECK-NEXT: Section { -// CHECK-NEXT: Index: 5 +// CHECK-NEXT: Index: // CHECK-NEXT: Name: .rela.eh_frame // CHECK-NEXT: Type: SHT_RELA // CHECK-NEXT: Flags [ // CHECK-NEXT: ] // CHECK-NEXT: Address: 0x0 -// CHECK-NEXT: Offset: 0x390 +// CHECK-NEXT: Offset: // CHECK-NEXT: Size: 24 -// CHECK-NEXT: Link: 7 -// CHECK-NEXT: Info: 4 +// CHECK-NEXT: Link: +// CHECK-NEXT: Info: // CHECK-NEXT: AddressAlignment: 8 // CHECK-NEXT: EntrySize: 24 // CHECK-NEXT: Relocations [ diff --git a/test/MC/ELF/cfi-version.ll b/test/MC/ELF/cfi-version.ll index c8a9978d7292..9ea7be4a42b5 100644 --- a/test/MC/ELF/cfi-version.ll +++ b/test/MC/ELF/cfi-version.ll @@ -1,6 +1,6 @@ ; RUN: %llc_dwarf %s -o - -dwarf-version 2 -filetype=obj | llvm-dwarfdump - | FileCheck %s --check-prefix=DWARF2 -; RUN: %llc_dwarf %s -o - -dwarf-version 3 -filetype=obj | llvm-dwarfdump - | FileCheck %s --check-prefix=DWARF34 -; RUN: %llc_dwarf %s -o - -dwarf-version 4 -filetype=obj | llvm-dwarfdump - | FileCheck %s --check-prefix=DWARF34 +; RUN: %llc_dwarf %s -o - -dwarf-version 3 -filetype=obj | llvm-dwarfdump - | FileCheck %s --check-prefix=DWARF3 +; RUN: %llc_dwarf %s -o - -dwarf-version 4 -filetype=obj | llvm-dwarfdump - | FileCheck %s --check-prefix=DWARF4 ; .debug_frame is not emitted for targeting Windows x64. ; REQUIRES: debug_frame @@ -22,24 +22,34 @@ attributes #1 = { "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "n !llvm.module.flags = !{!9, !10} !llvm.ident = !{!11} -!0 = !{!"0x11\0012\00clang version 3.5.0 \000\00\000\00\001", !1, !2, !2, !3, !2, !2} ; [ DW_TAG_compile_unit ] [/tmp/test.c] [DW_LANG_C99] -!1 = !{!"test.c", !"/tmp"} +!0 = !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.5.0 ", isOptimized: false, emissionKind: 1, file: !1, enums: !2, retainedTypes: !2, subprograms: !3, globals: !2, imports: !2) +!1 = !DIFile(filename: "test.c", directory: "/tmp") !2 = !{} !3 = !{!4} -!4 = !{!"0x2e\00foo\00foo\00\002\000\001\000\006\00256\000\002", !1, !5, !6, null, i32 ()* @foo, null, null, !2} ; [ DW_TAG_subprogram ] [line 2] [def] [foo] -!5 = !{!"0x29", !1} ; [ DW_TAG_file_type ] [/tmp/test.c] -!6 = !{!"0x15\00\000\000\000\000\000\000", i32 0, null, null, !7, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ] +!4 = !DISubprogram(name: "foo", line: 2, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 2, file: !1, scope: !5, type: !6, function: i32 ()* @foo, variables: !2) +!5 = !DIFile(filename: "test.c", directory: "/tmp") +!6 = !DISubroutineType(types: !7) !7 = !{!8} -!8 = !{!"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] +!8 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed) !9 = !{i32 2, !"Dwarf Version", i32 4} -!10 = !{i32 1, !"Debug Info Version", i32 2} +!10 = !{i32 1, !"Debug Info Version", i32 3} !11 = !{!"clang version 3.5.0 "} -!12 = !MDLocation(line: 2, scope: !4) +!12 = !DILocation(line: 2, scope: !4) ; DWARF2: .debug_frame contents: ; DWARF2: Version: 1 ; DWARF2-NEXT: Augmentation: - -; DWARF34: .debug_frame contents: -; DWARF34: Version: 3 -; DWARF34-NEXT: Augmentation: +; DWARF2-NOT: Address size: +; DWARF2-NOT: Segment desc size: + +; DWARF3: .debug_frame contents: +; DWARF3: Version: 3 +; DWARF3-NEXT: Augmentation: +; DWARF3-NOT: Address size: +; DWARF3-NOT: Segment desc size: + +; DWARF4: .debug_frame contents: +; DWARF4: Version: 4 +; DWARF4-NEXT: Augmentation: +; DWARF4: Address size: +; DWARF4: Segment desc size: diff --git a/test/MC/ELF/cfi-window-save.s b/test/MC/ELF/cfi-window-save.s index b083901c137a..fb38ecd85608 100644 --- a/test/MC/ELF/cfi-window-save.s +++ b/test/MC/ELF/cfi-window-save.s @@ -26,7 +26,7 @@ f: // CHECK-NEXT: Relocations [ // CHECK-NEXT: ] // CHECK-NEXT: SectionData ( -// CHECK-NEXT: 0000: 14000000 00000000 037A5200 01781001 +// CHECK-NEXT: 0000: 14000000 00000000 017A5200 01781001 // CHECK-NEXT: 0010: 1B0C0708 90010000 14000000 1C000000 // CHECK-NEXT: 0020: 00000000 02000000 00412D00 00000000 // CHECK-NEXT: ) @@ -38,10 +38,10 @@ f: // CHECK-NEXT: Flags [ // CHECK-NEXT: ] // CHECK-NEXT: Address: 0x0 -// CHECK-NEXT: Offset: 0x390 +// CHECK-NEXT: Offset: // CHECK-NEXT: Size: 24 -// CHECK-NEXT: Link: 7 -// CHECK-NEXT: Info: 4 +// CHECK-NEXT: Link: +// CHECK-NEXT: Info: // CHECK-NEXT: AddressAlignment: 8 // CHECK-NEXT: EntrySize: 24 // CHECK-NEXT: Relocations [ diff --git a/test/MC/ELF/cfi-zero-addr-delta.s b/test/MC/ELF/cfi-zero-addr-delta.s index 8662839b5274..1e5c5e7e5680 100644 --- a/test/MC/ELF/cfi-zero-addr-delta.s +++ b/test/MC/ELF/cfi-zero-addr-delta.s @@ -30,7 +30,7 @@ f: // CHECK-NEXT: Relocations [ // CHECK-NEXT: ] // CHECK-NEXT: SectionData ( -// CHECK-NEXT: 0000: 14000000 00000000 037A5200 01781001 +// CHECK-NEXT: 0000: 14000000 00000000 017A5200 01781001 // CHECK-NEXT: 0010: 1B0C0708 90010000 1C000000 1C000000 // CHECK-NEXT: 0020: 00000000 04000000 00410E10 410A0E08 // CHECK-NEXT: 0030: 410B0000 00000000 @@ -43,10 +43,10 @@ f: // CHECK-NEXT: Flags [ // CHECK-NEXT: ] // CHECK-NEXT: Address: 0x0 -// CHECK-NEXT: Offset: 0x398 +// CHECK-NEXT: Offset: // CHECK-NEXT: Size: 24 -// CHECK-NEXT: Link: 7 -// CHECK-NEXT: Info: 4 +// CHECK-NEXT: Link: +// CHECK-NEXT: Info: // CHECK-NEXT: AddressAlignment: 8 // CHECK-NEXT: EntrySize: 24 // CHECK-NEXT: Relocations [ diff --git a/test/MC/ELF/cfi.s b/test/MC/ELF/cfi.s index 21be615c5f39..10587e030521 100644 --- a/test/MC/ELF/cfi.s +++ b/test/MC/ELF/cfi.s @@ -218,8 +218,8 @@ f37: .cfi_endproc // CHECK: Section { -// CHECK: Index: 4 -// CHECK-NEXT: Name: .eh_frame +// CHECK: Index: +// CHECK: Name: .eh_frame // CHECK-NEXT: Type: SHT_PROGBITS // CHECK-NEXT: Flags [ // CHECK-NEXT: SHF_ALLOC @@ -234,131 +234,131 @@ f37: // CHECK-NEXT: Relocations [ // CHECK-NEXT: ] // CHECK-NEXT: SectionData ( -// CHECK-NEXT: 0000: 14000000 00000000 037A4C52 00017810 +// CHECK-NEXT: 0000: 14000000 00000000 017A4C52 00017810 // CHECK-NEXT: 0010: 02031B0C 07089001 14000000 1C000000 // CHECK-NEXT: 0020: 00000000 01000000 04000000 00000000 -// CHECK-NEXT: 0030: 20000000 00000000 037A504C 52000178 +// CHECK-NEXT: 0030: 20000000 00000000 017A504C 52000178 // CHECK-NEXT: 0040: 100B0000 00000000 00000003 1B0C0708 // CHECK-NEXT: 0050: 90010000 14000000 28000000 00000000 // CHECK-NEXT: 0060: 01000000 04000000 00000000 14000000 // CHECK-NEXT: 0070: 70000000 00000000 01000000 04000000 -// CHECK-NEXT: 0080: 00000000 20000000 00000000 037A504C +// CHECK-NEXT: 0080: 00000000 20000000 00000000 017A504C // CHECK-NEXT: 0090: 52000178 100B0000 00000000 00000002 // CHECK-NEXT: 00A0: 1B0C0708 90010000 10000000 28000000 // CHECK-NEXT: 00B0: 00000000 01000000 02000000 18000000 -// CHECK-NEXT: 00C0: 00000000 037A5052 00017810 04020000 +// CHECK-NEXT: 00C0: 00000000 017A5052 00017810 04020000 // CHECK-NEXT: 00D0: 1B0C0708 90010000 10000000 20000000 // CHECK-NEXT: 00E0: 00000000 01000000 00000000 18000000 -// CHECK-NEXT: 00F0: 00000000 037A5052 00017810 06030000 +// CHECK-NEXT: 00F0: 00000000 017A5052 00017810 06030000 // CHECK-NEXT: 0100: 00001B0C 07089001 10000000 20000000 // CHECK-NEXT: 0110: 00000000 01000000 00000000 1C000000 -// CHECK-NEXT: 0120: 00000000 037A5052 00017810 0A040000 +// CHECK-NEXT: 0120: 00000000 017A5052 00017810 0A040000 // CHECK-NEXT: 0130: 00000000 00001B0C 07089001 10000000 // CHECK-NEXT: 0140: 24000000 00000000 01000000 00000000 -// CHECK-NEXT: 0150: 18000000 00000000 037A5052 00017810 +// CHECK-NEXT: 0150: 18000000 00000000 017A5052 00017810 // CHECK-NEXT: 0160: 040A0000 1B0C0708 90010000 10000000 // CHECK-NEXT: 0170: 20000000 00000000 01000000 00000000 -// CHECK-NEXT: 0180: 18000000 00000000 037A5052 00017810 +// CHECK-NEXT: 0180: 18000000 00000000 017A5052 00017810 // CHECK-NEXT: 0190: 060B0000 00001B0C 07089001 10000000 // CHECK-NEXT: 01A0: 20000000 00000000 01000000 00000000 -// CHECK-NEXT: 01B0: 1C000000 00000000 037A5052 00017810 +// CHECK-NEXT: 01B0: 1C000000 00000000 017A5052 00017810 // CHECK-NEXT: 01C0: 0A0C0000 00000000 00001B0C 07089001 // CHECK-NEXT: 01D0: 10000000 24000000 00000000 01000000 -// CHECK-NEXT: 01E0: 00000000 1C000000 00000000 037A5052 +// CHECK-NEXT: 01E0: 00000000 1C000000 00000000 017A5052 // CHECK-NEXT: 01F0: 00017810 0A080000 00000000 00001B0C // CHECK-NEXT: 0200: 07089001 10000000 24000000 00000000 // CHECK-NEXT: 0210: 01000000 00000000 1C000000 00000000 -// CHECK-NEXT: 0220: 037A5052 00017810 0A100000 00000000 +// CHECK-NEXT: 0220: 017A5052 00017810 0A100000 00000000 // CHECK-NEXT: 0230: 00001B0C 07089001 10000000 24000000 // CHECK-NEXT: 0240: 00000000 01000000 00000000 18000000 -// CHECK-NEXT: 0250: 00000000 037A5052 00017810 04120000 +// CHECK-NEXT: 0250: 00000000 017A5052 00017810 04120000 // CHECK-NEXT: 0260: 1B0C0708 90010000 10000000 20000000 // CHECK-NEXT: 0270: 00000000 01000000 00000000 18000000 -// CHECK-NEXT: 0280: 00000000 037A5052 00017810 06130000 +// CHECK-NEXT: 0280: 00000000 017A5052 00017810 06130000 // CHECK-NEXT: 0290: 00001B0C 07089001 10000000 20000000 // CHECK-NEXT: 02A0: 00000000 01000000 00000000 1C000000 -// CHECK-NEXT: 02B0: 00000000 037A5052 00017810 0A140000 +// CHECK-NEXT: 02B0: 00000000 017A5052 00017810 0A140000 // CHECK-NEXT: 02C0: 00000000 00001B0C 07089001 10000000 // CHECK-NEXT: 02D0: 24000000 00000000 01000000 00000000 -// CHECK-NEXT: 02E0: 18000000 00000000 037A5052 00017810 +// CHECK-NEXT: 02E0: 18000000 00000000 017A5052 00017810 // CHECK-NEXT: 02F0: 041A0000 1B0C0708 90010000 10000000 // CHECK-NEXT: 0300: 20000000 00000000 01000000 00000000 -// CHECK-NEXT: 0310: 18000000 00000000 037A5052 00017810 +// CHECK-NEXT: 0310: 18000000 00000000 017A5052 00017810 // CHECK-NEXT: 0320: 061B0000 00001B0C 07089001 10000000 // CHECK-NEXT: 0330: 20000000 00000000 01000000 00000000 -// CHECK-NEXT: 0340: 1C000000 00000000 037A5052 00017810 +// CHECK-NEXT: 0340: 1C000000 00000000 017A5052 00017810 // CHECK-NEXT: 0350: 0A1C0000 00000000 00001B0C 07089001 // CHECK-NEXT: 0360: 10000000 24000000 00000000 01000000 -// CHECK-NEXT: 0370: 00000000 1C000000 00000000 037A5052 +// CHECK-NEXT: 0370: 00000000 1C000000 00000000 017A5052 // CHECK-NEXT: 0380: 00017810 0A180000 00000000 00001B0C // CHECK-NEXT: 0390: 07089001 10000000 24000000 00000000 // CHECK-NEXT: 03A0: 01000000 00000000 1C000000 00000000 -// CHECK-NEXT: 03B0: 037A5052 00017810 0A800000 00000000 +// CHECK-NEXT: 03B0: 017A5052 00017810 0A800000 00000000 // CHECK-NEXT: 03C0: 00001B0C 07089001 10000000 24000000 // CHECK-NEXT: 03D0: 00000000 01000000 00000000 18000000 -// CHECK-NEXT: 03E0: 00000000 037A5052 00017810 04820000 +// CHECK-NEXT: 03E0: 00000000 017A5052 00017810 04820000 // CHECK-NEXT: 03F0: 1B0C0708 90010000 10000000 20000000 // CHECK-NEXT: 0400: 00000000 01000000 00000000 18000000 -// CHECK-NEXT: 0410: 00000000 037A5052 00017810 06830000 +// CHECK-NEXT: 0410: 00000000 017A5052 00017810 06830000 // CHECK-NEXT: 0420: 00001B0C 07089001 10000000 20000000 // CHECK-NEXT: 0430: 00000000 01000000 00000000 1C000000 -// CHECK-NEXT: 0440: 00000000 037A5052 00017810 0A840000 +// CHECK-NEXT: 0440: 00000000 017A5052 00017810 0A840000 // CHECK-NEXT: 0450: 00000000 00001B0C 07089001 10000000 // CHECK-NEXT: 0460: 24000000 00000000 01000000 00000000 -// CHECK-NEXT: 0470: 18000000 00000000 037A5052 00017810 +// CHECK-NEXT: 0470: 18000000 00000000 017A5052 00017810 // CHECK-NEXT: 0480: 048A0000 1B0C0708 90010000 10000000 // CHECK-NEXT: 0490: 20000000 00000000 01000000 00000000 -// CHECK-NEXT: 04A0: 18000000 00000000 037A5052 00017810 +// CHECK-NEXT: 04A0: 18000000 00000000 017A5052 00017810 // CHECK-NEXT: 04B0: 068B0000 00001B0C 07089001 10000000 // CHECK-NEXT: 04C0: 20000000 00000000 01000000 00000000 -// CHECK-NEXT: 04D0: 1C000000 00000000 037A5052 00017810 +// CHECK-NEXT: 04D0: 1C000000 00000000 017A5052 00017810 // CHECK-NEXT: 04E0: 0A8C0000 00000000 00001B0C 07089001 // CHECK-NEXT: 04F0: 10000000 24000000 00000000 01000000 -// CHECK-NEXT: 0500: 00000000 1C000000 00000000 037A5052 +// CHECK-NEXT: 0500: 00000000 1C000000 00000000 017A5052 // CHECK-NEXT: 0510: 00017810 0A880000 00000000 00001B0C // CHECK-NEXT: 0520: 07089001 10000000 24000000 00000000 // CHECK-NEXT: 0530: 01000000 00000000 1C000000 00000000 -// CHECK-NEXT: 0540: 037A5052 00017810 0A900000 00000000 +// CHECK-NEXT: 0540: 017A5052 00017810 0A900000 00000000 // CHECK-NEXT: 0550: 00001B0C 07089001 10000000 24000000 // CHECK-NEXT: 0560: 00000000 01000000 00000000 18000000 -// CHECK-NEXT: 0570: 00000000 037A5052 00017810 04920000 +// CHECK-NEXT: 0570: 00000000 017A5052 00017810 04920000 // CHECK-NEXT: 0580: 1B0C0708 90010000 10000000 20000000 // CHECK-NEXT: 0590: 00000000 01000000 00000000 18000000 -// CHECK-NEXT: 05A0: 00000000 037A5052 00017810 06930000 +// CHECK-NEXT: 05A0: 00000000 017A5052 00017810 06930000 // CHECK-NEXT: 05B0: 00001B0C 07089001 10000000 20000000 // CHECK-NEXT: 05C0: 00000000 01000000 00000000 1C000000 -// CHECK-NEXT: 05D0: 00000000 037A5052 00017810 0A940000 +// CHECK-NEXT: 05D0: 00000000 017A5052 00017810 0A940000 // CHECK-NEXT: 05E0: 00000000 00001B0C 07089001 10000000 // CHECK-NEXT: 05F0: 24000000 00000000 01000000 00000000 -// CHECK-NEXT: 0600: 18000000 00000000 037A5052 00017810 +// CHECK-NEXT: 0600: 18000000 00000000 017A5052 00017810 // CHECK-NEXT: 0610: 049A0000 1B0C0708 90010000 10000000 // CHECK-NEXT: 0620: 20000000 00000000 01000000 00000000 -// CHECK-NEXT: 0630: 18000000 00000000 037A5052 00017810 +// CHECK-NEXT: 0630: 18000000 00000000 017A5052 00017810 // CHECK-NEXT: 0640: 069B0000 00001B0C 07089001 10000000 // CHECK-NEXT: 0650: 20000000 00000000 01000000 00000000 -// CHECK-NEXT: 0660: 1C000000 00000000 037A5052 00017810 +// CHECK-NEXT: 0660: 1C000000 00000000 017A5052 00017810 // CHECK-NEXT: 0670: 0A9C0000 00000000 00001B0C 07089001 // CHECK-NEXT: 0680: 10000000 24000000 00000000 01000000 -// CHECK-NEXT: 0690: 00000000 1C000000 00000000 037A5052 +// CHECK-NEXT: 0690: 00000000 1C000000 00000000 017A5052 // CHECK-NEXT: 06A0: 00017810 0A980000 00000000 00001B0C // CHECK-NEXT: 06B0: 07089001 10000000 24000000 00000000 // CHECK-NEXT: 06C0: 01000000 00000000 10000000 00000000 -// CHECK-NEXT: 06D0: 037A5200 01781001 1B000000 10000000 +// CHECK-NEXT: 06D0: 017A5200 01781001 1B000000 10000000 // CHECK-NEXT: 06E0: 18000000 00000000 01000000 00000000 // CHECK-NEXT: ) // CHECK-NEXT: } // CHECK: Section { -// CHECK: Index: 5 -// CHECK-NEXT: Name: .rela.eh_frame +// CHECK: Index: +// CHECK: Name: .rela.eh_frame // CHECK-NEXT: Type: SHT_RELA // CHECK-NEXT: Flags [ // CHECK-NEXT: ] // CHECK-NEXT: Address: 0x0 -// CHECK-NEXT: Offset: 0xE70 +// CHECK-NEXT: Offset: // CHECK-NEXT: Size: 1752 -// CHECK-NEXT: Link: 7 -// CHECK-NEXT: Info: 4 +// CHECK-NEXT: Link: +// CHECK-NEXT: Info: // CHECK-NEXT: AddressAlignment: 8 // CHECK-NEXT: EntrySize: 24 // CHECK-NEXT: Relocations [ diff --git a/test/MC/ELF/comdat-dup-group-name.s b/test/MC/ELF/comdat-dup-group-name.s index 1181e2eab02a..a2dc4cc33d98 100644 --- a/test/MC/ELF/comdat-dup-group-name.s +++ b/test/MC/ELF/comdat-dup-group-name.s @@ -2,27 +2,27 @@ // Test that we produce two foo sections, each in separate groups -// CHECK: Index: 1 -// CHECK-NEXT: Name: .group - -// CHECK: Index: 2 +// CHECK: Index: 5 // CHECK-NEXT: Name: .group // CHECK: Index: 6 // CHECK-NEXT: Name: .foo // CHECK: Index: 7 +// CHECK-NEXT: Name: .group + +// CHECK: Index: 8 // CHECK-NEXT: Name: .foo // CHECK: Symbols [ // CHECK: Name: f1 // CHECK-NOT: } -// CHECK: Section: .group (0x1) +// CHECK: Section: .group (0x5) // CHECK: Name: f2 // CHECK-NOT: } -// CHECK: Section: .group (0x2) +// CHECK: Section: .group (0x7) // CHECK: Name: .foo // CHECK-NOT: } @@ -30,7 +30,7 @@ // CHECK: Name: .foo // CHECK-NOT: } -// CHECK: Section: .foo (0x7) +// CHECK: Section: .foo (0x8) .section .foo,"axG",@progbits,f1,comdat diff --git a/test/MC/ELF/comdat-reloc.s b/test/MC/ELF/comdat-reloc.s index d893a7b149ef..1ea3d1e57efa 100644 --- a/test/MC/ELF/comdat-reloc.s +++ b/test/MC/ELF/comdat-reloc.s @@ -16,14 +16,14 @@ world: // CHECK: Name: .group // CHECK-NOT: SectionData // CHECK: SectionData -// CHECK-NEXT: 0000: 01000000 06000000 07000000 +// CHECK-NEXT: 0000: 01000000 07000000 08000000 -// CHECK: Index: 6 +// CHECK: Index: 7 // CHECK-NEXT: Name: .text.world // CHECK-NOT: Section { // CHECK: SHF_GROUP -// CHECK: Index: 7 +// CHECK: Index: 8 // CHECK-NEXT: Name: .rela.text.world // CHECK-NOT: Section { // CHECK: SHF_GROUP diff --git a/test/MC/ELF/comdat.s b/test/MC/ELF/comdat.s index 479667552204..e71dea089c4d 100644 --- a/test/MC/ELF/comdat.s +++ b/test/MC/ELF/comdat.s @@ -1,49 +1,57 @@ -// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -t | FileCheck %s +// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -t -sd | FileCheck %s -// Test that we produce the group sections and that they are at the beginning -// of the file. +// Test that we produce the group sections and that they are before the members // CHECK: Section { -// CHECK: Index: 1 +// CHECK: Index: 5 // CHECK-NEXT: Name: .group // CHECK-NEXT: Type: SHT_GROUP // CHECK-NEXT: Flags [ // CHECK-NEXT: ] // CHECK-NEXT: Address: 0x0 -// CHECK-NEXT: Offset: 0x40 +// CHECK-NEXT: Offset: // CHECK-NEXT: Size: 12 -// CHECK-NEXT: Link: 13 +// CHECK-NEXT: Link: // CHECK-NEXT: Info: 1 // CHECK-NEXT: AddressAlignment: 4 // CHECK-NEXT: EntrySize: 4 +// CHECK-NEXT: SectionData ( +// CHECK-NEXT: 0000: 01000000 06000000 07000000 +// CHECK-NEXT: ) // CHECK-NEXT: } -// CHECK-NEXT: Section { -// CHECK-NEXT: Index: 2 +// CHECK: Section { +// CHECK: Index: 8 // CHECK-NEXT: Name: .group // CHECK-NEXT: Type: SHT_GROUP // CHECK-NEXT: Flags [ // CHECK-NEXT: ] // CHECK-NEXT: Address: 0x0 -// CHECK-NEXT: Offset: 0x4C +// CHECK-NEXT: Offset: // CHECK-NEXT: Size: 8 -// CHECK-NEXT: Link: 13 +// CHECK-NEXT: Link: // CHECK-NEXT: Info: 2 // CHECK-NEXT: AddressAlignment: 4 // CHECK-NEXT: EntrySize: 4 +// CHECK-NEXT: SectionData ( +// CHECK-NEXT: 0000: 01000000 09000000 +// CHECK-NEXT: ) // CHECK-NEXT: } -// CHECK-NEXT: Section { -// CHECK-NEXT: Index: 3 +// CHECK: Section { +// CHECK: Index: 10 // CHECK-NEXT: Name: .group // CHECK-NEXT: Type: SHT_GROUP // CHECK-NEXT: Flags [ // CHECK-NEXT: ] // CHECK-NEXT: Address: 0x0 -// CHECK-NEXT: Offset: 0x54 +// CHECK-NEXT: Offset: // CHECK-NEXT: Size: 12 -// CHECK-NEXT: Link: 13 +// CHECK-NEXT: Link: // CHECK-NEXT: Info: 10 // CHECK-NEXT: AddressAlignment: 4 // CHECK-NEXT: EntrySize: 4 +// CHECK-NEXT: SectionData ( +// CHECK-NEXT: 0000: 01000000 0B000000 0C000000 +// CHECK-NEXT: ) // CHECK-NEXT: } // Test that g1 and g2 are local, but g3 is an undefined global. @@ -55,7 +63,7 @@ // CHECK-NEXT: Binding: Local // CHECK-NEXT: Type: None // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .foo (0x7) +// CHECK-NEXT: Section: .foo // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: g2 @@ -64,7 +72,7 @@ // CHECK-NEXT: Binding: Local // CHECK-NEXT: Type: None // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .group (0x2) +// CHECK-NEXT: Section: .group (0x8) // CHECK-NEXT: } // CHECK: Symbol { diff --git a/test/MC/ELF/common-error1.s b/test/MC/ELF/common-error1.s new file mode 100644 index 000000000000..a413885b0165 --- /dev/null +++ b/test/MC/ELF/common-error1.s @@ -0,0 +1,6 @@ +// RUN: not llvm-mc -filetype=obj -triple x86_64-pc-linux < %s 2>&1 | FileCheck %s + + .comm C,4,4 + .set A,C + +// CHECK: Common symbol C cannot be used in assignment expr diff --git a/test/MC/ELF/common-error2.s b/test/MC/ELF/common-error2.s new file mode 100644 index 000000000000..d666feedee6a --- /dev/null +++ b/test/MC/ELF/common-error2.s @@ -0,0 +1,6 @@ +// RUN: not llvm-mc -filetype=obj -triple x86_64-pc-linux < %s 2>&1 | FileCheck %s + + .set A,C + .comm C,4,4 + +// CHECK: Common symbol C cannot be used in assignment expr diff --git a/test/MC/ELF/common.s b/test/MC/ELF/common.s index bd96564a5ca1..b7e6ba074f4d 100644 --- a/test/MC/ELF/common.s +++ b/test/MC/ELF/common.s @@ -45,7 +45,7 @@ // CHECK-NEXT: Binding: Local // CHECK-NEXT: Type: Object // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .bss (0x4) +// CHECK-NEXT: Section: .bss // CHECK-NEXT: } diff --git a/test/MC/ELF/common2.s b/test/MC/ELF/common2.s index 526ebc2a95ff..26c32a7c8408 100644 --- a/test/MC/ELF/common2.s +++ b/test/MC/ELF/common2.s @@ -10,7 +10,7 @@ .align 8 // CHECK: Section { -// CHECK: Name: .bss (7) +// CHECK: Name: .bss // CHECK-NEXT: Type: // CHECK-NEXT: Flags [ // CHECK: ] diff --git a/test/MC/ELF/compression.s b/test/MC/ELF/compression.s index 07b689eef1f1..5560ba78c68f 100644 --- a/test/MC/ELF/compression.s +++ b/test/MC/ELF/compression.s @@ -10,7 +10,6 @@ // Check for the 'ZLIB' file magic at the start of the section only // CHECK-NEXT: ZLIB // CHECK-NOT: ZLIB -// CHECK: Contents of // Don't compress small sections, such as this simple debug_abbrev example // CHECK: Contents of section .debug_abbrev: diff --git a/test/MC/ELF/debug-line.s b/test/MC/ELF/debug-line.s index 38ef8284a0df..072265c5c701 100644 --- a/test/MC/ELF/debug-line.s +++ b/test/MC/ELF/debug-line.s @@ -17,7 +17,7 @@ // CHECK-NEXT: Flags [ // CHECK-NEXT: ] // CHECK-NEXT: Address: 0x0 -// CHECK-NEXT: Offset: 0x50 +// CHECK-NEXT: Offset: // CHECK-NEXT: Size: 57 // CHECK-NEXT: Link: 0 // CHECK-NEXT: Info: 0 diff --git a/test/MC/ELF/debug-loc.s b/test/MC/ELF/debug-loc.s index b24fa169deb2..ea8eb3ec70cd 100644 --- a/test/MC/ELF/debug-loc.s +++ b/test/MC/ELF/debug-loc.s @@ -8,8 +8,8 @@ // FIXME2: We need a debug_line dumper so that we can test the actual contents. // CHECK: Section { -// CHECK: Index: 4 -// CHECK-NEXT: Name: .debug_line +// CHECK: Index: +// CHECK: Name: .debug_line // CHECK-NEXT: Type: SHT_PROGBITS // CHECK-NEXT: Flags [ // CHECK-NEXT: ] diff --git a/test/MC/ELF/empty-dwarf-lines.s b/test/MC/ELF/empty-dwarf-lines.s index 241580bb3b83..19305709cda6 100644 --- a/test/MC/ELF/empty-dwarf-lines.s +++ b/test/MC/ELF/empty-dwarf-lines.s @@ -8,8 +8,8 @@ c: .asciz "hi\n" // CHECK: Section { -// CHECK: Index: 4 -// CHECK-NEXT: Name: .debug_line +// CHECK: Index: +// CHECK: Name: .debug_line // CHECK-NEXT: Type: SHT_PROGBITS // CHECK-NEXT: Flags [ // CHECK-NEXT: ] diff --git a/test/MC/ELF/empty.s b/test/MC/ELF/empty.s index c421fe844882..6ddbd8c942a2 100644 --- a/test/MC/ELF/empty.s +++ b/test/MC/ELF/empty.s @@ -1,9 +1,32 @@ // RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s | FileCheck %s +// RUN: llvm-mc -filetype=obj -triple x86_64-apple-darwin14.0.0-elf %s -o - | llvm-readobj -s | FileCheck %s -check-prefix=DARWIN +// RUN: llvm-mc -filetype=obj -triple x86_64-pc-win32-elf %s -o - | llvm-readobj -s | FileCheck %s -check-prefix=WINDOWS + +// Check that we can create ELF files for darwin/windows, even though +// it is not the default file format. + +// DARWIN: Format: ELF64-x86-64 +// WINDOWS: Format: ELF64-x86-64 +// DARWIN-NEXT: Arch: x86_64 +// WINDOWS-NEXT: Arch: x86_64 // Test that like gnu as we create text, data and bss by default. Also test -// that shstrtab, symtab and strtab are listed in that order. +// that symtab and strtab are listed. // CHECK: Section { +// CHECK: Name: .strtab +// CHECK-NEXT: Type: SHT_STRTAB +// CHECK-NEXT: Flags [ +// CHECK-NEXT: ] +// CHECK-NEXT: Address: 0x0 +// CHECK-NEXT: Offset: +// CHECK-NEXT: Size: 34 +// CHECK-NEXT: Link: 0 +// CHECK-NEXT: Info: 0 +// CHECK-NEXT: AddressAlignment: 1 +// CHECK-NEXT: EntrySize: 0 +// CHECK-NEXT: } +// CHECK: Section { // CHECK: Name: .text // CHECK-NEXT: Type: SHT_PROGBITS // CHECK-NEXT: Flags [ @@ -49,19 +72,6 @@ // CHECK-NEXT: EntrySize: 0 // CHECK-NEXT: } // CHECK: Section { -// CHECK: Name: .shstrtab -// CHECK-NEXT: Type: SHT_STRTAB -// CHECK-NEXT: Flags [ -// CHECK-NEXT: ] -// CHECK-NEXT: Address: 0x0 -// CHECK-NEXT: Offset: 0x40 -// CHECK-NEXT: Size: 44 -// CHECK-NEXT: Link: 0 -// CHECK-NEXT: Info: 0 -// CHECK-NEXT: AddressAlignment: 1 -// CHECK-NEXT: EntrySize: 0 -// CHECK-NEXT: } -// CHECK: Section { // CHECK: Name: .symtab // CHECK-NEXT: Type: SHT_SYMTAB // CHECK-NEXT: Flags [ @@ -69,21 +79,8 @@ // CHECK-NEXT: Address: 0x0 // CHECK-NEXT: Offset: // CHECK-NEXT: Size: 96 -// CHECK-NEXT: Link: 6 +// CHECK-NEXT: Link: // CHECK-NEXT: Info: 4 // CHECK-NEXT: AddressAlignment: 8 // CHECK-NEXT: EntrySize: 24 // CHECK-NEXT: } -// CHECK: Section { -// CHECK: Name: .strtab -// CHECK-NEXT: Type: SHT_STRTAB -// CHECK-NEXT: Flags [ -// CHECK-NEXT: ] -// CHECK-NEXT: Address: 0x0 -// CHECK-NEXT: Offset: -// CHECK-NEXT: Size: 1 -// CHECK-NEXT: Link: 0 -// CHECK-NEXT: Info: 0 -// CHECK-NEXT: AddressAlignment: 1 -// CHECK-NEXT: EntrySize: 0 -// CHECK-NEXT: } diff --git a/test/MC/ELF/entsize.ll b/test/MC/ELF/entsize.ll index 2bf9fa9fb594..941a300bdda5 100644 --- a/test/MC/ELF/entsize.ll +++ b/test/MC/ELF/entsize.ll @@ -8,10 +8,10 @@ @.c8b = private unnamed_addr constant [1 x i64] [i64 42] define i32 @main() nounwind { - %1 = call i32 @puts(i8* getelementptr inbounds ([6 x i8]* @.str1, i32 0, i32 0)) - %2 = call i32 @puts(i8* getelementptr inbounds ([7 x i8]* @.str2, i32 0, i32 0)) - call void @foo(i64* getelementptr inbounds ([1 x i64]* @.c8a, i32 0, i32 0)) - call void @foo(i64* getelementptr inbounds ([1 x i64]* @.c8b, i32 0, i32 0)) + %1 = call i32 @puts(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str1, i32 0, i32 0)) + %2 = call i32 @puts(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str2, i32 0, i32 0)) + call void @foo(i64* getelementptr inbounds ([1 x i64], [1 x i64]* @.c8a, i32 0, i32 0)) + call void @foo(i64* getelementptr inbounds ([1 x i64], [1 x i64]* @.c8b, i32 0, i32 0)) ret i32 0 } diff --git a/test/MC/ELF/entsize.s b/test/MC/ELF/entsize.s index 8e084e24b255..1dc6103189da 100644 --- a/test/MC/ELF/entsize.s +++ b/test/MC/ELF/entsize.s @@ -33,8 +33,8 @@ .quad 42 // CHECK: Section { -// CHECK: Index: 4 -// CHECK-NEXT: Name: .rodata.str1.1 +// CHECK: Index: +// CHECK: Name: .rodata.str1.1 // CHECK-NEXT: Type: SHT_PROGBITS // CHECK-NEXT: Flags [ // CHECK-NEXT: SHF_ALLOC @@ -50,8 +50,8 @@ // CHECK-NEXT: EntrySize: 1 // CHECK-NEXT: } // CHECK: Section { -// CHECK: Index: 5 -// CHECK-NEXT: Name: .rodata.str2.1 +// CHECK: Index: +// CHECK: Name: .rodata.str2.1 // CHECK-NEXT: Type: SHT_PROGBITS // CHECK-NEXT: Flags [ // CHECK-NEXT: SHF_ALLOC @@ -67,8 +67,8 @@ // CHECK-NEXT: EntrySize: 2 // CHECK-NEXT: } // CHECK: Section { -// CHECK: Index: 6 -// CHECK-NEXT: Name: .rodata.cst8 +// CHECK: Index: +// CHECK: Name: .rodata.cst8 // CHECK-NEXT: Type: SHT_PROGBITS // CHECK-NEXT: Flags [ // CHECK-NEXT: SHF_ALLOC diff --git a/test/MC/ELF/file-double.s b/test/MC/ELF/file-double.s index b5da8c5a8588..8ea5fc759b37 100644 --- a/test/MC/ELF/file-double.s +++ b/test/MC/ELF/file-double.s @@ -34,7 +34,7 @@ bar.c: // CHECK-NEXT: Binding: Global // CHECK-NEXT: Type: None // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text (0x1) +// CHECK-NEXT: Section: .text // CHECK-NEXT: } // CHECK: Symbol { // CHECK: Name: foo.c @@ -43,5 +43,5 @@ bar.c: // CHECK-NEXT: Binding: Global // CHECK-NEXT: Type: None // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text (0x1) +// CHECK-NEXT: Section: .text // CHECK-NEXT: } diff --git a/test/MC/ELF/file.s b/test/MC/ELF/file.s index 6b6cb44e2b28..b19bda7c42ca 100644 --- a/test/MC/ELF/file.s +++ b/test/MC/ELF/file.s @@ -6,7 +6,7 @@ foa: // CHECK: Symbol { -// CHECK: Name: foo (1) +// CHECK: Name: foo // CHECK-NEXT: Value: 0x0 // CHECK-NEXT: Size: 0 // CHECK-NEXT: Binding: Local @@ -15,11 +15,11 @@ foa: // CHECK-NEXT: Section: Absolute (0xFFF1) // CHECK-NEXT: } // CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: foa (5) +// CHECK-NEXT: Name: foa // CHECK-NEXT: Value: 0x0 // CHECK-NEXT: Size: 0 // CHECK-NEXT: Binding: Local // CHECK-NEXT: Type: None // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text (0x1) +// CHECK-NEXT: Section: .text // CHECK-NEXT: } diff --git a/test/MC/ELF/gen-dwarf.s b/test/MC/ELF/gen-dwarf.s index 7f0c0594ce95..4e773c79af28 100644 --- a/test/MC/ELF/gen-dwarf.s +++ b/test/MC/ELF/gen-dwarf.s @@ -34,6 +34,7 @@ foo: // ASM: .section .debug_info // ASM: .section .debug_abbrev +// ASM-NEXT: .Lsection_abbrev: // ASM-NEXT: [[ABBREV_LABEL:.Ltmp[0-9]+]] // Second instance of the section has the CU diff --git a/test/MC/ELF/ifunc-reloc.s b/test/MC/ELF/ifunc-reloc.s index 01954631cca1..6f1d79b22c47 100644 --- a/test/MC/ELF/ifunc-reloc.s +++ b/test/MC/ELF/ifunc-reloc.s @@ -10,7 +10,7 @@ alias: callq sym // CHECK: Relocations [ -// CHECK-NEXT: Section (2) .rela.text { +// CHECK-NEXT: Section {{.*}} .rela.text { // CHECK-NEXT: 0x1 R_X86_64_PC32 sym 0xFFFFFFFFFFFFFFFC // CHECK-NEXT: } // CHECK-NEXT: ] diff --git a/test/MC/ELF/lcomm.s b/test/MC/ELF/lcomm.s index 7d8ac3fcafa0..94bd5ea19976 100644 --- a/test/MC/ELF/lcomm.s +++ b/test/MC/ELF/lcomm.s @@ -10,7 +10,7 @@ // CHECK-NEXT: Binding: Local // CHECK-NEXT: Type: Object // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .bss (0x3) +// CHECK-NEXT: Section: .bss // CHECK-NEXT: } // CHECK: Symbol { // CHECK: Name: B @@ -19,5 +19,5 @@ // CHECK-NEXT: Binding: Local // CHECK-NEXT: Type: Object // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .bss (0x3) +// CHECK-NEXT: Section: .bss // CHECK-NEXT: } diff --git a/test/MC/ELF/local-reloc.s b/test/MC/ELF/local-reloc.s index 19b950986680..ce0b674364c2 100644 --- a/test/MC/ELF/local-reloc.s +++ b/test/MC/ELF/local-reloc.s @@ -7,7 +7,7 @@ foo: // CHECK: Relocations [ -// CHECK: Section (2) .rela.text { +// CHECK: Section {{.*}} .rela.text { // CHECK-NEXT: 0x{{[^ ]+}} R_X86_64_32S .text 0x{{[^ ]+}} // CHECK-NEXT: } // CHECK-NEXT: ] diff --git a/test/MC/ELF/many-sections-2.s b/test/MC/ELF/many-sections-2.s index 88a4822c3869..b52c01af4905 100644 --- a/test/MC/ELF/many-sections-2.s +++ b/test/MC/ELF/many-sections-2.s @@ -18,7 +18,7 @@ // SYMBOLS-NEXT: Binding: Local (0x0) // SYMBOLS-NEXT: Type: None (0x0) // SYMBOLS-NEXT: Other: 0 -// SYMBOLS-NEXT: Section: last (0xFF00) +// SYMBOLS-NEXT: Section: dm (0xFF00) // SYMBOLS-NEXT: } // SYMBOLS-NEXT: Symbol { // SYMBOLS-NEXT: Name: b @@ -27,18 +27,18 @@ // SYMBOLS-NEXT: Binding: Local (0x0) // SYMBOLS-NEXT: Type: None (0x0) // SYMBOLS-NEXT: Other: 0 -// SYMBOLS-NEXT: Section: last (0xFF00) +// SYMBOLS-NEXT: Section: dm (0xFF00) // SYMBOLS-NEXT: } // Test that this file has one section too many. -// SYMBOLS: Name: last +// SYMBOLS: Name: dm // SYMBOLS-NEXT: Value: 0x0 // SYMBOLS-NEXT: Size: 0 // SYMBOLS-NEXT: Binding: Local (0x0) // SYMBOLS-NEXT: Type: Section (0x3) // SYMBOLS-NEXT: Other: 0 -// SYMBOLS-NEXT: Section: last (0xFF00) +// SYMBOLS-NEXT: Section: dm (0xFF00) // SYMBOLS-NEXT: } // SYMBOLS-NEXT:] @@ -128,6 +128,5 @@ gen_sections16 k gen_sections8 l gen_sections4 m -.section last a: b = a + 1 diff --git a/test/MC/ELF/many-sections.s b/test/MC/ELF/many-sections.s index 93ea8e7821e2..dbba8711fdf6 100644 --- a/test/MC/ELF/many-sections.s +++ b/test/MC/ELF/many-sections.s @@ -9,13 +9,13 @@ // Check the last referenced section. -// SYMBOLS: Name: dm (0) +// SYMBOLS: Name: zed // SYMBOLS-NEXT: Value: 0x0 // SYMBOLS-NEXT: Size: 0 // SYMBOLS-NEXT: Binding: Local (0x0) // SYMBOLS-NEXT: Type: Section (0x3) // SYMBOLS-NEXT: Other: 0 -// SYMBOLS-NEXT: Section: dm (0xFEFF) +// SYMBOLS-NEXT: Section: zed (0xFEFF) // SYMBOLS-NEXT: } // SYMBOLS-NEXT:] @@ -103,4 +103,6 @@ gen_sections64 i gen_sections32 j gen_sections16 k gen_sections8 l -gen_sections4 m + .section foo + .section bar + .section zed diff --git a/test/MC/ELF/merge.s b/test/MC/ELF/merge.s index d6e0b7c4b7dc..e787728ae197 100644 --- a/test/MC/ELF/merge.s +++ b/test/MC/ELF/merge.s @@ -21,7 +21,7 @@ zed: foo: // CHECK: Relocations [ -// CHECK-NEXT: Section (2) .rela.text { +// CHECK-NEXT: Section {{.*}} .rela.text { // CHECK-NEXT: 0x{{[^ ]+}} R_X86_64_PC32 .Lfoo 0x{{[^ ]+}} // CHECK-NEXT: 0x{{[^ ]+}} R_X86_64_32 .sec1 0x{{[^ ]+}} // CHECK-NEXT: 0x{{[^ ]+}} R_X86_64_32 .Lfoo 0x{{[^ ]+}} diff --git a/test/MC/ELF/n_bytes.s b/test/MC/ELF/n_bytes.s index e658de09a2fa..fcbd0e88c2c7 100644 --- a/test/MC/ELF/n_bytes.s +++ b/test/MC/ELF/n_bytes.s @@ -6,8 +6,8 @@ .int 42, 1, 2, 3 // CHECK: Section { -// CHECK: Index: 1 -// CHECK-NEXT: Name: .text +// CHECK: Index: +// CHECK: Name: .text // CHECK-NEXT: Type: SHT_PROGBITS // CHECK-NEXT: Flags [ // CHECK-NEXT: SHF_ALLOC diff --git a/test/MC/ELF/noexec.s b/test/MC/ELF/noexec.s index 28f50cb7f692..3769427a3b1a 100644 --- a/test/MC/ELF/noexec.s +++ b/test/MC/ELF/noexec.s @@ -1,8 +1,8 @@ // RUN: llvm-mc -no-exec-stack -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -t | FileCheck %s // CHECK: Section { -// CHECK: Index: 4 -// CHECK-NEXT: Name: .note.GNU-stack +// CHECK: Index: +// CHECK: Name: .note.GNU-stack // CHECK-NEXT: Type: SHT_PROGBITS // CHECK-NEXT: Flags [ // CHECK-NEXT: ] @@ -22,5 +22,5 @@ // CHECK-NEXT: Binding: Local // CHECK-NEXT: Type: Section // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .note.GNU-stack (0x4) +// CHECK-NEXT: Section: .note.GNU-stack // CHECK-NEXT: } diff --git a/test/MC/ELF/norelocation.s b/test/MC/ELF/norelocation.s index 137038292802..054fc5f95cb2 100644 --- a/test/MC/ELF/norelocation.s +++ b/test/MC/ELF/norelocation.s @@ -1,26 +1,7 @@ -// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sd -sr | FileCheck %s +// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -r | FileCheck %s call bar bar: -// CHECK: Section { -// CHECK: Name: .text -// CHECK-NEXT: Type: SHT_PROGBITS -// CHECK-NEXT: Flags [ (0x6) -// CHECK-NEXT: SHF_ALLOC -// CHECK-NEXT: SHF_EXECINSTR -// CHECK-NEXT: ] -// CHECK-NEXT: Address: 0x0 -// CHECK-NEXT: Offset: 0x40 -// CHECK-NEXT: Size: 5 -// CHECK-NEXT: Link: 0 -// CHECK-NEXT: Info: 0 -// CHECK-NEXT: AddressAlignment: 4 -// CHECK-NEXT: EntrySize: 0 -// CHECK-NEXT: Relocations [ -// CHECK-NEXT: ] -// CHECK-NEXT: SectionData ( -// CHECK-NEXT: 0000: E8000000 00 -// CHECK-NEXT: ) -// CHECK-NEXT: } -// CHECK: shstrtab +// CHECK: Relocations [ +// CHECK-NEXT: ] diff --git a/test/MC/ELF/pr19430.s b/test/MC/ELF/pr19430.s index a1e524662a96..3ba6d729b4be 100644 --- a/test/MC/ELF/pr19430.s +++ b/test/MC/ELF/pr19430.s @@ -8,7 +8,7 @@ .cfi_endproc // CHECK: Relocations [ -// CHECK-NEXT: Section (5) .rela.eh_frame { +// CHECK-NEXT: Section ({{.*}}) .rela.eh_frame { // CHECK-NEXT: 0x20 R_X86_64_PC32 .text 0x3E8 // CHECK-NEXT: } // CHECK-NEXT: ] diff --git a/test/MC/ELF/pr19582.s b/test/MC/ELF/pr19582.s new file mode 100644 index 000000000000..304cacb2972c --- /dev/null +++ b/test/MC/ELF/pr19582.s @@ -0,0 +1,8 @@ +// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -r | FileCheck %s + +a: + .section foo + c = b +b: + // CHECK: 0x0 R_X86_64_PC32 .text 0x0 + .long a - c diff --git a/test/MC/ELF/relax.s b/test/MC/ELF/relax.s index 49ee8e2eefe0..93db0fe9b944 100644 --- a/test/MC/ELF/relax.s +++ b/test/MC/ELF/relax.s @@ -30,4 +30,4 @@ foo: // CHECK-NEXT: ) // CHECK-NEXT: } // CHECK: Symbol { -// CHECK: Name: foo (5) +// CHECK: Name: foo diff --git a/test/MC/ELF/relocation-386.s b/test/MC/ELF/relocation-386.s index 83c524b9d07b..2af6addc3d2b 100644 --- a/test/MC/ELF/relocation-386.s +++ b/test/MC/ELF/relocation-386.s @@ -4,7 +4,7 @@ // correctly point to the section or the symbol. // CHECK: Relocations [ -// CHECK-NEXT: Section (2) .rel.text { +// CHECK-NEXT: Section {{.*}} .rel.text { // CHECK-NEXT: 0x2 R_386_GOTOFF .Lfoo 0x0 // CHECK-NEXT: 0x{{[^ ]+}} R_386_PLT32 bar2 0x0 // CHECK-NEXT: 0x{{[^ ]+}} R_386_GOTPC _GLOBAL_OFFSET_TABLE_ 0x0 @@ -65,6 +65,9 @@ // CHECK-NEXT: 0xA3 R_386_GOTOFF und_symbol 0x0 // Relocation 29 (zed@PLT) is of type R_386_PLT32 and uses the symbol // CHECK-NEXT: 0xA9 R_386_PLT32 zed 0x0 +// CHECK-NEXT: 0xAF R_386_PC32 tr_start 0x0 +// CHECK-NEXT: 0xB3 R_386_16 foo 0x0 +// CHECK-NEXT: 0xB5 R_386_8 foo 0x0 // CHECK-NEXT: } // CHECK-NEXT: ] @@ -76,7 +79,7 @@ // CHECK-NEXT: Binding: Local // CHECK-NEXT: Type: TLS // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: zedsec (0x5) +// CHECK-NEXT: Section: zedsec // CHECK-NEXT: } // Symbol 7 is section 4 // CHECK: Symbol { @@ -86,7 +89,7 @@ // CHECK-NEXT: Binding: Local // CHECK-NEXT: Type: Section // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .bss (0x4) +// CHECK-NEXT: Section: .bss // CHECK-NEXT: } .text @@ -133,6 +136,12 @@ bar2: leal 1 + und_symbol@GOTOFF, %edi movl zed@PLT(%eax), %eax + .code64 + jmpq *tr_start(%rip) + + .word foo + .byte foo + .section zedsec,"awT",@progbits zed: .long 0 diff --git a/test/MC/ELF/relocation-pc.s b/test/MC/ELF/relocation-pc.s index 0ce32010cf0e..ca7addf3a620 100644 --- a/test/MC/ELF/relocation-pc.s +++ b/test/MC/ELF/relocation-pc.s @@ -6,23 +6,16 @@ jmp -256 # R_X86_64_PC32 // CHECK: Section { -// CHECK: Index: 1 -// CHECK-NEXT: Name: .text -// CHECK: Relocations [ -// CHECK-NEXT: ] -// CHECK-NEXT: } - -// CHECK: Section { -// CHECK: Index: 2 -// CHECK-NEXT: Name: .rela.text +// CHECK: Index: +// CHECK: Name: .rela.text // CHECK-NEXT: Type: SHT_RELA // CHECK-NEXT: Flags [ // CHECK-NEXT: ] // CHECK-NEXT: Address: 0x0 -// CHECK-NEXT: Offset: 0x2E8 +// CHECK-NEXT: Offset: // CHECK-NEXT: Size: 48 -// CHECK-NEXT: Link: 6 -// CHECK-NEXT: Info: 1 +// CHECK-NEXT: Link: +// CHECK-NEXT: Info: // CHECK-NEXT: AddressAlignment: 8 // CHECK-NEXT: EntrySize: 24 // CHECK-NEXT: Relocations [ diff --git a/test/MC/ELF/relocation.s b/test/MC/ELF/relocation.s index c0e6007dc4e7..2841612f2e11 100644 --- a/test/MC/ELF/relocation.s +++ b/test/MC/ELF/relocation.s @@ -2,6 +2,14 @@ // Test that we produce the correct relocation. + + .section .pr23272,"aGw",@progbits,pr23272,comdat + .globl pr23272 +pr23272: +pr23272_2: +pr23272_3 = pr23272_2 + + .text bar: movl $bar, %edx # R_X86_64_32 movq $bar, %rdx # R_X86_64_32S @@ -34,6 +42,18 @@ bar: movl $_GLOBAL_OFFSET_TABLE_, %eax movabs $_GLOBAL_OFFSET_TABLE_, %rax + .quad blah@SIZE # R_X86_64_SIZE64 + .quad blah@SIZE + 32 # R_X86_64_SIZE64 + .quad blah@SIZE - 32 # R_X86_64_SIZE64 + movl blah@SIZE, %eax # R_X86_64_SIZE32 + movl blah@SIZE + 32, %eax # R_X86_64_SIZE32 + movl blah@SIZE - 32, %eax # R_X86_64_SIZE32 + + .long foo@gotpcrel + .long foo@plt + + .quad pr23272_2 - pr23272 + .quad pr23272_3 - pr23272 // CHECK: Section { // CHECK: Name: .rela.text // CHECK: Relocations [ @@ -62,6 +82,14 @@ bar: // CHECK-NEXT: 0x98 R_X86_64_PC32 foo 0xFFFFFFFFFFFFFFFB // CHECK-NEXT: 0x9D R_X86_64_GOTPC32 _GLOBAL_OFFSET_TABLE_ 0x1 // CHECK-NEXT: 0xA3 R_X86_64_GOTPC64 _GLOBAL_OFFSET_TABLE_ 0x2 +// CHECK-NEXT: 0xAB R_X86_64_SIZE64 blah 0x0 +// CHECK-NEXT: 0xB3 R_X86_64_SIZE64 blah 0x20 +// CHECK-NEXT: 0xBB R_X86_64_SIZE64 blah 0xFFFFFFFFFFFFFFE0 +// CHECK-NEXT: 0xC6 R_X86_64_SIZE32 blah 0x0 +// CHECK-NEXT: 0xCD R_X86_64_SIZE32 blah 0x20 +// CHECK-NEXT: 0xD4 R_X86_64_SIZE32 blah 0xFFFFFFFFFFFFFFE0 +// CHECK-NEXT: 0xD8 R_X86_64_GOTPCREL foo 0x0 +// CHECK-NEXT: 0xDC R_X86_64_PLT32 foo 0x0 // CHECK-NEXT: ] // CHECK-NEXT: } @@ -72,5 +100,5 @@ bar: // CHECK-NEXT: Binding: Local // CHECK-NEXT: Type: Section // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text (0x1) +// CHECK-NEXT: Section: .text // CHECK-NEXT: } diff --git a/test/MC/ELF/rename.s b/test/MC/ELF/rename.s index 5364dde9f460..8be06424cf27 100644 --- a/test/MC/ELF/rename.s +++ b/test/MC/ELF/rename.s @@ -15,51 +15,20 @@ defined3: .global defined1 -// Section 1 is .text // CHECK: Section { -// CHECK: Index: 1 -// CHECK-NEXT: Name: .text -// CHECK-NEXT: Type: SHT_PROGBITS -// CHECK-NEXT: Flags [ -// CHECK-NEXT: SHF_ALLOC -// CHECK-NEXT: SHF_EXECINSTR -// CHECK-NEXT: ] -// CHECK-NEXT: Address: 0x0 -// CHECK-NEXT: Offset: 0x40 -// CHECK-NEXT: Size: 4 -// CHECK-NEXT: Link: 0 -// CHECK-NEXT: Info: 0 -// CHECK-NEXT: AddressAlignment: 4 -// CHECK-NEXT: EntrySize: 0 -// CHECK-NEXT: Relocations [ -// CHECK-NEXT: ] -// CHECK-NEXT: } -// CHECK-NEXT: Section { -// CHECK-NEXT: Index: 2 -// CHECK-NEXT: Name: .rela.text (1) +// CHECK: Index: +// CHECK: Name: .rela.text // CHECK-NEXT: Type: SHT_RELA (0x4) // CHECK-NEXT: Flags [ (0x0) // CHECK-NEXT: ] // CHECK-NEXT: Address: 0x0 -// CHECK-NEXT: Offset: 0x320 +// CHECK-NEXT: Offset: // CHECK-NEXT: Size: 24 -// CHECK-NEXT: Link: 6 -// CHECK-NEXT: Info: 1 +// CHECK-NEXT: Link: +// CHECK-NEXT: Info: // CHECK-NEXT: AddressAlignment: 8 // CHECK-NEXT: EntrySize: 24 // CHECK-NEXT: Relocations [ // CHECK-NEXT: 0x0 R_X86_64_32 .text 0x0 // CHECK-NEXT: ] // CHECK-NEXT: } - - -// Symbol 2 is section 1 -// CHECK: Symbol { -// CHECK: Name: .text (0) -// CHECK-NEXT: Value: 0x0 -// CHECK-NEXT: Size: 0 -// CHECK-NEXT: Binding: Local -// CHECK-NEXT: Type: Section -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text (0x1) -// CHECK-NEXT: } diff --git a/test/MC/ELF/section-sym.s b/test/MC/ELF/section-sym.s index 3b76d813fe7c..f012b2f1bed7 100644 --- a/test/MC/ELF/section-sym.s +++ b/test/MC/ELF/section-sym.s @@ -17,22 +17,22 @@ // CHECK-NEXT: SHF_GROUP (0x200) // CHECK-NEXT: ] // CHECK-NEXT: Address: 0x0 -// CHECK-NEXT: Offset: 0x50 +// CHECK-NEXT: Offset: // 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: Section { +// CHECK: Index: 8 // 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: Offset: // CHECK-NEXT: Size: 0 // CHECK-NEXT: Link: 0 // CHECK-NEXT: Info: 0 @@ -42,7 +42,7 @@ // The relocation points to symbol 6 // CHECK: Relocations [ -// CHECK-NEXT: Section (9) .relabar { +// CHECK-NEXT: Section ({{.*}}) .relabar { // CHECK-NEXT: Relocation { // CHECK-NEXT: Offset: 0x0 // CHECK-NEXT: Type: R_X86_64_32 (10) @@ -88,4 +88,4 @@ // symbol 7 // CHECK-NOT: Name // CHECK: Name: foo -// CHECK: Section: foo (0x7) +// CHECK: Section: foo (0x8) diff --git a/test/MC/ELF/section-sym2.s b/test/MC/ELF/section-sym2.s index acdb7d9547d0..f62e3f9f8a30 100644 --- a/test/MC/ELF/section-sym2.s +++ b/test/MC/ELF/section-sym2.s @@ -6,7 +6,7 @@ mov .rodata, %rsi .section .rodata // CHECK:Relocations [ -// CHECK: Section (2) .rela.text { +// CHECK: Section {{.*}} .rela.text { // CHECK: Relocation { // CHECK: Offset: 0x4 // CHECK: Type: R_X86_64_32S (11) diff --git a/test/MC/ELF/section-unique-err1.s b/test/MC/ELF/section-unique-err1.s new file mode 100644 index 000000000000..3a997d177667 --- /dev/null +++ b/test/MC/ELF/section-unique-err1.s @@ -0,0 +1,5 @@ +// RUN: not llvm-mc -triple x86_64-pc-linux-gnu %s -o - 2>&1 | FileCheck %s + +// CHECK: error: expected absolute expression + + .section .text,"ax",@progbits,unique, "abc" diff --git a/test/MC/ELF/section-unique-err2.s b/test/MC/ELF/section-unique-err2.s new file mode 100644 index 000000000000..7b7cd5f79d9d --- /dev/null +++ b/test/MC/ELF/section-unique-err2.s @@ -0,0 +1,5 @@ +// RUN: not llvm-mc -triple x86_64-pc-linux-gnu %s -o - 2>&1 | FileCheck %s + +// CHECK: error: unique id must be positive + + .section .text,"ax",@progbits,unique, -1 diff --git a/test/MC/ELF/section-unique-err3.s b/test/MC/ELF/section-unique-err3.s new file mode 100644 index 000000000000..bbccd24b4afd --- /dev/null +++ b/test/MC/ELF/section-unique-err3.s @@ -0,0 +1,5 @@ +// RUN: not llvm-mc -triple x86_64-pc-linux-gnu %s -o - 2>&1 | FileCheck %s + +// CHECK: error: unique id is too large + + .section .text,"ax",@progbits,unique, 4294967295 diff --git a/test/MC/ELF/section-unique-err4.s b/test/MC/ELF/section-unique-err4.s new file mode 100644 index 000000000000..3c82682e15aa --- /dev/null +++ b/test/MC/ELF/section-unique-err4.s @@ -0,0 +1,5 @@ +// RUN: not llvm-mc -triple x86_64-pc-linux-gnu %s -o - 2>&1 | FileCheck %s + +// CHECK: error: expected commma + + .section .text,"ax",@progbits,unique 1 diff --git a/test/MC/ELF/section-unique.s b/test/MC/ELF/section-unique.s new file mode 100644 index 000000000000..bd15148f6d83 --- /dev/null +++ b/test/MC/ELF/section-unique.s @@ -0,0 +1,39 @@ +// RUN: llvm-mc -triple x86_64-pc-linux-gnu %s -o - | FileCheck %s +// RUN: llvm-mc -triple x86_64-pc-linux-gnu %s -filetype=obj -o - | llvm-readobj -t | FileCheck %s --check-prefix=OBJ + + .section .text,"ax",@progbits,unique, 4294967293 + .globl f +f: + nop + + .section .text,"ax",@progbits,unique, 4294967294 + .globl g +g: + nop + +// test that f and g are in different sections. + +// CHECK: .section .text,"ax",@progbits,unique,4294967293 +// CHECK: f: + +// CHECK: .section .text,"ax",@progbits,unique,4294967294 +// CHECK: g: + +// OBJ: Symbol { +// OBJ: Name: f +// OBJ: Value: 0x0 +// OBJ: Size: 0 +// OBJ: Binding: Global +// OBJ: Type: None +// OBJ: Other: 0 +// OBJ: Section: .text (0x5) +// OBJ: } +// OBJ: Symbol { +// OBJ: Name: g +// OBJ: Value: 0x0 +// OBJ: Size: 0 +// OBJ: Binding: Global +// OBJ: Type: None +// OBJ: Other: 0 +// OBJ: Section: .text (0x6) +// OBJ: } diff --git a/test/MC/ELF/section.s b/test/MC/ELF/section.s index 7dc23c2e596a..ab3fe0387400 100644 --- a/test/MC/ELF/section.s +++ b/test/MC/ELF/section.s @@ -7,10 +7,10 @@ .section .note.GNU-,"",@progbits .section -.note.GNU,"","progbits" -// CHECK: Name: .note.GNU-stack (56) -// CHECK: Name: .note.GNU-stack2 (153) -// CHECK: Name: .note.GNU- (170) -// CHECK: Name: -.note.GNU (142) +// CHECK: Name: .note.GNU-stack +// CHECK: Name: .note.GNU-stack2 +// CHECK: Name: .note.GNU- +// CHECK: Name: -.note.GNU // Test that the defaults are used @@ -27,7 +27,7 @@ // CHECK-NEXT: SHF_EXECINSTR // CHECK-NEXT: ] // CHECK-NEXT: Address: 0x0 -// CHECK-NEXT: Offset: 0x50 +// CHECK-NEXT: Offset: // CHECK-NEXT: Size: 0 // CHECK-NEXT: Link: 0 // CHECK-NEXT: Info: 0 @@ -35,7 +35,7 @@ // CHECK-NEXT: EntrySize: 0 // CHECK-NEXT: } // CHECK-NEXT: Section { -// CHECK-NEXT: Index: 11 +// CHECK-NEXT: Index: // CHECK-NEXT: Name: .fini // CHECK-NEXT: Type: SHT_PROGBITS // CHECK-NEXT: Flags [ @@ -43,7 +43,7 @@ // CHECK-NEXT: SHF_EXECINSTR // CHECK-NEXT: ] // CHECK-NEXT: Address: 0x0 -// CHECK-NEXT: Offset: 0x50 +// CHECK-NEXT: Offset: // CHECK-NEXT: Size: 0 // CHECK-NEXT: Link: 0 // CHECK-NEXT: Info: 0 @@ -51,14 +51,14 @@ // CHECK-NEXT: EntrySize: 0 // CHECK-NEXT: } // CHECK-NEXT: Section { -// CHECK-NEXT: Index: 12 +// CHECK-NEXT: Index: // CHECK-NEXT: Name: .rodata // CHECK-NEXT: Type: SHT_PROGBITS // CHECK-NEXT: Flags [ // CHECK-NEXT: SHF_ALLOC // CHECK-NEXT: ] // CHECK-NEXT: Address: 0x0 -// CHECK-NEXT: Offset: 0x50 +// CHECK-NEXT: Offset: // CHECK-NEXT: Size: 0 // CHECK-NEXT: Link: 0 // CHECK-NEXT: Info: 0 @@ -66,13 +66,13 @@ // CHECK-NEXT: EntrySize: 0 // CHECK-NEXT: } // CHECK-NEXT: Section { -// CHECK-NEXT: Index: 13 +// CHECK-NEXT: Index: // CHECK-NEXT: Name: zed // CHECK-NEXT: Type: SHT_PROGBITS // CHECK-NEXT: Flags [ // CHECK-NEXT: ] // CHECK-NEXT: Address: 0x0 -// CHECK-NEXT: Offset: 0x50 +// CHECK-NEXT: Offset: // CHECK-NEXT: Size: 0 // CHECK-NEXT: Link: 0 // CHECK-NEXT: Info: 0 @@ -87,7 +87,7 @@ // CHECK-NEXT: Flags [ // CHECK-NEXT: ] // CHECK-NEXT: Address: 0x0 -// CHECK-NEXT: Offset: 0x50 +// CHECK-NEXT: Offset: // CHECK-NEXT: Size: 0 // CHECK-NEXT: Link: 0 // CHECK-NEXT: Info: 0 @@ -112,7 +112,7 @@ bar: // CHECK-NEXT: SHF_ALLOC // CHECK-NEXT: ] // CHECK-NEXT: Address: 0x0 -// CHECK-NEXT: Offset: 0x50 +// CHECK-NEXT: Offset: // CHECK-NEXT: Size: 0 // CHECK-NEXT: Link: 0 // CHECK-NEXT: Info: 0 @@ -129,7 +129,7 @@ bar: // CHECK-NEXT: SHF_EXCLUDE (0x80000000) // CHECK-NEXT: ] // CHECK-NEXT: Address: 0x0 -// CHECK-NEXT: Offset: 0x50 +// CHECK-NEXT: Offset: // CHECK-NEXT: Size: 0 // CHECK-NEXT: Link: 0 // CHECK-NEXT: Info: 0 @@ -142,6 +142,6 @@ bar: .section "foo" // CHECK: Section { -// CHECK: Name: bar-"foo" (181) +// CHECK: Name: bar-"foo" // CHECK: Section { -// CHECK: Name: foo (52) +// CHECK: Name: foo diff --git a/test/MC/ELF/size.s b/test/MC/ELF/size.s new file mode 100644 index 000000000000..7bbf66163226 --- /dev/null +++ b/test/MC/ELF/size.s @@ -0,0 +1,15 @@ +// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux < %s | llvm-readobj -t | FileCheck %s + +foo: +bar = . + .size foo, . - bar + 42 + +// CHECK: Symbol { +// CHECK: Name: foo +// CHECK-NEXT: Value: 0x0 +// CHECK-NEXT: Size: 42 +// CHECK-NEXT: Binding: Local +// CHECK-NEXT: Type: None +// CHECK-NEXT: Other: 0 +// CHECK-NEXT: Section: .text +// CHECK-NEXT: } diff --git a/test/MC/ELF/strtab-suffix-opt.s b/test/MC/ELF/strtab-suffix-opt.s index eb5da8a01552..052465644603 100644 --- a/test/MC/ELF/strtab-suffix-opt.s +++ b/test/MC/ELF/strtab-suffix-opt.s @@ -16,6 +16,6 @@ foobar: .Ltmp3: .size foobar, .Ltmp3-foobar -// CHECK: Name: foobar (1) -// CHECK: Name: bar (4) -// CHECK: Name: foo (8) +// CHECK: Name: foobar (16) +// CHECK: Name: bar (19) +// CHECK: Name: foo (23) diff --git a/test/MC/ELF/symver-msvc.s b/test/MC/ELF/symver-msvc.s new file mode 100644 index 000000000000..354ece140be8 --- /dev/null +++ b/test/MC/ELF/symver-msvc.s @@ -0,0 +1,59 @@ +// RUN: llvm-mc -filetype=obj -triple x86_64-pc-windows-elf %s -o - | llvm-readobj -r -t | FileCheck %s + +// Verify that MSVC C++ mangled symbols are not affected by the ELF +// GNU-style symbol versioning. The ELF format is used on Windows by +// the MCJIT execution engine. + + .long "??_R0?AVexception@std@@@8" + .long "@??_R0?AVinvalid_argument@std@@@8" + .long "__imp_??_R0?AVlogic_error@std@@@8" + .long "__imp_@??_R0PAVexception@std@@@8" + + +// CHECK: Relocations [ +// CHECK-NEXT: Section {{.*}} .rela.text { +// CHECK-NEXT: 0x0 R_X86_64_32 ??_R0?AVexception@std@@@8 0x0 +// CHECK-NEXT: 0x4 R_X86_64_32 @??_R0?AVinvalid_argument@std@@@8 0x0 +// CHECK-NEXT: 0x8 R_X86_64_32 __imp_??_R0?AVlogic_error@std@@@8 0x0 +// CHECK-NEXT: 0xC R_X86_64_32 __imp_@??_R0PAVexception@std@@@8 0x0 +// CHECK-NEXT: } +// CHECK-NEXT: ] + +// CHECK: Symbols [ +// CHECK: Symbol { +// CHECK: Name: ??_R0?AVexception@std@@@8 +// CHECK-NEXT: Value: 0x0 +// CHECK-NEXT: Size: 0 +// CHECK-NEXT: Binding: Global (0x1) +// CHECK-NEXT: Type: None (0x0) +// CHECK-NEXT: Other: 0 +// CHECK-NEXT: Section: Undefined (0x0) +// CHECK-NEXT: } +// CHECK-NEXT: Symbol { +// CHECK-NEXT: Name: @??_R0?AVinvalid_argument@std@@@8 +// CHECK-NEXT: Value: 0x0 +// CHECK-NEXT: Size: 0 +// CHECK-NEXT: Binding: Global (0x1) +// CHECK-NEXT: Type: None (0x0) +// CHECK-NEXT: Other: 0 +// CHECK-NEXT: Section: Undefined (0x0) +// CHECK-NEXT: } +// CHECK-NEXT: Symbol { +// CHECK-NEXT: Name: __imp_??_R0?AVlogic_error@std@@@8 +// CHECK-NEXT: Value: 0x0 +// CHECK-NEXT: Size: 0 +// CHECK-NEXT: Binding: Global (0x1) +// CHECK-NEXT: Type: None (0x0) +// CHECK-NEXT: Other: 0 +// CHECK-NEXT: Section: Undefined (0x0) +// CHECK-NEXT: } +// CHECK-NEXT: Symbol { +// CHECK-NEXT: Name: __imp_@??_R0PAVexception@std@@@8 +// CHECK-NEXT: Value: 0x0 +// CHECK-NEXT: Size: 0 +// CHECK-NEXT: Binding: Global (0x1) +// CHECK-NEXT: Type: None (0x0) +// CHECK-NEXT: Other: 0 +// CHECK-NEXT: Section: Undefined (0x0) +// CHECK-NEXT: } +// CHECK-NEXT: ] diff --git a/test/MC/ELF/symver.s b/test/MC/ELF/symver.s index 6e5825f24313..80d71fd0e069 100644 --- a/test/MC/ELF/symver.s +++ b/test/MC/ELF/symver.s @@ -22,7 +22,7 @@ defined3: global1: // CHECK: Relocations [ -// CHECK-NEXT: Section (2) .rela.text { +// CHECK-NEXT: Section {{.*}} .rela.text { // CHECK-NEXT: 0x0 R_X86_64_32 .text 0x0 // CHECK-NEXT: 0x4 R_X86_64_32 bar2@zed 0x0 // CHECK-NEXT: 0x8 R_X86_64_32 .text 0x0 diff --git a/test/MC/ELF/tls.s b/test/MC/ELF/tls.s index 79865cd17be1..940827bf7c59 100644 --- a/test/MC/ELF/tls.s +++ b/test/MC/ELF/tls.s @@ -19,7 +19,7 @@ foobar: // CHECK-NEXT: Binding: Local // CHECK-NEXT: Type: TLS // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .zed (0x5) +// CHECK-NEXT: Section: .zed // CHECK-NEXT: } // CHECK: Symbol { diff --git a/test/MC/ELF/type-propagate.s b/test/MC/ELF/type-propagate.s index 15d05af7f2fa..ecfab6dbcdaf 100644 --- a/test/MC/ELF/type-propagate.s +++ b/test/MC/ELF/type-propagate.s @@ -36,7 +36,7 @@ sym10: // CHECK-NEXT: Binding: Local (0x0) // CHECK-NEXT: Type: Object (0x1) // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text (0x1) +// CHECK-NEXT: Section: .text // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: sym02 @@ -45,7 +45,7 @@ sym10: // CHECK-NEXT: Binding: Local (0x0) // CHECK-NEXT: Type: Function (0x2) // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text (0x1) +// CHECK-NEXT: Section: .text // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: sym03 @@ -54,7 +54,7 @@ sym10: // CHECK-NEXT: Binding: Local (0x0) // CHECK-NEXT: Type: Function (0x2) // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text (0x1) +// CHECK-NEXT: Section: .text // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: sym04 @@ -63,7 +63,7 @@ sym10: // CHECK-NEXT: Binding: Local (0x0) // CHECK-NEXT: Type: Object (0x1) // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text (0x1) +// CHECK-NEXT: Section: .text // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: sym05 @@ -75,7 +75,7 @@ sym10: // CHECK-NEXT: Type: Object (0x1) // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text (0x1) +// CHECK-NEXT: Section: .text // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: sym06 @@ -102,7 +102,7 @@ sym10: // CHECK-NEXT: Binding: Local (0x0) // CHECK-NEXT: Type: Function (0x2) // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text (0x1) +// CHECK-NEXT: Section: .text // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: sym09 @@ -114,7 +114,7 @@ sym10: // CHECK-NEXT: Type: Function (0x2) // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text (0x1) +// CHECK-NEXT: Section: .text // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: sym10 @@ -123,7 +123,7 @@ sym10: // CHECK-NEXT: Binding: Local (0x0) // CHECK-NEXT: Type: Function (0x2) // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text (0x1) +// CHECK-NEXT: Section: .text // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: sym11 @@ -135,7 +135,7 @@ sym10: // CHECK-NEXT: Type: Function (0x2) // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text (0x1) +// CHECK-NEXT: Section: .text // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: sym12 @@ -147,5 +147,5 @@ sym10: // CHECK-NEXT: Type: Function (0x2) // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text (0x1) +// CHECK-NEXT: Section: .text // CHECK-NEXT: } diff --git a/test/MC/ELF/type.s b/test/MC/ELF/type.s index c82d3006cfe0..a9cc3ebc777d 100644 --- a/test/MC/ELF/type.s +++ b/test/MC/ELF/type.s @@ -9,8 +9,8 @@ foo: .type bar,@object bar: -// Test that gnu_unique_object is accepted. .type zed,@gnu_unique_object +zed: obj: .global obj @@ -137,7 +137,7 @@ alias12: // CHECK-NEXT: Binding: Global // CHECK-NEXT: Type: Object // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text (0x1) +// CHECK-NEXT: Section: .text // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: foo @@ -146,7 +146,7 @@ alias12: // CHECK-NEXT: Binding: Global // CHECK-NEXT: Type: Function // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text (0x1) +// CHECK-NEXT: Section: .text // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: func @@ -155,7 +155,7 @@ alias12: // CHECK-NEXT: Binding: Global // CHECK-NEXT: Type: Function // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text (0x1) +// CHECK-NEXT: Section: .text // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: ifunc @@ -164,7 +164,7 @@ alias12: // CHECK-NEXT: Binding: Global // CHECK-NEXT: Type: GNU_IFunc // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text (0x1) +// CHECK-NEXT: Section: .text // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: obj @@ -173,7 +173,7 @@ alias12: // CHECK-NEXT: Binding: Global // CHECK-NEXT: Type: Object // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text (0x1) +// CHECK-NEXT: Section: .text // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: sym1 @@ -182,7 +182,7 @@ alias12: // CHECK-NEXT: Binding: Global (0x1) // CHECK-NEXT: Type: GNU_IFunc (0xA) // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text (0x1) +// CHECK-NEXT: Section: .text // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: sym10 @@ -191,7 +191,7 @@ alias12: // CHECK-NEXT: Binding: Global (0x1) // CHECK-NEXT: Type: TLS (0x6) // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text (0x1) +// CHECK-NEXT: Section: .text // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: sym11 @@ -200,7 +200,7 @@ alias12: // CHECK-NEXT: Binding: Global (0x1) // CHECK-NEXT: Type: TLS (0x6) // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text (0x1) +// CHECK-NEXT: Section: .text // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: sym12 @@ -209,7 +209,7 @@ alias12: // CHECK-NEXT: Binding: Global (0x1) // CHECK-NEXT: Type: TLS (0x6) // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text (0x1) +// CHECK-NEXT: Section: .text // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: sym2 @@ -218,7 +218,7 @@ alias12: // CHECK-NEXT: Binding: Global (0x1) // CHECK-NEXT: Type: GNU_IFunc (0xA) // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text (0x1) +// CHECK-NEXT: Section: .text // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: sym3 @@ -227,7 +227,7 @@ alias12: // CHECK-NEXT: Binding: Global (0x1) // CHECK-NEXT: Type: GNU_IFunc (0xA) // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text (0x1) +// CHECK-NEXT: Section: .text // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: sym4 @@ -236,7 +236,7 @@ alias12: // CHECK-NEXT: Binding: Global (0x1) // CHECK-NEXT: Type: Function (0x2) // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text (0x1) +// CHECK-NEXT: Section: .text // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: sym5 @@ -245,7 +245,7 @@ alias12: // CHECK-NEXT: Binding: Global (0x1) // CHECK-NEXT: Type: Function (0x2) // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text (0x1) +// CHECK-NEXT: Section: .text // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: sym6 @@ -254,7 +254,7 @@ alias12: // CHECK-NEXT: Binding: Global (0x1) // CHECK-NEXT: Type: Object (0x1) // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text (0x1) +// CHECK-NEXT: Section: .text // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: sym7 @@ -263,7 +263,7 @@ alias12: // CHECK-NEXT: Binding: Global (0x1) // CHECK-NEXT: Type: GNU_IFunc (0xA) // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text (0x1) +// CHECK-NEXT: Section: .text // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: sym8 @@ -272,7 +272,7 @@ alias12: // CHECK-NEXT: Binding: Global (0x1) // CHECK-NEXT: Type: Function (0x2) // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text (0x1) +// CHECK-NEXT: Section: .text // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: sym9 @@ -281,7 +281,7 @@ alias12: // CHECK-NEXT: Binding: Global (0x1) // CHECK-NEXT: Type: TLS (0x6) // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text (0x1) +// CHECK-NEXT: Section: .text // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: tls @@ -290,7 +290,7 @@ alias12: // CHECK-NEXT: Binding: Global // CHECK-NEXT: Type: TLS // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text (0x1) +// CHECK-NEXT: Section: .text // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: tls_quoted @@ -299,7 +299,7 @@ alias12: // CHECK-NEXT: Binding: Global // CHECK-NEXT: Type: TLS // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text (0x1) +// CHECK-NEXT: Section: .text // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: tls_upper_case @@ -308,5 +308,15 @@ alias12: // CHECK-NEXT: Binding: Global // CHECK-NEXT: Type: TLS // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text (0x1) +// CHECK-NEXT: Section: .text // CHECK-NEXT: } +// CHECK-NEXT: Symbol { +// CHECK-NEXT: Name: zed +// CHECK-NEXT: Value: 0x0 +// CHECK-NEXT: Size: 0 +// CHECK-NEXT: Binding: Unique (0xA) +// CHECK-NEXT: Type: Object (0x1) +// CHECK-NEXT: Other: 0 +// CHECK-NEXT: Section: .text +// CHECK-NEXT: } +// CHECK-NEXT: ] diff --git a/test/MC/ELF/weak-diff.s b/test/MC/ELF/weak-diff.s new file mode 100644 index 000000000000..ded89b8f8338 --- /dev/null +++ b/test/MC/ELF/weak-diff.s @@ -0,0 +1,26 @@ +// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu < %s | llvm-readobj -r | FileCheck %s + +// CHECK: Relocations [ +// CHECK-NEXT: Section ({{.*}}) .rela.text { +// CHECK-NEXT: 0x1D R_X86_64_PC32 f2 0xFFFFFFFFFFFFFFFC +// CHECK-NEXT: } +// CHECK-NEXT: ] + +.weak f +.weak g +f: + nop +g: + nop + +.quad g - f + + +.weak f2 +f2: + nop +g2: + nop +.quad g2 - f2 +.quad f2 - g2 +call f2 diff --git a/test/MC/ELF/weakref-reloc.s b/test/MC/ELF/weakref-reloc.s index 582c6946c609..484167f0434e 100644 --- a/test/MC/ELF/weakref-reloc.s +++ b/test/MC/ELF/weakref-reloc.s @@ -16,7 +16,7 @@ // CHECK: Symbols [ // CHECK: Symbol { -// CHECK: Name: _GLOBAL_OFFSET_TABLE_ (9) +// CHECK: Name: _GLOBAL_OFFSET_TABLE_ // CHECK-NEXT: Value: 0x0 // CHECK-NEXT: Size: 0 // CHECK-NEXT: Binding: Global @@ -25,7 +25,7 @@ // CHECK-NEXT: Section: Undefined (0x0) // CHECK-NEXT: } // CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: foo (1) +// CHECK-NEXT: Name: foo // CHECK-NEXT: Value: 0x0 // CHECK-NEXT: Size: 0 // CHECK-NEXT: Binding: Weak @@ -34,7 +34,7 @@ // CHECK-NEXT: Section: Undefined (0x0) // CHECK-NEXT: } // CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: zed (5) +// CHECK-NEXT: Name: zed // CHECK-NEXT: Value: 0x0 // CHECK-NEXT: Size: 0 // CHECK-NEXT: Binding: Global diff --git a/test/MC/ELF/weakref.s b/test/MC/ELF/weakref.s index 2288264bd6c7..d263af31a0df 100644 --- a/test/MC/ELF/weakref.s +++ b/test/MC/ELF/weakref.s @@ -86,7 +86,7 @@ bar15: // CHECK-NEXT: Binding: Local // CHECK-NEXT: Type: None // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text (0x1) +// CHECK-NEXT: Section: .text // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: bar7 @@ -95,7 +95,7 @@ bar15: // CHECK-NEXT: Binding: Local // CHECK-NEXT: Type: None // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text (0x1) +// CHECK-NEXT: Section: .text // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: bar8 @@ -104,7 +104,7 @@ bar15: // CHECK-NEXT: Binding: Local // CHECK-NEXT: Type: None // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text (0x1) +// CHECK-NEXT: Section: .text // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: bar9 @@ -113,7 +113,7 @@ bar15: // CHECK-NEXT: Binding: Local // CHECK-NEXT: Type: None // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text (0x1) +// CHECK-NEXT: Section: .text // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: .text @@ -122,7 +122,7 @@ bar15: // CHECK-NEXT: Binding: Local // CHECK-NEXT: Type: Section // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text (0x1) +// CHECK-NEXT: Section: .text // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: .data @@ -131,7 +131,7 @@ bar15: // CHECK-NEXT: Binding: Local // CHECK-NEXT: Type: Section // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .data (0x3) +// CHECK-NEXT: Section: .data // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: .bss @@ -140,7 +140,7 @@ bar15: // CHECK-NEXT: Binding: Local // CHECK-NEXT: Type: Section // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .bss (0x4) +// CHECK-NEXT: Section: .bss // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: bar10 @@ -149,7 +149,7 @@ bar15: // CHECK-NEXT: Binding: Global // CHECK-NEXT: Type: None // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text (0x1) +// CHECK-NEXT: Section: .text // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: bar11 @@ -158,7 +158,7 @@ bar15: // CHECK-NEXT: Binding: Global // CHECK-NEXT: Type: None // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text (0x1) +// CHECK-NEXT: Section: .text // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: bar12 @@ -167,7 +167,7 @@ bar15: // CHECK-NEXT: Binding: Global // CHECK-NEXT: Type: None // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text (0x1) +// CHECK-NEXT: Section: .text // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: bar13 @@ -176,7 +176,7 @@ bar15: // CHECK-NEXT: Binding: Global // CHECK-NEXT: Type: None // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text (0x1) +// CHECK-NEXT: Section: .text // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: bar14 @@ -185,7 +185,7 @@ bar15: // CHECK-NEXT: Binding: Global // CHECK-NEXT: Type: None // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text (0x1) +// CHECK-NEXT: Section: .text // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: bar15 @@ -194,7 +194,7 @@ bar15: // CHECK-NEXT: Binding: Global // CHECK-NEXT: Type: None // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text (0x1) +// CHECK-NEXT: Section: .text // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: bar2 |