//===----------------------------------------------------------------------===//
//
// Defines an interface to a lib.exe-compatible driver that also understands
-// bitcode files. Used by llvm-lib and lld-link2 /lib.
+// bitcode files. Used by llvm-lib and lld-link /lib.
//
//===----------------------------------------------------------------------===//
class LibOptTable : public llvm::opt::OptTable {
public:
- LibOptTable() : OptTable(infoTable, llvm::array_lengthof(infoTable), true) {}
+ LibOptTable() : OptTable(infoTable, true) {}
};
}
int llvm::libDriverMain(llvm::ArrayRef<const char*> ArgsArr) {
SmallVector<const char *, 20> NewArgs(ArgsArr.begin(), ArgsArr.end());
BumpPtrAllocator Alloc;
- BumpPtrStringSaver Saver(Alloc);
+ StringSaver Saver(Alloc);
cl::ExpandResponseFiles(Saver, cl::TokenizeWindowsCommandLine, NewArgs);
ArgsArr = NewArgs;
llvm::errs() << Arg->getValue() << ": no such file or directory\n";
return 1;
}
- Members.emplace_back(Saver.save(*Path),
- llvm::sys::path::filename(Arg->getValue()));
+ Members.emplace_back(Saver.save(*Path));
}
- std::pair<StringRef, std::error_code> Result = llvm::writeArchive(
- getOutputPath(&Args, Members[0]), Members, /*WriteSymtab=*/true);
+ std::pair<StringRef, std::error_code> Result =
+ llvm::writeArchive(getOutputPath(&Args, Members[0]), Members,
+ /*WriteSymtab=*/true, object::Archive::K_GNU,
+ /*Deterministic*/ true, Args.hasArg(OPT_llvmlibthin));
+
if (Result.second) {
if (Result.first.empty())
Result.first = ArgsArr[0];