poky/meta/recipes-devtools/gcc/gcc/0009-cpp-honor-sysroot.patch
Richard Purdie 0729c13304 gcc: Update patches submitted/merged upstream
I took 5 of our patches and submitted to upstream gcc. This highlighted that
patches 0026 and 0018 should be merged together and some tweaks were made to
try and make it acceptable to upstream. The other patches have their headers
updated to match what was submitted.

The libstdc++ option patch was also cleaned up ready for upstream as the
documentation wasn't quite right.

The CXXFLAGS_FOR_BUILD piece of 0026 is separated out into a new patch which
can be submitted separately to upstream.

Two of the patches have been merged, status updated accordinly.

(From OE-Core rev: df9b8ec56ff29f14feb1fde6acbdf9c4667430cf)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2021-10-29 07:27:47 +01:00

60 lines
2.4 KiB
Diff

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