[clang] [clang] Add -fcrash-diagnostics-tar for tarball of crash reproducer files (PR #198838)
Arthur Eubanks via cfe-commits
cfe-commits at lists.llvm.org
Sun May 24 18:00:24 PDT 2026
https://github.com/aeubanks updated https://github.com/llvm/llvm-project/pull/198838
>From d1c339ba464bcc1aadf0a5972acf3091d41ca556 Mon Sep 17 00:00:00 2001
From: Arthur Eubanks <aeubanks at google.com>
Date: Wed, 20 May 2026 16:33:53 +0000
Subject: [PATCH 1/5] [clang] Add -fcrash-diagnostics-tar for tarball of crash
reproducer files
Makes it easier to move around crash diagnostics.
---
clang/include/clang/Options/Options.td | 4 ++
clang/lib/Driver/Driver.cpp | 64 +++++++++++++++++++
clang/test/Driver/Inputs/empty.h | 1 +
clang/test/Driver/Inputs/module.modulemap | 3 +
clang/test/Driver/crash-diagnostics-modules.c | 17 +++++
clang/test/Driver/crash-diagnostics-tar.c | 17 +++++
6 files changed, 106 insertions(+)
create mode 100644 clang/test/Driver/Inputs/empty.h
create mode 100644 clang/test/Driver/Inputs/module.modulemap
create mode 100644 clang/test/Driver/crash-diagnostics-modules.c
create mode 100644 clang/test/Driver/crash-diagnostics-tar.c
diff --git a/clang/include/clang/Options/Options.td b/clang/include/clang/Options/Options.td
index 753e3ac1b74a5..8ee8bb544535e 100644
--- a/clang/include/clang/Options/Options.td
+++ b/clang/include/clang/Options/Options.td
@@ -2177,6 +2177,10 @@ def fcrash_diagnostics_dir : Joined<["-"], "fcrash-diagnostics-dir=">,
Group<f_clang_Group>, Flags<[NoArgumentUnused]>,
Visibility<[ClangOption, CLOption, DXCOption]>,
HelpText<"Put crash-report files in <dir>">, MetaVarName<"<dir>">;
+def fcrash_diagnostics_tar : Joined<["-"], "fcrash-diagnostics-tar=">,
+ Group<f_clang_Group>, Flags<[NoArgumentUnused]>,
+ Visibility<[ClangOption, CLOption, DXCOption]>,
+ HelpText<"Put crash-report tarball at <path>">, MetaVarName<"<path>">;
def fcreate_profile : Flag<["-"], "fcreate-profile">, Group<f_Group>;
defm cxx_exceptions: BoolFOption<"cxx-exceptions",
LangOpts<"CXXExceptions">, DefaultFalse,
diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp
index 4a968a4ce5cc0..42226193c3b15 100644
--- a/clang/lib/Driver/Driver.cpp
+++ b/clang/lib/Driver/Driver.cpp
@@ -98,12 +98,14 @@
#include "llvm/Support/IOSandbox.h"
#include "llvm/Support/JSON.h"
#include "llvm/Support/MD5.h"
+#include "llvm/Support/MemoryBuffer.h"
#include "llvm/Support/Path.h"
#include "llvm/Support/PrettyStackTrace.h"
#include "llvm/Support/Process.h"
#include "llvm/Support/Program.h"
#include "llvm/Support/Regex.h"
#include "llvm/Support/StringSaver.h"
+#include "llvm/Support/TarWriter.h"
#include "llvm/Support/VirtualFileSystem.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/TargetParser/Host.h"
@@ -2271,9 +2273,71 @@ void Driver::generateCompilationDiagnostics(
<< "\n";
if (Report)
Report->TemporaryFiles.push_back(std::string(Script));
+ TempFiles.push_back(std::string(Script));
+ ScriptOS.close();
Diag(clang::diag::note_drv_command_failed_diag_msg) << Script;
}
+ if (Arg *A = C.getArgs().getLastArg(options::OPT_fcrash_diagnostics_tar)) {
+ StringRef CrashDiagnosticsTar = A->getValue();
+ Expected<std::unique_ptr<llvm::TarWriter>> TarOrErr =
+ llvm::TarWriter::create(CrashDiagnosticsTar,
+ llvm::sys::path::stem(CrashDiagnosticsTar));
+ if (!TarOrErr) {
+ Diag(clang::diag::note_drv_command_failed_diag_msg)
+ << (std::string("Error creating reproducer tarball: ") +
+ llvm::toString(TarOrErr.takeError()));
+ } else {
+ std::unique_ptr<llvm::TarWriter> &Tar = *TarOrErr;
+ for (const std::string &TempFile : TempFiles) {
+ if (llvm::sys::fs::is_directory(TempFile)) {
+ std::error_code EC;
+ for (llvm::sys::fs::recursive_directory_iterator I(TempFile, EC), E;
+ I != E && !EC; I.increment(EC)) {
+ if (llvm::sys::fs::is_regular_file(I->path())) {
+ auto BufferOrErr = llvm::MemoryBuffer::getFile(I->path());
+ if (BufferOrErr) {
+ // Construct path of file relative to TempFile.
+ llvm::SmallString<128> PathInTar =
+ llvm::sys::path::filename(TempFile);
+ StringRef SubPath = I->path();
+ if (SubPath.consume_front(TempFile)) {
+ if (!SubPath.empty() &&
+ llvm::sys::path::is_separator(SubPath.front())) {
+ SubPath = SubPath.drop_front();
+ }
+ llvm::sys::path::append(PathInTar, SubPath);
+ Tar->append(PathInTar, (*BufferOrErr)->getBuffer());
+ }
+ } else {
+ Diag(clang::diag::note_drv_command_failed_diag_msg)
+ << (std::string("Error reading file for tarball: ") +
+ I->path());
+ }
+ }
+ }
+ if (EC) {
+ Diag(clang::diag::note_drv_command_failed_diag_msg)
+ << (std::string("Error iterating directory for tarball: ") +
+ TempFile + " " + EC.message());
+ }
+ } else {
+ auto BufferOrErr = llvm::MemoryBuffer::getFile(TempFile);
+ if (BufferOrErr) {
+ Tar->append(llvm::sys::path::filename(TempFile),
+ (*BufferOrErr)->getBuffer());
+ } else {
+ Diag(clang::diag::note_drv_command_failed_diag_msg)
+ << (std::string("Error reading file for tarball: ") + TempFile);
+ }
+ }
+ }
+ Diag(clang::diag::note_drv_command_failed_diag_msg)
+ << (std::string("Crash reproducer tarball created at: ") +
+ CrashDiagnosticsTar);
+ }
+ }
+
// On darwin, provide information about the .crash diagnostic report.
if (llvm::Triple(llvm::sys::getProcessTriple()).isOSDarwin()) {
SmallString<128> CrashDiagDir;
diff --git a/clang/test/Driver/Inputs/empty.h b/clang/test/Driver/Inputs/empty.h
new file mode 100644
index 0000000000000..655474edc7b65
--- /dev/null
+++ b/clang/test/Driver/Inputs/empty.h
@@ -0,0 +1 @@
+// Empty header
diff --git a/clang/test/Driver/Inputs/module.modulemap b/clang/test/Driver/Inputs/module.modulemap
new file mode 100644
index 0000000000000..b6edda7ff5dda
--- /dev/null
+++ b/clang/test/Driver/Inputs/module.modulemap
@@ -0,0 +1,3 @@
+module Empty {
+ header "empty.h"
+}
diff --git a/clang/test/Driver/crash-diagnostics-modules.c b/clang/test/Driver/crash-diagnostics-modules.c
new file mode 100644
index 0000000000000..49414f7fe2bfc
--- /dev/null
+++ b/clang/test/Driver/crash-diagnostics-modules.c
@@ -0,0 +1,17 @@
+// UNSUPPORTED: system-windows
+// RUN: export LSAN_OPTIONS=detect_leaks=0
+// RUN: rm -rf %t
+// RUN: mkdir %t
+// RUN: not %crash_opt %clang -fcrash-diagnostics-tar=%t.tar -fmodules -fmodules-cache-path=%t/cache -I %S/Inputs -c %s -o /dev/null 2>&1 | FileCheck %s
+// RUN: tar -tf %t.tar | FileCheck %s --check-prefix=TAR
+
+#include "empty.h"
+
+#pragma clang __debug parser_crash
+
+// CHECK: Preprocessed source(s) and associated run script(s) are located at:
+// CHECK: Crash reproducer tarball created at:
+
+// TAR-DAG: {{.*}}.c
+// TAR-DAG: {{.*}}.sh
+// TAR-DAG: {{.*}}.cache/{{.*}}module.modulemap
diff --git a/clang/test/Driver/crash-diagnostics-tar.c b/clang/test/Driver/crash-diagnostics-tar.c
new file mode 100644
index 0000000000000..4159afb75b885
--- /dev/null
+++ b/clang/test/Driver/crash-diagnostics-tar.c
@@ -0,0 +1,17 @@
+// UNSUPPORTED: system-windows
+// RUN: export LSAN_OPTIONS=detect_leaks=0
+// RUN: rm -rf %t.tar
+// RUN: not %crash_opt %clang -fcrash-diagnostics-tar=%t.tar -c %s -o /dev/null 2>&1 | FileCheck %s
+// RUN: rm -rf %t
+// RUN: mkdir %t
+// RUN: tar -xf %t.tar -C %t
+// RUN: FileCheck %s --check-prefix=SH < %t/*/crash-diagnostics-tar-*.sh
+// RUN: FileCheck %s --check-prefix=C < %t/*/crash-diagnostics-tar-*.c
+
+#pragma clang __debug parser_crash
+
+// CHECK: Preprocessed source(s) and associated run script(s) are located at:
+// CHECK: Crash reproducer tarball created at:
+
+// SH: # Crash reproducer for
+// C: # 1 "
>From de2f684b6187a70259c89d90997dec3260ab83ec Mon Sep 17 00:00:00 2001
From: Arthur Eubanks <aeubanks at google.com>
Date: Fri, 22 May 2026 00:00:20 +0000
Subject: [PATCH 2/5] make tests work on windows
---
clang/test/Driver/crash-diagnostics-modules.c | 9 ++++-----
clang/test/Driver/crash-diagnostics-tar.c | 15 +++++++--------
2 files changed, 11 insertions(+), 13 deletions(-)
diff --git a/clang/test/Driver/crash-diagnostics-modules.c b/clang/test/Driver/crash-diagnostics-modules.c
index 49414f7fe2bfc..41d04384affa9 100644
--- a/clang/test/Driver/crash-diagnostics-modules.c
+++ b/clang/test/Driver/crash-diagnostics-modules.c
@@ -1,9 +1,8 @@
-// UNSUPPORTED: system-windows
// RUN: export LSAN_OPTIONS=detect_leaks=0
-// RUN: rm -rf %t
-// RUN: mkdir %t
-// RUN: not %crash_opt %clang -fcrash-diagnostics-tar=%t.tar -fmodules -fmodules-cache-path=%t/cache -I %S/Inputs -c %s -o /dev/null 2>&1 | FileCheck %s
-// RUN: tar -tf %t.tar | FileCheck %s --check-prefix=TAR
+// RUN: rm -rf %t && mkdir %t
+// RUN: cd %t
+// RUN: not %crash_opt %clang -fcrash-diagnostics-tar=repro.tar -fmodules -fmodules-cache-path=cache -I %S/Inputs -c %s -o /dev/null 2>&1 | FileCheck %s
+// RUN: tar -tf repro.tar | FileCheck %s --check-prefix=TAR
#include "empty.h"
diff --git a/clang/test/Driver/crash-diagnostics-tar.c b/clang/test/Driver/crash-diagnostics-tar.c
index 4159afb75b885..ddc95ae5b00df 100644
--- a/clang/test/Driver/crash-diagnostics-tar.c
+++ b/clang/test/Driver/crash-diagnostics-tar.c
@@ -1,12 +1,11 @@
-// UNSUPPORTED: system-windows
// RUN: export LSAN_OPTIONS=detect_leaks=0
-// RUN: rm -rf %t.tar
-// RUN: not %crash_opt %clang -fcrash-diagnostics-tar=%t.tar -c %s -o /dev/null 2>&1 | FileCheck %s
-// RUN: rm -rf %t
-// RUN: mkdir %t
-// RUN: tar -xf %t.tar -C %t
-// RUN: FileCheck %s --check-prefix=SH < %t/*/crash-diagnostics-tar-*.sh
-// RUN: FileCheck %s --check-prefix=C < %t/*/crash-diagnostics-tar-*.c
+// RUN: rm -rf %t && mkdir %t
+// RUN: cd %t
+// RUN: not %crash_opt %clang -fcrash-diagnostics-tar=repro.tar -c %s -o /dev/null 2>&1 | FileCheck %s
+// RUN: mkdir extract
+// RUN: tar -xf repro.tar -C extract
+// RUN: FileCheck %s --check-prefix=SH < extract/*/crash-diagnostics-tar-*.sh
+// RUN: FileCheck %s --check-prefix=C < extract/*/crash-diagnostics-tar-*.c
#pragma clang __debug parser_crash
>From 9fc24501342f103d9ffd6f530804cc2082543960 Mon Sep 17 00:00:00 2001
From: Arthur Eubanks <aeubanks at google.com>
Date: Fri, 22 May 2026 22:55:25 +0000
Subject: [PATCH 3/5] Print path to tar instead when -fcrash-diagnostic-tar
---
clang/lib/Driver/Driver.cpp | 21 ++++++++++---------
clang/test/Driver/crash-diagnostics-dir-3.c | 2 +-
clang/test/Driver/crash-diagnostics-dir.c | 2 +-
clang/test/Driver/crash-diagnostics-modules.c | 4 ++--
clang/test/Driver/crash-diagnostics-tar.c | 15 ++++++++++---
5 files changed, 27 insertions(+), 17 deletions(-)
diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp
index 42226193c3b15..5aba0067fda46 100644
--- a/clang/lib/Driver/Driver.cpp
+++ b/clang/lib/Driver/Driver.cpp
@@ -2011,10 +2011,9 @@ bool Driver::getCrashDiagnosticFile(StringRef ReproCrashFilename,
return false;
}
-static const char BugReporMsg[] =
+static const char BugReportMsg[] =
"\n********************\n\n"
- "PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:\n"
- "Preprocessed source(s) and associated run script(s) are located at:";
+ "PLEASE ATTACH THE FOLLOWING CRASH REPRODUCER FILES TO THE BUG REPORT:";
// When clang crashes, produce diagnostic information including the fully
// preprocessed source file(s). Request that the developer attach the
@@ -2025,6 +2024,8 @@ void Driver::generateCompilationDiagnostics(
if (C.getArgs().hasArg(options::OPT_fno_crash_diagnostics))
return;
+ bool HasCrashTar = C.getArgs().hasArg(options::OPT_fcrash_diagnostics_tar);
+
unsigned Level = 1;
if (Arg *A = C.getArgs().getLastArg(options::OPT_fcrash_diagnostics_EQ)) {
Level = llvm::StringSwitch<unsigned>(A->getValue())
@@ -2085,7 +2086,7 @@ void Driver::generateCompilationDiagnostics(
// Redirect stdout/stderr to /dev/null.
NewLLDInvocation.Execute({std::nullopt, {""}, {""}}, nullptr, nullptr);
- Diag(clang::diag::note_drv_command_failed_diag_msg) << BugReporMsg;
+ Diag(clang::diag::note_drv_command_failed_diag_msg) << BugReportMsg;
Diag(clang::diag::note_drv_command_failed_diag_msg) << TmpName;
Diag(clang::diag::note_drv_command_failed_diag_msg)
<< "\n\n********************";
@@ -2226,12 +2227,13 @@ void Driver::generateCompilationDiagnostics(
TempFiles.push_back(std::string(Path.begin(), Path.end()));
}
- Diag(clang::diag::note_drv_command_failed_diag_msg) << BugReporMsg;
+ Diag(clang::diag::note_drv_command_failed_diag_msg) << BugReportMsg;
SmallString<128> VFS;
SmallString<128> ReproCrashFilename;
for (std::string &TempFile : TempFiles) {
- Diag(clang::diag::note_drv_command_failed_diag_msg) << TempFile;
+ if (!HasCrashTar)
+ Diag(clang::diag::note_drv_command_failed_diag_msg) << TempFile;
if (Report)
Report->TemporaryFiles.push_back(TempFile);
if (ReproCrashFilename.empty()) {
@@ -2275,7 +2277,8 @@ void Driver::generateCompilationDiagnostics(
Report->TemporaryFiles.push_back(std::string(Script));
TempFiles.push_back(std::string(Script));
ScriptOS.close();
- Diag(clang::diag::note_drv_command_failed_diag_msg) << Script;
+ if (!HasCrashTar)
+ Diag(clang::diag::note_drv_command_failed_diag_msg) << Script;
}
if (Arg *A = C.getArgs().getLastArg(options::OPT_fcrash_diagnostics_tar)) {
@@ -2332,9 +2335,7 @@ void Driver::generateCompilationDiagnostics(
}
}
}
- Diag(clang::diag::note_drv_command_failed_diag_msg)
- << (std::string("Crash reproducer tarball created at: ") +
- CrashDiagnosticsTar);
+ Diag(clang::diag::note_drv_command_failed_diag_msg) << CrashDiagnosticsTar;
}
}
diff --git a/clang/test/Driver/crash-diagnostics-dir-3.c b/clang/test/Driver/crash-diagnostics-dir-3.c
index 63a5efc853a4c..753b60ee2e2a0 100644
--- a/clang/test/Driver/crash-diagnostics-dir-3.c
+++ b/clang/test/Driver/crash-diagnostics-dir-3.c
@@ -2,5 +2,5 @@
// RUN: rm -rf %t
// RUN: not %crash_opt env CLANG_CRASH_DIAGNOSTICS_DIR=%t %clang -c %s -o - 2>&1 | FileCheck %s
#pragma clang __debug parser_crash
-// CHECK: Preprocessed source(s) and associated run script(s) are located at:
+// CHECK: PLEASE ATTACH THE FOLLOWING CRASH REPRODUCER FILES TO THE BUG REPORT:
// CHECK: diagnostic msg: {{.*}}{{/|\\}}crash-diagnostics-dir-3.c.tmp{{(/|\\).*}}.c
diff --git a/clang/test/Driver/crash-diagnostics-dir.c b/clang/test/Driver/crash-diagnostics-dir.c
index 9a8299bffe005..8350ef70f9fef 100644
--- a/clang/test/Driver/crash-diagnostics-dir.c
+++ b/clang/test/Driver/crash-diagnostics-dir.c
@@ -2,5 +2,5 @@
// RUN: rm -rf %t
// RUN: not %crash_opt %clang -fcrash-diagnostics-dir=%t -c %s -o - 2>&1 | FileCheck %s
#pragma clang __debug parser_crash
-// CHECK: Preprocessed source(s) and associated run script(s) are located at:
+// CHECK: PLEASE ATTACH THE FOLLOWING CRASH REPRODUCER FILES TO THE BUG REPORT:
// CHECK: diagnostic msg: {{.*}}{{/|\\}}crash-diagnostics-dir.c.tmp{{(/|\\).*}}.c
diff --git a/clang/test/Driver/crash-diagnostics-modules.c b/clang/test/Driver/crash-diagnostics-modules.c
index 41d04384affa9..cb9299b8e73cc 100644
--- a/clang/test/Driver/crash-diagnostics-modules.c
+++ b/clang/test/Driver/crash-diagnostics-modules.c
@@ -8,8 +8,8 @@
#pragma clang __debug parser_crash
-// CHECK: Preprocessed source(s) and associated run script(s) are located at:
-// CHECK: Crash reproducer tarball created at:
+// CHECK: PLEASE ATTACH THE FOLLOWING CRASH REPRODUCER FILES TO THE BUG REPORT:
+// CHECK: repro.tar
// TAR-DAG: {{.*}}.c
// TAR-DAG: {{.*}}.sh
diff --git a/clang/test/Driver/crash-diagnostics-tar.c b/clang/test/Driver/crash-diagnostics-tar.c
index ddc95ae5b00df..a8dd28498aa30 100644
--- a/clang/test/Driver/crash-diagnostics-tar.c
+++ b/clang/test/Driver/crash-diagnostics-tar.c
@@ -1,16 +1,25 @@
// RUN: export LSAN_OPTIONS=detect_leaks=0
// RUN: rm -rf %t && mkdir %t
// RUN: cd %t
-// RUN: not %crash_opt %clang -fcrash-diagnostics-tar=repro.tar -c %s -o /dev/null 2>&1 | FileCheck %s
+// RUN: not %crash_opt %clang -fcrash-diagnostics-tar=repro.tar -c %s -o /dev/null 2>&1 | FileCheck %s --check-prefix=TAR
// RUN: mkdir extract
// RUN: tar -xf repro.tar -C extract
// RUN: FileCheck %s --check-prefix=SH < extract/*/crash-diagnostics-tar-*.sh
// RUN: FileCheck %s --check-prefix=C < extract/*/crash-diagnostics-tar-*.c
+// RUN: not %crash_opt %clang -c %s -o /dev/null 2>&1 | FileCheck %s --check-prefix=NOTAR
+
#pragma clang __debug parser_crash
-// CHECK: Preprocessed source(s) and associated run script(s) are located at:
-// CHECK: Crash reproducer tarball created at:
+// TAR: PLEASE ATTACH THE FOLLOWING CRASH REPRODUCER FILES TO THE BUG REPORT:
+// TAR: repro.tar
+// TAR-NOT: .c
+// TAR-NOT: .sh
+
+// NOTAR: PLEASE ATTACH THE FOLLOWING CRASH REPRODUCER FILES TO THE BUG REPORT:
+// NOTAR: .c
+// NOTAR: .sh
+// NOTAR-NOT: .tar
// SH: # Crash reproducer for
// C: # 1 "
>From 96094068a27a8f58a21f9ebf99d7195a0c8eff58 Mon Sep 17 00:00:00 2001
From: Arthur Eubanks <aeubanks at google.com>
Date: Fri, 22 May 2026 22:58:04 +0000
Subject: [PATCH 4/5] small test cleanup
---
clang/test/Driver/crash-diagnostics-modules.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/clang/test/Driver/crash-diagnostics-modules.c b/clang/test/Driver/crash-diagnostics-modules.c
index cb9299b8e73cc..d6228f6b38c98 100644
--- a/clang/test/Driver/crash-diagnostics-modules.c
+++ b/clang/test/Driver/crash-diagnostics-modules.c
@@ -11,6 +11,6 @@
// CHECK: PLEASE ATTACH THE FOLLOWING CRASH REPRODUCER FILES TO THE BUG REPORT:
// CHECK: repro.tar
-// TAR-DAG: {{.*}}.c
-// TAR-DAG: {{.*}}.sh
-// TAR-DAG: {{.*}}.cache/{{.*}}module.modulemap
+// TAR-DAG: .c
+// TAR-DAG: .sh
+// TAR-DAG: .cache/{{.*}}module.modulemap
>From ce855e72d3c266aefe4985a8135ed950b313255a Mon Sep 17 00:00:00 2001
From: Arthur Eubanks <aeubanks at google.com>
Date: Mon, 25 May 2026 00:59:55 +0000
Subject: [PATCH 5/5] fix tests and slightly reword driver crash message
---
clang/test/Driver/crash-ir-repro.cpp | 2 +-
clang/test/Driver/crash-report-clang-cl.cpp | 2 +-
clang/test/Driver/crash-report-crashfile.m | 4 ++--
clang/test/Driver/crash-report-header.h | 2 +-
clang/test/Driver/crash-report-modules.m | 4 ++--
clang/test/Driver/crash-report-multi-arch.c | 2 +-
clang/test/Driver/crash-report-null.test | 4 ++--
clang/test/Driver/crash-report-spaces.c | 2 +-
clang/test/Driver/crash-report-with-asserts.c | 2 +-
clang/test/Driver/crash-report.cpp | 2 +-
clang/test/Driver/lld-repro.c | 4 ++--
clang/test/Modules/crash-vfs-headermaps.m | 2 +-
clang/test/Modules/crash-vfs-include-pch.m | 2 +-
clang/test/Modules/crash-vfs-ivfsoverlay.m | 2 +-
clang/test/Modules/crash-vfs-path-emptydir-entries.m | 2 +-
clang/test/Modules/crash-vfs-path-symlink-component.m | 2 +-
clang/test/Modules/crash-vfs-path-symlink-topheader.m | 2 +-
clang/test/Modules/crash-vfs-path-traversal.m | 2 +-
clang/test/Modules/crash-vfs-relative-incdir.m | 2 +-
clang/test/Modules/crash-vfs-relative-overlay.m | 2 +-
clang/test/Modules/crash-vfs-run-reproducer.m | 2 +-
clang/test/Modules/crash-vfs-umbrella-frameworks.m | 2 +-
clang/tools/driver/driver.cpp | 4 ++--
23 files changed, 28 insertions(+), 28 deletions(-)
diff --git a/clang/test/Driver/crash-ir-repro.cpp b/clang/test/Driver/crash-ir-repro.cpp
index 599c656f0936e..4f6cf93189627 100644
--- a/clang/test/Driver/crash-ir-repro.cpp
+++ b/clang/test/Driver/crash-ir-repro.cpp
@@ -1,7 +1,7 @@
// RUN: %clang -S -emit-llvm -o %t.ll %s
// RUN: not %crash_opt %clang -S -DCRASH %s -o %t.ll 2>&1 | FileCheck %s
-// CHECK: Preprocessed source(s) and associated run script(s) are located at:
+// CHECK: PLEASE ATTACH THE FOLLOWING CRASH REPRODUCER FILES TO THE BUG REPORT:
// CHECK-NEXT: clang: note: diagnostic msg: {{.*}}.cpp
// CHECK-NEXT: clang: note: diagnostic msg: {{.*}}.sh
diff --git a/clang/test/Driver/crash-report-clang-cl.cpp b/clang/test/Driver/crash-report-clang-cl.cpp
index f61b94626f584..e97210aa952dc 100644
--- a/clang/test/Driver/crash-report-clang-cl.cpp
+++ b/clang/test/Driver/crash-report-clang-cl.cpp
@@ -11,7 +11,7 @@
#pragma clang __debug crash
-// CHECK: Preprocessed source(s) and associated run script(s) are located at:
+// CHECK: PLEASE ATTACH THE FOLLOWING CRASH REPRODUCER FILES TO THE BUG REPORT:
// __has_feature(cxx_exceptions) is default-off in the cl-compatible driver.
FOO
diff --git a/clang/test/Driver/crash-report-crashfile.m b/clang/test/Driver/crash-report-crashfile.m
index dd55b0dbb77e0..9479d1fdd03f2 100644
--- a/clang/test/Driver/crash-report-crashfile.m
+++ b/clang/test/Driver/crash-report-crashfile.m
@@ -19,7 +19,7 @@
// CRASH_ENV: PLEASE submit a bug report to {{.*}} and include the crash backtrace, preprocessed source, and associated run script.
// CRASH_ENV: failing because environment variable 'FORCE_CLANG_DIAGNOSTICS_CRASH' is set
-// CRASH_ENV: Preprocessed source(s) and associated run script(s) are located at:
+// CRASH_ENV: PLEASE ATTACH THE FOLLOWING CRASH REPRODUCER FILES TO THE BUG REPORT:
// CRASH_ENV-NEXT: note: diagnostic msg: {{.*}}.m
// CRASH_ENV-NEXT: note: diagnostic msg: {{.*}}.cache
// CRASH_ENV-NEXT: note: diagnostic msg: {{.*}}.sh
@@ -27,7 +27,7 @@
// CRASH_ENV-NEXT: note: diagnostic msg: {{.*}}Library/Logs/DiagnosticReports{{.*}}
// CRASH_FLAG: failing because '-gen-reproducer' is used
-// CRASH_FLAG: Preprocessed source(s) and associated run script(s) are located at:
+// CRASH_FLAG: PLEASE ATTACH THE FOLLOWING CRASH REPRODUCER FILES TO THE BUG REPORT:
// CRASH_FLAG-NEXT: note: diagnostic msg: {{.*}}.m
// CRASH_FLAG-NEXT: note: diagnostic msg: {{.*}}.cache
// CRASH_FLAG-NEXT: note: diagnostic msg: {{.*}}.sh
diff --git a/clang/test/Driver/crash-report-header.h b/clang/test/Driver/crash-report-header.h
index 6d5156537126d..9208cea53d1d0 100644
--- a/clang/test/Driver/crash-report-header.h
+++ b/clang/test/Driver/crash-report-header.h
@@ -7,7 +7,7 @@
// REQUIRES: crash-recovery
#pragma clang __debug parser_crash
-// CHECK: Preprocessed source(s) and associated run script(s) are located at:
+// CHECK: PLEASE ATTACH THE FOLLOWING CRASH REPRODUCER FILES TO THE BUG REPORT:
// CHECK-NEXT: note: diagnostic msg: {{.*}}.h
FOO
// CHECKSRC: FOO
diff --git a/clang/test/Driver/crash-report-modules.m b/clang/test/Driver/crash-report-modules.m
index 7f669dc8ededd..27f2ba2dfbb7d 100644
--- a/clang/test/Driver/crash-report-modules.m
+++ b/clang/test/Driver/crash-report-modules.m
@@ -16,8 +16,8 @@
@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: PLEASE submit a bug report to {{.*}} and include the crash backtrace and dumped files.
+// CHECK: PLEASE ATTACH THE FOLLOWING CRASH REPRODUCER FILES TO THE BUG REPORT:
// CHECK-NEXT: note: diagnostic msg: {{.*}}.m
// CHECK-NEXT: note: diagnostic msg: {{.*}}.cache
diff --git a/clang/test/Driver/crash-report-multi-arch.c b/clang/test/Driver/crash-report-multi-arch.c
index 423fd1dc38bfe..7007d5c718045 100644
--- a/clang/test/Driver/crash-report-multi-arch.c
+++ b/clang/test/Driver/crash-report-multi-arch.c
@@ -38,7 +38,7 @@
// REQUIRES: crash-recovery, system-darwin
// REQUIRES: aarch64-registered-target, x86-registered-target
-// CHECK: Preprocessed source(s) and associated run script(s) are located at:
+// CHECK: PLEASE ATTACH THE FOLLOWING CRASH REPRODUCER FILES TO THE BUG REPORT:
// CHECK-NEXT: note: diagnostic msg: {{.*}}crash-report-{{.*}}.c
// CHECKSH-x86_64: # Crash reproducer
diff --git a/clang/test/Driver/crash-report-null.test b/clang/test/Driver/crash-report-null.test
index c5e3b3b0fc9ca..8faaaf6e140f2 100644
--- a/clang/test/Driver/crash-report-null.test
+++ b/clang/test/Driver/crash-report-null.test
@@ -3,6 +3,6 @@
// FIXME: Investigating. "fatal error: file 'nul' modified since it was first processed"
// UNSUPPORTED: system-windows
-// 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: PLEASE submit a bug report to {{.*}} and include the crash backtrace and dumped files.
+// CHECK: PLEASE ATTACH THE FOLLOWING CRASH REPRODUCER FILES TO THE BUG REPORT:
// CHECK-NEXT: note: diagnostic msg: {{.*}}null-{{.*}}.c
diff --git a/clang/test/Driver/crash-report-spaces.c b/clang/test/Driver/crash-report-spaces.c
index b5fbb59683fc0..59d441445a89e 100644
--- a/clang/test/Driver/crash-report-spaces.c
+++ b/clang/test/Driver/crash-report-spaces.c
@@ -8,7 +8,7 @@
// REQUIRES: crash-recovery
#pragma clang __debug parser_crash
-// CHECK: Preprocessed source(s) and associated run script(s) are located at:
+// CHECK: PLEASE ATTACH THE FOLLOWING CRASH REPRODUCER FILES TO THE BUG REPORT:
// CHECK-NEXT: note: diagnostic msg: {{.*}}.c
FOO
// CHECKSRC: FOO
diff --git a/clang/test/Driver/crash-report-with-asserts.c b/clang/test/Driver/crash-report-with-asserts.c
index 278860a9158e4..3885a20dc4de6 100644
--- a/clang/test/Driver/crash-report-with-asserts.c
+++ b/clang/test/Driver/crash-report-with-asserts.c
@@ -30,7 +30,7 @@
#pragma clang __debug llvm_unreachable
#endif
-// CHECK: Preprocessed source(s) and associated run script(s) are located at:
+// CHECK: PLEASE ATTACH THE FOLLOWING CRASH REPRODUCER FILES TO THE BUG REPORT:
// CHECK-NEXT: note: diagnostic msg: {{.*}}crash-report-with-asserts-{{.*}}.c
FOO
// CHECKSRC: FOO
diff --git a/clang/test/Driver/crash-report.cpp b/clang/test/Driver/crash-report.cpp
index c431940bf9ea1..9fb79b3987650 100644
--- a/clang/test/Driver/crash-report.cpp
+++ b/clang/test/Driver/crash-report.cpp
@@ -61,7 +61,7 @@
#pragma clang __debug llvm_fatal_error
#endif
-// CHECK: Preprocessed source(s) and associated run script(s) are located at:
+// CHECK: PLEASE ATTACH THE FOLLOWING CRASH REPRODUCER FILES TO THE BUG REPORT:
// CHECK-NEXT: note: diagnostic msg: {{.*}}crash-report-{{.*}}.cpp
// __has_feature(cxx_exceptions) is default-on in the gcc-compatible driver.
diff --git a/clang/test/Driver/lld-repro.c b/clang/test/Driver/lld-repro.c
index 0e6340865b738..c2e5b0eb67ef1 100644
--- a/clang/test/Driver/lld-repro.c
+++ b/clang/test/Driver/lld-repro.c
@@ -15,7 +15,7 @@
// check that we still get lld's output
// CHECK: error: undefined symbol: {{_?}}a
-// CHECK: Preprocessed source(s) and associated run script(s) are located at:
+// CHECK: PLEASE ATTACH THE FOLLOWING CRASH REPRODUCER FILES TO THE BUG REPORT:
// CHECK-NEXT: note: diagnostic msg: {{.*}}linker-crash-{{.*}}.tar
// CHECK-NEXT: note: diagnostic msg:
// CHECK: ********************
@@ -25,7 +25,7 @@
// RUN: not %clang %s @%t.rsp -o /dev/null 2>&1 \
// RUN: | FileCheck %s --check-prefix=NO-LINKER
-// NO-LINKER-NOT: Preprocessed source(s) and associated run script(s) are located at:
+// NO-LINKER-NOT: PLEASE ATTACH THE FOLLOWING CRASH REPRODUCER FILES TO THE BUG REPORT:
extern int a;
int main() {
diff --git a/clang/test/Modules/crash-vfs-headermaps.m b/clang/test/Modules/crash-vfs-headermaps.m
index 26ff3f26450b5..1104b26cb8242 100644
--- a/clang/test/Modules/crash-vfs-headermaps.m
+++ b/clang/test/Modules/crash-vfs-headermaps.m
@@ -16,7 +16,7 @@
#include "Foo.h"
#include "Foo.h"
-// CHECK: Preprocessed source(s) and associated run script(s) are located at:
+// CHECK: PLEASE ATTACH THE FOLLOWING CRASH REPRODUCER FILES TO THE BUG REPORT:
// CHECK-NEXT: note: diagnostic msg: {{.*}}.m
// CHECK-NEXT: note: diagnostic msg: {{.*}}.cache
diff --git a/clang/test/Modules/crash-vfs-include-pch.m b/clang/test/Modules/crash-vfs-include-pch.m
index 2610b06974578..d0c6650656db6 100644
--- a/clang/test/Modules/crash-vfs-include-pch.m
+++ b/clang/test/Modules/crash-vfs-include-pch.m
@@ -21,7 +21,7 @@
void f() { SPXTrace(); }
void g() { double x = DBL_MAX; }
-// CHECK: Preprocessed source(s) and associated run script(s) are located at:
+// CHECK: PLEASE ATTACH THE FOLLOWING CRASH REPRODUCER FILES TO THE BUG REPORT:
// CHECK-NEXT: note: diagnostic msg: {{.*}}.m
// CHECK-NEXT: note: diagnostic msg: {{.*}}.cache
diff --git a/clang/test/Modules/crash-vfs-ivfsoverlay.m b/clang/test/Modules/crash-vfs-ivfsoverlay.m
index 32489457d7362..9ce0d37cd1513 100644
--- a/clang/test/Modules/crash-vfs-ivfsoverlay.m
+++ b/clang/test/Modules/crash-vfs-ivfsoverlay.m
@@ -21,7 +21,7 @@
#include <stdio.h>
-// CHECK: Preprocessed source(s) and associated run script(s) are located at:
+// CHECK: PLEASE ATTACH THE FOLLOWING CRASH REPRODUCER FILES TO THE BUG REPORT:
// CHECK-NEXT: note: diagnostic msg: {{.*}}.m
// CHECK-NEXT: note: diagnostic msg: {{.*}}.cache
diff --git a/clang/test/Modules/crash-vfs-path-emptydir-entries.m b/clang/test/Modules/crash-vfs-path-emptydir-entries.m
index 9564f11cdbcff..ad94d9dd041e4 100644
--- a/clang/test/Modules/crash-vfs-path-emptydir-entries.m
+++ b/clang/test/Modules/crash-vfs-path-emptydir-entries.m
@@ -24,7 +24,7 @@
#include "usr/include/stdio.h"
-// CHECK: Preprocessed source(s) and associated run script(s) are located at:
+// CHECK: PLEASE ATTACH THE FOLLOWING CRASH REPRODUCER FILES TO THE BUG REPORT:
// CHECK-NEXT: note: diagnostic msg: {{.*}}.m
// CHECK-NEXT: note: diagnostic msg: {{.*}}.cache
diff --git a/clang/test/Modules/crash-vfs-path-symlink-component.m b/clang/test/Modules/crash-vfs-path-symlink-component.m
index 4cc4467166bd9..74aae37cceb9f 100644
--- a/clang/test/Modules/crash-vfs-path-symlink-component.m
+++ b/clang/test/Modules/crash-vfs-path-symlink-component.m
@@ -26,7 +26,7 @@
#include "usr/x/../stdio.h"
-// CHECK: Preprocessed source(s) and associated run script(s) are located at:
+// CHECK: PLEASE ATTACH THE FOLLOWING CRASH REPRODUCER FILES TO THE BUG REPORT:
// CHECK-NEXT: note: diagnostic msg: {{.*}}.m
// CHECK-NEXT: note: diagnostic msg: {{.*}}.cache
diff --git a/clang/test/Modules/crash-vfs-path-symlink-topheader.m b/clang/test/Modules/crash-vfs-path-symlink-topheader.m
index bab754fcb749b..b241d6f1fc77b 100644
--- a/clang/test/Modules/crash-vfs-path-symlink-topheader.m
+++ b/clang/test/Modules/crash-vfs-path-symlink-topheader.m
@@ -25,7 +25,7 @@
#include "usr/include/stdio.h"
-// CHECK: Preprocessed source(s) and associated run script(s) are located at:
+// CHECK: PLEASE ATTACH THE FOLLOWING CRASH REPRODUCER FILES TO THE BUG REPORT:
// CHECK-NEXT: note: diagnostic msg: {{.*}}.m
// CHECK-NEXT: note: diagnostic msg: {{.*}}.cache
diff --git a/clang/test/Modules/crash-vfs-path-traversal.m b/clang/test/Modules/crash-vfs-path-traversal.m
index 680cda34700cf..c51870838e713 100644
--- a/clang/test/Modules/crash-vfs-path-traversal.m
+++ b/clang/test/Modules/crash-vfs-path-traversal.m
@@ -24,7 +24,7 @@
#include "usr/././//////include/../include/./././../include/stdio.h"
-// CHECK: Preprocessed source(s) and associated run script(s) are located at:
+// CHECK: PLEASE ATTACH THE FOLLOWING CRASH REPRODUCER FILES TO THE BUG REPORT:
// CHECK-NEXT: note: diagnostic msg: {{.*}}.m
// CHECK-NEXT: note: diagnostic msg: {{.*}}.cache
diff --git a/clang/test/Modules/crash-vfs-relative-incdir.m b/clang/test/Modules/crash-vfs-relative-incdir.m
index cacf65a053049..57506f9163603 100644
--- a/clang/test/Modules/crash-vfs-relative-incdir.m
+++ b/clang/test/Modules/crash-vfs-relative-incdir.m
@@ -17,7 +17,7 @@
#include <stdio.h>
-// CHECK: Preprocessed source(s) and associated run script(s) are located at:
+// CHECK: PLEASE ATTACH THE FOLLOWING CRASH REPRODUCER FILES TO THE BUG REPORT:
// CHECK-NEXT: note: diagnostic msg: {{.*}}.m
// CHECK-NEXT: note: diagnostic msg: {{.*}}.cache
diff --git a/clang/test/Modules/crash-vfs-relative-overlay.m b/clang/test/Modules/crash-vfs-relative-overlay.m
index 36849246b9db4..f3701701ddd94 100644
--- a/clang/test/Modules/crash-vfs-relative-overlay.m
+++ b/clang/test/Modules/crash-vfs-relative-overlay.m
@@ -21,7 +21,7 @@
#include <stdio.h>
-// CHECK: Preprocessed source(s) and associated run script(s) are located at:
+// CHECK: PLEASE ATTACH THE FOLLOWING CRASH REPRODUCER FILES TO THE BUG REPORT:
// CHECK-NEXT: note: diagnostic msg: {{.*}}.m
// CHECK-NEXT: note: diagnostic msg: {{.*}}.cache
diff --git a/clang/test/Modules/crash-vfs-run-reproducer.m b/clang/test/Modules/crash-vfs-run-reproducer.m
index 7b289ccc15bd5..27c8bea2ba6ff 100644
--- a/clang/test/Modules/crash-vfs-run-reproducer.m
+++ b/clang/test/Modules/crash-vfs-run-reproducer.m
@@ -17,7 +17,7 @@
#include <stdio.h>
-// CHECK: Preprocessed source(s) and associated run script(s) are located at:
+// CHECK: PLEASE ATTACH THE FOLLOWING CRASH REPRODUCER FILES TO THE BUG REPORT:
// CHECK-NEXT: note: diagnostic msg: {{.*}}.m
// CHECK-NEXT: note: diagnostic msg: {{.*}}.cache
diff --git a/clang/test/Modules/crash-vfs-umbrella-frameworks.m b/clang/test/Modules/crash-vfs-umbrella-frameworks.m
index 9f79fb1c09b0d..d71d85380d6c3 100644
--- a/clang/test/Modules/crash-vfs-umbrella-frameworks.m
+++ b/clang/test/Modules/crash-vfs-umbrella-frameworks.m
@@ -18,7 +18,7 @@
// RUN: find %t/crash-vfs-*.cache/vfs | \
// RUN: grep "B.framework/Headers/B.h" | count 1
-// CHECK: Preprocessed source(s) and associated run script(s) are located at:
+// CHECK: PLEASE ATTACH THE FOLLOWING CRASH REPRODUCER FILES TO THE BUG REPORT:
// CHECK-NEXT: note: diagnostic msg: {{.*}}.m
// CHECK-NEXT: note: diagnostic msg: {{.*}}.cache
diff --git a/clang/tools/driver/driver.cpp b/clang/tools/driver/driver.cpp
index f22c4b7050b8e..d4d913a8977a4 100644
--- a/clang/tools/driver/driver.cpp
+++ b/clang/tools/driver/driver.cpp
@@ -242,8 +242,8 @@ static int ExecuteCC1Tool(SmallVectorImpl<const char *> &ArgV,
int clang_main(int Argc, char **Argv, const llvm::ToolContext &ToolContext) {
noteBottomOfStack();
llvm::setBugReportMsg("PLEASE submit a bug report to " BUG_REPORT_URL
- " and include the crash backtrace, preprocessed "
- "source, and associated run script.\n");
+ " and include the crash backtrace and"
+ " dumped files.\n");
SmallVector<const char *, 256> Args(Argv, Argv + Argc);
if (llvm::sys::Process::FixupStandardFileDescriptors())
More information about the cfe-commits
mailing list