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 --- include/llvm/Object/ELF.h | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) (limited to 'include') diff --git a/include/llvm/Object/ELF.h b/include/llvm/Object/ELF.h index beff6efabb..22ca201be1 100644 --- a/include/llvm/Object/ELF.h +++ b/include/llvm/Object/ELF.h @@ -839,6 +839,13 @@ public: } }; +// Use an alignment of 2 for the typedefs since that is the worst case for +// ELF files in archives. +typedef ELFObjectFile > ELF32LEObjectFile; +typedef ELFObjectFile > ELF64LEObjectFile; +typedef ELFObjectFile > ELF32BEObjectFile; +typedef ELFObjectFile > ELF64BEObjectFile; + // Iterate through the version definitions, and place each Elf_Verdef // in the VersionMap according to its index. template @@ -2955,23 +2962,19 @@ static inline error_code getELFRelocationAddend(const RelocationRef R, const ObjectFile *Obj = R.getObjectFile(); DataRefImpl DRI = R.getRawDataRefImpl(); // Little-endian 32-bit - if (const ELFObjectFile > *ELFObj = - dyn_cast > >(Obj)) + if (const ELF32LEObjectFile *ELFObj = dyn_cast(Obj)) return ELFObj->getRelocationAddend(DRI, Addend); // Big-endian 32-bit - if (const ELFObjectFile > *ELFObj = - dyn_cast > >(Obj)) + if (const ELF32BEObjectFile *ELFObj = dyn_cast(Obj)) return ELFObj->getRelocationAddend(DRI, Addend); // Little-endian 64-bit - if (const ELFObjectFile > *ELFObj = - dyn_cast > >(Obj)) + if (const ELF64LEObjectFile *ELFObj = dyn_cast(Obj)) return ELFObj->getRelocationAddend(DRI, Addend); // Big-endian 64-bit - if (const ELFObjectFile > *ELFObj = - dyn_cast > >(Obj)) + if (const ELF64BEObjectFile *ELFObj = dyn_cast(Obj)) return ELFObj->getRelocationAddend(DRI, Addend); llvm_unreachable("Object passed to getELFRelocationAddend() is not ELF"); @@ -2984,23 +2987,19 @@ static inline error_code GetELFSymbolVersion(const ObjectFile *Obj, StringRef &Version, bool &IsDefault) { // Little-endian 32-bit - if (const ELFObjectFile > *ELFObj = - dyn_cast > >(Obj)) + if (const ELF32LEObjectFile *ELFObj = dyn_cast(Obj)) return ELFObj->getSymbolVersion(Sym, Version, IsDefault); // Big-endian 32-bit - if (const ELFObjectFile > *ELFObj = - dyn_cast > >(Obj)) + if (const ELF32BEObjectFile *ELFObj = dyn_cast(Obj)) return ELFObj->getSymbolVersion(Sym, Version, IsDefault); // Little-endian 64-bit - if (const ELFObjectFile > *ELFObj = - dyn_cast > >(Obj)) + if (const ELF64LEObjectFile *ELFObj = dyn_cast(Obj)) return ELFObj->getSymbolVersion(Sym, Version, IsDefault); // Big-endian 64-bit - if (const ELFObjectFile > *ELFObj = - dyn_cast > >(Obj)) + if (const ELF64BEObjectFile *ELFObj = dyn_cast(Obj)) return ELFObj->getSymbolVersion(Sym, Version, IsDefault); llvm_unreachable("Object passed to GetELFSymbolVersion() is not ELF"); -- cgit v1.2.3