public inbox for java-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* Compile all native code with '-fexceptions -fasynchronous-unwind-tables'
@ 2008-06-24 13:35 Andrew Haley
  0 siblings, 0 replies; only message in thread
From: Andrew Haley @ 2008-06-24 13:35 UTC (permalink / raw)
  To: Java Patch List

We haven't been compiling all JNI code with -fexceptions, and on ARM this has
the unfortunate effect of causing the VM to hang when generating stack traces.
-fasynchronous-unwind-tables is used here because it adds little to the size
of the unwinder data and can generate more useful traces when we e.g trap
on a segfault.

I committed this in libjava and upstream Classpath.

Andrew.




2008-06-11  Andrew Haley  <aph@redhat.com>

        * native/jawt/Makefile.am,
        native/fdlibm/Makefile.am,
        native/jni/java-util/Makefile.am,
        native/jni/gstreamer-peer/Makefile.am,
        native/jni/native-lib/Makefile.am,
        native/jni/gconf-peer/Makefile.am,
        native/jni/gtk-peer/Makefile.am,
        native/jni/xmlj/Makefile.am,
        native/jni/midi-alsa/Makefile.am,
        native/jni/java-nio/Makefile.am,
        native/jni/midi-dssi/Makefile.am,
        native/jni/classpath/Makefile.am,
        native/jni/java-io/Makefile.am,
        native/jni/java-lang/Makefile.am,
        native/jni/java-net/Makefile.am (AM_CFLAGS): Add @EXTRA_CFLAGS@.
        * configure.ac (EXTRA_CFLAGS): New macro.

        * lib/Makefile.am (resources): Add .svn.

Index: classpath/native/jni/classpath/Makefile.am
===================================================================
--- classpath/native/jni/classpath/Makefile.am	(revision 137040)
+++ classpath/native/jni/classpath/Makefile.am	(working copy)
@@ -8,4 +8,5 @@

 AM_LDFLAGS = @CLASSPATH_CONVENIENCE@
 AM_CPPFLAGS = @CLASSPATH_INCLUDES@
-AM_CFLAGS = @WARNING_CFLAGS@ @STRICT_WARNING_CFLAGS@ @ERROR_CFLAGS@
+AM_CFLAGS = @WARNING_CFLAGS@ @STRICT_WARNING_CFLAGS@ @ERROR_CFLAGS@ \
+            @EXTRA_CFLAGS@
Index: classpath/native/jni/gstreamer-peer/Makefile.in
===================================================================
--- classpath/native/jni/gstreamer-peer/Makefile.in	(revision 137040)
+++ classpath/native/jni/gstreamer-peer/Makefile.in	(working copy)
@@ -165,6 +165,7 @@
 ERROR_CFLAGS = @ERROR_CFLAGS@
 EXAMPLESDIR = @EXAMPLESDIR@
 EXEEXT = @EXEEXT@
+EXTRA_CFLAGS = @EXTRA_CFLAGS@
 FASTJAR = @FASTJAR@
 FGREP = @FGREP@
 FIND = @FIND@
@@ -361,7 +362,8 @@
 # gstreamer contain broken prototypes (by design).
 AM_CFLAGS = @WARNING_CFLAGS@ -Wno-write-strings -Wno-missing-field-initializers \
             @ERROR_CFLAGS@ -Wno-unused-parameter @GSTREAMER_BASE_CFLAGS@ \
-            @GDK_CFLAGS@ @GSTREAMER_CFLAGS@ @GSTREAMER_PLUGINS_BASE_CFLAGS@
+            @GDK_CFLAGS@ @GSTREAMER_CFLAGS@ @GSTREAMER_PLUGINS_BASE_CFLAGS@ \
+            @EXTRA_CFLAGS@

 all: all-am

Index: classpath/native/jni/gstreamer-peer/Makefile.am
===================================================================
--- classpath/native/jni/gstreamer-peer/Makefile.am	(revision 137040)
+++ classpath/native/jni/gstreamer-peer/Makefile.am	(working copy)
@@ -19,4 +19,5 @@
 # gstreamer contain broken prototypes (by design).
 AM_CFLAGS = @WARNING_CFLAGS@ -Wno-write-strings -Wno-missing-field-initializers \
             @ERROR_CFLAGS@ -Wno-unused-parameter @GSTREAMER_BASE_CFLAGS@ \
