]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
* cppdefault.c (cpp_EXEC_PREFIX): New variable.
authormmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 12 Mar 2007 15:59:06 +0000 (15:59 +0000)
committermmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 12 Mar 2007 15:59:06 +0000 (15:59 +0000)
* cppdefault.h (cpp_PREFIX): Document.
(cpp_PREFIX_len): Likewise.
(cpp_EXEC_PREFIX): New variable.
* Makefile.in (PREPROCESSOR_DEFINES): Add STANDARD_EXEC_PREFIX.
* c-incpath.c (add_standard_paths): Correct logic for relocating
paths within prefix.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@122843 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/Makefile.in
gcc/c-incpath.c
gcc/cppdefault.c
gcc/cppdefault.h

index 9113d5d4b9a65fb0560c226558a5f8cc67ca67bb..de0dd70eb1468559c49fedc5cc55093c40211d06 100644 (file)
@@ -1,3 +1,13 @@
+2007-03-12  Mark Mitchell  <mark@codesourcery.com>
+
+       * cppdefault.c (cpp_EXEC_PREFIX): New variable.
+       * cppdefault.h (cpp_PREFIX): Document.
+       (cpp_PREFIX_len): Likewise.
+       (cpp_EXEC_PREFIX): New variable.
+       * Makefile.in (PREPROCESSOR_DEFINES): Add STANDARD_EXEC_PREFIX.
+       * c-incpath.c (add_standard_paths): Correct logic for relocating
+       paths within prefix.
+
 2007-03-12  Uros Bizjak  <ubizjak@gmail.com>
 
        * config/i386/i386.md (fixuns_trunc<mode>hi2): Implement from
index a8792b80146b09b7a7025fb251b8a2172c94ba6b..6d3fe12e0d7253bb73ff4648d4722a97a5cb1579 100644 (file)
@@ -3210,6 +3210,7 @@ PREPROCESSOR_DEFINES = \
   -DCROSS_INCLUDE_DIR=\"$(CROSS_SYSTEM_HEADER_DIR)\" \
   -DTOOL_INCLUDE_DIR=\"$(gcc_tooldir)/include\" \
   -DPREFIX=\"$(prefix)\" \
+  -DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc\" \
   @TARGET_SYSTEM_ROOT_DEFINE@
 
 cppdefault.o: cppdefault.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
index fe863d52b6e4979915bba443369033e4340dbfea..3a9585bd26de23edf8778804a9bbe61e71a1d4f5 100644 (file)
@@ -167,11 +167,26 @@ add_standard_paths (const char *sysroot, const char *iprefix,
          else if (!p->add_sysroot && relocated
                   && strncmp (p->fname, cpp_PREFIX, cpp_PREFIX_len) == 0)
            {
-             /* If the compiler is relocated, and this is a configured 
-                prefix relative path, then we use gcc_exec_prefix instead 
-                of the configured prefix.  */
-             str = concat (gcc_exec_prefix, p->fname
-                             + cpp_PREFIX_len, NULL);
+             static const char *relocated_prefix;
+             /* If this path starts with the configure-time prefix, 
+                but the compiler has been relocated, replace it 
+                with the run-time prefix.  The run-time exec prefix
+                is GCC_EXEC_PREFIX.  Compute the path from there back
+                to the toplevel prefix.  */
+             if (!relocated_prefix)
+               {
+                 char *dummy;
+                 /* Make relative prefix expects the first argument
+                    to be a program, not a directory.  */
+                 dummy = concat (gcc_exec_prefix, "dummy", NULL);
+                 relocated_prefix 
+                   = make_relative_prefix (dummy,
+                                           cpp_EXEC_PREFIX,
+                                           cpp_PREFIX);
+               }
+             str = concat (relocated_prefix,
+                           p->fname + cpp_PREFIX_len, 
+                           NULL);
              str = update_path (str, p->component);
            }
          else
index 597988ee332b1abc3b79f25bfe41be3d99895fb7..3e60841980f202e3257260346858dcf1a3efb432 100644 (file)
@@ -112,6 +112,7 @@ const size_t cpp_GCC_INCLUDE_DIR_len = 0;
 /* 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;
 
 /* This value is set by cpp_relocated at runtime */
 const char *gcc_exec_prefix;
index 2da6d05f56427b4f277fa3698c0a046283374d16..398cc857424118f981536ac3b790162e9b1f3606 100644 (file)
@@ -52,8 +52,16 @@ extern const struct default_include cpp_include_defaults[];
 extern const char cpp_GCC_INCLUDE_DIR[];
 extern const size_t cpp_GCC_INCLUDE_DIR_len;
 
+/* The configure-time prefix, i.e., the value supplied as the argument
+   to --prefix=.  */
 extern const char cpp_PREFIX[];
+/* 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[];
+/* The run-time execution prefix.  This is typically the lib/gcc
+   subdirectory of the actual installation.  */
 extern const char *gcc_exec_prefix;
 
 /* Return true if the toolchain is relocated.  */