| # 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 |