| # REQUIRES: x86 |
| # RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o |
| # RUN: ld.lld %t.o -r -o %t.ro |
| # RUN: llvm-readelf -S %t.ro | FileCheck %s |
| # RUN: llvm-objdump -s %t.ro | FileCheck %s --check-prefix=OBJDUMP |
| |
| # RUN: ld.lld %t.o -o %t |
| # RUN: llvm-readelf -S %t | FileCheck %s --check-prefix=CHECK-PDE |
| |
| # CHECK: [Nr] Name Type Address Off Size ES Flg Lk Inf Al |
| # CHECK-NEXT: [ 0] NULL 0000000000000000 000000 000000 00 0 0 0 |
| # CHECK-NEXT: [ 1] .text PROGBITS 0000000000000000 000040 000000 00 AX 0 0 4 |
| # CHECK-NEXT: [ 2] .rodata.1 PROGBITS 0000000000000000 000040 000004 04 AM 0 0 4 |
| # CHECK-NEXT: [ 3] .rodata.2 PROGBITS 0000000000000000 000048 000008 08 AM 0 0 8 |
| # CHECK-NEXT: [ 4] .rodata.cst8 PROGBITS 0000000000000000 000050 000010 08 AM 0 0 1 |
| # CHECK-NEXT: [ 5] .rela.rodata.cst8 RELA 0000000000000000 000068 000030 18 I 9 4 8 |
| # CHECK-NEXT: [ 6] .cst4 PROGBITS 0000000000000000 000060 000008 04 AM 0 0 1 |
| # CHECK-NEXT: [ 7] .rela.cst4 RELA 0000000000000000 000098 000030 18 I 9 6 8 |
| |
| # OBJDUMP: Contents of section .rodata.1: |
| # OBJDUMP-NEXT: 0000 42000000 B... |
| # OBJDUMP-NEXT: Contents of section .rodata.2: |
| # OBJDUMP-NEXT: 0000 42000000 42000000 B...B... |
| # OBJDUMP-NEXT: Contents of section .rodata.cst8: |
| # OBJDUMP-NEXT: 0000 00000000 00000000 00000000 00000000 ................ |
| # OBJDUMP: Contents of section .cst4: |
| # OBJDUMP-NEXT: 0000 00000000 00000000 ........ |
| |
| # CHECK-PDE: [ 2] .cst4 PROGBITS 0000000000200140 000140 000008 04 AM 0 0 1 |
| |
| foo: |
| |
| .section .rodata.1,"aM",@progbits,4 |
| .align 4 |
| .long 0x42 |
| .long 0x42 |
| .long 0x42 |
| |
| .section .rodata.2,"aM",@progbits,8 |
| .align 8 |
| .long 0x42 |
| .long 0x42 |
| .long 0x42 |
| .long 0x42 |
| |
| ## Test that we keep a SHT_REL[A] section which relocates a SHF_MERGE section |
| ## in -r mode. The relocated SHF_MERGE section is handled as non-mergeable. |
| .section .rodata.cst8,"aM",@progbits,8,unique,0 |
| .quad foo |
| |
| .section .rodata.cst8,"aM",@progbits,8,unique,1 |
| .quad foo |
| |
| .section .cst4,"aM",@progbits,4,unique,0 |
| .long foo |
| .section .cst4,"aM",@progbits,4,unique,1 |
| .long foo |