[PATCH] D59491: Fix relative thin archive path handling
Owen Reynolds via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Mar 20 08:02:48 PDT 2019
gbreynoo added a comment.
In response to rupprecht:
Currently on Windows absolute paths in an archive can have mixed slashes e.g.
C:\llvm-build\test\tools\llvm-ar\Output\thin-archive.test.tmp/foo/elf.o/
And to select the member the path must be matched exactly.
llvm-ar -t 'absolute archive path' outputs the above as:
C:\llvm-build\test\tools\llvm-ar\Output\thin-archive.test.tmp/C:\llvm-build\test\tools\llvm-ar\Output\thin-archive.test.tmp/foo/elf.o
Relative member paths will be converted to absolute paths in some cases.
Relative paths currently are not computed correctly in some cases, for example:
when in directory foo which contains elf.o
llvm-ar.exe rTc ../relative-1.ar elf.o
The member path becomes ../elf.o rather than foo/elf.o
These relative path issues are also found when flattening thin-archives e.g.
The following files are present:
- reduce-thin-path.test.tmp/elf.o
- reduce-thin-path.test.tmp/baz/internal.a
internal.a has a member ../elf.o/
When in directory reduce-thin-path.test.tmp/foo call below:
llvm-ar.exe" "rTc" "C:\llvm-build\test\tools\llvm-ar\Output\reduce-thin-path.test.tmp/foo/bar/external.ar" "../baz/internal.ar"
The member is squashed to the following:
../baz\../elf.o/
However it should be ../../elf.o
After some experimenting in gnu-ar there may be similar issues regarding relative thin archive paths but I don't believe we should follow suit if we can help it.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D59491/new/
https://reviews.llvm.org/D59491
More information about the llvm-commits
mailing list