summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Support/Unix/Signals.inc
diff options
context:
space:
mode:
authorAlexey Samsonov <vonosmas@gmail.com>2014-10-10 22:58:26 +0000
committerAlexey Samsonov <vonosmas@gmail.com>2014-10-10 22:58:26 +0000
commit96983b89b01e65a96919760557f3b6e90a32408a (patch)
tree3a01d36ab115d30eeb53d779a7303f600db5cd00 /llvm/lib/Support/Unix/Signals.inc
parent0aa6926d0b7f049bdaf82c6f1503f232f157968e (diff)
downloadbcm5719-llvm-96983b89b01e65a96919760557f3b6e90a32408a.tar.gz
bcm5719-llvm-96983b89b01e65a96919760557f3b6e90a32408a.zip
Follow-up to r219534 to make symbolization more robust.
1) Explicitly provide important arguments to llvm-symbolizer, not relying on defaults. 2) Be more defensive about symbolizer output. This might fix weird failures on ninja-x64-msvc-RA-centos6 buildbot. llvm-svn: 219541
Diffstat (limited to 'llvm/lib/Support/Unix/Signals.inc')
-rw-r--r--llvm/lib/Support/Unix/Signals.inc9
1 files changed, 7 insertions, 2 deletions
diff --git a/llvm/lib/Support/Unix/Signals.inc b/llvm/lib/Support/Unix/Signals.inc
index a9e484003e1..a19cc61c3c1 100644
--- a/llvm/lib/Support/Unix/Signals.inc
+++ b/llvm/lib/Support/Unix/Signals.inc
@@ -363,9 +363,10 @@ static bool printSymbolizedStackTrace(void **StackTrace, int Depth, FILE *FD) {
}
}
- const char *args[] = {"llvm-symbolizer", nullptr};
+ const char *Args[] = {"llvm-symbolizer", "--functions=linkage", "--inlining",
+ "--demangle", nullptr};
int RunResult =
- sys::ExecuteAndWait(LLVMSymbolizerPath, args, nullptr, Redirects.data());
+ sys::ExecuteAndWait(LLVMSymbolizerPath, Args, nullptr, Redirects.data());
if (RunResult != 0)
return false;
@@ -385,12 +386,16 @@ static bool printSymbolizedStackTrace(void **StackTrace, int Depth, FILE *FD) {
// Read pairs of lines (function name and file/line info) until we
// encounter empty line.
for (;;) {
+ if (CurLine == Lines.end())
+ return false;
StringRef FunctionName = *CurLine++;
if (FunctionName.empty())
break;
fprintf(FD, "#%d %p ", frame_no++, StackTrace[i]);
if (!FunctionName.startswith("??"))
fprintf(FD, "%s ", FunctionName.str().c_str());
+ if (CurLine == Lines.end())
+ return false;
StringRef FileLineInfo = *CurLine++;
if (!FileLineInfo.startswith("??"))
fprintf(FD, "%s", FileLineInfo.str().c_str());
OpenPOWER on IntegriCloud