From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id sbZ0IUubMWq0uwoAWB0awg (envelope-from ) for ; Tue, 16 Jun 2026 14:51:55 -0400 Authentication-Results: simark.ca; dkim=pass (2048-bit key; unprotected) header.d=skynet.be header.i=@skynet.be header.a=rsa-sha256 header.s=rmail2 header.b=nHl/SWCK; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 6DE631E098; Tue, 16 Jun 2026 14:51:55 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-5.4 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=ham autolearn_force=no version=4.0.1 Received: from vm01.sourceware.org (vm01.sourceware.org [38.145.34.32]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id B9E5D1E070 for ; Tue, 16 Jun 2026 14:51:52 -0400 (EDT) Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 54C3748F6678 for ; Tue, 16 Jun 2026 18:51:52 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 54C3748F6678 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=skynet.be header.i=@skynet.be header.a=rsa-sha256 header.s=rmail2 header.b=nHl/SWCK Received: from mailsec202.isp.belgacom.be (mailsec202.isp.belgacom.be [195.238.22.98]) by sourceware.org (Postfix) with ESMTPS id C4F1248F66C9 for ; Tue, 16 Jun 2026 18:51:22 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org C4F1248F66C9 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=skynet.be Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=skynet.be ARC-Filter: OpenARC Filter v1.0.0 sourceware.org C4F1248F66C9 Authentication-Results: sourceware.org; arc=none smtp.remote-ip=195.238.22.98 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1781635883; cv=none; b=Myc+S0/TMtkjAw9fpuedjPsIBt3wG4clo51Hy31JceADZvGsjt0TWylhIfAxFRcjvQw0gXiG1I9NRyVUvtrjL81CU6l0zeFcdbS3QGliD+fefxHg9/PuFgshJtk5yk/sz0RH6LiutL5GN3q8rdDkpQ6CWUHazF1/FV6DNohCLUI= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1781635883; c=relaxed/simple; bh=gLICz6gbsrE3GMzU65Usa6H+B6UDzoA9jye3VZ9peDo=; h=DKIM-Signature:Message-ID:Subject:From:To:Date:MIME-Version; b=iXMPL3v4erEmS20ABB9smkaaRGZrcqIs9KAhQoPmviFPMbvGjPhg/pP6KJS3PeZyIz5h04lIUo6aMJftuzdl66bKwKMn5wANZse7Hr1btbP9vy/qdVzCNuJLixxfQXoHk7sMFDd0Gm101V81R4lcvgKySqrZhB2pgS+ob9mN8hk= ARC-Authentication-Results: i=1; sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=skynet.be header.i=@skynet.be header.a=rsa-sha256 header.s=rmail2 header.b=nHl/SWCK DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org C4F1248F66C9 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=skynet.be; i=@skynet.be; q=dns/txt; s=rmail2; t=1781635883; x=1813171883; h=message-id:subject:from:to:date:in-reply-to:references: content-transfer-encoding:mime-version; bh=VbSx1hFsIbSARfVoHhaRNyXyVyLetLn5VBVw8quYb48=; b=nHl/SWCKnQDfl1C46mrpD9m64rsgKAz7NZfmVTqBNZYW8ZMukt1yB/kK DUgMPXHEBLIt1XlOn8zi5iqx7FqUYylm6BdVDLykK8y4Ksg67AT2VtjiW KLYeTxPtuOv15Mk3PgxbtlaTwB4x8QSmiuMFzC1wX6v0hDwzSLY82vfbm GEKnwmCpUMPze0vzRmYd1yXFbGSNnpN+4rTF388IA8F5IG0jk6SnirU/E XzZoQN4we8S8YKbhHU+T/basDoUl+vh+sKVni7lYM5jkUPr/crxCvyAqv n/ePG4+234TjAFE8yGDvm0NpBcpVYT96HfwjOPZEpcZEBfQVqQL62/369 Q==; X-CSE-ConnectionGUID: 3sqENVArTl+thNMCpFry6w== X-CSE-MsgGUID: 5By0YYkdTeypftMrbbnyyQ== X-ExtLoop: 1 X-ThreatScanner-Verdict: Negative X-IPAS-Result: =?us-ascii?q?A2EOAQCqmjFq/1uGgG0NTYESgUeKDZF3nhuBfg8BAQEBA?= =?us-ascii?q?QEBAQEJUQQBAYUGAo1CJzQJDgECBAMCAwEBAQEBAQEBAQEBCwEBAQUBAQEBA?= =?us-ascii?q?QEGBAEBAQKBHYYJgy6ECAEBAQMjBGILGAICJgICVrhRen8zgQHeQ4FyFAGBC?= =?us-ascii?q?i6FcYJqAYFwiQI2gVVEgRWCejE+hEODW4JqBIIigQyBeI8jCUl4HANZLAFVE?= =?us-ascii?q?xcLBwWBI0MDTTkjDzwFLR2BIyEdFxYeWBsHBRIgKkJFIwMCQlk/OAtCAQWBX?= =?us-ascii?q?QKCEU4jHwM5f4FvgSVnZhUwNYECER8KewMLbT03FBsEkQIHAYEOgUukYaJ8N?= =?us-ascii?q?AeEIIFgBgygAzOqbJkIqUKBaIIWbYM7UiiOX8wmgTYHAgcPApIngUsBAQ?= IronPort-PHdr: A9a23:Zzar4RBy1JdCVYBpVrNsUyQUkUQY04WdBeb1wqQuh78GSKm/5ZOqZ BWZua4wygeRFt+BsaIew6qO6ua8AjBGuc7A+Fk5M7VyFDY9wf0MmAIhBMPXQWbaF9XNKwEcI oFpeWQhwUuGN1NIEt31fVzYry76xzcTHhLiKVg9fbytScbdgMutyu+95YDYbRlWizqhe7NyK wi9oRnMusUMjoZvJKY8xgHVrndUdOha231kKUyQkhri+8y8+IJv/zlKt/8u+cNNXr/2c7gkQ bBdET8rL3076Mr3uBbMSgeC+mESWXgMnBpSBAjF4hD6XpPvvSb/q+FwxiqUM9DoQL4tQTis4 L9lRxDxhCoZODA37XnbhcNsgq1VphKhvAF/zJXPYI6JLvp+f7jScs0cSGFcQ8teTS1BAoe7b 4sSE+oMOPtToofhq1cSqxa1GA+hD/7txDBVnH/7xa403fkhHw/Y0gIvHdwOv2jbotr7O6gfS vy1zLDSwDnfc/9bwzXw5Y7VeR4hu/GMWrdwfNLLx0kvFgPFilSQqZT9PzyLy+8Cs3KU7/BnV eK2lm4nqh9+oiK0xswxjYTJnoIVylHA9SV42IY1PcO3RFR1YNG+CptQsDiaN5Z3Qsw8WWFoo z03yqYFuZ+7eigF1ognywTEZPOZaoWF5A/oW+mNLzlinn1lZK6/iAio8Uim0uDxVMe53EhOo yZbjNXCuHQA2RLP5saHSfZx4Ems1zaP2Q3R9O1JPEE5mKrbJpI8zbA9mZQevEbdEyLqhEj7k K+Ye0M58ear8+TqeqjqqoOYOoNulw3yLKcjltaiDek2PQUCRWyW9fm62bb+50P2Wq9Kgeczk qTBtZDaItkUqbChDg9O14Yj9w6/DzC70NQEhXUHLExKeBaAj4XxP17CPfT1Aemlj1ixkTpmx OrKMqD7DpjDKHfPiLbhfbBj5E5A0Ac/0MxT6pZOBr0cPv7+WVX9uMHWAxI2KQC5x/vrBM141 owEWGKPBqGZMLnVsV+N/u8vO+mMZI4RuDb8M/gl/+DhgWU3mFAHZ6mp2oIXaG25Hvt4OUWZe mHhgswCEWYKuAoxUvDqhEeZXjFNf3qyRb4z5iknCIK6CofOXo+tj6Ga0yuiBp1ZfHxGBUyME Xj2bIWJQOwMaCWPIs97jjMLS7agRJU71R6wrgP6zKBnLuXM9i0erp3szMJ16PHLlREu6Tx0C NyQ33yVQ2FugGwIWTw40rpnrEF511uPy7V0jvJXGNBK+v9FTAQ3OYfBw+BmD93+QBjOccqSS FaiW9mpHDEwTtQrz98PeEZ9A8+ugQvd0CquDL8ajaCEBJsx8q7GxHf+Od5xxGvF1KkgilkrW tNBO2KoiaBh6wbeG4jHn12EmKavb6scxjLC+X+bw2SXpE9WXxZ8Ub7dXXARfkbYtc336FvNQ bO2ErQnKgVBxtaCKqRUbt3pik1LSu/6NtrGbGzi01u3UBmEzPaUZZbhe2gG9D7aFVIPnh8a5 3vAMhIxVQm7pGeLNDxvEVP3e06kzuBkr2qmT0Iu1Ened01g07ut4hNTmvWGTOoO378eow86q CRyEUr71d+AWInInBZoYKgJOYB121xAz2+M72RA IronPort-Data: A9a23:gOqIyqOi69ilMzvvrR2klsFynXyQoLVcMsEvi/4bfWQNrUoi0TRVy zdKCzyBOf/cajOke9Bwb9y0p0kGvZ6ByNcySgZtpSBmQlt08seUXt7xwmUcns+xBpSdEx04t ZxAAjXkBJlsFhcwcz/3b+CJQUFUjP/OHvykTraZZkidfCc8IA85kxVvhuUltYBhhNm9Emult Mj7yyHlEAbNNwVcbCROt8pvlDs15K6s4G1B4ARlDRx2lAa2e0c9Xcp3yZ6ZciOQrrl8RoaSW +vFxbelyWLVlz9FIs+liLvybnoRSbfUOwWU4lIOM0R1qkEfzsCa+v9T2Ms0MS+7uR3Q9zxC4 IwlWaiLdOscFvakdNI1CkcHTH4kZPMuFIjvehBTueTLp6HPnuCFL/9GVCnaNqVAkgp77P0nG VX151nhYzja799azo5XRcE3nd0OCvfCJr8b+W1g6xTyFdg8UM7cFvCiCd9whF/ch+h9RKeEI ZNHOXw2Kk/1C/FNEg5PWdRnxrfu3yKjNWwBwL6WjfNfD2z71Axw1Ln1KNeTZdWQQtxIn0uCv Urd/HX/Dw1cPtH3JT+toin11raTx3KTtIQ6SZeprs9bg1Gvy30LBgEzT1Gxp+iosxvrMz5YA wlOksY0loA9+EbuVtDhVB21u1afuQMGUNdPGvc3rgaXxcLpDx2xVzFCF2UdLYV85IpvHW1s3 1OSm5blFDopsaaND3iQ8ridpjS3fyIYRYMfWRI5ocI+y4GLiOkOYtjnF4kL/HKd5jE+Jd08L /1mYsTza3X/QPPnD5mGwG0= IronPort-HdrOrdr: A9a23:ljzWdK49hcXHcEeO+wPXwNnXdLJyesId70hD6qkRc3Fom6mj/f xG88566faZslgssQgb6LK90fC7MBbhHP1OjbX5X43SPzUO0VHAROpfBODZrAEIdReeytJg X-Talos-CUID: =?us-ascii?q?9a23=3An5MsL2lRBv49pqkl6ILrn9l2ua3XOSbG1Vr2HWa?= =?us-ascii?q?iNWIqVL2zbHSI1rl1zdU7zg=3D=3D?= X-Talos-MUID: 9a23:dTrK1AvT1Kgrv+wY8M2n2RtzbPZZ4KiSBVEVn4kjocOOMz1hAmLI X-IronPort-Anti-Spam-Filtered: true Received: from 91.134-128-109.adsl-dyn.isp.belgacom.be (HELO [192.168.1.3]) ([109.128.134.91]) by relay.proximus.be with ESMTP/TLS/TLS_AES_256_GCM_SHA384; 16 Jun 2026 20:51:00 +0200 Message-ID: <3bebb7dc282cf8758b25a68e9463e5b09091756e.camel@skynet.be> Subject: Re: [PATCH] Fix double apropos output when both alias name and command name match the pattern From: Philippe Waroquiers To: gdb-patches@sourceware.org Date: Tue, 16 Jun 2026 20:51:01 +0200 In-Reply-To: <20260531163756.781643-2-philippe.waroquiers@skynet.be> References: <20260531163756.781643-1-philippe.waroquiers@skynet.be> <20260531163756.781643-2-philippe.waroquiers@skynet.be> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable User-Agent: Evolution 3.56.2-0+deb13u1 MIME-Version: 1.0 X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces~public-inbox=simark.ca@sourceware.org Ping ? Thanks Philippe On Sun, 2026-05-31 at 18:37 +0200, Philippe Waroquiers wrote: > 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. >=20 > Without this patch, the behaviour is: > (gdb) alias ter-exec =3D 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(-) >=20 > 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 =3D regex.search (c->name, name_len, 0, name_len, NULL); > if (returnvalue >=3D 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 =3D strlen (alias.name); > - returnvalue =3D regex.search (alias.name, name_len, 0, name_len, = NULL); > - if (returnvalue >=3D 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 =3D strlen (alias.name); > + returnvalue =3D regex.search (alias.name, name_len, 0, name_len, NUL= L); > + if (returnvalue >=3D 0) > + { > + print_doc_of_command (*c, verbose, regex, stream); > + break; > + } > } > } > } > diff --git a/gdb/testsuite/gdb.base/help.exp b/gdb/testsuite/gdb.base/hel= p.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 =3D backtrace 10" "= define mybt10 alias" > gdb_test "apropos Print backtrace of all stack frames, or innermost COUN= T frames\." \ > "backtrace, mybt10, mybt, where, bt -- Print backtrace of all stack = frames, or innermost COUNT frames\.\[\r\n\]+ alias mybt10 =3D backtrace 10= " > =20 > +# Test apropos when both the alias name and the aliased command match th= e pattern. > +gdb_test_no_output "alias ter-exec =3D interpreter-exec" "define ter-exe= c alias" > +gdb_test_multiple "apropos er-exe" "check we have a single output line w= hen alias and command name match" { > + -re "^apropos er-exe\r\ninterpreter-exec, ter-exec -- Execute a comm= and 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 m= ybt10 =3D backtrace 10\[\r\n\]+Print backtrace of all stack frames, or inne= rmost COUNT frames\..*" > =20