1*9880d681SAndroid Build Coastguard Worker// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker// Test that these names are accepted. 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Worker.section .note.GNU-stack,"",@progbits 6*9880d681SAndroid Build Coastguard Worker.section .note.GNU-stack2,"",%progbits 7*9880d681SAndroid Build Coastguard Worker.section .note.GNU-,"",@progbits 8*9880d681SAndroid Build Coastguard Worker.section -.note.GNU,"","progbits" 9*9880d681SAndroid Build Coastguard Worker.section src/stack.c,"",@progbits 10*9880d681SAndroid Build Coastguard Worker.section ~!@$%^&*()_-+={[}]|\\:<>,"",@progbits 11*9880d681SAndroid Build Coastguard Worker 12*9880d681SAndroid Build Coastguard Worker// CHECK: Name: .note.GNU-stack 13*9880d681SAndroid Build Coastguard Worker// CHECK: Name: .note.GNU-stack2 14*9880d681SAndroid Build Coastguard Worker// CHECK: Name: .note.GNU- 15*9880d681SAndroid Build Coastguard Worker// CHECK: Name: -.note.GNU 16*9880d681SAndroid Build Coastguard Worker// CHECK: Name: src/stack.c 17*9880d681SAndroid Build Coastguard Worker// CHECK: Name: ~!@$%^&*()_-+={[}]|\\:<> 18*9880d681SAndroid Build Coastguard Worker 19*9880d681SAndroid Build Coastguard Worker// Test that the defaults are used 20*9880d681SAndroid Build Coastguard Worker 21*9880d681SAndroid Build Coastguard Worker.section .init 22*9880d681SAndroid Build Coastguard Worker.section .fini 23*9880d681SAndroid Build Coastguard Worker.section .rodata 24*9880d681SAndroid Build Coastguard Worker.section zed, "" 25*9880d681SAndroid Build Coastguard Worker 26*9880d681SAndroid Build Coastguard Worker// CHECK: Section { 27*9880d681SAndroid Build Coastguard Worker// CHECK: Name: .init 28*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Type: SHT_PROGBITS 29*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Flags [ 30*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: SHF_ALLOC 31*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: SHF_EXECINSTR 32*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: ] 33*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Address: 0x0 34*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Offset: 35*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Size: 0 36*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Link: 0 37*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Info: 0 38*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: AddressAlignment: 1 39*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: EntrySize: 0 40*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: } 41*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Section { 42*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Index: 43*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Name: .fini 44*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Type: SHT_PROGBITS 45*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Flags [ 46*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: SHF_ALLOC 47*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: SHF_EXECINSTR 48*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: ] 49*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Address: 0x0 50*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Offset: 51*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Size: 0 52*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Link: 0 53*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Info: 0 54*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: AddressAlignment: 1 55*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: EntrySize: 0 56*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: } 57*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Section { 58*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Index: 59*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Name: .rodata 60*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Type: SHT_PROGBITS 61*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Flags [ 62*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: SHF_ALLOC 63*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: ] 64*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Address: 0x0 65*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Offset: 66*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Size: 0 67*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Link: 0 68*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Info: 0 69*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: AddressAlignment: 1 70*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: EntrySize: 0 71*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: } 72*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Section { 73*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Index: 74*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Name: zed 75*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Type: SHT_PROGBITS 76*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Flags [ 77*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: ] 78*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Address: 0x0 79*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Offset: 80*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Size: 0 81*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Link: 0 82*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Info: 0 83*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: AddressAlignment: 1 84*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: EntrySize: 0 85*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: } 86*9880d681SAndroid Build Coastguard Worker 87*9880d681SAndroid Build Coastguard Worker.section .note.test,"",@note 88*9880d681SAndroid Build Coastguard Worker// CHECK: Section { 89*9880d681SAndroid Build Coastguard Worker// CHECK: Name: .note.test 90*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Type: SHT_NOTE 91*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Flags [ 92*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: ] 93*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Address: 0x0 94*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Offset: 95*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Size: 0 96*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Link: 0 97*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Info: 0 98*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: AddressAlignment: 1 99*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: EntrySize: 0 100*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: } 101*9880d681SAndroid Build Coastguard Worker 102*9880d681SAndroid Build Coastguard Worker// Test that we can parse these 103*9880d681SAndroid Build Coastguard Workerfoo: 104*9880d681SAndroid Build Coastguard Workerbar: 105*9880d681SAndroid Build Coastguard Worker.section .text.foo,"axG",@progbits,foo,comdat 106*9880d681SAndroid Build Coastguard Worker.section .text.bar,"axMG",@progbits,42,bar,comdat 107*9880d681SAndroid Build Coastguard Worker 108*9880d681SAndroid Build Coastguard Worker// Test that the default values are not used 109*9880d681SAndroid Build Coastguard Worker 110*9880d681SAndroid Build Coastguard Worker.section .eh_frame,"a",@unwind 111*9880d681SAndroid Build Coastguard Worker 112*9880d681SAndroid Build Coastguard Worker// CHECK: Section { 113*9880d681SAndroid Build Coastguard Worker// CHECK: Name: .eh_frame 114*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Type: SHT_X86_64_UNWIND 115*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Flags [ 116*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: SHF_ALLOC 117*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: ] 118*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Address: 0x0 119*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Offset: 120*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Size: 0 121*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Link: 0 122*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Info: 0 123*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: AddressAlignment: 1 124*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: EntrySize: 0 125*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: } 126*9880d681SAndroid Build Coastguard Worker 127*9880d681SAndroid Build Coastguard Worker.section .excluded,"e",@progbits 128*9880d681SAndroid Build Coastguard Worker 129*9880d681SAndroid Build Coastguard Worker// CHECK: Section { 130*9880d681SAndroid Build Coastguard Worker// CHECK: Name: .excluded 131*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Type: SHT_PROGBITS (0x1) 132*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Flags [ (0x80000000) 133*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: SHF_EXCLUDE (0x80000000) 134*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: ] 135*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Address: 0x0 136*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Offset: 137*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Size: 0 138*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Link: 0 139*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Info: 0 140*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: AddressAlignment: 1 141*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: EntrySize: 0 142*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: } 143*9880d681SAndroid Build Coastguard Worker 144*9880d681SAndroid Build Coastguard Worker// Test that we handle the strings like gas 145*9880d681SAndroid Build Coastguard Worker.section bar-"foo" 146*9880d681SAndroid Build Coastguard Worker.section "foo" 147*9880d681SAndroid Build Coastguard Worker 148*9880d681SAndroid Build Coastguard Worker// CHECK: Section { 149*9880d681SAndroid Build Coastguard Worker// CHECK: Name: bar-"foo" 150*9880d681SAndroid Build Coastguard Worker// CHECK: Section { 151*9880d681SAndroid Build Coastguard Worker// CHECK: Name: foo 152