# RUN: yaml2obj %s -o %t # RUN: llvm-objcopy --strip-dwo %t # RUN: llvm-readobj --symbols -S --elf-section-groups %t | FileCheck %s ## `llvm-objcopy --strip-dwo` strips out dwo sections, as a result, the index of ## the symbol table, the indices of the symbols and the indices of the sections ## which go after the removed ones will change. Consequently, the fields ## Link, Info and the content of .group need to be updated. # CHECK-NOT: .debug_ # CHECK: Groups { # CHECK-NEXT: Group { # CHECK-NEXT: Name: .group (1) # CHECK-NEXT: Index: 1{{$}} # CHECK-NEXT: Link: 6 # CHECK-NEXT: Info: 2 # CHECK-NEXT: Type: COMDAT (0x1) # CHECK-NEXT: Signature: group1 # CHECK-NEXT: Section(s) in group [ # CHECK-NEXT: .text.group1 (3) # CHECK-NEXT: ] # CHECK-NOT: .debug_ # CHECK: Name: .group (1) # CHECK-NEXT: Index: 2{{$}} # CHECK-NEXT: Link: 6 # CHECK-NEXT: Info: 1 # CHECK-NEXT: Type: COMDAT (0x1) # CHECK-NEXT: Signature: group2 # CHECK-NEXT: Section(s) in group [ # CHECK-NEXT: .text.group2 (4) # CHECK-NEXT: .rela.text.group2 (5) # CHECK-NEXT: ] # CHECK-NOT: .debug_ --- !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB Type: ET_REL Machine: EM_X86_64 Sections: - Name: .debug_before.dwo Type: SHT_PROGBITS - Name: .group Type: SHT_GROUP Link: .symtab Info: group1 Members: - SectionOrType: GRP_COMDAT - SectionOrType: .text.group1 - Name: .text.group1 Type: SHT_PROGBITS Flags: [ SHF_ALLOC, SHF_EXECINSTR, SHF_GROUP ] - Name: '.group (1)' Type: SHT_GROUP Link: .symtab Info: group2 Members: - SectionOrType: GRP_COMDAT - SectionOrType: .text.group2 - SectionOrType: .rela.text.group2 - Name: .text.group2 Type: SHT_PROGBITS Flags: [ SHF_ALLOC, SHF_EXECINSTR, SHF_GROUP ] - Name: .rela.text.group2 Type: SHT_RELA Flags: [ SHF_GROUP ] Info: .text.group2 - Name: .debug_after.dwo Type: SHT_PROGBITS Symbols: - Name: debug_before Section: .debug_before.dwo - Name: group2 Section: .text.group2 - Name: group1 Section: .text.group1 - Name: debug_after Section: .debug_after.dwo