| From: Richard Purdie <richard.purdie@linuxfoundation.org> |
| Subject: [PATCH 5/5] gcc: Pass sysroot options to cpp for preprocessed source |
| |
| 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> |
| |
| [YOCTO #2074] |
| |
| Upstream-Status: Submitted [https://gcc.gnu.org/pipermail/gcc-patches/2021-October/582725.html] |
| --- |
| gcc/cp/lang-specs.h | 2 +- |
| gcc/gcc.c | 2 +- |
| 2 files changed, 2 insertions(+), 2 deletions(-) |
| |
| Index: gcc-11.2.0/gcc/cp/lang-specs.h |
| =================================================================== |
| --- gcc-11.2.0.orig/gcc/cp/lang-specs.h |
| +++ gcc-11.2.0/gcc/cp/lang-specs.h |
| @@ -116,7 +116,7 @@ along with GCC; see the file COPYING3. |
| {".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)}}}" |
| Index: gcc-11.2.0/gcc/gcc.c |
| =================================================================== |
| --- gcc-11.2.0.orig/gcc/gcc.c |
| +++ gcc-11.2.0/gcc/gcc.c |
| @@ -1470,7 +1470,7 @@ static const struct compiler default_com |
| %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}, |