0006-cpp-honor-sysroot.patch 2.1 KB

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