Rationalize "backtrace" command line parsing
authorTom Tromey <tom@tromey.com>
Sun, 23 Apr 2017 16:54:33 +0000 (10:54 -0600)
committerTom Tromey <tom@tromey.com>
Tue, 27 Mar 2018 03:57:09 +0000 (21:57 -0600)
commitea3b06874c8a1037bad4fd5b9396d196e6963ac6
tree3992edee33959fb4062ff519bbea7ec663bcba4f
parent07dca93f3bbc2426d89eba460c925863e4ebd636
Rationalize "backtrace" command line parsing

The backtrace command has peculiar command-line parsing.  In
particular, it splits the command line, then loops over the arguments.
If it sees a word it recognizes, like "full", it effectively drops
this word from the argument vector.  Then, it pastes together the
remaining arguments, passing them on to backtrace_command_1, which in
turn passes the resulting string to parse_and_eval_long.

The documentation doesn't mention the parse_and_eval_long at all, so
it is a bit of a hidden feature that you can "bt 3*2".  The strange
algorithm above also means you can "bt 3 * no-filters 2" and get 6
frames...

This patch changes backtrace's command line parsing to be a bit more
rational.  Now, special words like "full" are only recognized at the
start of the command.

This also updates the documentation to describe the various bt options
individually.

gdb/ChangeLog
2018-03-26  Tom Tromey  <tom@tromey.com>

* stack.c (backtrace_command): Rewrite command line parsing.

gdb/doc/ChangeLog
2018-03-26  Tom Tromey  <tom@tromey.com>

* gdb.texinfo (Backtrace): Describe options individually.
gdb/ChangeLog
gdb/doc/ChangeLog
gdb/doc/gdb.texinfo
gdb/stack.c