public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH] Cpp: honor sysroot location
@ 2023-03-01 11:35 Khem Raj
  2023-03-11 17:13 ` Jeff Law
  0 siblings, 1 reply; 2+ messages in thread
From: Khem Raj @ 2023-03-01 11:35 UTC (permalink / raw)
  To: gcc-patches; +Cc: raj.khem, Yash.Shinde

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.

---
 gcc/cp/lang-specs.h | 2 +-
 gcc/gcc.cc          | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Yash Shinde <Yash.Shinde@windriver.com>>
---
 gcc/cp/lang-specs.h | 2 +-
 gcc/gcc.cc          | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

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},
-- 
2.39.0


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH] Cpp: honor sysroot location
  2023-03-01 11:35 [PATCH] Cpp: honor sysroot location Khem Raj
@ 2023-03-11 17:13 ` Jeff Law
  0 siblings, 0 replies; 2+ messages in thread
From: Jeff Law @ 2023-03-11 17:13 UTC (permalink / raw)
  To: Khem Raj, gcc-patches; +Cc: Yash.Shinde



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

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2023-03-11 17:13 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-03-01 11:35 [PATCH] Cpp: honor sysroot location Khem Raj
2023-03-11 17:13 ` Jeff Law

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).