# RUN: yaml2obj --docnum=1 %s -o %t1.o # RUN: llvm-nm %t1.o --format=sysv | FileCheck %s --- !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB Type: ET_REL Machine: EM_X86_64 Sections: - Name: .text Type: SHT_PROGBITS Flags: [ SHF_ALLOC, SHF_EXECINSTR ] Symbols: - Name: symbol_undefined - Name: symbol Section: .text - Name: symbol_common Index: SHN_COMMON - Name: symbol_absolute Index: SHN_ABS - Name: proc Index: 0xff01 - Name: os Index: 0xff21 - Name: reserved Index: 0xfffe # CHECK: os {{.*}}| # CHECK-NEXT: proc {{.*}}| # CHECK-NEXT: reserved {{.*}}| # CHECK-NEXT: symbol {{.*}}| |.text # CHECK-NEXT: symbol_absolute {{.*}}| |*ABS* # CHECK-NEXT: symbol_common {{.*}}| |*COM* # CHECK-NEXT: symbol_undefined {{.*}}| |*UND* ## Here we have a symbol that belongs to a section with a broken name ## (sh_name offset goes past the end of the sections name string table). ## We test that we can still print a reasonable output and don't crash/assert. # RUN: yaml2obj --docnum=2 %s -o %t2.o # RUN: llvm-nm %t2.o --format=sysv | FileCheck %s --check-prefix=ERR # ERR: foo |0000000000000000| ? | NOTYPE|0000000000000000| | --- !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB Type: ET_REL Machine: EM_X86_64 Sections: - Name: .broken Type: SHT_PROGBITS Flags: [ SHF_ALLOC, SHF_EXECINSTR ] ShName: 0xffff Symbols: - Name: foo Section: .broken