summaryrefslogtreecommitdiff
path: root/tools/llvm-readobj
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2013-05-09 13:13:28 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2013-05-09 13:13:28 +0000
commitbed93b0de197c6b64357068ae8e1a883ddbb0e94 (patch)
tree27c35b31dff5c7ae5b4f0631be73079c27f77403 /tools/llvm-readobj
parenta634d2f9ddf76fa9b9bb5602040318abce3bb981 (diff)
downloadllvm-bed93b0de197c6b64357068ae8e1a883ddbb0e94.tar.gz
llvm-bed93b0de197c6b64357068ae8e1a883ddbb0e94.tar.bz2
llvm-bed93b0de197c6b64357068ae8e1a883ddbb0e94.tar.xz
Introduce convenience typedefs for the 4 ELF object types.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181509 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/llvm-readobj')
-rw-r--r--tools/llvm-readobj/ELFDumper.cpp42
1 files changed, 16 insertions, 26 deletions
diff --git a/tools/llvm-readobj/ELFDumper.cpp b/tools/llvm-readobj/ELFDumper.cpp
index 66cec615ad..2427b7d3b1 100644
--- a/tools/llvm-readobj/ELFDumper.cpp
+++ b/tools/llvm-readobj/ELFDumper.cpp
@@ -69,42 +69,32 @@ private:
namespace llvm {
+template <class ELFT>
+static error_code createELFDumper(const ELFObjectFile<ELFT> *Obj,
+ StreamWriter &Writer,
+ OwningPtr<ObjDumper> &Result) {
+ Result.reset(new ELFDumper<ELFT>(Obj, Writer));
+ return readobj_error::success;
+}
+
error_code createELFDumper(const object::ObjectFile *Obj,
StreamWriter& Writer,
OwningPtr<ObjDumper> &Result) {
- typedef ELFType<support::little, 4, false> Little32ELF;
- typedef ELFType<support::big, 4, false> Big32ELF;
- typedef ELFType<support::little, 4, true > Little64ELF;
- typedef ELFType<support::big, 8, true > Big64ELF;
-
- typedef ELFObjectFile<Little32ELF> LittleELF32Obj;
- typedef ELFObjectFile<Big32ELF > BigELF32Obj;
- typedef ELFObjectFile<Little64ELF> LittleELF64Obj;
- typedef ELFObjectFile<Big64ELF > BigELF64Obj;
-
// Little-endian 32-bit
- if (const LittleELF32Obj *ELFObj = dyn_cast<LittleELF32Obj>(Obj)) {
- Result.reset(new ELFDumper<Little32ELF>(ELFObj, Writer));
- return readobj_error::success;
- }
+ if (const ELF32LEObjectFile *ELFObj = dyn_cast<ELF32LEObjectFile>(Obj))
+ return createELFDumper(ELFObj, Writer, Result);
// Big-endian 32-bit
- if (const BigELF32Obj *ELFObj = dyn_cast<BigELF32Obj>(Obj)) {
- Result.reset(new ELFDumper<Big32ELF>(ELFObj, Writer));
- return readobj_error::success;
- }
+ if (const ELF32BEObjectFile *ELFObj = dyn_cast<ELF32BEObjectFile>(Obj))
+ return createELFDumper(ELFObj, Writer, Result);
// Little-endian 64-bit
- if (const LittleELF64Obj *ELFObj = dyn_cast<LittleELF64Obj>(Obj)) {
- Result.reset(new ELFDumper<Little64ELF>(ELFObj, Writer));
- return readobj_error::success;
- }
+ if (const ELF64LEObjectFile *ELFObj = dyn_cast<ELF64LEObjectFile>(Obj))
+ return createELFDumper(ELFObj, Writer, Result);
// Big-endian 64-bit
- if (const BigELF64Obj *ELFObj = dyn_cast<BigELF64Obj>(Obj)) {
- Result.reset(new ELFDumper<Big64ELF>(ELFObj, Writer));
- return readobj_error::success;
- }
+ if (const ELF64BEObjectFile *ELFObj = dyn_cast<ELF64BEObjectFile>(Obj))
+ return createELFDumper(ELFObj, Writer, Result);
return readobj_error::unsupported_obj_file_format;
}