# 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