From bed93b0de197c6b64357068ae8e1a883ddbb0e94 Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Thu, 9 May 2013 13:13:28 +0000 Subject: 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 --- tools/llvm-readobj/ELFDumper.cpp | 42 +++++++++++++++------------------------- 1 file changed, 16 insertions(+), 26 deletions(-) (limited to 'tools/llvm-readobj') 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 +static error_code createELFDumper(const ELFObjectFile *Obj, + StreamWriter &Writer, + OwningPtr &Result) { + Result.reset(new ELFDumper(Obj, Writer)); + return readobj_error::success; +} + error_code createELFDumper(const object::ObjectFile *Obj, StreamWriter& Writer, OwningPtr &Result) { - typedef ELFType Little32ELF; - typedef ELFType Big32ELF; - typedef ELFType Little64ELF; - typedef ELFType Big64ELF; - - typedef ELFObjectFile LittleELF32Obj; - typedef ELFObjectFile BigELF32Obj; - typedef ELFObjectFile LittleELF64Obj; - typedef ELFObjectFile BigELF64Obj; - // Little-endian 32-bit - if (const LittleELF32Obj *ELFObj = dyn_cast(Obj)) { - Result.reset(new ELFDumper(ELFObj, Writer)); - return readobj_error::success; - } + if (const ELF32LEObjectFile *ELFObj = dyn_cast(Obj)) + return createELFDumper(ELFObj, Writer, Result); // Big-endian 32-bit - if (const BigELF32Obj *ELFObj = dyn_cast(Obj)) { - Result.reset(new ELFDumper(ELFObj, Writer)); - return readobj_error::success; - } + if (const ELF32BEObjectFile *ELFObj = dyn_cast(Obj)) + return createELFDumper(ELFObj, Writer, Result); // Little-endian 64-bit - if (const LittleELF64Obj *ELFObj = dyn_cast(Obj)) { - Result.reset(new ELFDumper(ELFObj, Writer)); - return readobj_error::success; - } + if (const ELF64LEObjectFile *ELFObj = dyn_cast(Obj)) + return createELFDumper(ELFObj, Writer, Result); // Big-endian 64-bit - if (const BigELF64Obj *ELFObj = dyn_cast(Obj)) { - Result.reset(new ELFDumper(ELFObj, Writer)); - return readobj_error::success; - } + if (const ELF64BEObjectFile *ELFObj = dyn_cast(Obj)) + return createELFDumper(ELFObj, Writer, Result); return readobj_error::unsupported_obj_file_format; } -- cgit v1.2.3