summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-symbolizer
diff options
context:
space:
mode:
authorIgor Kudrin <ikudrin@accesssoftek.com>2019-04-19 10:17:52 +0000
committerIgor Kudrin <ikudrin@accesssoftek.com>2019-04-19 10:17:52 +0000
commit99f641ccadcab1e5b98f6ad09a9344855cdf287a (patch)
tree27d6759d0e0e8b2ea18c9b920caaaa1e2be75778 /llvm/tools/llvm-symbolizer
parent1b71b7f3b8869d00ec0da81dacfa738b907df8cf (diff)
downloadbcm5719-llvm-99f641ccadcab1e5b98f6ad09a9344855cdf287a.tar.gz
bcm5719-llvm-99f641ccadcab1e5b98f6ad09a9344855cdf287a.zip
[llvm-symbolizer] Add llvm-addr2line
This adds an alias for llvm-symbolizer with different defaults so that it can be used as a drop-in replacement for GNU's addr2line. If a substring "addr2line" is found in the tool's name: * it defaults "-i", "-f" and "-C" to OFF; * it uses "--output-style=GNU" by default. Differential Revision: https://reviews.llvm.org/D60067 llvm-svn: 358749
Diffstat (limited to 'llvm/tools/llvm-symbolizer')
-rw-r--r--llvm/tools/llvm-symbolizer/CMakeLists.txt2
-rw-r--r--llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp14
2 files changed, 14 insertions, 2 deletions
diff --git a/llvm/tools/llvm-symbolizer/CMakeLists.txt b/llvm/tools/llvm-symbolizer/CMakeLists.txt
index 8185c296c50..13da12fba7b 100644
--- a/llvm/tools/llvm-symbolizer/CMakeLists.txt
+++ b/llvm/tools/llvm-symbolizer/CMakeLists.txt
@@ -16,6 +16,8 @@ add_llvm_tool(llvm-symbolizer
llvm-symbolizer.cpp
)
+add_llvm_tool_symlink(llvm-addr2line llvm-symbolizer)
+
if(LLVM_INSTALL_BINUTILS_SYMLINKS)
add_llvm_tool_symlink(addr2line llvm-symbolizer)
endif()
diff --git a/llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp b/llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp
index aa6635fc92f..0195241f7b5 100644
--- a/llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp
+++ b/llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp
@@ -43,7 +43,7 @@ static cl::opt<FunctionNameKind> ClPrintFunctions(
clEnumValN(FunctionNameKind::ShortName, "short",
"print short function name"),
clEnumValN(FunctionNameKind::LinkageName, "linkage",
- "print function linkage name (default)"),
+ "print function linkage name"),
// Sentinel value for unspecified value.
clEnumValN(FunctionNameKind::LinkageName, "", "")));
static cl::alias ClPrintFunctionsShort("f", cl::desc("Alias for -functions"),
@@ -252,8 +252,18 @@ static void symbolizeInput(StringRef InputString, LLVMSymbolizer &Symbolizer,
int main(int argc, char **argv) {
InitLLVM X(argc, argv);
+ bool IsAddr2Line = sys::path::stem(argv[0]).contains("addr2line");
+
+ if (IsAddr2Line) {
+ ClDemangle.setInitialValue(false);
+ ClPrintFunctions.setInitialValue(FunctionNameKind::None);
+ ClPrintInlining.setInitialValue(false);
+ ClOutputStyle.setInitialValue(DIPrinter::OutputStyle::GNU);
+ }
+
llvm::sys::InitializeCOMRAII COM(llvm::sys::COMThreadingMode::MultiThreaded);
- cl::ParseCommandLineOptions(argc, argv, "llvm-symbolizer\n");
+ cl::ParseCommandLineOptions(argc, argv, IsAddr2Line ? "llvm-addr2line\n"
+ : "llvm-symbolizer\n");
// If both --demangle and --no-demangle are specified then pick the last one.
if (ClNoDemangle.getPosition() > ClDemangle.getPosition())
OpenPOWER on IntegriCloud