blob: a6392b315870c26b0def10d3b4ed397d113c3221 [file] [edit]
# REQUIRES: x86
## Test INCLUDE inside an output section description.
# RUN: rm -rf %t && split-file %s %t && cd %t
# RUN: llvm-mc -filetype=obj -triple=x86_64 a.s -o a.o
## Empty include file.
# RUN: cp empty.lds inc.lds
# RUN: ld.lld -T a.lds a.o
# RUN: llvm-objdump --section-headers a.out | FileCheck %s --check-prefix=CHECK1
# CHECK1: .data 00000008 0000000000002000 DATA
## Non-empty include file.
# RUN: cp full.lds inc.lds
# RUN: ld.lld -T a.lds a.o
# RUN: llvm-objdump --section-headers a.out | FileCheck %s --check-prefix=CHECK2
# CHECK2: .data 00000010 0000000000002000 DATA
## A BYTE() with an unclosed paren in the include cannot be completed by the
## parent output-section body.
# RUN: cp trunc.lds inc.lds
# RUN: not ld.lld -T a.lds a.o 2>&1 | FileCheck %s --check-prefix=TRUNC
# TRUNC: error: inc.lds:1: unexpected EOF
#--- a.s
.section .text,"ax"
.global _start
_start: nop
.section .data,"aw"
.quad 0
#--- a.lds
MEMORY {
ROM (rwx): ORIGIN = 0x1000, LENGTH = 0x100
RAM (rwx): ORIGIN = 0x2000, LENGTH = 0x100
}
SECTIONS {
.text : { *(.text*) } > ROM
.data : {
*(.data*)
INCLUDE "inc.lds"
} > RAM
}
#--- empty.lds
#--- full.lds
QUAD(0)
#--- trunc.lds
BYTE(42