john.brawn updated this revision to Diff 272471.
john.brawn retitled this revision from "[Driver] When forcing a crash call
abort to get the correct diagnostic" to "[Driver] When forcing a crash print
the bug report message".
john.brawn edited the summary of this revision.
john.brawn added a comment.
Print the bug report message when forcing a crash, but also have the message
available even with LLVM_ENABLE_BACKTRACES=OFF.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D81672/new/
https://reviews.llvm.org/D81672
Files:
clang/test/Driver/crash-report-crashfile.m
clang/test/Driver/crash-report-modules.m
clang/test/Driver/crash-report-null.test
clang/tools/driver/driver.cpp
llvm/include/llvm/Support/PrettyStackTrace.h
llvm/lib/Support/PrettyStackTrace.cpp
Index: llvm/lib/Support/PrettyStackTrace.cpp
===================================================================
--- llvm/lib/Support/PrettyStackTrace.cpp
+++ llvm/lib/Support/PrettyStackTrace.cpp
@@ -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 @@
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 @@
#endif // ENABLE_BACKTRACES
void llvm::setBugReportMsg(const char *Msg) {
-#if ENABLE_BACKTRACES
BugReportMsg = Msg;
-#endif
+}
+
+const char *llvm::getBugReportMsg() {
+ return BugReportMsg;
}
PrettyStackTraceEntry::PrettyStackTraceEntry() {
Index: llvm/include/llvm/Support/PrettyStackTrace.h
===================================================================
--- llvm/include/llvm/Support/PrettyStackTrace.h
+++ llvm/include/llvm/Support/PrettyStackTrace.h
@@ -41,6 +41,9 @@
/// 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
Index: clang/tools/driver/driver.cpp
===================================================================
--- clang/tools/driver/driver.cpp
+++ clang/tools/driver/driver.cpp
@@ -511,6 +511,8 @@
for (const auto &J : C->getJobs())
if (const Command *C = dyn_cast<Command>(&J))
FailingCommands.push_back(std::make_pair(-1, C));
+
+ llvm::dbgs() << llvm::getBugReportMsg();
}
for (const auto &P : FailingCommands) {
Index: clang/test/Driver/crash-report-null.test
===================================================================
--- clang/test/Driver/crash-report-null.test
+++ clang/test/Driver/crash-report-null.test
@@ -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
Index: clang/test/Driver/crash-report-modules.m
===================================================================
--- clang/test/Driver/crash-report-modules.m
+++ clang/test/Driver/crash-report-modules.m
@@ -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
Index: clang/test/Driver/crash-report-crashfile.m
===================================================================
--- clang/test/Driver/crash-report-crashfile.m
+++ clang/test/Driver/crash-report-crashfile.m
@@ -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
@@ -26,6 +27,7 @@
// CRASH_ENV-NEXT: note: diagnostic msg: {{.*}}Library/Logs/DiagnosticReports{{.*}}
// CRASH_FLAG: failing because '-gen-reproducer' is used
+// CRASH_FLAG: PLEASE submit a bug report to {{.*}} and include the crash backtrace, preprocessed source, and associated run script.
// CRASH_FLAG: Preprocessed source(s) and associated run script(s) are located at:
// CRASH_FLAG-NEXT: note: diagnostic msg: {{.*}}.m
// CRASH_FLAG-NEXT: note: diagnostic msg: {{.*}}.cache
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits