gdb: Switch "info types" over to use the gdb::options framework
Adds a new -q flag to "info types" using the gdb::option framework. This -q flag is similar to the -q flag already present for "info variables" and "info functions". gdb/ChangeLog: * NEWS: Mention adding -q option to "info types". * symtab.c (struct info_types_options): New struct. (info_types_options_defs): New variable. (make_info_types_options_def_group): New function. (info_types_command): Use gdb::option framework to parse options. (info_types_command_completer): New function. (_initialize_symtab): Extend the help text on "info types" and register command completer. gdb/doc/ChangeLog: * gdb.texinfo (Symbols): Add information about -q flag to "info types".
This commit is contained in:
parent
b4603c3464
commit
a8eab7c6d5
@ -1,3 +1,14 @@
|
||||
2019-07-22 Andrew Burgess <andrew.burgess@embecosm.com>
|
||||
|
||||
* NEWS: Mention adding -q option to "info types".
|
||||
* symtab.c (struct info_types_options): New struct.
|
||||
(info_types_options_defs): New variable.
|
||||
(make_info_types_options_def_group): New function.
|
||||
(info_types_command): Use gdb::option framework to parse options.
|
||||
(info_types_command_completer): New function.
|
||||
(_initialize_symtab): Extend the help text on "info types" and
|
||||
register command completer.
|
||||
|
||||
2019-07-21 Christian Biesinger <cbiesinger@google.com>
|
||||
|
||||
* symtab.c (lookup_symbol_in_objfile_symtabs): Change int to block_enum.
|
||||
|
4
gdb/NEWS
4
gdb/NEWS
@ -211,6 +211,10 @@ maint show test-options-completion-result
|
||||
|
||||
(gdb) print -raw -pretty -object off -- *myptr
|
||||
|
||||
** The "info types" command now supports the '-q' flag to disable
|
||||
printing of some header information in a similar fashion to "info
|
||||
variables" and "info functions".
|
||||
|
||||
* Completion improvements
|
||||
|
||||
** GDB can now complete the options of the "thread apply all" and
|
||||
|
@ -1,3 +1,8 @@
|
||||
2019-07-22 Andrew Burgess <andrew.burgess@embecosm.com>
|
||||
|
||||
* gdb.texinfo (Symbols): Add information about -q flag to "info
|
||||
types".
|
||||
|
||||
2019-07-20 Kevin Buettner <kevinb@redhat.com>
|
||||
|
||||
* python.texi (python command): Revise example to match
|
||||
|
@ -18428,8 +18428,7 @@ information. Inspecting the type of a (global) variable for which
|
||||
of such variables.
|
||||
|
||||
@kindex info types
|
||||
@item info types @var{regexp}
|
||||
@itemx info types
|
||||
@item info types [-q] [@var{regexp}]
|
||||
Print a brief description of all types whose names match the regular
|
||||
expression @var{regexp} (or all types in your program, if you supply
|
||||
no argument). Each complete typename is matched as though it were a
|
||||
@ -18449,6 +18448,11 @@ This command differs from @code{ptype} in two ways: first, like
|
||||
@code{whatis}, it does not print a detailed description; second, it
|
||||
lists all source files and line numbers where a type is defined.
|
||||
|
||||
The output from @samp{into types} is proceeded with a header line
|
||||
describing what types are being listed. The optional flag @samp{-q},
|
||||
which stands for @samp{quiet}, disables printing this header
|
||||
information.
|
||||
|
||||
@kindex info type-printers
|
||||
@item info type-printers
|
||||
Versions of @value{GDBN} that ship with Python scripting enabled may
|
||||
|
63
gdb/symtab.c
63
gdb/symtab.c
@ -4773,11 +4773,62 @@ info_functions_command (const char *args, int from_tty)
|
||||
opts.type_regexp, from_tty);
|
||||
}
|
||||
|
||||
/* Holds the -q option for the 'info types' command. */
|
||||
|
||||
struct info_types_options
|
||||
{
|
||||
int quiet = false;
|
||||
};
|
||||
|
||||
/* The options used by the 'info types' command. */
|
||||
|
||||
static const gdb::option::option_def info_types_options_defs[] = {
|
||||
gdb::option::boolean_option_def<info_types_options> {
|
||||
"q",
|
||||
[] (info_types_options *opt) { return &opt->quiet; },
|
||||
nullptr, /* show_cmd_cb */
|
||||
nullptr /* set_doc */
|
||||
}
|
||||
};
|
||||
|
||||
/* Returns the option group used by 'info types'. */
|
||||
|
||||
static gdb::option::option_def_group
|
||||
make_info_types_options_def_group (info_types_options *opts)
|
||||
{
|
||||
return {{info_types_options_defs}, opts};
|
||||
}
|
||||
|
||||
/* Implement the 'info types' command. */
|
||||
|
||||
static void
|
||||
info_types_command (const char *regexp, int from_tty)
|
||||
info_types_command (const char *args, int from_tty)
|
||||
{
|
||||
symtab_symbol_info (false, regexp, TYPES_DOMAIN, NULL, from_tty);
|
||||
info_types_options opts;
|
||||
|
||||
auto grp = make_info_types_options_def_group (&opts);
|
||||
gdb::option::process_options
|
||||
(&args, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_OPERAND, grp);
|
||||
if (args != nullptr && *args == '\0')
|
||||
args = nullptr;
|
||||
symtab_symbol_info (opts.quiet, args, TYPES_DOMAIN, NULL, from_tty);
|
||||
}
|
||||
|
||||
/* Command completer for 'info types' command. */
|
||||
|
||||
static void
|
||||
info_types_command_completer (struct cmd_list_element *ignore,
|
||||
completion_tracker &tracker,
|
||||
const char *text, const char * /* word */)
|
||||
{
|
||||
const auto group
|
||||
= make_info_types_options_def_group (nullptr);
|
||||
if (gdb::option::complete_options
|
||||
(tracker, &text, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_OPERAND, group))
|
||||
return;
|
||||
|
||||
const char *word = advance_to_expression_complete_word_point (tracker, text);
|
||||
symbol_completer (ignore, tracker, text, word);
|
||||
}
|
||||
|
||||
/* Breakpoint all functions matching regular expression. */
|
||||
@ -6041,8 +6092,12 @@ Prints the functions.\n"),
|
||||
print "struct foo *".
|
||||
I also think "ptype" or "whatis" is more likely to be useful (but if
|
||||
there is much disagreement "info types" can be fixed). */
|
||||
add_info ("types", info_types_command,
|
||||
_("All type names, or those matching REGEXP."));
|
||||
c = add_info ("types", info_types_command, _("\
|
||||
All type names, or those matching REGEXP.\n\
|
||||
Usage: info types [-q] [REGEXP]\n\
|
||||
Print information about all types matching REGEXP, or all types if no\n\
|
||||
REGEXP is given. The optional flag -q disables printing of headers."));
|
||||
set_cmd_completer_handle_brkchars (c, info_types_command_completer);
|
||||
|
||||
add_info ("sources", info_sources_command,
|
||||
_("Source files in the program."));
|
||||
|
Loading…
Reference in New Issue
Block a user