Files
clang-p2996/lld/test/ELF/linkerscript/section-quotes.test
Roger Pau Monne 7cab385a8f [lld/elf] support quote usage in section names
Section names used in ELF linker scripts can be quoted, but such
quotes must not be propagated to the binary ELF section names.  As
such strip the quotes from the section names when processing them, and
also strip them from linker script functions that take section names
as parameters.

Reviewed By: MaskRay

Differential Revision: https://reviews.llvm.org/D124266
2023-07-05 14:56:16 -07:00

48 lines
1.5 KiB
Plaintext

# 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");
}