Index: tools/llvm-objdump/llvm-objdump.cpp =================================================================== --- tools/llvm-objdump/llvm-objdump.cpp +++ tools/llvm-objdump/llvm-objdump.cpp @@ -2228,8 +2228,9 @@ << "\n"; } -static void printArchiveChild(StringRef Filename, const Archive::Child &C) { - Expected ModeOrErr = C.getAccessMode(); +static void printArchiveChild(StringRef Filename, const Archive::Child *C) { + if (C == nullptr) return; + Expected ModeOrErr = C->getAccessMode(); if (!ModeOrErr) { errs() << "ill-formed archive entry.\n"; consumeError(ModeOrErr.takeError()); @@ -2248,24 +2249,24 @@ outs() << " "; - Expected UIDOrErr = C.getUID(); + Expected UIDOrErr = C->getUID(); if (!UIDOrErr) report_error(Filename, UIDOrErr.takeError()); unsigned UID = UIDOrErr.get(); outs() << format("%d/", UID); - Expected GIDOrErr = C.getGID(); + Expected GIDOrErr = C->getGID(); if (!GIDOrErr) report_error(Filename, GIDOrErr.takeError()); unsigned GID = GIDOrErr.get(); outs() << format("%-d ", GID); - Expected Size = C.getRawSize(); + Expected Size = C->getRawSize(); if (!Size) report_error(Filename, Size.takeError()); outs() << format("%6" PRId64, Size.get()) << " "; - StringRef RawLastModified = C.getRawLastModified(); + StringRef RawLastModified = C->getRawLastModified(); unsigned Seconds; if (RawLastModified.getAsInteger(10, Seconds)) outs() << "(date: \"" << RawLastModified @@ -2279,10 +2280,10 @@ } StringRef Name = ""; - Expected NameOrErr = C.getName(); + Expected NameOrErr = C->getName(); if (!NameOrErr) { consumeError(NameOrErr.takeError()); - Expected RawNameOrErr = C.getRawName(); + Expected RawNameOrErr = C->getRawName(); if (!RawNameOrErr) report_error(Filename, NameOrErr.takeError()); Name = RawNameOrErr.get(); @@ -2306,7 +2307,7 @@ } if (ArchiveHeaders && !MachOOpt) - printArchiveChild(a->getFileName(), *c); + printArchiveChild(ArchiveName, c); if (Disassemble) DisassembleObject(o, Relocations); if (Relocations && !Disassemble) @@ -2360,7 +2361,7 @@ << "\n\n"; if (ArchiveHeaders && !MachOOpt) - printArchiveChild(A->getFileName(), *C); + printArchiveChild(ArchiveName, C); if (SymbolTable) printCOFFSymbolTable(I); }