mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-19 00:41:43 +00:00
We now use a wrapper (wpi::print) to catch exceptions since we can't patch std::print() to not throw when we ultimately migrate to it. fmtlib and std format/print throw the same exceptions and always have. We previously patched fmt::print() to not throw a write failure exception, but we can't do that for std::print(); wpi::print() is the migration plan.
47 lines
1.6 KiB
Diff
47 lines
1.6 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: PJ Reiniger <pj.reiniger@gmail.com>
|
|
Date: Sun, 8 May 2022 19:30:43 -0400
|
|
Subject: [PATCH 22/35] OS-specific changes
|
|
|
|
---
|
|
llvm/lib/Support/ErrorHandling.cpp | 16 +++++++---------
|
|
1 file changed, 7 insertions(+), 9 deletions(-)
|
|
|
|
diff --git a/llvm/lib/Support/ErrorHandling.cpp b/llvm/lib/Support/ErrorHandling.cpp
|
|
index e253d6f7a5ca3aee75823efdb9717dcd93fff5dc..5c08e469e2e44b27e69f4aa974bc59deb8217c9b 100644
|
|
--- a/llvm/lib/Support/ErrorHandling.cpp
|
|
+++ b/llvm/lib/Support/ErrorHandling.cpp
|
|
@@ -96,15 +96,7 @@ void llvm::report_fatal_error(std::string_view Reason, bool GenCrashDiag) {
|
|
wpi::print(stderr, "LLVM ERROR: {}\n", Reason);
|
|
}
|
|
|
|
- // If we reached here, we are failing ungracefully. Run the interrupt handlers
|
|
- // to make sure any special cleanups get done, in particular that we remove
|
|
- // files registered with RemoveFileOnSignal.
|
|
- sys::RunInterruptHandlers();
|
|
-
|
|
- if (GenCrashDiag)
|
|
- abort();
|
|
- else
|
|
- exit(1);
|
|
+ exit(1);
|
|
}
|
|
|
|
void llvm::install_bad_alloc_error_handler(fatal_error_handler_t handler,
|
|
@@ -141,9 +133,15 @@ void llvm::report_bad_alloc_error(const char *Reason, bool GenCrashDiag) {
|
|
// an OOM to stderr and abort.
|
|
const char *OOMMessage = "LLVM ERROR: out of memory\n";
|
|
const char *Newline = "\n";
|
|
+#ifdef _WIN32
|
|
+ (void)!::_write(2, OOMMessage, strlen(OOMMessage));
|
|
+ (void)!::_write(2, Reason, strlen(Reason));
|
|
+ (void)!::_write(2, Newline, strlen(Newline));
|
|
+#else
|
|
(void)!::write(2, OOMMessage, strlen(OOMMessage));
|
|
(void)!::write(2, Reason, strlen(Reason));
|
|
(void)!::write(2, Newline, strlen(Newline));
|
|
+#endif
|
|
abort();
|
|
}
|
|
|