| // RUN: llvm-mc -triple=aarch64 -filetype=obj %s | llvm-objdump -t - | FileCheck %s --match-full-lines |
| // RUN: llvm-mc -triple=aarch64 -filetype=obj -implicit-mapsyms %s | llvm-objdump -t - | FileCheck %s --check-prefix=CHECK1 --match-full-lines |
| |
| /// The test covers many state transitions. Let's use the first state and the last state to describe a section. |
| /// .text goes through cd -> dd -> cc -> dd. |
| /// .data goes through dd -> dc -> cd. |
| .file "0.s" |
| .section .text1,"ax" |
| add w0, w0, w0 |
| |
| .text |
| add w0, w0, w0 |
| .word 42 |
| |
| .pushsection .data,"aw" |
| .word 42 |
| .popsection |
| |
| .text |
| .word 42 |
| |
| .section .text1,"ax" |
| add w1, w1, w1 |
| |
| .text |
| add w1, w1, w1 |
| |
| .section .data,"aw" |
| .word 42 |
| add w0, w0, w0 |
| |
| .text |
| .word 42 |
| |
| ## .rodata and subsequent symbols should be after the FILE symbol of "1.s". |
| .file "1.s" |
| .section .rodata,"a" |
| .word 42 |
| add w0, w0, w0 |
| |
| .section .data,"aw" |
| add w0, w0, w0 |
| .word 42 |
| |
| .text |
| |
| .ident "clang" |
| .section ".note.GNU-stack","",@progbits |
| |
| // CHECK: SYMBOL TABLE: |
| // CHECK-NEXT: 0000000000000000 l df *ABS* 0000000000000000 0.s |
| // CHECK-NEXT: 0000000000000000 l .text1 0000000000000000 $x |
| // CHECK-NEXT: 0000000000000000 l .text 0000000000000000 $x |
| // CHECK-NEXT: 0000000000000004 l .text 0000000000000000 $d |
| // CHECK-NEXT: 0000000000000000 l .data 0000000000000000 $d |
| // CHECK-NEXT: 000000000000000c l .text 0000000000000000 $x |
| // CHECK-NEXT: 0000000000000008 l .data 0000000000000000 $x |
| // CHECK-NEXT: 0000000000000010 l .text 0000000000000000 $d |
| // CHECK-NEXT: 0000000000000000 l df *ABS* 0000000000000000 1.s |
| // CHECK-NEXT: 0000000000000000 l .rodata 0000000000000000 $d |
| // CHECK-NEXT: 0000000000000004 l .rodata 0000000000000000 $x |
| // CHECK-NEXT: 0000000000000010 l .data 0000000000000000 $d |
| // CHECK-NEXT: 0000000000000000 l .comment 0000000000000000 $d |
| // CHECK-NOT: {{.}} |
| |
| // CHECK1: SYMBOL TABLE: |
| // CHECK1-NEXT: 0000000000000000 l df *ABS* 0000000000000000 0.s |
| // CHECK1-NEXT: 0000000000000004 l .text 0000000000000000 $d |
| // CHECK1-NEXT: 000000000000000c l .text 0000000000000000 $x |
| // CHECK1-NEXT: 0000000000000008 l .data 0000000000000000 $x |
| // CHECK1-NEXT: 0000000000000010 l .text 0000000000000000 $d |
| // CHECK1-NEXT: 0000000000000014 l .text 0000000000000000 $x |
| // CHECK1-NEXT: 0000000000000000 l df *ABS* 0000000000000000 1.s |
| // CHECK1-NEXT: 0000000000000004 l .rodata 0000000000000000 $x |
| // CHECK1-NEXT: 0000000000000008 l .rodata 0000000000000000 $d |
| // CHECK1-NEXT: 0000000000000010 l .data 0000000000000000 $d |
| // CHECK1-NOT: {{.}} |