Linker scripts may specify PHDRS, but not specify section to
segment assignments, i.e:
PHDRS { seg PT_LOAD; }
SECTIONS {
.sec1 {} : seg
.sec2 {}
}
In such case linker should still choose some segment for .sec2 section.
This patch will add .sec2 to previously opened segments (seg) or to the
very first PT_LOAD segment, if no section-to-segment assignments has been
made
Differential revision: https://reviews.llvm.org/D24795
llvm-svn: 284600
24 lines
831 B
ArmAsm
24 lines
831 B
ArmAsm
# RUN: llvm-mc -filetype=obj -triple=i686-unknown-linux %s -o %t.o
|
|
# RUN: echo "PHDRS { text PT_LOAD FILEHDR PHDRS; rand PT_OPENBSD_RANDOMIZE; } \
|
|
# RUN: SECTIONS { . = SIZEOF_HEADERS; \
|
|
# RUN: .text : { *(.text) } \
|
|
# RUN: .openbsd.randomdata : { *(.openbsd.randomdata) } : rand }" > %t.script
|
|
# RUN: ld.lld --script %t.script %t.o -o %t
|
|
# RUN: llvm-readobj --program-headers -s %t | FileCheck %s
|
|
|
|
# CHECK: ProgramHeader {
|
|
# CHECK: Type: PT_OPENBSD_RANDOMIZE (0x65A3DBE6)
|
|
# CHECK-NEXT: Offset: 0x74
|
|
# CHECK-NEXT: VirtualAddress: 0x74
|
|
# CHECK-NEXT: PhysicalAddress: 0x74
|
|
# CHECK-NEXT: FileSize: 8
|
|
# CHECK-NEXT: MemSize: 8
|
|
# CHECK-NEXT: Flags [ (0x4)
|
|
# CHECK-NEXT: PF_R (0x4)
|
|
# CHECK-NEXT: ]
|
|
# CHECK-NEXT: Alignment: 1
|
|
# CHECK-NEXT: }
|
|
|
|
.section .openbsd.randomdata, "a"
|
|
.quad 0
|