summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-size/llvm-size.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/tools/llvm-size/llvm-size.cpp')
-rw-r--r--llvm/tools/llvm-size/llvm-size.cpp32
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) {
OpenPOWER on IntegriCloud