llvm-project/lld/test/elf/linkerscript/phdrs-flags.test
Denis Protivensky cdc1246750 [ELF] Apply segments from linker scripts
Put sections to segments according to linker scripts if available.
Rework the code of TargetLayout::assignSectionsToSegments so it operates
on the given list of segments, which can be either read from linker scripts
or constructed as before.
Handle NONE segments defined in linker scripts by putting corresponding sections
to PT_NULL segment.
Consider flags set for segments through linker scripts.

Differential Revision: http://reviews.llvm.org/D10918

llvm-svn: 243002
2015-07-23 10:34:30 +00:00

47 lines
1.1 KiB
Plaintext

/*
Test sections put to different segments with FLAGS attribute set.
RUN: yaml2obj -format=elf %p/Inputs/simple.o.yaml -o=%t.o
RUN: lld -flavor gnu -target x86_64 -T %s %t.o -static -o %t1
RUN: llvm-objdump -section-headers %t1 | FileCheck -check-prefix FLAGS-PHDRS-SECS %s
RUN: llvm-readobj -program-headers %t1 | FileCheck -check-prefix FLAGS-PHDRS-HDRS %s
*/
ENTRY(_start)
PHDRS
{
text PT_LOAD FLAGS(0x5);
data PT_LOAD FLAGS(0x7);
}
SECTIONS
{
.text : { *(.text) } :text
.data : { *(.data) } :data
}
/*
FLAGS-PHDRS-SECS: .text {{[0-9a-f]+}} 0000000000401000
FLAGS-PHDRS-SECS: .data {{[0-9a-f]+}} 00000000004000e8
FLAGS-PHDRS-HDRS: ProgramHeader {
FLAGS-PHDRS-HDRS: Type: PT_LOAD (0x1)
FLAGS-PHDRS-HDRS: VirtualAddress: 0x400000
FLAGS-PHDRS-HDRS: Flags [ (0x7)
FLAGS-PHDRS-HDRS: PF_R (0x4)
FLAGS-PHDRS-HDRS: PF_W (0x2)
FLAGS-PHDRS-HDRS: PF_X (0x1)
FLAGS-PHDRS-HDRS: ]
FLAGS-PHDRS-HDRS: }
FLAGS-PHDRS-HDRS: ProgramHeader {
FLAGS-PHDRS-HDRS: Type: PT_LOAD (0x1)
FLAGS-PHDRS-HDRS: VirtualAddress: 0x401000
FLAGS-PHDRS-HDRS: Flags [ (0x5)
FLAGS-PHDRS-HDRS: PF_R (0x4)
FLAGS-PHDRS-HDRS: PF_X (0x1)
FLAGS-PHDRS-HDRS: ]
FLAGS-PHDRS-HDRS: }
*/