Previously, we reserved the first page for the program header, so no sections would be written to very beginning of the output file. FreeBSD requires .interp section be exist on the first page, so that was not good. This patch calculates the size of the program header and then assign addresses to the sections. Now the first section is located next to the program header. Because the first section is .interp, it's very likely to be on the first page. llvm-svn: 249957
73 lines
1.8 KiB
ArmAsm
73 lines
1.8 KiB
ArmAsm
# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t
|
|
# RUN: ld.lld2 %t -o %t2
|
|
# RUN: llvm-readobj -sections -program-headers %t2 | FileCheck %s
|
|
# REQUIRES: x86
|
|
|
|
# Check that different output sections with the same flags are merged into a
|
|
# single Read/Write PT_LOAD.
|
|
|
|
.section .r,"a"
|
|
.globl _start
|
|
_start:
|
|
.quad 0
|
|
|
|
.section .a,"aw"
|
|
.quad 1
|
|
|
|
.section .b,"aw"
|
|
.quad 2
|
|
|
|
# CHECK: Name: .r
|
|
# CHECK-NEXT: Type: SHT_PROGBITS
|
|
# CHECK-NEXT: Flags [
|
|
# CHECK-NEXT: SHF_ALLOC
|
|
# CHECK-NEXT: ]
|
|
# CHECK-NEXT: Address:
|
|
# CHECK-NEXT: Offset: 0xE8
|
|
# CHECK-NEXT: Size:
|
|
# CHECK-NEXT: Link:
|
|
# CHECK-NEXT: Info:
|
|
# CHECK-NEXT: AddressAlignment:
|
|
# CHECK-NEXT: EntrySize:
|
|
# CHECK-NEXT: }
|
|
|
|
# CHECK: ProgramHeaders [
|
|
# CHECK-NEXT: ProgramHeader {
|
|
# CHECK-NEXT: Type: PT_PHDR (0x6)
|
|
# CHECK-NEXT: Offset: 0x40
|
|
# CHECK-NEXT: VirtualAddress: 0x10040
|
|
# CHECK-NEXT: PhysicalAddress: 0x10040
|
|
# CHECK-NEXT: FileSize: 168
|
|
# CHECK-NEXT: MemSize: 168
|
|
# CHECK-NEXT: Flags [ (0x4)
|
|
# CHECK-NEXT: PF_R (0x4)
|
|
# CHECK-NEXT: ]
|
|
# CHECK-NEXT: Alignment: 8
|
|
# CHECK-NEXT: }
|
|
# CHECK-NEXT: ProgramHeader {
|
|
# CHECK-NEXT: Type: PT_LOAD
|
|
# CHECK-NEXT: Offset: 0x0
|
|
# CHECK-NEXT: VirtualAddress:
|
|
# CHECK-NEXT: PhysicalAddress:
|
|
# CHECK-NEXT: FileSize: 240
|
|
# CHECK-NEXT: MemSize: 240
|
|
# CHECK-NEXT: Flags [
|
|
# CHECK-NEXT: PF_R
|
|
# CHECK-NEXT: ]
|
|
# CHECK-NEXT: Alignment:
|
|
# CHECK-NEXT: }
|
|
# CHECK-NEXT: ProgramHeader {
|
|
# CHECK-NEXT: Type: PT_LOAD
|
|
# CHECK-NEXT: Offset:
|
|
# CHECK-NEXT: VirtualAddress:
|
|
# CHECK-NEXT: PhysicalAddress:
|
|
# CHECK-NEXT: FileSize: 16
|
|
# CHECK-NEXT: MemSize: 16
|
|
# CHECK-NEXT: Flags [
|
|
# CHECK-NEXT: PF_R
|
|
# CHECK-NEXT: PF_W
|
|
# CHECK-NEXT: ]
|
|
# CHECK-NEXT: Alignment:
|
|
# CHECK-NEXT: }
|
|
# CHECK-NEXT: ]
|