Hi Andrew,

On Wed, 2008-06-11 at 13:23 +0100, Andrew Haley wrote:
> Classpath, when built as part of gcj, doesn't inherit CFLAGS from
> the gcj configury.  As as consequence of this, JNI native code is built
> without unwinder data, and backtraces (and exceptions) through native
> code don't work.
> 
> The solution for this is to compile all native code with -fexceptions.
> I could make this a gcj-local patch, but I don't want to add to
> Classpath-libgcj divergence, and unwinder data may well be useful
> even in non-gcj builds.  It adds a little to the size of the executables
> on disk but it adds nothing to the memory they occupy, and you get a
> chance to have a working backtrace() for debugging.
> 
> Classpath has no CFLAGS macro that applies to all native code, so I had
> to add one, EXTRA_CFLAGS.

I think this approach is good. Thanks.

> +    dnl CFLAGS that are used for all native code.
> +    dnl We want to compile everything with unwinder data so that backrace()

Typo. Backtrace().

> +    dnl will always work.
> +    EXTRA_CFLAGS='-fexceptions -fnon-call-exceptions'
> +    AC_SUBST(EXTRA_CFLAGS)

I am afraid you are more qualified in this subject than I am, but would
any non-call-exceptions actually happen in JNI code? If you want full
coverage (for usage by a garbage collector or other asynchronous thread
interrupt) wouldn't -fasynchronous-unwind-tables be more appropriate if
you want full coverage?

Cheers,

Mark


Reply via email to