2005-01-14 Andrew Cagney <cagney@gnu.org>

* linespec.c (symtab_from_filename, decode_variable): Use
	throw_error instead of error_silent.
	* breakpoint.c (do_captured_parse_breakpoint): Change return type
	to void.
	(break_command_1): Use catch_exception and check the error return
	status.
	* exceptions.c (throw_error): New function.
	(throw_vsilent): Delete function.
	* exceptions.h (throw_error): Declare.
	(throw_vsilent): Delete declaration.
	* utils.c (error_silent): Delete function.
	* defs.h (error_silent): Delete declaration.
This commit is contained in:
Andrew Cagney 2005-01-14 20:24:20 +00:00
parent 35695fd6e5
commit 05ff989b0b
7 changed files with 68 additions and 92 deletions

View File

@ -1,5 +1,18 @@
2005-01-14 Andrew Cagney <cagney@gnu.org>
* linespec.c (symtab_from_filename, decode_variable): Use
throw_error instead of error_silent.
* breakpoint.c (do_captured_parse_breakpoint): Change return type
to void.
(break_command_1): Use catch_exception and check the error return
status.
* exceptions.c (throw_error): New function.
(throw_vsilent): Delete function.
* exceptions.h (throw_error): Declare.
(throw_vsilent): Delete declaration.
* utils.c (error_silent): Delete function.
* defs.h (error_silent): Delete declaration.
* mi/mi-main.c (mi_execute_command): Print the exception.
* cli/cli-interp.c (safe_execute_command): Print the exception.
* exceptions.h (exception_print): Declare.

View File

@ -1,7 +1,7 @@
/* Everything about breakpoints, for GDB.
Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
Free Software Foundation, Inc.
This file is part of GDB.
@ -118,8 +118,6 @@ static void condition_command (char *, int);
static int get_number_trailer (char **, int);
static int do_captured_parse_breakpoint (struct ui_out *, void *);
void set_breakpoint_count (int);
typedef enum
@ -5079,15 +5077,13 @@ breakpoint_sals_to_pc (struct symtabs_and_lines *sals,
}
}
static int
static void
do_captured_parse_breakpoint (struct ui_out *ui, void *data)
{
struct captured_parse_breakpoint_args *args = data;
parse_breakpoint_sals (args->arg_p, args->sals_p, args->addr_string_p,
args->not_found_ptr);
return GDB_RC_OK;
}
/* Set a breakpoint according to ARG (function, linenum or *address)
@ -5100,6 +5096,7 @@ do_captured_parse_breakpoint (struct ui_out *ui, void *data)
static int
break_command_1 (char *arg, int flag, int from_tty, struct breakpoint *pending_bp)
{
struct exception e;
int tempflag, hardwareflag;
struct symtabs_and_lines sals;
struct expression **cond = 0;
@ -5112,7 +5109,7 @@ break_command_1 (char *arg, int flag, int from_tty, struct breakpoint *pending_b
struct cleanup *old_chain;
struct cleanup *breakpoint_chain = NULL;
struct captured_parse_breakpoint_args parse_args;
int i, rc;
int i;
int pending = 0;
int thread = -1;
int ignore_count = 0;
@ -5130,57 +5127,57 @@ break_command_1 (char *arg, int flag, int from_tty, struct breakpoint *pending_b
parse_args.addr_string_p = &addr_string;
parse_args.not_found_ptr = &not_found;
rc = catch_exceptions_with_msg (uiout, do_captured_parse_breakpoint,
&parse_args, NULL, &err_msg,
RETURN_MASK_ALL);
e = catch_exception (uiout, do_captured_parse_breakpoint,
&parse_args, RETURN_MASK_ALL);
/* If caller is interested in rc value from parse, set value. */
if (rc != GDB_RC_OK)
switch (e.reason)
{
/* Check for file or function not found. */
if (not_found)
case RETURN_QUIT:
exception_print (gdb_stderr, NULL, e);
return e.reason;
case RETURN_ERROR:
switch (e.error)
{
/* If called to resolve pending breakpoint, just return error code. */
case NOT_FOUND_ERROR:
/* If called to resolve pending breakpoint, just return
error code. */
if (pending_bp)
{
xfree (err_msg);
return rc;
}
return e.reason;
error_output_message (NULL, err_msg);
xfree (err_msg);
exception_print (gdb_stderr, NULL, e);
/* If pending breakpoint support is turned off, throw error. */
/* If pending breakpoint support is turned off, throw
error. */
if (pending_break_support == AUTO_BOOLEAN_FALSE)
throw_reason (RETURN_ERROR);
/* If pending breakpoint support is auto query and the user selects
no, then simply return the error code. */
/* If pending breakpoint support is auto query and the user
selects no, then simply return the error code. */
if (pending_break_support == AUTO_BOOLEAN_AUTO &&
!nquery ("Make breakpoint pending on future shared library load? "))
return rc;
return e.reason;
/* At this point, either the user was queried about setting a
pending breakpoint and selected yes, or pending breakpoint
behavior is on and thus a pending breakpoint is defaulted
on behalf of the user. */
/* At this point, either the user was queried about setting
a pending breakpoint and selected yes, or pending
breakpoint behavior is on and thus a pending breakpoint
is defaulted on behalf of the user. */
copy_arg = xstrdup (addr_start);
addr_string = &copy_arg;
sals.nelts = 1;
sals.sals = &pending_sal;
pending_sal.pc = 0;
pending = 1;
break;
default:
exception_print (gdb_stderr, NULL, e);
return e.reason;
}
else
{
xfree (err_msg);
return rc;
}
default:
if (!sals.nelts)
return GDB_RC_FAIL;
}
else if (!sals.nelts)
return GDB_RC_FAIL;
/* Create a chain of things that always need to be cleaned up. */
old_chain = make_cleanup (null_cleanup, 0);

View File

@ -891,8 +891,6 @@ extern NORETURN void verror (const char *fmt, va_list ap) ATTR_NORETURN;
extern NORETURN void error (const char *fmt, ...) ATTR_NORETURN ATTR_FORMAT (printf, 1, 2);
extern NORETURN void error_silent (const char *fmt, ...) ATTR_NORETURN ATTR_FORMAT (printf, 1, 2);
extern NORETURN void error_stream (struct ui_file *) ATTR_NORETURN;
/* Output arbitrary error message. */

View 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 Free Software
Foundation, Inc.
1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free
Software Foundation, Inc.
This file is part of GDB.
@ -401,15 +401,12 @@ throw_vfatal (const char *fmt, va_list ap)
}
NORETURN void
throw_vsilent (const char *fmt, va_list ap)
throw_error (enum errors error, const char *fmt, ...)
{
struct exception e;
e.reason = RETURN_ERROR;
e.error = GENERIC_ERROR;
xfree (last_message);
last_message = xstrvprintf (fmt, ap);
e.message = last_message;
throw_exception (e);
va_list args;
va_start (args, fmt);
print_and_throw (RETURN_ERROR, error, error_pre_print, fmt, args);
va_end (args);
}
/* Call FUNC() with args FUNC_UIOUT and FUNC_ARGS, catching any

View 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 Free Software
Foundation, Inc.
1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free
Software Foundation, Inc.
This file is part of GDB.
@ -51,6 +51,7 @@ enum errors {
/* Any generic error, the corresponding text is in
exception.message. */
GENERIC_ERROR,
NOT_FOUND_ERROR,
/* Add more errors here. */
NR_ERRORS
};
@ -86,8 +87,8 @@ 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_vsilent (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

View File

@ -1,6 +1,7 @@
/* Parser for linespec for the GNU debugger, GDB.
Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
Free Software Foundation, Inc.
This file is part of GDB.
@ -35,6 +36,7 @@
#include "block.h"
#include "objc-lang.h"
#include "linespec.h"
#include "exceptions.h"
/* We share this one with symtab.c, but it is not exported widely. */
@ -1526,18 +1528,8 @@ symtab_from_filename (char **argptr, char *p, int is_quote_enclosed,
if (!have_full_symbols () && !have_partial_symbols ())
error ("No symbol table is loaded. Use the \"file\" command.");
if (not_found_ptr)
{
*not_found_ptr = 1;
/* The caller has indicated that it wishes quiet notification of any
error where the function or file is not found. A call to
error_silent causes an error to occur, but it does not issue
the supplied message. The message can be manually output by
the caller, if desired. This is used, for example, when
attempting to set breakpoints for functions in shared libraries
that have not yet been loaded. */
error_silent ("No source file named %s.", copy);
}
error ("No source file named %s.", copy);
*not_found_ptr = 1;
throw_error (NOT_FOUND_ERROR, "No source file named %s.", copy);
}
/* Discard the file name from the arg. */
@ -1748,19 +1740,8 @@ decode_variable (char *copy, int funfirstline, char ***canonical,
error ("No symbol table is loaded. Use the \"file\" command.");
if (not_found_ptr)
{
*not_found_ptr = 1;
/* The caller has indicated that it wishes quiet notification of any
error where the function or file is not found. A call to
error_silent causes an error to occur, but it does not issue
the supplied message. The message can be manually output by
the caller, if desired. This is used, for example, when
attempting to set breakpoints for functions in shared libraries
that have not yet been loaded. */
error_silent ("Function \"%s\" not defined.", copy);
}
error ("Function \"%s\" not defined.", copy);
*not_found_ptr = 1;
throw_error (NOT_FOUND_ERROR, "Function \"%s\" not defined.", copy);
}

View File

@ -1,8 +1,8 @@
/* General utility routines 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.
@ -641,17 +641,6 @@ fatal (const char *string, ...)
va_end (args);
}
/* Cause a silent error to occur. Any error message is recorded
though it is not issued. */
NORETURN void
error_silent (const char *string, ...)
{
va_list args;
va_start (args, string);
throw_vsilent (string, args);
va_end (args);
}
/* Output an error message including any pre-print text to gdb_stderr. */
void
error_output_message (char *pre_print, char *msg)