diff options
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/NEWS | 3 | ||||
-rw-r--r-- | gdb/contrib/setup.cfg | 9 | ||||
-rw-r--r-- | gdb/doc/gdb.texinfo | 7 | ||||
-rw-r--r-- | gdb/maint.c | 19 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/maint.exp | 5 |
5 files changed, 43 insertions, 0 deletions
@@ -56,6 +56,9 @@ maintenance check psymtabs maintenance check symtabs Renamed from maintenance check-symtabs +maintenance canonicalize + Show the canonical form of a C++ name. + set riscv numeric-register-names on|off show riscv numeric-register-names Controls whether GDB refers to risc-v registers by their numeric names diff --git a/gdb/contrib/setup.cfg b/gdb/contrib/setup.cfg index 670a850..d6be386 100644 --- a/gdb/contrib/setup.cfg +++ b/gdb/contrib/setup.cfg @@ -7,3 +7,12 @@ ignore-words = gdb/contrib/codespell-ignore-words.txt # Ignore all URLs. uri-ignore-words-list = * + +# This codespell issue ( +# https://github.com/codespell-project/codespell/issues/3381 ) reports the +# need to have support for ignoring blocks of code. +# A suggestion there is to use ignore-multiline-regex, which does work, but +# has a bug: using -w drops all newlines in the updated files ( +# https://github.com/codespell-project/codespell/issues/3642 ). +# Consequently, disabled. To be enabled when the bug is fixed. +#ignore-multiline-regex = codespell:ignore-begin.*codespell:ignore-end diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo index 362e6e7..9b4aa5b 100644 --- a/gdb/doc/gdb.texinfo +++ b/gdb/doc/gdb.texinfo @@ -41632,6 +41632,13 @@ into remote agent bytecodes and display them as a disassembled list. This command is useful for debugging the agent version of dynamic printf (@pxref{Dynamic Printf}). +@kindex maint canonicalize +@item maint canonicalize @var{name} +Print the canonical form of @var{name}, a C@t{++} name. Because a +C@t{++} name may have multiple possible spellings, @value{GDBN} +computes a canonical form of a name for internal use. For example, +@code{short int} and @code{short} are two ways to name the same type. + @kindex maint info breakpoints @anchor{maint info breakpoints} @item maint info breakpoints diff --git a/gdb/maint.c b/gdb/maint.c index f5977ec..766ab74 100644 --- a/gdb/maint.c +++ b/gdb/maint.c @@ -39,6 +39,7 @@ #include "inferior.h" #include "gdbsupport/thread-pool.h" #include "event-top.h" +#include "cp-support.h" #include "cli/cli-decode.h" #include "cli/cli-utils.h" @@ -108,6 +109,18 @@ maintenance_demangle (const char *args, int from_tty) styled_string (command_style.style (), "demangle")); } +/* Print the canonical form of a name. */ + +static void +maintenance_canonicalize (const char *args, int from_tty) +{ + gdb::unique_xmalloc_ptr<char> canon = cp_canonicalize_string (args); + if (canon == nullptr) + gdb_printf ("No change.\n"); + else + gdb_printf ("canonical = %s\n", canon.get ()); +} + static void maintenance_time_display (const char *args, int from_tty) { @@ -1343,6 +1356,12 @@ This command has been moved to \"demangle\"."), &maintenancelist); deprecate_cmd (cmd, "demangle"); + cmd = add_cmd ("canonicalize", class_maintenance, maintenance_canonicalize, + _("\ +Show the canonical form of a C++ name.\n\ +Usage: maintenance canonicalize NAME"), + &maintenancelist); + add_prefix_cmd ("per-command", class_maintenance, set_per_command_cmd, _("\ Per-command statistics settings."), &per_command_setlist, diff --git a/gdb/testsuite/gdb.base/maint.exp b/gdb/testsuite/gdb.base/maint.exp index e006d55..52282bc 100644 --- a/gdb/testsuite/gdb.base/maint.exp +++ b/gdb/testsuite/gdb.base/maint.exp @@ -513,4 +513,9 @@ gdb_test_no_output "maint print symbols" gdb_test_no_output "maint print msymbols" gdb_test_no_output "maint print psymbols" +gdb_test "maint canonicalize int short" "canonical = short" +gdb_test "maint canonicalize fn<ty<int>>" \ + "canonical = fn<ty<int> >" +gdb_test "maint canonical unsigned int" "No change\\." + gdb_exit |