summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp
diff options
context:
space:
mode:
authorIgor Kudrin <ikudrin@accesssoftek.com>2019-04-04 08:39:40 +0000
committerIgor Kudrin <ikudrin@accesssoftek.com>2019-04-04 08:39:40 +0000
commit0fed7b0564801eb481332b0c9ab0259a9866164b (patch)
treedf65e64761f7690f38c80ea29fee8bc6567e6bbc /llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp
parent8911c5be46b9ae1235944dee4d2f7e89a12b9fca (diff)
downloadbcm5719-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.cpp10
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;
OpenPOWER on IntegriCloud