mirror of
https://github.com/RPCS3/llvm.git
synced 2025-01-24 03:25:00 +00:00
report_fatal_error can't use errs(), because errs() can call
into report_fatal_error. Just blast the string to stderr with write(2) and hope for the best! Part of rdar://8318441 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111320 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
68c23f8616
commit
73ebaff79f
@ -18,8 +18,18 @@
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
#include "llvm/System/Signals.h"
|
||||
#include "llvm/System/Threading.h"
|
||||
#include "llvm/ADT/SmallVector.h"
|
||||
#include <cassert>
|
||||
#include <cstdlib>
|
||||
|
||||
#if defined(HAVE_UNISTD_H)
|
||||
# include <unistd.h>
|
||||
#endif
|
||||
#if defined(_MSC_VER)
|
||||
# include <io.h>
|
||||
# include <fcntl.h>
|
||||
#endif
|
||||
|
||||
using namespace llvm;
|
||||
using namespace std;
|
||||
|
||||
@ -39,19 +49,27 @@ void llvm::remove_fatal_error_handler() {
|
||||
ErrorHandler = 0;
|
||||
}
|
||||
|
||||
void llvm::report_fatal_error(const char *reason) {
|
||||
report_fatal_error(Twine(reason));
|
||||
void llvm::report_fatal_error(const char *Reason) {
|
||||
report_fatal_error(Twine(Reason));
|
||||
}
|
||||
|
||||
void llvm::report_fatal_error(const std::string &reason) {
|
||||
report_fatal_error(Twine(reason));
|
||||
void llvm::report_fatal_error(const std::string &Reason) {
|
||||
report_fatal_error(Twine(Reason));
|
||||
}
|
||||
|
||||
void llvm::report_fatal_error(const Twine &reason) {
|
||||
if (!ErrorHandler) {
|
||||
errs() << "LLVM ERROR: " << reason << "\n";
|
||||
void llvm::report_fatal_error(const Twine &Reason) {
|
||||
if (ErrorHandler) {
|
||||
ErrorHandler(ErrorHandlerUserData, Reason.str());
|
||||
} else {
|
||||
ErrorHandler(ErrorHandlerUserData, reason.str());
|
||||
// Blast the result out to stderr. We don't try hard to make sure this
|
||||
// succeeds (e.g. handling EINTR) and we can't use errs() here because
|
||||
// raw ostreams can call report_fatal_error.
|
||||
SmallVector<char, 64> Buffer;
|
||||
StringRef ReasonStr = Reason.toStringRef(Buffer);
|
||||
|
||||
::write(2, "LLVM ERROR: ", 12);
|
||||
::write(2, ReasonStr.data(), ReasonStr.size());
|
||||
::write(2, "\n", 1);
|
||||
}
|
||||
|
||||
// If we reached here, we are failing ungracefully. Run the interrupt handlers
|
||||
|
Loading…
x
Reference in New Issue
Block a user