From: Sunil Dora <sunilkumar.d...@windriver.com> For excessively long environment variables i.e > 128KB Store the arguments in a temporary file and collect them back together in collect2 and other subprocess.
PR : https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111527 Linux kernel has the following limits on shell commands: Each environment variable passed to an executable must be under 128 KiB GCC uses the COLLECT_GCC_OPTIONS environment variable to transfer the expanded command line to collect2. With many options, this exceeds the limit mentioned above. GCC : Added Testcase for PR111527 TC1 : If the command line argument less than 128kb, gcc should compile fine. TC2 : If the command line argument in the range of 128kb to 2mb, gcc should copy arguments in a temporary file and use it to communicate and compile fine. TC3 : If the command line argument greater thean 2mb, gcc shuld fail the compile and report error. (Expected FAIL) Signed-off-by: Sunil Dora <sunilkumar.d...@windriver.com> --- gcc/collect2.cc | 41 +++- gcc/gcc.cc | 19 +- gcc/lto-wrapper.cc | 37 +++- gcc/testsuite/gcc.dg/longcmd/longcmd.exp | 16 ++ gcc/testsuite/gcc.dg/longcmd/pr111527-1.c | 44 ++++ gcc/testsuite/gcc.dg/longcmd/pr111527-2.c | 9 + gcc/testsuite/gcc.dg/longcmd/pr111527-3.c | 10 + gcc/testsuite/gcc.dg/longcmd/pr111527-4.c | 10 + gcc/testsuite/gcc.misc-tests/outputs.exp | 248 +++++++++++----------- lto-plugin/lto-plugin.c | 37 +++- 10 files changed, 340 insertions(+), 131 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/longcmd/longcmd.exp create mode 100644 gcc/testsuite/gcc.dg/longcmd/pr111527-1.c create mode 100644 gcc/testsuite/gcc.dg/longcmd/pr111527-2.c create mode 100644 gcc/testsuite/gcc.dg/longcmd/pr111527-3.c create mode 100644 gcc/testsuite/gcc.dg/longcmd/pr111527-4.c diff --git a/gcc/collect2.cc b/gcc/collect2.cc index f5a288171c9..3f6c23001ba 100644 --- a/gcc/collect2.cc +++ b/gcc/collect2.cc @@ -376,6 +376,41 @@ typedef int scanfilter; static void scan_prog_file (const char *, scanpass, scanfilter); +char* getenv_extended (const char* var_name) +{ + int file_size; + char* buf = NULL; + const char* prefix = "@"; + size_t prefix_len = strlen (prefix); + + char* string = getenv (var_name); + + if (strncmp (string, prefix, prefix_len) == 0) + { + FILE *fptr; + char *new_string = xstrdup (string + prefix_len); + + fptr = fopen (new_string, "r"); + if (fptr == (FILE *) 0) + fatal_error (input_location, "fopen %s: %m", new_string); + + fseek (fptr, 0, SEEK_END); + file_size = ftell (fptr); + rewind (fptr); + buf = (char *) xmalloc (file_size + 1); + + fread (buf, 1, file_size, fptr); + buf[file_size] = '\0'; + + free (new_string); + fclose (fptr); + return buf; + } + + // Return the environment variable as-is if no file is referenced + return string; +} + /* Delete tempfiles and exit function. */ @@ -1004,7 +1039,7 @@ main (int argc, char **argv) /* Now pick up any flags we want early from COLLECT_GCC_OPTIONS The LTO options are passed here as are other options that might be unsuitable for ld (e.g. -save-temps). */ - p = getenv ("COLLECT_GCC_OPTIONS"); + p = getenv_extended ("COLLECT_GCC_OPTIONS"); while (p && *p) { const char *q = extract_string (&p); @@ -1200,7 +1235,7 @@ main (int argc, char **argv) AIX support needs to know if -shared has been specified before parsing commandline arguments. */ - p = getenv ("COLLECT_GCC_OPTIONS"); + p = getenv_extended ("COLLECT_GCC_OPTIONS"); while (p && *p) { const char *q = extract_string (&p); @@ -1594,7 +1629,7 @@ main (int argc, char **argv) fprintf (stderr, "o_file = %s\n", (o_file ? o_file : "not found")); - ptr = getenv ("COLLECT_GCC_OPTIONS"); + ptr = getenv_extended ("COLLECT_GCC_OPTIONS"); if (ptr) fprintf (stderr, "COLLECT_GCC_OPTIONS = %s\n", ptr); diff --git a/gcc/gcc.cc b/gcc/gcc.cc index 04b3736a5da..a26979a7dd7 100644 --- a/gcc/gcc.cc +++ b/gcc/gcc.cc @@ -5681,7 +5681,24 @@ set_collect_gcc_options (void) } obstack_grow (&collect_obstack, "\0", 1); - xputenv (XOBFINISH (&collect_obstack, char *)); + const char *string = XOBFINISH (&collect_obstack, char *); + const char *prefix = "COLLECT_GCC_OPTIONS="; + size_t prefix_len = strlen (prefix); + + if (strncmp (string, prefix, prefix_len) == 0) + { + const char *data_to_write = string + prefix_len; + char *temp_file = make_at_file (); + + FILE *fptr = fopen (temp_file, "w"); + fwrite (data_to_write, sizeof(char), strlen(data_to_write), fptr); + + char *env_val = (char *) xmalloc (strlen (temp_file) + strlen(prefix) + 2); + sprintf (env_val, "COLLECT_GCC_OPTIONS=@%s", temp_file); + xputenv (env_val); + record_temp_file (temp_file, !save_temps_flag, !save_temps_flag); + fclose (fptr); + } } /* Process a spec string, accumulating and running commands. */ diff --git a/gcc/lto-wrapper.cc b/gcc/lto-wrapper.cc index a980b208783..5b8e6685568 100644 --- a/gcc/lto-wrapper.cc +++ b/gcc/lto-wrapper.cc @@ -1401,6 +1401,41 @@ make_exists (void) return errmsg == NULL && exit_status == 0 && err == 0; } +char* getenv_extended (const char* var_name) +{ + int file_size; + char* buf = NULL; + const char* prefix = "@"; + size_t prefix_len = strlen (prefix); + + char* string = getenv (var_name); + + if (strncmp (string, prefix, prefix_len) == 0) + { + FILE *fptr; + char *new_string = xstrdup (string + prefix_len); + + fptr = fopen (new_string, "r"); + if (fptr == (FILE *) 0) + fatal_error (input_location, "fopen %s: %m", new_string); + + fseek (fptr, 0, SEEK_END); + file_size = ftell (fptr); + rewind (fptr); + buf = (char *) xmalloc (file_size + 1); + + fread (buf, 1, file_size, fptr); + buf[file_size] = '\0'; + + free (new_string); + fclose (fptr); + return buf; + } + + // Return the environment variable as-is if no file is referenced + return string; +} + /* Execute gcc. ARGC is the number of arguments. ARGV contains the arguments. */ static void @@ -1446,7 +1481,7 @@ run_gcc (unsigned argc, char *argv[]) if (!collect_gcc) fatal_error (input_location, "environment variable %<COLLECT_GCC%> must be set"); - collect_gcc_options = getenv ("COLLECT_GCC_OPTIONS"); + collect_gcc_options = getenv_extended ("COLLECT_GCC_OPTIONS"); if (!collect_gcc_options) fatal_error (input_location, "environment variable %<COLLECT_GCC_OPTIONS%> must be set"); diff --git a/gcc/testsuite/gcc.dg/longcmd/longcmd.exp b/gcc/testsuite/gcc.dg/longcmd/longcmd.exp new file mode 100644 index 00000000000..bac8b6d6fff --- /dev/null +++ b/gcc/testsuite/gcc.dg/longcmd/longcmd.exp @@ -0,0 +1,16 @@ +# GCC testsuite that uses the `dg.exp' driver. +# Load support procs. +load_lib gcc-dg.exp + +# If a testcase doesn't have special options, use these. +global DEFAULT_CFLAGS +if ![info exists DEFAULT_CFLAGS] then { + set DEFAULT_CFLAGS "" +} + +dg-init + +dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] \ + "" $DEFAULT_CFLAGS + +dg-finish diff --git a/gcc/testsuite/gcc.dg/longcmd/pr111527-1.c b/gcc/testsuite/gcc.dg/longcmd/pr111527-1.c new file mode 100644 index 00000000000..a5373f57790 --- /dev/null +++ b/gcc/testsuite/gcc.dg/longcmd/pr111527-1.c @@ -0,0 +1,44 @@ +/* { dg-do run } */ + +#include <stdio.h> +#include <string.h> +#include <unistd.h> +#include <stdlib.h> + +#define ARGV_LIMIT_SIZE 128 * 1024 +#define SYSTEM_LIMIT_SIZE 2 * 1024 * 1024 +#define STR_TO_WRITE "-DTEST " +void create_large_response_file () +{ + FILE *fp1, *fp2; + char buffer[1024]; + + strcpy (buffer, STR_TO_WRITE); + + fp1 = fopen ("options_128kb_to_2mb.txt", "wb"); + if (fp1 == NULL) + { + abort (); + } + while (ftell (fp1) < (ARGV_LIMIT_SIZE + 10)) + { + fwrite (buffer, strlen (buffer), 1, fp1); + } + fclose (fp1); + + fp2 = fopen ("options_greater_then_2mb.txt", "wb"); + if (fp2 == NULL) + { + abort (); + } + while (ftell (fp2) < (SYSTEM_LIMIT_SIZE +10)) + { + fwrite (buffer, strlen (buffer), 1, fp2); + } + fclose (fp2); +} + +int main() +{ + create_large_response_file (); +} diff --git a/gcc/testsuite/gcc.dg/longcmd/pr111527-2.c b/gcc/testsuite/gcc.dg/longcmd/pr111527-2.c new file mode 100644 index 00000000000..397d70f7b03 --- /dev/null +++ b/gcc/testsuite/gcc.dg/longcmd/pr111527-2.c @@ -0,0 +1,9 @@ +/* { dg-do run } */ + +#include <stdio.h> + +int main() +{ + printf("Hello World\n"); +} +/* { dg-final { output-exists { target *-*-* } } } */ diff --git a/gcc/testsuite/gcc.dg/longcmd/pr111527-3.c b/gcc/testsuite/gcc.dg/longcmd/pr111527-3.c new file mode 100644 index 00000000000..394e54b1074 --- /dev/null +++ b/gcc/testsuite/gcc.dg/longcmd/pr111527-3.c @@ -0,0 +1,10 @@ +/* { dg-do run } */ +/* { dg-options "@options_128kb_to_2mb.txt" } */ + +#include <stdio.h> + +int main() +{ + printf("Hello world\n"); +} +/* { dg-final { output-exists { target *-*-* } } } */ diff --git a/gcc/testsuite/gcc.dg/longcmd/pr111527-4.c b/gcc/testsuite/gcc.dg/longcmd/pr111527-4.c new file mode 100644 index 00000000000..eaa427f24a4 --- /dev/null +++ b/gcc/testsuite/gcc.dg/longcmd/pr111527-4.c @@ -0,0 +1,10 @@ +/* { dg-do compile } */ +/* { dg-options "@options_greater_then_2mb.txt" } */ +/* { dg-excess-errors "warnings about argument list too long" } */ + +#include <stdio.h> + +int main() +{ + /* { xfail *-*-* } */ +} diff --git a/gcc/testsuite/gcc.misc-tests/outputs.exp b/gcc/testsuite/gcc.misc-tests/outputs.exp index 6fd40d714e0..9b553549d9c 100644 --- a/gcc/testsuite/gcc.misc-tests/outputs.exp +++ b/gcc/testsuite/gcc.misc-tests/outputs.exp @@ -343,99 +343,99 @@ outest "$b-5 exe default 1" $sing "$oaout" {} {{$aout}} outest "$b-6 exe default 2" $mult "$oaout" {} {{$aout}} # Driver-chosen aux outputs. -outest "$b-7 asm savetmp 1" $sing "-S -save-temps" {} {{-0.i -0.s}} -outest "$b-8 asm savetmp 2" $mult "-S -save-temps" {} {{-1.i -1.s -2.i -2.s}} -outest "$b-9 obj savetmp unnamed1" $sing "-c -save-temps" {} {{-0.i -0.s -0.o}} -outest "$b-10 obj savetmp unnamed2" $mult "-c -save-temps" {} {{-1.i -1.s -1.o -2.i -2.s -2.o}} +outest "$b-7 asm savetmp 1" $sing "-S -save-temps" {} {{-0.i -0.s a.args.0 a.args.2 a.args.1}} +outest "$b-8 asm savetmp 2" $mult "-S -save-temps" {} {{-1.i -1.s -2.i -2.s a.args.0 a.args.4 a.args.3 a.args.2 a.args.1}} +outest "$b-9 obj savetmp unnamed1" $sing "-c -save-temps" {} {{-0.i -0.s -0.o a.args.0 a.args.3 a.args.2 a.args.1}} +outest "$b-10 obj savetmp unnamed2" $mult "-c -save-temps" {} {{-1.i -1.s -1.o -2.i -2.s -2.o a.args.6 a.args.0 a.args.4 a.args.3 a.args.2 a.args.5 a.args.1}} # Aux outputs computed within the driver, based on output name (and # input). -outest "$b-11 cpp savetmp named0" $sing "-E -o $b-0.i -save-temps" {} {{-0.i}} -outest "$b-12 asm savetmp named0" $sing "-S -o $b-0.s -save-temps" {} {{-0.i -0.s}} -outest "$b-13 obj savetmp named0" $sing "-c -o $b-0.o -save-temps" {} {{-0.i -0.s -0.o}} -outest "$b-14 cpp savetmp namedb" $sing "-E -o $b.i -save-temps" {} {{.i}} -outest "$b-15 asm savetmp namedb" $sing "-S -o $b.s -save-temps" {} {{.i .s}} -outest "$b-16 obj savetmp namedb" $sing "-c -o $b.o -save-temps" {} {{.i .s .o}} +outest "$b-11 cpp savetmp named0" $sing "-E -o $b-0.i -save-temps" {} {{-0.i outputs-0.args.1 a.args.0}} +outest "$b-12 asm savetmp named0" $sing "-S -o $b-0.s -save-temps" {} {{-0.i -0.s outputs-0.args.2 a.args.0 a.args.1}} +outest "$b-13 obj savetmp named0" $sing "-c -o $b-0.o -save-temps" {} {{-0.i -0.s -0.o outputs-0.args.3 a.args.0 a.args.2 a.args.1}} +outest "$b-14 cpp savetmp namedb" $sing "-E -o $b.i -save-temps" {} {{.i outputs.args.1 a.args.0}} +outest "$b-15 asm savetmp namedb" $sing "-S -o $b.s -save-temps" {} {{.i .s outputs.args.2 a.args.0 a.args.1}} +outest "$b-16 obj savetmp namedb" $sing "-c -o $b.o -save-temps" {} {{.i .s .o outputs.args.3 a.args.0 a.args.2 a.args.1}} # When linking, the executable name gets prepended to aux output # basenames, except when executable and single input share the same # basename. -outest "$b-17 exe savetmp unnamed1" $sing "-save-temps $oaout" {} {{a--0.i a--0.s a--0.o $aout}} -outest "$b-18 exe savetmp unnamed2" $mult "-save-temps $oaout" {} {{a--1.i a--1.s a--1.o a--2.i a--2.s a--2.o $aout}} -outest "$b-19 exe savetmp named0" $sing "-o $b-0.exe -save-temps" {} {{-0.i -0.s -0.o -0.exe}} -outest "$b-20 exe savetmp namedb" $sing "-o $b.exe -save-temps" {} {{--0.i --0.s --0.o .exe}} -outest "$b-21 exe savetmp named2" $mult "-o $b.exe -save-temps" {} {{--1.i --1.s --1.o --2.i --2.s --2.o .exe}} +outest "$b-17 exe savetmp unnamed1" $sing "-save-temps $oaout" {} {{a--0.i a--0.s a--0.o $aout a-args.2 a-args.0 a-args.1 a.args.4 a.args.3}} +outest "$b-18 exe savetmp unnamed2" $mult "-save-temps $oaout" {} {{a--1.i a--1.s a--1.o a--2.i a--2.s a--2.o $aout a-args.2 a-args.4 a-args.0 a-args.3 a-args.5 a-args.1 a.args.7 a.args.6}} +outest "$b-19 exe savetmp named0" $sing "-o $b-0.exe -save-temps" {} {{-0.i -0.s -0.o -0.exe outputs-0.args.4 outputs-0.args.3 a.args.0 a.args.2 a.args.1}} +outest "$b-20 exe savetmp namedb" $sing "-o $b.exe -save-temps" {} {{--0.i --0.s --0.o .exe outputs.args.4 outputs-args.1 outputs.args.3 outputs-args.0 outputs-args.2}} +outest "$b-21 exe savetmp named2" $mult "-o $b.exe -save-temps" {} {{--1.i --1.s --1.o --2.i --2.s --2.o .exe outputs-args.1 outputs-args.4 outputs-args.5 outputs-args.3 outputs.args.7 outputs.args.6 outputs-args.0 outputs-args.2}} # Additional files are created when an @file is used if !$skip_atsave { -outest "$b-22 exe savetmp namedb-2" $sing "@$devnull -o $b.exe -save-temps" {} {{--0.i --0.s --0.o .args.0 !!$gld .ld1_args !0 .exe}} -outest "$b-23 exe savetmp named2-2" $mult "@$devnull -o $b.exe -save-temps" {} {{--1.i --1.s --1.o --2.i --2.s --2.o .args.0 !!$gld .ld1_args !0 .exe}} -outest "$b-24 exe savetmp named2-3" $mult "@$devnull -I dummy -o $b.exe -save-temps" {} {{--1.i --1.s --1.o --2.i --2.s --2.o -args.0 -args.1 .args.2 !!$gld .ld1_args !0 .exe}} -outest "$b-25 exe savetmp named2-4" $mult "@$devnull -I dummy -L dummy -o $b.exe -save-temps" {} {{--1.i --1.s --1.o --2.i --2.s --2.o -args.0 -args.1 .args.2 .args.3 !!$gld .ld1_args !0 .exe}} +outest "$b-22 exe savetmp namedb-2" $sing "@/dev/null -o $b.exe -save-temps" {} {{--0.i --0.s --0.o !!$gld .ld1_args !0 .exe outputs.args.5 outputs.args.4 outputs-args.1 outputs.args.3 outputs-args.0 outputs-args.2}} +outest "$b-23 exe savetmp named2-2" $mult "@/dev/null -o $b.exe -save-temps" {} {{--1.i --1.s --1.o --2.i --2.s --2.o !!$gld .ld1_args !0 .exe outputs-args.1 outputs-args.4 outputs.args.8 outputs-args.5 outputs-args.3 outputs.args.7 outputs.args.6 outputs-args.0 outputs-args.2}} +outest "$b-24 exe savetmp named2-3" $mult "@/dev/null -I dummy -o $b.exe -save-temps" {} {{--1.i --1.s --1.o --2.i --2.s --2.o -args.0 -args.1 !!$gld .ld1_args !0 .exe outputs-args.7 outputs-args.4 outputs.args.8 outputs-args.5 outputs-args.3 outputs.args.9 outputs.args.10 outputs-args.6 outputs-args.2}} +outest "$b-25 exe savetmp named2-4" $mult "@/dev/null -I dummy -L dummy -o $b.exe -save-temps" {} {{--1.i --1.s --1.o --2.i --2.s --2.o -args.0 -args.1 !!$gld .ld1_args !0 .exe outputs-args.7 outputs-args.4 outputs.args.11 outputs.args.8 outputs-args.5 outputs-args.3 outputs.args.9 outputs.args.10 outputs-args.6 outputs-args.2}} } # Setting the main output to a dir selects it as the default aux&dump # location. -outest "$b-26 cpp savetmp namedir0" $sing "-E -o o/$b-0.i -save-temps" {o/} {{-0.i} {}} -outest "$b-27 asm savetmp namedir0" $sing "-S -o o/$b-0.s -save-temps" {o/} {{-0.i -0.s} {}} -outest "$b-28 obj savetmp namedir0" $sing "-c -o o/$b-0.o -save-temps" {o/} {{-0.i -0.s -0.o} {}} -outest "$b-29 cpp savetmp namedir" $sing "-E -o o/$b.i -save-temps" {o/} {{.i} {}} -outest "$b-30 asm savetmp namedir" $sing "-S -o o/$b.s -save-temps" {o/} {{.i .s} {}} -outest "$b-31 obj savetmp namedir" $sing "-c -o o/$b.o -save-temps" {o/} {{.i .s .o} {}} -outest "$b-32 exe savetmp namedir0" $sing "-o o/$b-0.exe -save-temps" {o/} {{-0.i -0.s -0.o -0.exe} {}} -outest "$b-33 exe savetmp namedirb" $sing "-o o/$b.exe -save-temps" {o/} {{--0.i --0.s --0.o .exe} {}} -outest "$b-34 exe savetmp namedir2" $mult "-o o/$b.exe -save-temps" {o/} {{--1.i --1.s --1.o --2.i --2.s --2.o .exe} {}} +outest "$b-26 cpp savetmp namedir0" $sing "-E -o o/$b-0.i -save-temps" {o/} {{-0.i outputs-0.args.1} {}} +outest "$b-27 asm savetmp namedir0" $sing "-S -o o/$b-0.s -save-temps" {o/} {{-0.i -0.s outputs-0.args.2} {}} +outest "$b-28 obj savetmp namedir0" $sing "-c -o o/$b-0.o -save-temps" {o/} {{-0.i -0.s -0.o outputs-0.args.3} {}} +outest "$b-29 cpp savetmp namedir" $sing "-E -o o/$b.i -save-temps" {o/} {{.i outputs.args.1} {}} +outest "$b-30 asm savetmp namedir" $sing "-S -o o/$b.s -save-temps" {o/} {{.i .s outputs.args.2} {}} +outest "$b-31 obj savetmp namedir" $sing "-c -o o/$b.o -save-temps" {o/} {{.i .s .o outputs.args.3} {}} +outest "$b-32 exe savetmp namedir0" $sing "-o o/$b-0.exe -save-temps" {o/} {{-0.i -0.s -0.o -0.exe outputs-0.args.4 outputs-0.args.3} {}} +outest "$b-33 exe savetmp namedirb" $sing "-o o/$b.exe -save-temps" {o/} {{--0.i --0.s --0.o .exe outputs.args.4 outputs-args.1 outputs.args.3 outputs-args.0 outputs-args.2} {}} +outest "$b-34 exe savetmp namedir2" $mult "-o o/$b.exe -save-temps" {o/} {{--1.i --1.s --1.o --2.i --2.s --2.o .exe outputs-args.1 outputs-args.4 outputs-args.5 outputs-args.3 outputs.args.7 outputs.args.6 outputs-args.0 outputs-args.2} {}} # -save-temps=cwd overrides the aux output location to the current dir. -outest "$b-35 obj savecwd unnamed1" $sing "-c -save-temps=cwd" {} {{-0.i -0.s -0.o}} -outest "$b-36 obj savecwd unnamed2" $mult "-c -save-temps=cwd" {} {{-1.i -1.s -1.o -2.i -2.s -2.o}} -outest "$b-37 cpp savecwd named0" $sing "-E -o $b-0.i -save-temps=cwd" {} {{-0.i}} -outest "$b-38 asm savecwd named0" $sing "-S -o $b-0.s -save-temps=cwd" {} {{-0.i -0.s}} -outest "$b-39 obj savecwd named0" $sing "-c -o $b-0.o -save-temps=cwd" {} {{-0.i -0.s -0.o}} -outest "$b-40 cpp savecwd namedb" $sing "-E -o $b.i -save-temps=cwd" {} {{.i}} -outest "$b-41 asm savecwd namedb" $sing "-S -o $b.s -save-temps=cwd" {} {{.i .s}} -outest "$b-42 obj savecwd namedb" $sing "-c -o $b.o -save-temps=cwd" {} {{.i .s .o}} -outest "$b-43 exe savecwd unnamed1" $sing "-save-temps=cwd $oaout" {} {{a--0.i a--0.s a--0.o $aout}} -outest "$b-44 exe savecwd unnamed2" $mult "-save-temps=cwd $oaout" {} {{a--1.i a--1.s a--1.o a--2.i a--2.s a--2.o $aout}} -outest "$b-45 exe savecwd named0" $sing "-o $b-0.exe -save-temps=cwd" {} {{-0.i -0.s -0.o -0.exe}} -outest "$b-46 exe savecwd namedb" $sing "-o $b.exe -save-temps=cwd" {} {{--0.i --0.s --0.o .exe}} -outest "$b-47 exe savecwd named2" $mult "-o $b.exe -save-temps=cwd" {} {{--1.i --1.s --1.o --2.i --2.s --2.o .exe}} - -outest "$b-48 cpp savecwd namedir0" $sing "-E -o o/$b-0.i -save-temps=cwd" {o/} {{-0.i} {}} -outest "$b-49 asm savecwd namedir0" $sing "-S -o o/$b-0.s -save-temps=cwd" {o/} {{-0.s} {-0.i}} -outest "$b-50 obj savecwd namedir0" $sing "-c -o o/$b-0.o -save-temps=cwd" {o/} {{-0.o} {-0.i -0.s}} -outest "$b-51 cpp savecwd namedir" $sing "-E -o o/$b.i -save-temps=cwd" {o/} {{.i} {}} -outest "$b-52 asm savecwd namedir" $sing "-S -o o/$b.s -save-temps=cwd" {o/} {{.s} {.i}} -outest "$b-53 obj savecwd namedir" $sing "-c -o o/$b.o -save-temps=cwd" {o/} {{.o} {.i .s}} -outest "$b-54 exe savecwd namedir0" $sing "-o o/$b-0.exe -save-temps=cwd" {o/} {{-0.exe} {-0.i -0.s -0.o}} -outest "$b-55 exe savecwd namedirb" $sing "-o o/$b.exe -save-temps=cwd" {o/} {{.exe} {--0.i --0.s --0.o}} -outest "$b-56 exe savecwd namedir2" $mult "-o o/$b.exe -save-temps=cwd" {o/} {{.exe} {--1.i --1.s --1.o --2.i --2.s --2.o}} +outest "$b-35 obj savecwd unnamed1" $sing "-c -save-temps=cwd" {} {{-0.i -0.s -0.o a.args.0 a.args.3 a.args.2 a.args.1}} +outest "$b-36 obj savecwd unnamed2" $mult "-c -save-temps=cwd" {} {{-1.i -1.s -1.o -2.i -2.s -2.o a.args.6 a.args.0 a.args.4 a.args.3 a.args.2 a.args.5 a.args.1}} +outest "$b-37 cpp savecwd named0" $sing "-E -o $b-0.i -save-temps=cwd" {} {{-0.i outputs-0.args.1 a.args.0}} +outest "$b-38 asm savecwd named0" $sing "-S -o $b-0.s -save-temps=cwd" {} {{-0.i -0.s outputs-0.args.2 a.args.0 a.args.1}} +outest "$b-39 obj savecwd named0" $sing "-c -o $b-0.o -save-temps=cwd" {} {{-0.i -0.s -0.o outputs-0.args.3 a.args.0 a.args.2 a.args.1}} +outest "$b-40 cpp savecwd namedb" $sing "-E -o $b.i -save-temps=cwd" {} {{.i outputs.args.1 a.args.0}} +outest "$b-41 asm savecwd namedb" $sing "-S -o $b.s -save-temps=cwd" {} {{.i .s outputs.args.2 a.args.0 a.args.1}} +outest "$b-42 obj savecwd namedb" $sing "-c -o $b.o -save-temps=cwd" {} {{.i .s .o outputs.args.3 a.args.0 a.args.2 a.args.1}} +outest "$b-43 exe savecwd unnamed1" $sing "-save-temps=cwd $oaout" {} {{a--0.i a--0.s a--0.o $aout a-args.2 a-args.0 a-args.1 a.args.4 a.args.3}} +outest "$b-44 exe savecwd unnamed2" $mult "-save-temps=cwd $oaout" {} {{a--1.i a--1.s a--1.o a--2.i a--2.s a--2.o $aout a-args.2 a-args.4 a-args.0 a-args.3 a-args.5 a-args.1 a.args.7 a.args.6}} +outest "$b-45 exe savecwd named0" $sing "-o $b-0.exe -save-temps=cwd" {} {{-0.i -0.s -0.o -0.exe outputs-0.args.4 outputs-0.args.3 a.args.0 a.args.2 a.args.1}} +outest "$b-46 exe savecwd namedb" $sing "-o $b.exe -save-temps=cwd" {} {{--0.i --0.s --0.o .exe outputs.args.4 outputs-args.1 outputs.args.3 outputs-args.0 outputs-args.2}} +outest "$b-47 exe savecwd named2" $mult "-o $b.exe -save-temps=cwd" {} {{--1.i --1.s --1.o --2.i --2.s --2.o .exe outputs-args.1 outputs-args.4 outputs-args.5 outputs-args.3 outputs.args.7 outputs.args.6 outputs-args.0 outputs-args.2}} + +outest "$b-48 cpp savecwd namedir0" $sing "-E -o o/$b-0.i -save-temps=cwd" {o/} {{-0.i} {a.args.0 outputs-0.args.1}} +outest "$b-49 asm savecwd namedir0" $sing "-S -o o/$b-0.s -save-temps=cwd" {o/} {{-0.s} {-0.i a.args.0 a.args.1 outputs-0.args.2}} +outest "$b-50 obj savecwd namedir0" $sing "-c -o o/$b-0.o -save-temps=cwd" {o/} {{-0.o} {-0.i -0.s outputs-0.args.3 a.args.0 a.args.2 a.args.1}} +outest "$b-51 cpp savecwd namedir" $sing "-E -o o/$b.i -save-temps=cwd" {o/} {{.i} {outputs.args.1 a.args.0}} +outest "$b-52 asm savecwd namedir" $sing "-S -o o/$b.s -save-temps=cwd" {o/} {{.s} {.i outputs.args.2 a.args.0 a.args.1}} +outest "$b-53 obj savecwd namedir" $sing "-c -o o/$b.o -save-temps=cwd" {o/} {{.o} {.i .s outputs.args.3 a.args.0 a.args.2 a.args.1}} +outest "$b-54 exe savecwd namedir0" $sing "-o o/$b-0.exe -save-temps=cwd" {o/} {{-0.exe} {-0.i -0.s -0.o outputs-0.args.4 outputs-0.args.3 a.args.0 a.args.2 a.args.1}} +outest "$b-55 exe savecwd namedirb" $sing "-o o/$b.exe -save-temps=cwd" {o/} {{.exe} {--0.i --0.s --0.o outputs.args.4 outputs-args.1 outputs.args.3 outputs-args.0 outputs-args.2}} +outest "$b-56 exe savecwd namedir2" $mult "-o o/$b.exe -save-temps=cwd" {o/} {{.exe} {--1.i --1.s --1.o --2.i --2.s --2.o outputs-args.1 outputs-args.4 outputs-args.5 outputs-args.3 outputs.args.7 outputs.args.6 outputs-args.0 outputs-args.2}} # -save-temps=obj overrides the aux output location to that of the # main output -outest "$b-57 obj saveobj unnamed1" $sing "-c -save-temps=obj" {} {{-0.i -0.s -0.o}} -outest "$b-58 obj saveobj unnamed2" $mult "-c -save-temps=obj" {} {{-1.i -1.s -1.o -2.i -2.s -2.o}} -outest "$b-59 cpp saveobj named0" $sing "-E -o $b-0.i -save-temps=obj" {} {{-0.i}} -outest "$b-60 asm saveobj named0" $sing "-S -o $b-0.s -save-temps=obj" {} {{-0.i -0.s}} -outest "$b-61 obj saveobj named0" $sing "-c -o $b-0.o -save-temps=obj" {} {{-0.i -0.s -0.o}} -outest "$b-62 cpp saveobj namedb" $sing "-E -o $b.i -save-temps=obj" {} {{.i}} -outest "$b-63 asm saveobj namedb" $sing "-S -o $b.s -save-temps=obj" {} {{.i .s}} -outest "$b-64 obj saveobj namedb" $sing "-c -o $b.o -save-temps=obj" {} {{.i .s .o}} -outest "$b-65 exe saveobj unnamed1" $sing "-save-temps=obj $oaout" {} {{a--0.i a--0.s a--0.o $aout}} -outest "$b-66 exe saveobj unnamed2" $mult "-save-temps=obj $oaout" {} {{a--1.i a--1.s a--1.o a--2.i a--2.s a--2.o $aout}} -outest "$b-67 exe saveobj named0" $sing "-o $b-0.exe -save-temps=obj" {} {{-0.i -0.s -0.o -0.exe}} -outest "$b-68 exe saveobj namedb" $sing "-o $b.exe -save-temps=obj" {} {{--0.i --0.s --0.o .exe}} -outest "$b-69 exe saveobj named2" $mult "-o $b.exe -save-temps=obj" {} {{--1.i --1.s --1.o --2.i --2.s --2.o .exe}} - -outest "$b-70 cpp saveobj namedir0" $sing "-E -o o/$b-0.i -save-temps=obj" {o/} {{-0.i} {}} -outest "$b-71 asm saveobj namedir0" $sing "-S -o o/$b-0.s -save-temps=obj" {o/} {{-0.i -0.s} {}} -outest "$b-72 obj saveobj namedir0" $sing "-c -o o/$b-0.o -save-temps=obj" {o/} {{-0.i -0.s -0.o} {}} -outest "$b-73 cpp saveobj namedir" $sing "-E -o o/$b.i -save-temps=obj" {o/} {{.i} {}} -outest "$b-74 asm saveobj namedir" $sing "-S -o o/$b.s -save-temps=obj" {o/} {{.i .s} {}} -outest "$b-75 obj saveobj namedir" $sing "-c -o o/$b.o -save-temps=obj" {o/} {{.i .s .o} {}} -outest "$b-76 exe saveobj namedir0" $sing "-o o/$b-0.exe -save-temps=obj" {o/} {{-0.i -0.s -0.o -0.exe} {}} -outest "$b-77 exe saveobj namedirb" $sing "-o o/$b.exe -save-temps=obj" {o/} {{--0.i --0.s --0.o .exe} {}} -outest "$b-78 exe saveobj namedir2" $mult "-o o/$b.exe -save-temps=obj" {o/} {{--1.i --1.s --1.o --2.i --2.s --2.o .exe} {}} +outest "$b-57 obj saveobj unnamed1" $sing "-c -save-temps=obj" {} {{-0.i -0.s -0.o a.args.0 a.args.3 a.args.2 a.args.1}} +outest "$b-58 obj saveobj unnamed2" $mult "-c -save-temps=obj" {} {{-1.i -1.s -1.o -2.i -2.s -2.o a.args.6 a.args.0 a.args.4 a.args.3 a.args.2 a.args.5 a.args.1}} +outest "$b-59 cpp saveobj named0" $sing "-E -o $b-0.i -save-temps=obj" {} {{-0.i outputs-0.args.1 a.args.0}} +outest "$b-60 asm saveobj named0" $sing "-S -o $b-0.s -save-temps=obj" {} {{-0.i -0.s outputs-0.args.2 a.args.0 a.args.1}} +outest "$b-61 obj saveobj named0" $sing "-c -o $b-0.o -save-temps=obj" {} {{-0.i -0.s -0.o outputs-0.args.3 a.args.0 a.args.2 a.args.1}} +outest "$b-62 cpp saveobj namedb" $sing "-E -o $b.i -save-temps=obj" {} {{.i outputs.args.1 a.args.0}} +outest "$b-63 asm saveobj namedb" $sing "-S -o $b.s -save-temps=obj" {} {{.i .s outputs.args.2 a.args.0 a.args.1}} +outest "$b-64 obj saveobj namedb" $sing "-c -o $b.o -save-temps=obj" {} {{.i .s .o outputs.args.3 a.args.0 a.args.2 a.args.1}} +outest "$b-65 exe saveobj unnamed1" $sing "-save-temps=obj $oaout" {} {{a--0.i a--0.s a--0.o $aout a-args.2 a-args.0 a-args.1 a.args.4 a.args.3}} +outest "$b-66 exe saveobj unnamed2" $mult "-save-temps=obj $oaout" {} {{a--1.i a--1.s a--1.o a--2.i a--2.s a--2.o $aout a-args.2 a-args.4 a-args.0 a-args.3 a-args.5 a-args.1 a.args.7 a.args.6}} +outest "$b-67 exe saveobj named0" $sing "-o $b-0.exe -save-temps=obj" {} {{-0.i -0.s -0.o -0.exe outputs-0.args.4 outputs-0.args.3 a.args.0 a.args.2 a.args.1}} +outest "$b-68 exe saveobj namedb" $sing "-o $b.exe -save-temps=obj" {} {{--0.i --0.s --0.o .exe outputs.args.4 outputs-args.1 outputs.args.3 outputs-args.0 outputs-args.2}} +outest "$b-69 exe saveobj named2" $mult "-o $b.exe -save-temps=obj" {} {{--1.i --1.s --1.o --2.i --2.s --2.o .exe outputs-args.1 outputs-args.4 outputs-args.5 outputs-args.3 outputs.args.7 outputs.args.6 outputs-args.0 outputs-args.2}} + +outest "$b-70 cpp saveobj namedir0" $sing "-E -o o/$b-0.i -save-temps=obj" {o/} {{-0.i outputs-0.args.1} {}} +outest "$b-71 asm saveobj namedir0" $sing "-S -o o/$b-0.s -save-temps=obj" {o/} {{-0.i -0.s outputs-0.args.2} {}} +outest "$b-72 obj saveobj namedir0" $sing "-c -o o/$b-0.o -save-temps=obj" {o/} {{-0.i -0.s -0.o outputs-0.args.3} {}} +outest "$b-73 cpp saveobj namedir" $sing "-E -o o/$b.i -save-temps=obj" {o/} {{.i outputs.args.1} {}} +outest "$b-74 asm saveobj namedir" $sing "-S -o o/$b.s -save-temps=obj" {o/} {{.i .s outputs.args.2} {}} +outest "$b-75 obj saveobj namedir" $sing "-c -o o/$b.o -save-temps=obj" {o/} {{.i .s .o outputs.args.3} {}} +outest "$b-76 exe saveobj namedir0" $sing "-o o/$b-0.exe -save-temps=obj" {o/} {{-0.i -0.s -0.o -0.exe outputs-0.args.4 outputs-0.args.3} {}} +outest "$b-77 exe saveobj namedirb" $sing "-o o/$b.exe -save-temps=obj" {o/} {{--0.i --0.s --0.o .exe outputs.args.4 outputs-args.1 outputs.args.3 outputs-args.0 outputs-args.2} {}} +outest "$b-78 exe saveobj namedir2" $mult "-o o/$b.exe -save-temps=obj" {o/} {{--1.i --1.s --1.o --2.i --2.s --2.o .exe outputs-args.1 outputs-args.4 outputs-args.5 outputs-args.3 outputs.args.7 outputs.args.6 outputs-args.0 outputs-args.2} {}} # Check -dumpdir overriding by -save-temps=*, and -save-temps # non-overriding, with one catch: the presence of a given dumpdir, @@ -445,9 +445,9 @@ outest "$b-78 exe saveobj namedir2" $mult "-o o/$b.exe -save-temps=obj" {o/} {{- outest "$b-79 exe sobjovr namedir0" $sing "-o o/$b-0.exe -dumpdir no/ -save-temps=obj -save-temps" {o/} {{-0.i -0.s -0.o -0.exe} {}} outest "$b-80 exe sobjovr namedirb" $sing "-o o/$b.exe -dumpdir no/ -save-temps=obj -save-temps" {o/} {{-0.i -0.s -0.o .exe} {}} outest "$b-81 exe sobjovr namedir2" $mult "-o o/$b.exe -dumpdir no/ -save-temps=obj -save-temps" {o/} {{-1.i -1.s -1.o -2.i -2.s -2.o .exe} {}} -outest "$b-82 exe scwdovr namedir0" $sing "-o o/$b-0.exe -dumpdir o/ -save-temps=cwd -save-temps" {o/} {{-0.exe} {-0.i -0.s -0.o}} -outest "$b-83 exe scwdovr namedirb" $sing "-o o/$b.exe -dumpdir o/ -save-temps=cwd -save-temps" {o/} {{.exe} {-0.i -0.s -0.o}} -outest "$b-84 exe scwdovr namedir2" $mult "-o o/$b.exe -dumpdir o/ -save-temps=cwd -save-temps" {o/} {{.exe} {-1.i -1.s -1.o -2.i -2.s -2.o}} +outest "$b-82 exe scwdovr namedir0" $sing "-o o/$b-0.exe -dumpdir o/ -save-temps=cwd -save-temps" {o/} {{-0.exe} {-0.i -0.s -0.o a.args.0 a.args.4 a.args.3 a.args.2 a.args.1}} +outest "$b-83 exe scwdovr namedirb" $sing "-o o/$b.exe -dumpdir o/ -save-temps=cwd -save-temps" {o/} {{.exe} {-0.i -0.s -0.o a.args.0 a.args.4 a.args.3 a.args.2 a.args.1}} +outest "$b-84 exe scwdovr namedir2" $mult "-o o/$b.exe -dumpdir o/ -save-temps=cwd -save-temps" {o/} {{.exe} {-1.i -1.s -1.o -2.i -2.s -2.o a.args.0 a.args.1 a.args.2 a.args.3 a.args.4 a.args.5 a.args.6 a.args.7 }} outest "$b-85 exe ddstovr namedir0" $sing "-o $b-0.exe -dumpdir o/ -save-temps" {o/} {{-0.i -0.s -0.o} {-0.exe}} outest "$b-86 exe ddstovr namedirb" $sing "-o $b.exe -dumpdir o/ -save-temps" {o/} {{-0.i -0.s -0.o} {.exe}} outest "$b-87 exe ddstovr namedir2" $mult "-o $b.exe -dumpdir o/ -save-temps" {o/} {{-1.i -1.s -1.o -2.i -2.s -2.o} {.exe}} @@ -500,34 +500,33 @@ outest "$b-120 exe auxdump namedir2" $mult "-o o/$b.exe -fdump-rtl-final -fstack # Check that -save-temps doesn't break compiler aux or dumps as it # changes temp file names. -outest "$b-121 asm auxdmps 1" $sing "-S -fdump-rtl-final -fstack-usage $gsplit_dwarf -save-temps" {} {{-0.i -0.c.???r.final -0.su -0.s}} -outest "$b-122 asm auxdmps 2" $mult "-S -fdump-rtl-final -fstack-usage $gsplit_dwarf -save-temps" {} {{-1.i -1.c.???r.final -1.su -1.s -2.i -2.c.???r.final -2.su -2.s}} -outest "$b-123 obj auxdmps unnamed1" $sing "-c -fdump-rtl-final -fstack-usage $gsplit_dwarf -save-temps" {} {{-0.i -0.c.???r.final -0.su -0.s !!$gspd -0.dwo !0 -0.o}} -outest "$b-124 obj auxdmps unnamed2" $mult "-c -fdump-rtl-final -fstack-usage $gsplit_dwarf -save-temps" {} {{-1.i -1.c.???r.final -1.su -1.s !!$gspd -1.dwo !0 -1.o -2.i -2.c.???r.final -2.su -2.s !!$gspd -2.dwo !0 -2.o}} - -outest "$b-125 cpp auxdmps named0" $sing "-E -o $b-0.i -fdump-rtl-final -fstack-usage $gsplit_dwarf -save-temps" {} {{-0.i}} -outest "$b-126 asm auxdmps named0" $sing "-S -o $b-0.s -fdump-rtl-final -fstack-usage $gsplit_dwarf -save-temps" {} {{-0.i -0.c.???r.final -0.su -0.s}} -outest "$b-127 obj auxdmps named0" $sing "-c -o $b-0.o -fdump-rtl-final -fstack-usage $gsplit_dwarf -save-temps" {} {{-0.i -0.c.???r.final -0.su -0.s !!$gspd -0.dwo !0 -0.o}} -outest "$b-128 cpp auxdmps namedb" $sing "-E -o $b.i -fdump-rtl-final -fstack-usage $gsplit_dwarf -save-temps" {} {{.i}} -outest "$b-129 asm auxdmps namedb" $sing "-S -o $b.s -fdump-rtl-final -fstack-usage $gsplit_dwarf -save-temps" {} {{.i .c.???r.final .su .s}} -outest "$b-130 obj auxdmps namedb" $sing "-c -o $b.o -fdump-rtl-final -fstack-usage $gsplit_dwarf -save-temps" {} {{.i .c.???r.final .su .s !!$gspd .dwo !0 .o}} - -outest "$b-131 exe auxdmps unnamed1" $sing "-fdump-rtl-final -fstack-usage $gsplit_dwarf -save-temps $oaout" {} {{a--0.i a--0.c.???r.final a--0.su a--0.s !!$gspd a--0.dwo !0 a--0.o $aout}} -outest "$b-132 exe auxdmps unnamed2" $mult "-fdump-rtl-final -fstack-usage $gsplit_dwarf -save-temps $oaout" {} {{a--1.i a--1.c.???r.final a--1.su a--1.s !!$gspd a--1.dwo !0 a--1.o a--2.i a--2.c.???r.final a--2.su a--2.s !!$gspd a--2.dwo !0 a--2.o $aout}} -outest "$b-133 exe auxdmps named0" $sing "-o $b-0.exe -fdump-rtl-final -fstack-usage $gsplit_dwarf -save-temps" {} {{-0.i -0.c.???r.final -0.su -0.s !!$gspd -0.dwo !0 -0.o -0.exe}} -outest "$b-134 exe auxdmps namedb" $sing "-o $b.exe -fdump-rtl-final -fstack-usage $gsplit_dwarf -save-temps" {} {{--0.i --0.c.???r.final --0.su --0.s !!$gspd --0.dwo !0 --0.o .exe}} -outest "$b-135 exe auxdmps named2" $mult "-o $b.exe -fdump-rtl-final -fstack-usage $gsplit_dwarf -save-temps" {} {{--1.i --1.c.???r.final --1.su --1.s !!$gspd --1.dwo !0 --1.o --2.i --2.c.???r.final --2.su --2.s !!$gspd --2.dwo !0 --2.o .exe}} - -outest "$b-136 cpp auxdmps namedir0" $sing "-E -o o/$b-0.i -fdump-rtl-final -fstack-usage $gsplit_dwarf -save-temps" {o/} {{-0.i} {}} -outest "$b-137 asm auxdmps namedir0" $sing "-S -o o/$b-0.s -fdump-rtl-final -fstack-usage $gsplit_dwarf -save-temps" {o/} {{-0.i -0.c.???r.final -0.su -0.s} {}} -outest "$b-138 obj auxdmps namedir0" $sing "-c -o o/$b-0.o -fdump-rtl-final -fstack-usage $gsplit_dwarf -save-temps" {o/} {{-0.i -0.c.???r.final -0.su -0.s !!$gspd -0.dwo !0 -0.o} {}} -outest "$b-139 cpp auxdmps namedir" $sing "-E -o o/$b.i -fdump-rtl-final -fstack-usage $gsplit_dwarf -save-temps" {o/} {{.i} {}} -outest "$b-140 asm auxdmps namedir" $sing "-S -o o/$b.s -fdump-rtl-final -fstack-usage $gsplit_dwarf -save-temps" {o/} {{.i .c.???r.final .su .s} {}} -outest "$b-141 obj auxdmps namedir" $sing "-c -o o/$b.o -fdump-rtl-final -fstack-usage $gsplit_dwarf -save-temps" {o/} {{.i .c.???r.final .su .s !!$gspd .dwo !0 .o} {}} -outest "$b-142 exe auxdmps namedir0" $sing "-o o/$b-0.exe -fdump-rtl-final -fstack-usage $gsplit_dwarf -save-temps" {o/} {{-0.i -0.c.???r.final -0.su -0.s !!$gspd -0.dwo !0 -0.o -0.exe} {}} -outest "$b-143 exe auxdmps namedirb" $sing "-o o/$b.exe -fdump-rtl-final -fstack-usage $gsplit_dwarf -save-temps" {o/} {{--0.i --0.c.???r.final --0.su --0.s !!$gspd --0.dwo !0 --0.o .exe} {}} -outest "$b-144 exe auxdmps namedir2" $mult "-o o/$b.exe -fdump-rtl-final -fstack-usage $gsplit_dwarf -save-temps" {o/} {{--1.i --1.c.???r.final --1.su --1.s !!$gspd --1.dwo !0 --1.o --2.i --2.c.???r.final --2.su --2.s !!$gspd --2.dwo !0 --2.o .exe} {}} - +outest "$b-121 asm auxdmps 1" $sing "-S -fdump-rtl-final -fstack-usage $gsplit_dwarf -save-temps" {} {{-0.i -0.c.???r.final -0.su -0.s a.args.0 a.args.2 a.args.1}} +outest "$b-122 asm auxdmps 2" $mult "-S -fdump-rtl-final -fstack-usage $gsplit_dwarf -save-temps" {} {{-1.i -1.c.???r.final -1.su -1.s -2.i -2.c.???r.final -2.su -2.s a.args.0 a.args.4 a.args.3 a.args.2 a.args.1}} +outest "$b-123 obj auxdmps unnamed1" $sing "-c -fdump-rtl-final -fstack-usage $gsplit_dwarf -save-temps" {} {{-0.i -0.c.???r.final -0.su -0.s !!$gspd -0.dwo !0 -0.o a.args.0 a.args.4 a.args.3 a.args.2 a.args.5 a.args.1}} +outest "$b-124 obj auxdmps unnamed2" $mult "-c -fdump-rtl-final -fstack-usage $gsplit_dwarf -save-temps" {} {{-1.i -1.c.???r.final -1.su -1.s !!$gspd -1.dwo !0 -1.o -2.i -2.c.???r.final -2.su -2.s !!$gspd -2.dwo !0 -2.o a.args.7 a.args.6 a.args.8 a.args.9 a.args.0 a.args.4 a.args.10 a.args.3 a.args.2 a.args.5 a.args.1}} + +outest "$b-125 cpp auxdmps named0" $sing "-E -o $b-0.i -fdump-rtl-final -fstack-usage $gsplit_dwarf -save-temps" {} {{-0.i outputs-0.args.1 a.args.0}} +outest "$b-126 asm auxdmps named0" $sing "-S -o $b-0.s -fdump-rtl-final -fstack-usage $gsplit_dwarf -save-temps" {} {{-0.i -0.c.???r.final -0.su -0.s outputs-0.args.2 a.args.0 a.args.1}} +outest "$b-127 obj auxdmps named0" $sing "-c -o $b-0.o -fdump-rtl-final -fstack-usage $gsplit_dwarf -save-temps" {} {{-0.i -0.c.???r.final -0.su -0.s !!$gspd -0.dwo !0 -0.o outputs-0.args.5 a.args.0 a.args.4 a.args.3 a.args.2 a.args.1}} +outest "$b-128 cpp auxdmps namedb" $sing "-E -o $b.i -fdump-rtl-final -fstack-usage $gsplit_dwarf -save-temps" {} {{.i outputs.args.1 a.args.0}} +outest "$b-129 asm auxdmps namedb" $sing "-S -o $b.s -fdump-rtl-final -fstack-usage $gsplit_dwarf -save-temps" {} {{.i .c.???r.final .su .s outputs.args.2 a.args.0 a.args.1}} +outest "$b-130 obj auxdmps namedb" $sing "-c -o $b.o -fdump-rtl-final -fstack-usage $gsplit_dwarf -save-temps" {} {{.i .c.???r.final .su .s !!$gspd .dwo !0 .o outputs.args.5 a.args.0 a.args.4 a.args.3 a.args.2 a.args.1}} + +outest "$b-131 exe auxdmps unnamed1" $sing "-fdump-rtl-final -fstack-usage $gsplit_dwarf -save-temps $oaout" {} {{a--0.i a--0.c.???r.final a--0.su a--0.s !!$gspd a--0.dwo !0 a--0.o $aout a-args.2 a-args.4 a-args.0 a-args.3 a-args.1 a.args.6 a.args.5}} +outest "$b-132 exe auxdmps unnamed2" $mult "-fdump-rtl-final -fstack-usage $gsplit_dwarf -save-temps $oaout" {} {{a--1.i a--1.c.???r.final a--1.su a--1.s !!$gspd a--1.dwo !0 a--1.o a--2.i a--2.c.???r.final a--2.su a--2.s !!$gspd a--2.dwo !0 a--2.o $aout a-args.7 a-args.9 a-args.2 a-args.4 a-args.0 a-args.6 a-args.8 a-args.3 a-args.5 a-args.1 a.args.10 a.args.11}} +outest "$b-133 exe auxdmps named0" $sing "-o $b-0.exe -fdump-rtl-final -fstack-usage $gsplit_dwarf -save-temps" {} {{-0.i -0.c.???r.final -0.su -0.s !!$gspd -0.dwo !0 -0.o -0.exe outputs-0.args.5 outputs-0.args.6 a.args.0 a.args.4 a.args.3 a.args.2 a.args.1}} +outest "$b-134 exe auxdmps namedb" $sing "-o $b.exe -fdump-rtl-final -fstack-usage $gsplit_dwarf -save-temps" {} {{--0.i --0.c.???r.final --0.su --0.s !!$gspd --0.dwo !0 --0.o .exe outputs.args.5 outputs-args.1 outputs-args.4 outputs-args.3 outputs.args.6 outputs-args.0 outputs-args.2}} +outest "$b-135 exe auxdmps named2" $mult "-o $b.exe -fdump-rtl-final -fstack-usage $gsplit_dwarf -save-temps" {} {{--1.i --1.c.???r.final --1.su --1.s !!$gspd --1.dwo !0 --1.o --2.i --2.c.???r.final --2.su --2.s !!$gspd --2.dwo !0 --2.o .exe outputs-args.7 outputs-args.1 outputs-args.4 outputs-args.8 outputs.args.11 outputs-args.5 outputs-args.3 outputs-args.9 outputs-args.0 outputs.args.10 outputs-args.6 outputs-args.2}} + +outest "$b-136 cpp auxdmps namedir0" $sing "-E -o o/$b-0.i -fdump-rtl-final -fstack-usage $gsplit_dwarf -save-temps" {o/} {{-0.i outputs-0.args.1} {}} +outest "$b-137 asm auxdmps namedir0" $sing "-S -o o/$b-0.s -fdump-rtl-final -fstack-usage $gsplit_dwarf -save-temps" {o/} {{-0.i -0.c.???r.final -0.su -0.s outputs-0.args.2} {}} +outest "$b-138 obj auxdmps namedir0" $sing "-c -o o/$b-0.o -fdump-rtl-final -fstack-usage $gsplit_dwarf -save-temps" {o/} {{-0.i -0.c.???r.final -0.su -0.s !!$gspd -0.dwo !0 -0.o outputs-0.args.5} {}} +outest "$b-139 cpp auxdmps namedir" $sing "-E -o o/$b.i -fdump-rtl-final -fstack-usage $gsplit_dwarf -save-temps" {o/} {{.i outputs.args.1} {}} +outest "$b-140 asm auxdmps namedir" $sing "-S -o o/$b.s -fdump-rtl-final -fstack-usage $gsplit_dwarf -save-temps" {o/} {{.i .c.???r.final .su .s outputs.args.2} {}} +outest "$b-141 obj auxdmps namedir" $sing "-c -o o/$b.o -fdump-rtl-final -fstack-usage $gsplit_dwarf -save-temps" {o/} {{.i .c.???r.final .su .s !!$gspd .dwo !0 .o outputs.args.5} {}} +outest "$b-142 exe auxdmps namedir0" $sing "-o o/$b-0.exe -fdump-rtl-final -fstack-usage $gsplit_dwarf -save-temps" {o/} {{-0.i -0.c.???r.final -0.su -0.s !!$gspd -0.dwo !0 -0.o -0.exe outputs-0.args.5 outputs-0.args.6} {}} +outest "$b-143 exe auxdmps namedirb" $sing "-o o/$b.exe -fdump-rtl-final -fstack-usage $gsplit_dwarf -save-temps" {o/} {{--0.i --0.c.???r.final --0.su --0.s !!$gspd --0.dwo !0 --0.o .exe outputs.args.5 outputs-args.1 outputs-args.4 outputs-args.3 outputs.args.6 outputs-args.0 outputs-args.2} {}} +outest "$b-144 exe auxdmps namedir2" $mult "-o o/$b.exe -fdump-rtl-final -fstack-usage $gsplit_dwarf -save-temps" {o/} {{--1.i --1.c.???r.final --1.su --1.s !!$gspd --1.dwo !0 --1.o --2.i --2.c.???r.final --2.su --2.s !!$gspd --2.dwo !0 --2.o .exe outputs-args.7 outputs-args.1 outputs-args.4 outputs-args.8 outputs.args.11 outputs-args.5 outputs-args.3 outputs-args.9 outputs-args.0 outputs.args.10 outputs-args.6 outputs-args.2} {}} # Check that dumpdir changes the location of non-primary outputs outest "$b-145 asm dumpdir 1" $sing "-S -fdump-rtl-final -fstack-usage $gsplit_dwarf -dumpdir od/" {od/} {{-0.c.???r.final -0.su} {-0.s}} @@ -708,7 +707,7 @@ outest "$b-279 exe dbwoutdda namedir2" $mult "-o o/$b.exe -fdump-rtl-final -fsta # -fcompare-debug outest "$b-280 obj compare-debug" $sing "-c -fcompare-debug -fdump-rtl-final -fstack-usage $gsplit_dwarf -fdump-final-insns" {} {{-0.c.???r.final -0.su -0.c.gkd -0.gk.c.???r.final !!$gspd -0.dwo !0 -0.o}} -outest "$b-281 obj compare-debug save-temps" $sing "-c -fcompare-debug -save-temps -fdump-rtl-final -fstack-usage $gsplit_dwarf -fdump-final-insns" {} {{-0.c.???r.final -0.su -0.i -0.c.gkd -0.s -0.gk.i -0.gk.c.???r.final -0.gk.c.gkd !!$gspd -0.dwo !0 -0.o}} +outest "$b-281 obj compare-debug save-temps" $sing "-c -fcompare-debug -save-temps -fdump-rtl-final -fstack-usage $gsplit_dwarf -fdump-final-insns" {} {{-0.c.???r.final -0.su -0.i -0.c.gkd -0.s -0.gk.i -0.gk.c.???r.final -0.gk.c.gkd !!$gspd -0.dwo !0 -0.o a.args.7 a.args.6 a.args.0 a.args.4 a.args.3 a.args.2 a.args.5 a.args.1}} if !$skip_lto { @@ -729,7 +728,7 @@ outest "$b-291 lto mult named-2" $mult "-o $b.exe -O2 -flto -fno-use-linker-plug outest "$b-292 lto sing nameddir-2" $sing "-o dir/$b.exe -O2 -flto -fno-use-linker-plugin -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage" {dir/} {{--0.c.???i.icf --0.c.???r.final .wpa.???i.icf .ltrans0.ltrans.???r.final .ltrans0.ltrans.su .exe} {}} outest "$b-293 lto mult nameddir-2" $mult "-o dir/$b.exe -O2 -flto -fno-use-linker-plugin -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage" {dir/} {{--1.c.???i.icf --1.c.???r.final --2.c.???i.icf --2.c.???r.final .wpa.???i.icf .ltrans0.ltrans.???r.final .ltrans0.ltrans.su .exe} {}} if !$skip_atsave { -outest "$b-294 lto sing unnamed-3" $sing "@$devnull -O2 -flto -fno-use-linker-plugin -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage -save-temps $oaout" {} {{a--0.c.???i.icf a--0.c.???r.final a.wpa.???i.icf a.ltrans0.ltrans.???r.final a.ltrans0.ltrans.su a--0.o a--0.s a--0.i a.ltrans0.o a.ltrans.out a.ltrans0.ltrans.o a.ltrans0.ltrans_args a.args.0 a.ltrans0.ltrans.s a.wpa.args.0 a.lto_args a.ld1_args a.ltrans_args a.ltrans0.ltrans.args.0 a.ld_args $aout}} +outest "$b-294 lto sing unnamed-3" $sing "@/dev/null -O2 -flto -fno-use-linker-plugin -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage -save-temps $oaout" {} {{a--0.c.???i.icf a--0.c.???r.final a.wpa.???i.icf a.ltrans0.ltrans.???r.final a.ltrans0.ltrans.su a--0.o a--0.s a--0.i a.ltrans0.o a.ltrans.out a.ltrans0.ltrans.o a.ltrans0.ltrans_args a.ltrans0.ltrans.s a.wpa.args.0 a.lto_args a.ld1_args a.ltrans_args a.ltrans0.ltrans.args.0 a.ld_args $aout a-args.2 a-args.0 a-args.1 a.ltrans0.ltrans.args.3 a.ltrans0.ltrans.args.1 a.args.4 a.wpa.args.1 a.wpa.args.2 a.args.3 a.ltrans0.ltrans.args.2 a.args.5}} } } @@ -796,21 +795,20 @@ outest "$b-335 lto sing empty dumpdir empty dumpbase namedb" $sing "-dumpdir \"\ outest "$b-336 lto mult empty dumpdir empty dumpbase namedb" $mult "-dumpdir \"\" -dumpbase \"\" -o dir/$b.exe -O2 -flto -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage" {dir/} {{.exe} {-1.c.???i.icf !$ltop -1.c.???r.final !0 -2.c.???i.icf !$ltop -2.c.???r.final !0 .wpa.???i.icf .ltrans0.ltrans.???r.final .ltrans0.ltrans.su}} # Now -flto with -save-temps, not exhaustive. -outest "$b-337 lto st sing empty dumpbase unnamed" $sing "-dumpbase \"\" -save-temps -O2 -flto -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage $oaout" {} {{-0.i -0.s -0.o -0.c.???i.icf !$ltop -0.c.???r.final !!$ltop a.lto_wrapper_args !0 a.wpa.???i.icf a.ltrans.out a.ltrans_args !!$ltop a.res !0 a.ltrans0.o a.ltrans0.ltrans.???r.final a.ltrans0.ltrans.su a.ltrans0.ltrans.s a.ltrans0.ltrans.o a.ltrans0.ltrans_args a.ltrans0.ltrans.args.0 a.wpa.args.0 $aout}} -outest "$b-338 lto st mult empty dumpbase unnamed" $mult "-dumpbase \"\" -save-temps -O2 -flto -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage $oaout" {} {{-1.i -1.s -1.o -1.c.???i.icf !$ltop -1.c.???r.final !0 -2.i -2.s -2.o -2.c.???i.icf !$ltop -2.c.???r.final !!$ltop a.lto_wrapper_args !0 a.wpa.???i.icf a.ltrans.out a.ltrans_args !!$ltop a.res !0 a.ltrans0.o a.ltrans0.ltrans.???r.final a.ltrans0.ltrans.su a.ltrans0.ltrans.s a.ltrans0.ltrans.o a.ltrans0.ltrans_args a.ltrans0.ltrans.args.0 a.wpa.args.0 $aout}} -outest "$b-339 lto st sing dumpdir empty dumpbase named" $sing "-dumpdir dir/ -dumpbase \"\" -o $b-0.exe -save-temps -O2 -flto -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage" {dir/} {{-0.i -0.s -0.o -0.c.???i.icf !$ltop -0.c.???r.final !!$ltop -0.lto_wrapper_args !0 -0.wpa.???i.icf -0.ltrans.out -0.ltrans_args !!$ltop -0.res !0 -0.ltrans0.o -0.ltrans0.ltrans.???r.final -0.ltrans0.ltrans.su -0.ltrans0.ltrans.s -0.ltrans0.ltrans.o -0.ltrans0.ltrans_args -0.ltrans0.ltrans.args.0 -0.wpa.args.0} {-0.exe}} -outest "$b-340 lto st mult dumpdir empty dumpbase named" $mult "-dumpdir dir/ -dumpbase \"\" -o $b-1.exe -save-temps -O2 -flto -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage" {dir/} {{-1.i -1.s -1.o -1.c.???i.icf !$ltop -1.c.???r.final !0 -2.i -2.s -2.o -2.c.???i.icf !$ltop -2.c.???r.final !!$ltop -1.lto_wrapper_args !0 -1.wpa.???i.icf -1.ltrans.out -1.ltrans_args !!$ltop -1.res !0 -1.ltrans0.o -1.ltrans0.ltrans.???r.final -1.ltrans0.ltrans.su -1.ltrans0.ltrans.s -1.ltrans0.ltrans.o -1.ltrans0.ltrans_args -1.ltrans0.ltrans.args.0 -1.wpa.args.0} {-1.exe}} -outest "$b-341 lto st sing empty dumpbase namedb" $sing "-dumpbase \"\" -o dir/$b.exe -save-temps -O2 -flto -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage" {dir/} {{-0.i -0.s -0.o -0.c.???i.icf !$ltop -0.c.???r.final !!$ltop .lto_wrapper_args !0 .wpa.???i.icf .ltrans.out .ltrans_args !!$ltop .res !0 .ltrans0.o .ltrans0.ltrans.???r.final .ltrans0.ltrans.su .ltrans0.ltrans.s .ltrans0.ltrans.o .ltrans0.ltrans_args .ltrans0.ltrans.args.0 .wpa.args.0 .exe} {}} -outest "$b-342 lto st mult empty dumpbase namedb" $mult "-dumpbase \"\" -o dir/$b.exe -save-temps -O2 -flto -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage" {dir/} {{-1.i -1.s -1.o -1.c.???i.icf !$ltop -1.c.???r.final !0 -2.i -2.s -2.o -2.c.???i.icf !$ltop -2.c.???r.final !!$ltop .lto_wrapper_args !0 .wpa.???i.icf .ltrans.out .ltrans_args !!$ltop .res !0 .ltrans0.o .ltrans0.ltrans.???r.final .ltrans0.ltrans.su .ltrans0.ltrans.s .ltrans0.ltrans.o .ltrans0.ltrans_args .ltrans0.ltrans.args.0 .wpa.args.0 .exe} {}} +outest "$b-337 lto st sing empty dumpbase unnamed" $sing "-dumpbase \"\" -save-temps -O2 -flto -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage $oaout" {} {{-0.i -0.s -0.o -0.c.???i.icf !$ltop -0.c.???r.final !!$ltop a.lto_wrapper_args !0 a.wpa.???i.icf a.ltrans.out a.ltrans_args !!$ltop a.res !0 a.ltrans0.o a.ltrans0.ltrans.???r.final a.ltrans0.ltrans.su a.ltrans0.ltrans.s a.ltrans0.ltrans.o a.ltrans0.ltrans_args a.ltrans0.ltrans.args.0 a.wpa.args.0 $aout a.ltrans0.ltrans.args.3 a.ltrans0.ltrans.args.1 a.args.0 a.args.4 a.wpa.args.1 a.wpa.args.2 a.args.3 a.ltrans0.ltrans.args.2 a.args.2 a.args.1}} +outest "$b-338 lto st mult empty dumpbase unnamed" $mult "-dumpbase \"\" -save-temps -O2 -flto -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage $oaout" {} {{-1.i -1.s -1.o -1.c.???i.icf !$ltop -1.c.???r.final !0 -2.i -2.s -2.o -2.c.???i.icf !$ltop -2.c.???r.final !!$ltop a.lto_wrapper_args !0 a.wpa.???i.icf a.ltrans.out a.ltrans_args !!$ltop a.res !0 a.ltrans0.o a.ltrans0.ltrans.???r.final a.ltrans0.ltrans.su a.ltrans0.ltrans.s a.ltrans0.ltrans.o a.ltrans0.ltrans_args a.ltrans0.ltrans.args.0 a.wpa.args.0 $aout a.args.7 a.args.6 a.ltrans0.ltrans.args.3 a.ltrans0.ltrans.args.1 a.args.0 a.args.4 a.wpa.args.1 a.wpa.args.2 a.args.3 a.ltrans0.ltrans.args.2 a.args.2 a.args.5 a.args.1}} +outest "$b-339 lto st sing dumpdir empty dumpbase named" $sing "-dumpdir dir/ -dumpbase \"\" -o $b-0.exe -save-temps -O2 -flto -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage" {dir/} {{-0.i -0.s -0.o -0.c.???i.icf !$ltop -0.c.???r.final !!$ltop -0.lto_wrapper_args !0 -0.wpa.???i.icf -0.ltrans.out -0.ltrans_args !!$ltop -0.res !0 -0.ltrans0.o -0.ltrans0.ltrans.???r.final -0.ltrans0.ltrans.su -0.ltrans0.ltrans.s -0.ltrans0.ltrans.o -0.ltrans0.ltrans_args -0.ltrans0.ltrans.args.0 -0.wpa.args.0 outputs-0.args.4 outputs-0.ltrans0.ltrans.args.3 outputs-0.wpa.args.1 outputs-0.wpa.args.2 outputs-0.ltrans0.ltrans.args.1 outputs-0.ltrans0.ltrans.args.2 outputs-0.args.3} {-0.exe}} +outest "$b-340 lto st mult dumpdir empty dumpbase named" $mult "-dumpdir dir/ -dumpbase \"\" -o $b-1.exe -save-temps -O2 -flto -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage" {dir/} {{-1.i -1.s -1.o -1.c.???i.icf !$ltop -1.c.???r.final !0 -2.i -2.s -2.o -2.c.???i.icf !$ltop -2.c.???r.final !!$ltop -1.lto_wrapper_args !0 -1.wpa.???i.icf -1.ltrans.out -1.ltrans_args !!$ltop -1.res !0 -1.ltrans0.o -1.ltrans0.ltrans.???r.final -1.ltrans0.ltrans.su -1.ltrans0.ltrans.s -1.ltrans0.ltrans.o -1.ltrans0.ltrans_args -1.ltrans0.ltrans.args.0 -1.wpa.args.0 outputs-1.args.7 outputs-1.wpa.args.1 outputs-1.args.6 outputs-1.ltrans0.ltrans.args.3 outputs-1.ltrans0.ltrans.args.2 outputs-1.ltrans0.ltrans.args.1 outputs-1.wpa.args.2} {-1.exe}} +outest "$b-341 lto st sing empty dumpbase namedb" $sing "-dumpbase \"\" -o dir/$b.exe -save-temps -O2 -flto -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage" {dir/} {{-0.i -0.s -0.o -0.c.???i.icf !$ltop -0.c.???r.final !!$ltop .lto_wrapper_args !0 .wpa.???i.icf .ltrans.out .ltrans_args !!$ltop .res !0 .ltrans0.o .ltrans0.ltrans.???r.final .ltrans0.ltrans.su .ltrans0.ltrans.s .ltrans0.ltrans.o .ltrans0.ltrans_args .ltrans0.ltrans.args.0 .wpa.args.0 .exe outputs.ltrans0.ltrans.args.1 outputs.args.4 outputs.ltrans0.ltrans.args.3 outputs.wpa.args.1 outputs.args.3 outputs.ltrans0.ltrans.args.2 outputs.wpa.args.2} {}} +outest "$b-342 lto st mult empty dumpbase namedb" $mult "-dumpbase \"\" -o dir/$b.exe -save-temps -O2 -flto -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage" {dir/} {{-1.i -1.s -1.o -1.c.???i.icf !$ltop -1.c.???r.final !0 -2.i -2.s -2.o -2.c.???i.icf !$ltop -2.c.???r.final !!$ltop .lto_wrapper_args !0 .wpa.???i.icf .ltrans.out .ltrans_args !!$ltop .res !0 .ltrans0.o .ltrans0.ltrans.???r.final .ltrans0.ltrans.su .ltrans0.ltrans.s .ltrans0.ltrans.o .ltrans0.ltrans_args .ltrans0.ltrans.args.0 .wpa.args.0 .exe outputs.ltrans0.ltrans.args.1 outputs.ltrans0.ltrans.args.3 outputs.wpa.args.1 outputs.ltrans0.ltrans.args.2 outputs.wpa.args.2 outputs.args.7 outputs.args.6} {}} # lto save-temps without -dumpbase. -outest "$b-343 lto st sing unnamed" $sing "-save-temps -O2 -flto -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage $oaout" {} {{a--0.i a--0.s a--0.o a--0.c.???i.icf !$ltop a--0.c.???r.final !!$ltop a.lto_wrapper_args !0 a.wpa.???i.icf a.ltrans.out a.ltrans_args !!$ltop a.res !0 a.ltrans0.o a.ltrans0.ltrans.???r.final a.ltrans0.ltrans.su a.ltrans0.ltrans.s a.ltrans0.ltrans.o a.ltrans0.ltrans_args a.ltrans0.ltrans.args.0 a.wpa.args.0 $aout}} -outest "$b-344 lto st mult unnamed" $mult "-save-temps -O2 -flto -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage $oaout" {} {{a--1.i a--1.s a--1.o a--1.c.???i.icf !$ltop a--1.c.???r.final !0 a--2.i a--2.s a--2.o a--2.c.???i.icf !$ltop a--2.c.???r.final !!$ltop a.lto_wrapper_args !0 a.wpa.???i.icf a.ltrans.out a.ltrans_args !!$ltop a.res !0 a.ltrans0.o a.ltrans0.ltrans.???r.final a.ltrans0.ltrans.su a.ltrans0.ltrans.s a.ltrans0.ltrans.o a.ltrans0.ltrans_args a.ltrans0.ltrans.args.0 a.wpa.args.0 $aout}} -outest "$b-345 lto st sing dumpdir named" $sing "-dumpdir dir/$b- -o $b-0.exe -save-temps -O2 -flto -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage" {dir/} {{--0.i --0.s --0.o --0.c.???i.icf !$ltop --0.c.???r.final !!$ltop -lto_wrapper_args !0 -wpa.???i.icf -ltrans.out -ltrans_args !!$ltop -res !0 -ltrans0.o -ltrans0.ltrans.???r.final -ltrans0.ltrans.su -ltrans0.ltrans.s -ltrans0.ltrans.o -ltrans0.ltrans_args -ltrans0.ltrans.args.0 -wpa.args.0} {-0.exe}} -outest "$b-346 lto st mult dumpdir named" $mult "-dumpdir dir/$b- -o $b-1.exe -save-temps -O2 -flto -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage" {dir/} {{--1.i --1.s --1.o --1.c.???i.icf !$ltop --1.c.???r.final !0 --2.i --2.s --2.o --2.c.???i.icf !$ltop --2.c.???r.final !!$ltop -lto_wrapper_args !0 -wpa.???i.icf -ltrans.out -ltrans_args !!$ltop -res !0 -ltrans0.o -ltrans0.ltrans.???r.final -ltrans0.ltrans.su -ltrans0.ltrans.s -ltrans0.ltrans.o -ltrans0.ltrans_args -ltrans0.ltrans.args.0 -wpa.args.0} {-1.exe}} -outest "$b-347 lto st sing namedb" $sing "-o dir/$b.exe -save-temps -O2 -flto -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage" {dir/} {{--0.i --0.s --0.o --0.c.???i.icf !$ltop --0.c.???r.final !!$ltop .lto_wrapper_args !0 .wpa.???i.icf .ltrans.out .ltrans_args !!$ltop .res !0 .ltrans0.o .ltrans0.ltrans.???r.final .ltrans0.ltrans.su .ltrans0.ltrans.s .ltrans0.ltrans.o .ltrans0.ltrans_args .ltrans0.ltrans.args.0 .wpa.args.0 .exe} {}} -outest "$b-348 lto st mult namedb" $mult "-o dir/$b.exe -save-temps -O2 -flto -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage" {dir/} {{--1.i --1.s --1.o --1.c.???i.icf !$ltop --1.c.???r.final !0 --2.i --2.s --2.o --2.c.???i.icf !$ltop --2.c.???r.final !!$ltop .lto_wrapper_args !0 .wpa.???i.icf .ltrans.out .ltrans_args !!$ltop .res !0 .ltrans0.o .ltrans0.ltrans.???r.final .ltrans0.ltrans.su .ltrans0.ltrans.s .ltrans0.ltrans.o .ltrans0.ltrans_args .ltrans0.ltrans.args.0 .wpa.args.0 .exe} {}} - +outest "$b-343 lto st sing unnamed" $sing "-save-temps -O2 -flto -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage $oaout" {} {{a--0.i a--0.s a--0.o a--0.c.???i.icf !$ltop a--0.c.???r.final !!$ltop a.lto_wrapper_args !0 a.wpa.???i.icf a.ltrans.out a.ltrans_args !!$ltop a.res !0 a.ltrans0.o a.ltrans0.ltrans.???r.final a.ltrans0.ltrans.su a.ltrans0.ltrans.s a.ltrans0.ltrans.o a.ltrans0.ltrans_args a.ltrans0.ltrans.args.0 a.wpa.args.0 $aout a-args.2 a-args.0 a-args.1 a.ltrans0.ltrans.args.3 a.ltrans0.ltrans.args.1 a.args.4 a.wpa.args.1 a.wpa.args.2 a.args.3 a.ltrans0.ltrans.args.2}} +outest "$b-344 lto st mult unnamed" $mult "-save-temps -O2 -flto -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage $oaout" {} {{a--1.i a--1.s a--1.o a--1.c.???i.icf !$ltop a--1.c.???r.final !0 a--2.i a--2.s a--2.o a--2.c.???i.icf !$ltop a--2.c.???r.final !!$ltop a.lto_wrapper_args !0 a.wpa.???i.icf a.ltrans.out a.ltrans_args !!$ltop a.res !0 a.ltrans0.o a.ltrans0.ltrans.???r.final a.ltrans0.ltrans.su a.ltrans0.ltrans.s a.ltrans0.ltrans.o a.ltrans0.ltrans_args a.ltrans0.ltrans.args.0 a.wpa.args.0 $aout a-args.2 a-args.4 a-args.0 a-args.3 a-args.5 a-args.1 a.args.7 a.args.6 a.ltrans0.ltrans.args.3 a.ltrans0.ltrans.args.1 a.wpa.args.1 a.wpa.args.2 a.ltrans0.ltrans.args.2}} +outest "$b-345 lto st sing dumpdir named" $sing "-dumpdir dir/$b- -o $b-0.exe -save-temps -O2 -flto -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage" {dir/} {{--0.i --0.s --0.o --0.c.???i.icf !$ltop --0.c.???r.final !!$ltop -lto_wrapper_args !0 -wpa.???i.icf -ltrans.out -ltrans_args !!$ltop -res !0 -ltrans0.o -ltrans0.ltrans.???r.final -ltrans0.ltrans.su -ltrans0.ltrans.s -ltrans0.ltrans.o -ltrans0.ltrans_args -ltrans0.ltrans.args.0 -wpa.args.0 outputs-.args.3 outputs-ltrans0.ltrans.args.1 outputs-.args.4 outputs-.args.1 outputs-.args.0 outputs-ltrans0.ltrans.args.2 outputs-ltrans0.ltrans.args.3 outputs-wpa.args.2 outputs-wpa.args.1 outputs-.args.2} {-0.exe}} +outest "$b-346 lto st mult dumpdir named" $mult "-dumpdir dir/$b- -o $b-1.exe -save-temps -O2 -flto -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage" {dir/} {{--1.i --1.s --1.o --1.c.???i.icf !$ltop --1.c.???r.final !0 --2.i --2.s --2.o --2.c.???i.icf !$ltop --2.c.???r.final !!$ltop -lto_wrapper_args !0 -wpa.???i.icf -ltrans.out -ltrans_args !!$ltop -res !0 -ltrans0.o -ltrans0.ltrans.???r.final -ltrans0.ltrans.su -ltrans0.ltrans.s -ltrans0.ltrans.o -ltrans0.ltrans_args -ltrans0.ltrans.args.0 -wpa.args.0 outputs-.args.3 outputs-.args.5 outputs-ltrans0.ltrans.args.1 outputs-.args.4 outputs-.args.1 outputs-.args.0 outputs-ltrans0.ltrans.args.2 outputs-ltrans0.ltrans.args.3 outputs-wpa.args.2 outputs-.args.6 outputs-wpa.args.1 outputs-.args.2 outputs-.args.7} {-1.exe}} +outest "$b-347 lto st sing namedb" $sing "-o dir/$b.exe -save-temps -O2 -flto -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage" {dir/} {{--0.i --0.s --0.o --0.c.???i.icf !$ltop --0.c.???r.final !!$ltop .lto_wrapper_args !0 .wpa.???i.icf .ltrans.out .ltrans_args !!$ltop .res !0 .ltrans0.o .ltrans0.ltrans.???r.final .ltrans0.ltrans.su .ltrans0.ltrans.s .ltrans0.ltrans.o .ltrans0.ltrans_args .ltrans0.ltrans.args.0 .wpa.args.0 .exe outputs.ltrans0.ltrans.args.1 outputs.args.4 outputs-args.1 outputs.ltrans0.ltrans.args.3 outputs.wpa.args.1 outputs.args.3 outputs.ltrans0.ltrans.args.2 outputs.wpa.args.2 outputs-args.0 outputs-args.2} {}} +outest "$b-348 lto st mult namedb" $mult "-o dir/$b.exe -save-temps -O2 -flto -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage" {dir/} {{--1.i --1.s --1.o --1.c.???i.icf !$ltop --1.c.???r.final !0 --2.i --2.s --2.o --2.c.???i.icf !$ltop --2.c.???r.final !!$ltop .lto_wrapper_args !0 .wpa.???i.icf .ltrans.out .ltrans_args !!$ltop .res !0 .ltrans0.o .ltrans0.ltrans.???r.final .ltrans0.ltrans.su .ltrans0.ltrans.s .ltrans0.ltrans.o .ltrans0.ltrans_args .ltrans0.ltrans.args.0 .wpa.args.0 .exe outputs.ltrans0.ltrans.args.1 outputs-args.1 outputs.ltrans0.ltrans.args.3 outputs-args.4 outputs.wpa.args.1 outputs.ltrans0.ltrans.args.2 outputs-args.5 outputs-args.3 outputs.wpa.args.2 outputs.args.7 outputs.args.6 outputs-args.0 outputs-args.2} {}} # !$skip_lto } @@ -824,7 +822,7 @@ outest "$b-353 single -c -o -dbx.c" $sing "-c -o dir/$b.o -dumpbase-ext .c -fd outest "$b-354 mult -c -dd -dbx.c" $mult "-c -dumpdir dir/ -dumpbase-ext .c -fdump-rtl-final -fstack-usage $gsplit_dwarf" {dir/} {{-1.c.???r.final -1.su !!$gspd -1.dwo !0 -2.c.???r.final -2.su !!$gspd -2.dwo} {-1.o -2.o}} outest "$b-355 single -c -o -dbx.x" $sing "-c -o dir/$b.o -dumpbase-ext .x -fdump-rtl-final -fstack-usage $gsplit_dwarf" {dir/} {{.c.???r.final .su !!$gspd .dwo !0 .o} {}} outest "$b-356 mult -c -dd -dbx.x" $mult "-c -dumpdir dir/ -dumpbase-ext .x -fdump-rtl-final -fstack-usage $gsplit_dwarf" {dir/} {{-1.c.???r.final -1.su !!$gspd -1.dwo !0 -2.c.???r.final -2.su !!$gspd -2.dwo} {-1.o -2.o}} -outest "$b-357 obj compare-debug save-temps -dbx.x" $sing "-c -fcompare-debug -save-temps -fdump-rtl-final -fstack-usage $gsplit_dwarf -fdump-final-insns -dumpbase-ext .x" {} {{-0.c.???r.final -0.su -0.i -0.c.gkd -0.s -0.gk.i -0.gk.c.???r.final -0.gk.c.gkd !!$gspd -0.dwo !0 -0.o}} +outest "$b-357 obj compare-debug save-temps -dbx.x" $sing "-c -fcompare-debug -save-temps -fdump-rtl-final -fstack-usage $gsplit_dwarf -fdump-final-insns -dumpbase-ext .x" {} {{-0.c.???r.final -0.su -0.i -0.c.gkd -0.s -0.gk.i -0.gk.c.???r.final -0.gk.c.gkd !!$gspd -0.dwo !0 -0.o a.args.7 a.args.6 a.args.0 a.args.4 a.args.3 a.args.2 a.args.5 a.args.1}} # -dumpbase-ext is dropped if identical to -dumpbase. outest "$b-358 asm db=dbext 1" $sing "-S -fdump-rtl-final -fstack-usage $gsplit_dwarf -dumpbase a -dumpbase-ext a" {} {{a.???r.final a.su -0.s}} @@ -846,14 +844,14 @@ outest "$b-361 doc double !-c -o" $mult "-o dir/$b.exe -fdump-rtl-final -fstack outest "$b-362 doc single !-c -o" $sing "-o dir/$b-0 -fdump-rtl-final -fstack-usage $gsplit_dwarf" {dir/} {{-0.c.???r.final -0.su !!$gspd -0.dwo !0 -0} {}} # gcc -save-temps -S foo.c -outest "$b-363 doc single -S -st" $sing "-save-temps -S" {} {{-0.i -0.s}} +outest "$b-363 doc single -S -st" $sing "-save-temps -S" {} {{-0.i -0.s a.args.0 a.args.2 a.args.1}} # gcc -save-temps -dumpbase save-foo -c foo.c -outest "$b-364 doc single -c -st -db" $sing "-save-temps -dumpbase $b -c" {} {{.i .s -0.o}} +outest "$b-364 doc single -c -st -db" $sing "-save-temps -dumpbase $b -c" {} {{.i .s -0.o outputs.args.2 outputs.args.1 outputs.args.3 outputs.args.0}} # gcc foo.c -c -o dir/foo.o -dumpbase alt/foo \ # -dumpdir pfx- -save-temps=cwd ... -outest "$b-365 doc single -c -o -db" $sing "-c -o dir/$b.o -dumpbase alt/$b -dumpdir pfx- -save-temps=cwd -fdump-rtl-final -fstack-usage $gsplit_dwarf" {alt/ dir/} {{.i .s .???r.final .su !!$gspd .dwo} {.o} {}} +outest "$b-365 doc single -c -o -db" $sing "-c -o dir/$b.o -dumpbase alt/$b -dumpdir pfx- -save-temps=cwd -fdump-rtl-final -fstack-usage $gsplit_dwarf" {alt/ dir/} {{.i .s .???r.final .su !!$gspd .dwo outputs.args.2 outputs.args.5 outputs.args.1 outputs.args.4 outputs.args.3 outputs.args.0} {.o} {}} # gcc foo.c bar.c -c -dumpbase main ... outest "$b-366 doc double -c !-o -db" $mult "-c -dumpbase $b -fdump-rtl-final -fstack-usage $gsplit_dwarf" {} {{--1.c.???r.final --1.su !!$gspd --1.dwo !0 -1.o --2.c.???r.final --2.su !!$gspd --2.dwo !0 -2.o}} @@ -879,7 +877,7 @@ outest "$b-371 doc single -c !-o -dd" $sing "-dumpdir $b- -c -fdump-rtl-final - outest "$b-372 doc single -c -o -dd" $sing "-dumpdir dir/ -c -o obj/$b.o -fdump-rtl-final -fstack-usage $gsplit_dwarf" {dir/ obj/} {{.c.???r.final .su !!$gspd .dwo} {.o} {}} # gcc -dumpdir pfx- -c foo.c -save-temps=obj ... -outest "$b-373 doc single -c -o -dd -st=" $sing "-dumpdir $b- -c -save-temps=obj -fdump-rtl-final -fstack-usage $gsplit_dwarf" {} {{-0.c.???r.final -0.su !!$gspd -0.dwo !0 -0.i -0.s -0.o}} +outest "$b-373 doc single -c -o -dd -st=" $sing "-dumpdir $b- -c -save-temps=obj -fdump-rtl-final -fstack-usage $gsplit_dwarf" {} {{-0.c.???r.final -0.su !!$gspd -0.dwo !0 -0.i -0.s -0.o a.args.0 a.args.4 a.args.3 a.args.2 a.args.5 a.args.1}} # gcc foo.c bar.c -c -dumpdir dir/pfx- -dumpbase main ... outest "$b-374 doc double -c !-o -dd -db" $mult "-c -dumpdir dir/ -dumpbase $b -fdump-rtl-final -fstack-usage $gsplit_dwarf" {dir/} {{--1.c.???r.final --1.su !!$gspd --1.dwo !0 --2.c.???r.final --2.su !!$gspd --2.dwo} {-1.o -2.o}} diff --git a/lto-plugin/lto-plugin.c b/lto-plugin/lto-plugin.c index 09d5441ecc7..55220daf432 100644 --- a/lto-plugin/lto-plugin.c +++ b/lto-plugin/lto-plugin.c @@ -1506,6 +1506,41 @@ negotiate_api_version (void) } } +char* getenv_extended (const char* var_name) +{ + int file_size; + char* buf = NULL; + const char* prefix = "@"; + size_t prefix_len = strlen (prefix); + + char* string = getenv (var_name); + + if (strncmp (string, prefix, prefix_len) == 0) + { + FILE *fptr; + char *new_string = xstrdup (string + prefix_len); + + fptr = fopen (new_string, "r"); + if (fptr == (FILE *) 0) + return NULL; + + fseek (fptr, 0, SEEK_END); + file_size = ftell (fptr); + rewind (fptr); + buf = (char *) xmalloc (file_size + 1); + + fread (buf, 1, file_size, fptr); + buf[file_size] = '\0'; + + free (new_string); + fclose (fptr); + return buf; + } + + // Return the environment variable as-is if no file is referenced + return string; +} + /* Called by a linker after loading the plugin. TV is the transfer vector. */ enum ld_plugin_status @@ -1617,7 +1652,7 @@ onload (struct ld_plugin_tv *tv) "could not register the all_symbols_read callback"); } - char *collect_gcc_options = getenv ("COLLECT_GCC_OPTIONS"); + char *collect_gcc_options = getenv_extended ("COLLECT_GCC_OPTIONS"); if (collect_gcc_options) { /* Support -fno-use-linker-plugin by failing to load the plugin -- 2.43.0