aboutsummaryrefslogtreecommitdiff
path: root/llvm/tools/llvm-objdump/llvm-objdump.cpp
diff options
context:
space:
mode:
authorMarkus Böck <markus.boeck02@gmail.com>2020-04-18 08:23:37 -0700
committerFangrui Song <maskray@google.com>2020-04-18 08:30:50 -0700
commitcacf1b5093279ae2aaa695d3eb5f0c116d0746ea (patch)
tree22e83c1ad31a0b8aeaf1a3b30478d667c77233e0 /llvm/tools/llvm-objdump/llvm-objdump.cpp
parent5eb8d45ab5b85cb3a2edfe995cbf1d4b1beae462 (diff)
downloadllvm-cacf1b5093279ae2aaa695d3eb5f0c116d0746ea.zip
llvm-cacf1b5093279ae2aaa695d3eb5f0c116d0746ea.tar.gz
llvm-cacf1b5093279ae2aaa695d3eb5f0c116d0746ea.tar.bz2
[llvm-objdump] Demangle C++ Symbols in branch and call targets
Currently C++ symbols are demangled in the symbol table as well as in the disassembly and relocations. This patch adds demangling of C++ symbols in targets of calls and branches making it easier to decipher control flow in disassembly. This also matches up with GNUobjdump's behavior Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D77957
Diffstat (limited to 'llvm/tools/llvm-objdump/llvm-objdump.cpp')
-rw-r--r--llvm/tools/llvm-objdump/llvm-objdump.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/llvm/tools/llvm-objdump/llvm-objdump.cpp b/llvm/tools/llvm-objdump/llvm-objdump.cpp
index c264ea6..0eeb337 100644
--- a/llvm/tools/llvm-objdump/llvm-objdump.cpp
+++ b/llvm/tools/llvm-objdump/llvm-objdump.cpp
@@ -1556,7 +1556,10 @@ static void disassembleObject(const Target *TheTarget, const ObjectFile *Obj,
if (TargetSym != TargetSectionSymbols->begin()) {
--TargetSym;
uint64_t TargetAddress = TargetSym->Addr;
- StringRef TargetName = TargetSym->Name;
+ std::string TargetName = TargetSym->Name.str();
+ if (Demangle)
+ TargetName = demangle(TargetName);
+
outs() << " <" << TargetName;
uint64_t Disp = Target - TargetAddress;
if (Disp)