]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR java/5986 (SIGSEGV in __gcj_personality_v0)
authorTom Tromey <tromey@redhat.com>
Fri, 29 Mar 2002 00:42:54 +0000 (00:42 +0000)
committerTom Tromey <tromey@gcc.gnu.org>
Fri, 29 Mar 2002 00:42:54 +0000 (00:42 +0000)
* except.c (expand_end_java_handler): If the handler type is NULL,
use java.lang.Throwable.  Fixes PR java/5986.

From-SVN: r51539

gcc/java/ChangeLog
gcc/java/except.c

index c1206c46c122b278d85bc87304f8b68f63a8e94a..21be2063c834cd0371e2f1c2d565208909e3e0c3 100644 (file)
@@ -1,3 +1,8 @@
+2002-03-28  Tom Tromey  <tromey@redhat.com>
+
+       * except.c (expand_end_java_handler): If the handler type is NULL,
+       use java.lang.Throwable.  Fixes PR java/5986.
+
 2002-03-28  Alexandre Petit-Bianco  <apbianco@redhat.com>
 
        Fix for PR java/4715:
index 184f7e5a88be2b1d34966e4b4e8388ed62b15c15..5b315185807aa3d425ba08dcbad7be3d6246302c 100644 (file)
@@ -1,5 +1,5 @@
 /* Handle exceptions for GNU compiler for the Java(TM) language.
-   Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+   Copyright (C) 1997, 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
 
 This file is part of GNU CC.
 
@@ -372,7 +372,17 @@ expand_end_java_handler (range)
   expand_start_all_catch ();
   for ( ; handler != NULL_TREE; handler = TREE_CHAIN (handler))
     {
-      expand_start_catch (TREE_PURPOSE (handler));
+      /* For bytecode we treat exceptions a little unusually.  A
+        `finally' clause looks like an ordinary exception handler for
+        Throwable.  The reason for this is that the bytecode has
+        already expanded the finally logic, and we would have to do
+        extra (and difficult) work to get this to look like a
+        gcc-style finally clause.  */
+      tree type = TREE_PURPOSE (handler);
+      if (type == NULL)
+       type = throwable_type_node;
+
+      expand_start_catch (type);
       expand_goto (TREE_VALUE (handler));
       expand_end_catch ();
     }