# RUN: yaml2obj --docnum=1 %s -o %t1 # RUN: llvm-symbolizer --obj=%t1 0 1 2 | FileCheck %s ## The local symbol has no preceding STT_FILE. Its filename is unavailable. # CHECK: local # CHECK-NEXT: ??:0:0 # CHECK-EMPTY: ## All local symbols precede all non-local symbols. When there are multiple ## STT_FILE symbols, we cannot tell which file defines the non-local symbol in ## question. We could tell if there is only one STT_FILE but in reality there ## are always more than one file, so implementing the special case is not useful. # CHECK-NEXT: global # CHECK-NEXT: ??:0:0 # CHECK-EMPTY: # CHECK-NEXT: weak # CHECK-NEXT: ??:0:0 # CHECK-EMPTY: --- !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB Type: ET_DYN Machine: EM_X86_64 Sections: - Name: .text Type: SHT_PROGBITS Flags: [ SHF_ALLOC, SHF_EXECINSTR ] Size: 3 Symbols: - Name: local Section: .text Value: 0 - Name: 1.c Type: STT_FILE Index: SHN_ABS - Name: global Binding: STB_GLOBAL Section: .text Value: 1 - Name: weak Binding: STB_WEAK Section: .text Value: 2 ## If st_name of the STT_FILE symbols is invalid, the symbol name is lost as well. ## TODO Keep the symbol name. # RUN: yaml2obj --docnum=2 %s -o %t2 # RUN: not llvm-symbolizer --obj=%t2 0 0 2>&1 | FileCheck %s --check-prefix=CHECK2 # CHECK2: llvm-symbolizer{{.*}}: error: '{{.*}}symtab-file2.yaml.tmp2': st_name (0xffff) is past the end of the string table of size --- !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB Type: ET_DYN Machine: EM_X86_64 Sections: - Name: .text Type: SHT_PROGBITS Flags: [ SHF_ALLOC, SHF_EXECINSTR ] Size: 1 Symbols: - StName: 0xffff Type: STT_FILE Index: SHN_ABS - Name: local Section: .text # RUN: yaml2obj --docnum=3 %s -o %t3 # RUN: llvm-symbolizer --obj=%t3 'DATA 0x1001' 2>&1 | FileCheck %s --check-prefix=CHECK3 # CHECK3: code # CHECK3-NEXT: 4096 2 # CHECK3-NEXT: ??:? # CHECK3-EMPTY: --- !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB Type: ET_DYN Machine: EM_X86_64 Sections: - Name: .text Type: SHT_PROGBITS Flags: [ SHF_ALLOC, SHF_EXECINSTR ] Address: 0x1000 Size: 1 - Name: .debug Type: SHT_PROGBITS Address: 0x0000 Size: 0xFFFF Symbols: - Name: debug Section: .debug Binding: STB_WEAK Value: 0x1001 Size: 0 - Name: code Section: .text Binding: STB_WEAK Value: 0x1000 Size: 2