34 lines · plain
1# REQUIRES: x862# RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o %t.o3 4## -z noseparate-code is the default. All PT_LOAD can have overlapping p_offset5## ranges at runtime.6# RUN: ld.lld -pie %t.o -o %t7# RUN: llvm-readelf -l %t | FileCheck --check-prefix=NONE %s8# NONE: LOAD 0x000000 0x0000000000000000 0x0000000000000000 0x000245 0x000245 R 0x10009# NONE-NEXT: LOAD 0x000248 0x0000000000001248 0x0000000000001248 0x000001 0x000001 R E 0x100010# NONE-NEXT: LOAD 0x000250 0x0000000000002250 0x0000000000002250 0x000090 0x000db0 RW 0x100011# NONE-NEXT: LOAD 0x0002e0 0x00000000000032e0 0x00000000000032e0 0x000001 0x000001 RW 0x100012 13## -z separate-code makes text segment (RX) separate.14## The two RW can have overlapping p_offset ranges at runtime.15# RUN: ld.lld -pie %t.o -z separate-code -o %t16# RUN: llvm-readelf -l %t | FileCheck --check-prefix=CODE %s17# CODE: LOAD 0x000000 0x0000000000000000 0x0000000000000000 0x000245 0x000245 R 0x100018# CODE-NEXT: LOAD 0x001000 0x0000000000001000 0x0000000000001000 0x000001 0x000001 R E 0x100019# CODE-NEXT: LOAD 0x002000 0x0000000000002000 0x0000000000002000 0x000090 0x001000 RW 0x100020# CODE-NEXT: LOAD 0x002090 0x0000000000003090 0x0000000000003090 0x000001 0x000001 RW 0x100021 22## -z separate-loadable-segments makes all segments separate.23# RUN: ld.lld -pie %t.o -z separate-loadable-segments -o %t24# RUN: llvm-readelf -l %t | FileCheck --check-prefix=ALL %s25# ALL: LOAD 0x000000 0x0000000000000000 0x0000000000000000 0x000245 0x000245 R 0x100026# ALL-NEXT: LOAD 0x001000 0x0000000000001000 0x0000000000001000 0x000001 0x000001 R E 0x100027# ALL-NEXT: LOAD 0x002000 0x0000000000002000 0x0000000000002000 0x000090 0x001000 RW 0x100028# ALL-NEXT: LOAD 0x003000 0x0000000000003000 0x0000000000003000 0x000001 0x000001 RW 0x100029 30nop31 32.data33.byte 034