diff options
Diffstat (limited to 'llvm/tools/llvm-objdump/MachODump.cpp')
-rw-r--r-- | llvm/tools/llvm-objdump/MachODump.cpp | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/llvm/tools/llvm-objdump/MachODump.cpp b/llvm/tools/llvm-objdump/MachODump.cpp index 8d924e5..b5e7a06 100644 --- a/llvm/tools/llvm-objdump/MachODump.cpp +++ b/llvm/tools/llvm-objdump/MachODump.cpp @@ -1477,7 +1477,10 @@ static void printArchiveChild(StringRef Filename, const Archive::Child &C, StringRef ArchitectureName = StringRef()) { if (print_offset) outs() << C.getChildOffset() << "\t"; - sys::fs::perms Mode = C.getAccessMode(); + Expected<sys::fs::perms> ModeOrErr = C.getAccessMode(); + if (!ModeOrErr) + report_error(Filename, C, ModeOrErr.takeError(), ArchitectureName); + sys::fs::perms Mode = ModeOrErr.get(); if (verbose) { // FIXME: this first dash, "-", is for (Mode & S_IFMT) == S_IFREG. // But there is nothing in sys::fs::perms for S_IFMT or S_IFREG. @@ -1495,9 +1498,15 @@ static void printArchiveChild(StringRef Filename, const Archive::Child &C, outs() << format("0%o ", Mode); } - unsigned UID = C.getUID(); + Expected<unsigned> UIDOrErr = C.getUID(); + if (!UIDOrErr) + report_error(Filename, C, UIDOrErr.takeError(), ArchitectureName); + unsigned UID = UIDOrErr.get(); outs() << format("%3d/", UID); - unsigned GID = C.getGID(); + Expected<unsigned> GIDOrErr = C.getGID(); + if (!GIDOrErr) + report_error(Filename, C, GIDOrErr.takeError(), ArchitectureName); + unsigned GID = GIDOrErr.get(); outs() << format("%-3d ", GID); Expected<uint64_t> Size = C.getRawSize(); if (!Size) @@ -1508,7 +1517,8 @@ static void printArchiveChild(StringRef Filename, const Archive::Child &C, if (verbose) { unsigned Seconds; if (RawLastModified.getAsInteger(10, Seconds)) - outs() << "(date: \"%s\" contains non-decimal chars) " << RawLastModified; + outs() << "(date: \"" << RawLastModified + << "\" contains non-decimal chars) "; else { // Since cime(3) returns a 26 character string of the form: // "Sun Sep 16 01:03:52 1973\n\0" |