diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2016-07-23 20:41:05 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2016-07-23 20:41:05 +0000 |
commit | 01095a5d43bbfde13731688ddcf6048ebb8b7721 (patch) | |
tree | 4def12e759965de927d963ac65840d663ef9d1ea /tools/llvm-readobj/llvm-readobj.h | |
parent | f0f4822ed4b66e3579e92a89f368f8fb860e218e (diff) |
Diffstat (limited to 'tools/llvm-readobj/llvm-readobj.h')
-rw-r--r-- | tools/llvm-readobj/llvm-readobj.h | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/tools/llvm-readobj/llvm-readobj.h b/tools/llvm-readobj/llvm-readobj.h index 5a103920c165e..b169c00291838 100644 --- a/tools/llvm-readobj/llvm-readobj.h +++ b/tools/llvm-readobj/llvm-readobj.h @@ -12,6 +12,8 @@ #include "llvm/Support/CommandLine.h" #include "llvm/Support/Compiler.h" +#include "llvm/Support/ErrorOr.h" +#include "llvm/Support/Error.h" #include <string> namespace llvm { @@ -22,6 +24,20 @@ namespace llvm { // Various helper functions. LLVM_ATTRIBUTE_NORETURN void reportError(Twine Msg); void error(std::error_code ec); + template <class T> T unwrapOrError(ErrorOr<T> EO) { + if (EO) + return *EO; + reportError(EO.getError().message()); + } + template <class T> T unwrapOrError(Expected<T> EO) { + if (EO) + return *EO; + std::string Buf; + raw_string_ostream OS(Buf); + logAllUnhandledErrors(EO.takeError(), OS, ""); + OS.flush(); + reportError(Buf); + } bool relocAddressLess(object::RelocationRef A, object::RelocationRef B); } // namespace llvm @@ -42,9 +58,14 @@ namespace opts { extern llvm::cl::opt<bool> CodeViewSubsectionBytes; extern llvm::cl::opt<bool> ARMAttributes; extern llvm::cl::opt<bool> MipsPLTGOT; + enum OutputStyleTy { LLVM, GNU }; + extern llvm::cl::opt<OutputStyleTy> Output; } // namespace opts #define LLVM_READOBJ_ENUM_ENT(ns, enum) \ { #enum, ns::enum } +#define LLVM_READOBJ_ENUM_CLASS_ENT(enum_class, enum) \ + { #enum, std::underlying_type<enum_class>::type(enum_class::enum) } + #endif |