From 68802ca536b01ab21cfa58e11ef332e30d9a3c5e Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Mon, 7 Dec 2015 23:39:54 +0000
Subject: [PATCH] handle sysroot support for nativesdk-gcc

Being able to build a nativesdk gcc is useful, particularly in cases
where the host compiler may be of an incompatible version (or a 32
bit compiler is needed).

Sadly, building nativesdk-gcc is not straight forward. We install
nativesdk-gcc into a relocatable location and this means that its
library locations can change. "Normal" sysroot support doesn't help
in this case since the values of paths like "libdir" change, not just
base root directory of the system.

In order to handle this we do two things:

a) Add %r into spec file markup which can be used for injected paths
   such as SYSTEMLIBS_DIR (see gcc_multilib_setup()).
b) Add other paths which need relocation into a .gccrelocprefix section
   which the relocation code will notice and adjust automatically.

Upstream-Status: Inappropriate
RP 2015/7/28

Extend the gccrelocprefix support to musl config too, this ensures
that gcc will get right bits in SDK installations

Signed-off-by: Khem Raj <raj.khem@gmail.com>

Added PREFIXVAR and EXEC_PREFIXVAR to support runtime relocation.  Without
these as part of the gccrelocprefix the system can't do runtime relocation
if the executable is moved.  (These paths were missed in the original
implementation.)

Signed-off-by: Mark Hatle <mark.hatle@kernel.crashing.org>
---
 gcc/c-family/c-opts.c     |  4 +--
 gcc/config/linux.h        | 24 +++++++--------
 gcc/config/rs6000/sysv4.h | 24 +++++++--------
 gcc/cppdefault.c          | 63 ++++++++++++++++++++++++---------------
 gcc/cppdefault.h          | 13 ++++----
 gcc/gcc.c                 | 20 +++++++++----
 gcc/incpath.c             | 12 ++++----
 gcc/prefix.c              |  6 ++--
 8 files changed, 94 insertions(+), 72 deletions(-)

diff --git a/gcc/c-family/c-opts.c b/gcc/c-family/c-opts.c
index 6f001e0bb6c..55ab07c278f 100644
--- a/gcc/c-family/c-opts.c
+++ b/gcc/c-family/c-opts.c
@@ -1438,8 +1438,8 @@ add_prefixed_path (const char *suffix, incpath_kind chain)
   size_t prefix_len, suffix_len;
 
   suffix_len = strlen (suffix);
-  prefix     = iprefix ? iprefix : cpp_GCC_INCLUDE_DIR;
-  prefix_len = iprefix ? strlen (iprefix) : cpp_GCC_INCLUDE_DIR_len;
+  prefix     = iprefix ? iprefix : GCC_INCLUDE_DIRVAR;
+  prefix_len = iprefix ? strlen (iprefix) : strlen(GCC_INCLUDE_DIRVAR) - 7;
 
   path = (char *) xmalloc (prefix_len + suffix_len + 1);
   memcpy (path, prefix, prefix_len);
diff --git a/gcc/config/linux.h b/gcc/config/linux.h
index b525bcd56b3..ba02c013e30 100644
--- a/gcc/config/linux.h
+++ b/gcc/config/linux.h
@@ -129,53 +129,53 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
  * Unfortunately, this is mostly duplicated from cppdefault.c */
 #if DEFAULT_LIBC == LIBC_MUSL
 #define INCLUDE_DEFAULTS_MUSL_GPP			\
