mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-21 12:30:06 +00:00
Support run tst-exec and tst-spawn directly
This commit is contained in:
parent
828beb132d
commit
4cf8f2098f
11
ChangeLog
11
ChangeLog
@ -1,3 +1,14 @@
|
||||
2013-01-10 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* posix/Makefile (tests-static): New variable.
|
||||
(tests): Add $(tests-static).
|
||||
(tst-exec-static-ARGS): New variable.
|
||||
(tst-spawn-static-ARGS): Likewise.
|
||||
* posix/tst-exec-static.c: New file.
|
||||
* posix/tst-spawn-static.c: Likewise.
|
||||
* posix/tst-exec.c: Support run directly.
|
||||
* posix/tst-spawn.c: Likewise.
|
||||
|
||||
2013-01-10 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* elf/link.h (struct dl_phdr_info): Use __extension__ with long
|
||||
|
@ -92,6 +92,8 @@ ifeq (yes,$(build-shared))
|
||||
test-srcs := globtest
|
||||
tests += wordexp-test tst-exec tst-spawn
|
||||
endif
|
||||
tests-static = tst-exec-static tst-spawn-static
|
||||
tests += $(tests-static)
|
||||
others := getconf
|
||||
install-bin := getconf
|
||||
install-others-programs := $(inst_libexecdir)/getconf
|
||||
@ -172,7 +174,9 @@ tstgetopt-ARGS = -a -b -cfoobar --required foobar --optional=bazbug \
|
||||
--none random --col --color --colour
|
||||
|
||||
tst-exec-ARGS = -- $(host-built-program-cmd)
|
||||
tst-exec-static-ARGS = $(tst-exec-ARGS)
|
||||
tst-spawn-ARGS = -- $(host-built-program-cmd)
|
||||
tst-spawn-static-ARGS = $(tst-spawn-ARGS)
|
||||
tst-dir-ARGS = `pwd` `cd $(common-objdir)/$(subdir); pwd` `cd $(common-objdir); pwd` $(objpfx)tst-dir
|
||||
tst-chmod-ARGS = $(objdir)
|
||||
tst-vfork3-ARGS = --test-dir=$(objpfx)
|
||||
|
1
posix/tst-exec-static.c
Normal file
1
posix/tst-exec-static.c
Normal file
@ -0,0 +1 @@
|
||||
#include "tst-exec.c"
|
@ -126,10 +126,10 @@ do_test (int argc, char *argv[])
|
||||
int status;
|
||||
|
||||
/* We must have
|
||||
- four parameters left of called initially
|
||||
+ path for ld.so
|
||||
+ "--library-path"
|
||||
+ the library path
|
||||
- one or four parameters left if called initially
|
||||
+ path for ld.so optional
|
||||
+ "--library-path" optional
|
||||
+ the library path optional
|
||||
+ the application name
|
||||
- three parameters left if called through re-execution
|
||||
+ file descriptor number which is supposed to be closed
|
||||
@ -145,7 +145,7 @@ do_test (int argc, char *argv[])
|
||||
return handle_restart (argv[1], argv[2], argv[3]);
|
||||
}
|
||||
|
||||
if (argc != 5)
|
||||
if (argc != 2 && argc != 5)
|
||||
error (EXIT_FAILURE, 0, "wrong number of arguments (%d)", argc);
|
||||
|
||||
/* Prepare the test. We are creating two files: one which file descriptor
|
||||
@ -185,8 +185,12 @@ do_test (int argc, char *argv[])
|
||||
snprintf (fd2name, sizeof fd2name, "%d", fd2);
|
||||
|
||||
/* This is the child. Construct the command line. */
|
||||
if (argc == 5)
|
||||
execl (argv[1], argv[1], argv[2], argv[3], argv[4], "--direct",
|
||||
"--restart", fd1name, fd2name, name1, NULL);
|
||||
else
|
||||
execl (argv[1], argv[1], "--direct",
|
||||
"--restart", fd1name, fd2name, name1, NULL);
|
||||
|
||||
error (EXIT_FAILURE, errno, "cannot exec");
|
||||
}
|
||||
|
1
posix/tst-spawn-static.c
Normal file
1
posix/tst-spawn-static.c
Normal file
@ -0,0 +1 @@
|
||||
#include "tst-spawn.c"
|
@ -169,12 +169,13 @@ do_test (int argc, char *argv[])
|
||||
char fd3name[18];
|
||||
char fd4name[18];
|
||||
char *spargv[12];
|
||||
int i;
|
||||
|
||||
/* We must have
|
||||
- four parameters left of called initially
|
||||
+ path for ld.so
|
||||
+ "--library-path"
|
||||
+ the library path
|
||||
- one or four parameters left if called initially
|
||||
+ path for ld.so optional
|
||||
+ "--library-path" optional
|
||||
+ the library path optional
|
||||
+ the application name
|
||||
- five parameters left if called through re-execution
|
||||
+ file descriptor number which is supposed to be closed
|
||||
@ -183,7 +184,7 @@ do_test (int argc, char *argv[])
|
||||
+ thhe duped second descriptor
|
||||
+ the name of the closed descriptor
|
||||
*/
|
||||
if (argc != (restart ? 6 : 5))
|
||||
if (argc != (restart ? 6 : 2) && argc != (restart ? 6 : 5))
|
||||
error (EXIT_FAILURE, 0, "wrong number of arguments (%d)", argc);
|
||||
|
||||
if (restart)
|
||||
@ -235,18 +236,16 @@ do_test (int argc, char *argv[])
|
||||
snprintf (fd3name, sizeof fd3name, "%d", fd3);
|
||||
snprintf (fd4name, sizeof fd4name, "%d", fd4);
|
||||
|
||||
spargv[0] = argv[1];
|
||||
spargv[1] = argv[2];
|
||||
spargv[2] = argv[3];
|
||||
spargv[3] = argv[4];
|
||||
spargv[4] = (char *) "--direct";
|
||||
spargv[5] = (char *) "--restart";
|
||||
spargv[6] = fd1name;
|
||||
spargv[7] = fd2name;
|
||||
spargv[8] = fd3name;
|
||||
spargv[9] = fd4name;
|
||||
spargv[10] = name1;
|
||||
spargv[11] = NULL;
|
||||
for (i = 0; i < (argc == (restart ? 6 : 5) ? 4 : 1); i++)
|
||||
spargv[i] = argv[i + 1];
|
||||
spargv[i++] = (char *) "--direct";
|
||||
spargv[i++] = (char *) "--restart";
|
||||
spargv[i++] = fd1name;
|
||||
spargv[i++] = fd2name;
|
||||
spargv[i++] = fd3name;
|
||||
spargv[i++] = fd4name;
|
||||
spargv[i++] = name1;
|
||||
spargv[i] = NULL;
|
||||
|
||||
if (posix_spawn (&pid, argv[1], &actions, NULL, spargv, environ) != 0)
|
||||
error (EXIT_FAILURE, errno, "posix_spawn");
|
||||
|
Loading…
Reference in New Issue
Block a user