Message ID | 20230301113512.1544598-1-raj.khem@gmail.com |
---|---|
State | New |
Headers | show |
Series | Cpp: honor sysroot location | expand |
On 3/1/23 04:35, Khem Raj via Gcc-patches wrote: > Currently, if the gcc toolchain is relocated and installed from shared state cache, then you try and compile > preprocessed source (.i or .ii files), the compiler will try and access the builtin sysroot location > rather than the --sysroot option specified on the commandline. If access to that directory is > permission denied (unreadable), gcc will error. > > This happens when ccache is in use due to the fact it uses preprocessed source files. > > The fix below adds %I to the cpp-output spec macro so the default substitutions for -iprefix, > -isystem, -isysroot happen and the correct sysroot is used. Given this doesn't appear to fix a regression and is pretty narrow in terms of affected users, I'm going to defer to gcc-14. I think this is probably OK once development re-opens. jeff
diff --git a/gcc/cp/lang-specs.h b/gcc/cp/lang-specs.h index c591d155cc1..61927869fe1 100644 --- a/gcc/cp/lang-specs.h +++ b/gcc/cp/lang-specs.h @@ -116,7 +116,7 @@ along with GCC; see the file COPYING3. If not see {".ii", "@c++-cpp-output", 0, 0, 0}, {"@c++-cpp-output", "%{!E:%{!M:%{!MM:" - " cc1plus -fpreprocessed %i %(cc1_options) %2" + " cc1plus -fpreprocessed %i %I %(cc1_options) %2" " %{!fsyntax-only:" " %{fmodule-only:%{!S:-o %g.s%V}}" " %{!fmodule-only:%{!fmodule-header*:%(invoke_as)}}}" diff --git a/gcc/gcc.cc b/gcc/gcc.cc index becc56051a8..3bc98b67b50 100644 --- a/gcc/gcc.cc +++ b/gcc/gcc.cc @@ -1463,7 +1463,7 @@ static const struct compiler default_compilers[] = %W{o*:--output-pch %*}}%V}}}}}}}", 0, 0, 0}, {".i", "@cpp-output", 0, 0, 0}, {"@cpp-output", - "%{!M:%{!MM:%{!E:cc1 -fpreprocessed %i %(cc1_options) %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0}, + "%{!M:%{!MM:%{!E:cc1 -fpreprocessed %i %I %(cc1_options) %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0}, {".s", "@assembler", 0, 0, 0}, {"@assembler", "%{!M:%{!MM:%{!E:%{!S:as %(asm_debug) %(asm_options) %i %A }}}}", 0, 0, 0},