about summary refs log tree commit diff
diff options
context:
space:
mode:
authorGeorge Tokmaji <tokmajigeorge@gmail.com>2025-08-07 23:42:17 +0200
committerGeorge Tokmaji <tokmajigeorge@gmail.com>2025-08-08 00:16:53 +0200
commit7e5acb91d70d2d6f77ed4e12041ef00a1e4582fe (patch)
treeca973620564b601e367bb88489dc9c0cc73fd100
parentb60f75c9261e0968fbb6f3aa435660db189e0ab5 (diff)
downloadrust-7e5acb91d70d2d6f77ed4e12041ef00a1e4582fe.tar.gz
rust-7e5acb91d70d2d6f77ed4e12041ef00a1e4582fe.zip
Add note mentioning the event log to LinkExeStatusStackBufferOverrun
-rw-r--r--compiler/rustc_codegen_ssa/messages.ftl3
-rw-r--r--compiler/rustc_codegen_ssa/src/errors.rs13
2 files changed, 12 insertions, 4 deletions
diff --git a/compiler/rustc_codegen_ssa/messages.ftl b/compiler/rustc_codegen_ssa/messages.ftl
index 53a52736a97..71212253afc 100644
--- a/compiler/rustc_codegen_ssa/messages.ftl
+++ b/compiler/rustc_codegen_ssa/messages.ftl
@@ -179,7 +179,8 @@ codegen_ssa_ld64_unimplemented_modifier = `as-needed` modifier not implemented y
 codegen_ssa_lib_def_write_failure = failed to write lib.def file: {$error}
 
 codegen_ssa_link_exe_status_stack_buffer_overrun = 0xc0000409 is `STATUS_STACK_BUFFER_OVERRUN`
-    .note = this may have been caused by a program abort and not a stack buffer overrun
+    .abort_note = this may have been caused by a program abort and not a stack buffer overrun
+    .event_log_note = consider checking the Application Event Log for Windows Error Reporting events to see the fail fast error code
 
 codegen_ssa_link_exe_unexpected_error = `link.exe` returned an unexpected error
 
diff --git a/compiler/rustc_codegen_ssa/src/errors.rs b/compiler/rustc_codegen_ssa/src/errors.rs
index 9ef1473e538..fc1092f79a5 100644
--- a/compiler/rustc_codegen_ssa/src/errors.rs
+++ b/compiler/rustc_codegen_ssa/src/errors.rs
@@ -550,11 +550,18 @@ impl<G: EmissionGuarantee> Diagnostic<'_, G> for LinkingFailed<'_> {
 #[diag(codegen_ssa_link_exe_unexpected_error)]
 pub(crate) struct LinkExeUnexpectedError;
 
-#[derive(Diagnostic)]
-#[diag(codegen_ssa_link_exe_status_stack_buffer_overrun)]
-#[note]
 pub(crate) struct LinkExeStatusStackBufferOverrun;
 
+impl<'a, G: EmissionGuarantee> Diagnostic<'a, G> for LinkExeStatusStackBufferOverrun {
+    fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'a>, level: Level) -> Diag<'a, G> {
+        let mut diag =
+            Diag::new(dcx, level, fluent::codegen_ssa_link_exe_status_stack_buffer_overrun);
+        diag.note(fluent::codegen_ssa_abort_note);
+        diag.note(fluent::codegen_ssa_event_log_note);
+        diag
+    }
+}
+
 #[derive(Diagnostic)]
 #[diag(codegen_ssa_repair_vs_build_tools)]
 pub(crate) struct RepairVSBuildTools;