aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/ToolDrivers/llvm-lib/LibDriver.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/ToolDrivers/llvm-lib/LibDriver.cpp')
-rw-r--r--llvm/lib/ToolDrivers/llvm-lib/LibDriver.cpp9
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,