[PATCH] Cpp: honor sysroot location

2023-03-01 Thread Khem Raj via Gcc-patches
Currently, if the gcc toolchain is relocated and installed from shared state 
cache, 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.

---
 gcc/cp/lang-specs.h | 2 +-
 gcc/gcc.cc  | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

Signed-off-by: Khem Raj 
Signed-off-by: Yash Shinde >
---
 gcc/cp/lang-specs.h | 2 +-
 gcc/gcc.cc  | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/gcc/cp/lang-specs.h b/gcc/cp/lang-specs.h
index c591d155cc1..61927869fe1 100644
--- a/gcc/cp/lang-specs.h
+++ b/gcc/cp/lang-specs.h
@@ -116,7 +116,7 @@ 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:"
   "%{fmodule-only:%{!S:-o %g.s%V}}"
   "%{!fmodule-only:%{!fmodule-header*:%(invoke_as)}}}"
diff --git a/gcc/gcc.cc b/gcc/gcc.cc
index becc56051a8..3bc98b67b50 100644
--- a/gcc/gcc.cc
+++ b/gcc/gcc.cc
@@ -1463,7 +1463,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.39.0



[PATCH] gcc: armv4: pass fix-v4bx to linker to support EABI.

2023-04-06 Thread Khem Raj via Gcc-patches
The LINK_SPEC for linux gets overwritten by linux-eabi.h which
means the value of TARGET_FIX_V4BX_SPEC gets lost and as a result
the option is not passed to linker when chosing march=armv4
This patch redefines this in linux-eabi.h and reinserts it
for eabi defaulting toolchains.

Signed-off-by: Khem Raj 
Signed-off-by: Yash Shinde 

---
 gcc/config/arm/linux-eabi.h | 6 +-
 1 file changed, 5 insertions(+), 1 deletion(-)
---
 gcc/config/arm/linux-eabi.h | 6 +-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/gcc/config/arm/linux-eabi.h b/gcc/config/arm/linux-eabi.h
index a119875599d..e8b64c17b01 100644
--- a/gcc/config/arm/linux-eabi.h
+++ b/gcc/config/arm/linux-eabi.h
@@ -88,10 +88,14 @@
 #define MUSL_DYNAMIC_LINKER \
   "/lib/ld-musl-arm" MUSL_DYNAMIC_LINKER_E 
"%{mfloat-abi=hard:hf}%{mfdpic:-fdpic}.so.1"
 
+/* For armv4 we pass --fix-v4bx to linker to support EABI */
+#undef TARGET_FIX_V4BX_SPEC
+#define TARGET_FIX_V4BX_SPEC 
"%{mcpu=arm8|mcpu=arm810|mcpu=strongarm*|march=armv4: --fix-v4bx}"
+
 /* At this point, bpabi.h will have clobbered LINK_SPEC.  We want to
use the GNU/Linux version, not the generic BPABI version.  */
 #undef  LINK_SPEC
-#define LINK_SPEC EABI_LINK_SPEC   \
+#define LINK_SPEC TARGET_FIX_V4BX_SPEC EABI_LINK_SPEC  \
   LINUX_OR_ANDROID_LD (LINUX_TARGET_LINK_SPEC, \
   LINUX_TARGET_LINK_SPEC " " ANDROID_LINK_SPEC)
 
-- 
2.34.1