1# REQUIRES: x86 2# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t 3# RUN: ld.lld -image-base=0x1000000 %t -o %t1 4# RUN: llvm-readobj -program-headers %t1 | FileCheck %s 5 6# RUN: ld.lld -image-base=0x1000 -z max-page-size=0x2000 %t -o %t1 2>&1 | FileCheck --check-prefix=WARN %s 7# WARN: warning: -image-base: address isn't multiple of page size: 0x1000 8 9 10.global _start 11_start: 12 nop 13 14# CHECK: ProgramHeaders [ 15# CHECK-NEXT: ProgramHeader { 16# CHECK-NEXT: Type: PT_PHDR (0x6) 17# CHECK-NEXT: Offset: 0x40 18# CHECK-NEXT: VirtualAddress: 0x1000040 19# CHECK-NEXT: PhysicalAddress: 0x1000040 20# CHECK-NEXT: FileSize: 224 21# CHECK-NEXT: MemSize: 224 22# CHECK-NEXT: Flags [ (0x4) 23# CHECK-NEXT: PF_R (0x4) 24# CHECK-NEXT: ] 25# CHECK-NEXT: Alignment: 8 26# CHECK-NEXT: } 27# CHECK-NEXT: ProgramHeader { 28# CHECK-NEXT: Type: PT_LOAD (0x1) 29# CHECK-NEXT: Offset: 0x0 30# CHECK-NEXT: VirtualAddress: 0x1000000 31# CHECK-NEXT: PhysicalAddress: 0x1000000 32# CHECK-NEXT: FileSize: 288 33# CHECK-NEXT: MemSize: 288 34# CHECK-NEXT: Flags [ (0x4) 35# CHECK-NEXT: PF_R (0x4) 36# CHECK-NEXT: ] 37# CHECK-NEXT: Alignment: 4096 38# CHECK-NEXT: } 39# CHECK-NEXT: ProgramHeader { 40# CHECK-NEXT: Type: PT_LOAD (0x1) 41# CHECK-NEXT: Offset: 0x1000 42# CHECK-NEXT: VirtualAddress: 0x1001000 43# CHECK-NEXT: PhysicalAddress: 0x1001000 44# CHECK-NEXT: FileSize: 1 45# CHECK-NEXT: MemSize: 1 46# CHECK-NEXT: Flags [ (0x5) 47# CHECK-NEXT: PF_R (0x4) 48# CHECK-NEXT: PF_X (0x1) 49# CHECK-NEXT: ] 50# CHECK-NEXT: Alignment: 4096 51# CHECK-NEXT: } 52# CHECK-NEXT: ProgramHeader { 53# CHECK-NEXT: Type: PT_GNU_STACK (0x6474E551) 54# CHECK-NEXT: Offset: 0x0 55# CHECK-NEXT: VirtualAddress: 0x0 56# CHECK-NEXT: PhysicalAddress: 0x0 57# CHECK-NEXT: FileSize: 0 58# CHECK-NEXT: MemSize: 0 59# CHECK-NEXT: Flags [ (0x6) 60# CHECK-NEXT: PF_R (0x4) 61# CHECK-NEXT: PF_W (0x2) 62# CHECK-NEXT: ] 63# CHECK-NEXT: Alignment: 0 64# CHECK-NEXT: } 65