Comments
Patch
===================================================================
@@ -392,6 +392,7 @@ esac
oldLIBS="$LIBS"
LIBS="$LIBS $THREADLIBS"
AC_CHECK_FUNCS([pthread_getattr_np])
+AC_CHECK_FUNCS([pthread_get_stackaddr_np])
LIBS="$oldLIBS"
# Configuration of machine-dependent code
===================================================================
@@ -87,6 +87,9 @@
/* Define to 1 if you have the `pthread_getattr_np' function. */
#undef HAVE_PTHREAD_GETATTR_NP
+/* Define to 1 if you have the `pthread_get_stackaddr_np_np' function. */
+#undef HAVE_PTHREAD_GET_STACKADDR_NP
+
/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H
===================================================================
@@ -1331,7 +1331,11 @@
These aren't used when dyld support is enabled (it is by default) */
# define DATASTART ((ptr_t) get_etext())
# define DATAEND ((ptr_t) get_end())
-# define STACKBOTTOM ((ptr_t) 0xc0000000)
+# ifdef HAVE_PTHREAD_GET_STACKADDR_NP
+# define STACKBOTTOM (ptr_t)pthread_get_stackaddr_np(pthread_self())
+# else
+# define STACKBOTTOM ((ptr_t) 0xc0000000)
+# endif
# define USE_MMAP
# define USE_MMAP_ANON
# define USE_ASM_PUSH_REGS
@@ -2011,7 +2015,11 @@
These aren't used when dyld support is enabled (it is by default) */
# define DATASTART ((ptr_t) get_etext())
# define DATAEND ((ptr_t) get_end())
-# define STACKBOTTOM ((ptr_t) 0x7fff5fc00000)
+# ifdef HAVE_PTHREAD_GET_STACKADDR_NP
+# define STACKBOTTOM (ptr_t)pthread_get_stackaddr_np(pthread_self())
+# else
+# define STACKBOTTOM ((ptr_t) 0x7fff5fc00000)
+# endif
# define USE_MMAP
# define USE_MMAP_ANON
# ifdef GC_DARWIN_THREADS
===================================================================
@@ -886,14 +886,9 @@ case "${host}" in
SYSTEMSPEC="-lunicows $SYSTEMSPEC"
fi
;;
- *-*-darwin9*)
+ *-*-darwin[[912]]*)
SYSTEMSPEC="%{!Zdynamiclib:%{!Zbundle:-allow_stack_execute}}"
;;
- *-*-darwin[[12]]*)
- # Something is incompatible with pie, would be nice to fix it and
- # remove -no_pie. PR49461
- SYSTEMSPEC="-no_pie %{!Zdynamiclib:%{!Zbundle:-allow_stack_execute}}"
- ;;
*)
SYSTEMSPEC=
;;
The attached patch is a backport of r184555 to the gcc-4_6-branch to fix PR52179 so that boehm-gc functions properly with darwin11 and later's default usage of -pie in the linker. This fixes PR49461 properly and allows the previous hack of passing -no_pie to SYSTEMSPEC to be removed. Bootstrap and regression tested on x86_64-apple-darwin11... http://gcc.gnu.org/ml/gcc-testresults/2012-02/msg02427.html Okay for gcc-4_6-branch when it reopens for gcc 4.6.4? Jack boehm-gc/ 2012-02-25 Jack Howarth <howarth@bromo.med.uc.edu> Backport from mainline 2012-02-23 Patrick Marlier <patrick.marlier@gmail.com> Jack Howarth <howarth@bromo.med.uc.edu> PR boehm-gc/52179 * include/gc_config.h.in: Undefine HAVE_PTHREAD_GET_STACKADDR_NP. * include/private/gcconfig.h (DARWIN): Define STACKBOTTOM with pthread_get_stackaddr_np when available. * configure.ac (THREADS): Check availability of pthread_get_stackaddr_np. * configure: Regenerate. libjava/ 2012-02-25 Jack Howarth <howarth@bromo.med.uc.edu> Backport from mainline 2012-02-23 Patrick Marlier <patrick.marlier@gmail.com> Jack Howarth <howarth@bromo.med.uc.edu> PR target/49461 * configure.ac (SYSTEMSPEC): No longer pass -no_pie for darwin11. * configure: Regenerate.