diff options
author | Alexey Samsonov <vonosmas@gmail.com> | 2015-06-03 22:19:36 +0000 |
---|---|---|
committer | Alexey Samsonov <vonosmas@gmail.com> | 2015-06-03 22:19:36 +0000 |
commit | d319c4fbbc10e4f6f7fd16be65aed9c8e769e8b5 (patch) | |
tree | 56767a48f0778e8467630d5c6c54cc325e6f7b52 /llvm/tools/llvm-size/llvm-size.cpp | |
parent | 212fdde20540d79cf227f3e5a5e008099aad37b8 (diff) | |
download | bcm5719-llvm-d319c4fbbc10e4f6f7fd16be65aed9c8e769e8b5.tar.gz bcm5719-llvm-d319c4fbbc10e4f6f7fd16be65aed9c8e769e8b5.zip |
[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
llvm-svn: 238983
Diffstat (limited to 'llvm/tools/llvm-size/llvm-size.cpp')
-rw-r--r-- | llvm/tools/llvm-size/llvm-size.cpp | 17 |
1 files changed, 2 insertions, 15 deletions
diff --git a/llvm/tools/llvm-size/llvm-size.cpp b/llvm/tools/llvm-size/llvm-size.cpp index 0e0dd59ce92..c64c1d722d3 100644 --- a/llvm/tools/llvm-size/llvm-size.cpp +++ b/llvm/tools/llvm-size/llvm-size.cpp @@ -122,12 +122,10 @@ static void PrintDarwinSectionSizes(MachOObjectFile *MachO) { fmt << "0x"; fmt << "%" << radix_fmt; - uint32_t LoadCommandCount = MachO->getHeader().ncmds; uint32_t Filetype = MachO->getHeader().filetype; - MachOObjectFile::LoadCommandInfo Load = MachO->getFirstLoadCommandInfo(); uint64_t total = 0; - for (unsigned I = 0;; ++I) { + for (const auto &Load : MachO->load_commands()) { if (Load.C.cmd == MachO::LC_SEGMENT_64) { MachO::segment_command_64 Seg = MachO->getSegment64LoadCommand(Load); outs() << "Segment " << Seg.segname << ": " @@ -181,10 +179,6 @@ static void PrintDarwinSectionSizes(MachOObjectFile *MachO) { if (Seg.nsects != 0) outs() << "\ttotal " << format(fmt.str().c_str(), sec_total) << "\n"; } - if (I == LoadCommandCount - 1) - break; - else - Load = MachO->getNextLoadCommandInfo(Load); } outs() << "total " << format(fmt.str().c_str(), total) << "\n"; } @@ -194,14 +188,11 @@ static void PrintDarwinSectionSizes(MachOObjectFile *MachO) { /// This is when used when @c OutputFormat is berkeley with a Mach-O file and /// produces the same output as darwin's size(1) default output. static void PrintDarwinSegmentSizes(MachOObjectFile *MachO) { - uint32_t LoadCommandCount = MachO->getHeader().ncmds; - MachOObjectFile::LoadCommandInfo Load = MachO->getFirstLoadCommandInfo(); - uint64_t total_text = 0; uint64_t total_data = 0; uint64_t total_objc = 0; uint64_t total_others = 0; - for (unsigned I = 0;; ++I) { + for (const auto &Load : MachO->load_commands()) { if (Load.C.cmd == MachO::LC_SEGMENT_64) { MachO::segment_command_64 Seg = MachO->getSegment64LoadCommand(Load); if (MachO->getHeader().filetype == MachO::MH_OBJECT) { @@ -255,10 +246,6 @@ static void PrintDarwinSegmentSizes(MachOObjectFile *MachO) { total_others += Seg.vmsize; } } - if (I == LoadCommandCount - 1) - break; - else - Load = MachO->getNextLoadCommandInfo(Load); } uint64_t total = total_text + total_data + total_objc + total_others; |