aboutsummaryrefslogtreecommitdiff
path: root/gdb/mi
diff options
context:
space:
mode:
authorPedro Alves <pedro@palves.net>2020-09-13 18:02:19 +0100
committerPedro Alves <pedro@palves.net>2020-09-13 18:02:19 +0100
commit6791b1172abea5867268c95a460aba1c66c2b6b0 (patch)
treed8d1f1043094a1dfa82f3cd0d7dcd03e13dac5e4 /gdb/mi
parent3b8d4c5cc045ba80cc5b095fba06287050b7ef87 (diff)
downloadgdb-6791b1172abea5867268c95a460aba1c66c2b6b0.zip
gdb-6791b1172abea5867268c95a460aba1c66c2b6b0.tar.gz
gdb-6791b1172abea5867268c95a460aba1c66c2b6b0.tar.bz2
Add MI "-break-insert --qualified"
Currently -break-insert always creates a wildmatching breakpoint, and there's no way to ask for a fullname match. To address that, this patch adds the equivalent of "break -qualified" to MI: "-break-insert --qualified". For the testcase, curiously, it doesn't look like we have _any_ testcase that tests a breakpoint with multiple locations, and, the existing mi_create_breakpoint / mi_make_breakpoint procedures are only good for breakpoints with a single location. This patch thus adds a few new companion routines to mi-support.exp for breakpoints with multiple locations: mi_create_breakpoint_multi, mi_make_breakpoint_loc, mi_make_breakpoint_multi. gdb/ChangeLog: * NEWS: Document "-break-insert --qualified". * mi/mi-cmd-break.c (mi_cmd_break_insert_1): Handle "--qualified". gdb/doc/ChangeLog: * gdb.texinfo (GDB/MI Breakpoint Commands): Document "-break-insert --qualified" and "-dprintf-insert --qualified". gdb/testsuite/ChangeLog: * gdb.mi/mi-break-qualified.cc: New file. * gdb.mi/mi-break-qualified.exp: New file. * lib/mi-support.exp (mi_create_breakpoint_multi) (mi_make_breakpoint_loc, mi_make_breakpoint_multi): New procedures. (mi_create_breakpoint_1): New, factored out from mi_create_breakpoint.
Diffstat (limited to 'gdb/mi')
-rw-r--r--gdb/mi/mi-cmd-break.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/gdb/mi/mi-cmd-break.c b/gdb/mi/mi-cmd-break.c
index 417f2d8..3835c02 100644
--- a/gdb/mi/mi-cmd-break.c
+++ b/gdb/mi/mi-cmd-break.c
@@ -176,6 +176,7 @@ mi_cmd_break_insert_1 (int dprintf, const char *command, char **argv, int argc)
int pending = 0;
int enabled = 1;
int tracepoint = 0;
+ symbol_name_match_type match_type = symbol_name_match_type::WILD;
enum bptype type_wanted;
event_location_up location;
struct breakpoint_ops *ops;
@@ -188,6 +189,7 @@ mi_cmd_break_insert_1 (int dprintf, const char *command, char **argv, int argc)
HARDWARE_OPT, TEMP_OPT, CONDITION_OPT,
IGNORE_COUNT_OPT, THREAD_OPT, PENDING_OPT, DISABLE_OPT,
TRACEPOINT_OPT,
+ QUALIFIED_OPT,
EXPLICIT_SOURCE_OPT, EXPLICIT_FUNC_OPT,
EXPLICIT_LABEL_OPT, EXPLICIT_LINE_OPT
};
@@ -201,6 +203,7 @@ mi_cmd_break_insert_1 (int dprintf, const char *command, char **argv, int argc)
{"f", PENDING_OPT, 0},
{"d", DISABLE_OPT, 0},
{"a", TRACEPOINT_OPT, 0},
+ {"-qualified", QUALIFIED_OPT, 0},
{"-source" , EXPLICIT_SOURCE_OPT, 1},
{"-function", EXPLICIT_FUNC_OPT, 1},
{"-label", EXPLICIT_LABEL_OPT, 1},
@@ -247,6 +250,9 @@ mi_cmd_break_insert_1 (int dprintf, const char *command, char **argv, int argc)
case TRACEPOINT_OPT:
tracepoint = 1;
break;
+ case QUALIFIED_OPT:
+ match_type = symbol_name_match_type::FULL;
+ break;
case EXPLICIT_SOURCE_OPT:
is_explicit = 1;
explicit_loc.source_filename = oarg;
@@ -333,12 +339,14 @@ mi_cmd_break_insert_1 (int dprintf, const char *command, char **argv, int argc)
error (_("-%s-insert: --source option requires --function, --label,"
" or --line"), dprintf ? "dprintf" : "break");
+ explicit_loc.func_name_match_type = match_type;
+
location = new_explicit_location (&explicit_loc);
}
else
{
location = string_to_event_location_basic (&address, current_language,
- symbol_name_match_type::WILD);
+ match_type);
if (*address)
error (_("Garbage '%s' at end of location"), address);
}