mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-18 11:24:01 +00:00
[Object, MachO] Introduce MachOObjectFile::load_commands() range iterator.
Summary: Now users don't have to manually deal with getFirstLoadCommandInfo() / getNextLoadCommandInfo(), calculate the number of load segments, etc. No functionality change. Test Plan: regression test suite Reviewers: rafael, lhames, loladiro Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D10144 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@238983 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -194,8 +194,9 @@ MachOObjectFile::MachOObjectFile(MemoryBufferRef Object, bool IsLittleEndian,
|
||||
MachO::LoadCommandType SegmentLoadType = is64Bit() ?
|
||||
MachO::LC_SEGMENT_64 : MachO::LC_SEGMENT;
|
||||
|
||||
MachOObjectFile::LoadCommandInfo Load = getFirstLoadCommandInfo();
|
||||
for (unsigned I = 0; ; ++I) {
|
||||
LoadCommandInfo Load = getFirstLoadCommandInfo();
|
||||
for (unsigned I = 0; I < LoadCommandCount; ++I) {
|
||||
LoadCommands.push_back(Load);
|
||||
if (Load.C.cmd == MachO::LC_SYMTAB) {
|
||||
// Multiple symbol tables
|
||||
if (SymtabLoadCmd) {
|
||||
@ -260,12 +261,10 @@ MachOObjectFile::MachOObjectFile(MemoryBufferRef Object, bool IsLittleEndian,
|
||||
Load.C.cmd == MachO::LC_LOAD_UPWARD_DYLIB) {
|
||||
Libraries.push_back(Load.Ptr);
|
||||
}
|
||||
|
||||
if (I == LoadCommandCount - 1)
|
||||
break;
|
||||
else
|
||||
if (I < LoadCommandCount - 1)
|
||||
Load = getNextLoadCommandInfo(Load);
|
||||
}
|
||||
assert(LoadCommands.size() == LoadCommandCount);
|
||||
}
|
||||
|
||||
void MachOObjectFile::moveSymbolNext(DataRefImpl &Symb) const {
|
||||
@ -1863,6 +1862,22 @@ iterator_range<bind_iterator> MachOObjectFile::weakBindTable() const {
|
||||
MachOBindEntry::Kind::Weak);
|
||||
}
|
||||
|
||||
MachOObjectFile::load_command_iterator
|
||||
MachOObjectFile::begin_load_commands() const {
|
||||
return LoadCommands.begin();
|
||||
}
|
||||
|
||||
MachOObjectFile::load_command_iterator
|
||||
MachOObjectFile::end_load_commands() const {
|
||||
return LoadCommands.end();
|
||||
}
|
||||
|
||||
iterator_range<MachOObjectFile::load_command_iterator>
|
||||
MachOObjectFile::load_commands() const {
|
||||
return iterator_range<load_command_iterator>(begin_load_commands(),
|
||||
end_load_commands());
|
||||
}
|
||||
|
||||
StringRef
|
||||
MachOObjectFile::getSectionFinalSegmentName(DataRefImpl Sec) const {
|
||||
ArrayRef<char> Raw = getSectionRawFinalSegmentName(Sec);
|
||||
|
Reference in New Issue
Block a user