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