summaryrefslogtreecommitdiffstats
path: root/llvm/tools
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/tools')
-rw-r--r--llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp14
-rw-r--r--llvm/tools/sancov/sancov.cc6
-rw-r--r--llvm/tools/sanstats/sanstats.cpp6
3 files changed, 17 insertions, 9 deletions
diff --git a/llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp b/llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp
index 950349377bf..4a3a7b3d2f3 100644
--- a/llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp
+++ b/llvm/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;
}
@@ -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();
diff --git a/llvm/tools/sancov/sancov.cc b/llvm/tools/sancov/sancov.cc
index efeb46a1faa..e4e83b0bbc8 100644
--- a/llvm/tools/sancov/sancov.cc
+++ b/llvm/tools/sancov/sancov.cc
@@ -135,6 +135,12 @@ template <typename T> static void FailIfError(const ErrorOr<T> &E) {
FailIfError(E.getError());
}
+template <typename T> static void FailIfError(Expected<T> &E) {
+ if (E)
+ return;
+ logAllUnhandledErrors(E.takeError(), errs(), "Error: ");
+}
+
static void FailIfNotEmpty(const llvm::Twine &E) {
if (E.str().empty())
return;
diff --git a/llvm/tools/sanstats/sanstats.cpp b/llvm/tools/sanstats/sanstats.cpp
index 3a8cc9aea8c..b2216eab119 100644
--- a/llvm/tools/sanstats/sanstats.cpp
+++ b/llvm/tools/sanstats/sanstats.cpp
@@ -76,12 +76,12 @@ const char *ReadModule(char SizeofPtr, const char *Begin, const char *End) {
if (Begin == End)
return nullptr;
- ErrorOr<DILineInfo> LineInfo = Symbolizer.symbolizeCode(Filename, Addr);
- if (LineInfo) {
+ if (Expected<DILineInfo> LineInfo =
+ Symbolizer.symbolizeCode(Filename, Addr)) {
llvm::outs() << LineInfo->FileName << ':' << LineInfo->Line << ' '
<< LineInfo->FunctionName << ' ';
} else {
- llvm::outs() << "<error> ";
+ logAllUnhandledErrors(LineInfo.takeError(), llvm::outs(), "<error> ");
}
switch (KindFromData(Data, SizeofPtr)) {
OpenPOWER on IntegriCloud