364 lines · plain
1// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -S - | FileCheck %s2// RUN: llvm-mc -filetype=asm -triple x86_64-pc-linux-gnu %s -o - | FileCheck %s --check-prefix=ASM3 4/// The second .text has no effect, therefore it is not printed.5// ASM: .text6// ASM-EMPTY:7.text8.text9 10// Test that these names are accepted.11 12.section .note.GNU-stack,"",@progbits13.section .note.GNU-stack2,"",%progbits14.section .note.GNU-,"",@progbits15.section -.note.GNU,"","progbits"16.section src/stack.c,"",@progbits17.section ~!@$%^&*()_-+={[}]|\\:<>,"",@progbits18 19// CHECK: Name: .note.GNU-stack20// CHECK: Name: .note.GNU-stack221// CHECK: Name: .note.GNU-22// CHECK: Name: -.note.GNU23// CHECK: Name: src/stack.c24// CHECK: Name: ~!@$%^&*()_-+={[}]|\\:<>25 26// Test that the defaults are used27 28.section .init29.section .fini30.section .rodata31.section zed, ""32 33// CHECK: Section {34// CHECK: Name: .init35// CHECK-NEXT: Type: SHT_PROGBITS36// CHECK-NEXT: Flags [37// CHECK-NEXT: SHF_ALLOC38// CHECK-NEXT: SHF_EXECINSTR39// CHECK-NEXT: ]40// CHECK-NEXT: Address: 0x041// CHECK-NEXT: Offset:42// CHECK-NEXT: Size: 043// CHECK-NEXT: Link: 044// CHECK-NEXT: Info: 045// CHECK-NEXT: AddressAlignment: 146// CHECK-NEXT: EntrySize: 047// CHECK-NEXT: }48// CHECK-NEXT: Section {49// CHECK-NEXT: Index:50// CHECK-NEXT: Name: .fini51// CHECK-NEXT: Type: SHT_PROGBITS52// CHECK-NEXT: Flags [53// CHECK-NEXT: SHF_ALLOC54// CHECK-NEXT: SHF_EXECINSTR55// CHECK-NEXT: ]56// CHECK-NEXT: Address: 0x057// CHECK-NEXT: Offset:58// CHECK-NEXT: Size: 059// CHECK-NEXT: Link: 060// CHECK-NEXT: Info: 061// CHECK-NEXT: AddressAlignment: 162// CHECK-NEXT: EntrySize: 063// CHECK-NEXT: }64// CHECK-NEXT: Section {65// CHECK-NEXT: Index:66// CHECK-NEXT: Name: .rodata67// CHECK-NEXT: Type: SHT_PROGBITS68// CHECK-NEXT: Flags [69// CHECK-NEXT: SHF_ALLOC70// CHECK-NEXT: ]71// CHECK-NEXT: Address: 0x072// CHECK-NEXT: Offset:73// CHECK-NEXT: Size: 074// CHECK-NEXT: Link: 075// CHECK-NEXT: Info: 076// CHECK-NEXT: AddressAlignment: 177// CHECK-NEXT: EntrySize: 078// CHECK-NEXT: }79// CHECK-NEXT: Section {80// CHECK-NEXT: Index:81// CHECK-NEXT: Name: zed82// CHECK-NEXT: Type: SHT_PROGBITS83// CHECK-NEXT: Flags [84// CHECK-NEXT: ]85// CHECK-NEXT: Address: 0x086// CHECK-NEXT: Offset:87// CHECK-NEXT: Size: 088// CHECK-NEXT: Link: 089// CHECK-NEXT: Info: 090// CHECK-NEXT: AddressAlignment: 191// CHECK-NEXT: EntrySize: 092// CHECK-NEXT: }93 94.section .note.test,"",@note95// CHECK: Section {96// CHECK: Name: .note.test97// CHECK-NEXT: Type: SHT_NOTE98// CHECK-NEXT: Flags [99// CHECK-NEXT: ]100// CHECK-NEXT: Address: 0x0101// CHECK-NEXT: Offset:102// CHECK-NEXT: Size: 0103// CHECK-NEXT: Link: 0104// CHECK-NEXT: Info: 0105// CHECK-NEXT: AddressAlignment: 1106// CHECK-NEXT: EntrySize: 0107// CHECK-NEXT: }108 109// Test that we can parse these110foo:111bar:112.section .text.foo,"axG",@progbits,foo,comdat113.section .text.bar,"axMG",@progbits,42,bar,comdat114 115// Test that the default values are not used116 117.section .eh_frame,"a",@unwind118 119// CHECK: Section {120// CHECK: Name: .eh_frame121// CHECK-NEXT: Type: SHT_X86_64_UNWIND122// CHECK-NEXT: Flags [123// CHECK-NEXT: SHF_ALLOC124// CHECK-NEXT: ]125// CHECK-NEXT: Address: 0x0126// CHECK-NEXT: Offset:127// CHECK-NEXT: Size: 0128// CHECK-NEXT: Link: 0129// CHECK-NEXT: Info: 0130// CHECK-NEXT: AddressAlignment: 1131// CHECK-NEXT: EntrySize: 0132// CHECK-NEXT: }133 134.section .excluded,"e",@progbits135 136// CHECK: Section {137// CHECK: Name: .excluded138// CHECK-NEXT: Type: SHT_PROGBITS (0x1)139// CHECK-NEXT: Flags [ (0x80000000)140// CHECK-NEXT: SHF_EXCLUDE (0x80000000)141// CHECK-NEXT: ]142// CHECK-NEXT: Address: 0x0143// CHECK-NEXT: Offset:144// CHECK-NEXT: Size: 0145// CHECK-NEXT: Link: 0146// CHECK-NEXT: Info: 0147// CHECK-NEXT: AddressAlignment: 1148// CHECK-NEXT: EntrySize: 0149// CHECK-NEXT: }150 151// Test that we handle the strings like gas152.section bar-"foo"153.section "fooo"154 155 156// CHECK: Section {157// CHECK: Name: bar-"foo"158// CHECK: Section {159// CHECK: Name: fooo160 161// Test SHF_LINK_ORDER162 163.section .shf_metadata_target1, "a"164 .quad 0165.section .shf_metadata_target2, "a", @progbits, unique, 1166.Lshf_metadata_target2_1:167 .quad 0168.section .shf_metadata_target2, "a", @progbits, unique, 2169.Lshf_metadata_target2_2:170 .quad 0171 172.section .shf_metadata1,"ao",@progbits,.Lshf_metadata_target2_1173.section .shf_metadata2,"ao",@progbits,.Lshf_metadata_target2_2174.section .shf_metadata3,"ao",@progbits,.shf_metadata_target1175.section .linkorder_group_zero,"aoG",@progbits,.shf_metadata_target1,foo176// ASM: .section .shf_metadata1,"ao",@progbits,.Lshf_metadata_target2_1177// ASM: .section .shf_metadata2,"ao",@progbits,.Lshf_metadata_target2_2178// ASM: .section .shf_metadata3,"ao",@progbits,.shf_metadata_target1179// ASM: .section .linkorder_group_zero,"aoG",@progbits,.shf_metadata_target1,foo{{$}}180 181// CHECK: Section {182// CHECK: Index: 22183// CHECK-NEXT: Name: .shf_metadata_target1184 185// CHECK: Section {186// CHECK: Index: 23187// CHECK-NEXT: Name: .shf_metadata_target2188 189// CHECK: Section {190// CHECK: Index: 24191// CHECK-NEXT: Name: .shf_metadata_target2192 193// CHECK: Section {194// CHECK: Name: .shf_metadata1195// CHECK-NEXT: Type: SHT_PROGBITS196// CHECK-NEXT: Flags [197// CHECK-NEXT: SHF_ALLOC198// CHECK-NEXT: SHF_LINK_ORDER199// CHECK-NEXT: ]200// CHECK-NEXT: Address:201// CHECK-NEXT: Offset:202// CHECK-NEXT: Size:203// CHECK-NEXT: Link: 23204// CHECK-NEXT: Info: 0205 206// CHECK: Section {207// CHECK: Name: .shf_metadata2208// CHECK-NEXT: Type: SHT_PROGBITS209// CHECK-NEXT: Flags [210// CHECK-NEXT: SHF_ALLOC211// CHECK-NEXT: SHF_LINK_ORDER212// CHECK-NEXT: ]213// CHECK-NEXT: Address:214// CHECK-NEXT: Offset:215// CHECK-NEXT: Size:216// CHECK-NEXT: Link: 24217// CHECK-NEXT: Info: 0218 219// CHECK: Section {220// CHECK: Name: .shf_metadata3221// CHECK-NEXT: Type: SHT_PROGBITS222// CHECK-NEXT: Flags [223// CHECK-NEXT: SHF_ALLOC224// CHECK-NEXT: SHF_LINK_ORDER225// CHECK-NEXT: ]226// CHECK-NEXT: Address:227// CHECK-NEXT: Offset:228// CHECK-NEXT: Size:229// CHECK-NEXT: Link: 22230// CHECK-NEXT: Info: 0231 232// CHECK: Section {233// CHECK: Name: .linkorder_group_zero234// CHECK-NEXT: Type: SHT_PROGBITS235// CHECK-NEXT: Flags [236// CHECK-NEXT: SHF_ALLOC237// CHECK-NEXT: SHF_GROUP238// CHECK-NEXT: SHF_LINK_ORDER239// CHECK-NEXT: ]240// CHECK-NEXT: Address:241// CHECK-NEXT: Offset:242// CHECK-NEXT: Size:243// CHECK-NEXT: Link: 22244// CHECK-NEXT: Info: 0245 246.section .text.foo247// CHECK: Section {248// CHECK: Name: .text.foo249// CHECK-NEXT: Type: SHT_PROGBITS250// CHECK-NEXT: Flags [251// CHECK-NEXT: SHF_ALLOC252// CHECK-NEXT: SHF_EXECINSTR253// CHECK-NEXT: ]254 255.section .bss256// CHECK: Section {257// CHECK: Name: .bss258// CHECK-NEXT: Type: SHT_NOBITS259// CHECK-NEXT: Flags [260// CHECK-NEXT: SHF_ALLOC261// CHECK-NEXT: SHF_WRITE262// CHECK-NEXT: ]263 264.section .bss.foo265// CHECK: Section {266// CHECK: Name: .bss.foo267// CHECK-NEXT: Type: SHT_NOBITS268// CHECK-NEXT: Flags [269// CHECK-NEXT: SHF_ALLOC270// CHECK-NEXT: SHF_WRITE271// CHECK-NEXT: ]272 273.section .tbss274// CHECK: Section {275// CHECK: Name: .tbss276// CHECK-NEXT: Type: SHT_NOBITS277// CHECK-NEXT: Flags [278// CHECK-NEXT: SHF_ALLOC279// CHECK-NEXT: SHF_TLS280// CHECK-NEXT: SHF_WRITE281// CHECK-NEXT: ]282 283.section .tbss.foo284// CHECK: Section {285// CHECK: Name: .tbss.foo286// CHECK-NEXT: Type: SHT_NOBITS287// CHECK-NEXT: Flags [288// CHECK-NEXT: SHF_ALLOC289// CHECK-NEXT: SHF_TLS290// CHECK-NEXT: SHF_WRITE291// CHECK-NEXT: ]292 293.section .large,"l"294// ASM: .section .large,"l"295 296// CHECK: Section {297// CHECK: Name: .large298// CHECK-NEXT: Type: SHT_PROGBITS299// CHECK-NEXT: Flags [300// CHECK-NEXT: SHF_X86_64_LARGE301// CHECK-NEXT: ]302 303// Test SHT_LLVM_ODRTAB304 305.section .odrtab,"e",@llvm_odrtab306// ASM: .section .odrtab,"e",@llvm_odrtab307 308// CHECK: Section {309// CHECK: Name: .odrtab310// CHECK-NEXT: Type: SHT_LLVM_ODRTAB311// CHECK-NEXT: Flags [312// CHECK-NEXT: SHF_EXCLUDE313// CHECK-NEXT: ]314 315// Test SHT_LLVM_LINKER_OPTIONS316 317.section ".linker-options","e",@llvm_linker_options318// ASM: .section ".linker-options","e",@llvm_linker_options319 320// CHECK: Section {321// CHECK: Name: .linker-options322// CHECK-NEXT: Type: SHT_LLVM_LINKER_OPTIONS323// CHECK-NEXT: Flags [324// CHECK-NEXT: SHF_EXCLUDE325// CHECK-NEXT: ]326// CHECK: }327 328// Test SHT_LLVM_DEPENDENT_LIBRARIES329 330.section .deplibs,"MS",@llvm_dependent_libraries,1331// ASM: .section .deplibs,"MS",@llvm_dependent_libraries,1332 333// CHECK: Section {334// CHECK: Name: .deplibs335// CHECK-NEXT: Type: SHT_LLVM_DEPENDENT_LIBRARIES336// CHECK-NEXT: Flags [337// CHECK-NEXT: SHF_MERGE338// CHECK-NEXT: SHF_STRINGS339// CHECK-NEXT: ]340// CHECK: }341 342// Test SHT_LLVM_SYMPART343 344.section .llvm_sympart,"",@llvm_sympart345// ASM: .section .llvm_sympart,"",@llvm_sympart346 347// CHECK: Section {348// CHECK: Name: .llvm_sympart349// CHECK-NEXT: Type: SHT_LLVM_SYMPART350// CHECK-NEXT: Flags [351// CHECK-NEXT: ]352// CHECK: }353 354.section .llvm.lto,"e",@llvm_lto355// ASM: .section .llvm.lto,"e",@llvm_lto356 357// CHECK: Section {358// CHECK: Name: .llvm.lto359// CHECK-NEXT: Type: SHT_LLVM_LTO360// CHECK-NEXT: Flags [361// CHECK-NEXT: SHF_EXCLUDE362// CHECK-NEXT: ]363// CHECK: }364