This is the mail archive of the
java-patches@gcc.gnu.org
mailing list for the Java project.
Re: [PATCH]: Pass -no_pie on SYSTEMSPEC for darwin11
- From: Mike Stump <mikestump at comcast dot net>
- To: Jack Howarth <howarth at bromo dot med dot uc dot edu>
- Cc: gcc-patches List <gcc-patches at gcc dot gnu dot org>, Iain Sandoe <iains at gcc dot gnu dot org>, Java Patches <java-patches at gcc dot gnu dot org>
- Date: Fri, 17 Jun 2011 10:43:07 -0700
- Subject: Re: [PATCH]: Pass -no_pie on SYSTEMSPEC for darwin11
- References: <20110617022132.GA18745@bromo.med.uc.edu>
On Jun 16, 2011, at 7:21 PM, Jack Howarth wrote:
> The gcj compiler needs to pass -no_pie for linkage on darwin11 due to the new -pie
> default of the linker. The attached patch accomplishes this by passing -no_pie on SYSTEMSPEC
> for *-*-darwin[12]*. Since Darwin10 supports -no_pie in its linker, I included it in the
> triplet match to simplify the syntax. Bootstrap and tested on x86_64-apple-darwin11.
> Okay for gcc trunk?
The darwin aspects of this seem right to me. I'm less familiar with the SYSTEMSPEC bit in libjava, someone want to give a quick comment on if this is the right knob to twist?
Roughly, there are unresolved issues with position independent code with the garbage collector (or was it a problem with some unknown bit in the compiler), and this just turns off a new OS default for java to work around the issue. I hope that's an at least half way accurate description. We're aiming to have the default for C be -fpie, but for java, no pie. For the C compiler, we must build the compiler without -pie in order for PCH to work. It is reasonable to turn off pie in the java compiler as well.
Jack, do we have a PR number for this? If so, please include in the changelog in the usual spot.
> 2011-06-16 Jack Howarth <howarth@bromo.med.uc.edu>
>
> * libjava/configure.ac (SYSTEMSPEC): Pass -no_pie for darwin11.
> * libjava/configure: Regenerate.
>
>
> Index: libjava/configure.ac
> ===================================================================
> --- libjava/configure.ac (revision 175131)
> +++ libjava/configure.ac (working copy)
> @@ -898,9 +898,12 @@ case "${host}" in
> SYSTEMSPEC="-lunicows $SYSTEMSPEC"
> fi
> ;;
> - *-*-darwin[[912]]*)
> + *-*-darwin9*)
> SYSTEMSPEC="%{!Zdynamiclib:%{!Zbundle:-allow_stack_execute}}"
> ;;
> + *-*-darwin[[12]]*)
> + SYSTEMSPEC="-no_pie %{!Zdynamiclib:%{!Zbundle:-allow_stack_execute}}"
> + ;;
> *)
> SYSTEMSPEC=
> ;;