| # REQUIRES: x86 | |
| ## Test quotation when specifying section names. | |
| # RUN: rm -rf %t && split-file %s %t && cd %t | |
| # RUN: llvm-mc -filetype=obj -triple=x86_64 a.s -o a.o | |
| # RUN: ld.lld -T a.t a.o | |
| # RUN: llvm-readelf -S -s a.out | FileCheck %s | |
| # CHECK: Name Type Address Off Size ES Flg Lk Inf Al | |
| # CHECK-NEXT: NULL 0000000000000000 000000 000000 00 0 0 0 | |
| # CHECK-NEXT: .text {{.*}} | |
| # CHECK-NEXT: .data {{.*}} | |
| # CHECK: Num: Value Size Type Bind Vis Ndx Name | |
| # CHECK-NEXT: 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND | |
| # CHECK-NEXT: 1: 0000000000000009 0 NOTYPE GLOBAL DEFAULT ABS text_size | |
| # CHECK-NEXT: 2: 0000000000000009 0 NOTYPE GLOBAL DEFAULT ABS data_size | |
| #--- a.s | |
| .text | |
| nop | |
| .data | |
| .byte 0 | |
| #--- a.t | |
| SECTIONS { | |
| ## Check quoted section names are accepted and quotes are removed in the | |
| ## output binary section name. | |
| ## | |
| ## Also check that functions taking a section name as parameter work correctly | |
| ## when quoted section names are provided as inputs. | |
| ".text" : AT(ADDR(".text")) { | |
| LONG (ALIGNOF(".text")) | |
| LONG (LOADADDR(".text")) | |
| *(.text) | |
| } | |
| text_size = SIZEOF(".text"); | |
| ## Check that functions that take a section name can correctly match a quoted | |
| ## section name input parameter against a non-quoted section definition. | |
| .data : AT(ADDR(".data")) { | |
| LONG (ALIGNOF(".data")) | |
| LONG (LOADADDR(".data")) | |
| *(.data) | |
| } | |
| data_size = SIZEOF(".data"); | |
| } |