mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2024-11-24 12:39:59 +00:00
2005-01-13 Andrew Cagney <cagney@gnu.org>
* breakpoint.c (gdb_breakpoint_query): Update, use catch_exceptions_with_msg. (do_captured_breakpoint): Add uiout parameter. (gdb_breakpoint): Update, use catch_exceptions_with_msg. * mi/mi-main.c (mi_cmd_thread_select): Pass mi_error_message to gdb_thread_select. Return MI_CMD_ERROR instead of MI_CMD_CAUGHT_ERROR. (mi_cmd_thread_list_ids): Ditto for gdb_list_thread_ids. (enum captured_mi_execute_command_actions): Delete EXECUTE_COMMAND_DISPLAY_ERROR. (captured_mi_execute_command): Delete code handling MI_CMD_CAUGHT_ERROR. (mi_execute_command): Don't check for EXECUTE_COMMAND_DISPLAY_ERROR. * mi/mi-cmd-break.c (breakpoint_notify): Update call to gdb_breakpoint_query. (mi_cmd_break_insert): Pass mi_error_message to gdb_breakpoint. * mi/mi-cmds.h (enum mi_cmd_result): Delete MI_CMD_CAUGHT_ERROR. * gdb.h (gdb_thread_select, gdb_list_thread_ids) (gdb_breakpoint, gdb_breakpoint_query): Add error_message parameter. * thread.c (thread_command): Update call. (gdb_thread_select, gdb_list_thread_ids): Update, call catch_exceptions_with_msg.
This commit is contained in:
parent
f30f06b84e
commit
ce43223b29
@ -1,5 +1,30 @@
|
|||||||
2005-01-13 Andrew Cagney <cagney@gnu.org>
|
2005-01-13 Andrew Cagney <cagney@gnu.org>
|
||||||
|
|
||||||
|
* breakpoint.c (gdb_breakpoint_query): Update, use
|
||||||
|
catch_exceptions_with_msg.
|
||||||
|
(do_captured_breakpoint): Add uiout parameter.
|
||||||
|
(gdb_breakpoint): Update, use catch_exceptions_with_msg.
|
||||||
|
* mi/mi-main.c (mi_cmd_thread_select): Pass mi_error_message to
|
||||||
|
gdb_thread_select. Return MI_CMD_ERROR instead of
|
||||||
|
MI_CMD_CAUGHT_ERROR.
|
||||||
|
(mi_cmd_thread_list_ids): Ditto for gdb_list_thread_ids.
|
||||||
|
(enum captured_mi_execute_command_actions): Delete
|
||||||
|
EXECUTE_COMMAND_DISPLAY_ERROR.
|
||||||
|
(captured_mi_execute_command): Delete code handling
|
||||||
|
MI_CMD_CAUGHT_ERROR.
|
||||||
|
(mi_execute_command): Don't check for
|
||||||
|
EXECUTE_COMMAND_DISPLAY_ERROR.
|
||||||
|
* mi/mi-cmd-break.c (breakpoint_notify): Update call to
|
||||||
|
gdb_breakpoint_query.
|
||||||
|
(mi_cmd_break_insert): Pass mi_error_message to gdb_breakpoint.
|
||||||
|
* mi/mi-cmds.h (enum mi_cmd_result): Delete MI_CMD_CAUGHT_ERROR.
|
||||||
|
* gdb.h (gdb_thread_select, gdb_list_thread_ids)
|
||||||
|
(gdb_breakpoint, gdb_breakpoint_query): Add error_message
|
||||||
|
parameter.
|
||||||
|
* thread.c (thread_command): Update call.
|
||||||
|
(gdb_thread_select, gdb_list_thread_ids): Update, call
|
||||||
|
catch_exceptions_with_msg.
|
||||||
|
|
||||||
* mi/mi-main.c (mi_execute_command): Use catch_exception,
|
* mi/mi-main.c (mi_execute_command): Use catch_exception,
|
||||||
eliminate call to error_last_message.
|
eliminate call to error_last_message.
|
||||||
(captured_mi_execute_command): Change return type to void.
|
(captured_mi_execute_command): Change return type to void.
|
||||||
|
@ -3603,14 +3603,14 @@ do_captured_breakpoint_query (struct ui_out *uiout, void *data)
|
|||||||
}
|
}
|
||||||
|
|
||||||
enum gdb_rc
|
enum gdb_rc
|
||||||
gdb_breakpoint_query (struct ui_out *uiout, int bnum)
|
gdb_breakpoint_query (struct ui_out *uiout, int bnum, char **error_message)
|
||||||
{
|
{
|
||||||
struct captured_breakpoint_query_args args;
|
struct captured_breakpoint_query_args args;
|
||||||
args.bnum = bnum;
|
args.bnum = bnum;
|
||||||
/* For the moment we don't trust print_one_breakpoint() to not throw
|
/* For the moment we don't trust print_one_breakpoint() to not throw
|
||||||
an error. */
|
an error. */
|
||||||
return catch_exceptions (uiout, do_captured_breakpoint_query, &args,
|
return catch_exceptions_with_msg (uiout, do_captured_breakpoint_query, &args,
|
||||||
NULL, RETURN_MASK_ALL);
|
NULL, error_message, RETURN_MASK_ALL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Return non-zero if B is user settable (breakpoints, watchpoints,
|
/* Return non-zero if B is user settable (breakpoints, watchpoints,
|
||||||
@ -5334,7 +5334,7 @@ struct captured_breakpoint_args
|
|||||||
};
|
};
|
||||||
|
|
||||||
static int
|
static int
|
||||||
do_captured_breakpoint (void *data)
|
do_captured_breakpoint (struct ui_out *uiout, void *data)
|
||||||
{
|
{
|
||||||
struct captured_breakpoint_args *args = data;
|
struct captured_breakpoint_args *args = data;
|
||||||
struct symtabs_and_lines sals;
|
struct symtabs_and_lines sals;
|
||||||
@ -5432,7 +5432,8 @@ do_captured_breakpoint (void *data)
|
|||||||
enum gdb_rc
|
enum gdb_rc
|
||||||
gdb_breakpoint (char *address, char *condition,
|
gdb_breakpoint (char *address, char *condition,
|
||||||
int hardwareflag, int tempflag,
|
int hardwareflag, int tempflag,
|
||||||
int thread, int ignore_count)
|
int thread, int ignore_count,
|
||||||
|
char **error_message)
|
||||||
{
|
{
|
||||||
struct captured_breakpoint_args args;
|
struct captured_breakpoint_args args;
|
||||||
args.address = address;
|
args.address = address;
|
||||||
@ -5441,8 +5442,8 @@ gdb_breakpoint (char *address, char *condition,
|
|||||||
args.tempflag = tempflag;
|
args.tempflag = tempflag;
|
||||||
args.thread = thread;
|
args.thread = thread;
|
||||||
args.ignore_count = ignore_count;
|
args.ignore_count = ignore_count;
|
||||||
return catch_errors (do_captured_breakpoint, &args,
|
return catch_exceptions_with_msg (uiout, do_captured_breakpoint, &args,
|
||||||
NULL, RETURN_MASK_ALL);
|
NULL, error_message, RETURN_MASK_ALL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
17
gdb/gdb.h
17
gdb/gdb.h
@ -29,8 +29,9 @@ struct ui_out;
|
|||||||
|
|
||||||
enum gdb_rc {
|
enum gdb_rc {
|
||||||
/* The operation failed. The failure message can be fetched by
|
/* The operation failed. The failure message can be fetched by
|
||||||
calling ``char *error_last_message(void)''. The value is
|
calling ``char *error_last_message(void)''. The value is
|
||||||
determined by the catch_errors() interface. */
|
determined by the catch_errors() interface. The MSG parameter is
|
||||||
|
set to a freshly allocated copy of the error message. */
|
||||||
/* NOTE: Since ``defs.h:catch_errors()'' does not return an error /
|
/* NOTE: Since ``defs.h:catch_errors()'' does not return an error /
|
||||||
internal / quit indication it is not possible to return that
|
internal / quit indication it is not possible to return that
|
||||||
here. */
|
here. */
|
||||||
@ -46,17 +47,21 @@ enum gdb_rc {
|
|||||||
|
|
||||||
/* Print the specified breakpoint on GDB_STDOUT. (Eventually this
|
/* Print the specified breakpoint on GDB_STDOUT. (Eventually this
|
||||||
function will ``print'' the object on ``output''). */
|
function will ``print'' the object on ``output''). */
|
||||||
enum gdb_rc gdb_breakpoint_query (struct ui_out *uiout, int bnum);
|
enum gdb_rc gdb_breakpoint_query (struct ui_out *uiout, int bnum,
|
||||||
|
char **error_message);
|
||||||
|
|
||||||
/* Create a breakpoint at ADDRESS (a GDB source and line). */
|
/* Create a breakpoint at ADDRESS (a GDB source and line). */
|
||||||
enum gdb_rc gdb_breakpoint (char *address, char *condition,
|
enum gdb_rc gdb_breakpoint (char *address, char *condition,
|
||||||
int hardwareflag, int tempflag,
|
int hardwareflag, int tempflag,
|
||||||
int thread, int ignore_count);
|
int thread, int ignore_count,
|
||||||
|
char **error_message);
|
||||||
|
|
||||||
/* Switch thread and print notification. */
|
/* Switch thread and print notification. */
|
||||||
enum gdb_rc gdb_thread_select (struct ui_out *uiout, char *tidstr);
|
enum gdb_rc gdb_thread_select (struct ui_out *uiout, char *tidstr,
|
||||||
|
char **error_message);
|
||||||
|
|
||||||
/* Print a list of known thread ids. */
|
/* Print a list of known thread ids. */
|
||||||
enum gdb_rc gdb_list_thread_ids (struct ui_out *uiout);
|
enum gdb_rc gdb_list_thread_ids (struct ui_out *uiout,
|
||||||
|
char **error_message);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -39,7 +39,7 @@ enum
|
|||||||
static void
|
static void
|
||||||
breakpoint_notify (int b)
|
breakpoint_notify (int b)
|
||||||
{
|
{
|
||||||
gdb_breakpoint_query (uiout, b);
|
gdb_breakpoint_query (uiout, b, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -140,12 +140,14 @@ mi_cmd_break_insert (char *command, char **argv, int argc)
|
|||||||
case REG_BP:
|
case REG_BP:
|
||||||
rc = gdb_breakpoint (address, condition,
|
rc = gdb_breakpoint (address, condition,
|
||||||
0 /*hardwareflag */ , temp_p,
|
0 /*hardwareflag */ , temp_p,
|
||||||
thread, ignore_count);
|
thread, ignore_count,
|
||||||
|
&mi_error_message);
|
||||||
break;
|
break;
|
||||||
case HW_BP:
|
case HW_BP:
|
||||||
rc = gdb_breakpoint (address, condition,
|
rc = gdb_breakpoint (address, condition,
|
||||||
1 /*hardwareflag */ , temp_p,
|
1 /*hardwareflag */ , temp_p,
|
||||||
thread, ignore_count);
|
thread, ignore_count,
|
||||||
|
&mi_error_message);
|
||||||
break;
|
break;
|
||||||
#if 0
|
#if 0
|
||||||
case REGEXP_BP:
|
case REGEXP_BP:
|
||||||
@ -163,7 +165,7 @@ mi_cmd_break_insert (char *command, char **argv, int argc)
|
|||||||
deprecated_set_gdb_event_hooks (old_hooks);
|
deprecated_set_gdb_event_hooks (old_hooks);
|
||||||
|
|
||||||
if (rc == GDB_RC_FAIL)
|
if (rc == GDB_RC_FAIL)
|
||||||
return MI_CMD_CAUGHT_ERROR;
|
return MI_CMD_ERROR;
|
||||||
else
|
else
|
||||||
return MI_CMD_DONE;
|
return MI_CMD_DONE;
|
||||||
}
|
}
|
||||||
|
@ -38,10 +38,6 @@ enum mi_cmd_result
|
|||||||
asprintf'd into the mi_error_message buffer. The main loop will
|
asprintf'd into the mi_error_message buffer. The main loop will
|
||||||
display the error message and the completion prompt. */
|
display the error message and the completion prompt. */
|
||||||
MI_CMD_ERROR,
|
MI_CMD_ERROR,
|
||||||
/* An error condition was detected and caught. The error message is
|
|
||||||
in the global error message buffer. The main loop will display
|
|
||||||
the error message and the completion prompt. */
|
|
||||||
MI_CMD_CAUGHT_ERROR,
|
|
||||||
/* The MI command has already displayed its completion message.
|
/* The MI command has already displayed its completion message.
|
||||||
Main loop will not display a completion message but will display
|
Main loop will not display a completion message but will display
|
||||||
the completion prompt. */
|
the completion prompt. */
|
||||||
|
@ -61,8 +61,7 @@ enum
|
|||||||
enum captured_mi_execute_command_actions
|
enum captured_mi_execute_command_actions
|
||||||
{
|
{
|
||||||
EXECUTE_COMMAND_DISPLAY_PROMPT,
|
EXECUTE_COMMAND_DISPLAY_PROMPT,
|
||||||
EXECUTE_COMMAND_SUPRESS_PROMPT,
|
EXECUTE_COMMAND_SUPRESS_PROMPT
|
||||||
EXECUTE_COMMAND_DISPLAY_ERROR
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/* This structure is used to pass information from captured_mi_execute_command
|
/* This structure is used to pass information from captured_mi_execute_command
|
||||||
@ -233,12 +232,12 @@ mi_cmd_thread_select (char *command, char **argv, int argc)
|
|||||||
return MI_CMD_ERROR;
|
return MI_CMD_ERROR;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
rc = gdb_thread_select (uiout, argv[0]);
|
rc = gdb_thread_select (uiout, argv[0], &mi_error_message);
|
||||||
|
|
||||||
/* RC is enum gdb_rc if it is successful (>=0)
|
/* RC is enum gdb_rc if it is successful (>=0)
|
||||||
enum return_reason if not (<0). */
|
enum return_reason if not (<0). */
|
||||||
if ((int) rc < 0 && (enum return_reason) rc == RETURN_ERROR)
|
if ((int) rc < 0 && (enum return_reason) rc == RETURN_ERROR)
|
||||||
return MI_CMD_CAUGHT_ERROR;
|
return MI_CMD_ERROR;
|
||||||
else if ((int) rc >= 0 && rc == GDB_RC_FAIL)
|
else if ((int) rc >= 0 && rc == GDB_RC_FAIL)
|
||||||
return MI_CMD_ERROR;
|
return MI_CMD_ERROR;
|
||||||
else
|
else
|
||||||
@ -256,10 +255,10 @@ mi_cmd_thread_list_ids (char *command, char **argv, int argc)
|
|||||||
return MI_CMD_ERROR;
|
return MI_CMD_ERROR;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
rc = gdb_list_thread_ids (uiout);
|
rc = gdb_list_thread_ids (uiout, &mi_error_message);
|
||||||
|
|
||||||
if (rc == GDB_RC_FAIL)
|
if (rc == GDB_RC_FAIL)
|
||||||
return MI_CMD_CAUGHT_ERROR;
|
return MI_CMD_ERROR;
|
||||||
else
|
else
|
||||||
return MI_CMD_DONE;
|
return MI_CMD_DONE;
|
||||||
}
|
}
|
||||||
@ -1091,12 +1090,6 @@ captured_mi_execute_command (struct ui_out *uiout, void *data)
|
|||||||
}
|
}
|
||||||
mi_out_rewind (uiout);
|
mi_out_rewind (uiout);
|
||||||
}
|
}
|
||||||
else if (args->rc == MI_CMD_CAUGHT_ERROR)
|
|
||||||
{
|
|
||||||
mi_out_rewind (uiout);
|
|
||||||
args->action = EXECUTE_COMMAND_DISPLAY_ERROR;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
mi_out_rewind (uiout);
|
mi_out_rewind (uiout);
|
||||||
}
|
}
|
||||||
@ -1171,8 +1164,7 @@ mi_execute_command (char *cmd, int from_tty)
|
|||||||
mi_parse_free (command);
|
mi_parse_free (command);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (args.action == EXECUTE_COMMAND_DISPLAY_ERROR
|
if (result.reason < 0)
|
||||||
|| result.reason < 0)
|
|
||||||
{
|
{
|
||||||
char *msg = result.message;
|
char *msg = result.message;
|
||||||
struct cleanup *cleanup = make_cleanup (xfree, msg);
|
struct cleanup *cleanup = make_cleanup (xfree, msg);
|
||||||
|
14
gdb/thread.c
14
gdb/thread.c
@ -282,10 +282,10 @@ do_captured_list_thread_ids (struct ui_out *uiout, void *arg)
|
|||||||
/* Official gdblib interface function to get a list of thread ids and
|
/* Official gdblib interface function to get a list of thread ids and
|
||||||
the total number. */
|
the total number. */
|
||||||
enum gdb_rc
|
enum gdb_rc
|
||||||
gdb_list_thread_ids (struct ui_out *uiout)
|
gdb_list_thread_ids (struct ui_out *uiout, char **error_message)
|
||||||
{
|
{
|
||||||
return catch_exceptions (uiout, do_captured_list_thread_ids, NULL,
|
return catch_exceptions_with_msg (uiout, do_captured_list_thread_ids, NULL,
|
||||||
NULL, RETURN_MASK_ALL);
|
NULL, error_message, RETURN_MASK_ALL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Load infrun state for the thread PID. */
|
/* Load infrun state for the thread PID. */
|
||||||
@ -635,7 +635,7 @@ thread_command (char *tidstr, int from_tty)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
gdb_thread_select (uiout, tidstr);
|
gdb_thread_select (uiout, tidstr, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
@ -667,10 +667,10 @@ do_captured_thread_select (struct ui_out *uiout, void *tidstr)
|
|||||||
}
|
}
|
||||||
|
|
||||||
enum gdb_rc
|
enum gdb_rc
|
||||||
gdb_thread_select (struct ui_out *uiout, char *tidstr)
|
gdb_thread_select (struct ui_out *uiout, char *tidstr, char **error_message)
|
||||||
{
|
{
|
||||||
return catch_exceptions (uiout, do_captured_thread_select, tidstr,
|
return catch_exceptions_with_msg (uiout, do_captured_thread_select, tidstr,
|
||||||
NULL, RETURN_MASK_ALL);
|
NULL, error_message, RETURN_MASK_ALL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Commands with a prefix of `thread'. */
|
/* Commands with a prefix of `thread'. */
|
||||||
|
Loading…
Reference in New Issue
Block a user