Patchwork [libjava] use -fnon-call-exceptions rather than -fasynchronous-unwind-tables.

login
register
mail settings
Submitter IainS
Date Aug. 18, 2010, 9:30 a.m.
Message ID <6533D5F3-D5AE-475F-A309-625BC7ACBF48@sandoe-acoustics.co.uk>
Download mbox | patch
Permalink /patch/62015/
State New
Headers show

Comments

IainS - Aug. 18, 2010, 9:30 a.m.
Hi
IIUC, the following should be the 'correct' approach.
OK for trunk? (with an appropriate changelog,  of course).
Iain
Richard Guenther - Aug. 18, 2010, 9:40 a.m.
On Wed, Aug 18, 2010 at 11:30 AM, IainS
<developer@sandoe-acoustics.co.uk> wrote:
> Hi
> IIUC, the following should be the 'correct' approach.
> OK for trunk? (with an appropriate changelog,  of course).
> Iain

That doens't match what the comment says.  What is it the correct
approach for?

> Index: libjava/classpath/configure.ac
> ===================================================================
> --- libjava/classpath/configure.ac      (revision 163330)
> +++ libjava/classpath/configure.ac      (working copy)
> @@ -563,7 +563,7 @@ if test "x${COMPILE_JNI}" = xyes; then
>     dnl CFLAGS that are used for all native code.  We want to compile
>     dnl everything with unwinder data so that backtrace() will always
>     dnl work.
> -    EXTRA_CFLAGS='-fexceptions -fasynchronous-unwind-tables'
> +    EXTRA_CFLAGS='-fexceptions -fnon-call-exceptions'
>     AC_SUBST(EXTRA_CFLAGS)
>
>     dnl Strict warning flags which not every module uses.
>
>
Andrew Haley - Aug. 18, 2010, 9:41 a.m.
On 08/18/2010 10:30 AM, IainS wrote:

> IIUC, the following should be the 'correct' approach.
> OK for trunk? (with an appropriate changelog,  of course).

What's the point of this change?

See
http://developer.classpath.org/pipermail/classpath-patches/2008-June/006116.html

Andrew.
Jakub Jelinek - Aug. 18, 2010, 9:45 a.m.
On Wed, Aug 18, 2010 at 11:40:15AM +0200, Richard Guenther wrote:
> On Wed, Aug 18, 2010 at 11:30 AM, IainS
> <developer@sandoe-acoustics.co.uk> wrote:
> > IIUC, the following should be the 'correct' approach.
> > OK for trunk? (with an appropriate changelog,  of course).
> > Iain
> 
> That doens't match what the comment says.  What is it the correct
> approach for?

Yeah, I think -fa-u-t is right, otherwise you can't backtrace through
signal handlers.  If Darwin unwinder is lame enough that it can't grok it,
let it change just on Darwin and don't punish sane OSes.

> > --- libjava/classpath/configure.ac      (revision 163330)
> > +++ libjava/classpath/configure.ac      (working copy)
> > @@ -563,7 +563,7 @@ if test "x${COMPILE_JNI}" = xyes; then
> >     dnl CFLAGS that are used for all native code.  We want to compile
> >     dnl everything with unwinder data so that backtrace() will always
> >     dnl work.
> > -    EXTRA_CFLAGS='-fexceptions -fasynchronous-unwind-tables'
> > +    EXTRA_CFLAGS='-fexceptions -fnon-call-exceptions'
> >     AC_SUBST(EXTRA_CFLAGS)
> >
> >     dnl Strict warning flags which not every module uses.
> >
> >

	Jakub
IainS - Aug. 18, 2010, 9:46 a.m.
On 18 Aug 2010, at 10:40, Richard Guenther wrote:

> On Wed, Aug 18, 2010 at 11:30 AM, IainS
> <developer@sandoe-acoustics.co.uk> wrote:
>> Hi
>> IIUC, the following should be the 'correct' approach.
>> OK for trunk? (with an appropriate changelog,  of course).
>> Iain
>
> That doens't match what the comment says.  What is it the correct
> approach for?

true, I missed adjusting the comment.

I think that the point is that the underlying requirement is to handle  
non-call-exceptions, and that the method by which that is achieved  
should be left to the target to decide.

[at present -fasynchronous-unwind-tables is set unconditionally by - 
fnon-call-exception in any case (although I'm not sure that's correct  
in all cases)]

>> Index: libjava/classpath/configure.ac
>> ===================================================================
>> --- libjava/classpath/configure.ac      (revision 163330)
>> +++ libjava/classpath/configure.ac      (working copy)
>> @@ -563,7 +563,7 @@ if test "x${COMPILE_JNI}" = xyes; then
>>     dnl CFLAGS that are used for all native code.  We want to compile
>>     dnl everything with unwinder data so that backtrace() will always
>>     dnl work.
>> -    EXTRA_CFLAGS='-fexceptions -fasynchronous-unwind-tables'
>> +    EXTRA_CFLAGS='-fexceptions -fnon-call-exceptions'
>>     AC_SUBST(EXTRA_CFLAGS)
>>
>>     dnl Strict warning flags which not every module uses.
>>
>>
Richard Henderson - Aug. 18, 2010, 3:08 p.m.
On 08/18/2010 02:45 AM, Jakub Jelinek wrote:
> On Wed, Aug 18, 2010 at 11:40:15AM +0200, Richard Guenther wrote:
>> On Wed, Aug 18, 2010 at 11:30 AM, IainS
>> <developer@sandoe-acoustics.co.uk> wrote:
>>> IIUC, the following should be the 'correct' approach.
>>> OK for trunk? (with an appropriate changelog,  of course).
>>> Iain
>>
>> That doens't match what the comment says.  What is it the correct
>> approach for?
> 
> Yeah, I think -fa-u-t is right, otherwise you can't backtrace through
> signal handlers.  If Darwin unwinder is lame enough that it can't grok it,
> let it change just on Darwin and don't punish sane OSes.

Except that the signal handlers that java wants to backtrace through
are all synchronous.  They'll never occur in the epilogue of some
function, for instance.  Otherwise libjava would have failed to work
for years and years.


r~
Mike Stump - Aug. 18, 2010, 4:34 p.m.
On Aug 18, 2010, at 2:45 AM, Jakub Jelinek wrote:
> Yeah, I think -fa-u-t is right, otherwise you can't backtrace through
> signal handlers.  If Darwin unwinder is lame enough that it can't grok it,
> let it change just on Darwin and don't punish sane OSes.

Walking the darwin signal handers works just fine...  I can't recall exactly how well the async signals work v the sync signals.

Patch

Index: libjava/classpath/configure.ac
===================================================================
--- libjava/classpath/configure.ac	(revision 163330)
+++ libjava/classpath/configure.ac	(working copy)
@@ -563,7 +563,7 @@  if test "x${COMPILE_JNI}" = xyes; then
      dnl CFLAGS that are used for all native code.  We want to compile
      dnl everything with unwinder data so that backtrace() will always
      dnl work.
-    EXTRA_CFLAGS='-fexceptions -fasynchronous-unwind-tables'
+    EXTRA_CFLAGS='-fexceptions -fnon-call-exceptions'
      AC_SUBST(EXTRA_CFLAGS)

      dnl Strict warning flags which not every module uses.