[PATCH]: Fix PR52179 and remove hack from PR48299

2012-02-23 Thread Jack Howarth
  The attached patch implements the fix for supporting aslr on darwin11 and 
later which exists
in current upstream boehm-gc, as discussed in 
https://github.com/ivmai/bdwgc/issues/13; see
https://github.com/ivmai/bdwgc/commit/faef04e7cb3741163dfdf65900ef5d2a0530be0f.
This change eliminates the test failures in boehm-gc testsuite except for 
random failures

WARNING: program timed out.
FAIL: boehm-gc.c/thread_leak_test.c -O2 execution test
Running
/sw/src/fink.build/gcc47-4.7.0-1/gcc-4.7-20120222/boehm-gc/testsuite/boehm-gc.lib/lib.exp

due to PR48299. Fixing PR52179 allows us to stop passing -Wl,-no_pie on 
SYSTEMSPEC,
by reverting r175182, without regressions in the libjava testsuite. Bootstrap 
and regression 
tested on x86_64-apple-darwin11. Okay for gcc trunk for gcc 4.7 since this is 
target specific?
   Jack


2012-02-23  Patrick Marlier  patrick.marl...@gmail.com
Jack Howarth  howa...@bromo.med.uc.edu

boehm-gc/

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/

PR target/49461
* configure.ac (SYSTEMSPEC): No longer pass -no_pie for darwin11.
* configure: Regenerate.


Index: boehm-gc/configure.ac
===
--- boehm-gc/configure.ac   (revision 184521)
+++ boehm-gc/configure.ac   (working copy)
@@ -380,6 +380,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
Index: boehm-gc/include/gc_config.h.in
===
--- boehm-gc/include/gc_config.h.in (revision 184521)
+++ boehm-gc/include/gc_config.h.in (working copy)
@@ -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
 
Index: boehm-gc/include/private/gcconfig.h
===
--- boehm-gc/include/private/gcconfig.h (revision 184521)
+++ boehm-gc/include/private/gcconfig.h (working copy)
@@ -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) 0xc000)
+# ifdef HAVE_PTHREAD_GET_STACKADDR_NP
+#   define STACKBOTTOM (ptr_t)pthread_get_stackaddr_np(pthread_self())
+# else
+#   define STACKBOTTOM ((ptr_t) 0xc000)
+# endif
 # define USE_MMAP
 # define USE_MMAP_ANON
 # define USE_ASM_PUSH_REGS
@@ -2014,7 +2018,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) 0x7fff5fc0)
+# ifdef HAVE_PTHREAD_GET_STACKADDR_NP
+#   define STACKBOTTOM (ptr_t)pthread_get_stackaddr_np(pthread_self())
+# else
+#   define STACKBOTTOM ((ptr_t) 0x7fff5fc0)
+# endif
 # define USE_MMAP
 # define USE_MMAP_ANON
 # ifdef GC_DARWIN_THREADS
Index: libjava/configure.ac
===
--- libjava/configure.ac(revision 184521)
+++ libjava/configure.ac(working copy)
@@ -898,14 +898,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=
 ;;


Re: [PATCH]: Fix PR52179 and remove hack from PR48299

2012-02-23 Thread Mike Stump
On Feb 23, 2012, at 1:03 PM, Jack Howarth wrote:
 Okay for gcc trunk for gcc 4.7 since this is target specific?

Ok.

 2012-02-23  Patrick Marlier  patrick.marl...@gmail.com
   Jack Howarth  howa...@bromo.med.uc.edu
 
 boehm-gc/
 
   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/
 
   PR target/49461
   * configure.ac (SYSTEMSPEC): No longer pass -no_pie for darwin11.
   * configure: Regenerate.