## Checks that the tool is able to read section groups from ELF. # RUN: yaml2obj --docnum=1 %s -o %t1.o # RUN: llvm-readobj --elf-section-groups %t1.o | FileCheck %s -check-prefix=OBJ # RUN: obj2yaml %t1.o | FileCheck %s --check-prefix YAML # OBJ: Groups { # OBJ-NEXT: Group { # OBJ-NEXT: Name: .group # OBJ-NEXT: Index: 1 # OBJ-NEXT: Link: 3 # OBJ-NEXT: Info: 1 # OBJ-NEXT: Type: COMDAT (0x1) # OBJ-NEXT: Signature: signature # OBJ-NEXT: Section(s) in group [ # OBJ-NEXT: .rodata (2) # OBJ-NEXT: ] # OBJ-NEXT: } # OBJ-NEXT: } # YAML: - Name: .group # YAML: Type: SHT_GROUP # YAML: Link: .symtab # YAML: Info: signature # YAML: Members: # YAML: - SectionOrType: GRP_COMDAT # YAML: - SectionOrType: .rodata --- !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB Type: ET_REL Sections: - Name: .group Type: SHT_GROUP Link: .symtab Info: signature Members: - SectionOrType: GRP_COMDAT - SectionOrType: .rodata - Name: .rodata Type: SHT_PROGBITS Symbols: - Name: signature Type: STT_OBJECT Section: .rodata ## Check obj2yaml report an error when sh_info field of ## group section contains invalid (too large) signature symbol index. # RUN: yaml2obj --docnum=2 %s -o %t2.o # RUN: not obj2yaml %t2.o 2>&1 | FileCheck %s --check-prefix ERR --- !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB Type: ET_REL Sections: - Name: .group Type: SHT_GROUP Link: .symtab Info: 0xFF Members: - SectionOrType: GRP_COMDAT Symbols: [] # ERR: Error reading file: {{.*}}2.o: unable to get symbol from section [index 2]: invalid symbol index (255)