1From e6a820a19c4cd115d8af7c235c5f9700c7a24730 Mon Sep 17 00:00:00 2001 2From: Khem Raj <raj.khem@gmail.com> 3Date: Fri, 29 Mar 2013 09:22:00 +0400 4Subject: [PATCH] cpp: honor sysroot. 5 6Currently, if the gcc toolchain is relocated and installed from sstate, then you try and compile 7preprocessed source (.i or .ii files), the compiler will try and access the builtin sysroot location 8rather than the --sysroot option specified on the commandline. If access to that directory is 9permission denied (unreadable), gcc will error. 10 11This happens when ccache is in use due to the fact it uses preprocessed source files. 12 13The fix below adds %I to the cpp-output spec macro so the default substitutions for -iprefix, 14-isystem, -isysroot happen and the correct sysroot is used. 15 16[YOCTO #2074] 17 18RP 2012/04/13 19 20Signed-off-by: Khem Raj <raj.khem@gmail.com> 21 22Upstream-Status: Submitted [https://gcc.gnu.org/pipermail/gcc-patches/2021-October/582725.html] 23--- 24 gcc/cp/lang-specs.h | 2 +- 25 gcc/gcc.c | 2 +- 26 2 files changed, 2 insertions(+), 2 deletions(-) 27 28diff --git a/gcc/cp/lang-specs.h b/gcc/cp/lang-specs.h 29index 8902ae1d2ed..e99e2fcd6ad 100644 30--- a/gcc/cp/lang-specs.h 31+++ b/gcc/cp/lang-specs.h 32@@ -116,7 +116,7 @@ along with GCC; see the file COPYING3. If not see 33 {".ii", "@c++-cpp-output", 0, 0, 0}, 34 {"@c++-cpp-output", 35 "%{!E:%{!M:%{!MM:" 36- " cc1plus -fpreprocessed %i %(cc1_options) %2" 37+ " cc1plus -fpreprocessed %i %I %(cc1_options) %2" 38 " %{!fsyntax-only:" 39 " %{fmodule-only:%{!S:-o %g.s%V}}" 40 " %{!fmodule-only:%{!fmodule-header*:%(invoke_as)}}}" 41diff --git a/gcc/gcc.c b/gcc/gcc.c 42index b047fc31c2f..bdee2671532 100644 43--- a/gcc/gcc.c 44+++ b/gcc/gcc.c 45@@ -1469,7 +1469,7 @@ static const struct compiler default_compilers[] = 46 %W{o*:--output-pch=%*}}%V}}}}}}}", 0, 0, 0}, 47 {".i", "@cpp-output", 0, 0, 0}, 48 {"@cpp-output", 49- "%{!M:%{!MM:%{!E:cc1 -fpreprocessed %i %(cc1_options) %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0}, 50+ "%{!M:%{!MM:%{!E:cc1 -fpreprocessed %i %I %(cc1_options) %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0}, 51 {".s", "@assembler", 0, 0, 0}, 52 {"@assembler", 53 "%{!M:%{!MM:%{!E:%{!S:as %(asm_debug) %(asm_options) %i %A }}}}", 0, 0, 0}, 54