blob: bbf16da6a9df8d406dc58060339ebd804c5a874f [file] [log] [blame]
//===- Error.cpp - system_error extensions for lld --------------*- C++ -*-===//
//
// The LLVM Linker
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#include "lld/Core/Error.h"
#include "llvm/Support/ErrorHandling.h"
using namespace lld;
class _native_reader_error_category : public llvm::_do_message {
public:
virtual const char* name() const {
return "lld.native.reader";
}
virtual std::string message(int ev) const {
switch (ev) {
case native_reader_error::success:
return "Success";
case native_reader_error::unknown_file_format:
return "Unknown file foramt";
case native_reader_error::file_too_short:
return "file truncated";
case native_reader_error::file_malformed:
return "file malformed";
case native_reader_error::memory_error:
return "out of memory";
case native_reader_error::unknown_chunk_type:
return "unknown chunk type";
default:
llvm_unreachable("An enumerator of native_reader_error does not have a "
"message defined.");
}
}
virtual llvm::error_condition default_error_condition(int ev) const {
if (ev == native_reader_error::success)
return llvm::errc::success;
return llvm::errc::invalid_argument;
}
};
const llvm::error_category &lld::native_reader_category() {
static _native_reader_error_category o;
return o;
}
inline llvm::error_code make_error_code(native_reader_error e) {
return llvm::error_code(static_cast<int>(e), native_reader_category());
}
class _yaml_reader_error_category : public llvm::_do_message {
public:
virtual const char* name() const {
return "lld.yaml.reader";
}
virtual std::string message(int ev) const {
switch (ev) {
case yaml_reader_error::success:
return "Success";
case yaml_reader_error::unknown_keyword:
return "Unknown keyword found in yaml file";
case yaml_reader_error::illegal_value:
return "Bad value found in yaml file";
default:
llvm_unreachable("An enumerator of yaml_reader_error does not have a "
"message defined.");
}
}
virtual llvm::error_condition default_error_condition(int ev) const {
if (ev == yaml_reader_error::success)
return llvm::errc::success;
return llvm::errc::invalid_argument;
}
};
const llvm::error_category &lld::yaml_reader_category() {
static _yaml_reader_error_category o;
return o;
}
inline llvm::error_code make_error_code(yaml_reader_error e) {
return llvm::error_code(static_cast<int>(e), yaml_reader_category());
}