summaryrefslogtreecommitdiffstats
path: root/llvm/lib/ToolDrivers
diff options
context:
space:
mode:
authorOwen Reynolds <gbreynoo@gmail.com>2019-06-03 15:26:07 +0000
committerOwen Reynolds <gbreynoo@gmail.com>2019-06-03 15:26:07 +0000
commitfade9cbed76343c1e63657c4d425d3c47b0d73bf (patch)
tree69c8445c92630c2ad783aeacd08f18d71a45b038 /llvm/lib/ToolDrivers
parentdab879d7c805562debea149e6d2c17839405c71b (diff)
downloadbcm5719-llvm-fade9cbed76343c1e63657c4d425d3c47b0d73bf.tar.gz
bcm5719-llvm-fade9cbed76343c1e63657c4d425d3c47b0d73bf.zip
[llvm-ar] Fix relative thin archive path handling
This fixes some thin archive relative path issues, paths are shortened where possible and paths are output correctly when using the display table command. Differential Revision: https://reviews.llvm.org/D59491 llvm-svn: 362407
Diffstat (limited to 'llvm/lib/ToolDrivers')
-rw-r--r--llvm/lib/ToolDrivers/llvm-lib/LibDriver.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/llvm/lib/ToolDrivers/llvm-lib/LibDriver.cpp b/llvm/lib/ToolDrivers/llvm-lib/LibDriver.cpp
index 34a83147a3a..2d44686dd28 100644
--- a/llvm/lib/ToolDrivers/llvm-lib/LibDriver.cpp
+++ b/llvm/lib/ToolDrivers/llvm-lib/LibDriver.cpp
@@ -211,9 +211,14 @@ int llvm::libDriverMain(ArrayRef<const char *> ArgsArr) {
// 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)
- Member.MemberName =
- Saver.save(computeArchiveRelativePath(OutputPath, Member.MemberName));
+ 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);
+ }
+ }
if (Error E =
writeArchive(OutputPath, Members,
OpenPOWER on IntegriCloud