Skip to content

Commit a7ceef9

Browse files
committed
DebugInfo/Symbolize: Exclude ARM mapping symbols for .symtab symbolization after D95916
Their names don't convey much information, so they should be excluded. The behavior matches addr2line. Differential Revision: https://reviews.llvm.org/D96617
1 parent 656674a commit a7ceef9

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed

llvm/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,11 @@ Error SymbolizableObjectFile::addSymbol(const SymbolRef &Symbol,
174174
if (Type != ELF::STT_NOTYPE && Type != ELF::STT_FUNC &&
175175
Type != ELF::STT_OBJECT && Type != ELF::STT_GNU_IFUNC)
176176
return Error::success();
177+
// Some STT_NOTYPE symbols are not desired. This excludes STT_SECTION and
178+
// ARM mapping symbols.
179+
uint32_t Flags = cantFail(Symbol.getFlags());
180+
if (Flags & SymbolRef::SF_FormatSpecific)
181+
return Error::success();
177182
} else if (SymbolType != SymbolRef::ST_Function &&
178183
SymbolType != SymbolRef::ST_Data) {
179184
return Error::success();
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# REQUIRES: arm-registered-target
2+
## Ignore ARM mapping symbols (with a prefix of $a, $d or $t).
3+
4+
# RUN: llvm-mc -filetype=obj -triple=armv7-none-linux %s -o %t
5+
# RUN: llvm-symbolizer --obj=%t 4 8 | FileCheck %s
6+
# RUN: llvm-mc -filetype=obj -triple=thumbv7-none-linux %s -o %tthumb
7+
# RUN: llvm-symbolizer --obj=%tthumb 4 8 | FileCheck %s
8+
9+
# CHECK: foo
10+
# CHECK-NEXT: ??:0:0
11+
# CHECK-EMPTY:
12+
# CHECK-NEXT: foo
13+
# CHECK-NEXT: ??:0:0
14+
15+
.globl foo
16+
foo:
17+
.word 32
18+
nop
19+
.word 32

0 commit comments

Comments
 (0)