diff options
Diffstat (limited to 'llvm/tools/llvm-size/llvm-size.cpp')
| -rw-r--r-- | llvm/tools/llvm-size/llvm-size.cpp | 32 |
1 files changed, 19 insertions, 13 deletions
diff --git a/llvm/tools/llvm-size/llvm-size.cpp b/llvm/tools/llvm-size/llvm-size.cpp index 87df1264fbc..89b89f06275 100644 --- a/llvm/tools/llvm-size/llvm-size.cpp +++ b/llvm/tools/llvm-size/llvm-size.cpp @@ -106,6 +106,17 @@ static bool HadError = false; static std::string ToolName; +/// If ec is not success, print the error and return true. +static bool error(std::error_code ec) { + if (!ec) + return false; + + HadError = true; + errs() << ToolName << ": error reading file: " << ec.message() << ".\n"; + errs().flush(); + return true; +} + static bool error(Twine Message) { HadError = true; errs() << ToolName << ": " << Message << ".\n"; @@ -386,14 +397,11 @@ static void printObjectSectionSizes(ObjectFile *Obj) { uint64_t size = Section.getSize(); total += size; - Expected<StringRef> name_or_err = Section.getName(); - if (!name_or_err) { - error(name_or_err.takeError(), Obj->getFileName()); + StringRef name; + if (error(Section.getName(name))) return; - } - uint64_t addr = Section.getAddress(); - max_name_len = std::max(max_name_len, name_or_err->size()); + 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)); } @@ -423,16 +431,14 @@ static void printObjectSectionSizes(ObjectFile *Obj) { for (const SectionRef &Section : Obj->sections()) { if (!considerForSize(Obj, Section)) continue; - - Expected<StringRef> name_or_err = Section.getName(); - if (!name_or_err) { - error(name_or_err.takeError(), Obj->getFileName()); + StringRef name; + if (error(Section.getName(name))) return; - } - uint64_t size = Section.getSize(); uint64_t addr = Section.getAddress(); - outs() << format(fmt.str().c_str(), name_or_err->str().c_str(), size, addr); + std::string namestr = name; + + outs() << format(fmt.str().c_str(), namestr.c_str(), size, addr); } if (ELFCommons) { |

