diff mbox series

[v2,2/2] lto-wrapper: Truncate files using -truncate driver option [PR110710]

Message ID 20240418040912.6236-2-peter0x44@disroot.org
State New
Headers show
Series [v2,1/2] Driver: Add new -truncate option | expand

Commit Message

Peter Damianov April 18, 2024, 4:09 a.m. UTC
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>
---
 gcc/lto-wrapper.cc | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

Comments

Richard Biener April 18, 2024, 6:27 a.m. UTC | #1
On Thu, Apr 18, 2024 at 6:12 AM Peter Damianov <peter0x44@disroot.org> wrote:
>
> 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.

OK.

Thanks,
Richard.

> Signed-off-by: Peter Damianov <peter0x44@disroot.org>
> ---
>  gcc/lto-wrapper.cc | 6 ++----
>  1 file changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/gcc/lto-wrapper.cc b/gcc/lto-wrapper.cc
> index 02579951569..a36a59e6fb8 100644
> --- a/gcc/lto-wrapper.cc
> +++ b/gcc/lto-wrapper.cc
> @@ -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
>             {
> --
> 2.39.2
>
diff mbox series

Patch

diff --git a/gcc/lto-wrapper.cc b/gcc/lto-wrapper.cc
index 02579951569..a36a59e6fb8 100644
--- a/gcc/lto-wrapper.cc
+++ b/gcc/lto-wrapper.cc
@@ -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
 	    {