summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Object/MachOObjectFile.cpp
diff options
context:
space:
mode:
authorAlexey Samsonov <vonosmas@gmail.com>2015-06-04 19:34:14 +0000
committerAlexey Samsonov <vonosmas@gmail.com>2015-06-04 19:34:14 +0000
commit4fdbed38858b69c80fc18ea3743cca267b6c72ff (patch)
tree27b788932a1d804a0b11a4be5afe33284a6e3344 /llvm/lib/Object/MachOObjectFile.cpp
parent35b7f81f08d5572e36fc042f69e301d867b6ace4 (diff)
downloadbcm5719-llvm-4fdbed38858b69c80fc18ea3743cca267b6c72ff.tar.gz
bcm5719-llvm-4fdbed38858b69c80fc18ea3743cca267b6c72ff.zip
[Object, MachO] Remove some code duplication. NFC.
llvm-svn: 239077
Diffstat (limited to 'llvm/lib/Object/MachOObjectFile.cpp')
-rw-r--r--llvm/lib/Object/MachOObjectFile.cpp50
1 files changed, 25 insertions, 25 deletions
diff --git a/llvm/lib/Object/MachOObjectFile.cpp b/llvm/lib/Object/MachOObjectFile.cpp
index 6c655224d2d..1620c1a6a91 100644
--- a/llvm/lib/Object/MachOObjectFile.cpp
+++ b/llvm/lib/Object/MachOObjectFile.cpp
@@ -180,6 +180,29 @@ static uint32_t getSectionFlags(const MachOObjectFile *O,
return Sect.flags;
}
+static MachOObjectFile::LoadCommandInfo
+getLoadCommandInfo(const MachOObjectFile *Obj, const char *Ptr) {
+ MachOObjectFile::LoadCommandInfo Load;
+ Load.Ptr = Ptr;
+ Load.C = getStruct<MachO::load_command>(Obj, Load.Ptr);
+ if (Load.C.cmdsize < 8)
+ report_fatal_error("Load command with size < 8 bytes.");
+ return Load;
+}
+
+static MachOObjectFile::LoadCommandInfo
+getFirstLoadCommandInfo(const MachOObjectFile *Obj) {
+ unsigned HeaderSize = Obj->is64Bit() ? sizeof(MachO::mach_header_64)
+ : sizeof(MachO::mach_header);
+ return getLoadCommandInfo(Obj, getPtr(Obj, HeaderSize));
+}
+
+static MachOObjectFile::LoadCommandInfo
+getNextLoadCommandInfo(const MachOObjectFile *Obj,
+ const MachOObjectFile::LoadCommandInfo &L) {
+ return getLoadCommandInfo(Obj, L.Ptr + L.C.cmdsize);
+}
+
MachOObjectFile::MachOObjectFile(MemoryBufferRef Object, bool IsLittleEndian,
bool Is64bits, std::error_code &EC)
: ObjectFile(getMachOType(IsLittleEndian, Is64bits), Object),
@@ -203,7 +226,7 @@ MachOObjectFile::MachOObjectFile(MemoryBufferRef Object, bool IsLittleEndian,
MachO::LoadCommandType SegmentLoadType = is64Bit() ?
MachO::LC_SEGMENT_64 : MachO::LC_SEGMENT;
- LoadCommandInfo Load = getFirstLoadCommandInfo();
+ LoadCommandInfo Load = getFirstLoadCommandInfo(this);
for (unsigned I = 0; I < LoadCommandCount; ++I) {
LoadCommands.push_back(Load);
if (Load.C.cmd == MachO::LC_SYMTAB) {
@@ -271,7 +294,7 @@ MachOObjectFile::MachOObjectFile(MemoryBufferRef Object, bool IsLittleEndian,
Libraries.push_back(Load.Ptr);
}
if (I < LoadCommandCount - 1)
- Load = getNextLoadCommandInfo(Load);
+ Load = getNextLoadCommandInfo(this, Load);
}
assert(LoadCommands.size() == LoadCommandCount);
}
@@ -1974,29 +1997,6 @@ MachOObjectFile::getAnyRelocationSection(
return SectionRef(DRI, this);
}
-MachOObjectFile::LoadCommandInfo
-MachOObjectFile::getFirstLoadCommandInfo() const {
- MachOObjectFile::LoadCommandInfo Load;
-
- unsigned HeaderSize = is64Bit() ? sizeof(MachO::mach_header_64) :
- sizeof(MachO::mach_header);
- Load.Ptr = getPtr(this, HeaderSize);
- Load.C = getStruct<MachO::load_command>(this, Load.Ptr);
- if (Load.C.cmdsize < 8)
- report_fatal_error("Load command with size < 8 bytes.");
- return Load;
-}
-
-MachOObjectFile::LoadCommandInfo
-MachOObjectFile::getNextLoadCommandInfo(const LoadCommandInfo &L) const {
- MachOObjectFile::LoadCommandInfo Next;
- Next.Ptr = L.Ptr + L.C.cmdsize;
- Next.C = getStruct<MachO::load_command>(this, Next.Ptr);
- if (Next.C.cmdsize < 8)
- report_fatal_error("Load command with size < 8 bytes.");
- return Next;
-}
-
MachO::section MachOObjectFile::getSection(DataRefImpl DRI) const {
assert(DRI.d.a < Sections.size() && "Should have detected this earlier");
return getStruct<MachO::section>(this, Sections[DRI.d.a]);
OpenPOWER on IntegriCloud