summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexey Samsonov <samsonov@google.com>2013-06-28 14:25:52 +0000
committerAlexey Samsonov <samsonov@google.com>2013-06-28 14:25:52 +0000
commit7323383bd725396571c47650ecd4de2708b11b17 (patch)
tree5618bc16ef68bf632757789223c2b70b71598dd4
parenta1270392581727ac1f59f9ec3bd0c82803d14ba1 (diff)
downloadbcm5719-llvm-7323383bd725396571c47650ecd4de2708b11b17.tar.gz
bcm5719-llvm-7323383bd725396571c47650ecd4de2708b11b17.zip
llvm-symbolizer: skip leading underscore in Mach-O symbol table entries
llvm-svn: 185151
-rw-r--r--llvm/test/DebugInfo/llvm-symbolizer.test6
-rw-r--r--llvm/tools/llvm-symbolizer/LLVMSymbolize.cpp3
2 files changed, 6 insertions, 3 deletions
diff --git a/llvm/test/DebugInfo/llvm-symbolizer.test b/llvm/test/DebugInfo/llvm-symbolizer.test
index efe09c15bfe..11ba6642837 100644
--- a/llvm/test/DebugInfo/llvm-symbolizer.test
+++ b/llvm/test/DebugInfo/llvm-symbolizer.test
@@ -32,9 +32,9 @@ CHECK-NEXT: dwarfdump-inl-test.cc:
CHECK: _Z3do1v
CHECK-NEXT: dwarfdump-test3-decl.h:7
-CHECK: _main
-CHECK: __Z3inci
-CHECK: __Z3inci
+CHECK: main
+CHECK: _Z3inci
+CHECK: _Z3inci
RUN: echo "unexisting-file 0x1234" > %t.input2
RUN: llvm-symbolizer < %t.input2
diff --git a/llvm/tools/llvm-symbolizer/LLVMSymbolize.cpp b/llvm/tools/llvm-symbolizer/LLVMSymbolize.cpp
index dfcbacfbe63..59564161b4e 100644
--- a/llvm/tools/llvm-symbolizer/LLVMSymbolize.cpp
+++ b/llvm/tools/llvm-symbolizer/LLVMSymbolize.cpp
@@ -74,6 +74,9 @@ ModuleInfo::ModuleInfo(ObjectFile *Obj, DIContext *DICtx)
StringRef SymbolName;
if (error(si->getName(SymbolName)))
continue;
+ // Mach-O symbol table names have leading underscore, skip it.
+ if (Module->isMachO() && SymbolName.size() > 0 && SymbolName[0] == '_')
+ SymbolName = SymbolName.drop_front();
// FIXME: If a function has alias, there are two entries in symbol table
// with same address size. Make sure we choose the correct one.
SymbolMapTy &M = SymbolType == SymbolRef::ST_Function ? Functions : Objects;
OpenPOWER on IntegriCloud