Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/tests/lib/libc/sys Don't try to figure out how the stack gro...



details:   https://anonhg.NetBSD.org/src/rev/f5274a3c9a46
branches:  trunk
changeset: 771995:f5274a3c9a46
user:      joerg <joerg%NetBSD.org@localhost>
date:      Mon Dec 12 20:55:44 2011 +0000

description:
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...

diffstat:

 tests/lib/libc/sys/t_clone.c |  28 +++++++++++-----------------
 1 files changed, 11 insertions(+), 17 deletions(-)

diffs (67 lines):

diff -r 62629d7e23b1 -r f5274a3c9a46 tests/lib/libc/sys/t_clone.c
--- a/tests/lib/libc/sys/t_clone.c      Mon Dec 12 19:59:21 2011 +0000
+++ b/tests/lib/libc/sys/t_clone.c      Mon Dec 12 20:55:44 2011 +0000
@@ -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 @@
 #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_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_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,



Home | Main Index | Thread Index | Old Index