diff options
author | Owen Reynolds <gbreynoo@gmail.com> | 2019-06-03 15:26:07 +0000 |
---|---|---|
committer | Owen Reynolds <gbreynoo@gmail.com> | 2019-06-03 15:26:07 +0000 |
commit | fade9cbed76343c1e63657c4d425d3c47b0d73bf (patch) | |
tree | 69c8445c92630c2ad783aeacd08f18d71a45b038 /llvm/lib/ToolDrivers | |
parent | dab879d7c805562debea149e6d2c17839405c71b (diff) | |
download | bcm5719-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.cpp | 11 |
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, |