# 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