From: Philippe Waroquiers <philippe.waroquiers@skynet.be>
To: gdb-patches@sourceware.org
Cc: Philippe Waroquiers <philippe.waroquiers@skynet.be>
Subject: [PATCH] Fix double apropos output when both alias name and command name match the pattern
Date: Sun, 31 May 2026 18:37:26 +0200 [thread overview]
Message-ID: <20260531163756.781643-2-philippe.waroquiers@skynet.be> (raw)
In-Reply-To: <20260531163756.781643-1-philippe.waroquiers@skynet.be>
apropos_cmd first tries to match the command name with the pattern.
If that succeeds, it prints the command and all its aliases not having
a specific doc string.
In this case, it should not try to match the command aliases names as
the command has already been printed.
Without this patch, the behaviour is:
(gdb) alias ter-exec = interpreter-exec
(gdb) apropos er-exe
interpreter-exec, ter-exec -- Execute a command in an interpreter.
interpreter-exec, ter-exec -- Execute a command in an interpreter.
(gdb)
---
gdb/cli/cli-decode.c | 18 ++++++++++--------
gdb/testsuite/gdb.base/help.exp | 8 ++++++++
2 files changed, 18 insertions(+), 8 deletions(-)
diff --git a/gdb/cli/cli-decode.c b/gdb/cli/cli-decode.c
index de40faeed59..36f911c2cd6 100644
--- a/gdb/cli/cli-decode.c
+++ b/gdb/cli/cli-decode.c
@@ -1784,16 +1784,18 @@ apropos_cmd (struct ui_file *stream,
returnvalue = regex.search (c->name, name_len, 0, name_len, NULL);
if (returnvalue >= 0)
print_doc_of_command (*c, verbose, regex, stream);
-
- /* Try to match against the name of the aliases. */
- for (const cmd_list_element &alias : c->aliases)
+ else
{
- name_len = strlen (alias.name);
- returnvalue = regex.search (alias.name, name_len, 0, name_len, NULL);
- if (returnvalue >= 0)
+ /* Try to match against the name of the aliases. */
+ for (const cmd_list_element &alias : c->aliases)
{
- print_doc_of_command (*c, verbose, regex, stream);
- break;
+ name_len = strlen (alias.name);
+ returnvalue = regex.search (alias.name, name_len, 0, name_len, NULL);
+ if (returnvalue >= 0)
+ {
+ print_doc_of_command (*c, verbose, regex, stream);
+ break;
+ }
}
}
}
diff --git a/gdb/testsuite/gdb.base/help.exp b/gdb/testsuite/gdb.base/help.exp
index a8c55721ef2..6a88c8d4db2 100644
--- a/gdb/testsuite/gdb.base/help.exp
+++ b/gdb/testsuite/gdb.base/help.exp
@@ -135,6 +135,14 @@ gdb_test_no_output "alias mybt10 = backtrace 10" "define mybt10 alias"
gdb_test "apropos Print backtrace of all stack frames, or innermost COUNT frames\." \
"backtrace, mybt10, mybt, where, bt -- Print backtrace of all stack frames, or innermost COUNT frames\.\[\r\n\]+ alias mybt10 = backtrace 10"
+# Test apropos when both the alias name and the aliased command match the pattern.
+gdb_test_no_output "alias ter-exec = interpreter-exec" "define ter-exec alias"
+gdb_test_multiple "apropos er-exe" "check we have a single output line when alias and command name match" {
+ -re "^apropos er-exe\r\ninterpreter-exec, ter-exec -- Execute a command in an interpreter\.\r\n$gdb_prompt $" {
+ pass $gdb_test_name
+ }
+}
+
# Test help for commands having aliases.
gdb_test "help bt" "backtrace, mybt10, mybt, where, bt\[\r\n\]+ alias mybt10 = backtrace 10\[\r\n\]+Print backtrace of all stack frames, or innermost COUNT frames\..*"
--
2.47.3
next prev parent reply other threads:[~2026-05-31 16:39 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-31 16:37 Philippe Waroquiers
2026-05-31 16:37 ` Philippe Waroquiers [this message]
2026-06-16 18:51 ` [PATCH] " Philippe Waroquiers
2026-07-21 14:42 ` Philippe Waroquiers
2026-07-23 14:59 ` Guinevere Larsen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260531163756.781643-2-philippe.waroquiers@skynet.be \
--to=philippe.waroquiers@skynet.be \
--cc=gdb-patches@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox