/* 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 Free Software
- Foundation, Inc.
+ 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free
+ Software Foundation, Inc.
This file is part of GDB.
/* Any generic error, the corresponding text is in
exception.message. */
GENERIC_ERROR,
+ NOT_FOUND_ERROR,
/* Add more errors here. */
NR_ERRORS
};
{
enum return_reason reason;
enum errors error;
- char *message;
+ const char *message;
};
+/* A pre-defined non-exception. */
+extern const struct exception exception_none;
+
+/* If E is an exception, print it's error message on the specified
+ stream. for _fprintf, prefix the message with PREFIX... */
+extern void exception_print (struct ui_file *file, struct exception e);
+extern void exception_fprintf (struct ui_file *file, struct exception e,
+ const char *prefix,
+ ...) ATTR_FORMAT (printf, 3, 4);
+
/* Throw an exception (as described by "struct exception"). Will
execute a LONG JUMP to the inner most containing exception handler
established using catch_exceptions() (or similar).
extern NORETURN void throw_exception (struct exception exception) ATTR_NORETURN;
extern NORETURN void throw_reason (enum return_reason reason) ATTR_NORETURN;
-
+extern NORETURN void throw_verror (enum errors, const char *fmt,
+ va_list ap) ATTR_NORETURN;
+extern NORETURN void throw_vfatal (const char *fmt, va_list ap) ATTR_NORETURN;
+extern NORETURN void throw_error (enum errors error, const char *fmt,
+ ...) ATTR_NORETURN ATTR_FORMAT (printf, 2, 3);
/* Call FUNC(UIOUT, FUNC_ARGS) but wrapped within an exception
handler. If an exception (enum return_reason) is thrown using
typedef int (catch_exceptions_ftype) (struct ui_out *ui_out, void *args);
extern int catch_exceptions (struct ui_out *uiout,
catch_exceptions_ftype *func, void *func_args,
- char *errstring, return_mask mask);
+ return_mask mask);
typedef void (catch_exception_ftype) (struct ui_out *ui_out, void *args);
extern int catch_exceptions_with_msg (struct ui_out *uiout,
catch_exceptions_ftype *func,
void *func_args,
- char *errstring, char **gdberrmsg,
+ char **gdberrmsg,
return_mask mask);
+
+/* This function, in addition, suppresses the printing of the captured
+ error message. It's up to the client to print it. */
+
extern struct exception catch_exception (struct ui_out *uiout,
catch_exception_ftype *func,
void *func_args,