aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrsc <devnull@localhost>2005-07-27 13:06:50 +0000
committerrsc <devnull@localhost>2005-07-27 13:06:50 +0000
commitd08f40666b32fd5bce69f1b40ea18d2e52e97a26 (patch)
tree1f5f6155ec020049aefedaae4edfa738cef64433
parent0e4068e8c46ae0b45616fe13ac01a449b68fbc06 (diff)
downloadplan9port-d08f40666b32fd5bce69f1b40ea18d2e52e97a26.tar.gz
plan9port-d08f40666b32fd5bce69f1b40ea18d2e52e97a26.tar.bz2
plan9port-d08f40666b32fd5bce69f1b40ea18d2e52e97a26.zip
sun
-rw-r--r--include/u.h10
-rw-r--r--src/libthread/thread.c2
2 files changed, 9 insertions, 3 deletions
diff --git a/include/u.h b/include/u.h
index c5f5dcd0..59446be8 100644
--- a/include/u.h
+++ b/include/u.h
@@ -5,8 +5,14 @@ extern "C" {
#endif
#define __BSD_VISIBLE 1 /* FreeBSD 5.x */
-#define __EXTENSIONS__ 1 /* SunOS */
-/* NOT USING #define __MAKECONTEXT_V2_SOURCE 1 / * SunOS */
+#if defined(__sun__)
+# define __EXTENSIONS__ 1 /* SunOS */
+# if defined(__SunOS5_6__) || defined(__SunOS5_7__) || defined(__SunOS5_8__)
+ /* NOT USING #define __MAKECONTEXT_V2_SOURCE 1 / * SunOS */
+# else
+# define __MAKECONTEXT_V2_SOURCE 1
+# endif
+#endif
#define _BSD_SOURCE 1
#define _NETBSD_SOURCE 1 /* NetBSD */
#define _SVID_SOURCE 1
diff --git a/src/libthread/thread.c b/src/libthread/thread.c
index 387b6400..4d55b06f 100644
--- a/src/libthread/thread.c
+++ b/src/libthread/thread.c
@@ -126,7 +126,7 @@ threadalloc(void (*fn)(void*), void *arg, uint stack)
/* leave a few words open on both ends */
t->context.uc.uc_stack.ss_sp = t->stk+8;
t->context.uc.uc_stack.ss_size = t->stksize-64;
-#ifdef __sun__ /* sigh */
+#if defined(__sun__) && !defined(__MAKECONTEXT_V2_SOURCE) /* sigh */
/* can avoid this with __MAKECONTEXT_V2_SOURCE but only on SunOS 5.9 */
t->context.uc.uc_stack.ss_sp =
(char*)t->context.uc.uc_stack.ss_sp