diff options
Diffstat (limited to 'meta/recipes-devtools/gcc/gcc/0009-cpp-honor-sysroot.patch')
-rw-r--r-- | meta/recipes-devtools/gcc/gcc/0009-cpp-honor-sysroot.patch | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/meta/recipes-devtools/gcc/gcc/0009-cpp-honor-sysroot.patch b/meta/recipes-devtools/gcc/gcc/0009-cpp-honor-sysroot.patch new file mode 100644 index 0000000000..37f26f0728 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc/0009-cpp-honor-sysroot.patch @@ -0,0 +1,59 @@ +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}, |