]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
driver: Try to read spec from gcc_exec_prefix if possible
authorKito Cheng <kito.cheng@sifive.com>
Tue, 10 Jun 2025 03:17:45 +0000 (11:17 +0800)
committerKito Cheng <kito.cheng@sifive.com>
Fri, 13 Jun 2025 01:27:40 +0000 (09:27 +0800)
GCC will try to read the spec file from the directory where it is
installed, but it should try to read from gcc_exec_prefix rather than
standard_exec_prefix, because the latter is not the right one if
compiler has been relocated into other places other than the path
specfied at configuration time.

gcc/ChangeLog:

* gcc.cc (driver::set_up_specs): Use gcc_exec_prefix to
read the spec file rather than standard_exec_prefix.

gcc/gcc.cc

index 4e61de2a47c3eb9753ada26a808477787aee8ef7..235fe8019880faa4c5284d327b85320540f3a598 100644 (file)
@@ -8506,11 +8506,13 @@ driver::set_up_specs () const
   spec_machine_suffix = just_machine_suffix;
 #endif
 
+  const char *exec_prefix
+    = gcc_exec_prefix ? gcc_exec_prefix : standard_exec_prefix;
   /* We need to check standard_exec_prefix/spec_machine_suffix/specs
      for any override of as, ld and libraries.  */
-  specs_file = (char *) alloca (strlen (standard_exec_prefix)
-                      + strlen (spec_machine_suffix) + sizeof ("specs"));
-  strcpy (specs_file, standard_exec_prefix);
+  specs_file = (char *) alloca (
+    strlen (exec_prefix) + strlen (spec_machine_suffix) + sizeof ("specs"));
+  strcpy (specs_file, exec_prefix);
   strcat (specs_file, spec_machine_suffix);
   strcat (specs_file, "specs");
   if (access (specs_file, R_OK) == 0)