From fade9cbed76343c1e63657c4d425d3c47b0d73bf Mon Sep 17 00:00:00 2001 From: Owen Reynolds Date: Mon, 3 Jun 2019 15:26:07 +0000 Subject: [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 --- llvm/lib/ToolDrivers/llvm-lib/LibDriver.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'llvm/lib/ToolDrivers/llvm-lib/LibDriver.cpp') diff --git a/llvm/lib/ToolDrivers/llvm-lib/LibDriver.cpp b/llvm/lib/ToolDrivers/llvm-lib/LibDriver.cpp index 34a8314..2d44686 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 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 PathOrErr = + computeArchiveRelativePath(OutputPath, Member.MemberName); + if (PathOrErr) + Member.MemberName = Saver.save(*PathOrErr); + } + } if (Error E = writeArchive(OutputPath, Members, -- cgit v1.1