aboutsummaryrefslogtreecommitdiffstats
path: root/tools/llvm-size/llvm-size.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/llvm-size/llvm-size.cpp')
-rw-r--r--tools/llvm-size/llvm-size.cpp73
1 files changed, 32 insertions, 41 deletions
diff --git a/tools/llvm-size/llvm-size.cpp b/tools/llvm-size/llvm-size.cpp
index 3de6605..d1bd45a 100644
--- a/tools/llvm-size/llvm-size.cpp
+++ b/tools/llvm-size/llvm-size.cpp
@@ -85,10 +85,10 @@ static size_t getNumLengthAsString(uint64_t num) {
return result.size();
}
-/// @brief Print the size of each section in @p o.
+/// @brief Print the size of each section in @p Obj.
///
/// The format used is determined by @c OutputFormat and @c Radix.
-static void PrintObjectSectionSizes(ObjectFile *o) {
+static void PrintObjectSectionSizes(ObjectFile *Obj) {
uint64_t total = 0;
std::string fmtbuf;
raw_string_ostream fmt(fmtbuf);
@@ -111,21 +111,18 @@ static void PrintObjectSectionSizes(ObjectFile *o) {
std::size_t max_name_len = strlen("section");
std::size_t max_size_len = strlen("size");
std::size_t max_addr_len = strlen("addr");
- error_code ec;
- for (section_iterator i = o->begin_sections(),
- e = o->end_sections(); i != e;
- i.increment(ec)) {
- if (error(ec))
- return;
+ for (const SectionRef &Section : Obj->sections()) {
uint64_t size = 0;
- if (error(i->getSize(size)))
+ if (error(Section.getSize(size)))
return;
total += size;
StringRef name;
uint64_t addr = 0;
- if (error(i->getName(name))) return;
- if (error(i->getAddress(addr))) return;
+ if (error(Section.getName(name)))
+ return;
+ if (error(Section.getAddress(addr)))
+ return;
max_name_len = std::max(max_name_len, name.size());
max_size_len = std::max(max_size_len, getNumLengthAsString(size));
max_addr_len = std::max(max_addr_len, getNumLengthAsString(addr));
@@ -154,24 +151,19 @@ static void PrintObjectSectionSizes(ObjectFile *o) {
<< "%#" << max_addr_len << radix_fmt << "\n";
// Print each section.
- for (section_iterator i = o->begin_sections(),
- e = o->end_sections(); i != e;
- i.increment(ec)) {
- if (error(ec))
- return;
-
+ for (const SectionRef &Section : Obj->sections()) {
StringRef name;
uint64_t size = 0;
uint64_t addr = 0;
- if (error(i->getName(name))) return;
- if (error(i->getSize(size))) return;
- if (error(i->getAddress(addr))) return;
+ if (error(Section.getName(name)))
+ return;
+ if (error(Section.getSize(size)))
+ return;
+ if (error(Section.getAddress(addr)))
+ return;
std::string namestr = name;
- outs() << format(fmt.str().c_str(),
- namestr.c_str(),
- size,
- addr);
+ outs() << format(fmt.str().c_str(), namestr.c_str(), size, addr);
}
// Print total.
@@ -189,21 +181,19 @@ static void PrintObjectSectionSizes(ObjectFile *o) {
uint64_t total_bss = 0;
// Make one pass over the section table to calculate sizes.
- error_code ec;
- for (section_iterator i = o->begin_sections(),
- e = o->end_sections(); i != e;
- i.increment(ec)) {
- if (error(ec))
- return;
-
+ for (const SectionRef &Section : Obj->sections()) {
uint64_t size = 0;
bool isText = false;
bool isData = false;
bool isBSS = false;
- if (error(i->getSize(size))) return;
- if (error(i->isText(isText))) return;
- if (error(i->isData(isData))) return;
- if (error(i->isBSS(isBSS))) return;
+ if (error(Section.getSize(size)))
+ return;
+ if (error(Section.isText(isText)))
+ return;
+ if (error(Section.isData(isData)))
+ return;
+ if (error(Section.isBSS(isBSS)))
+ return;
if (isText)
total_text += size;
else if (isData)
@@ -244,17 +234,18 @@ static void PrintFileSectionSizes(StringRef file) {
}
// Attempt to open the binary.
- OwningPtr<Binary> binary;
- if (error_code ec = createBinary(file, binary)) {
- errs() << ToolName << ": " << file << ": " << ec.message() << ".\n";
+ ErrorOr<Binary *> BinaryOrErr = createBinary(file);
+ if (error_code EC = BinaryOrErr.getError()) {
+ errs() << ToolName << ": " << file << ": " << EC.message() << ".\n";
return;
}
+ std::unique_ptr<Binary> binary(BinaryOrErr.get());
if (Archive *a = dyn_cast<Archive>(binary.get())) {
// This is an archive. Iterate over each member and display its sizes.
- for (object::Archive::child_iterator i = a->begin_children(),
- e = a->end_children(); i != e; ++i) {
- OwningPtr<Binary> child;
+ for (object::Archive::child_iterator i = a->child_begin(),
+ e = a->child_end(); i != e; ++i) {
+ std::unique_ptr<Binary> child;
if (error_code ec = i->getAsBinary(child)) {
errs() << ToolName << ": " << file << ": " << ec.message() << ".\n";
continue;