1# REQUIRES: x86 2# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t 3# RUN: echo "SECTIONS { \ 4# RUN: . = 0x1000; \ 5# RUN: .aaa : AT(0x2000) { *(.aaa) } \ 6# RUN: .bbb : { *(.bbb) } \ 7# RUN: .ccc : AT(0x3000) { *(.ccc) } \ 8# RUN: .ddd : AT(0x4000) { *(.ddd) } \ 9# RUN: .eee 0x5000 : AT(0x5000) { *(.eee) } \ 10# RUN: }" > %t.script 11# RUN: ld.lld %t --script %t.script -o %t2 12# RUN: llvm-readobj -program-headers %t2 | FileCheck %s 13 14# CHECK: ProgramHeaders [ 15# CHECK-NEXT: ProgramHeader { 16# CHECK-NEXT: Type: PT_PHDR 17# CHECK-NEXT: Offset: 0x40 18# CHECK-NEXT: VirtualAddress: 0x40 19# CHECK-NEXT: PhysicalAddress: 0x40 20# CHECK-NEXT: FileSize: 21# CHECK-NEXT: MemSize: 22# CHECK-NEXT: Flags [ 23# CHECK-NEXT: PF_R 24# CHECK-NEXT: ] 25# CHECK-NEXT: Alignment: 8 26# CHECK-NEXT: } 27# CHECK-NEXT: ProgramHeader { 28# CHECK-NEXT: Type: PT_LOAD 29# CHECK-NEXT: Offset: 0x0 30# CHECK-NEXT: VirtualAddress: 0x0 31# CHECK-NEXT: PhysicalAddress: 0x0 32# CHECK-NEXT: FileSize: 33# CHECK-NEXT: MemSize: 34# CHECK-NEXT: Flags [ 35# CHECK-NEXT: PF_R 36# CHECK-NEXT: PF_X 37# CHECK-NEXT: ] 38# CHECK-NEXT: Alignment: 39# CHECK-NEXT: } 40# CHECK-NEXT: ProgramHeader { 41# CHECK-NEXT: Type: PT_LOAD 42# CHECK-NEXT: Offset: 0x1000 43# CHECK-NEXT: VirtualAddress: 0x1000 44# CHECK-NEXT: PhysicalAddress: 0x2000 45# CHECK-NEXT: FileSize: 16 46# CHECK-NEXT: MemSize: 16 47# CHECK-NEXT: Flags [ 48# CHECK-NEXT: PF_R 49# CHECK-NEXT: PF_X 50# CHECK-NEXT: ] 51# CHECK-NEXT: Alignment: 52# CHECK-NEXT: } 53# CHECK-NEXT: ProgramHeader { 54# CHECK-NEXT: Type: PT_LOAD 55# CHECK-NEXT: Offset: 0x1010 56# CHECK-NEXT: VirtualAddress: 0x1010 57# CHECK-NEXT: PhysicalAddress: 0x3000 58# CHECK-NEXT: FileSize: 8 59# CHECK-NEXT: MemSize: 8 60# CHECK-NEXT: Flags [ 61# CHECK-NEXT: PF_R 62# CHECK-NEXT: PF_X 63# CHECK-NEXT: ] 64# CHECK-NEXT: Alignment: 4096 65# CHECK-NEXT: } 66# CHECK-NEXT: ProgramHeader { 67# CHECK-NEXT: Type: PT_LOAD 68# CHECK-NEXT: Offset: 0x1018 69# CHECK-NEXT: VirtualAddress: 0x1018 70# CHECK-NEXT: PhysicalAddress: 0x4000 71# CHECK-NEXT: FileSize: 8 72# CHECK-NEXT: MemSize: 8 73# CHECK-NEXT: Flags [ 74# CHECK-NEXT: PF_R 75# CHECK-NEXT: PF_X 76# CHECK-NEXT: ] 77# CHECK-NEXT: Alignment: 4096 78# CHECK-NEXT: } 79# CHECK-NEXT: ProgramHeader { 80# CHECK-NEXT: Type: PT_LOAD 81# CHECK-NEXT: Offset: 0x2000 82# CHECK-NEXT: VirtualAddress: 0x5000 83# CHECK-NEXT: PhysicalAddress: 0x5000 84# CHECK-NEXT: FileSize: 9 85# CHECK-NEXT: MemSize: 9 86# CHECK-NEXT: Flags [ 87# CHECK-NEXT: PF_R 88# CHECK-NEXT: PF_X 89# CHECK-NEXT: ] 90# CHECK-NEXT: Alignment: 4096 91# CHECK-NEXT: } 92# CHECK-NEXT: ProgramHeader { 93# CHECK-NEXT: Type: PT_GNU_STACK 94# CHECK-NEXT: Offset: 95# CHECK-NEXT: VirtualAddress: 0x0 96# CHECK-NEXT: PhysicalAddress: 0x0 97# CHECK-NEXT: FileSize: 98# CHECK-NEXT: MemSize: 99# CHECK-NEXT: Flags [ 100# CHECK-NEXT: PF_R 101# CHECK-NEXT: PF_W 102# CHECK-NEXT: ] 103# CHECK-NEXT: Alignment: 0 104# CHECK-NEXT: } 105# CHECK-NEXT: ] 106 107.global _start 108_start: 109 nop 110 111.section .aaa, "a" 112.quad 0 113 114.section .bbb, "a" 115.quad 0 116 117.section .ccc, "a" 118.quad 0 119 120.section .ddd, "a" 121.quad 0 122 123.section .eee, "a" 124.quad 0 125