| // Test the scan-symbol-section directive. |
| |
| // { dg-do preprocess } |
| |
| // The .section directive changes the section for all following symbols. |
| .section .text |
| // { dg-final { scan-symbol-section "dg-scan-symbol-section-exp-P.i" {^_test_function_1$} {^\.text$} } } |
| _test_function_1: |
| // { dg-final { scan-symbol-section "dg-scan-symbol-section-exp-P.i" {^_test_function_2$} {^\.text$} } } |
| _test_function_2: |
| |
| // For ELF targets, the .section directive can take multiple arguments. |
| .section .other_text_section,"ax",progbits |
| // { dg-final { scan-symbol-section "dg-scan-symbol-section-exp-P.i" {^_test_elf_function$} {^\.other_text_section$} } } |
| _test_elf_function: |
| |
| // For Mach-O targets, the .section directive takes a segment name and a section name. |
| .section __TEXT,__my_text_section |
| // { dg-final { scan-symbol-section "dg-scan-symbol-section-exp-P.i" {^_test_macho_function$} {^__TEXT,__my_text_section$} } } |
| _test_macho_function: |
| // Extra whitespace between .section arguments should be ignored. |
| .section __DATA , __testsection |
| // { dg-final { scan-symbol-section "dg-scan-symbol-section-exp-P.i" {^_test_macho_var$} {^__DATA,__testsection$} } } |
| _test_macho_var: |
| |
| // The .data directive sets the section for all following symbols to '.data'. |
| // { dg-final { scan-symbol-section "dg-scan-symbol-section-exp-P.i" {^_test_var_1$} {^\.data$} } } |
| .data |
| _test_var_1: |
| |
| // The .text directive sets the section for all following symbols to '.text'. |
| // { dg-final { scan-symbol-section "dg-scan-symbol-section-exp-P.i" {^_test_function_3$} {^\.text$} } } |
| .text |
| _test_function_3: |
| |
| // The .const directive sets the section for all following symbols to '.const'. |
| // { dg-final { scan-symbol-section "dg-scan-symbol-section-exp-P.i" {^_test_data_1$} {^\.const$} } } |
| .const |
| _test_data_1: |
| |
| // Other directives do not affect the section of following symbols. |
| // { dg-final { scan-symbol-section "dg-scan-symbol-section-exp-P.i" {^_test_var_2$} {^\.data$} } } |
| .data |
| .p2align 2 |
| .size _test_var_2, 4 |
| _test_var_2: |
| |
| // Symbol name patterns can match multiple symbols, and section name patterns |
| // can match multiple sections. |
| // { dg-final { scan-symbol-section "dg-scan-symbol-section-exp-P.i" {^_test_function_} {^(\.|__TEXT,).*text} } } |