aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libjava/ChangeLog5
-rw-r--r--libjava/java/lang/natClassLoader.cc6
-rw-r--r--libjava/prims.cc1
3 files changed, 12 insertions, 0 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index 40ce7ee333e..8dde1eb2e97 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,8 @@
+2007-01-31 Andrew Haley <aph@redhat.com>
+
+ * prims.cc (_Jv_Abort): fflush (stderr).
+ * java/lang/natClassLoader.cc (_Jv_CheckABIVersion): Abort.
+
2007-01-31 Tom Tromey <tromey@redhat.com>
* configure, Makefile.in: Rebuilt.
diff --git a/libjava/java/lang/natClassLoader.cc b/libjava/java/lang/natClassLoader.cc
index 9c1a6a258ec..e62c6d39281 100644
--- a/libjava/java/lang/natClassLoader.cc
+++ b/libjava/java/lang/natClassLoader.cc
@@ -208,6 +208,12 @@ _Jv_CheckABIVersion (unsigned long value)
// C++ ABI
if (version == GCJ_CXX_ABI_VERSION)
return;
+
+ // If we've loaded a library that uses the C++ ABI, and this
+ // library is an incompatible version, then we're dead. There's
+ // no point throwing an exception: that will crash.
+ JvFail ("gcj linkage error.\n"
+ "Incorrect library ABI version detected. Aborting.\n");
}
throw new ::java::lang::ClassFormatError
diff --git a/libjava/prims.cc b/libjava/prims.cc
index e205dbbe521..a41912064e4 100644
--- a/libjava/prims.cc
+++ b/libjava/prims.cc
@@ -458,6 +458,7 @@ _Jv_Abort (const char *, const char *, int, const char *message)
#else
fprintf (stderr, "libgcj failure: %s\n", message);
#endif
+ fflush (stderr);
abort ();
}