| // RUN: llvm-mc -triple i386-pc-win32 -filetype=obj %s | llvm-readobj -S - | FileCheck %s |
| // RUN: llvm-mc -triple x86_64-pc-win32 -filetype=obj %s | llvm-readobj -S - | FileCheck %s |
| |
| .section .foo$bar; .long 1 |
| .section .foo@bar; .long 1 |
| .section ABCDEFGHIJKLMNOPQRSTUVWXYZ; .long 1 |
| .section abcdefghijklmnopqrstuvwxyz; .long 1 |
| .section _0123456789; .long 1 |
| |
| // CHECK: Sections [ |
| // CHECK: Section { |
| // CHECK: Name: .foo$bar |
| // CHECK: } |
| // CHECK: Section { |
| // CHECK: Name: .foo@bar |
| // CHECK: } |
| // CHECK: Section { |
| // CHECK: Name: ABCDEFGHIJKLMNOPQRSTUVWXYZ |
| // CHECK: } |
| // CHECK: Section { |
| // CHECK: Name: abcdefghijklmnopqrstuvwxyz |
| // CHECK: } |
| // CHECK: Section { |
| // CHECK: Name: _0123456789 |
| // CHECK: } |
| |
| // Test that the defaults are used |
| .section s ; .long 1 |
| .section s_, "" ; .long 1 |
| .section s_a,"a"; .long 1 |
| .section s_b,"b"; .long 1 |
| .section s_d,"d"; .long 1 |
| .section s_D,"D"; .long 1 |
| .section s_n,"n"; .long 1 |
| .section s_r,"r"; .long 1 |
| .section s_s,"s"; .long 1 |
| .section s_w,"w"; .long 1 |
| .section s_x,"x"; .long 1 |
| .section s_y,"y"; .long 1 |
| |
| // CHECK: Section { |
| // CHECK: Name: s |
| // CHECK: Characteristics [ |
| // CHECK-NEXT: IMAGE_SCN_ALIGN_1BYTES |
| // CHECK-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA |
| // CHECK-NEXT: IMAGE_SCN_MEM_READ |
| // CHECK-NEXT: IMAGE_SCN_MEM_WRITE |
| // CHECK-NEXT: ] |
| // CHECK: } |
| // CHECK: Section { |
| // CHECK: Name: s_ |
| // CHECK: Characteristics [ |
| // CHECK-NEXT: IMAGE_SCN_ALIGN_1BYTES |
| // CHECK-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA |
| // CHECK-NEXT: IMAGE_SCN_MEM_READ |
| // CHECK-NEXT: IMAGE_SCN_MEM_WRITE |
| // CHECK-NEXT: ] |
| // CHECK: } |
| // CHECK: Section { |
| // CHECK: Name: s_a |
| // CHECK: Characteristics [ |
| // CHECK-NEXT: IMAGE_SCN_ALIGN_1BYTES |
| // CHECK-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA |
| // CHECK-NEXT: IMAGE_SCN_MEM_READ |
| // CHECK-NEXT: IMAGE_SCN_MEM_WRITE |
| // CHECK-NEXT: ] |
| // CHECK: } |
| // CHECK: Section { |
| // CHECK: Name: s_b |
| // CHECK: Characteristics [ |
| // CHECK-NEXT: IMAGE_SCN_ALIGN_1BYTES |
| // CHECK-NEXT: IMAGE_SCN_CNT_UNINITIALIZED_DATA |
| // CHECK-NEXT: IMAGE_SCN_MEM_READ |
| // CHECK-NEXT: IMAGE_SCN_MEM_WRITE |
| // CHECK-NEXT: ] |
| // CHECK: } |
| // CHECK: Section { |
| // CHECK: Name: s_d |
| // CHECK: Characteristics [ |
| // CHECK-NEXT: IMAGE_SCN_ALIGN_1BYTES |
| // CHECK-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA |
| // CHECK-NEXT: IMAGE_SCN_MEM_READ |
| // CHECK-NEXT: IMAGE_SCN_MEM_WRITE |
| // CHECK-NEXT: ] |
| // CHECK: } |
| // CHECK: Section { |
| // CHECK: Name: s_D |
| // CHECK: Characteristics [ |
| // CHECK-NEXT: IMAGE_SCN_ALIGN_1BYTES |
| // CHECK-NEXT: IMAGE_SCN_MEM_DISCARDABLE |
| // CHECK-NEXT: IMAGE_SCN_MEM_READ |
| // CHECK-NEXT: IMAGE_SCN_MEM_WRITE |
| // CHECK-NEXT: ] |
| // CHECK: } |
| // CHECK: Section { |
| // CHECK: Name: s_n |
| // CHECK: Characteristics [ |
| // CHECK-NEXT: IMAGE_SCN_ALIGN_1BYTES |
| // CHECK-NEXT: IMAGE_SCN_LNK_REMOVE |
| // CHECK-NEXT: IMAGE_SCN_MEM_READ |
| // CHECK-NEXT: IMAGE_SCN_MEM_WRITE |
| // CHECK-NEXT: ] |
| // CHECK: } |
| // CHECK: Section { |
| // CHECK: Name: s_r |
| // CHECK: Characteristics [ |
| // CHECK-NEXT: IMAGE_SCN_ALIGN_1BYTES |
| // CHECK-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA |
| // CHECK-NEXT: IMAGE_SCN_MEM_READ |
| // CHECK-NEXT: ] |
| // CHECK: } |
| // CHECK: Section { |
| // CHECK: Name: s_s |
| // CHECK: Characteristics [ |
| // CHECK-NEXT: IMAGE_SCN_ALIGN_1BYTES |
| // CHECK-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA |
| // CHECK-NEXT: IMAGE_SCN_MEM_READ |
| // CHECK-NEXT: IMAGE_SCN_MEM_SHARED |
| // CHECK-NEXT: IMAGE_SCN_MEM_WRITE |
| // CHECK-NEXT: ] |
| // CHECK: } |
| // CHECK: Section { |
| // CHECK: Name: s_w |
| // CHECK: Characteristics [ |
| // CHECK-NEXT: IMAGE_SCN_ALIGN_1BYTES |
| // CHECK-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA |
| // CHECK-NEXT: IMAGE_SCN_MEM_READ |
| // CHECK-NEXT: IMAGE_SCN_MEM_WRITE |
| // CHECK-NEXT: ] |
| // CHECK: } |
| // CHECK: Section { |
| // CHECK: Name: s_x |
| // CHECK: Characteristics [ |
| // CHECK-NEXT: IMAGE_SCN_ALIGN_1BYTES |
| // CHECK-NEXT: IMAGE_SCN_CNT_CODE |
| // CHECK-NEXT: IMAGE_SCN_MEM_EXECUTE |
| // CHECK-NEXT: IMAGE_SCN_MEM_READ |
| // CHECK-NEXT: ] |
| // CHECK: } |
| // CHECK: Section { |
| // CHECK: Name: s_y |
| // CHECK: Characteristics [ |
| // CHECK-NEXT: IMAGE_SCN_ALIGN_1BYTES |
| // CHECK-NEXT: ] |
| // CHECK: } |
| |
| // w makes read-only to readable |
| .section s_rw,"rw"; .long 1 |
| // CHECK: Section { |
| // CHECK: Name: s_rw |
| // CHECK: Characteristics [ |
| // CHECK-NEXT: IMAGE_SCN_ALIGN_1BYTES |
| // CHECK-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA |
| // CHECK-NEXT: IMAGE_SCN_MEM_READ |
| // CHECK-NEXT: IMAGE_SCN_MEM_WRITE |
| // CHECK-NEXT: ] |
| // CHECK: } |
| |
| // r cancels w |
| .section s_wr,"wr"; .long 1 |
| // CHECK: Section { |
| // CHECK: Name: s_wr |
| // CHECK: Characteristics [ |
| // CHECK-NEXT: IMAGE_SCN_ALIGN_1BYTES |
| // CHECK-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA |
| // CHECK-NEXT: IMAGE_SCN_MEM_READ |
| // CHECK-NEXT: ] |
| // CHECK: } |
| |
| // y cancels both |
| .section s_rwy,"rwy"; .long 1 |
| // CHECK: Section { |
| // CHECK: Name: s_rwy |
| // CHECK: Characteristics [ |
| // CHECK-NEXT: IMAGE_SCN_ALIGN_1BYTES |
| // CHECK-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA |
| // CHECK-NEXT: ] |
| // CHECK: } |
| |
| // Sections starting with ".debug" are implicitly discardable. This is |
| // compatible with gas. |
| .section .debug_asdf,"dr"; .long 1 |
| // CHECK: Section { |
| // CHECK: Name: .debug_asdf |
| // CHECK: Characteristics [ |
| // CHECK-NEXT: IMAGE_SCN_ALIGN_1BYTES |
| // CHECK-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA |
| // CHECK-NEXT: IMAGE_SCN_MEM_DISCARDABLE |
| // CHECK-NEXT: IMAGE_SCN_MEM_READ |
| // CHECK-NEXT: ] |
| // CHECK: } |
| |
| /// The section name can be quoted. |
| .section "@#$-{","n" |
| // CHECK: Section { |
| // CHECK-NEXT: Number: |
| // CHECK-NEXT: Name: @#$-{ |
| |
| // CHECK-NOT: Section { |
| // CHECK: ] |