Make breakpoint/location number parsing error output consistent
authorPedro Alves <palves@redhat.com>
Tue, 7 Nov 2017 11:00:32 +0000 (11:00 +0000)
committerPedro Alves <palves@redhat.com>
Tue, 7 Nov 2017 11:07:19 +0000 (11:07 +0000)
commit95e95a6de2e4a050870c49bf52fbac0239847b63
treec4d914376eb4b51fdec1e9047fcd0e0b12354e6f
parentcee62dbd8771e22856d950c2615fb463305a9fcb
Make breakpoint/location number parsing error output consistent

... and also make GDB catch a few more cases of invalid input.

This fixes the inconsistency in GDB's output (e.g., "bad" vs "Bad")
exposed by the new tests added in the previous commit.

Also, makes the "0-0" and "inverted range" cases be loud errors.

Also makes GDB reject negative breakpoint number in ranges.  We
already rejected negative number literals, but you could still subvert
that via convenience variables, like:

  (gdb) set $bp -1
  (gdb) disable $bp.1-2

The change to get_number_trailer fixes a bug exposed by the new tests.
The function did not handle parsing "-$num".  [This wasn't visible in
the gdb.multi/tids.exp (which has similar tests) because the TID range
parsing is implemented differently.]

gdb/ChangeLog:
2017-11-07  Pedro Alves  <palves@redhat.com>

* breakpoint.c (extract_bp_kind): New enum.
(extract_bp_num, extract_bp_or_bp_range): New functions, partially
factored out from ...
(extract_bp_number_and_location): ... here.
* cli/cli-utils.c (get_number_trailer): Handle '-$variable'.

gdb/testsuite/ChangeLog:
2017-11-07  Pedro Alves  <palves@redhat.com>

* gdb.base/ena-dis-br.exp (test_ena_dis_br): Adjust test.
* gdb.cp/ena-dis-br-range.exp: Adjust tests.
(disable_invalid, disable_inverted, disable_negative): New
procedures.
("bad numbers"): New set of tests.
gdb/ChangeLog
gdb/breakpoint.c
gdb/cli/cli-utils.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.base/ena-dis-br.exp
gdb/testsuite/gdb.cp/ena-dis-br-range.exp