# REQUIRES: x86 # RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t # RUN: echo "SECTIONS { \ # RUN: . = SIZEOF_HEADERS; \ # RUN: .foo : { begin = .; *(.foo.*) end = .;} \ # RUN: }" > %t.script # RUN: ld.lld -o %t1 --script %t.script %t -shared # RUN: llvm-readobj -s -t %t1 | FileCheck %s # CHECK: Name: .foo # 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: 0x[[ADDR1:.*]] # CHECK-NEXT: Offset: 0x[[ADDR1]] # CHECK-NEXT: Size: 14 # CHECK-NEXT: Link: 0 # CHECK-NEXT: Info: 0 # CHECK-NEXT: AddressAlignment: 2 # CHECK-NEXT: EntrySize: 0 # CHECK-NEXT: } # CHECK: Name: begin # CHECK-NEXT: Value: 0x[[ADDR1]] # CHECK: Name: end # 0x19E = begin + sizeof(.foo) = 0x190 + 0xE # CHECK-NEXT: Value: 0x19E # Check that we don't crash with --gc-sections # RUN: ld.lld --gc-sections -o %t2 --script %t.script %t -shared # RUN: llvm-readobj -s -t %t2 | FileCheck %s --check-prefix=GC # GC: Name: .foo # GC-NEXT: Type: SHT_NOBITS # GC-NEXT: Flags [ # GC-NEXT: SHF_ALLOC # GC-NEXT: ] .section .foo.1a,"aMS",@progbits,1 .asciz "foo" .section .foo.1b,"aMS",@progbits,1 .asciz "foo" .section .foo.2a,"aM",@progbits,1 .byte 42 .section .foo.2b,"aM",@progbits,1 .byte 42 .section .foo.3a,"aM",@progbits,2 .align 2 .short 42 .section .foo.3b,"aM",@progbits,2 .align 2 .short 42