create_breapoint / explicit mode: Error out if there's garbage after the breakpoint location.

If !PARSE_CONDITION_AND_THREAD, then ARG is just the location, nothing
else.  The fact that the describing comment of create_breakpoint
doesn't mention this just looks like an oversight of when extra_string
was added.  "parse_condition_and_thread" has been a misnomer ever
since extra_string was added -- better rename it avoid more confusion.
This makes it "parse_arg", as that'll remain stable even if/when more
explicit parameters are added.

gdb/
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".

gdb/testsuite/
2013-04-08  Pedro Alves  <palves@redhat.com>

	* gdb.mi/mi-break.exp (test_error): Add tests with garbage after
	the location.
This commit is contained in:
Pedro Alves 2013-04-08 14:09:30 +00:00
parent f65ce5fb99
commit f6de8ec262
5 changed files with 42 additions and 12 deletions

View File

@ -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 2013-04-08 Aleksandar Ristovski <aristovski@qnx.com
* solib-svr4.c (lm_addr_check): Add const qualifier to 'so' arg. * solib-svr4.c (lm_addr_check): Add const qualifier to 'so' arg.

View File

@ -9510,20 +9510,20 @@ decode_static_tracepoint_spec (char **arg_p)
/* Set a breakpoint. This function is shared between CLI and MI /* Set a breakpoint. This function is shared between CLI and MI
functions for setting a breakpoint. This function has two major functions for setting a breakpoint. This function has two major
modes of operations, selected by the PARSE_CONDITION_AND_THREAD modes of operations, selected by the PARSE_ARG parameter. If
parameter. If non-zero, the function will parse arg, extracting non-zero, the function will parse ARG, extracting location,
breakpoint location, address and thread. Otherwise, ARG is just condition, thread and extra string. Otherwise, ARG is just the
the location of breakpoint, with condition and thread specified by breakpoint's location, with condition, thread, and extra string
the COND_STRING and THREAD parameters. If INTERNAL is non-zero, specified by the COND_STRING, THREAD and EXTRA_STRING parameters.
the breakpoint number will be allocated from the internal If INTERNAL is non-zero, the breakpoint number will be allocated
breakpoint count. Returns true if any breakpoint was created; from the internal breakpoint count. Returns true if any breakpoint
false otherwise. */ was created; false otherwise. */
int int
create_breakpoint (struct gdbarch *gdbarch, create_breakpoint (struct gdbarch *gdbarch,
char *arg, char *cond_string, char *arg, char *cond_string,
int thread, char *extra_string, int thread, char *extra_string,
int parse_condition_and_thread, int parse_arg,
int tempflag, enum bptype type_wanted, int tempflag, enum bptype type_wanted,
int ignore_count, int ignore_count,
enum auto_boolean pending_break_support, enum auto_boolean pending_break_support,
@ -9641,7 +9641,7 @@ create_breakpoint (struct gdbarch *gdbarch,
lsal = VEC_index (linespec_sals, canonical.sals, 0); lsal = VEC_index (linespec_sals, canonical.sals, 0);
if (parse_condition_and_thread) if (parse_arg)
{ {
char *rest; char *rest;
/* Here we only parse 'arg' to separate condition /* Here we only parse 'arg' to separate condition
@ -9660,6 +9660,9 @@ create_breakpoint (struct gdbarch *gdbarch,
} }
else else
{ {
if (*arg != '\0')
error (_("Garbage '%s' at end of location"), arg);
/* Create a private copy of condition string. */ /* Create a private copy of condition string. */
if (cond_string) if (cond_string)
{ {
@ -9699,7 +9702,7 @@ create_breakpoint (struct gdbarch *gdbarch,
init_raw_breakpoint_without_location (b, gdbarch, type_wanted, ops); init_raw_breakpoint_without_location (b, gdbarch, type_wanted, ops);
b->addr_string = copy_arg; b->addr_string = copy_arg;
if (parse_condition_and_thread) if (parse_arg)
b->cond_string = NULL; b->cond_string = NULL;
else else
{ {

View File

@ -1269,7 +1269,7 @@ enum breakpoint_create_flags
extern int create_breakpoint (struct gdbarch *gdbarch, char *arg, extern int create_breakpoint (struct gdbarch *gdbarch, char *arg,
char *cond_string, int thread, char *cond_string, int thread,
char *extra_string, char *extra_string,
int parse_condition_and_thread, int parse_arg,
int tempflag, enum bptype wanted_type, int tempflag, enum bptype wanted_type,
int ignore_count, int ignore_count,
enum auto_boolean pending_break_support, enum auto_boolean pending_break_support,

View File

@ -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> 2013-04-04 Sandra Loosemore <sandra@codesourcery.com>
* gdb.cp/cplabel.exp: Allow empty directory in file reported * gdb.cp/cplabel.exp: Allow empty directory in file reported

View File

@ -196,6 +196,18 @@ proc test_error {} {
mi_gdb_test "-var-update *" \ mi_gdb_test "-var-update *" \
"\\^done,changelist=\\\[\\\]" \ "\\^done,changelist=\\\[\\\]" \
"update varobj for function call" "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 {} { proc test_disabled_creation {} {