This is the mail archive of the java-patches@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH]: Pass -no_pie on SYSTEMSPEC for darwin11


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]