From c2ec131f19d656fd916c45f51186633c789db6e9 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Fri, 29 Mar 2013 09:22:00 +0400 Subject: [PATCH 10/37] cpp: honor sysroot. Currently, if the gcc toolchain is relocated and installed from sstate, then you try and compile 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 happens when ccache is in use due to the fact it uses preprocessed source files. The fix below adds %I to the cpp-output spec macro so the default substitutions for -iprefix, -isystem, -isysroot happen and the correct sysroot is used. [YOCTO #2074] RP 2012/04/13 Signed-off-by: Khem Raj Upstream-Status: Pending --- 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 c6e42eda283..e1ddf066467 100644 --- a/gcc/cp/lang-specs.h +++ b/gcc/cp/lang-specs.h @@ -66,5 +66,5 @@ 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:%(invoke_as)}}}}", 0, 0, 0}, diff --git a/gcc/gcc.c b/gcc/gcc.c index 30845e5b125..cef26c454d7 100644 --- a/gcc/gcc.c +++ b/gcc/gcc.c @@ -1349,7 +1349,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.20.1