*** empty log message ***
[deliverable/binutils-gdb.git] / gdb / exceptions.c
index 98e6f25829a7c5cac53d35af36d983b7693aa02e..304c8c6c27e1fba42395b20b11be39e114ca1907 100644 (file)
@@ -1,14 +1,14 @@
 /* Exception (throw catch) mechanism, for GDB, the GNU debugger.
 
-   Copyright 1986, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
-   1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free
-   Software Foundation, Inc.
+   Copyright (C) 1986, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
+   1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+   Free Software Foundation, Inc.
 
    This file is part of GDB.
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
+   the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
@@ -17,9 +17,7 @@
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "defs.h"
 #include "exceptions.h"
@@ -32,7 +30,7 @@
 #include "gdb_string.h"
 #include "serial.h"
 
-const struct exception exception_none = { 0, NO_ERROR, NULL };
+const struct gdb_exception exception_none = { 0, GDB_NO_ERROR, NULL };
 
 /* Possible catcher states.  */
 enum catcher_state {
@@ -58,7 +56,7 @@ struct catcher
   /* Jump buffer pointing back at the exception handler.  */
   EXCEPTIONS_SIGJMP_BUF buf;
   /* Status buffer belonging to the exception handler.  */
-  volatile struct exception *exception;
+  volatile struct gdb_exception *exception;
   /* Saved/current state.  */
   int mask;
   struct ui_out *saved_uiout;
@@ -72,14 +70,14 @@ static struct catcher *current_catcher;
 
 EXCEPTIONS_SIGJMP_BUF *
 exceptions_state_mc_init (struct ui_out *func_uiout,
-                         volatile struct exception *exception,
+                         volatile struct gdb_exception *exception,
                          return_mask mask)
 {
   struct catcher *new_catcher = XZALLOC (struct catcher);
 
   /* Start with no exception, save it's address.  */
   exception->reason = 0;
-  exception->error = NO_ERROR;
+  exception->error = GDB_NO_ERROR;
   exception->message = NULL;
   new_catcher->exception = exception;
 
@@ -174,7 +172,7 @@ exceptions_state_mc (enum catcher_action action)
        {
        case CATCH_ITER:
          {
-           struct exception exception = *current_catcher->exception;
+           struct gdb_exception exception = *current_catcher->exception;
            if (current_catcher->mask & RETURN_MASK (exception.reason))
              {
                /* Exit normally if this catcher can handle this
@@ -212,7 +210,7 @@ exceptions_state_mc_action_iter_1 (void)
 /* Return EXCEPTION to the nearest containing catch_errors().  */
 
 NORETURN void
-throw_exception (struct exception exception)
+throw_exception (struct gdb_exception exception)
 {
   quit_flag = 0;
   immediate_quit = 0;
@@ -223,10 +221,6 @@ throw_exception (struct exception exception)
 
   disable_current_display ();
   do_cleanups (ALL_CLEANUPS);
-  if (target_can_async_p () && !target_executing)
-    do_exec_cleanups (ALL_CLEANUPS);
-  if (sync_execution)
-    do_exec_error_cleanups (ALL_CLEANUPS);
 
   /* Jump to the containing catch_errors() call, communicating REASON
      to that call via setjmp's return value.  Note that REASON can't
@@ -241,7 +235,7 @@ static char *last_message;
 NORETURN void
 deprecated_throw_reason (enum return_reason reason)
 {
-  struct exception exception;
+  struct gdb_exception exception;
   memset (&exception, 0, sizeof exception);
 
   exception.reason = reason;
@@ -282,14 +276,17 @@ print_flush (void)
 
   /* 3.  The system-level buffer.  */
   gdb_stdout_serial = serial_fdopen (1);
-  serial_drain_output (gdb_stdout_serial);
-  serial_un_fdopen (gdb_stdout_serial);
+  if (gdb_stdout_serial)
+    {
+      serial_drain_output (gdb_stdout_serial);
+      serial_un_fdopen (gdb_stdout_serial);
+    }
 
   annotate_error_begin ();
 }
 
 static void
-print_exception (struct ui_file *file, struct exception e)
+print_exception (struct ui_file *file, struct gdb_exception e)
 {
   /* KLUGE: cagney/2005-01-13: Write the string out one line at a time
      as that way the MI's behavior is preserved.  */
@@ -324,7 +321,7 @@ print_exception (struct ui_file *file, struct exception e)
 }
 
 void
-exception_print (struct ui_file *file, struct exception e)
+exception_print (struct ui_file *file, struct gdb_exception e)
 {
   if (e.reason < 0 && e.message != NULL)
     {
@@ -334,7 +331,7 @@ exception_print (struct ui_file *file, struct exception e)
 }
 
 void
-exception_fprintf (struct ui_file *file, struct exception e,
+exception_fprintf (struct ui_file *file, struct gdb_exception e,
                   const char *prefix, ...)
 {
   if (e.reason < 0 && e.message != NULL)
@@ -354,7 +351,7 @@ exception_fprintf (struct ui_file *file, struct exception e,
 
 void
 print_any_exception (struct ui_file *file, const char *prefix,
-                    struct exception e)
+                    struct gdb_exception e)
 {
   if (e.reason < 0 && e.message != NULL)
     {
@@ -370,14 +367,11 @@ print_any_exception (struct ui_file *file, const char *prefix,
     }
 }
 
-NORETURN static void
-throw_it (enum return_reason reason, enum errors error, const char *fmt,
-         va_list ap) ATTR_NORETURN;
-NORETURN static void
+NORETURN static void ATTR_NORETURN ATTR_FORMAT (printf, 3, 0)
 throw_it (enum return_reason reason, enum errors error, const char *fmt,
          va_list ap)
 {
-  struct exception e;
+  struct gdb_exception e;
   char *new_message;
 
   /* Save the message.  Create the new message before deleting the
@@ -404,7 +398,7 @@ throw_verror (enum errors error, const char *fmt, va_list ap)
 NORETURN void
 throw_vfatal (const char *fmt, va_list ap)
 {
-  throw_it (RETURN_QUIT, NO_ERROR, fmt, ap);
+  throw_it (RETURN_QUIT, GDB_NO_ERROR, fmt, ap);
 }
 
 NORETURN void
@@ -457,13 +451,13 @@ catch_exceptions (struct ui_out *uiout,
   return catch_exceptions_with_msg (uiout, func, func_args, NULL, mask);
 }
 
-struct exception
+struct gdb_exception
 catch_exception (struct ui_out *uiout,
                 catch_exception_ftype *func,
                 void *func_args,
                 return_mask mask)
 {
-  volatile struct exception exception;
+  volatile struct gdb_exception exception;
   TRY_CATCH (exception, mask)
     {
       (*func) (uiout, func_args);
@@ -478,7 +472,7 @@ catch_exceptions_with_msg (struct ui_out *uiout,
                           char **gdberrmsg,
                           return_mask mask)
 {
-  volatile struct exception exception;
+  volatile struct gdb_exception exception;
   volatile int val = 0;
   TRY_CATCH (exception, mask)
     {
@@ -509,7 +503,7 @@ catch_errors (catch_errors_ftype *func, void *func_args, char *errstring,
              return_mask mask)
 {
   volatile int val = 0;
-  volatile struct exception exception;
+  volatile struct gdb_exception exception;
   TRY_CATCH (exception, mask)
     {
       val = func (func_args);
@@ -524,7 +518,7 @@ int
 catch_command_errors (catch_command_errors_ftype * command,
                      char *arg, int from_tty, return_mask mask)
 {
-  volatile struct exception e;
+  volatile struct gdb_exception e;
   TRY_CATCH (e, mask)
     {
       command (arg, from_tty);
This page took 0.027523 seconds and 4 git commands to generate.