1//===- Error.cpp - system_error extensions for llvm-readobj -----*- C++ -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9// 10// This defines a new error_category for the llvm-readobj tool. 11// 12//===----------------------------------------------------------------------===// 13 14#include "Error.h" 15#include "llvm/Support/ErrorHandling.h" 16 17using namespace llvm; 18 19namespace { 20class _readobj_error_category : public std::error_category { 21public: 22 const char* name() const LLVM_NOEXCEPT override; 23 std::string message(int ev) const override; 24}; 25} // namespace 26 27const char *_readobj_error_category::name() const LLVM_NOEXCEPT { 28 return "llvm.readobj"; 29} 30 31std::string _readobj_error_category::message(int EV) const { 32 switch (static_cast<readobj_error>(EV)) { 33 case readobj_error::success: return "Success"; 34 case readobj_error::file_not_found: 35 return "No such file."; 36 case readobj_error::unsupported_file_format: 37 return "The file was not recognized as a valid object file."; 38 case readobj_error::unrecognized_file_format: 39 return "Unrecognized file type."; 40 case readobj_error::unsupported_obj_file_format: 41 return "Unsupported object file format."; 42 case readobj_error::unknown_symbol: 43 return "Unknown symbol."; 44 } 45 llvm_unreachable("An enumerator of readobj_error does not have a message " 46 "defined."); 47} 48 49namespace llvm { 50const std::error_category &readobj_category() { 51 static _readobj_error_category o; 52 return o; 53} 54} // namespace llvm 55