forked from OSchip/llvm-project
[xray] add --no-demangle cli opt for llvm-xray extract to output mangled names
This adds an additional cli flag for the llvm-xray extract tool. This is useful if you're more interested in consuming the mangled symbol name, instead of the default now which is demangled. Differential Revision: https://reviews.llvm.org/D72804
This commit is contained in:
parent
30a8865142
commit
8ef57f3e3f
|
@ -0,0 +1,14 @@
|
|||
This test makes sure we can extract the instrumentation map from an
|
||||
XRay-instrumented PIE file.
|
||||
|
||||
RUN: yaml2obj %S/Inputs/elf64-pic.yaml -o %t.so
|
||||
RUN: llvm-xray extract -s --no-demangle %t.so | FileCheck %s
|
||||
|
||||
CHECK: ---
|
||||
CHECK-NEXT: - { id: 1, address: 0x0000000000000420, function: 0x0000000000000420, kind: function-enter, always-instrument: true, function-name: _Z3foov }
|
||||
CHECK-NEXT: - { id: 1, address: 0x0000000000000440, function: 0x0000000000000420, kind: function-exit, always-instrument: true, function-name: _Z3foov }
|
||||
CHECK-NEXT: - { id: 2, address: 0x0000000000000464, function: 0x0000000000000464, kind: function-enter, always-instrument: true, function-name: _Z3barv }
|
||||
CHECK-NEXT: - { id: 2, address: 0x0000000000000484, function: 0x0000000000000464, kind: function-exit, always-instrument: true, function-name: _Z3barv }
|
||||
CHECK-NEXT: - { id: 3, address: 0x00000000000004A8, function: 0x00000000000004A8, kind: function-enter, always-instrument: true, function-name: _Z3jarv }
|
||||
CHECK-NEXT: - { id: 3, address: 0x00000000000004C8, function: 0x00000000000004A8, kind: function-exit, always-instrument: true, function-name: _Z3jarv }
|
||||
CHECK-NEXT: ...
|
|
@ -45,6 +45,11 @@ static cl::opt<bool> ExtractSymbolize("symbolize", cl::value_desc("symbolize"),
|
|||
cl::sub(Extract));
|
||||
static cl::alias ExtractSymbolize2("s", cl::aliasopt(ExtractSymbolize),
|
||||
cl::desc("alias for -symbolize"));
|
||||
static cl::opt<bool> ExtractNoDemangle("no-demangle",
|
||||
cl::value_desc("no-demangle"),
|
||||
cl::init(false),
|
||||
cl::desc("don't demangle symbols"),
|
||||
cl::sub(Extract));
|
||||
|
||||
namespace {
|
||||
|
||||
|
@ -84,7 +89,10 @@ static CommandRegistration Unused(&Extract, []() -> Error {
|
|||
Twine("Cannot open file '") + ExtractOutput + "' for writing.", EC);
|
||||
const auto &FunctionAddresses =
|
||||
InstrumentationMapOrError->getFunctionAddresses();
|
||||
symbolize::LLVMSymbolizer Symbolizer;
|
||||
symbolize::LLVMSymbolizer::Options opts;
|
||||
if (ExtractNoDemangle)
|
||||
opts.Demangle = false;
|
||||
symbolize::LLVMSymbolizer Symbolizer(opts);
|
||||
llvm::xray::FuncIdConversionHelper FuncIdHelper(ExtractInput, Symbolizer,
|
||||
FunctionAddresses);
|
||||
exportAsYAML(*InstrumentationMapOrError, OS, FuncIdHelper);
|
||||
|
|
Loading…
Reference in New Issue