diff options
Diffstat (limited to 'test/ELF/linkerscript')
| -rw-r--r-- | test/ELF/linkerscript/discard-section-err.s | 23 | ||||
| -rw-r--r-- | test/ELF/linkerscript/sections.s | 6 | ||||
| -rw-r--r-- | test/ELF/linkerscript/segment-none.s | 39 | ||||
| -rw-r--r-- | test/ELF/linkerscript/ttext-script.s | 11 |
4 files changed, 73 insertions, 6 deletions
diff --git a/test/ELF/linkerscript/discard-section-err.s b/test/ELF/linkerscript/discard-section-err.s new file mode 100644 index 0000000000000..5d9955545d920 --- /dev/null +++ b/test/ELF/linkerscript/discard-section-err.s @@ -0,0 +1,23 @@ +# REQUIRES: x86 + +# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.o + +# RUN: echo "SECTIONS { /DISCARD/ : { *(.shstrtab) } }" > %t.script +# RUN: not ld.lld -o %t --script %t.script %t.o 2>&1 | \ +# RUN: FileCheck -check-prefix=SHSTRTAB %s +# SHSTRTAB: discarding .shstrtab section is not allowed + +# RUN: echo "SECTIONS { /DISCARD/ : { *(.dynamic) } }" > %t.script +# RUN: not ld.lld -pie -o %t --script %t.script %t.o 2>&1 | \ +# RUN: FileCheck -check-prefix=DYNAMIC %s +# DYNAMIC: discarding .dynamic section is not allowed + +# RUN: echo "SECTIONS { /DISCARD/ : { *(.dynsym) } }" > %t.script +# RUN: not ld.lld -pie -o %t --script %t.script %t.o 2>&1 | \ +# RUN: FileCheck -check-prefix=DYNSYM %s +# DYNSYM: discarding .dynsym section is not allowed + +# RUN: echo "SECTIONS { /DISCARD/ : { *(.dynstr) } }" > %t.script +# RUN: not ld.lld -pie -o %t --script %t.script %t.o 2>&1 | \ +# RUN: FileCheck -check-prefix=DYNSTR %s +# DYNSTR: discarding .dynstr section is not allowed diff --git a/test/ELF/linkerscript/sections.s b/test/ELF/linkerscript/sections.s index d5645c3037546..dd4b12f42b895 100644 --- a/test/ELF/linkerscript/sections.s +++ b/test/ELF/linkerscript/sections.s @@ -67,12 +67,6 @@ # SEC-SWAP-NAMES: 7 .shstrtab 0000003b {{[0-9a-f]*}} # SEC-SWAP-NAMES: 8 .strtab 00000008 {{[0-9a-f]*}} -# Attemp to discard .shstrtab section. -# RUN: echo "SECTIONS { /DISCARD/ : { *(.shstrtab) } }" > %t.script -# RUN: not ld.lld -o %t5 --script %t.script %t 2>&1 | \ -# RUN: FileCheck -check-prefix=SEC-DISCARD %s -# SEC-DISCARD: discarding .shstrtab section is not allowed - # Multiple SECTIONS command specifying additional input section descriptions # for the same output section description - input sections are merged into # one output section. diff --git a/test/ELF/linkerscript/segment-none.s b/test/ELF/linkerscript/segment-none.s new file mode 100644 index 0000000000000..d54e835a0c224 --- /dev/null +++ b/test/ELF/linkerscript/segment-none.s @@ -0,0 +1,39 @@ +# REQUIRES: x86 +# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.o + +## Test that section .foo is not placed in any segment when assigned to segment +## NONE in the linker script and segment NONE is not defined. +# RUN: echo "PHDRS {text PT_LOAD;} \ +# RUN: SECTIONS { \ +# RUN: .text : {*(.text .text*)} :text \ +# RUN: .foo : {*(.foo)} :NONE \ +# RUN: }" > %t.script +# RUN: ld.lld -o %t --script %t.script %t.o +# RUN: llvm-readobj -elf-output-style=GNU -s -l %t | FileCheck %s + +## Test that section .foo is placed in segment NONE when assigned to segment +## NONE in the linker script and segment NONE is defined. +# RUN: echo "PHDRS {text PT_LOAD; NONE PT_LOAD;} \ +# RUN: SECTIONS { \ +# RUN: .text : {*(.text .text*)} :text \ +# RUN: .foo : {*(.foo)} :NONE \ +# RUN: }" > %t.script +# RUN: ld.lld -o %t --script %t.script %t.o +# RUN: llvm-readobj -elf-output-style=GNU -s -l %t | FileCheck --check-prefix=DEFINED %s + +# CHECK: Section to Segment mapping: +# CHECK-NEXT: Segment Sections... +# CHECK-NOT: .foo + +# DEFINED: Section to Segment mapping: +# DEFINED-NEXT: Segment Sections... +# DEFINED-NEXT: 00 .text +# DEFINED-NEXT: 01 .foo + +.global _start +_start: + nop + +.section .foo,"a" +foo: + .long 0 diff --git a/test/ELF/linkerscript/ttext-script.s b/test/ELF/linkerscript/ttext-script.s new file mode 100644 index 0000000000000..9dcde9bb13c5e --- /dev/null +++ b/test/ELF/linkerscript/ttext-script.s @@ -0,0 +1,11 @@ +# REQUIRES: x86 +# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o +# RUN: echo "SECTIONS { .text 0x200000 : { *(.text) } }" > %t.script +# RUN: ld.lld -T %t.script -Ttext 0x100000 %t.o -o %t +# RUN: llvm-readobj --elf-output-style=GNU -s %t | FileCheck %s + +# CHECK: .text PROGBITS 0000000000100000 + +.global _start +_start: +nop |
