xref: /llvm-project/lld/test/ELF/merge-reloc.s (revision d4bed617f4378873d7ddf4b53c041e7b39d1a9ca)
1# REQUIRES: x86
2# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o
3# RUN: ld.lld %t.o -r -o %t.ro
4# RUN: llvm-readelf -S %t.ro | FileCheck %s
5# RUN: llvm-objdump -s %t.ro | FileCheck %s --check-prefix=OBJDUMP
6
7# RUN: ld.lld %t.o -o %t
8# RUN: llvm-readelf -S %t | FileCheck %s --check-prefix=CHECK-PDE
9
10# CHECK:       [Nr] Name              Type            Address          Off    Size   ES Flg Lk Inf Al
11# CHECK-NEXT:  [ 0]                   NULL            0000000000000000 000000 000000 00      0   0  0
12# CHECK-NEXT:  [ 1] .text             PROGBITS        0000000000000000 000040 000000 00  AX  0   0  4
13# CHECK-NEXT:  [ 2] .rodata.1         PROGBITS        0000000000000000 000040 000004 04  AM  0   0  4
14# CHECK-NEXT:  [ 3] .rodata.2         PROGBITS        0000000000000000 000048 000008 08  AM  0   0  8
15# CHECK-NEXT:  [ 4] .rodata.cst8      PROGBITS        0000000000000000 000050 000010 08  AM  0   0  1
16# CHECK-NEXT:  [ 5] .rela.rodata.cst8 RELA            0000000000000000 000068 000030 18   I  9   4  8
17# CHECK-NEXT:  [ 6] .cst4             PROGBITS        0000000000000000 000060 000008 04  AM  0   0  1
18# CHECK-NEXT:  [ 7] .rela.cst4        RELA            0000000000000000 000098 000030 18   I  9   6  8
19
20# OBJDUMP:      Contents of section .rodata.1:
21# OBJDUMP-NEXT:  0000 42000000                             B...
22# OBJDUMP-NEXT: Contents of section .rodata.2:
23# OBJDUMP-NEXT:  0000 42000000 42000000                    B...B...
24# OBJDUMP-NEXT: Contents of section .rodata.cst8:
25# OBJDUMP-NEXT:  0000 00000000 00000000 00000000 00000000  ................
26# OBJDUMP:      Contents of section .cst4:
27# OBJDUMP-NEXT:  0000 00000000 00000000                    ........
28
29# CHECK-PDE: [ 2] .cst4             PROGBITS        0000000000200140 000140 000008 04  AM  0   0  1
30
31foo:
32
33.section        .rodata.1,"aM",@progbits,4
34.align  4
35.long 0x42
36.long 0x42
37.long 0x42
38
39.section        .rodata.2,"aM",@progbits,8
40.align  8
41.long   0x42
42.long   0x42
43.long   0x42
44.long   0x42
45
46## Test that we keep a SHT_REL[A] section which relocates a SHF_MERGE section
47## in -r mode. The relocated SHF_MERGE section is handled as non-mergeable.
48.section .rodata.cst8,"aM",@progbits,8,unique,0
49.quad foo
50
51.section .rodata.cst8,"aM",@progbits,8,unique,1
52.quad foo
53
54.section .cst4,"aM",@progbits,4,unique,0
55.long foo
56.section .cst4,"aM",@progbits,4,unique,1
57.long foo
58