diff options
Diffstat (limited to 'llvm/lib/ToolDrivers/llvm-lib/LibDriver.cpp')
-rw-r--r-- | llvm/lib/ToolDrivers/llvm-lib/LibDriver.cpp | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/llvm/lib/ToolDrivers/llvm-lib/LibDriver.cpp b/llvm/lib/ToolDrivers/llvm-lib/LibDriver.cpp index 6ce06b4..15d959d 100644 --- a/llvm/lib/ToolDrivers/llvm-lib/LibDriver.cpp +++ b/llvm/lib/ToolDrivers/llvm-lib/LibDriver.cpp @@ -503,23 +503,22 @@ int llvm::libDriverMain(ArrayRef<const char *> ArgsArr) { return 1; } } - // llvm-lib uses relative paths for both regular and thin archives, unlike - // standard GNU ar, which only uses relative paths for thin archives and - // basenames for regular archives. - for (NewArchiveMember &Member : Members) { - if (sys::path::is_relative(Member.MemberName)) { - Expected<std::string> PathOrErr = - computeArchiveRelativePath(OutputPath, Member.MemberName); - if (PathOrErr) - Member.MemberName = Saver.save(*PathOrErr); + + bool Thin = Args.hasArg(OPT_llvmlibthin); + if (Thin) { + for (NewArchiveMember &Member : Members) { + if (sys::path::is_relative(Member.MemberName)) { + Expected<std::string> PathOrErr = + computeArchiveRelativePath(OutputPath, Member.MemberName); + if (PathOrErr) + Member.MemberName = Saver.save(*PathOrErr); + } } } // For compatibility with MSVC, reverse member vector after de-duplication. std::reverse(Members.begin(), Members.end()); - bool Thin = Args.hasArg(OPT_llvmlibthin); - auto Symtab = Args.hasFlag(OPT_llvmlibindex, OPT_llvmlibindex_no, /*default=*/true) ? SymtabWritingMode::NormalSymtab |