8sa1-binutils-gdb/gdb/cli
Pedro Alves 5d7071341d Make "frame apply" support -OPT options
This adds support for '-'-style options to the "frame apply" family of
commands -- "frame apply COUNT", "frame apply level", "frame apply
all", "faas" and "tfaas".

The -q/-c/-s flags were already supported, -past-main/-past-entry is
new:

~~~
(gdb) help frame apply all
Apply a command to all frames.

Usage: frame apply all [OPTION]... COMMAND
Prints the frame location information followed by COMMAND output.

By default, an error raised during the execution of COMMAND
aborts "frame apply".

Options:
  -q
    Disables printing the frame location information.

  -c
    Print any error raised by COMMAND and continue.

  -s
    Silently ignore any errors or empty output produced by COMMAND.

  -past-main [on|off]
    Set whether backtraces should continue past "main".
    Normally the caller of "main" is not of interest, so GDB will terminate
    the backtrace at "main".  Set this if you need to see the rest
    of the stack trace.

  -past-entry [on|off]
    Set whether backtraces should continue past the entry point of a program.
    Normally there are no callers beyond the entry point of a program, so GDB
    will terminate the backtrace there.  Set this if you need to see
    the rest of the stack trace.
~~~

TAB completion of options is now supported.  Also, TAB completion of
COMMAND in "frame apply all COMMAND" does the right thing now, making
use of complete_command, added by the previous patch.  E.g.:

 (gdb) thread apply all -ascending frame apply all -past-main print -[TAB]
 -address         -elements        -pretty          -symbol
 -array           -null-stop       -repeats         -union
 -array-indexes   -object          -static-members  -vtbl
 (gdb) thread apply all -ascending frame apply all -past-main print glo[TAB]
 global1         global2

The change to tfaas_command is necessary because otherwise you get
this:

 (gdb) tfaas --
 Unrecognized option at: frame apply all -s --

That's because the above is equivalent to:

 (gdb) thread apply all -s frame apply all -s --

and the "--" instructs "thread apply" to consider everything up to
"--" as its command options.  And from that view, "frame" is an
invalid option.

The change makes tfaas be equivalent to:

 (gdb) thread apply all -s -- frame apply all -s --

gdb/ChangeLog:
2019-06-13  Pedro Alves  <palves@redhat.com>

	* cli/cli-utils.c (parse_flags_qcs): Use validate_flags_qcs.
	(validate_flags_qcs): New.
	* cli/cli-utils.h (struct qcs_flags): Change field types to int.
	(validate_flags_qcs): Declare.
	* stack.c (qcs_flag_option_def, fr_qcs_flags_option_defs): New.
	(make_frame_apply_options_def_group): New.
	(frame_apply_command_count): Process options with
	gdb::option::process_options.
	(frame_apply_completer): New.
	(frame_apply_level_completer, frame_apply_all_completer)
	(frame_apply_completer): New.
	(_initialize_stack): Update help of "frame apply", "frame apply
	level", "frame apply all" and "faas" to mention supported options
	and install command completers.
	* stack.h (frame_apply_all_completer): Declare.
	* thread.c: Include "stack.h".
	(tfaas_command): Add "--".
	(_initialize_thread): Update help "tfaas" to mention supported
	options and install command completer.

gdb/testsuite/ChangeLog:
2019-06-13  Pedro Alves  <palves@redhat.com>

	* gdb.base/options.exp (test-frame-apply): New.
	(top level): Test print commands with different "frame apply"
	prefixes.
2019-06-13 00:22:07 +01:00
..
cli-cmds.c Make check_for_argument skip whitespace after arg itself 2019-06-13 00:08:50 +01:00
cli-cmds.h Normalize include guards in gdb 2019-02-07 03:27:23 -07:00
cli-decode.c "set print raw frame-arguments" -> "set print raw-frame-arguments" 2019-06-13 00:18:41 +01:00
cli-decode.h Introduce generic command options framework 2019-06-13 00:18:12 +01:00
cli-dump.c Introduce and use make_unique_xstrdup 2019-06-04 22:48:32 +01:00
cli-interp.c Add debug redirect option 2019-05-17 14:21:47 +01:00
cli-interp.h Add debug redirect option 2019-05-17 14:21:47 +01:00
cli-logging.c Add debug redirect option 2019-05-17 14:21:47 +01:00
cli-option.c Introduce generic command options framework 2019-06-13 00:18:12 +01:00
cli-option.h Introduce generic command options framework 2019-06-13 00:18:12 +01:00
cli-script.c Replace throw_exception with throw in some cases 2019-04-08 09:05:41 -06:00
cli-script.h Normalize include guards in gdb 2019-02-07 03:27:23 -07:00
cli-setshow.c Introduce generic command options framework 2019-06-13 00:18:12 +01:00
cli-setshow.h Introduce generic command options framework 2019-06-13 00:18:12 +01:00
cli-style.c Add highlight style, title style, fputs_highlighted. Improve 'show style' 2019-06-03 21:59:11 +02:00
cli-style.h Add highlight style, title style, fputs_highlighted. Improve 'show style' 2019-06-03 21:59:11 +02:00
cli-utils.c Make "frame apply" support -OPT options 2019-06-13 00:22:07 +01:00
cli-utils.h Make "frame apply" support -OPT options 2019-06-13 00:22:07 +01:00