aboutsummaryrefslogtreecommitdiff
path: root/gdb/mi
diff options
context:
space:
mode:
authorVladimir Prus <vladimir@codesourcery.com>2010-03-16 08:42:20 +0000
committerVladimir Prus <vladimir@codesourcery.com>2010-03-16 08:42:20 +0000
commit8cdf0e150657da2086efc67c83e04619139081b2 (patch)
tree4903f987393a768fc1aedd773226e5903af0783e /gdb/mi
parent1aa37384696ad1fcec310e8d3c7955b0266f61d5 (diff)
downloadgdb-8cdf0e150657da2086efc67c83e04619139081b2.zip
gdb-8cdf0e150657da2086efc67c83e04619139081b2.tar.gz
gdb-8cdf0e150657da2086efc67c83e04619139081b2.tar.bz2
Simplify MI breakpoint setting.
* breakpoint.c (break_command_really): Make nonstatic and rename to... (create_breakpoint): ...this. Rename prior function by this name to... (create_breakpoint_sal): ...this. (create_breakpoints): Rename to... (create_breakpoints_sal): ...this. (set_breakpoint): Remove. * breakpoint.h: Adjust to above changes. * mi/mi-cmd-break.c (mi_cmd_break_insert): Simplify.
Diffstat (limited to 'gdb/mi')
-rw-r--r--gdb/mi/mi-cmd-break.c53
1 files changed, 13 insertions, 40 deletions
diff --git a/gdb/mi/mi-cmd-break.c b/gdb/mi/mi-cmd-break.c
index 1164414..3ed652c 100644
--- a/gdb/mi/mi-cmd-break.c
+++ b/gdb/mi/mi-cmd-break.c
@@ -67,18 +67,20 @@ mi_cmd_break_insert (char *command, char **argv, int argc)
{
char *address = NULL;
enum bp_type type = REG_BP;
+ int hardware = 0;
int temp_p = 0;
int thread = -1;
int ignore_count = 0;
char *condition = NULL;
int pending = 0;
int enabled = 1;
+ struct cleanup *back_to;
struct gdb_exception e;
struct gdb_events *old_hooks;
enum opt
{
- HARDWARE_OPT, TEMP_OPT /*, REGEXP_OPT */ , CONDITION_OPT,
+ HARDWARE_OPT, TEMP_OPT, CONDITION_OPT,
IGNORE_COUNT_OPT, THREAD_OPT, PENDING_OPT, DISABLE_OPT
};
static struct mi_opt opts[] =
@@ -108,13 +110,8 @@ mi_cmd_break_insert (char *command, char **argv, int argc)
temp_p = 1;
break;
case HARDWARE_OPT:
- type = HW_BP;
+ hardware = 1;
break;
-#if 0
- case REGEXP_OPT:
- type = REGEXP_BP;
- break;
-#endif
case CONDITION_OPT:
condition = optarg;
break;
@@ -147,40 +144,16 @@ mi_cmd_break_insert (char *command, char **argv, int argc)
mi_breakpoint_observers_installed = 1;
}
+ back_to = make_cleanup_restore_integer (&mi_can_breakpoint_notify);
mi_can_breakpoint_notify = 1;
- /* Make sure we restore hooks even if exception is thrown. */
- TRY_CATCH (e, RETURN_MASK_ALL)
- {
- switch (type)
- {
- case REG_BP:
- set_breakpoint (get_current_arch (), address, condition,
- 0 /*hardwareflag */ , temp_p,
- thread, ignore_count,
- pending, enabled);
- break;
- case HW_BP:
- set_breakpoint (get_current_arch (), address, condition,
- 1 /*hardwareflag */ , temp_p,
- thread, ignore_count,
- pending, enabled);
- break;
-#if 0
- case REGEXP_BP:
- if (temp_p)
- error (_("mi_cmd_break_insert: Unsupported tempoary regexp breakpoint"));
- else
- rbreak_command_wrapper (address, FROM_TTY);
- break;
-#endif
- default:
- internal_error (__FILE__, __LINE__,
- _("mi_cmd_break_insert: Bad switch."));
- }
- }
- mi_can_breakpoint_notify = 0;
- if (e.reason < 0)
- throw_exception (e);
+ create_breakpoint (get_current_arch (), address, condition, thread,
+ 0 /* condition and thread are valid. */,
+ temp_p, hardware, 0 /* traceflag */,
+ ignore_count,
+ pending ? AUTO_BOOLEAN_TRUE : AUTO_BOOLEAN_FALSE,
+ NULL, 0, enabled);
+ do_cleanups (back_to);
+
}
enum wp_type