60 lines · plain
1# REQUIRES: x862# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t1.o3 4## Default is no PIE.5# RUN: ld.lld %t1.o -o %t6# RUN: llvm-readobj --file-headers --sections -l --symbols -r %t \7# RUN: | FileCheck %s --check-prefix=NOPIE8 9## Check -pie.10# RUN: ld.lld -pie %t1.o -o %t11# RUN: llvm-readobj --file-headers --sections -l -d --symbols -r %t | FileCheck %s12 13## Test --pic-executable alias14# RUN: ld.lld --pic-executable %t1.o -o %t15# RUN: llvm-readobj --file-headers --sections -l -d --symbols -r %t | FileCheck %s16 17# CHECK: ElfHeader {18# CHECK-NEXT: Ident {19# CHECK-NEXT: Magic: (7F 45 4C 46)20# CHECK-NEXT: Class: 64-bit21# CHECK-NEXT: DataEncoding: LittleEndian22# CHECK-NEXT: FileVersion: 123# CHECK-NEXT: OS/ABI: SystemV24# CHECK-NEXT: ABIVersion: 025# CHECK-NEXT: Unused: (00 00 00 00 00 00 00)26# CHECK-NEXT: }27# CHECK-NEXT: Type: SharedObject28 29# CHECK: ProgramHeaders [30# CHECK-NEXT: ProgramHeader {31# CHECK-NEXT: Type: PT_PHDR32# CHECK-NEXT: Offset: 0x4033# CHECK-NEXT: VirtualAddress: 0x4034# CHECK-NEXT: PhysicalAddress: 0x4035# CHECK-NEXT: FileSize:36# CHECK-NEXT: MemSize:37# CHECK-NEXT: Flags [38# CHECK-NEXT: PF_R39# CHECK-NEXT: ]40# CHECK-NEXT: Alignment: 841# CHECK-NEXT: }42# CHECK-NEXT: ProgramHeader {43# CHECK-NEXT: Type: PT_LOAD44# CHECK-NEXT: Offset: 0x045# CHECK-NEXT: VirtualAddress: 0x046# CHECK-NEXT: PhysicalAddress: 0x047 48# CHECK: Type: PT_DYNAMIC49 50# CHECK: DynamicSection [51# CHECK: 0x000000006FFFFFFB FLAGS_1 PIE52 53## Check -nopie54# RUN: ld.lld -no-pie %t1.o -o %t255# RUN: llvm-readobj --file-headers -r %t2 | FileCheck %s --check-prefix=NOPIE56# NOPIE-NOT: Type: SharedObject57 58.globl _start59_start:60