summaryrefslogtreecommitdiff
path: root/libgo/configure.ac
diff options
context:
space:
mode:
authorian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>2012-02-15 22:29:35 +0000
committerian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>2012-02-15 22:29:35 +0000
commit9f89fc14b517dd5af3dc205885b9e798ebbbf2cb (patch)
tree8479da6f747b3bcc95251ebeec9fd6caef172543 /libgo/configure.ac
parent3619a9e53146fa41ef55d870aa3d3ed2f0f55ea6 (diff)
downloadgcc-9f89fc14b517dd5af3dc205885b9e798ebbbf2cb.tar.gz
runtime: Support broken makecontext on Solaris 8/9.
From Rainer Orth. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@184289 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libgo/configure.ac')
-rw-r--r--libgo/configure.ac18
1 files changed, 18 insertions, 0 deletions
diff --git a/libgo/configure.ac b/libgo/configure.ac
index 249918b15d0..479ced0ef8a 100644
--- a/libgo/configure.ac
+++ b/libgo/configure.ac
@@ -611,6 +611,21 @@ if test "$libgo_has_struct_exception" = "yes"; then
[Define to 1 if <math.h> defines struct exception])
fi
+dnl Check if makecontext expects the uc_stack member of ucontext to point
+dnl to the top of the stack.
+case "$target" in
+ sparc*-*-solaris2.[[89]]*)
+ libgo_cv_lib_makecontext_stack_top=yes
+ ;;
+ *)
+ libgo_cv_lib_makecontext_stack_top=no
+ ;;
+esac
+if test "$libgo_cv_lib_makecontext_stack_top" = "yes"; then
+ AC_DEFINE(MAKECONTEXT_STACK_TOP, 1,
+ [Define if makecontext expects top of stack in uc_stack.])
+fi
+
dnl See whether setcontext changes the value of TLS variables.
AC_CACHE_CHECK([whether setcontext clobbers TLS variables],
[libgo_cv_lib_setcontext_clobbers_tls],
@@ -667,6 +682,9 @@ main ()
abort ();
c.uc_stack.ss_sp = stack;
+#ifdef MAKECONTEXT_STACK_TOP
+ c.uc_stack.ss_sp += sizeof stack;
+#endif
c.uc_stack.ss_flags = 0;
c.uc_stack.ss_size = sizeof stack;
c.uc_link = NULL;