86 lines · plain
1# REQUIRES: x862 3# Test that mimics a use case of -n to produce a kernel mapped shared-object4# in a non paged context. We specifically want to test:5# - We can allocate the headers into the first program header (via PHDRS)6# typically -n does not allocate headers.7# - The alignment of the .text section is not page aligned.8 9# RUN: echo ".text; .globl foo; foo: nop" > %t.s10# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %t.s -o %t.o11# RUN: ld.lld %t.o -o %t.so --shared --hash-style=sysv --script %s12# RUN: llvm-readobj --program-headers %t.so | FileCheck %s13# RUN: ld.lld %t.o -o %t2.so --shared --hash-style=sysv -n --script %s14# RUN: llvm-readobj --program-headers %t2.so | FileCheck %s --check-prefix=CHECK-N15 16SECTIONS {17 . = 0x0 + SIZEOF_HEADERS;18 .hash : { *(.hash) } :text19 .dynsym : { *(.dynsym) }20 .dynstr : { *(.dynstr) }21 . = ALIGN(4);22 .text : { *(.text*) }23 .dynamic : { *(.dynamic) } :text :dynamic24}25 26PHDRS {27 text PT_LOAD FLAGS(5) FILEHDR PHDRS;28 dynamic PT_DYNAMIC FLAGS(4);29}30 31# CHECK: ProgramHeaders [32# CHECK-NEXT: ProgramHeader {33# CHECK-NEXT: Type: PT_LOAD34# CHECK-NEXT: Offset: 0x035# CHECK-NEXT: VirtualAddress: 0x036# CHECK-NEXT: PhysicalAddress: 0x037# CHECK-NEXT: FileSize:38# CHECK-NEXT: MemSize:39# CHECK-NEXT: Flags [40# CHECK-NEXT: PF_R41# CHECK-NEXT: PF_X42# CHECK-NEXT: ]43# CHECK-NEXT: Alignment: 409644# CHECK-NEXT: }45# CHECK-NEXT: ProgramHeader {46# CHECK-NEXT: Type: PT_DYNAMIC47# CHECK-NEXT: Offset: 0x10848# CHECK-NEXT: VirtualAddress: 0x10849# CHECK-NEXT: PhysicalAddress: 0x10850# CHECK-NEXT: FileSize:51# CHECK-NEXT: MemSize:52# CHECK-NEXT: Flags [53# CHECK-NEXT: PF_R54# CHECK-NEXT: ]55# CHECK-NEXT: Alignment: 856# CHECK-NEXT: }57# CHECK-NEXT: ]58 59# CHECK-N: ProgramHeaders [60# CHECK-N-NEXT: ProgramHeader {61# CHECK-N-NEXT: Type: PT_LOAD62# CHECK-N-NEXT: Offset: 0x063# CHECK-N-NEXT: VirtualAddress: 0x064# CHECK-N-NEXT: PhysicalAddress: 0x065# CHECK-N-NEXT: FileSize: 36066# CHECK-N-NEXT: MemSize: 36067# CHECK-N-NEXT: Flags [68# CHECK-N-NEXT: PF_R69# CHECK-N-NEXT: PF_X70# CHECK-N-NEXT: ]71# CHECK-N-NEXT: Alignment: 872# CHECK-N-NEXT: }73# CHECK-N-NEXT: ProgramHeader {74# CHECK-N-NEXT: Type: PT_DYNAMIC75# CHECK-N-NEXT: Offset: 0x10876# CHECK-N-NEXT: VirtualAddress: 0x10877# CHECK-N-NEXT: PhysicalAddress: 0x10878# CHECK-N-NEXT: FileSize:79# CHECK-N-NEXT: MemSize:80# CHECK-N-NEXT: Flags [81# CHECK-N-NEXT: PF_R82# CHECK-N-NEXT: ]83# CHECK-N-NEXT: Alignment: 884# CHECK-N-NEXT: }85# CHECK-N-NEXT: ]86