blob: c720defa3583d1632caab9994fc1bda45445c9f9 [file] [log] [blame]
Andrew Geisslerc926e172021-05-07 16:11:35 -05001From 33a7a55d39c040ba09af2d69f7fa9cf8e6f84c91 Mon Sep 17 00:00:00 2001
Andrew Geissler82c905d2020-04-13 13:39:40 -05002From: Khem Raj <raj.khem@gmail.com>
3Date: Fri, 29 Mar 2013 09:22:00 +0400
Andrew Geisslerc182c622020-05-15 14:13:32 -05004Subject: [PATCH] cpp: honor sysroot.
Andrew Geissler82c905d2020-04-13 13:39:40 -05005
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: Pending
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
Andrew Geisslerc926e172021-05-07 16:11:35 -050029index 8902ae1d2ed..e99e2fcd6ad 100644
Andrew Geissler82c905d2020-04-13 13:39:40 -050030--- a/gcc/cp/lang-specs.h
31+++ b/gcc/cp/lang-specs.h
Andrew Geisslerc926e172021-05-07 16:11:35 -050032@@ -116,7 +116,7 @@ along with GCC; see the file COPYING3. If not see
Andrew Geissler82c905d2020-04-13 13:39:40 -050033 {".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"
Andrew Geisslerc926e172021-05-07 16:11:35 -050038 " %{!fsyntax-only:"
39 " %{fmodule-only:%{!S:-o %g.s%V}}"
40 " %{!fmodule-only:%{!fmodule-header*:%(invoke_as)}}}"
Andrew Geissler82c905d2020-04-13 13:39:40 -050041diff --git a/gcc/gcc.c b/gcc/gcc.c
Andrew Geisslerc926e172021-05-07 16:11:35 -050042index 1bc45285384..8737bae5353 100644
Andrew Geissler82c905d2020-04-13 13:39:40 -050043--- a/gcc/gcc.c
44+++ b/gcc/gcc.c
Andrew Geisslerc926e172021-05-07 16:11:35 -050045@@ -1470,7 +1470,7 @@ static const struct compiler default_compilers[] =
Andrew Geissler82c905d2020-04-13 13:39:40 -050046 %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},