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-rel 4# RUN: llvm-readobj -S --section-data %t-rel | FileCheck %s 5 6# When linker generates a relocatable object it does string merging in the same 7# way as for regular link. It should keep SHF_MERGE flag and set proper sh_entsize 8# value so that final link can perform the final merging optimization. 9 10# CHECK: Section { 11# CHECK: Index: 12# CHECK: Name: .rodata.1 ( 13# CHECK-NEXT: Type: SHT_PROGBITS 14# CHECK-NEXT: Flags [ 15# CHECK-NEXT: SHF_ALLOC 16# CHECK-NEXT: SHF_MERGE 17# CHECK-NEXT: ] 18# CHECK-NEXT: Address: 19# CHECK-NEXT: Offset: 20# CHECK-NEXT: Size: 4 21# CHECK-NEXT: Link: 0 22# CHECK-NEXT: Info: 0 23# CHECK-NEXT: AddressAlignment: 4 24# CHECK-NEXT: EntrySize: 4 25# CHECK-NEXT: SectionData ( 26# CHECK-NEXT: 0000: 42000000 27# CHECK-NEXT: ) 28# CHECK-NEXT: } 29# CHECK: Section { 30# CHECK: Index: 31# CHECK: Name: .rodata.2 ( 32# CHECK-NEXT: Type: SHT_PROGBITS 33# CHECK-NEXT: Flags [ 34# CHECK-NEXT: SHF_ALLOC 35# CHECK-NEXT: SHF_MERGE 36# CHECK-NEXT: ] 37# CHECK-NEXT: Address: 38# CHECK-NEXT: Offset: 39# CHECK-NEXT: Size: 8 40# CHECK-NEXT: Link: 0 41# CHECK-NEXT: Info: 0 42# CHECK-NEXT: AddressAlignment: 8 43# CHECK-NEXT: EntrySize: 8 44# CHECK-NEXT: SectionData ( 45# CHECK-NEXT: 0000: 42000000 42000000 46# CHECK-NEXT: ) 47# CHECK-NEXT: } 48# CHECK: Section { 49# CHECK: Index: 50# CHECK: Name: .data 51# CHECK-NEXT: Type: SHT_PROGBITS 52# CHECK-NEXT: Flags [ 53# CHECK-NEXT: SHF_ALLOC 54# CHECK-NEXT: SHF_WRITE 55# CHECK-NEXT: ] 56# CHECK-NEXT: Address: 57# CHECK-NEXT: Offset: 58# CHECK-NEXT: Size: 16 59# CHECK-NEXT: Link: 0 60# CHECK-NEXT: Info: 0 61# CHECK-NEXT: AddressAlignment: 1 62# CHECK-NEXT: EntrySize: 0 63# CHECK-NEXT: SectionData ( 64# CHECK-NEXT: 0000: 42000000 42000000 42000000 42000000 65# CHECK-NEXT: ) 66# CHECK-NEXT: } 67 68 .section .rodata.1,"aM",@progbits,4 69 .align 4 70 .global foo 71foo: 72 .long 0x42 73 .long 0x42 74 .long 0x42 75 76 .section .rodata.2,"aM",@progbits,8 77 .align 8 78 .global bar 79bar: 80 .long 0x42 81 .long 0x42 82 .long 0x42 83 .long 0x42 84 85 .data 86 .global gar 87zed: 88 .long 0x42 89 .long 0x42 90 .long 0x42 91 .long 0x42 92