-            @GDK_CFLAGS@ @GSTREAMER_CFLAGS@ @GSTREAMER_PLUGINS_BASE_CFLAGS@
+            @GDK_CFLAGS@ @GSTREAMER_CFLAGS@ @GSTREAMER_PLUGINS_BASE_CFLAGS@ \
+            @EXTRA_CFLAGS@
Index: classpath/native/jni/midi-dssi/Makefile.am
===================================================================
--- classpath/native/jni/midi-dssi/Makefile.am	(revision 137040)
+++ classpath/native/jni/midi-dssi/Makefile.am	(working copy)
@@ -12,4 +12,4 @@
 # No STRICT_WARNING_CFLAGS here as we use dlsym to load the address of
 # a function,and ISO C prohibits casting void pointers, like those returned
 # by dlsym, to function pointers.
-AM_CFLAGS = @WARNING_CFLAGS@ @ERROR_CFLAGS@
+AM_CFLAGS = @WARNING_CFLAGS@ @ERROR_CFLAGS@ @EXTRA_CFLAGS@
Index: classpath/native/jni/gconf-peer/Makefile.am
===================================================================
--- classpath/native/jni/gconf-peer/Makefile.am	(revision 137040)
+++ classpath/native/jni/gconf-peer/Makefile.am	(working copy)
@@ -10,4 +10,5 @@

 AM_CPPFLAGS = @CLASSPATH_INCLUDES@

-AM_CFLAGS = @WARNING_CFLAGS@ @ERROR_CFLAGS@ @GCONF_CFLAGS@ @GDK_CFLAGS@
+AM_CFLAGS = @WARNING_CFLAGS@ @ERROR_CFLAGS@ @GCONF_CFLAGS@ @GDK_CFLAGS@ \
+            @EXTRA_CFLAGS@
Index: classpath/native/jni/java-io/Makefile.am
===================================================================
--- classpath/native/jni/java-io/Makefile.am	(revision 137040)
+++ classpath/native/jni/java-io/Makefile.am	(working copy)
@@ -9,4 +9,5 @@

 AM_LDFLAGS = @CLASSPATH_MODULE@
 AM_CPPFLAGS = @CLASSPATH_INCLUDES@
-AM_CFLAGS = @WARNING_CFLAGS@ @STRICT_WARNING_CFLAGS@ @ERROR_CFLAGS@
+AM_CFLAGS = @WARNING_CFLAGS@ @STRICT_WARNING_CFLAGS@ @ERROR_CFLAGS@ \
+            @EXTRA_CFLAGS@
Index: classpath/native/jni/native-lib/Makefile.am
===================================================================
--- classpath/native/jni/native-lib/Makefile.am	(revision 137040)
+++ classpath/native/jni/native-lib/Makefile.am	(working copy)
@@ -9,4 +9,5 @@

 AM_LDFLAGS = @CLASSPATH_MODULE@
 AM_CPPFLAGS = @CLASSPATH_INCLUDES@
-AM_CFLAGS = @WARNING_CFLAGS@ @STRICT_WARNING_CFLAGS@ @ERROR_CFLAGS@
+AM_CFLAGS = @WARNING_CFLAGS@ @STRICT_WARNING_CFLAGS@ @ERROR_CFLAGS@ \
+            @EXTRA_CFLAGS@
Index: classpath/native/jni/java-util/Makefile.am
===================================================================
--- classpath/native/jni/java-util/Makefile.am	(revision 137040)
+++ classpath/native/jni/java-util/Makefile.am	(working copy)
@@ -4,4 +4,6 @@

 AM_LDFLAGS = @CLASSPATH_MODULE@
 AM_CPPFLAGS = @CLASSPATH_INCLUDES@
