Template the MachO types over endianness.

For now they are still only used as little endian.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179147 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Rafael Espindola
2013-04-10 03:48:25 +00:00
parent 774e7c82a8
commit a2561a0153
3 changed files with 153 additions and 109 deletions

View File

@@ -127,8 +127,8 @@ MachOObjectFileBase::getSymbolTableEntryBase(DataRefImpl DRI,
unsigned Index = DRI.d.b;
unsigned SymbolTableEntrySize = is64Bit() ?
sizeof(MachOFormat::SymbolTableEntry<true>) :
sizeof(MachOFormat::SymbolTableEntry<false>);
sizeof(MachOObjectFile<true>::SymbolTableEntry) :
sizeof(MachOObjectFile<false>::SymbolTableEntry);
uint64_t Offset = SymbolTableOffset + Index * SymbolTableEntrySize;
StringRef Data = getData(Offset, SymbolTableEntrySize);
@@ -314,10 +314,10 @@ MachOObjectFileBase::getSectionBase(DataRefImpl DRI) const {
bool Is64 = is64Bit();
unsigned SegmentLoadSize =
Is64 ? sizeof(MachOFormat::SegmentLoadCommand<true>) :
sizeof(MachOFormat::SegmentLoadCommand<false>);
unsigned SectionSize = Is64 ? sizeof(MachOFormat::Section<true>) :
sizeof(MachOFormat::Section<false>);
Is64 ? sizeof(MachOObjectFile<true>::SegmentLoadCommand) :
sizeof(MachOObjectFile<false>::SegmentLoadCommand);
unsigned SectionSize = Is64 ? sizeof(MachOObjectFile<true>::Section) :
sizeof(MachOObjectFile<false>::Section);
uintptr_t SectionAddr = CommandAddr + SegmentLoadSize + DRI.d.b * SectionSize;
return reinterpret_cast<const SectionBase*>(SectionAddr);