gdb: Add new -n flag to some info commands

The 'info variables', its alias 'whereis', and 'info functions' all
include non-debug symbols in the output by default.  The list of
non-debug symbols can sometimes be quite long, resulting in the
debug symbol based results being scrolled off the screen.

This commit adds a '-n' flag to all of the commands listed above that
excludes the non-debug symbols from the results, leaving just the
debug symbol based results.

gdb/ChangeLog:

	* cli/cli-utils.c (info_print_options_defs): Delete.
	(make_info_print_options_def_group): Delete.
	(extract_info_print_options): Delete.
	(info_print_command_completer): Delete.
	(info_print_args_help): Add extra parameter, and optionally
	include text about -n flag.
	* cli/cli-utils.h (struct info_print_options): Delete.
	(extract_info_print_options): Delete declaration.
	(info_print_command_completer): Delete declaration.
	(info_print_args_help): Add extra parameter, extend header
	comment.
	* python/python.c (gdbpy_rbreak): Pass additional parameter to
	search_symbols.
	* stack.c (struct info_print_options): New type.
	(info_print_options_defs): New file scoped variable.
	(make_info_print_options_def_group): New static function.
	(info_print_command_completer): New static function.
	(info_locals_command): Update to use new local functions.
	(info_args_command): Likewise.
	(_initialize_stack): Add extra parameter to calls to
	info_print_args_help.
	* symtab.c (search_symbols): Add extra parameter, use this to
	possibly excluse non-debug symbols.
	(symtab_symbol_info): Add extra parameter, which is passed on to
	search_symbols.
	(struct info_print_options): New type.
	(info_print_options_defs): New file scoped variable.
	(make_info_print_options_def_group): New static function.
	(info_print_command_completer): New static function.
	(info_variables_command): Update to use local functions, and pass
	extra parameter through to symtab_symbol_info.
	(info_functions_command): Likewise.
	(info_types_command): Pass additional argument through to
	symtab_symbol_info.
	(rbreak_command): Pass extra argument to search_symbols.
	(_initialize_symtab): Add extra arguments for calls to
	info_print_args_help, and update help text for 'info variables',
	'whereis', and 'info functions' commands.
	* symtab.h (search_symbols): Add extra argument to declaration.
	* NEWS: Mention new flags.

gdb/doc/ChangeLog:

	* gdb.texinfo (Symbols): Add information about the -n flag to
	"info variables" and "info functions".

gdb/testsuite/ChangeLog:

	* gdb.base/info-fun.exp: Extend to test the -n flag for 'info
	functions'.  Reindent as needed.
	* gdb.base/info-var-f1.c: New file.
	* gdb.base/info-var-f2.c: New file.
	* gdb.base/info-var.exp: New file.
	* gdb.base/info-var.h: New file.
This commit is contained in:
Andrew Burgess
2019-07-22 16:53:06 +01:00
parent c4a23bf878
commit 4acfdd20c9
16 changed files with 446 additions and 164 deletions

View File

@ -47,38 +47,6 @@ extern int get_number (char **);
error instead of returning 0. */
extern ULONGEST get_ulongest (const char **pp, int trailer = '\0');
/* Structure to hold the values of the options used by the 'info
variables' command and other similar commands. These correspond to the
-q and -t options. */
struct info_print_options
{
int quiet = false;
char *type_regexp = nullptr;
~info_print_options ()
{
xfree (type_regexp);
}
};
/* Extract options from ARGS for commands like 'info variables', placing
the options into OPTS. ARGS is updated to point to the first character
after the options, or, if there is nothing after the options, then ARGS
is set to nullptr. */
extern void extract_info_print_options (info_print_options *opts,
const char **args);
/* Function that can be used as a command completer for 'info variable'
and friends. This offers command option completion as well as symbol
completion. At the moment all symbols are offered for all commands. */
extern void info_print_command_completer (struct cmd_list_element *ignore,
completion_tracker &tracker,
const char *text,
const char * /* word */);
/* Throws an error telling the user that ARGS starts with an option
unrecognized by COMMAND. */
@ -87,10 +55,13 @@ extern void report_unrecognized_option_error (const char *command,
/* Builds the help string for a command documented by PREFIX,
followed by the extract_info_print_args help for ENTITY_KIND. */
followed by the extract_info_print_args help for ENTITY_KIND. If
DOCUMENT_N_FLAG is true then help text descibing the -n flag is also
included. */
const char *info_print_args_help (const char *prefix,
const char *entity_kind);
const char *entity_kind,
bool document_n_flag);
/* Parse a number or a range.
A number will be of the form handled by get_number.