//===- Error.cpp ----------------------------------------------------------===// // // The LLVM Linker // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #include "Error.h" #include "Config.h" #include "llvm/ADT/Twine.h" #include "llvm/Support/Error.h" #include "llvm/Support/raw_ostream.h" using namespace llvm; namespace lld { namespace elf { bool HasError; raw_ostream *ErrorOS; void log(const Twine &Msg) { if (Config->Verbose) outs() << Msg << "\n"; } void warning(const Twine &Msg) { if (Config->FatalWarnings) error(Msg); else *ErrorOS << Msg << "\n"; } void error(const Twine &Msg) { *ErrorOS << Msg << "\n"; HasError = true; } void error(std::error_code EC, const Twine &Prefix) { error(Prefix + ": " + EC.message()); } void fatal(const Twine &Msg) { *ErrorOS << Msg << "\n"; exit(1); } void fatal(const Twine &Msg, const Twine &Prefix) { fatal(Prefix + ": " + Msg); } void check(std::error_code EC) { if (EC) fatal(EC.message()); } void check(Error Err) { check(errorToErrorCode(std::move(Err))); } } // namespace elf } // namespace lld