brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.5 KiB · 9835004 Raw
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