# 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