Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[llvm-ar][libObject] Fix relative paths when nesting thin archives.
Summary: When adding one thin archive to another, we currently chop off the relative path to the flattened members. For instance, when adding `foo/child.a` (which contains `x.txt`) to `parent.a`, when flattening it we should add it as `foo/x.txt` (which exists) instead of `x.txt` (which does not exist). As a note, this also undoes the `IsNew` parameter of handling relative paths in r288280. The unit test there still passes. This was reported as part of testing the kernel build with llvm-ar: https://patchwork.kernel.org/patch/10767545/ (see the second point). Reviewers: mstorsjo, pcc, ruiu, davide, david2050 Subscribers: hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D57842 llvm-svn: 353424
- Loading branch information
Showing
5 changed files
with
79 additions
and
67 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
15 changes: 15 additions & 0 deletions
15
llvm/test/tools/llvm-ar/flatten-thin-archive-directories.test
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
# This test creates a thin archive in a directory and adds it to a thin archive | ||
# in the parent directory. The relative path should be included when flattening | ||
# the archive. | ||
|
||
RUN: mkdir -p %t/foo | ||
RUN: touch %t/foo/a.txt | ||
RUN: rm -f %t/archive.a %t/foo/archive.a | ||
|
||
# These tests must be run in the same directory as %t/archive.a. cd %t is | ||
# included on each line to make debugging this test case easier. | ||
RUN: cd %t && llvm-ar rcST foo/archive.a foo/a.txt | ||
RUN: cd %t && llvm-ar rcST archive.a foo/archive.a | ||
RUN: cd %t && llvm-ar t archive.a | FileCheck %s --match-full-lines | ||
|
||
CHECK: foo/a.txt |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters