[llvm] Do not replace dead constant references in metadata with undef
[llvm-project.git] / lld / test / ELF / linkerscript / orphan-phdrs2.test
blobc302e0e70b2bbb7e51df05d467d97cd772019fa0
1 # REQUIRES: x86
3 # RUN: split-file %s %ts
4 # RUN: llvm-mc -filetype=obj -triple=x86_64 %ts/s -o %t.o
5 # RUN: ld.lld -pie -o %t -T %ts/t %t.o
6 # RUN: llvm-readelf -l %t | FileCheck %s
8 ## Check that an orphan section '.dynamic' is added to the same segment as
9 ## its closest-rank section '.data', even though its sort rank is lower.
10 ## Adding '.dynamic' to the first segment would make the segment writable.
11 # CHECK:      Program Headers:
12 # CHECK-NEXT:   Type {{.*}} Flg Align
13 # CHECK-NEXT:   LOAD {{.*}} R E 0x
14 # CHECK-NEXT:   LOAD {{.*}} RW  0x
15 # CHECK-MEXT:   LOAD {{.*}} R   0x
17 # CHECK:      Segment Sections...
18 # CHECK-NEXT:   00 .text {{$}}
19 # CHECK-NEXT:   01 .data .dynamic {{$}}
20 ## Check that read-only non-PROGBITS orphan sections are placed after the
21 ## closest-rank section '.rodata' despite their sort ranks are lower.
22 # CHECK-NEXT:   02 .rodata .dynsym .gnu.hash .hash .dynstr {{$}}
24 #--- s
25   .text
26   nop
28   .data
29   .quad 0
31   .rodata
32   .quad 0
34 #--- t
35 PHDRS {
36   exec PT_LOAD;
37   rw   PT_LOAD;
38   ro   PT_LOAD;
40 SECTIONS {
41   .text : { *(.text) } : exec
42   .data : { *(.data) } : rw
43   .rodata : { *(.rodata) } : ro