]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
lto-wrapper: Truncate files using -truncate driver option [PR110710]
authorPeter Damianov <peter0x44@disroot.org>
Sun, 28 Apr 2024 23:16:12 +0000 (16:16 -0700)
committerRichard Biener <rguenther@suse.de>
Thu, 2 May 2024 10:42:33 +0000 (12:42 +0200)
This commit changes the Makefiles generated by lto-wrapper to no longer use
the "mv" and "touch" shell commands. These don't exist on Windows, so when the
Makefile attempts to call them, it results in errors like:
The system cannot find the file specified.

This problem only manifested when calling gcc from cmd.exe, and having no
sh.exe present on the PATH. The Windows port of GNU Make searches the PATH for
an sh.exe, and uses it if present.

I have tested this in environments with and without sh.exe on the PATH and
confirmed it works as expected.

Signed-off-by: Peter Damianov <peter0x44@disroot.org>
PR lto/110710
* lto-wrapper.cc (run_gcc): Instead of truncating a processed
ltrans input from the Makefile use the new -truncate option
to accomplish the same.

gcc/lto-wrapper.cc

index 02579951569daed28ad8a8fc1d3458d9b757b3ff..cfded757f2683f8464301bb2a4363209f87143ab 100644 (file)
@@ -2023,14 +2023,12 @@ cont:
              fprintf (mstream, "%s:\n\t@%s ", output_name, new_argv[0]);
              for (j = 1; new_argv[j] != NULL; ++j)
                fprintf (mstream, " '%s'", new_argv[j]);
-             fprintf (mstream, "\n");
              /* If we are not preserving the ltrans input files then
                 truncate them as soon as we have processed it.  This
                 reduces temporary disk-space usage.  */
              if (! save_temps)
-               fprintf (mstream, "\t@-touch -r \"%s\" \"%s.tem\" > /dev/null "
-                        "2>&1 && mv \"%s.tem\" \"%s\"\n",
-                        input_name, input_name, input_name, input_name); 
+               fprintf (mstream, " -truncate '%s'", input_name);
+             fprintf (mstream, "\n");
            }
          else
            {