2007-08-17 Michael Snyder <msnyder@access-company.com>
[deliverable/binutils-gdb.git] / gdb / exceptions.c
index 610f1682d6b0f4c9c52379ebb21fe600eb712106..28ae3f08e69fdc9297284222106c67610be69e78 100644 (file)
@@ -1,8 +1,8 @@
 /* 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
+   Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -18,8 +18,8 @@
 
    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.  */
+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.  */
 
 #include "defs.h"
 #include "exceptions.h"
@@ -32,7 +32,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 +58,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 +72,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;
 
@@ -133,7 +133,7 @@ exceptions_state_mc (enum catcher_action action)
          current_catcher->state = CATCHER_RUNNING;
          return 1;
        default:
-         internal_error (__FILE__, __LINE__, "bad state");
+         internal_error (__FILE__, __LINE__, _("bad state"));
        }
     case CATCHER_RUNNING:
       switch (action)
@@ -150,7 +150,7 @@ exceptions_state_mc (enum catcher_action action)
          /* See also throw_exception.  */
          return 1;
        default:
-         internal_error (__FILE__, __LINE__, "bad switch");
+         internal_error (__FILE__, __LINE__, _("bad switch"));
        }
     case CATCHER_RUNNING_1:
       switch (action)
@@ -167,14 +167,14 @@ exceptions_state_mc (enum catcher_action action)
          /* See also throw_exception.  */
          return 1;
        default:
-         internal_error (__FILE__, __LINE__, "bad switch");
+         internal_error (__FILE__, __LINE__, _("bad switch"));
        }
     case CATCHER_ABORTING:
       switch (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
@@ -190,10 +190,10 @@ exceptions_state_mc (enum catcher_action action)
            throw_exception (exception);
          }
        default:
-         internal_error (__FILE__, __LINE__, "bad state");
+         internal_error (__FILE__, __LINE__, _("bad state"));
        }
     default:
-      internal_error (__FILE__, __LINE__, "bad switch");
+      internal_error (__FILE__, __LINE__, _("bad switch"));
     }
 }
 
@@ -212,7 +212,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;
@@ -241,7 +241,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;
@@ -253,7 +253,7 @@ deprecated_throw_reason (enum return_reason reason)
       exception.error = GENERIC_ERROR;
       break;
     default:
-      internal_error (__FILE__, __LINE__, "bad switch");
+      internal_error (__FILE__, __LINE__, _("bad switch"));
     }
   
   throw_exception (exception);
@@ -282,14 +282,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 +327,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 +337,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 +357,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 +373,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 +404,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 +457,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 +478,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 +509,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 +524,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.027698 seconds and 4 git commands to generate.