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,