diff options
| author | Xu Mingjie <xumingjie.enna1@bytedance.com> | 2021-08-18 12:17:09 +0800 |
|---|---|---|
| committer | wangliushuai <wangliushuai@bytedance.com> | 2021-08-18 12:22:04 +0800 |
| commit | 168ee727186b56c68a164de19fdcdd6d8a89fa2d (patch) | |
| tree | 1a9e4c6dbac272bb1e640516365a3b347fe597dc | |
| parent | 3f4d00bc3b514d3218089fce15457457fc3312c3 (diff) | |
| download | llvm-168ee727186b56c68a164de19fdcdd6d8a89fa2d.zip llvm-168ee727186b56c68a164de19fdcdd6d8a89fa2d.tar.gz llvm-168ee727186b56c68a164de19fdcdd6d8a89fa2d.tar.bz2 | |
[NFC][llvm-xray] add a llvm-xray convert option `no-demangle`
When option `--symbolize` is true, llvm-xray convert will demangle function
name on default. This patch adds a llvm-xray convert option `no-demangle` to
determine whether to demangle function name when symbolizing function ids from
the input log.
Reviewed By: MaskRay, smeenai
Differential Revision: https://reviews.llvm.org/D108019
| -rw-r--r-- | llvm/test/tools/llvm-xray/X86/convert-with-debug-syms.txt | 18 | ||||
| -rw-r--r-- | llvm/tools/llvm-xray/xray-converter.cpp | 10 |
2 files changed, 27 insertions, 1 deletions
diff --git a/llvm/test/tools/llvm-xray/X86/convert-with-debug-syms.txt b/llvm/test/tools/llvm-xray/X86/convert-with-debug-syms.txt index dd60148..fd6695a 100644 --- a/llvm/test/tools/llvm-xray/X86/convert-with-debug-syms.txt +++ b/llvm/test/tools/llvm-xray/X86/convert-with-debug-syms.txt @@ -15,3 +15,21 @@ ; CHECK-NEXT: - { type: 0, func-id: 1, function: {{.*bar.*}}, cpu: 37, thread: 84697, kind: function-exit, tsc: 3315356841454802, data: '' } ; CHECK-NEXT: - { type: 0, func-id: 3, function: main, cpu: 37, thread: 84697, kind: function-exit, tsc: 3315356841494828, data: '' } ; CHECK-NEXT: ... + +; RUN: llvm-xray convert -m %S/Inputs/elf64-sample-o2.bin --symbolize --no-demangle %S/Inputs/naive-log-simple.xray -f=yaml -o - 2>&1 | FileCheck --check-prefix=MANGLED %s + +; MANGLED: --- +; MANGLED-NEXT: header: +; MANGLED-NEXT: version: 1 +; MANGLED-NEXT: type: 0 +; MANGLED-NEXT: constant-tsc: true +; MANGLED-NEXT: nonstop-tsc: true +; MANGLED-NEXT: cycle-frequency: 2601000000 +; MANGLED-NEXT: records: +; MANGLED-NEXT: - { type: 0, func-id: 3, function: main, cpu: 37, thread: 84697, kind: function-enter, tsc: 3315356841453914, data: '' } +; MANGLED-NEXT: - { type: 0, func-id: 2, function: _Z3foov, cpu: 37, thread: 84697, kind: function-enter, tsc: 3315356841454542, data: '' } +; MANGLED-NEXT: - { type: 0, func-id: 2, function: _Z3foov, cpu: 37, thread: 84697, kind: function-exit, tsc: 3315356841454670, data: '' } +; MANGLED-NEXT: - { type: 0, func-id: 1, function: _Z3barv, cpu: 37, thread: 84697, kind: function-enter, tsc: 3315356841454762, data: '' } +; MANGLED-NEXT: - { type: 0, func-id: 1, function: _Z3barv, cpu: 37, thread: 84697, kind: function-exit, tsc: 3315356841454802, data: '' } +; MANGLED-NEXT: - { type: 0, func-id: 3, function: main, cpu: 37, thread: 84697, kind: function-exit, tsc: 3315356841494828, data: '' } +; MANGLED-NEXT: ... diff --git a/llvm/tools/llvm-xray/xray-converter.cpp b/llvm/tools/llvm-xray/xray-converter.cpp index 47cb645..2ab18b8b 100644 --- a/llvm/tools/llvm-xray/xray-converter.cpp +++ b/llvm/tools/llvm-xray/xray-converter.cpp @@ -57,6 +57,11 @@ static cl::opt<bool> cl::init(false), cl::sub(Convert)); static cl::alias ConvertSymbolize2("y", cl::aliasopt(ConvertSymbolize), cl::desc("Alias for -symbolize")); +static cl::opt<bool> + NoDemangle("no-demangle", + cl::desc("determines whether to demangle function name " + "when symbolizing function ids from the input log"), + cl::init(false), cl::sub(Convert)); static cl::opt<std::string> ConvertInstrMap("instr_map", @@ -373,7 +378,10 @@ static CommandRegistration Unused(&Convert, []() -> Error { } const auto &FunctionAddresses = Map.getFunctionAddresses(); - symbolize::LLVMSymbolizer Symbolizer; + symbolize::LLVMSymbolizer::Options SymbolizerOpts; + if (NoDemangle) + SymbolizerOpts.Demangle = false; + symbolize::LLVMSymbolizer Symbolizer(SymbolizerOpts); llvm::xray::FuncIdConversionHelper FuncIdHelper(ConvertInstrMap, Symbolizer, FunctionAddresses); llvm::xray::TraceConverter TC(FuncIdHelper, ConvertSymbolize); |
