Comments

Hi Mike, Jack,
On 17 Jun 2011, at 20:24, Jack Howarth wrote:
> On Fri, Jun 17, 2011 at 10:43:07AM -0700, Mike Stump wrote:>> 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?>> Since SYSTEMSPEC in configure.ac is setting system specific > options for libgcj.spec.in, it seemed> the most rational place to append -no_pie to (and we already had a > darwin entry in the case statement).> FYI, I also tried a different approach of not appending -no_pie > SYSTEMSPEC on darwin but instead using...
maybe I need more coffee .. and the gcc gathering was very sociable...
but...
... It seems to me that switching pie off in libjava spec == switching
pie off for every java program.
(i.e. it doesn't seem equivalent to BOOT_CFLAGS, but maybe I'm still
missing something).
>> 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.>> I plan on opening a PR shortly, but I was hoping to be able to > reproduce the same failures under linux> using a bootstrap with the compiler defaulted to -fPIC code > generation and the inverse change applied> to linux of...
The thing that is not clear is this.
libjava (and boehm-gc) with pie passes on d9 and d10 (modulo a test-
suite related kludge); so it doesn't seem that there's a fundamental
problem.
(c.f. PCH, which won't work with pie, by definition from its design).
AFAIR ecj1 is not involved in the libjava tests - because they don't
actually compile from .java.
(I'm not debating that there is a problem with ecj1 - but maybe that
needs to be solved in the explicit build instructions for that
executable).
----
So is this 'fix' a work-around for a tool bug... or is there really a
lurking problem in boehm-gc/libjava that is uncovered by darwin11?
we seem to be switching off pie without actually pointing at the
reason for doing so...
Iain