diff options
Diffstat (limited to 'lld/ELF/Driver.cpp')
-rw-r--r-- | lld/ELF/Driver.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/lld/ELF/Driver.cpp b/lld/ELF/Driver.cpp index ca3b8fae1b9..309f96d54da 100644 --- a/lld/ELF/Driver.cpp +++ b/lld/ELF/Driver.cpp @@ -128,6 +128,7 @@ std::vector<std::pair<MemoryBufferRef, uint64_t>> static getArchiveMembers( std::vector<std::pair<MemoryBufferRef, uint64_t>> V; Error Err = Error::success(); + bool AddToTar = File->isThin() && Tar; for (const ErrorOr<Archive::Child> &COrErr : File->children(Err)) { Archive::Child C = check(COrErr, MB.getBufferIdentifier() + @@ -136,6 +137,8 @@ std::vector<std::pair<MemoryBufferRef, uint64_t>> static getArchiveMembers( check(C.getMemoryBufferRef(), MB.getBufferIdentifier() + ": could not get the buffer for a child of the archive"); + if (AddToTar) + Tar->append(relativeToRoot(check(C.getFullName())), MBRef.getBuffer()); V.push_back(std::make_pair(MBRef, C.getChildOffset())); } if (Err) |