// RUN: llvm-mc %s -o %t.o -filetype=obj -triple=x86_64-pc-linux // RUN: ld.lld %t.o -o %t.so -shared // RUN: ld.lld %t.o -o %t.gc.so -shared --gc-sections // RUN: llvm-readobj -s -section-data %t.so | FileCheck %s // RUN: llvm-readobj -s -section-data %t.gc.so | FileCheck --check-prefix=GC %s // CHECK: Name: .rodata // CHECK-NEXT: Type: SHT_PROGBITS // CHECK-NEXT: Flags [ // CHECK-NEXT: SHF_ALLOC // CHECK-NEXT: SHF_MERGE // CHECK-NEXT: SHF_STRINGS // CHECK-NEXT: ] // CHECK-NEXT: Address: // CHECK-NEXT: Offset: // CHECK-NEXT: Size: 8 // CHECK-NEXT: Link: 0 // CHECK-NEXT: Info: 0 // CHECK-NEXT: AddressAlignment: 1 // CHECK-NEXT: EntrySize: 1 // CHECK-NEXT: SectionData ( // CHECK-NEXT: 0000: 666F6F00 62617200 |foo.bar.| // CHECK-NEXT: ) // GC: Name: .rodata // GC-NEXT: Type: SHT_PROGBITS // GC-NEXT: Flags [ // GC-NEXT: SHF_ALLOC // GC-NEXT: SHF_MERGE // GC-NEXT: SHF_STRINGS // GC-NEXT: ] // GC-NEXT: Address: // GC-NEXT: Offset: // GC-NEXT: Size: 4 // GC-NEXT: Link: 0 // GC-NEXT: Info: 0 // GC-NEXT: AddressAlignment: 1 // GC-NEXT: EntrySize: 1 // GC-NEXT: SectionData ( // GC-NEXT: 0000: 666F6F00 |foo.| // GC-NEXT: ) .section .text.f,"ax",@progbits .globl f f: leaq .L.str(%rip), %rax retq .section .text.g,"ax",@progbits .hidden g .globl g g: leaq .L.str.1(%rip), %rax retq .section .rodata.str1.1,"aMS",@progbits,1 .L.str: .asciz "foo" .L.str.1: .asciz "bar"