| ## Checks that the tool is able to read section groups from ELF. |
| |
| # RUN: yaml2obj --docnum=1 %s > %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 |
| Machine: EM_X86_64 |
| 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 > %t2.o |
| # RUN: not obj2yaml %t2.o 2>&1 | FileCheck %s --check-prefix ERR |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2LSB |
| Type: ET_REL |
| Machine: EM_X86_64 |
| 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) |