public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Richard Purdie <richard.purdie@linuxfoundation.org>
To: gcc-patches@gcc.gnu.org
Subject: [PATCH 5/5] gcc: Pass sysroot options to cpp for preprocessed source
Date: Wed, 27 Oct 2021 21:05:05 +0100	[thread overview]
Message-ID: <20211027200505.3340725-6-richard.purdie@linuxfoundation.org> (raw)
In-Reply-To: <20211027200505.3340725-1-richard.purdie@linuxfoundation.org>

OpenEmbedded/Yocto Project extensively uses the --sysroot support within gcc.
We discovered that when compiling 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 is particularly problematic
when ccache is involved.

This patch adds %I to the cpp-output spec macro so the default substitutions for
-iprefix, -isystem, -isysroot happen and the correct sysroot is used.

2021-10-27 Richard Purdie <richard.purdie@linuxfoundation.org>

gcc/cp/ChangeLog:

    * lang-specs.h: Pass sysroot options to cpp for preprocessed source

gcc/ChangeLog:

    * gcc.c: Pass sysroot options to cpp for preprocessed source

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
---
 gcc/cp/lang-specs.h | 2 +-
 gcc/gcc.c           | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/gcc/cp/lang-specs.h b/gcc/cp/lang-specs.h
index 8902ae1d2ed..e99e2fcd6ad 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.c b/gcc/gcc.c
index abb900a4247..51176becb86 100644
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -1472,7 +1472,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.25.1


  parent reply	other threads:[~2021-10-27 20:05 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-27 20:05 [PATCH 0/5] OpenEmbedded/Yocto Project gcc patches Richard Purdie
2021-10-27 20:05 ` [PATCH 1/5] Makefile.in: Ensure build CPP/CPPFLAGS is used for build targets Richard Purdie
2021-10-28  7:04   ` Richard Biener
2021-10-28 14:43     ` Jeff Law
2021-10-27 20:05 ` [PATCH 2/5] gcc: Fix "argument list too long" from install-plugins Richard Purdie
2021-10-27 20:54   ` Bernhard Reutner-Fischer
2021-12-03  3:01   ` Jeff Law
2021-10-27 20:05 ` [PATCH 3/5] gcc: Add --nostdlib++ option Richard Purdie
2021-10-27 20:56   ` Bernhard Reutner-Fischer
2021-10-28 16:41     ` Richard Purdie
2021-12-03  3:05       ` Jeff Law
2021-10-28 14:51   ` Jeff Law
2021-10-28 16:39     ` Richard Purdie
2021-12-03  3:04       ` Jeff Law
2021-12-05 11:43         ` Richard Purdie
2021-12-06  6:10           ` Fāng-ruì Sòng
2021-10-27 20:05 ` [PATCH 4/5] gcc/nios2: Define the musl linker Richard Purdie
2021-10-28 14:46   ` Jeff Law
2021-10-27 20:05 ` Richard Purdie [this message]
2021-12-14 23:47   ` [PATCH 5/5] gcc: Pass sysroot options to cpp for preprocessed source Jeff Law

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20211027200505.3340725-6-richard.purdie@linuxfoundation.org \
    --to=richard.purdie@linuxfoundation.org \
    --cc=gcc-patches@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).