From: Andrew Burgess Date: Wed, 13 Jan 2021 20:08:51 +0000 (+0000) Subject: gdb: add new version style X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=9d2d8a16e1ce033d6b7956d4b4f37961705bb5cf;p=binutils-gdb.git gdb: add new version style This commit adds a new 'version' style, which replaces the hard coded styling currently used for GDB's version string. GDB's version number is displayed: 1. In the output of 'show version', and 2. When GDB starts up (without the --quiet option). This new style can only ever affect the first of these two cases as the second case is printed before GDB has processed any initialization files, or processed any GDB commands passed on the command line. However, because the first case exists I think this commit makes sense, it means the style is no longer hard coded into GDB, and we can add some tests that the style can be enabled/disabled correctly. This commit is an alternative to a patch Tom posted here: https://sourceware.org/pipermail/gdb-patches/2020-June/169820.html I've used the style name 'version' instead of 'startup' to reflect what the style is actually used for. If other parts of the startup text end up being highlighted I imagine they would get their own styles based on what is being highlighted. I feel this is more inline with the other style names that are already in use within GDB. I also decoupled adding this style from the idea of startup options, and the possibility of auto-saving startup options. Those ideas can be explored in later patches. This commit should probably be considered only a partial solution to issue PR cli/25956. The colours of the style are no longer hard coded, however, it is still impossible to change the styling of the version string displayed during startup, so in one sense, the styling of that string is still "hard coded". A later patch will hopefully extend GDB to allow it to adjust the version styling before the initial version string is printed. gdb/ChangeLog: PR cli/25956 * cli/cli-style.c: Add 'cli/cli-setshow.h' include. (version_style): Define. (cli_style_option::cli_style_option): Add intensity parameter, and use as appropriate. (_initialize_cli_style): Register version style set/show commands. * cli/cli-style.h (cli_style_option): Add intensity parameter. (version_style): Declare. * top.c (print_gdb_version): Use version_stype, and styled_string to print the GDB version string. gdb/doc/ChangeLog: PR cli/25956 * gdb.texinfo (Output Styling): Document version style. gdb/testsuite/ChangeLog: PR cli/25956 * gdb.base/style.exp (run_style_tests): Add version string test. (test_startup_version_string): Use version style name. * lib/gdb-utils.exp (style): Handle version style name. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 18368305715..bbb00e4dfd0 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,17 @@ +2021-01-22 Andrew Burgess + + PR cli/25956 + * NEWS: Mention new command. + * cli/cli-style.c: Add 'cli/cli-setshow.h' include. + (version_style): Define. + (cli_style_option::cli_style_option): Add intensity parameter, and + use as appropriate. + (_initialize_cli_style): Register version style set/show commands. + * cli/cli-style.h (cli_style_option): Add intensity parameter. + (version_style): Declare. + * top.c (print_gdb_version): Use version_stype, and styled_string + to print the GDB version string. + 2021-01-22 Andrew Burgess * utils.c (emit_style_escape): Only emit an escape sequence if the diff --git a/gdb/NEWS b/gdb/NEWS index 66702862efb..d2ed28857b0 100644 --- a/gdb/NEWS +++ b/gdb/NEWS @@ -75,6 +75,11 @@ maintenance flush-symbol-cache 'maintenance flush register-cache' and 'maintenance flush symbol-cache' respectively. +set style version foreground COLOR +set style version background COLOR +set style version intensity VALUE + Control the styling of GDB's version number text. + *** Changes in GDB 10 * There are new feature names for ARC targets: "org.gnu.gdb.arc.core" diff --git a/gdb/cli/cli-style.c b/gdb/cli/cli-style.c index cbedd30ea74..8b4b6b24cda 100644 --- a/gdb/cli/cli-style.c +++ b/gdb/cli/cli-style.c @@ -19,6 +19,7 @@ #include "defs.h" #include "cli/cli-cmds.h" +#include "cli/cli-setshow.h" #include "cli/cli-style.h" #include "source-cache.h" #include "observable.h" @@ -98,13 +99,19 @@ cli_style_option metadata_style ("metadata", ui_file_style::DIM); /* See cli-style.h. */ +cli_style_option version_style ("version", ui_file_style::MAGENTA, + ui_file_style::BOLD); + +/* See cli-style.h. */ + cli_style_option::cli_style_option (const char *name, - ui_file_style::basic_color fg) + ui_file_style::basic_color fg, + ui_file_style::intensity intensity) : changed (name), m_name (name), m_foreground (cli_colors[fg - ui_file_style::NONE]), m_background (cli_colors[0]), - m_intensity (cli_intensities[ui_file_style::NORMAL]) + m_intensity (cli_intensities[intensity]) { } @@ -382,4 +389,10 @@ TUI window that does have the focus."), &style_set_list, &style_show_list, true); + + version_style.add_setshow_commands (no_class, _("\ +Version string display styling.\n\ +Configure colors used to display the GDB version string."), + &style_set_list, &style_show_list, + false); } diff --git a/gdb/cli/cli-style.h b/gdb/cli/cli-style.h index cd51bf4aa94..187e1d07ce7 100644 --- a/gdb/cli/cli-style.h +++ b/gdb/cli/cli-style.h @@ -30,7 +30,8 @@ class cli_style_option public: /* Construct a CLI style option with a foreground color. */ - cli_style_option (const char *name, ui_file_style::basic_color fg); + cli_style_option (const char *name, ui_file_style::basic_color fg, + ui_file_style::intensity = ui_file_style::NORMAL); /* Construct a CLI style option with an intensity. */ cli_style_option (const char *name, ui_file_style::intensity i); @@ -124,6 +125,9 @@ extern cli_style_option tui_border_style; /* The border style of a TUI window that does have the focus. */ extern cli_style_option tui_active_border_style; +/* The style to use for the GDB version string. */ +extern cli_style_option version_style; + /* True if source styling is enabled. */ extern bool source_styling; diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog index be37ac444ec..8f0ae35cf7e 100644 --- a/gdb/doc/ChangeLog +++ b/gdb/doc/ChangeLog @@ -1,3 +1,8 @@ +2021-01-22 Andrew Burgess + + PR cli/25956 + * gdb.texinfo (Output Styling): Document version style. + 2021-01-22 Andrew Burgess * gdb.texinfo (Auto-loading extensions): Add additional cross diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo index f18b1c15224..3e3c38dea3a 100644 --- a/gdb/doc/gdb.texinfo +++ b/gdb/doc/gdb.texinfo @@ -25788,6 +25788,18 @@ Control the styling of addresses. These are managed with the @code{set style address} family of commands. By default, this style's foreground color is blue. +@item version +Control the styling of @value{GDBN}'s version number text. By +default, this style's foreground color is magenta and it has bold +intensity. The version number is displayed in two places, the output +of @command{show version}, and when @value{GDBN} starts up. + +Currently the version string displayed at startup is printed before +@value{GDBN} has parsed any command line options, or parsed any +command files, so there is currently no way to control the styling of +this string. However, @value{GDBN}'s @code{--quiet} command line option +can be used to disable printing of the version string on startup. + @item title Control the styling of titles. These are managed with the @code{set style title} family of commands. By default, this style's diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 6537bba41b3..d6fa7402aa8 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2021-01-22 Andrew Burgess + + PR cli/25956 + * gdb.base/style.exp (run_style_tests): Add version string test. + (test_startup_version_string): Use version style name. + * lib/gdb-utils.exp (style): Handle version style name. + 2021-01-22 Andrew Burgess * gdb.base/style.exp (limited_style): New proc. diff --git a/gdb/testsuite/gdb.base/style.exp b/gdb/testsuite/gdb.base/style.exp index 08cd63546bd..0754c9daa49 100644 --- a/gdb/testsuite/gdb.base/style.exp +++ b/gdb/testsuite/gdb.base/style.exp @@ -270,6 +270,12 @@ proc run_style_tests { } { gdb_test "p 5" \ "Warning: '[limited_style p title]', an alias for the command '[limited_style print title]', is deprecated.*Use '[limited_style new_p title]'.*" \ "p deprecated warning, with replacement" + + # Check that the version string is styled in the output of 'show + # version', and that this styling can be disabled. + set vers [style "GNU gdb.*" version] + gdb_test "show version" "${vers}.*" \ + "version is styled in 'show version'" } } @@ -282,7 +288,7 @@ proc test_startup_version_string { } { # Deliberate use of base STYLE proc here as the style of the # startup version string can't (currently) be controlled. - set vers [style "GNU gdb.*" "35;1"] + set vers [style "GNU gdb.*" version] gdb_test "" "${vers}.*" "version is styled at startup" } diff --git a/gdb/testsuite/lib/gdb-utils.exp b/gdb/testsuite/lib/gdb-utils.exp index 000e3800cd9..ad7d2884aae 100644 --- a/gdb/testsuite/lib/gdb-utils.exp +++ b/gdb/testsuite/lib/gdb-utils.exp @@ -55,6 +55,7 @@ proc style {str style} { variable { set style 36 } address { set style 34 } metadata { set style 2 } + version { set style "35;1" } } return "\033\\\[${style}m${str}\033\\\[m" } diff --git a/gdb/top.c b/gdb/top.c index 15fbd6d27e6..08c47422514 100644 --- a/gdb/top.c +++ b/gdb/top.c @@ -1391,14 +1391,9 @@ print_gdb_version (struct ui_file *stream, bool interactive) program to parse, and is just canonical program name and version number, which starts after last space. */ - ui_file_style style; - if (interactive) - { - ui_file_style nstyle = { ui_file_style::MAGENTA, ui_file_style::NONE, - ui_file_style::BOLD }; - style = nstyle; - } - fprintf_styled (stream, style, "GNU gdb %s%s\n", PKGVERSION, version); + std::string v_str = string_printf ("GNU gdb %s%s", PKGVERSION, version); + fprintf_filtered (stream, "%ps\n", + styled_string (version_style.style (), v_str.c_str ())); /* Second line is a copyright notice. */