-    { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1,		\
+    { GPLUSPLUS_INCLUDE_DIRVAR, "G++", 1, 1,		\
       GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 },		\
-    { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1,		\
+    { GPLUSPLUS_TOOL_INCLUDE_DIRVAR, "G++", 1, 1,	\
       GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 1 },		\
-    { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1,	\
+    { GPLUSPLUS_BACKWARD_INCLUDE_DIRVAR, "G++", 1, 1,	\
       GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 },
 
 #ifdef LOCAL_INCLUDE_DIR
 #define INCLUDE_DEFAULTS_MUSL_LOCAL			\
-    { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 },		\
-    { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 0 },
+    { LOCAL_INCLUDE_DIRVAR, 0, 0, 1, 1, 2 },		\
+    { LOCAL_INCLUDE_DIRVAR, 0, 0, 1, 1, 0 },
 #else
 #define INCLUDE_DEFAULTS_MUSL_LOCAL
 #endif
 
 #ifdef PREFIX_INCLUDE_DIR
 #define INCLUDE_DEFAULTS_MUSL_PREFIX			\
-    { PREFIX_INCLUDE_DIR, 0, 0, 1, 0, 0},
+    { PREFIX_INCLUDE_DIRVAR, 0, 0, 1, 0, 0},
 #else
 #define INCLUDE_DEFAULTS_MUSL_PREFIX
 #endif
 
 #ifdef CROSS_INCLUDE_DIR
 #define INCLUDE_DEFAULTS_MUSL_CROSS			\
-    { CROSS_INCLUDE_DIR, "GCC", 0, 0, 0, 0},
+    { CROSS_INCLUDE_DIRVAR, "GCC", 0, 0, 0, 0},
 #else
 #define INCLUDE_DEFAULTS_MUSL_CROSS
 #endif
 
 #ifdef TOOL_INCLUDE_DIR
 #define INCLUDE_DEFAULTS_MUSL_TOOL			\
-    { TOOL_INCLUDE_DIR, "BINUTILS", 0, 1, 0, 0},
+    { TOOL_INCLUDE_DIRVAR, "BINUTILS", 0, 1, 0, 0},
 #else
 #define INCLUDE_DEFAULTS_MUSL_TOOL
 #endif
 
 #ifdef GCC_INCLUDE_SUBDIR_TARGET
 #define INCLUDE_DEFAULTS_MUSL_SUBDIR_TARGET		\
-    { STANDARD_STARTFILE_PREFIX_2 GCC_INCLUDE_SUBDIR_TARGET, "GCC", 0, 0, 1, 0},
+    { STANDARD_STARTFILE_PREFIX_2VAR, "GCC", 0, 0, 1, 0},
 #else
 #define INCLUDE_DEFAULTS_MUSL_SUBDIR_TARGET
 #endif
 
 #ifdef NATIVE_SYSTEM_HEADER_DIR
 #define INCLUDE_DEFAULTS_MUSL_NATIVE			\
-    { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 2 },	\
-    { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 0 },
+    { NATIVE_SYSTEM_HEADER_DIRVAR, 0, 0, 0, 1, 2 },	\
+    { NATIVE_SYSTEM_HEADER_DIRVAR, 0, 0, 0, 1, 0 },
 #else
 #define INCLUDE_DEFAULTS_MUSL_NATIVE
 #endif
@@ -200,7 +200,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
     INCLUDE_DEFAULTS_MUSL_TOOL				\
     INCLUDE_DEFAULTS_MUSL_SUBDIR_TARGET			\
     INCLUDE_DEFAULTS_MUSL_NATIVE			\
-    { GCC_INCLUDE_DIR, "GCC", 0, 1, 0, 0 },		\
+    { GCC_INCLUDE_DIRVAR, "GCC", 0, 1, 0, 0 },		\
     { 0, 0, 0, 0, 0, 0 }				\
   }
 #endif
diff --git a/gcc/config/rs6000/sysv4.h b/gcc/config/rs6000/sysv4.h
index 0c2bba5ea32..313a8de4417 100644
--- a/gcc/config/rs6000/sysv4.h
+++ b/gcc/config/rs6000/sysv4.h
@@ -959,53 +959,53 @@ ncrtn.o%s"
 /* Include order changes for musl, same as in generic linux.h.  */
 #if DEFAULT_LIBC == LIBC_MUSL
 #define INCLUDE_DEFAULTS_MUSL_GPP			\
-    { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1,		\
+    { GPLUSPLUS_INCLUDE_DIRVAR, "G++", 1, 1,		\
       GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 },		\
-    { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1,		\
+    { GPLUSPLUS_TOOL_INCLUDE_DIRVAR, "G++", 1, 1,	\
       GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 1 },		\
-    { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1,	\
+    { GPLUSPLUS_BACKWARD_INCLUDE_DIRVAR, "G++", 1, 1,	\
       GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 },
 
 #ifdef LOCAL_INCLUDE_DIR
 #define INCLUDE_DEFAULTS_MUSL_LOCAL			\
-    { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 },		\
-    { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 0 },
+    { LOCAL_INCLUDE_DIRVAR, 0, 0, 1, 1, 2 },		\
+    { LOCAL_INCLUDE_DIRVAR, 0, 0, 1, 1, 0 },
 #else
 #define INCLUDE_DEFAULTS_MUSL_LOCAL
 #endif
 
 #ifdef PREFIX_INCLUDE_DIR
 #define INCLUDE_DEFAULTS_MUSL_PREFIX			\
-    { PREFIX_INCLUDE_DIR, 0, 0, 1, 0, 0},
+    { PREFIX_INCLUDE_DIRVAR, 0, 0, 1, 0, 0},
 #else
 #define INCLUDE_DEFAULTS_MUSL_PREFIX
 #endif
 
 #ifdef CROSS_INCLUDE_DIR
 #define INCLUDE_DEFAULTS_MUSL_CROSS			\
-    { CROSS_INCLUDE_DIR, "GCC", 0, 0, 0, 0},
+    { CROSS_INCLUDE_DIRVAR, "GCC", 0, 0, 0, 0},
 #else
 #define INCLUDE_DEFAULTS_MUSL_CROSS
 #endif
 
 #ifdef TOOL_INCLUDE_DIR
 #define INCLUDE_DEFAULTS_MUSL_TOOL			\
-    { TOOL_INCLUDE_DIR, "BINUTILS", 0, 1, 0, 0},
+    { TOOL_INCLUDE_DIRVAR, "BINUTILS", 0, 1, 0, 0},
 #else
 #define INCLUDE_DEFAULTS_MUSL_TOOL
 #endif
 
 #ifdef GCC_INCLUDE_SUBDIR_TARGET
 #define INCLUDE_DEFAULTS_MUSL_SUBDIR_TARGET            \
-    { STANDARD_STARTFILE_PREFIX_2 GCC_INCLUDE_SUBDIR_TARGET, "GCC", 0, 0, 1, 0},
+    { STANDARD_STARTFILE_PREFIX_2VAR, "GCC", 0, 0, 1, 0},
 #else
 #define INCLUDE_DEFAULTS_MUSL_SUBDIR_TARGET
 #endif
 
 #ifdef NATIVE_SYSTEM_HEADER_DIR
 #define INCLUDE_DEFAULTS_MUSL_NATIVE			\
-    { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 2 },	\
-    { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 0 },
+    { NATIVE_SYSTEM_HEADER_DIRVAR, 0, 0, 0, 1, 2 },	\
+    { NATIVE_SYSTEM_HEADER_DIRVAR, 0, 0, 0, 1, 0 },
 #else
 #define INCLUDE_DEFAULTS_MUSL_NATIVE
 #endif
@@ -1030,7 +1030,7 @@ ncrtn.o%s"
     INCLUDE_DEFAULTS_MUSL_TOOL				\
     INCLUDE_DEFAULTS_MUSL_SUBDIR_TARGET			\
     INCLUDE_DEFAULTS_MUSL_NATIVE			\
-    { GCC_INCLUDE_DIR, "GCC", 0, 1, 0, 0 },		\
+    { GCC_INCLUDE_DIRVAR, "GCC", 0, 1, 0, 0 },		\
     { 0, 0, 0, 0, 0, 0 }				\
   }
 #endif
diff --git a/gcc/cppdefault.c b/gcc/cppdefault.c
index d54d6ce0076..784a92a0c24 100644
--- a/gcc/cppdefault.c
+++ b/gcc/cppdefault.c
@@ -35,6 +35,30 @@
 # undef CROSS_INCLUDE_DIR
 #endif
 
+static char GPLUSPLUS_INCLUDE_DIRVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = GPLUSPLUS_INCLUDE_DIR;
+char GCC_INCLUDE_DIRVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = GCC_INCLUDE_DIR;
+static char GPLUSPLUS_TOOL_INCLUDE_DIRVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = GPLUSPLUS_TOOL_INCLUDE_DIR;
+static char GPLUSPLUS_BACKWARD_INCLUDE_DIRVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = GPLUSPLUS_BACKWARD_INCLUDE_DIR;
+static char STANDARD_STARTFILE_PREFIX_2VAR[4096] __attribute__ ((section (".gccrelocprefix"))) = STANDARD_STARTFILE_PREFIX_2 GCC_INCLUDE_SUBDIR_TARGET;
+#ifdef LOCAL_INCLUDE_DIR
+static char LOCAL_INCLUDE_DIRVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = LOCAL_INCLUDE_DIR;
+#endif
+#ifdef PREFIX_INCLUDE_DIR
+static char PREFIX_INCLUDE_DIRVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = PREFIX_INCLUDE_DIR;
+#endif
+#ifdef FIXED_INCLUDE_DIR
+static char FIXED_INCLUDE_DIRVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = FIXED_INCLUDE_DIR;
+#endif
+#ifdef CROSS_INCLUDE_DIR
+static char CROSS_INCLUDE_DIRVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = CROSS_INCLUDE_DIR;
+#endif
+#ifdef TOOL_INCLUDE_DIR
+static char TOOL_INCLUDE_DIRVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = TOOL_INCLUDE_DIR;
+#endif
+#ifdef NATIVE_SYSTEM_HEADER_DIR
+static char NATIVE_SYSTEM_HEADER_DIRVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = NATIVE_SYSTEM_HEADER_DIR;
+#endif
+
 const struct default_include cpp_include_defaults[]
 #ifdef INCLUDE_DEFAULTS
 = INCLUDE_DEFAULTS;
@@ -42,17 +66,17 @@ const struct default_include cpp_include_defaults[]
 = {
 #ifdef GPLUSPLUS_INCLUDE_DIR
     /* Pick up GNU C++ generic include files.  */
-    { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1,
+    { GPLUSPLUS_INCLUDE_DIRVAR, "G++", 1, 1,
       GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 },
 #endif
 #ifdef GPLUSPLUS_TOOL_INCLUDE_DIR
     /* Pick up GNU C++ target-dependent include files.  */
-    { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1,
+    { GPLUSPLUS_TOOL_INCLUDE_DIRVAR, "G++", 1, 1,
       GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 1 },
 #endif
 #ifdef GPLUSPLUS_BACKWARD_INCLUDE_DIR
     /* Pick up GNU C++ backward and deprecated include files.  */
-    { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1,
+    { GPLUSPLUS_BACKWARD_INCLUDE_DIRVAR, "G++", 1, 1,
       GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 },
 #endif
 #ifdef GPLUSPLUS_LIBCXX_INCLUDE_DIR
@@ -62,23 +86,23 @@ const struct default_include cpp_include_defaults[]
 #endif
 #ifdef GCC_INCLUDE_DIR
     /* This is the dir for gcc's private headers.  */
-    { GCC_INCLUDE_DIR, "GCC", 0, 0, 0, 0 },
+    { GCC_INCLUDE_DIRVAR, "GCC", 0, 0, 0, 0 },
 #endif
 #ifdef GCC_INCLUDE_SUBDIR_TARGET
     /* This is the dir for gcc's private headers under the specified sysroot.  */
-    { STANDARD_STARTFILE_PREFIX_2 GCC_INCLUDE_SUBDIR_TARGET, "GCC", 0, 0, 1, 0 },
+    { STANDARD_STARTFILE_PREFIX_2VAR, "GCC", 0, 0, 1, 0 },
 #endif
 #ifdef LOCAL_INCLUDE_DIR
     /* /usr/local/include comes before the fixincluded header files.  */
-    { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 },
-    { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 0 },
+    { LOCAL_INCLUDE_DIRVAR, 0, 0, 1, 1, 2 },
+    { LOCAL_INCLUDE_DIRVAR, 0, 0, 1, 1, 0 },
 #endif
 #ifdef PREFIX_INCLUDE_DIR
-    { PREFIX_INCLUDE_DIR, 0, 0, 1, 0, 0 },
+    { PREFIX_INCLUDE_DIRVAR, 0, 0, 1, 0, 0 },
 #endif
 #ifdef FIXED_INCLUDE_DIR
     /* This is the dir for fixincludes.  */
-    { FIXED_INCLUDE_DIR, "GCC", 0, 0, 0,
+    { FIXED_INCLUDE_DIRVAR, "GCC", 0, 0, 0,
       /* A multilib suffix needs adding if different multilibs use
 	 different headers.  */
 #ifdef SYSROOT_HEADERS_SUFFIX_SPEC
@@ -90,33 +114,24 @@ const struct default_include cpp_include_defaults[]
 #endif
 #ifdef CROSS_INCLUDE_DIR
     /* One place the target system's headers might be.  */
-    { CROSS_INCLUDE_DIR, "GCC", 0, 0, 0, 0 },
+    { CROSS_INCLUDE_DIRVAR, "GCC", 0, 0, 0, 0 },
 #endif
 #ifdef TOOL_INCLUDE_DIR
     /* Another place the target system's headers might be.  */
-    { TOOL_INCLUDE_DIR, "BINUTILS", 0, 1, 0, 0 },
+    { TOOL_INCLUDE_DIRVAR, "BINUTILS", 0, 1, 0, 0 },
 #endif
 #ifdef NATIVE_SYSTEM_HEADER_DIR
     /* /usr/include comes dead last.  */
-    { NATIVE_SYSTEM_HEADER_DIR, NATIVE_SYSTEM_HEADER_COMPONENT, 0, 0, 1, 2 },
-    { NATIVE_SYSTEM_HEADER_DIR, NATIVE_SYSTEM_HEADER_COMPONENT, 0, 0, 1, 0 },
+    { NATIVE_SYSTEM_HEADER_DIRVAR, NATIVE_SYSTEM_HEADER_COMPONENT, 0, 0, 1, 2 },
+    { NATIVE_SYSTEM_HEADER_DIRVAR, NATIVE_SYSTEM_HEADER_COMPONENT, 0, 0, 1, 0 },
 #endif
     { 0, 0, 0, 0, 0, 0 }
   };
 #endif /* no INCLUDE_DEFAULTS */
 
-#ifdef GCC_INCLUDE_DIR
-const char cpp_GCC_INCLUDE_DIR[] = GCC_INCLUDE_DIR;
-const size_t cpp_GCC_INCLUDE_DIR_len = sizeof GCC_INCLUDE_DIR - 8;
-#else
-const char cpp_GCC_INCLUDE_DIR[] = "";
-const size_t cpp_GCC_INCLUDE_DIR_len = 0;
-#endif
-
 /* The configured prefix.  */
-const char cpp_PREFIX[] = PREFIX;
-const size_t cpp_PREFIX_len = sizeof PREFIX - 1;
-const char cpp_EXEC_PREFIX[] = STANDARD_EXEC_PREFIX;
+char PREFIXVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = PREFIX;
+char EXEC_PREFIXVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = STANDARD_EXEC_PREFIX;
 
 /* This value is set by cpp_relocated at runtime */
 const char *gcc_exec_prefix;
diff --git a/gcc/cppdefault.h b/gcc/cppdefault.h
index fd3c655db1c..20669ac427d 100644
--- a/gcc/cppdefault.h
+++ b/gcc/cppdefault.h
@@ -33,7 +33,8 @@
 
 struct default_include
 {
-  const char *const fname;	/* The name of the directory.  */
+  const char *fname;     /* The name of the directory.  */
+
   const char *const component;	/* The component containing the directory
 				   (see update_path in prefix.c) */
   const char cplusplus;		/* When this is non-zero, we should only
@@ -55,17 +56,13 @@ struct default_include
 };
 
 extern const struct default_include cpp_include_defaults[];
-extern const char cpp_GCC_INCLUDE_DIR[];
-extern const size_t cpp_GCC_INCLUDE_DIR_len;
+extern char GCC_INCLUDE_DIRVAR[] __attribute__ ((section (".gccrelocprefix")));
 
 /* The configure-time prefix, i.e., the value supplied as the argument
    to --prefix=.  */
-extern const char cpp_PREFIX[];
+extern char PREFIXVAR[] __attribute__ ((section (".gccrelocprefix")));
 /* The length of the configure-time prefix.  */
-extern const size_t cpp_PREFIX_len;
-/* The configure-time execution prefix.  This is typically the lib/gcc
-   subdirectory of cpp_PREFIX.  */
-extern const char cpp_EXEC_PREFIX[];
+extern char EXEC_PREFIXVAR[] __attribute__ ((section (".gccrelocprefix")));
 /* The run-time execution prefix.  This is typically the lib/gcc
    subdirectory of the actual installation.  */
 extern const char *gcc_exec_prefix;
diff --git a/gcc/gcc.c b/gcc/gcc.c
index bdee2671532..36e8af38630 100644
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -252,6 +252,8 @@ FILE *report_times_to_file = NULL;
 #endif
 static const char *target_system_root = DEFAULT_TARGET_SYSTEM_ROOT;
 
+static char target_relocatable_prefix[4096] __attribute__ ((section (".gccrelocprefix"))) = SYSTEMLIBS_DIR;
+
 /* Nonzero means pass the updated target_system_root to the compiler.  */
 
 static int target_system_root_changed;
@@ -568,6 +570,7 @@ or with constant text in a single argument.
  %G     process LIBGCC_SPEC as a spec.
  %R     Output the concatenation of target_system_root and
         target_sysroot_suffix.
+ %r     Output the base path target_relocatable_prefix
  %S     process STARTFILE_SPEC as a spec.  A capital S is actually used here.
  %E     process ENDFILE_SPEC as a spec.  A capital E is actually used here.
  %C     process CPP_SPEC as a spec.
@@ -1620,10 +1623,10 @@ static const char *gcc_libexec_prefix;
    gcc_exec_prefix is set because, in that case, we know where the
    compiler has been installed, and use paths relative to that
    location instead.  */
-static const char *const standard_exec_prefix = STANDARD_EXEC_PREFIX;
-static const char *const standard_libexec_prefix = STANDARD_LIBEXEC_PREFIX;
-static const char *const standard_bindir_prefix = STANDARD_BINDIR_PREFIX;
-static const char *const standard_startfile_prefix = STANDARD_STARTFILE_PREFIX;
+static char standard_exec_prefix[4096] __attribute__ ((section (".gccrelocprefix"))) = STANDARD_EXEC_PREFIX;
+static char standard_libexec_prefix[4096] __attribute__ ((section (".gccrelocprefix"))) = STANDARD_LIBEXEC_PREFIX;
+static char standard_bindir_prefix[4096] __attribute__ ((section (".gccrelocprefix"))) = STANDARD_BINDIR_PREFIX;
+static char *const standard_startfile_prefix = STANDARD_STARTFILE_PREFIX;
 
 /* For native compilers, these are well-known paths containing
    components that may be provided by the system.  For cross
@@ -1631,9 +1634,9 @@ static const char *const standard_startfile_prefix = STANDARD_STARTFILE_PREFIX;
 static const char *md_exec_prefix = MD_EXEC_PREFIX;
 static const char *md_startfile_prefix = MD_STARTFILE_PREFIX;
 static const char *md_startfile_prefix_1 = MD_STARTFILE_PREFIX_1;
-static const char *const standard_startfile_prefix_1
+static char standard_startfile_prefix_1[4096] __attribute__ ((section (".gccrelocprefix")))
   = STANDARD_STARTFILE_PREFIX_1;
-static const char *const standard_startfile_prefix_2
+static char standard_startfile_prefix_2[4096] __attribute__ ((section (".gccrelocprefix")))
   = STANDARD_STARTFILE_PREFIX_2;
 
 /* A relative path to be used in finding the location of tools
@@ -6570,6 +6573,11 @@ do_spec_1 (const char *spec, int inswitch, const char *soft_matched_part)
 	      }
 	    break;
 
+          case 'r':
+              obstack_grow (&obstack, target_relocatable_prefix,
+		      strlen (target_relocatable_prefix));
+            break;
+
 	  case 'S':
 	    value = do_spec_1 (startfile_spec, 0, NULL);
 	    if (value != 0)
diff --git a/gcc/incpath.c b/gcc/incpath.c
index fbfc0ce03b8..a82e543428b 100644
--- a/gcc/incpath.c
+++ b/gcc/incpath.c
@@ -131,7 +131,7 @@ add_standard_paths (const char *sysroot, const char *iprefix,
   int relocated = cpp_relocated ();
   size_t len;
 
-  if (iprefix && (len = cpp_GCC_INCLUDE_DIR_len) != 0)
+  if (iprefix && (len = strlen(GCC_INCLUDE_DIRVAR) - 7) != 0)
     {
       /* Look for directories that start with the standard prefix.
 	 "Translate" them, i.e. replace /usr/local/lib/gcc... with
@@ -146,7 +146,7 @@ add_standard_paths (const char *sysroot, const char *iprefix,
 		 now.  */
 	      if (sysroot && p->add_sysroot)
 		continue;
-	      if (!filename_ncmp (p->fname, cpp_GCC_INCLUDE_DIR, len))
+	      if (!filename_ncmp (p->fname, GCC_INCLUDE_DIRVAR, len))
 		{
 		  char *str = concat (iprefix, p->fname + len, NULL);
 		  if (p->multilib == 1 && imultilib)
@@ -187,7 +187,7 @@ add_standard_paths (const char *sysroot, const char *iprefix,
 	      free (sysroot_no_trailing_dir_separator);
 	    }
 	  else if (!p->add_sysroot && relocated
-		   && !filename_ncmp (p->fname, cpp_PREFIX, cpp_PREFIX_len))
+		   && !filename_ncmp (p->fname, PREFIXVAR, strlen(PREFIXVAR)))
 	    {
  	      static const char *relocated_prefix;
 	      char *ostr;
@@ -204,12 +204,12 @@ add_standard_paths (const char *sysroot, const char *iprefix,
 		  dummy = concat (gcc_exec_prefix, "dummy", NULL);
 		  relocated_prefix
 		    = make_relative_prefix (dummy,
-					    cpp_EXEC_PREFIX,
-					    cpp_PREFIX);
+					    EXEC_PREFIXVAR,
+					    PREFIXVAR);
 		  free (dummy);
 		}
 	      ostr = concat (relocated_prefix,
-			     p->fname + cpp_PREFIX_len,
+			     p->fname + strlen(PREFIXVAR),
 			     NULL);
 	      str = update_path (ostr, p->component);
 	      free (ostr);
diff --git a/gcc/prefix.c b/gcc/prefix.c
index 747c09de638..f728638dc65 100644
--- a/gcc/prefix.c
+++ b/gcc/prefix.c
@@ -72,7 +72,9 @@ License along with GCC; see the file COPYING3.  If not see
 #include "prefix.h"
 #include "common/common-target.h"
 
-static const char *std_prefix = PREFIX;
+char PREFIXVAR1[4096] __attribute__ ((section (".gccrelocprefix"))) = PREFIX;
+
+static const char *std_prefix = PREFIXVAR1;
 
 static const char *get_key_value (char *);
 static char *translate_name (char *);
@@ -212,7 +214,7 @@ translate_name (char *name)
 	prefix = getenv (key);
 
       if (prefix == 0)
-	prefix = PREFIX;
+	prefix = PREFIXVAR1;
 
       /* We used to strip trailing DIR_SEPARATORs here, but that can
 	 sometimes yield a result with no separator when one was coded
