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
47 lines
1.1 KiB
Plaintext
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: }
|
|
*/
|