| /* |
| This group of tests checks usage of default headers during linking, |
| when PHDRS command is not defined or defined empty 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 when no linker script passed. |
| |
| RUN: lld -flavor old-gnu -target x86_64 %t.o -static -o %t1 |
| RUN: llvm-objdump -section-headers %t1 | FileCheck -check-prefix SECTIONS %s |
| RUN: llvm-readobj -program-headers %t1 | FileCheck -check-prefix HEADERS %s |
| |
| SECTIONS: .text {{[0-9a-f]+}} 00000000004000b0 |
| SECTIONS: .data {{[0-9a-f]+}} 0000000000401000 |
| |
| HEADERS: ProgramHeader { |
| HEADERS: Type: PT_LOAD (0x1) |
| HEADERS: VirtualAddress: 0x400000 |
| HEADERS: } |
| HEADERS: ProgramHeader { |
| HEADERS: Type: PT_LOAD (0x1) |
| HEADERS: VirtualAddress: 0x401000 |
| HEADERS: } |
| */ |
| |
| /* |
| Test when linker script doesn't contain PHDRS and sections are not assigned to any segments. |
| |
| RUN: lld -flavor old-gnu -target x86_64 -T %p/phdrs/sections-no-phdrs.script %t.o -static -o %t2 |
| RUN: llvm-objdump -section-headers %t2 | FileCheck -check-prefix SECTIONS %s |
| RUN: llvm-readobj -program-headers %t2 | FileCheck -check-prefix HEADERS %s |
| */ |
| |
| /* |
| Test when linker script contains empty PHDRS and sections are not assigned to any segments. |
| |
| RUN: lld -flavor old-gnu -target x86_64 -T %p/phdrs/sections-empty-phdrs.script %t.o -static -o %t3 |
| RUN: llvm-objdump -section-headers %t3 | FileCheck -check-prefix SECTIONS %s |
| RUN: llvm-readobj -program-headers %t3 | FileCheck -check-prefix HEADERS %s |
| */ |
| |
| /* |
| Test when linker script contains empty PHDRS and sections are only assigned to NONE segments |
| or not assigned at all. |
| NOTE: Segments with the name NONE are ignored in such a case. |
| |
| RUN: lld -flavor old-gnu -target x86_64 -T %p/phdrs/sections-none-phdrs.script %t.o -static -o %t4 |
| RUN: llvm-objdump -section-headers %t4 | FileCheck -check-prefix SECTIONS %s |
| RUN: llvm-readobj -program-headers %t4 | FileCheck -check-prefix HEADERS %s |
| */ |