diff mbox

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

Message ID 6533D5F3-D5AE-475F-A309-625BC7ACBF48@sandoe-acoustics.co.uk
State New
Headers show

Commit Message

Iain Sandoe Aug. 18, 2010, 9:30 a.m. UTC
Hi
IIUC, the following should be the 'correct' approach.
OK for trunk? (with an appropriate changelog,  of course).
Iain

Comments

Richard Biener Aug. 18, 2010, 9:40 a.m. UTC | #1
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. UTC | #2
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. UTC | #3
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
Iain Sandoe Aug. 18, 2010, 9:46 a.m. UTC | #4
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. UTC | #5
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. UTC | #6
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.
diff mbox

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.