# This test simply tests a simple but common real world example of overlapping # segments. # RUN: llvm-objcopy %p/Inputs/pt-phdr.elf %t # RUN: llvm-readobj --program-headers %t | FileCheck %s #CHECK: ProgramHeaders [ #CHECK-NEXT: ProgramHeader { #CHECK-NEXT: Type: PT_PHDR #CHECK-NEXT: Offset: 0x40 #CHECK-NEXT: VirtualAddress: 0x200040 #CHECK-NEXT: PhysicalAddress: 0x200040 #CHECK-NEXT: FileSize: 280 #CHECK-NEXT: MemSize: 280 #CHECK-NEXT: Flags [ #CHECK-NEXT: PF_R #CHECK-NEXT: ] #CHECK-NEXT: Alignment: 8 #CHECK-NEXT: } #CHECK-NEXT: ProgramHeader { #CHECK-NEXT: Type: PT_LOAD #CHECK-NEXT: Offset: 0x0 #CHECK-NEXT: VirtualAddress: 0x200000 #CHECK-NEXT: PhysicalAddress: 0x200000 #CHECK-NEXT: FileSize: 344 #CHECK-NEXT: MemSize: 344 #CHECK-NEXT: Flags [ #CHECK-NEXT: PF_R #CHECK-NEXT: ] #CHECK-NEXT: Alignment: 4096 #CHECK-NEXT: } #CHECK-NEXT: ProgramHeader { #CHECK-NEXT: Type: PT_LOAD #CHECK-NEXT: Offset: 0x1000 #CHECK-NEXT: VirtualAddress: 0x201000 #CHECK-NEXT: PhysicalAddress: 0x201000 #CHECK-NEXT: FileSize: 1 #CHECK-NEXT: MemSize: 1 #CHECK-NEXT: Flags [ #CHECK-NEXT: PF_R #CHECK-NEXT: PF_X #CHECK-NEXT: ] #CHECK-NEXT: Alignment: 4096 #CHECK-NEXT: } #CHECK-NEXT: ProgramHeader { #CHECK-NEXT: Type: PT_LOAD #CHECK-NEXT: Offset: 0x2000 #CHECK-NEXT: VirtualAddress: 0x202000 #CHECK-NEXT: PhysicalAddress: 0x202000 #CHECK-NEXT: FileSize: 14 #CHECK-NEXT: MemSize: 14 #CHECK-NEXT: Flags [ #CHECK-NEXT: PF_R #CHECK-NEXT: PF_W #CHECK-NEXT: ] #CHECK-NEXT: Alignment: 4096 #CHECK-NEXT: } #CHECK-NEXT: ProgramHeader { #CHECK-NEXT: Type: PT_GNU_STACK (0x6474E551) #CHECK-NEXT: Offset: 0x0 #CHECK-NEXT: VirtualAddress: 0x0 #CHECK-NEXT: PhysicalAddress: 0x0 #CHECK-NEXT: FileSize: 0 #CHECK-NEXT: MemSize: 0 #CHECK-NEXT: Flags [ #CHECK-NEXT: PF_R #CHECK-NEXT: PF_W #CHECK-NEXT: ] #CHECK-NEXT: Alignment: 0 #CHECK-NEXT: } #CHECK-NEXT:]