Lekensteyn added a comment. (FWIW, the suggestion to use `FileManager:getCanonicalName` did not work because I have no DirectoryEntry. And `-no-canonical-prefixes` it used very early and stripped from normal options, it seems used for a different purpose. Given the opposition, I think that this patch is a no-go.)
In https://reviews.llvm.org/D37954#902979, @jyknight wrote: > It seems to me that it was caused by the prefix being set as "/bin" instead > of "/usr/bin", because clang _doesn't_ actually canonicalize its prefix, even > when -no-canonical-prefixes isn't specified! All it does, now, is to make the > prefix absolute -- without fully canonicalizing. I think that's simply a bug. > > If the prefix had been, properly, /usr/bin, then the include path would've > been: > > > /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/7.2.0/../../../../include/c++/7.2.0/iostream > > And in that case, it would've worked properly with ninja, without adding the > feature in this patch. > > Reference clang/tools/driver/driver.cpp:297: > > // FIXME: We don't actually canonicalize this, we just make it absolute. > if (CanonicalPrefixes) > llvm::sys::fs::make_absolute(InstalledPath); If this fixes the issue, then it would definitely be a much better approach. If this has changed between Clang 4 -> 5, then it is possible the root cause. On my system (Arch Linux) `/bin` is a symlink to `usr/bin`. Output of `clang -v`: clang version 5.0.0 (tags/RELEASE_500/final) Target: x86_64-unknown-linux-gnu Thread model: posix InstalledDir: /bin Found candidate GCC installation: /bin/../lib/gcc/x86_64-pc-linux-gnu/7.2.0 Found candidate GCC installation: /bin/../lib64/gcc/x86_64-pc-linux-gnu/7.2.0 Found candidate GCC installation: /usr/lib/gcc/x86_64-pc-linux-gnu/7.2.0 Found candidate GCC installation: /usr/lib64/gcc/x86_64-pc-linux-gnu/7.2.0 Selected GCC installation: /bin/../lib64/gcc/x86_64-pc-linux-gnu/7.2.0 Candidate multilib: .;@m64 Candidate multilib: 32;@m32 Selected multilib: .;@m64 Repository: rL LLVM https://reviews.llvm.org/D37954 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits