Index: llvm/test/tools/llvm-xray/X86/convert-with-debug-syms-no-demangle.txt =================================================================== --- /dev/null +++ llvm/test/tools/llvm-xray/X86/convert-with-debug-syms-no-demangle.txt @@ -0,0 +1,17 @@ +; RUN: llvm-xray convert -m %S/Inputs/elf64-sample-o2.bin --symbolize --symbolize-no-demangle=true %S/Inputs/naive-log-simple.xray -f=yaml -o - 2>&1 | FileCheck %s + +; CHECK: --- +; CHECK-NEXT: header: +; CHECK-NEXT: version: 1 +; CHECK-NEXT: type: 0 +; CHECK-NEXT: constant-tsc: true +; CHECK-NEXT: nonstop-tsc: true +; CHECK-NEXT: cycle-frequency: 2601000000 +; CHECK-NEXT: records: +; CHECK-NEXT: - { type: 0, func-id: 3, function: main, cpu: 37, thread: 84697, kind: function-enter, tsc: 3315356841453914, data: '' } +; CHECK-NEXT: - { type: 0, func-id: 2, function: _Z3foov, cpu: 37, thread: 84697, kind: function-enter, tsc: 3315356841454542, data: '' } +; CHECK-NEXT: - { type: 0, func-id: 2, function: _Z3foov, cpu: 37, thread: 84697, kind: function-exit, tsc: 3315356841454670, data: '' } +; CHECK-NEXT: - { type: 0, func-id: 1, function: _Z3barv, cpu: 37, thread: 84697, kind: function-enter, tsc: 3315356841454762, data: '' } +; CHECK-NEXT: - { type: 0, func-id: 1, function: _Z3barv, 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: ... Index: llvm/tools/llvm-xray/xray-converter.cpp =================================================================== --- llvm/tools/llvm-xray/xray-converter.cpp +++ llvm/tools/llvm-xray/xray-converter.cpp @@ -57,6 +57,11 @@ cl::init(false), cl::sub(Convert)); static cl::alias ConvertSymbolize2("y", cl::aliasopt(ConvertSymbolize), cl::desc("Alias for -symbolize")); +static cl::opt ConvertSymbolizeNoDemangle( + "symbolize-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 ConvertInstrMap("instr_map", @@ -373,7 +378,10 @@ } const auto &FunctionAddresses = Map.getFunctionAddresses(); - symbolize::LLVMSymbolizer Symbolizer; + symbolize::LLVMSymbolizer::Options SymbolizerOpts; + if (ConvertSymbolizeNoDemangle) + SymbolizerOpts.Demangle = false; + symbolize::LLVMSymbolizer Symbolizer(SymbolizerOpts); llvm::xray::FuncIdConversionHelper FuncIdHelper(ConvertInstrMap, Symbolizer, FunctionAddresses); llvm::xray::TraceConverter TC(FuncIdHelper, ConvertSymbolize);