diff options
Diffstat (limited to 'llvm/lib/ToolDrivers/llvm-lib/LibDriver.cpp')
-rw-r--r-- | llvm/lib/ToolDrivers/llvm-lib/LibDriver.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/llvm/lib/ToolDrivers/llvm-lib/LibDriver.cpp b/llvm/lib/ToolDrivers/llvm-lib/LibDriver.cpp index ade753a..f92ff3d 100644 --- a/llvm/lib/ToolDrivers/llvm-lib/LibDriver.cpp +++ b/llvm/lib/ToolDrivers/llvm-lib/LibDriver.cpp @@ -133,12 +133,14 @@ static void doList(opt::InputArgList& Args) { object::Archive Archive(B.get()->getMemBufferRef(), Err); fatalOpenError(std::move(Err), B->getBufferIdentifier()); + std::vector<StringRef> Names; for (auto &C : Archive.children(Err)) { Expected<StringRef> NameOrErr = C.getName(); fatalOpenError(NameOrErr.takeError(), B->getBufferIdentifier()); - StringRef Name = NameOrErr.get(); - llvm::outs() << Name << '\n'; + Names.push_back(NameOrErr.get()); } + for (auto Name : reverse(Names)) + llvm::outs() << Name << '\n'; fatalOpenError(std::move(Err), B->getBufferIdentifier()); } @@ -392,6 +394,9 @@ int llvm::libDriverMain(ArrayRef<const char *> ArgsArr) { } } + // For compatibility with MSVC, reverse member vector after de-duplication. + std::reverse(Members.begin(), Members.end()); + if (Error E = writeArchive(OutputPath, Members, /*WriteSymtab=*/true, object::Archive::K_GNU, |