Add method to query segments for specified output section name. Return error if the section is assigned to unknown segment. Check matching of sections to segments during layout on the subject of correctness. NOTE: no actual functionality of using custom segments is implemented. Differential Revision: http://reviews.llvm.org/D10359 llvm-svn: 239719
64 lines
1.5 KiB
Plaintext
64 lines
1.5 KiB
Plaintext
/*
|
|
This group of tests checks invalid cases of defining and using PHDRS
|
|
command in linker scripts.
|
|
|
|
This test uses a single X86-64 input object, simple.o, created with the
|
|
following X86-64 assembly code:
|
|
|
|
*** simple.S:
|
|
|
|
(command line clang -c simple.S -o simple.o)
|
|
|
|
.text
|
|
main:
|
|
mov $1, %eax
|
|
movq $1, %rdi
|
|
movq $msg, %rsi
|
|
movq $14, %rdx
|
|
syscall
|
|
ret
|
|
|
|
.globl _start
|
|
_start:
|
|
call main
|
|
mov $60, %eax
|
|
syscall
|
|
ret
|
|
|
|
.data
|
|
msg: .asciz "Hello, World!\n"
|
|
*/
|
|
|
|
/*
|
|
Prepare the object file to test on.
|
|
|
|
RUN: yaml2obj -format=elf %p/Inputs/simple.o.yaml -o=%t.o
|
|
*/
|
|
|
|
/*
|
|
Test undefined header used when no PHDRS defined.
|
|
|
|
RUN: not lld -flavor gnu -target x86_64 -T %p/phdrs/undef-no-phdrs.script %t.o -static -o %t1 &> %t1-error
|
|
RUN: FileCheck -check-prefix UNDEF-NO-PHDRS %s < %t1-error
|
|
|
|
UNDEF-NO-PHDRS: Linker script has wrong segments set for output sections
|
|
*/
|
|
|
|
/*
|
|
Test undefined header used when PHDRS is empty.
|
|
|
|
RUN: not lld -flavor gnu -target x86_64 -T %p/phdrs/undef-empty-phdrs.script %t.o -static -o %t2 &> %t2-error
|
|
RUN: FileCheck -check-prefix UNDEF-EMPTY-PHDRS %s < %t2-error
|
|
|
|
UNDEF-EMPTY-PHDRS: Linker script has wrong segments set for output sections
|
|
*/
|
|
|
|
/*
|
|
Test undefined header used when PHDRS contains definitions.
|
|
|
|
RUN: not lld -flavor gnu -target x86_64 -T %p/phdrs/undef-id-phdrs.script %t.o -static -o %t3 &> %t3-error
|
|
RUN: FileCheck -check-prefix UNDEF-ID-PHDRS %s < %t3-error
|
|
|
|
UNDEF-ID-PHDRS: Linker script has wrong segments set for output sections
|
|
*/
|