-AM_CFLAGS = @WARNING_CFLAGS@ @STRICT_WARNING_CFLAGS@ @ERROR_CFLAGS@
+AM_CFLAGS = @WARNING_CFLAGS@ @STRICT_WARNING_CFLAGS@ @ERROR_CFLAGS@ \
+            @EXTRA_CFLAGS@
+
Index: classpath/native/jni/java-lang/Makefile.am
===================================================================
--- classpath/native/jni/java-lang/Makefile.am	(revision 137040)
+++ classpath/native/jni/java-lang/Makefile.am	(working copy)
@@ -16,4 +16,5 @@

 AM_LDFLAGS = @CLASSPATH_MODULE@
 AM_CPPFLAGS = @CLASSPATH_INCLUDES@ -I$(top_srcdir)/native/fdlibm
-AM_CFLAGS = @WARNING_CFLAGS@ @STRICT_WARNING_CFLAGS@ @ERROR_CFLAGS@
+AM_CFLAGS = @WARNING_CFLAGS@ @STRICT_WARNING_CFLAGS@ @ERROR_CFLAGS@ \
+            @EXTRA_CFLAGS@
Index: classpath/native/jni/midi-alsa/Makefile.am
===================================================================
--- classpath/native/jni/midi-alsa/Makefile.am	(revision 137040)
+++ classpath/native/jni/midi-alsa/Makefile.am	(working copy)
@@ -9,4 +9,5 @@

 AM_LDFLAGS = @CLASSPATH_MODULE@
 AM_CPPFLAGS = @CLASSPATH_INCLUDES@ `pkg-config  --cflags-only-I alsa`
-AM_CFLAGS = @WARNING_CFLAGS@ @STRICT_WARNING_CFLAGS@ @ERROR_CFLAGS@ `pkg-config --cflags-only-other alsa`
+AM_CFLAGS = @WARNING_CFLAGS@ @STRICT_WARNING_CFLAGS@ @ERROR_CFLAGS@ `pkg-config --cflags-only-other alsa` \
+            @EXTRA_CFLAGS@
Index: classpath/native/jni/java-nio/Makefile.am
===================================================================
--- classpath/native/jni/java-nio/Makefile.am	(revision 137040)
+++ classpath/native/jni/java-nio/Makefile.am	(working copy)
@@ -20,4 +20,5 @@

 AM_LDFLAGS = @CLASSPATH_MODULE@
 AM_CPPFLAGS = @CLASSPATH_INCLUDES@
-AM_CFLAGS = @WARNING_CFLAGS@ @STRICT_WARNING_CFLAGS@ @ERROR_CFLAGS@
+AM_CFLAGS = @WARNING_CFLAGS@ @STRICT_WARNING_CFLAGS@ @ERROR_CFLAGS@ \
+            @EXTRA_CFLAGS@
Index: classpath/native/jni/java-net/Makefile.am
===================================================================
--- classpath/native/jni/java-net/Makefile.am	(revision 137040)
+++ classpath/native/jni/java-net/Makefile.am	(working copy)
@@ -22,4 +22,5 @@

 AM_LDFLAGS = @CLASSPATH_MODULE@
 AM_CPPFLAGS = @CLASSPATH_INCLUDES@
-AM_CFLAGS = @WARNING_CFLAGS@ @STRICT_WARNING_CFLAGS@ @ERROR_CFLAGS@
+AM_CFLAGS = @WARNING_CFLAGS@ @STRICT_WARNING_CFLAGS@ @ERROR_CFLAGS@ \
+            @EXTRA_CFLAGS@
Index: classpath/native/jni/xmlj/Makefile.am
===================================================================
--- classpath/native/jni/xmlj/Makefile.am	(revision 137040)
+++ classpath/native/jni/xmlj/Makefile.am	(working copy)
@@ -22,6 +22,7 @@
 AM_CPPFLAGS = @CLASSPATH_INCLUDES@

 # Don't enable ERROR flags. Code isn't warning free yet.
