|
11 | 11 | # CHECK-NEXT: 2 .data 00000004 0000000000110000 DATA |
12 | 12 | # CHECK-NEXT: 3 .bss 00000004 0000000000200000 BSS |
13 | 13 |
|
| 14 | +## Check that PHDRS are allocated below .text if .text is below default |
| 15 | +## base for non-pie case |
| 16 | + |
| 17 | +# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o |
| 18 | +# RUN: ld.lld %t.o -Ttext=0x3000 -o %t |
| 19 | +# RUN: llvm-readelf -l %t | FileCheck --check-prefix=CHECK-TEXT %s |
| 20 | + |
| 21 | +# CHECK-TEXT: Program Headers: |
| 22 | +# CHECK-TEXT-NEXT: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align |
| 23 | +# CHECK-TEXT-NEXT: PHDR 0x000040 0x0000000000002040 0x0000000000002040 0x000118 0x000118 R 0x8 |
| 24 | +# CHECK-TEXT-NEXT: LOAD 0x000000 0x0000000000002000 0x0000000000002000 0x000158 0x000158 R 0x1000 |
| 25 | +# CHECK-TEXT-NEXT: LOAD 0x001000 0x0000000000003000 0x0000000000003000 0x000001 0x000001 R E 0x1000 |
| 26 | + |
| 27 | +## Check that PHDRS are deleted if they don't fit |
| 28 | + |
| 29 | +# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o |
| 30 | +# RUN: ld.lld %t.o -Ttext=0x0 -o %t |
| 31 | +# RUN: llvm-readelf -l %t | FileCheck --check-prefix=CHECK-TEXT-ZERO %s |
| 32 | + |
| 33 | +# CHECK-TEXT-ZERO: Program Headers: |
| 34 | +# CHECK-TEXT-ZERO-NEXT: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align |
| 35 | +# CHECK-TEXT-ZERO-NEXT: LOAD 0x001000 0x0000000000000000 0x0000000000000000 0x000001 0x000001 R E 0x1000 |
| 36 | +# CHECK-TEXT-ZERO-NEXT: LOAD 0x001001 0x0000000000001001 0x0000000000001001 0x000004 0x000008 RW 0x1000 |
| 37 | + |
14 | 38 | ## The same, but dropped "0x" prefix. |
15 | 39 | # RUN: ld.lld %t.o --section-start .text=100000 \ |
16 | 40 | # RUN: --section-start .data=110000 --section-start .bss=0x200000 -o %t1 |
|
0 commit comments