Module Name:    src
Committed By:   joerg
Date:           Mon Dec 12 20:55:44 UTC 2011

Modified Files:
        src/tests/lib/libc/sys: t_clone.c

Log Message:
Don't try to figure out how the stack grows at run time. It's not
portable and fails badly if the test function is removed...


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/tests/lib/libc/sys/t_clone.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/tests/lib/libc/sys/t_clone.c
diff -u src/tests/lib/libc/sys/t_clone.c:1.2 src/tests/lib/libc/sys/t_clone.c:1.3
--- src/tests/lib/libc/sys/t_clone.c:1.2	Thu Jul  7 16:31:11 2011
+++ src/tests/lib/libc/sys/t_clone.c	Mon Dec 12 20:55:44 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: t_clone.c,v 1.2 2011/07/07 16:31:11 jruoho Exp $ */
+/* $NetBSD: t_clone.c,v 1.3 2011/12/12 20:55:44 joerg Exp $ */
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -32,7 +32,7 @@
 #include <sys/cdefs.h>
 __COPYRIGHT("@(#) Copyright (c) 2008\
  The NetBSD Foundation, inc. All rights reserved.");
-__RCSID("$NetBSD: t_clone.c,v 1.2 2011/07/07 16:31:11 jruoho Exp $");
+__RCSID("$NetBSD: t_clone.c,v 1.3 2011/12/12 20:55:44 joerg Exp $");
 
 #include <sys/mman.h>
 #include <sys/resource.h>
@@ -53,18 +53,6 @@ __RCSID("$NetBSD: t_clone.c,v 1.2 2011/0
 #define	FROBVAL		41973
 #define	CHILDEXIT	0xa5
 
-/*
- * return 1 if the stack grows down, 0 if it grows up.
- */
-static int
-stackdir(void *p)
-{
-	int val;
-	void *q = &val;
-
-	return p < q ? 0 : 1;
-}
-
 static int
 dummy(void *arg)
 {
@@ -116,7 +104,10 @@ ATF_TC_BODY(clone_basic, tc)
 
 	ATF_REQUIRE_ERRNO(errno, allocstack != MAP_FAILED);
 
-	stack = (caddr_t) allocstack + STACKSIZE * stackdir(&stat);
+	stack = allocstack;
+#ifndef __MACHINE_STACK_GROWS_UP
+	stack = (char *)stack + STACKSIZE;
+#endif
 
 	printf("parent: stack = %p, frobme = %p\n", stack, frobme);
 	fflush(stdout);
@@ -200,12 +191,15 @@ ATF_TC_HEAD(clone_null_func, tc)
 ATF_TC_BODY(clone_null_func, tc)
 {
 	void *allocstack, *stack;
-	int rv, stat;
+	int rv;
 
 	allocstack = mmap(NULL, STACKSIZE, PROT_READ|PROT_WRITE|PROT_EXEC,
 	    MAP_PRIVATE|MAP_ANON, -1, (off_t) 0);
 	ATF_REQUIRE_ERRNO(errno, allocstack != MAP_FAILED);
-	stack = (caddr_t) allocstack + STACKSIZE * stackdir(&stat);
+	stack = allocstack;
+#ifndef __MACHINE_STACK_GROWS_UP
+	stack = (char *)stack + STACKSIZE;
+#endif
 
 	errno = 0;
 	rv = __clone(0, stack,

Reply via email to