-AM_CFLAGS = @WARNING_CFLAGS@ @STRICT_WARNING_CFLAGS@ @XML_CFLAGS@ @XSLT_CFLAGS@
+AM_CFLAGS = @WARNING_CFLAGS@ @STRICT_WARNING_CFLAGS@ @XML_CFLAGS@ \
+            @XSLT_CFLAGS@ @EXTRA_CFLAGS@

 EXTRA_DIST = BUGS
Index: classpath/native/jni/gtk-peer/Makefile.am
===================================================================
--- classpath/native/jni/gtk-peer/Makefile.am	(revision 137040)
+++ classpath/native/jni/gtk-peer/Makefile.am	(working copy)
@@ -58,4 +58,4 @@
 # headers contain broken prototypes (by design, see gtkitemfactory.h).
 AM_CFLAGS = @WARNING_CFLAGS@ @ERROR_CFLAGS@ \
             @GTK_CFLAGS@ @FREETYPE2_CFLAGS@ @PANGOFT2_CFLAGS@ \
-            @X_CFLAGS@
+            @X_CFLAGS@ @EXTRA_CFLAGS@
Index: classpath/native/jawt/Makefile.am
===================================================================
--- classpath/native/jawt/Makefile.am	(revision 137040)
+++ classpath/native/jawt/Makefile.am	(working copy)
@@ -10,4 +10,4 @@
 # Just the WARNING_CFLAGS. We cannot use the strict flags since the gtk
 # headers contain broken prototypes (by design, see gtkitemfactory.h).
 AM_CFLAGS = @WARNING_CFLAGS@ @ERROR_CFLAGS@ \
-            @GTK_CFLAGS@ @PANGOFT2_CFLAGS@
+            @GTK_CFLAGS@ @PANGOFT2_CFLAGS@ @EXTRA_CFLAGS@
Index: classpath/native/fdlibm/Makefile.am
===================================================================
--- classpath/native/fdlibm/Makefile.am	(revision 137040)
+++ classpath/native/fdlibm/Makefile.am	(working copy)
@@ -60,6 +60,6 @@

 AM_LDFLAGS = @CLASSPATH_CONVENIENCE@

-# We just want the standard flags for fdlibm since it is an upstream lib
-# and our normal -pedantic -Wall -Werror breaks this lib. So no AM_CFLAGS.
-# We also don't need extra includes, so no AM_CPPFLAGS either.
+AM_CFLAGS = @EXTRA_CFLAGS@
+
+# We don't need extra includes, so no AM_CPPFLAGS.
Index: classpath/configure.ac
===================================================================
--- classpath/configure.ac	(revision 137040)
+++ classpath/configure.ac	(working copy)
@@ -503,6 +503,12 @@
     WARNING_CFLAGS='-W -Wall -Wmissing-declarations -Wwrite-strings -Wmissing-prototypes -Wno-long-long'
     AC_SUBST(WARNING_CFLAGS)

+    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'
+    AC_SUBST(EXTRA_CFLAGS)
+
     dnl Strict warning flags which not every module uses.
     dnl Should probably be configurable.
     STRICT_WARNING_CFLAGS='-Wstrict-prototypes -pedantic'
Index: classpath/lib/Makefile.am
===================================================================
--- classpath/lib/Makefile.am	(revision 137040)
+++ classpath/lib/Makefile.am	(working copy)
@@ -96,7 +96,7 @@
           if ! test -d "$$dirname"; then mkdir -p "$$dirname"; fi; \
 	  cp $(top_srcdir)/resource/$$p $$p; \
 	done
-	@list=`cd $(top_srcdir)/resource && $(FIND) META-INF -name CVS -prune -o -name \*\.in -prune -o -type f -print`; for p in $$list; do \
+	@list=`cd $(top_srcdir)/resource && $(FIND) META-INF -name CVS -prune -o -name .svn -prune -o -name \*\.in -prune -o -type f -print`; for p in $$list; do \
           dirname=`dirname $$p`; \
           if ! test -d "$$dirname"; then mkdir -p "$$dirname"; fi; \
 	  cp $(top_srcdir)/resource/$$p $$p; \

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2008-06-24 13:35 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-06-24 13:35 Compile all native code with '-fexceptions -fasynchronous-unwind-tables' Andrew Haley

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).