283 lines · plain
1// RUN: llvm-mc -triple i386-pc-win32 -filetype=obj %s | llvm-readobj -S - | FileCheck %s2// RUN: llvm-mc -triple x86_64-pc-win32 -filetype=obj %s | llvm-readobj -S - | FileCheck %s3// RUN: not llvm-mc -triple x86_64-pc-win32 -filetype=obj --defsym ERR=1 %s -o /dev/null 2>&1 | FileCheck %s --check-prefix=ERR4 5.section .foo$bar; .long 16.section .foo@bar; .long 17.section ABCDEFGHIJKLMNOPQRSTUVWXYZ; .long 18.section abcdefghijklmnopqrstuvwxyz; .long 19.section _0123456789; .long 110 11// CHECK: Sections [12// CHECK: Section {13// CHECK: Name: .foo$bar14// CHECK: }15// CHECK: Section {16// CHECK: Name: .foo@bar17// CHECK: }18// CHECK: Section {19// CHECK: Name: ABCDEFGHIJKLMNOPQRSTUVWXYZ20// CHECK: }21// CHECK: Section {22// CHECK: Name: abcdefghijklmnopqrstuvwxyz23// CHECK: }24// CHECK: Section {25// CHECK: Name: _012345678926// CHECK: }27 28// Test that the defaults are used29.section s ; .long 130.section s_, "" ; .long 131.section s_a,"a"; .long 132.section s_b,"b"; .long 033.section s_d,"d"; .long 134.section s_D,"D"; .long 135.section s_n,"n"; .long 136.section s_r,"r"; .long 137.section s_s,"s"; .long 138.section s_w,"w"; .long 139.section s_x,"x"; .long 140.section s_y,"y"; .long 141.section s_i,"i"; .long 142 43// CHECK: Section {44// CHECK: Name: s45// CHECK: Characteristics [46// CHECK-NEXT: IMAGE_SCN_ALIGN_1BYTES47// CHECK-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA48// CHECK-NEXT: IMAGE_SCN_MEM_READ49// CHECK-NEXT: IMAGE_SCN_MEM_WRITE50// CHECK-NEXT: ]51// CHECK: }52// CHECK: Section {53// CHECK: Name: s_54// CHECK: Characteristics [55// CHECK-NEXT: IMAGE_SCN_ALIGN_1BYTES56// CHECK-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA57// CHECK-NEXT: IMAGE_SCN_MEM_READ58// CHECK-NEXT: IMAGE_SCN_MEM_WRITE59// CHECK-NEXT: ]60// CHECK: }61// CHECK: Section {62// CHECK: Name: s_a63// CHECK: Characteristics [64// CHECK-NEXT: IMAGE_SCN_ALIGN_1BYTES65// CHECK-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA66// CHECK-NEXT: IMAGE_SCN_MEM_READ67// CHECK-NEXT: IMAGE_SCN_MEM_WRITE68// CHECK-NEXT: ]69// CHECK: }70// CHECK: Section {71// CHECK: Name: s_b72// CHECK: Characteristics [73// CHECK-NEXT: IMAGE_SCN_ALIGN_1BYTES74// CHECK-NEXT: IMAGE_SCN_CNT_UNINITIALIZED_DATA75// CHECK-NEXT: IMAGE_SCN_MEM_READ76// CHECK-NEXT: IMAGE_SCN_MEM_WRITE77// CHECK-NEXT: ]78// CHECK: }79// CHECK: Section {80// CHECK: Name: s_d81// CHECK: Characteristics [82// CHECK-NEXT: IMAGE_SCN_ALIGN_1BYTES83// CHECK-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA84// CHECK-NEXT: IMAGE_SCN_MEM_READ85// CHECK-NEXT: IMAGE_SCN_MEM_WRITE86// CHECK-NEXT: ]87// CHECK: }88// CHECK: Section {89// CHECK: Name: s_D90// CHECK: Characteristics [91// CHECK-NEXT: IMAGE_SCN_ALIGN_1BYTES92// CHECK-NEXT: IMAGE_SCN_MEM_DISCARDABLE93// CHECK-NEXT: IMAGE_SCN_MEM_READ94// CHECK-NEXT: IMAGE_SCN_MEM_WRITE95// CHECK-NEXT: ]96// CHECK: }97// CHECK: Section {98// CHECK: Name: s_n99// CHECK: Characteristics [100// CHECK-NEXT: IMAGE_SCN_ALIGN_1BYTES101// CHECK-NEXT: IMAGE_SCN_LNK_REMOVE102// CHECK-NEXT: IMAGE_SCN_MEM_READ103// CHECK-NEXT: IMAGE_SCN_MEM_WRITE104// CHECK-NEXT: ]105// CHECK: }106// CHECK: Section {107// CHECK: Name: s_r108// CHECK: Characteristics [109// CHECK-NEXT: IMAGE_SCN_ALIGN_1BYTES110// CHECK-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA111// CHECK-NEXT: IMAGE_SCN_MEM_READ112// CHECK-NEXT: ]113// CHECK: }114// CHECK: Section {115// CHECK: Name: s_s116// CHECK: Characteristics [117// CHECK-NEXT: IMAGE_SCN_ALIGN_1BYTES118// CHECK-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA119// CHECK-NEXT: IMAGE_SCN_MEM_READ120// CHECK-NEXT: IMAGE_SCN_MEM_SHARED121// CHECK-NEXT: IMAGE_SCN_MEM_WRITE122// CHECK-NEXT: ]123// CHECK: }124// CHECK: Section {125// CHECK: Name: s_w126// CHECK: Characteristics [127// CHECK-NEXT: IMAGE_SCN_ALIGN_1BYTES128// CHECK-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA129// CHECK-NEXT: IMAGE_SCN_MEM_READ130// CHECK-NEXT: IMAGE_SCN_MEM_WRITE131// CHECK-NEXT: ]132// CHECK: }133// CHECK: Section {134// CHECK: Name: s_x135// CHECK: Characteristics [136// CHECK-NEXT: IMAGE_SCN_ALIGN_1BYTES137// CHECK-NEXT: IMAGE_SCN_CNT_CODE138// CHECK-NEXT: IMAGE_SCN_MEM_EXECUTE139// CHECK-NEXT: IMAGE_SCN_MEM_READ140// CHECK-NEXT: ]141// CHECK: }142// CHECK: Section {143// CHECK: Name: s_y144// CHECK: Characteristics [145// CHECK-NEXT: IMAGE_SCN_ALIGN_1BYTES146// CHECK-NEXT: ]147// CHECK: }148// CHECK: Section {149// CHECK: Name: s_i150// CHECK: Characteristics [151// CHECK-NEXT: IMAGE_SCN_ALIGN_1BYTES152// CHECK-NEXT: IMAGE_SCN_LNK_INFO153// CHECK-NEXT: IMAGE_SCN_MEM_READ154// CHECK-NEXT: IMAGE_SCN_MEM_WRITE155// CHECK-NEXT: ]156// CHECK: }157 158// w makes read-only to readable159.section s_rw,"rw"; .long 1160// CHECK: Section {161// CHECK: Name: s_rw162// CHECK: Characteristics [163// CHECK-NEXT: IMAGE_SCN_ALIGN_1BYTES164// CHECK-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA165// CHECK-NEXT: IMAGE_SCN_MEM_READ166// CHECK-NEXT: IMAGE_SCN_MEM_WRITE167// CHECK-NEXT: ]168// CHECK: }169 170// r cancels w171.section s_wr,"wr"; .long 1172// CHECK: Section {173// CHECK: Name: s_wr174// CHECK: Characteristics [175// CHECK-NEXT: IMAGE_SCN_ALIGN_1BYTES176// CHECK-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA177// CHECK-NEXT: IMAGE_SCN_MEM_READ178// CHECK-NEXT: ]179// CHECK: }180 181// y cancels both182.section s_rwy,"rwy"; .long 1183// CHECK: Section {184// CHECK: Name: s_rwy185// CHECK: Characteristics [186// CHECK-NEXT: IMAGE_SCN_ALIGN_1BYTES187// CHECK-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA188// CHECK-NEXT: ]189// CHECK: }190 191// Sections starting with ".debug" are implicitly discardable. This is192// compatible with gas.193.section .debug_asdf,"dr"; .long 1194// CHECK: Section {195// CHECK: Name: .debug_asdf196// CHECK: Characteristics [197// CHECK-NEXT: IMAGE_SCN_ALIGN_1BYTES198// CHECK-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA199// CHECK-NEXT: IMAGE_SCN_MEM_DISCARDABLE200// CHECK-NEXT: IMAGE_SCN_MEM_READ201// CHECK-NEXT: ]202// CHECK: }203 204/// The section name can be quoted.205.section "@#$-{","n"206// CHECK: Section {207// CHECK-NEXT: Number:208// CHECK-NEXT: Name: @#$-{209 210// CHECK-NOT: Section {211// CHECK: ]212 213.section data1; .quad 0214 215.pushsection data2; .quad 0216.popsection217 218// Back to section data1219.quad 2220 221// CHECK: Section {222// CHECK-NEXT: Number:223// CHECK-NEXT: Name: data1224// CHECK: RawDataSize: 16225 226// CHECK: Section {227// CHECK-NEXT: Number:228// CHECK-NEXT: Name: data2229// CHECK: RawDataSize: 8230 231.section .data3,"dw"; .quad 1232 233.pushsection .data4,"dw"; .quad 1234.popsection235 236.pushsection .data5,"dr"; .quad 1237.popsection238 239// in section .data3240.quad 4241 242// Notice the different section flags here.243// This shouldn't overwrite the intial section flags.244.pushsection .data4,"dr"; .quad 1245.popsection246 247// CHECK: Section {248// CHECK-NEXT: Number:249// CHECK-NEXT: Name: .data3250// CHECK: RawDataSize: 16251// CHECK: Characteristics [252// CHECK-NEXT: IMAGE_SCN_ALIGN_1BYTES253// CHECK-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA254// CHECK-NEXT: IMAGE_SCN_MEM_READ255// CHECK-NEXT: IMAGE_SCN_MEM_WRITE256// CHECK-NEXT: ]257 258// CHECK: Section {259// CHECK-NEXT: Number:260// CHECK-NEXT: Name: .data4261// CHECK: RawDataSize: 16262// CHECK: Characteristics [263// CHECK-NEXT: IMAGE_SCN_ALIGN_1BYTES264// CHECK-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA265// CHECK-NEXT: IMAGE_SCN_MEM_READ266// CHECK-NEXT: IMAGE_SCN_MEM_WRITE267// CHECK-NEXT: ]268 269// CHECK: Section {270// CHECK-NEXT: Number:271// CHECK-NEXT: Name: .data5272// CHECK: RawDataSize: 8273// CHECK: Characteristics [274// CHECK-NEXT: IMAGE_SCN_ALIGN_1BYTES275// CHECK-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA276// CHECK-NEXT: IMAGE_SCN_MEM_READ277// CHECK-NEXT: ]278 279.ifdef ERR280// ERR: :[[#@LINE+1]]:12: error: .popsection without corresponding .pushsection281.popsection282.endif283