diff options
author | Igor Kudrin <ikudrin@accesssoftek.com> | 2019-04-04 08:39:40 +0000 |
---|---|---|
committer | Igor Kudrin <ikudrin@accesssoftek.com> | 2019-04-04 08:39:40 +0000 |
commit | 0fed7b0564801eb481332b0c9ab0259a9866164b (patch) | |
tree | df65e64761f7690f38c80ea29fee8bc6567e6bbc /llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp | |
parent | 8911c5be46b9ae1235944dee4d2f7e89a12b9fca (diff) | |
download | bcm5719-llvm-0fed7b0564801eb481332b0c9ab0259a9866164b.tar.gz bcm5719-llvm-0fed7b0564801eb481332b0c9ab0259a9866164b.zip |
[llvm-symbolizer] Add `--output-style` switch.
In general, llvm-symbolizer follows the output style of GNU's addr2line.
However, there are still some differences; in particular, for a requested
address, llvm-symbolizer prints line and column, while addr2line prints
only the line number.
This patch adds a new switch to select the preferred style.
Differential Revision: https://reviews.llvm.org/D60190
llvm-svn: 357675
Diffstat (limited to 'llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp')
-rw-r--r-- | llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp b/llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp index bac7fc5f8e7..e410cfe1493 100644 --- a/llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp +++ b/llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp @@ -147,6 +147,14 @@ static cl::opt<std::string> ClFallbackDebugPath("fallback-debug-path", cl::init(""), cl::desc("Fallback path for debug binaries.")); +static cl::opt<DIPrinter::OutputStyle> + ClOutputStyle("output-style", cl::init(DIPrinter::OutputStyle::LLVM), + cl::desc("Specify print style"), cl::Hidden, + cl::values(clEnumValN(DIPrinter::OutputStyle::LLVM, "LLVM", + "LLVM default style"), + clEnumValN(DIPrinter::OutputStyle::GNU, "GNU", + "GNU addr2line style"))); + template<typename T> static bool error(Expected<T> &ResOrErr) { if (ResOrErr) @@ -256,7 +264,7 @@ int main(int argc, char **argv) { DIPrinter Printer(outs(), ClPrintFunctions != FunctionNameKind::None, ClPrettyPrint, ClPrintSourceContextLines, ClVerbose, - ClBasenames); + ClBasenames, ClOutputStyle); if (ClInputAddresses.empty()) { const int kMaxInputStringLength = 1024; |