[patch] Fix oddity in personality routine

Andrew Haley aph@redhat.com
Fri Dec 4 16:06:00 GMT 2009


Jack Howarth wrote:
> On Fri, Dec 04, 2009 at 03:48:03PM +0000, Andrew Haley wrote:
>> Jack Howarth wrote:
>>> On Fri, Dec 04, 2009 at 02:59:43PM +0000, Andrew Haley wrote:
>>>>>      I suspect we may have a layered problem here and need
>>>>> to work through each section. This weekend, I do some additional
>>>>> builds to verify that the crash debugs to the same locations
>>>>> in both darwin9 and darwin10 with and without the proposed
>>>>> patch to pass -Wl,-allow_stack_execute on GCJLINK.
>>>> Right.
>>>>
>>> Andrew,
>>>    Just to double check, you do agree that everything linked with 
>>> GCJLINK should be passed -Wl,-allow_stack_execute on darwin9/darwin10?
>> I think so.
>>
>>> I am a bit confused by the criteria used to determine which java binaries
>>> need the ld flag for -allow_stack_execute. If the a shared library contains
>>> code that needs to execute on the stack
>> No gcj library needs to execute on the stack, only the heap.  I think the flag
>> is misnamed.
>>
>>> (libgcj) shouldn't any executable
>>> that links in that shared lib use the -allow_stack_execute ld flag?
>> Yes, which is why I suggested you use SYSTEMSPEC.  (Twice now, I think.  :-)
>>
>> SYSTEMSPEC should pass that flag to everything liked with gcj.

>     I tried SYSTEMSPEC last night and it didn't eliminate the crashes in gcj. I'll double
> check that tonight and specifically look for when libtool is using gcj to link to make
> sure the -allow_stack_execute flag is invoked. If so, I'll make sure that the location of
> the crash in gcj has shifted as it did when passing -Wl,-allow_stack_execute on GCJLINK.

OK.

> ps Should I take this to mean that SYSTEMSPEC will cause gcj to automatically pass
> -Wl,-allow_stack_execute when it links code? I assume I should be able to see that with
> -v being pased to gcj.

Yes.  This should work everywhere, all the time.

> What confuses me is that gcj -v shows ejc1 being invoked.

Yes.

> So does ecj1 get the -Wl,-allow_stack_execute passed on from gcj or should it be invoking
> -Wl,-allow_stack_execute on its own from SYSTEMSPEC?

ecj1 doesn't get passed -allow_stack_execute, the linker does.  Adding -allow_stack_execute
to SYSTEMSPEC will make sure that the linker is always passed this command.

Bryce's patch is right, I think.

Andrew.



More information about the Java mailing list