Message ID | 20240502163716.1107975-4-adhemerval.zanella@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | More tunable fixes | expand |
On 2024-05-02 12:35, Adhemerval Zanella wrote: > So tests can specific a list of environment variables. > --- The commit typo Joe pointed in v1 still exists ^^ s/specific/specify/. LGTM otherwise, please fix up the commit message before pushing. Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org> > elf/tst-audit18.c | 2 +- > elf/tst-audit19b.c | 2 +- > elf/tst-audit22.c | 2 +- > elf/tst-audit23.c | 2 +- > elf/tst-audit25a.c | 4 ++-- > elf/tst-audit25b.c | 4 ++-- > elf/tst-glibc-hwcaps-2-cache.c | 2 +- > elf/tst-rtld-run-static.c | 4 ++-- > elf/tst-tunables-enable_secure.c | 2 +- > elf/tst-tunables.c | 2 +- > support/capture_subprocess.h | 9 +++++---- > support/subprocess.h | 7 ++++--- > support/support_capture_subprocess.c | 5 +++-- > support/support_subprocess.c | 5 +++-- > support/tst-support_capture_subprocess.c | 2 +- > sysdeps/x86/tst-hwcap-tunables.c | 2 +- > 16 files changed, 30 insertions(+), 26 deletions(-) > > diff --git a/elf/tst-audit18.c b/elf/tst-audit18.c > index 841251dd70..cec93e269c 100644 > --- a/elf/tst-audit18.c > +++ b/elf/tst-audit18.c > @@ -79,7 +79,7 @@ do_test (int argc, char *argv[]) > > setenv ("LD_AUDIT", "tst-auditmod18.so", 0); > struct support_capture_subprocess result > - = support_capture_subprogram (spargv[0], spargv); > + = support_capture_subprogram (spargv[0], spargv, NULL); > support_capture_subprocess_check (&result, "tst-audit18", 0, sc_allow_stderr); > > struct > diff --git a/elf/tst-audit19b.c b/elf/tst-audit19b.c > index 70bfe4eadf..88d99a416b 100644 > --- a/elf/tst-audit19b.c > +++ b/elf/tst-audit19b.c > @@ -69,7 +69,7 @@ do_test (int argc, char *argv[]) > > setenv ("LD_AUDIT", "tst-auditmod18b.so", 0); > struct support_capture_subprocess result > - = support_capture_subprogram (spargv[0], spargv); > + = support_capture_subprogram (spargv[0], spargv, NULL); > support_capture_subprocess_check (&result, "tst-audit18b", 0, sc_allow_stderr); > > bool find_symbind = false; > diff --git a/elf/tst-audit22.c b/elf/tst-audit22.c > index 4e97be3be0..6aa18af948 100644 > --- a/elf/tst-audit22.c > +++ b/elf/tst-audit22.c > @@ -83,7 +83,7 @@ do_test (int argc, char *argv[]) > > setenv ("LD_AUDIT", "tst-auditmod22.so", 0); > struct support_capture_subprocess result > - = support_capture_subprogram (spargv[0], spargv); > + = support_capture_subprogram (spargv[0], spargv, NULL); > support_capture_subprocess_check (&result, "tst-audit22", 0, sc_allow_stderr); > > /* The respawned process should always print the vDSO address (otherwise it > diff --git a/elf/tst-audit23.c b/elf/tst-audit23.c > index 32e7c8b2a3..d2640fe8b2 100644 > --- a/elf/tst-audit23.c > +++ b/elf/tst-audit23.c > @@ -82,7 +82,7 @@ do_test (int argc, char *argv[]) > > setenv ("LD_AUDIT", "tst-auditmod23.so", 0); > struct support_capture_subprocess result > - = support_capture_subprogram (spargv[0], spargv); > + = support_capture_subprogram (spargv[0], spargv, NULL); > support_capture_subprocess_check (&result, "tst-audit22", 0, sc_allow_stderr); > > /* The expected la_objopen/la_objclose: > diff --git a/elf/tst-audit25a.c b/elf/tst-audit25a.c > index b209ee820f..cdd4f2ce2b 100644 > --- a/elf/tst-audit25a.c > +++ b/elf/tst-audit25a.c > @@ -77,7 +77,7 @@ do_test (int argc, char *argv[]) > > { > struct support_capture_subprocess result > - = support_capture_subprogram (spargv[0], spargv); > + = support_capture_subprogram (spargv[0], spargv, NULL); > support_capture_subprocess_check (&result, "tst-audit25a", 0, > sc_allow_stderr); > > @@ -102,7 +102,7 @@ do_test (int argc, char *argv[]) > { > setenv ("LD_BIND_NOW", "1", 0); > struct support_capture_subprocess result > - = support_capture_subprogram (spargv[0], spargv); > + = support_capture_subprogram (spargv[0], spargv, NULL); > support_capture_subprocess_check (&result, "tst-audit25a", 0, > sc_allow_stderr); > > diff --git a/elf/tst-audit25b.c b/elf/tst-audit25b.c > index 9b8665d517..939f4d6188 100644 > --- a/elf/tst-audit25b.c > +++ b/elf/tst-audit25b.c > @@ -76,7 +76,7 @@ do_test (int argc, char *argv[]) > > { > struct support_capture_subprocess result > - = support_capture_subprogram (spargv[0], spargv); > + = support_capture_subprogram (spargv[0], spargv, NULL); > support_capture_subprocess_check (&result, "tst-audit25a", 0, > sc_allow_stderr); > > @@ -102,7 +102,7 @@ do_test (int argc, char *argv[]) > { > setenv ("LD_BIND_NOW", "1", 0); > struct support_capture_subprocess result > - = support_capture_subprogram (spargv[0], spargv); > + = support_capture_subprogram (spargv[0], spargv, NULL); > support_capture_subprocess_check (&result, "tst-audit25a", 0, > sc_allow_stderr); > > diff --git a/elf/tst-glibc-hwcaps-2-cache.c b/elf/tst-glibc-hwcaps-2-cache.c > index 81ab44ff78..af91476cca 100644 > --- a/elf/tst-glibc-hwcaps-2-cache.c > +++ b/elf/tst-glibc-hwcaps-2-cache.c > @@ -32,7 +32,7 @@ main (int argc, char **argv) > /* Run ldconfig to populate the cache. */ > char *command = xasprintf ("%s/ldconfig", support_install_rootsbindir); > struct support_capture_subprocess result = > - support_capture_subprogram (command, &((char *) { NULL })); > + support_capture_subprogram (command, &((char *) { NULL }), NULL); > support_capture_subprocess_check (&result, "ldconfig", 0, sc_allow_none); > free (command); > > diff --git a/elf/tst-rtld-run-static.c b/elf/tst-rtld-run-static.c > index b2650e85ff..f05c00eb7b 100644 > --- a/elf/tst-rtld-run-static.c > +++ b/elf/tst-rtld-run-static.c > @@ -30,7 +30,7 @@ do_test (void) > { > char *argv[] = { (char *) "ld.so", ldconfig_path, (char *) "--help", NULL }; > struct support_capture_subprocess cap > - = support_capture_subprogram (support_objdir_elf_ldso, argv); > + = support_capture_subprogram (support_objdir_elf_ldso, argv, NULL); > support_capture_subprocess_check (&cap, "no --argv0", 0, sc_allow_stdout); > puts ("info: output without --argv0:"); > puts (cap.out.buffer); > @@ -46,7 +46,7 @@ do_test (void) > ldconfig_path, (char *) "--help", NULL > }; > struct support_capture_subprocess cap > - = support_capture_subprogram (support_objdir_elf_ldso, argv); > + = support_capture_subprogram (support_objdir_elf_ldso, argv, NULL); > support_capture_subprocess_check (&cap, "with --argv0", 0, sc_allow_stdout); > puts ("info: output with --argv0:"); > puts (cap.out.buffer); > diff --git a/elf/tst-tunables-enable_secure.c b/elf/tst-tunables-enable_secure.c > index e31e1f7faa..f5db1c84e9 100644 > --- a/elf/tst-tunables-enable_secure.c > +++ b/elf/tst-tunables-enable_secure.c > @@ -113,7 +113,7 @@ do_test (int argc, char *argv[]) > printf ("[%d] Spawned test for %s\n", i, tests[i].env); > setenv ("GLIBC_TUNABLES", tests[i].env, 1); > struct support_capture_subprocess result > - = support_capture_subprogram (spargv[0], spargv); > + = support_capture_subprogram (spargv[0], spargv, NULL); > support_capture_subprocess_check (&result, "tst-tunables-enable_secure", > 0, sc_allow_stderr); > support_capture_subprocess_free (&result); > diff --git a/elf/tst-tunables.c b/elf/tst-tunables.c > index 8f4ee46ad5..a2b3a677e2 100644 > --- a/elf/tst-tunables.c > +++ b/elf/tst-tunables.c > @@ -393,7 +393,7 @@ do_test (int argc, char *argv[]) > tests[i].value); > setenv (tests[i].name, tests[i].value, 1); > struct support_capture_subprocess result > - = support_capture_subprogram (spargv[0], spargv); > + = support_capture_subprogram (spargv[0], spargv, NULL); > support_capture_subprocess_check (&result, "tst-tunables", 0, > sc_allow_stderr); > support_capture_subprocess_free (&result); > diff --git a/support/capture_subprocess.h b/support/capture_subprocess.h > index 1ecbdfe4fc..93b7245d2a 100644 > --- a/support/capture_subprocess.h > +++ b/support/capture_subprocess.h > @@ -35,11 +35,12 @@ struct support_capture_subprocess > struct support_capture_subprocess support_capture_subprocess > (void (*callback) (void *), void *closure); > > -/* Issue FILE with ARGV arguments by using posix_spawn and capture standard > - output, standard error, and the exit status. The out.buffer and err.buffer > - are handle as support_capture_subprocess. */ > +/* Issue FILE with ARGV arguments and ENVP environments by using posix_spawn > + and capture standard output, standard error, and the exit status. If > + ENVP is NULL the current environment variable is used. The out.buffer and > + err.buffer are handle by support_capture_subprocess. */ > struct support_capture_subprocess support_capture_subprogram > - (const char *file, char *const argv[]); > + (const char *file, char *const argv[], char *const envp[]); > > /* Copy the running program into a setgid binary and run it with CHILD_ID > argument. If execution is successful, return the exit status of the child > diff --git a/support/subprocess.h b/support/subprocess.h > index 8fbb895353..8274a2b22b 100644 > --- a/support/subprocess.h > +++ b/support/subprocess.h > @@ -33,10 +33,11 @@ struct support_subprocess > struct support_subprocess support_subprocess > (void (*callback) (void *), void *closure); > > -/* Issue FILE with ARGV arguments by using posix_spawn and return is PID, a > - pipe redirected to STDOUT, and a pipe redirected to STDERR. */ > +/* Issue FILE with ARGV arguments and ENVP environments by using posix_spawn > + and return is PID, a pipe redirected to STDOUT, and a pipe redirected to > + STDERR. If ENVP is NULL the current environment variable is used. */ > struct support_subprocess support_subprogram > - (const char *file, char *const argv[]); > + (const char *file, char *const argv[], char *const envp[]); > > /* Invoke program FILE with ARGV arguments by using posix_spawn and wait for it > to complete. Return program exit status. */ > diff --git a/support/support_capture_subprocess.c b/support/support_capture_subprocess.c > index ffced8a89f..53847194cb 100644 > --- a/support/support_capture_subprocess.c > +++ b/support/support_capture_subprocess.c > @@ -93,13 +93,14 @@ support_capture_subprocess (void (*callback) (void *), void *closure) > } > > struct support_capture_subprocess > -support_capture_subprogram (const char *file, char *const argv[]) > +support_capture_subprogram (const char *file, char *const argv[], > + char *const envp[]) > { > struct support_capture_subprocess result; > xopen_memstream (&result.out); > xopen_memstream (&result.err); > > - struct support_subprocess proc = support_subprogram (file, argv); > + struct support_subprocess proc = support_subprogram (file, argv, envp); > > support_capture_poll (&result, &proc); > return result; > diff --git a/support/support_subprocess.c b/support/support_subprocess.c > index a2fef394d4..b692a7f8b1 100644 > --- a/support/support_subprocess.c > +++ b/support/support_subprocess.c > @@ -69,7 +69,7 @@ support_subprocess (void (*callback) (void *), void *closure) > } > > struct support_subprocess > -support_subprogram (const char *file, char *const argv[]) > +support_subprogram (const char *file, char *const argv[], char *const envp[]) > { > struct support_subprocess result = support_subprocess_init (); > > @@ -84,7 +84,8 @@ support_subprogram (const char *file, char *const argv[]) > xposix_spawn_file_actions_addclose (&fa, result.stdout_pipe[1]); > xposix_spawn_file_actions_addclose (&fa, result.stderr_pipe[1]); > > - result.pid = xposix_spawn (file, &fa, NULL, argv, environ); > + result.pid = xposix_spawn (file, &fa, NULL, argv, > + envp == NULL ? environ : envp); > > xclose (result.stdout_pipe[1]); > xclose (result.stderr_pipe[1]); > diff --git a/support/tst-support_capture_subprocess.c b/support/tst-support_capture_subprocess.c > index 8145548982..756fb75d19 100644 > --- a/support/tst-support_capture_subprocess.c > +++ b/support/tst-support_capture_subprocess.c > @@ -238,7 +238,7 @@ do_subprogram (const struct test *test) > args[argc] = NULL; > TEST_VERIFY (argc < argv_size); > > - return support_capture_subprogram (args[0], args); > + return support_capture_subprogram (args[0], args, NULL); > } > > enum test_type > diff --git a/sysdeps/x86/tst-hwcap-tunables.c b/sysdeps/x86/tst-hwcap-tunables.c > index f6a65b88de..8589a9fd66 100644 > --- a/sysdeps/x86/tst-hwcap-tunables.c > +++ b/sysdeps/x86/tst-hwcap-tunables.c > @@ -133,7 +133,7 @@ do_test (int argc, char *argv[]) > setenv ("GLIBC_TUNABLES", tunable, 1); > > struct support_capture_subprocess result > - = support_capture_subprogram (spargv[0], spargv); > + = support_capture_subprogram (spargv[0], spargv, NULL); > support_capture_subprocess_check (&result, "tst-tunables", 0, > sc_allow_stderr); > support_capture_subprocess_free (&result);
diff --git a/elf/tst-audit18.c b/elf/tst-audit18.c index 841251dd70..cec93e269c 100644 --- a/elf/tst-audit18.c +++ b/elf/tst-audit18.c @@ -79,7 +79,7 @@ do_test (int argc, char *argv[]) setenv ("LD_AUDIT", "tst-auditmod18.so", 0); struct support_capture_subprocess result - = support_capture_subprogram (spargv[0], spargv); + = support_capture_subprogram (spargv[0], spargv, NULL); support_capture_subprocess_check (&result, "tst-audit18", 0, sc_allow_stderr); struct diff --git a/elf/tst-audit19b.c b/elf/tst-audit19b.c index 70bfe4eadf..88d99a416b 100644 --- a/elf/tst-audit19b.c +++ b/elf/tst-audit19b.c @@ -69,7 +69,7 @@ do_test (int argc, char *argv[]) setenv ("LD_AUDIT", "tst-auditmod18b.so", 0); struct support_capture_subprocess result - = support_capture_subprogram (spargv[0], spargv); + = support_capture_subprogram (spargv[0], spargv, NULL); support_capture_subprocess_check (&result, "tst-audit18b", 0, sc_allow_stderr); bool find_symbind = false; diff --git a/elf/tst-audit22.c b/elf/tst-audit22.c index 4e97be3be0..6aa18af948 100644 --- a/elf/tst-audit22.c +++ b/elf/tst-audit22.c @@ -83,7 +83,7 @@ do_test (int argc, char *argv[]) setenv ("LD_AUDIT", "tst-auditmod22.so", 0); struct support_capture_subprocess result - = support_capture_subprogram (spargv[0], spargv); + = support_capture_subprogram (spargv[0], spargv, NULL); support_capture_subprocess_check (&result, "tst-audit22", 0, sc_allow_stderr); /* The respawned process should always print the vDSO address (otherwise it diff --git a/elf/tst-audit23.c b/elf/tst-audit23.c index 32e7c8b2a3..d2640fe8b2 100644 --- a/elf/tst-audit23.c +++ b/elf/tst-audit23.c @@ -82,7 +82,7 @@ do_test (int argc, char *argv[]) setenv ("LD_AUDIT", "tst-auditmod23.so", 0); struct support_capture_subprocess result - = support_capture_subprogram (spargv[0], spargv); + = support_capture_subprogram (spargv[0], spargv, NULL); support_capture_subprocess_check (&result, "tst-audit22", 0, sc_allow_stderr); /* The expected la_objopen/la_objclose: diff --git a/elf/tst-audit25a.c b/elf/tst-audit25a.c index b209ee820f..cdd4f2ce2b 100644 --- a/elf/tst-audit25a.c +++ b/elf/tst-audit25a.c @@ -77,7 +77,7 @@ do_test (int argc, char *argv[]) { struct support_capture_subprocess result - = support_capture_subprogram (spargv[0], spargv); + = support_capture_subprogram (spargv[0], spargv, NULL); support_capture_subprocess_check (&result, "tst-audit25a", 0, sc_allow_stderr); @@ -102,7 +102,7 @@ do_test (int argc, char *argv[]) { setenv ("LD_BIND_NOW", "1", 0); struct support_capture_subprocess result - = support_capture_subprogram (spargv[0], spargv); + = support_capture_subprogram (spargv[0], spargv, NULL); support_capture_subprocess_check (&result, "tst-audit25a", 0, sc_allow_stderr); diff --git a/elf/tst-audit25b.c b/elf/tst-audit25b.c index 9b8665d517..939f4d6188 100644 --- a/elf/tst-audit25b.c +++ b/elf/tst-audit25b.c @@ -76,7 +76,7 @@ do_test (int argc, char *argv[]) { struct support_capture_subprocess result - = support_capture_subprogram (spargv[0], spargv); + = support_capture_subprogram (spargv[0], spargv, NULL); support_capture_subprocess_check (&result, "tst-audit25a", 0, sc_allow_stderr); @@ -102,7 +102,7 @@ do_test (int argc, char *argv[]) { setenv ("LD_BIND_NOW", "1", 0); struct support_capture_subprocess result - = support_capture_subprogram (spargv[0], spargv); + = support_capture_subprogram (spargv[0], spargv, NULL); support_capture_subprocess_check (&result, "tst-audit25a", 0, sc_allow_stderr); diff --git a/elf/tst-glibc-hwcaps-2-cache.c b/elf/tst-glibc-hwcaps-2-cache.c index 81ab44ff78..af91476cca 100644 --- a/elf/tst-glibc-hwcaps-2-cache.c +++ b/elf/tst-glibc-hwcaps-2-cache.c @@ -32,7 +32,7 @@ main (int argc, char **argv) /* Run ldconfig to populate the cache. */ char *command = xasprintf ("%s/ldconfig", support_install_rootsbindir); struct support_capture_subprocess result = - support_capture_subprogram (command, &((char *) { NULL })); + support_capture_subprogram (command, &((char *) { NULL }), NULL); support_capture_subprocess_check (&result, "ldconfig", 0, sc_allow_none); free (command); diff --git a/elf/tst-rtld-run-static.c b/elf/tst-rtld-run-static.c index b2650e85ff..f05c00eb7b 100644 --- a/elf/tst-rtld-run-static.c +++ b/elf/tst-rtld-run-static.c @@ -30,7 +30,7 @@ do_test (void) { char *argv[] = { (char *) "ld.so", ldconfig_path, (char *) "--help", NULL }; struct support_capture_subprocess cap - = support_capture_subprogram (support_objdir_elf_ldso, argv); + = support_capture_subprogram (support_objdir_elf_ldso, argv, NULL); support_capture_subprocess_check (&cap, "no --argv0", 0, sc_allow_stdout); puts ("info: output without --argv0:"); puts (cap.out.buffer); @@ -46,7 +46,7 @@ do_test (void) ldconfig_path, (char *) "--help", NULL }; struct support_capture_subprocess cap - = support_capture_subprogram (support_objdir_elf_ldso, argv); + = support_capture_subprogram (support_objdir_elf_ldso, argv, NULL); support_capture_subprocess_check (&cap, "with --argv0", 0, sc_allow_stdout); puts ("info: output with --argv0:"); puts (cap.out.buffer); diff --git a/elf/tst-tunables-enable_secure.c b/elf/tst-tunables-enable_secure.c index e31e1f7faa..f5db1c84e9 100644 --- a/elf/tst-tunables-enable_secure.c +++ b/elf/tst-tunables-enable_secure.c @@ -113,7 +113,7 @@ do_test (int argc, char *argv[]) printf ("[%d] Spawned test for %s\n", i, tests[i].env); setenv ("GLIBC_TUNABLES", tests[i].env, 1); struct support_capture_subprocess result - = support_capture_subprogram (spargv[0], spargv); + = support_capture_subprogram (spargv[0], spargv, NULL); support_capture_subprocess_check (&result, "tst-tunables-enable_secure", 0, sc_allow_stderr); support_capture_subprocess_free (&result); diff --git a/elf/tst-tunables.c b/elf/tst-tunables.c index 8f4ee46ad5..a2b3a677e2 100644 --- a/elf/tst-tunables.c +++ b/elf/tst-tunables.c @@ -393,7 +393,7 @@ do_test (int argc, char *argv[]) tests[i].value); setenv (tests[i].name, tests[i].value, 1); struct support_capture_subprocess result - = support_capture_subprogram (spargv[0], spargv); + = support_capture_subprogram (spargv[0], spargv, NULL); support_capture_subprocess_check (&result, "tst-tunables", 0, sc_allow_stderr); support_capture_subprocess_free (&result); diff --git a/support/capture_subprocess.h b/support/capture_subprocess.h index 1ecbdfe4fc..93b7245d2a 100644 --- a/support/capture_subprocess.h +++ b/support/capture_subprocess.h @@ -35,11 +35,12 @@ struct support_capture_subprocess struct support_capture_subprocess support_capture_subprocess (void (*callback) (void *), void *closure); -/* Issue FILE with ARGV arguments by using posix_spawn and capture standard - output, standard error, and the exit status. The out.buffer and err.buffer - are handle as support_capture_subprocess. */ +/* Issue FILE with ARGV arguments and ENVP environments by using posix_spawn + and capture standard output, standard error, and the exit status. If + ENVP is NULL the current environment variable is used. The out.buffer and + err.buffer are handle by support_capture_subprocess. */ struct support_capture_subprocess support_capture_subprogram - (const char *file, char *const argv[]); + (const char *file, char *const argv[], char *const envp[]); /* Copy the running program into a setgid binary and run it with CHILD_ID argument. If execution is successful, return the exit status of the child diff --git a/support/subprocess.h b/support/subprocess.h index 8fbb895353..8274a2b22b 100644 --- a/support/subprocess.h +++ b/support/subprocess.h @@ -33,10 +33,11 @@ struct support_subprocess struct support_subprocess support_subprocess (void (*callback) (void *), void *closure); -/* Issue FILE with ARGV arguments by using posix_spawn and return is PID, a - pipe redirected to STDOUT, and a pipe redirected to STDERR. */ +/* Issue FILE with ARGV arguments and ENVP environments by using posix_spawn + and return is PID, a pipe redirected to STDOUT, and a pipe redirected to + STDERR. If ENVP is NULL the current environment variable is used. */ struct support_subprocess support_subprogram - (const char *file, char *const argv[]); + (const char *file, char *const argv[], char *const envp[]); /* Invoke program FILE with ARGV arguments by using posix_spawn and wait for it to complete. Return program exit status. */ diff --git a/support/support_capture_subprocess.c b/support/support_capture_subprocess.c index ffced8a89f..53847194cb 100644 --- a/support/support_capture_subprocess.c +++ b/support/support_capture_subprocess.c @@ -93,13 +93,14 @@ support_capture_subprocess (void (*callback) (void *), void *closure) } struct support_capture_subprocess -support_capture_subprogram (const char *file, char *const argv[]) +support_capture_subprogram (const char *file, char *const argv[], + char *const envp[]) { struct support_capture_subprocess result; xopen_memstream (&result.out); xopen_memstream (&result.err); - struct support_subprocess proc = support_subprogram (file, argv); + struct support_subprocess proc = support_subprogram (file, argv, envp); support_capture_poll (&result, &proc); return result; diff --git a/support/support_subprocess.c b/support/support_subprocess.c index a2fef394d4..b692a7f8b1 100644 --- a/support/support_subprocess.c +++ b/support/support_subprocess.c @@ -69,7 +69,7 @@ support_subprocess (void (*callback) (void *), void *closure) } struct support_subprocess -support_subprogram (const char *file, char *const argv[]) +support_subprogram (const char *file, char *const argv[], char *const envp[]) { struct support_subprocess result = support_subprocess_init (); @@ -84,7 +84,8 @@ support_subprogram (const char *file, char *const argv[]) xposix_spawn_file_actions_addclose (&fa, result.stdout_pipe[1]); xposix_spawn_file_actions_addclose (&fa, result.stderr_pipe[1]); - result.pid = xposix_spawn (file, &fa, NULL, argv, environ); + result.pid = xposix_spawn (file, &fa, NULL, argv, + envp == NULL ? environ : envp); xclose (result.stdout_pipe[1]); xclose (result.stderr_pipe[1]); diff --git a/support/tst-support_capture_subprocess.c b/support/tst-support_capture_subprocess.c index 8145548982..756fb75d19 100644 --- a/support/tst-support_capture_subprocess.c +++ b/support/tst-support_capture_subprocess.c @@ -238,7 +238,7 @@ do_subprogram (const struct test *test) args[argc] = NULL; TEST_VERIFY (argc < argv_size); - return support_capture_subprogram (args[0], args); + return support_capture_subprogram (args[0], args, NULL); } enum test_type diff --git a/sysdeps/x86/tst-hwcap-tunables.c b/sysdeps/x86/tst-hwcap-tunables.c index f6a65b88de..8589a9fd66 100644 --- a/sysdeps/x86/tst-hwcap-tunables.c +++ b/sysdeps/x86/tst-hwcap-tunables.c @@ -133,7 +133,7 @@ do_test (int argc, char *argv[]) setenv ("GLIBC_TUNABLES", tunable, 1); struct support_capture_subprocess result - = support_capture_subprogram (spargv[0], spargv); + = support_capture_subprogram (spargv[0], spargv, NULL); support_capture_subprocess_check (&result, "tst-tunables", 0, sc_allow_stderr); support_capture_subprocess_free (&result);