bruno added a comment. In http://reviews.llvm.org/D17104#349141, @benlangmuir wrote:
> Please clarify what you mean here: > > > The rationale is that if source and destination paths in the YAML file > > contain ".." this is enough > > > for the file manager to retrieve the right file, meaning that it doesn't > > matter how we write it > > > since the FileManager is capable of transforming it in real/feasible paths. > > > The VFS layer does not have access to the FileManager. I agree that ".." in > a destination path should be fine. But ".." in a source path will only work > if we have code in the redirecting file system to handle ".." explicitly, > which AFAICT we don't: > > RedirectingFileSystem::lookupPath(sys::path::const_iterator Start, > sys::path::const_iterator End, Entry > *From) { > if (Start->equals(".")) > ++Start; > > // FIXME: handle .. > What I mean here is that if you ask the FileManager for "/llvm-install/bin/../lib/clang/3.8.0/include/__stddef_max_align_t.h", it will successfully invoke VFS code and find "<whatever_path_to_cache>/vfs/llvm-install/bin/../lib/clang/3.8.0/include/__stddef_max_align_t.h". Since ".." is split into its own path component, it will compare ".." in Start and From, succeed and the search will continue. Probably this traversal code was not initially meant to work this way, but the actual fact is that it does. The test in the patch tests exactly that. http://reviews.llvm.org/D17104 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits