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 <howa...@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= > ;;