Update of /cvsroot/ltp/ltp/testcases/kernel/syscalls/clone In directory sc8-pr-cvs1:/tmp/cvs-serv643 Modified Files: Makefile clone01.c clone02.c clone03.c clone04.c clone05.c clone06.c Log Message: These tests were receiving strange SIGSEGV calls on ppc64 when compiled into 64bit. Further investigation showed that these tests were using the incorrect system call to terminate the children, return(). As documented in the man page, the clone() system call expects its children to use exit(). The ppc64 64-bit kernel was simply catching this, while other kernels, i.e. i386, were handling it. I corrected this in all the tests. clone02 - This test was having trouble cleaning up on ppc64 64-bit. I'm not sure if it's a problem with our tst_sig API or the Red Hat 2.4 kernel I was testing with. Anyhow, it was easier to remove the tst_rmdir() and replace with simple remove() in this case. clone04 - This test was also bad b/c it was testing for EINVAL in 2 ways, when there is only one supported/documented way to get EINVAL. I removed the other case. Index: Makefile =================================================================== RCS file: /cvsroot/ltp/ltp/testcases/kernel/syscalls/clone/Makefile,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- Makefile 4 Mar 2003 16:15:06 -0000 1.2 +++ Makefile 31 Jul 2003 20:41:11 -0000 1.3 @@ -19,8 +19,8 @@ ########################################################################### # name of file : Makefile # ########################################################################### -CFLAGS+= -I../../../../include -g -Wall -LOADLIBES+= -L../../../../lib -lltp +CFLAGS+= -I../../../../include -g -Wall -m64 +LOADLIBES+= -L../../../../lib -lltp -m64 SRCS=$(wildcard *.c) TARGETS=$(patsubst %.c,%,$(SRCS)) Index: clone01.c =================================================================== RCS file: /cvsroot/ltp/ltp/testcases/kernel/syscalls/clone/clone01.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- clone01.c 31 Jul 2003 15:52:47 -0000 1.6 +++ clone01.c 31 Jul 2003 20:41:11 -0000 1.7 @@ -123,7 +123,7 @@ /* * Call clone(2) */ -#ifdef __hppa__ +#if defined(__hppa__) || defined(__powerpc64__) TEST(clone(do_child, child_stack, SIGCHLD, NULL)); #elif defined(__ia64__) TEST(clone2(do_child, child_stack, @@ -197,6 +197,6 @@ int do_child(void) { - return 0; + exit(0); } Index: clone02.c =================================================================== RCS file: /cvsroot/ltp/ltp/testcases/kernel/syscalls/clone/clone02.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- clone02.c 31 Jul 2003 15:52:47 -0000 1.7 +++ clone02.c 31 Jul 2003 20:41:11 -0000 1.8 @@ -95,12 +95,12 @@ #include "usctest.h" #ifdef __powerpc64__ -#define CHILD_STACK_SIZE 8192 +#define CHILD_STACK_SIZE 16384 #else #define CHILD_STACK_SIZE 1024 #endif -#define FLAG_ALL CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | SIGCHLD +#define FLAG_ALL CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | SIGCHLD #define FLAG_NONE SIGCHLD #define PARENT_VALUE 1 #define CHILD_VALUE 2 @@ -186,7 +186,7 @@ } /* Test the system call */ -#ifdef __hppa__ +#if defined(__hppa__) || defined(__powerpc64__) TEST(clone(child_fn, child_stack, test_cases[i].flags, NULL)); #elif defined(__ia64__) @@ -235,7 +235,7 @@ } /* End for TEST_LOOPING */ free(child_stack); - + /* cleanup and exit */ cleanup(); @@ -284,8 +284,9 @@ if ((unlink(file_name)) == -1 ) { tst_resm(TWARN, "Couldn't delete file, %s", file_name); } - tst_rmdir(); - + chdir("/tmp"); + remove(cwd_parent); + /* exit with return code appropriate for results */ tst_exit(); } /* End cleanup() */ @@ -365,9 +366,9 @@ child_pid = getpid(); if (test_VM() && test_FILES() && test_FS() && test_SIG()) { - return 1; + exit(1); } - return 0; + exit(0); } /* Index: clone03.c =================================================================== RCS file: /cvsroot/ltp/ltp/testcases/kernel/syscalls/clone/clone03.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- clone03.c 31 Jul 2003 15:52:47 -0000 1.6 +++ clone03.c 31 Jul 2003 20:41:11 -0000 1.7 @@ -128,7 +128,7 @@ /* * Call clone(2) */ -#ifdef __hppa__ +#if defined(__hppa__) || defined(__powerpc64__) TEST(clone(child_fn, child_stack, (int)NULL, NULL)); #elif defined(__ia64__) TEST(clone2(child_fn, child_stack, @@ -239,6 +239,6 @@ if ((close(pfd[1])) == -1) { tst_resm(TWARN, "close(pfd[1]) failed"); } - return 1; + exit(1); } Index: clone04.c =================================================================== RCS file: /cvsroot/ltp/ltp/testcases/kernel/syscalls/clone/clone04.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- clone04.c 31 Jul 2003 15:52:47 -0000 1.7 +++ clone04.c 31 Jul 2003 20:41:11 -0000 1.8 @@ -32,10 +32,8 @@ * * DESCRIPTION * Verify that, - * 1) clone(2) returns -1 and sets errno to EINVAL if the specified - * child function is invalid. - * 2) clone(2) returns -1 and sets errno to EINVAL if - * child stack is NULL + * clone(2) returns -1 and sets errno to EINVAL if + * child stack is set to a zero value(NULL) * * ALGORITHM * Setup: @@ -98,7 +96,6 @@ int exp_errno; char err_desc[10]; } test_cases[] = { - { (int)NULL, &child_stack, EINVAL, "EINVAL" }, { child_fn, NULL, EINVAL, "EINVAL" }, }; @@ -140,7 +137,7 @@ /* * call the system call with the TEST() macro */ -#if defined(__hppa__) +#if defined(__hppa__) || defined(__powerpc64__) TEST(clone(test_cases[ind].child_fn, test_stack, SIGCHLD, NULL)); #elif defined(__ia64__) @@ -221,5 +218,5 @@ int child_fn() { - return 1; + exit(1); } Index: clone05.c =================================================================== RCS file: /cvsroot/ltp/ltp/testcases/kernel/syscalls/clone/clone05.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- clone05.c 31 Jul 2003 15:52:47 -0000 1.6 +++ clone05.c 31 Jul 2003 20:41:12 -0000 1.7 @@ -119,7 +119,7 @@ /* * Call clone(2) */ -#ifdef __hppa__ +#if defined(__hppa__) || defined(__powerpc64__) TEST(clone(child_fn, child_stack, FLAG, NULL)); #elif defined(__ia64__) TEST(clone2(child_fn, child_stack, @@ -195,6 +195,6 @@ */ sleep(1); parent_variable = 1; - return 1; + exit(1); } Index: clone06.c =================================================================== RCS file: /cvsroot/ltp/ltp/testcases/kernel/syscalls/clone/clone06.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- clone06.c 31 Jul 2003 15:52:47 -0000 1.6 +++ clone06.c 31 Jul 2003 20:41:12 -0000 1.7 @@ -134,7 +134,7 @@ /* * Call clone(2) */ -#ifdef __hppa__ +#if defined(__hppa__) || defined(__powerpc64__) TEST(clone(child_environ, child_stack, (int)NULL, NULL)); #elif defined(__ia64__) TEST(clone2(child_environ, child_stack, @@ -243,6 +243,6 @@ tst_resm(TWARN, "close(pfd[1]) failed"); } - return 0; + exit(0); } |