forked from OSchip/llvm-project
[Driver] When forcing a crash print the bug report message
Commit a945037e8f
moved the printing of the
"PLEASE submit a bug report" message to the crash handler, but that means we
don't print it when forcing a crash using FORCE_CLANG_DIAGNOSTICS_CRASH. Fix
this by adding a function to get the bug report message and printing it when
forcing a crash.
Differential Revision: https://reviews.llvm.org/D81672
This commit is contained in:
parent
52911428ef
commit
ce1fa201af
|
@ -18,6 +18,7 @@
|
|||
const int x = MODULE_MACRO;
|
||||
|
||||
// CRASH_ENV: failing because environment variable 'FORCE_CLANG_DIAGNOSTICS_CRASH' is set
|
||||
// CRASH_ENV: PLEASE submit a bug report to {{.*}} and include the crash backtrace, preprocessed source, and associated run script.
|
||||
// CRASH_ENV: Preprocessed source(s) and associated run script(s) are located at:
|
||||
// CRASH_ENV-NEXT: note: diagnostic msg: {{.*}}.m
|
||||
// CRASH_ENV-NEXT: note: diagnostic msg: {{.*}}.cache
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
@import simple;
|
||||
const int x = MODULE_MACRO;
|
||||
|
||||
// CHECK: PLEASE submit a bug report to {{.*}} and include the crash backtrace, preprocessed source, and associated run script.
|
||||
// CHECK: Preprocessed source(s) and associated run script(s) are located at:
|
||||
// CHECK-NEXT: note: diagnostic msg: {{.*}}.m
|
||||
// CHECK-NEXT: note: diagnostic msg: {{.*}}.cache
|
||||
|
|
|
@ -3,5 +3,6 @@
|
|||
// FIXME: Investigating. "fatal error: file 'nul' modified since it was first processed"
|
||||
// XFAIL: windows-gnu
|
||||
|
||||
// CHECK: PLEASE submit a bug report to {{.*}} and include the crash backtrace, preprocessed source, and associated run script.
|
||||
// CHECK: Preprocessed source(s) and associated run script(s) are located at:
|
||||
// CHECK-NEXT: note: diagnostic msg: {{.*}}null-{{.*}}.c
|
||||
|
|
|
@ -511,6 +511,11 @@ int main(int argc_, const char **argv_) {
|
|||
for (const auto &J : C->getJobs())
|
||||
if (const Command *C = dyn_cast<Command>(&J))
|
||||
FailingCommands.push_back(std::make_pair(-1, C));
|
||||
|
||||
// Print the bug report message that would be printed if we did actually
|
||||
// crash, but only if we're crashing due to FORCE_CLANG_DIAGNOSTICS_CRASH.
|
||||
if (::getenv("FORCE_CLANG_DIAGNOSTICS_CRASH"))
|
||||
llvm::dbgs() << llvm::getBugReportMsg();
|
||||
}
|
||||
|
||||
for (const auto &P : FailingCommands) {
|
||||
|
|
|
@ -41,6 +41,9 @@ namespace llvm {
|
|||
/// a crash.
|
||||
void setBugReportMsg(const char *Msg);
|
||||
|
||||
/// Get the bug report message that will be output upon a crash.
|
||||
const char *getBugReportMsg();
|
||||
|
||||
/// PrettyStackTraceEntry - This class is used to represent a frame of the
|
||||
/// "pretty" stack trace that is dumped when a program crashes. You can define
|
||||
/// subclasses of this and declare them on the program stack: when they are
|
||||
|
|
|
@ -33,6 +33,10 @@
|
|||
|
||||
using namespace llvm;
|
||||
|
||||
static const char *BugReportMsg =
|
||||
"PLEASE submit a bug report to " BUG_REPORT_URL
|
||||
" and include the crash backtrace.\n";
|
||||
|
||||
// If backtrace support is not enabled, compile out support for pretty stack
|
||||
// traces. This has the secondary effect of not requiring thread local storage
|
||||
// when backtrace support is disabled.
|
||||
|
@ -142,10 +146,6 @@ using CrashHandlerStringStorage =
|
|||
static CrashHandlerStringStorage crashHandlerStringStorage;
|
||||
#endif
|
||||
|
||||
static const char *BugReportMsg =
|
||||
"PLEASE submit a bug report to " BUG_REPORT_URL
|
||||
" and include the crash backtrace.\n";
|
||||
|
||||
/// This callback is run if a fatal signal is delivered to the process, it
|
||||
/// prints the pretty stack trace.
|
||||
static void CrashHandler(void *) {
|
||||
|
@ -203,9 +203,11 @@ static void printForSigInfoIfNeeded() {
|
|||
#endif // ENABLE_BACKTRACES
|
||||
|
||||
void llvm::setBugReportMsg(const char *Msg) {
|
||||
#if ENABLE_BACKTRACES
|
||||
BugReportMsg = Msg;
|
||||
#endif
|
||||
}
|
||||
|
||||
const char *llvm::getBugReportMsg() {
|
||||
return BugReportMsg;
|
||||
}
|
||||
|
||||
PrettyStackTraceEntry::PrettyStackTraceEntry() {
|
||||
|
|
Loading…
Reference in New Issue