summaryrefslogtreecommitdiff
path: root/tools/llvm-symbolizer/llvm-symbolizer.cpp
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2016-07-23 20:41:05 +0000
committerDimitry Andric <dim@FreeBSD.org>2016-07-23 20:41:05 +0000
commit01095a5d43bbfde13731688ddcf6048ebb8b7721 (patch)
tree4def12e759965de927d963ac65840d663ef9d1ea /tools/llvm-symbolizer/llvm-symbolizer.cpp
parentf0f4822ed4b66e3579e92a89f368f8fb860e218e (diff)
Diffstat (limited to 'tools/llvm-symbolizer/llvm-symbolizer.cpp')
-rw-r--r--tools/llvm-symbolizer/llvm-symbolizer.cpp16
1 files changed, 9 insertions, 7 deletions
diff --git a/tools/llvm-symbolizer/llvm-symbolizer.cpp b/tools/llvm-symbolizer/llvm-symbolizer.cpp
index 950349377bf79..7ee4ba19603b7 100644
--- a/tools/llvm-symbolizer/llvm-symbolizer.cpp
+++ b/tools/llvm-symbolizer/llvm-symbolizer.cpp
@@ -86,10 +86,12 @@ static cl::opt<int> ClPrintSourceContextLines(
"print-source-context-lines", cl::init(0),
cl::desc("Print N number of source file context"));
-static bool error(std::error_code ec) {
- if (!ec)
+template<typename T>
+static bool error(Expected<T> &ResOrErr) {
+ if (ResOrErr)
return false;
- errs() << "LLVMSymbolizer: error reading file: " << ec.message() << ".\n";
+ logAllUnhandledErrors(ResOrErr.takeError(), errs(),
+ "LLVMSymbolizer: error reading file: ");
return true;
}
@@ -138,7 +140,7 @@ static bool parseCommand(StringRef InputString, bool &IsData,
int main(int argc, char **argv) {
// Print stack trace if we signal out.
- sys::PrintStackTraceOnErrorSignal();
+ sys::PrintStackTraceOnErrorSignal(argv[0]);
PrettyStackTraceProgram X(argc, argv);
llvm_shutdown_obj Y; // Call llvm_shutdown() on exit.
@@ -185,14 +187,14 @@ int main(int argc, char **argv) {
}
if (IsData) {
auto ResOrErr = Symbolizer.symbolizeData(ModuleName, ModuleOffset);
- Printer << (error(ResOrErr.getError()) ? DIGlobal() : ResOrErr.get());
+ Printer << (error(ResOrErr) ? DIGlobal() : ResOrErr.get());
} else if (ClPrintInlining) {
auto ResOrErr = Symbolizer.symbolizeInlinedCode(ModuleName, ModuleOffset);
- Printer << (error(ResOrErr.getError()) ? DIInliningInfo()
+ Printer << (error(ResOrErr) ? DIInliningInfo()
: ResOrErr.get());
} else {
auto ResOrErr = Symbolizer.symbolizeCode(ModuleName, ModuleOffset);
- Printer << (error(ResOrErr.getError()) ? DILineInfo() : ResOrErr.get());
+ Printer << (error(ResOrErr) ? DILineInfo() : ResOrErr.get());
}
outs() << "\n";
outs().flush();