diff options
-rw-r--r-- | gdb/ChangeLog | 10 | ||||
-rw-r--r-- | gdb/breakpoint.c | 25 | ||||
-rw-r--r-- | gdb/breakpoint.h | 2 | ||||
-rw-r--r-- | gdb/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/testsuite/gdb.mi/mi-break.exp | 12 |
5 files changed, 42 insertions, 12 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 81e4e85..89c7807 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,13 @@ +2013-04-08 Pedro Alves <palves@redhat.com> + Keith Seitz <keiths@redhat.com> + + * breakpoint.c (create_breakpoint): Rename + "parse_condition_and_thread" parameter to "parse_arg". Update + describing comment. If !PARSE_ARG, then error out if ARG is not + the empty string after extracting the location. + * breakpoint.h (create_breakpoint): Rename + "parse_condition_and_thread" parameter to "parse_arg". + 2013-04-08 Aleksandar Ristovski <aristovski@qnx.com * solib-svr4.c (lm_addr_check): Add const qualifier to 'so' arg. diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c index 5ba1f2f..667bedd 100644 --- a/gdb/breakpoint.c +++ b/gdb/breakpoint.c @@ -9510,20 +9510,20 @@ decode_static_tracepoint_spec (char **arg_p) /* Set a breakpoint. This function is shared between CLI and MI functions for setting a breakpoint. This function has two major - modes of operations, selected by the PARSE_CONDITION_AND_THREAD - parameter. If non-zero, the function will parse arg, extracting - breakpoint location, address and thread. Otherwise, ARG is just - the location of breakpoint, with condition and thread specified by - the COND_STRING and THREAD parameters. If INTERNAL is non-zero, - the breakpoint number will be allocated from the internal - breakpoint count. Returns true if any breakpoint was created; - false otherwise. */ + modes of operations, selected by the PARSE_ARG parameter. If + non-zero, the function will parse ARG, extracting location, + condition, thread and extra string. Otherwise, ARG is just the + breakpoint's location, with condition, thread, and extra string + specified by the COND_STRING, THREAD and EXTRA_STRING parameters. + If INTERNAL is non-zero, the breakpoint number will be allocated + from the internal breakpoint count. Returns true if any breakpoint + was created; false otherwise. */ int create_breakpoint (struct gdbarch *gdbarch, char *arg, char *cond_string, int thread, char *extra_string, - int parse_condition_and_thread, + int parse_arg, int tempflag, enum bptype type_wanted, int ignore_count, enum auto_boolean pending_break_support, @@ -9641,7 +9641,7 @@ create_breakpoint (struct gdbarch *gdbarch, lsal = VEC_index (linespec_sals, canonical.sals, 0); - if (parse_condition_and_thread) + if (parse_arg) { char *rest; /* Here we only parse 'arg' to separate condition @@ -9660,6 +9660,9 @@ create_breakpoint (struct gdbarch *gdbarch, } else { + if (*arg != '\0') + error (_("Garbage '%s' at end of location"), arg); + /* Create a private copy of condition string. */ if (cond_string) { @@ -9699,7 +9702,7 @@ create_breakpoint (struct gdbarch *gdbarch, init_raw_breakpoint_without_location (b, gdbarch, type_wanted, ops); b->addr_string = copy_arg; - if (parse_condition_and_thread) + if (parse_arg) b->cond_string = NULL; else { diff --git a/gdb/breakpoint.h b/gdb/breakpoint.h index 68f3ed9..d740625 100644 --- a/gdb/breakpoint.h +++ b/gdb/breakpoint.h @@ -1269,7 +1269,7 @@ enum breakpoint_create_flags extern int create_breakpoint (struct gdbarch *gdbarch, char *arg, char *cond_string, int thread, char *extra_string, - int parse_condition_and_thread, + int parse_arg, int tempflag, enum bptype wanted_type, int ignore_count, enum auto_boolean pending_break_support, diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index e7da305..27deae3 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-04-08 Pedro Alves <palves@redhat.com> + + * gdb.mi/mi-break.exp (test_error): Add tests with garbage after + the location. + 2013-04-04 Sandra Loosemore <sandra@codesourcery.com> * gdb.cp/cplabel.exp: Allow empty directory in file reported diff --git a/gdb/testsuite/gdb.mi/mi-break.exp b/gdb/testsuite/gdb.mi/mi-break.exp index 9cf0126..d5d58c7 100644 --- a/gdb/testsuite/gdb.mi/mi-break.exp +++ b/gdb/testsuite/gdb.mi/mi-break.exp @@ -196,6 +196,18 @@ proc test_error {} { mi_gdb_test "-var-update *" \ "\\^done,changelist=\\\[\\\]" \ "update varobj for function call" + + # Try setting breakpoints with garbage after the location. + + # "if" only works in the CLI. It's not supposed to be accepted by + # MI. The way to specify a condition is with -c. + mi_gdb_test "-break-insert \"callme if i < 4\"" \ + ".*\\^error,msg=\"Garbage 'if i < 4' at end of location\"" \ + "breakpoint with garbage after location" + + mi_gdb_test "-break-insert -c i==4 \"callme if i < 4\"" \ + ".*\\^error,msg=\"Garbage 'if i < 4' at end of location\"" \ + "conditional breakpoint with garbage after location" } proc test_disabled_creation {} { |