Patchwork backport r184555 to gcc-4_6-branch

login
register
mail settings
Submitter Jack Howarth
Date Feb. 25, 2012, 2:45 a.m.
Message ID <20120225024522.GA18023@bromo.med.uc.edu>
Download mbox | patch
Permalink /patch/143008/
State New
Headers show

Comments

Jack Howarth - Feb. 25, 2012, 2:45 a.m.
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.
Mike Stump - Feb. 25, 2012, 5:28 a.m.
On Feb 24, 2012, at 6:45 PM, Jack Howarth <howarth@bromo.med.uc.edu> wrote:
>   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?

Ok after it reopens.

Patch

Index: boehm-gc/configure.ac
===================================================================
--- boehm-gc/configure.ac	(revision 184553)
+++ boehm-gc/configure.ac	(working copy)
@@ -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
Index: boehm-gc/include/gc_config.h.in
===================================================================
--- boehm-gc/include/gc_config.h.in	(revision 184553)
+++ 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 184553)
+++ 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) 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
Index: libjava/configure.ac
===================================================================
--- libjava/configure.ac	(revision 184553)
+++ libjava/configure.ac	(working copy)
@@ -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=
     ;;