diff options
author | NAKAMURA Takumi <geek4civic@gmail.com> | 2013-01-09 02:45:05 +0000 |
---|---|---|
committer | NAKAMURA Takumi <geek4civic@gmail.com> | 2013-01-09 02:45:05 +0000 |
commit | d7678c6af510b224795d36acca83afc7396f8f7c (patch) | |
tree | afcc87bd9421d62da5c4235c1e09418f7306c617 | |
parent | 45e4147345f62b6b10b4f35e807a363858adb481 (diff) | |
download | bcm5719-llvm-d7678c6af510b224795d36acca83afc7396f8f7c.tar.gz bcm5719-llvm-d7678c6af510b224795d36acca83afc7396f8f7c.zip |
[Object, DebugInfo] Make DWARFContext BE-aware.
test/DebugInfo/member-pointers.ll would not fail in targetting BE any more.
llvm-svn: 171943
-rw-r--r-- | llvm/include/llvm/Object/Binary.h | 8 | ||||
-rw-r--r-- | llvm/lib/DebugInfo/DWARFContext.cpp | 2 |
2 files changed, 7 insertions, 3 deletions
diff --git a/llvm/include/llvm/Object/Binary.h b/llvm/include/llvm/Object/Binary.h index d555de3accc..8bbcd8b4d4c 100644 --- a/llvm/include/llvm/Object/Binary.h +++ b/llvm/include/llvm/Object/Binary.h @@ -49,8 +49,8 @@ protected: ID_EndObjects }; - static inline unsigned int getELFType(bool isLittleEndian, bool is64Bits) { - if (isLittleEndian) + static inline unsigned int getELFType(bool isLE, bool is64Bits) { + if (isLE) return is64Bits ? ID_ELF64L : ID_ELF32L; else return is64Bits ? ID_ELF64B : ID_ELF32B; @@ -85,6 +85,10 @@ public: bool isCOFF() const { return TypeID == ID_COFF; } + + bool isLittleEndian() const { + return !(TypeID == ID_ELF32B || TypeID == ID_ELF64B); + } }; /// @brief Create a Binary from Source, autodetecting the file type. diff --git a/llvm/lib/DebugInfo/DWARFContext.cpp b/llvm/lib/DebugInfo/DWARFContext.cpp index d6d9fcf3ea8..247ee5b3575 100644 --- a/llvm/lib/DebugInfo/DWARFContext.cpp +++ b/llvm/lib/DebugInfo/DWARFContext.cpp @@ -352,7 +352,7 @@ DIInliningInfo DWARFContext::getInliningInfoForAddress(uint64_t Address, } DWARFContextInMemory::DWARFContextInMemory(object::ObjectFile *Obj) : - IsLittleEndian(true /* FIXME */) { + IsLittleEndian(Obj->isLittleEndian()) { error_code ec; for (object::section_iterator i = Obj->begin_sections(), e = Obj->end_sections(); |