binutils-gdb/gdb/maint-test-settings.c
Tom Tromey 0743fc83c0 Replace most calls to help_list and cmd_show_list
Currently there are many prefix commands that do nothing but call
either help_list or cmd_show_list.  I happened to notice that one such
call, for "set print type", used the wrong command list parameter,
causing incorrect output.

Rather than fix this bug in isolation, I decided to eliminate this
possibility by adding two new ways to add prefix commands, which
simply route the call to help_list or cmd_show_list, as appropriate.
This makes it impossible for a mismatch to occur.

In some cases, a bit of output was removed; however, I don't think
this output in general was very useful.  It seemed redundant with
what's already printed by help_list.  A representative example is this
hunk, removed from ada-lang.c:

-  printf_unfiltered (_(\
-"\"set ada\" must be followed by the name of a setting.\n"));

This simplified the CLI style set/show commands quite a bit, and
allowed the deletion of a macro.

This also cleans up some unusual code in windows-tdep.c.

Tested on x86-64 Fedora 30.  Note that I have no way to build the
go32-nat.c change.

gdb/ChangeLog
2020-04-17  Tom Tromey  <tromey@adacore.com>

	* auto-load.c (show_auto_load_cmd): Remove.
	(auto_load_show_cmdlist_get): Use add_show_prefix_cmd.
	* arc-tdep.c (_initialize_arc_tdep): Use add_show_prefix_cmd.
	(maintenance_print_arc_command): Remove.
	* tui/tui-win.c (tui_command): Remove.
	(tui_get_cmd_list): Use add_basic_prefix_cmd.
	* tui/tui-layout.c (tui_layout_command): Remove.
	(_initialize_tui_layout): Use add_basic_prefix_cmd.
	* python/python.c (user_set_python, user_show_python): Remove.
	(_initialize_python): Use add_basic_prefix_cmd,
	add_show_prefix_cmd.
	* guile/guile.c (set_guile_command, show_guile_command): Remove.
	(install_gdb_commands): Use add_basic_prefix_cmd,
	add_show_prefix_cmd.
	(info_guile_command): Remove.
	* dwarf2/read.c (set_dwarf_cmd, show_dwarf_cmd): Remove.
	(_initialize_dwarf2_read): Use add_basic_prefix_cmd,
	add_show_prefix_cmd.
	* cli/cli-style.h (class cli_style_option) <add_setshow_commands>:
	Remove do_set and do_show parameters.
	* cli/cli-style.c (set_style, show_style): Remove.
	(_initialize_cli_style): Use add_basic_prefix_cmd,
	add_show_prefix_cmd.
	(cli_style_option::add_setshow_commands): Remove do_set and
	do_show parameters.
	(cli_style_option::add_setshow_commands): Use
	add_basic_prefix_cmd, add_show_prefix_cmd.
	(STYLE_ADD_SETSHOW_COMMANDS): Remove macro.
	(set_style_name): Remove.
	* cli/cli-dump.c (dump_command, append_command): Remove.
	(srec_dump_command, ihex_dump_command, verilog_dump_command)
	(tekhex_dump_command, binary_dump_command)
	(binary_append_command): Remove.
	(_initialize_cli_dump): Use add_basic_prefix_cmd.
	* windows-tdep.c (w32_prefix_command_valid): Remove global.
	(init_w32_command_list): Remove; move into ...
	(_initialize_windows_tdep): ... here.  Use add_basic_prefix_cmd.
	* valprint.c (set_print, show_print, set_print_raw)
	(show_print_raw): Remove.
	(_initialize_valprint): Use add_basic_prefix_cmd,
	add_show_prefix_cmd.
	* typeprint.c (set_print_type, show_print_type): Remove.
	(_initialize_typeprint): Use add_basic_prefix_cmd,
	add_show_prefix_cmd.
	* record.c (set_record_command, show_record_command): Remove.
	(_initialize_record): Use add_basic_prefix_cmd,
	add_show_prefix_cmd.
	* cli/cli-cmds.c (_initialize_cli_cmds): Use add_basic_prefix_cmd,
	add_show_prefix_cmd.
	(info_command, show_command, set_debug, show_debug): Remove.
	* top.h (set_history, show_history): Don't declare.
	* top.c (set_history, show_history): Remove.
	* target-descriptions.c (set_tdesc_cmd, show_tdesc_cmd)
	(unset_tdesc_cmd): Remove.
	(_initialize_target_descriptions): Use add_basic_prefix_cmd,
	add_show_prefix_cmd.
	* symtab.c (info_module_command): Remove.
	(_initialize_symtab): Use add_basic_prefix_cmd.
	* symfile.c (overlay_command): Remove.
	(_initialize_symfile): Use add_basic_prefix_cmd.
	* sparc64-tdep.c (info_adi_command): Remove.
	(_initialize_sparc64_adi_tdep): Use add_basic_prefix_cmd.
	* sh-tdep.c (show_sh_command, set_sh_command): Remove.
	(_initialize_sh_tdep): Use add_basic_prefix_cmd,
	add_show_prefix_cmd.
	* serial.c (serial_set_cmd, serial_show_cmd): Remove.
	(_initialize_serial): Use add_basic_prefix_cmd,
	add_show_prefix_cmd.
	* ser-tcp.c (set_tcp_cmd, show_tcp_cmd): Remove.
	(_initialize_ser_tcp): Use add_basic_prefix_cmd,
	add_show_prefix_cmd.
	* rs6000-tdep.c (set_powerpc_command, show_powerpc_command)
	(_initialize_rs6000_tdep): Use add_basic_prefix_cmd,
	add_show_prefix_cmd.
	* riscv-tdep.c (show_riscv_command, set_riscv_command)
	(show_debug_riscv_command, set_debug_riscv_command): Remove.
	(_initialize_riscv_tdep): Use add_basic_prefix_cmd,
	add_show_prefix_cmd.
	* remote.c (remote_command, set_remote_cmd): Remove.
	(_initialize_remote): Use add_basic_prefix_cmd.
	* record-full.c (set_record_full_command)
	(show_record_full_command): Remove.
	(_initialize_record_full): Use add_basic_prefix_cmd,
	add_show_prefix_cmd.
	* record-btrace.c (cmd_set_record_btrace)
	(cmd_show_record_btrace, cmd_set_record_btrace_bts)
	(cmd_show_record_btrace_bts, cmd_set_record_btrace_pt)
	(cmd_show_record_btrace_pt): Remove.
	(_initialize_record_btrace): Use add_basic_prefix_cmd,
	add_show_prefix_cmd.
	* ravenscar-thread.c (set_ravenscar_command)
	(show_ravenscar_command): Remove.
	(_initialize_ravenscar): Use add_basic_prefix_cmd,
	add_show_prefix_cmd.
	* mips-tdep.c (show_mips_command, set_mips_command)
	(_initialize_mips_tdep): Use add_basic_prefix_cmd,
	add_show_prefix_cmd.
	* maint.c (maintenance_command, maintenance_info_command)
	(maintenance_check_command, maintenance_print_command)
	(maintenance_set_cmd, maintenance_show_cmd): Remove.
	(_initialize_maint_cmds): Use add_basic_prefix_cmd,
	add_show_prefix_cmd.
	(show_per_command_cmd): Remove.
	* maint-test-settings.c (maintenance_set_test_settings_cmd):
	Remove.
	(maintenance_show_test_settings_cmd): Remove.
	(_initialize_maint_test_settings): Use add_basic_prefix_cmd,
	add_show_prefix_cmd.
	* maint-test-options.c (maintenance_test_options_command):
	Remove.
	(_initialize_maint_test_options): Use add_basic_prefix_cmd.
	* macrocmd.c (macro_command): Remove
	(_initialize_macrocmd): Use add_basic_prefix_cmd.
	* language.c (set_check, show_check): Remove.
	(_initialize_language): Use add_basic_prefix_cmd,
	add_show_prefix_cmd.
	* infcmd.c (unset_command): Remove.
	(_initialize_infcmd): Use add_basic_prefix_cmd.
	* i386-tdep.c (set_mpx_cmd, show_mpx_cmd): Remove.
	(_initialize_i386_tdep): Use add_basic_prefix_cmd,
	add_show_prefix_cmd.
	* go32-nat.c (go32_info_dos_command): Remove.
	(_initialize_go32_nat): Use add_basic_prefix_cmd.
	* cli/cli-decode.c (do_prefix_cmd, add_basic_prefix_cmd)
	(do_show_prefix_cmd, add_show_prefix_cmd): New functions.
	* frame.c (set_backtrace_cmd, show_backtrace_cmd): Remove.
	(_initialize_frame): Use add_basic_prefix_cmd,
	add_show_prefix_cmd.
	* dcache.c (set_dcache_command, show_dcache_command): Remove.
	(_initialize_dcache): Use add_basic_prefix_cmd,
	add_show_prefix_cmd.
	* cp-support.c (maint_cplus_command): Remove.
	(_initialize_cp_support): Use add_basic_prefix_cmd.
	* btrace.c (maint_btrace_cmd, maint_btrace_set_cmd)
	(maint_btrace_show_cmd, maint_btrace_pt_set_cmd)
	(maint_btrace_pt_show_cmd, _initialize_btrace): Use
	add_basic_prefix_cmd, add_show_prefix_cmd.
	* breakpoint.c (save_command): Remove.
	(_initialize_breakpoint): Use add_basic_prefix_cmd.
	* arm-tdep.c (set_arm_command, show_arm_command): Remove.
	(_initialize_arm_tdep): Use add_basic_prefix_cmd,
	add_show_prefix_cmd.
	* ada-lang.c (maint_set_ada_cmd, maint_show_ada_cmd)
	(set_ada_command, show_ada_command): Remove.
	(_initialize_ada_language): Use add_basic_prefix_cmd,
	add_show_prefix_cmd.
	* command.h (add_basic_prefix_cmd, add_show_prefix_cmd): Declare.

