Index: include/llvm/Object/Binary.h |
=================================================================== |
--- include/llvm/Object/Binary.h (revision 152141) |
+++ include/llvm/Object/Binary.h (working copy) |
@@ -37,16 +37,25 @@ |
Binary(unsigned int Type, MemoryBuffer *Source); |
enum { |
- isArchive, |
- |
+ ID_Archive, |
// Object and children. |
- isObject, |
- isCOFF, |
- isELF, |
- isMachO, |
- lastObject |
+ ID_StartObjects, |
+ ID_COFF, |
+ ID_ELF32L, // ELF 32-bit, little endian |
+ ID_ELF32B, // ELF 32-bit, big endian |
+ ID_ELF64L, // ELF 64-bit, little endian |
+ ID_ELF64B, // ELF 64-bit, big endian |
+ ID_MachO, |
+ ID_EndObjects |
}; |
+ static inline unsigned int getELFType(bool isLittleEndian, bool is64Bits) { |
+ if (isLittleEndian) |
+ return is64Bits ? ID_ELF64L : ID_ELF32L; |
+ else |
+ return is64Bits ? ID_ELF64B : ID_ELF32B; |
+ } |
+ |
public: |
virtual ~Binary(); |
@@ -56,6 +65,27 @@ |
// Cast methods. |
unsigned int getType() const { return TypeID; } |
static inline bool classof(const Binary *v) { return true; } |
+ |
+ // Convenience methods |
+ bool isObject() const { |
+ return TypeID > ID_StartObjects && TypeID < ID_EndObjects; |
+ } |
+ |
+ bool isArchive() const { |
+ return TypeID == ID_Archive; |
+ } |
+ |
+ bool isELF() const { |
+ return TypeID >= ID_ELF32L && TypeID <= ID_ELF64B; |
+ } |
+ |
+ bool isMachO() const { |
+ return TypeID == ID_MachO; |
+ } |
+ |
+ bool isCOFF() const { |
+ return TypeID == ID_COFF; |
+ } |
}; |
error_code createBinary(MemoryBuffer *Source, OwningPtr<Binary> &Result); |