176e70f340c09ba759ad96d8dfe416b64f24bc287Eric Christopher//===- Error.h - system_error extensions for llvm-readobj -------*- C++ -*-===// 276e70f340c09ba759ad96d8dfe416b64f24bc287Eric Christopher// 376e70f340c09ba759ad96d8dfe416b64f24bc287Eric Christopher// The LLVM Compiler Infrastructure 476e70f340c09ba759ad96d8dfe416b64f24bc287Eric Christopher// 576e70f340c09ba759ad96d8dfe416b64f24bc287Eric Christopher// This file is distributed under the University of Illinois Open Source 676e70f340c09ba759ad96d8dfe416b64f24bc287Eric Christopher// License. See LICENSE.TXT for details. 776e70f340c09ba759ad96d8dfe416b64f24bc287Eric Christopher// 876e70f340c09ba759ad96d8dfe416b64f24bc287Eric Christopher//===----------------------------------------------------------------------===// 976e70f340c09ba759ad96d8dfe416b64f24bc287Eric Christopher// 1076e70f340c09ba759ad96d8dfe416b64f24bc287Eric Christopher// This declares a new error_category for the llvm-readobj tool. 1176e70f340c09ba759ad96d8dfe416b64f24bc287Eric Christopher// 1276e70f340c09ba759ad96d8dfe416b64f24bc287Eric Christopher//===----------------------------------------------------------------------===// 1376e70f340c09ba759ad96d8dfe416b64f24bc287Eric Christopher 1476e70f340c09ba759ad96d8dfe416b64f24bc287Eric Christopher#ifndef LLVM_READOBJ_ERROR_H 1576e70f340c09ba759ad96d8dfe416b64f24bc287Eric Christopher#define LLVM_READOBJ_ERROR_H 1676e70f340c09ba759ad96d8dfe416b64f24bc287Eric Christopher 17cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines#include <system_error> 1876e70f340c09ba759ad96d8dfe416b64f24bc287Eric Christopher 1976e70f340c09ba759ad96d8dfe416b64f24bc287Eric Christophernamespace llvm { 20cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hinesconst std::error_category &readobj_category(); 21cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 22cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hinesenum class readobj_error { 23cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines success = 0, 24cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines file_not_found, 25cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines unsupported_file_format, 26cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines unrecognized_file_format, 27cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines unsupported_obj_file_format, 28cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines unknown_symbol 2976e70f340c09ba759ad96d8dfe416b64f24bc287Eric Christopher}; 3076e70f340c09ba759ad96d8dfe416b64f24bc287Eric Christopher 31cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hinesinline std::error_code make_error_code(readobj_error e) { 32cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines return std::error_code(static_cast<int>(e), readobj_category()); 3376e70f340c09ba759ad96d8dfe416b64f24bc287Eric Christopher} 3476e70f340c09ba759ad96d8dfe416b64f24bc287Eric Christopher 3576e70f340c09ba759ad96d8dfe416b64f24bc287Eric Christopher} // namespace llvm 3676e70f340c09ba759ad96d8dfe416b64f24bc287Eric Christopher 37cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hinesnamespace std { 38cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hinestemplate <> struct is_error_code_enum<llvm::readobj_error> : std::true_type {}; 39cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines} 40cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 4176e70f340c09ba759ad96d8dfe416b64f24bc287Eric Christopher#endif 42