gdb/testsuite/ChangeLog
2020-04-17  Tom Tromey  <tromey@adacore.com>

	* gdb.cp/maint.exp (test_help): Simplify multiple_help_body.
	Update tests.
	* gdb.btrace/cpu.exp: Update tests.
	* gdb.base/maint.exp: Update tests.
	* gdb.base/default.exp: Update tests.
	* gdb.base/completion.exp: Update tests.
2020-04-17 15:13:41 -06:00

228 lines
7.8 KiB
C
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/* Maintenance commands for testing the settings framework.
Copyright (C) 2019-2020 Free Software Foundation, Inc.
This file is part of GDB.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include "defs.h"
#include "gdbcmd.h"
/* Command list for "maint set test-settings". */
static cmd_list_element *maintenance_set_test_settings_list;
/* Command list for "maint show test-settings". */
static cmd_list_element *maintenance_show_test_settings_list;
/* Control variables for all the "maintenance set/show test-settings
xxx" commands. */
static bool maintenance_test_settings_boolean;
static auto_boolean maintenance_test_settings_auto_boolean = AUTO_BOOLEAN_AUTO;
static unsigned int maintenance_test_settings_uinteger;
static int maintenance_test_settings_integer;
static int maintenance_test_settings_zinteger;
static unsigned int maintenance_test_settings_zuinteger;
static int maintenance_test_settings_zuinteger_unlimited;
static char *maintenance_test_settings_string;
static char *maintenance_test_settings_string_noescape;
static char *maintenance_test_settings_optional_filename;
static char *maintenance_test_settings_filename;
/* Enum values for the "maintenance set/show test-settings boolean"
commands. */
static const char maintenance_test_settings_xxx[] = "xxx";
static const char maintenance_test_settings_yyy[] = "yyy";
static const char maintenance_test_settings_zzz[] = "zzz";
static const char *const maintenance_test_settings_enums[] = {
maintenance_test_settings_xxx,
maintenance_test_settings_yyy,
maintenance_test_settings_zzz,
nullptr
};
static const char *maintenance_test_settings_enum
= maintenance_test_settings_xxx;
/* The "maintenance show test-settings xxx" commands. */
static void
maintenance_show_test_settings_value_cmd
(struct ui_file *file, int from_tty,
struct cmd_list_element *c, const char *value)
{
fprintf_filtered (file, (("%s\n")), value);
}
void _initialize_maint_test_settings ();
void
_initialize_maint_test_settings ()
{
maintenance_test_settings_filename = xstrdup ("/foo/bar");
add_basic_prefix_cmd ("test-settings", class_maintenance,
_("\
Set GDB internal variables used for set/show command infrastructure testing."),
&maintenance_set_test_settings_list,
"maintenance set test-settings ",
0/*allow-unknown*/,
&maintenance_set_cmdlist);
add_show_prefix_cmd ("test-settings", class_maintenance,
_("\
Show GDB internal variables used for set/show command infrastructure testing."),
&maintenance_show_test_settings_list,
"maintenance show test-settings ",
0/*allow-unknown*/,
&maintenance_show_cmdlist);
add_setshow_boolean_cmd ("boolean", class_maintenance,
&maintenance_test_settings_boolean, _("\
command used for internal testing."), _("\
command used for internal testing."),
nullptr, /* help_doc */
nullptr, /* set_cmd */
maintenance_show_test_settings_value_cmd,
&maintenance_set_test_settings_list,
&maintenance_show_test_settings_list);
add_setshow_auto_boolean_cmd ("auto-boolean", class_maintenance,
&maintenance_test_settings_auto_boolean, _("\
command used for internal testing."), _("\
command used for internal testing."),
nullptr, /* help_doc */
nullptr, /* set_cmd */
maintenance_show_test_settings_value_cmd,
&maintenance_set_test_settings_list,
&maintenance_show_test_settings_list);
add_setshow_uinteger_cmd ("uinteger", class_maintenance,
&maintenance_test_settings_uinteger, _("\
command used for internal testing."), _("\
command used for internal testing."),
nullptr, /* help_doc */
nullptr, /* set_cmd */
maintenance_show_test_settings_value_cmd,
&maintenance_set_test_settings_list,
&maintenance_show_test_settings_list);
add_setshow_integer_cmd ("integer", class_maintenance,
&maintenance_test_settings_integer, _("\
command used for internal testing."), _("\
command used for internal testing."),
nullptr, /* help_doc */
nullptr, /* set_cmd */
maintenance_show_test_settings_value_cmd,
&maintenance_set_test_settings_list,
&maintenance_show_test_settings_list);
add_setshow_string_cmd ("string", class_maintenance,
&maintenance_test_settings_string, _("\
command used for internal testing."), _("\
command used for internal testing."),
nullptr, /* help_doc */
nullptr, /* set_cmd */
maintenance_show_test_settings_value_cmd,
&maintenance_set_test_settings_list,
&maintenance_show_test_settings_list);
add_setshow_string_noescape_cmd
("string-noescape", class_maintenance,
&maintenance_test_settings_string_noescape, _("\
command used for internal testing."), _("\
command used for internal testing."),
nullptr, /* help_doc */
nullptr, /* set_cmd */
maintenance_show_test_settings_value_cmd,
&maintenance_set_test_settings_list,
&maintenance_show_test_settings_list);
add_setshow_optional_filename_cmd
("optional-filename", class_maintenance,
&maintenance_test_settings_optional_filename, _("\
command used for internal testing."), _("\
command used for internal testing."),
nullptr, /* help_doc */
nullptr, /* set_cmd */
maintenance_show_test_settings_value_cmd,
&maintenance_set_test_settings_list,
&maintenance_show_test_settings_list);
add_setshow_filename_cmd ("filename", class_maintenance,
&maintenance_test_settings_filename, _("\
command used for internal testing."), _("\
command used for internal testing."),
nullptr, /* help_doc */
nullptr, /* set_cmd */
maintenance_show_test_settings_value_cmd,
&maintenance_set_test_settings_list,
&maintenance_show_test_settings_list);
add_setshow_zinteger_cmd ("zinteger", class_maintenance,
&maintenance_test_settings_zinteger, _("\
command used for internal testing."), _("\
command used for internal testing."),
nullptr, /* help_doc */
nullptr, /* set_cmd */
maintenance_show_test_settings_value_cmd,
&maintenance_set_test_settings_list,
&maintenance_show_test_settings_list);
add_setshow_zuinteger_cmd ("zuinteger", class_maintenance,
&maintenance_test_settings_zuinteger, _("\
command used for internal testing."), _("\
command used for internal testing."),
nullptr, /* help_doc */
nullptr, /* set_cmd */
maintenance_show_test_settings_value_cmd,
&maintenance_set_test_settings_list,
&maintenance_show_test_settings_list);
add_setshow_zuinteger_unlimited_cmd
("zuinteger-unlimited", class_maintenance,
&maintenance_test_settings_zuinteger_unlimited, _("\
command used for internal testing."), _("\
command used for internal testing."),
nullptr, /* help_doc */
nullptr, /* set_cmd */
maintenance_show_test_settings_value_cmd,
&maintenance_set_test_settings_list,
&maintenance_show_test_settings_list);
add_setshow_enum_cmd ("enum", class_maintenance,
maintenance_test_settings_enums,
&maintenance_test_settings_enum, _("\
command used for internal testing."), _("\
command used for internal testing."),
nullptr, /* help_doc */
nullptr, /* set_cmd */
maintenance_show_test_settings_value_cmd,
&maintenance_set_test_settings_list,
&maintenance_show_test_settings_list);
}