# REQUIRES: x86 # RUN: llvm-mc -filetype=obj -triple=i686-pc-linux %s -o %t1 # RUN: ld.lld --emit-relocs %t1 -o %t2 # RUN: llvm-readobj --sections --section-data %t2 | FileCheck %s ## Check lf we produce proper relocations when doing merging of SHF_MERGE sections. ## Check addends of relocations are: 0x0, 0x8, 0x8, 0x4 # CHECK: Section { # CHECK: Index: # CHECK: Name: .foo # CHECK-NEXT: Type: SHT_PROGBITS # CHECK-NEXT: Flags [ # CHECK-NEXT: SHF_ALLOC # CHECK-NEXT: SHF_EXECINSTR # CHECK-NEXT: ] # CHECK-NEXT: Address: # CHECK-NEXT: Offset: # CHECK-NEXT: Size: # CHECK-NEXT: Link: # CHECK-NEXT: Info: # CHECK-NEXT: AddressAlignment: # CHECK-NEXT: EntrySize: # CHECK-NEXT: SectionData ( # CHECK-NEXT: 0000: 00000000 08000000 08000000 04000000 # CHECK-NEXT: ) # CHECK-NEXT: } ## Check that offsets for AAA is 0x0, for BBB is 0x8 and CCC has offset 0x4. # CHECK: Section { # CHECK: Index: # CHECK: Name: .strings # CHECK-NEXT: Type: SHT_PROGBITS # CHECK-NEXT: Flags [ # CHECK-NEXT: SHF_MERGE # CHECK-NEXT: SHF_STRINGS # CHECK-NEXT: ] # CHECK-NEXT: Address: # CHECK-NEXT: Offset: # CHECK-NEXT: Size: # CHECK-NEXT: Link: # CHECK-NEXT: Info: # CHECK-NEXT: AddressAlignment: # CHECK-NEXT: EntrySize: # CHECK-NEXT: SectionData ( # CHECK-NEXT: |AAA.CCC.BBB.| # CHECK-NEXT: ) # CHECK-NEXT: } .section .strings,"MS",@progbits,1,unique,10 .Linfo_string0: .asciz "AAA" .Linfo_string1: .asciz "BBB" .section .strings,"MS",@progbits,1,unique,20 .Linfo_string2: .asciz "BBB" .Linfo_string3: .asciz "CCC" .section .foo,"ax",@progbits .long .Linfo_string0 .long .Linfo_string1 .long .Linfo_string2 .long .Linfo_string3