# RUN: yaml2obj %s -o %t # RUN: llvm-objcopy --strip-dwo %t # RUN: llvm-readobj --symbols -S --section-groups %t | \ # RUN: FileCheck %s --implicit-check-not=.debug_ ## `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. ## Note. 'Signature' is generated using 'Link' and 'Info', so checking it ## validates updating these fields. # CHECK: Groups { # CHECK-NEXT: Group { # CHECK-NEXT: Name: .group # CHECK-NEXT: Index: # CHECK-NEXT: Link: # CHECK-NEXT: Info: # CHECK-NEXT: Type: # CHECK-NEXT: Signature: group1 # CHECK-NEXT: Section(s) in group [ # CHECK-NEXT: .text.group1 # CHECK-NEXT: ] # CHECK: Name: .group # CHECK-NEXT: Index: # CHECK-NEXT: Link: # CHECK-NEXT: Info: # CHECK-NEXT: Type: # CHECK-NEXT: Signature: group2 # CHECK-NEXT: Section(s) in group [ # CHECK-NEXT: .text.group2 # CHECK-NEXT: .rela.text.group2 # CHECK-NEXT: ] --- !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: debug_after Section: .debug_after.dwo - Name: group2 Section: .text.group2 Binding: STB_WEAK - Name: group1 Section: .text.group1 Binding: STB_WEAK