From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id E6W2M5m1TmO5FQ4AWB0awg (envelope-from ) for ; Tue, 18 Oct 2022 10:18:01 -0400 Received: by simark.ca (Postfix, from userid 112) id C8A421E112; Tue, 18 Oct 2022 10:18:01 -0400 (EDT) Authentication-Results: simark.ca; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.a=rsa-sha256 header.s=default header.b=XGEkF8Ty; dkim-atps=neutral X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-3.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 Received: from sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 6FCDC1E0D5 for ; Tue, 18 Oct 2022 10:18:01 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 7D01A3857B83 for ; Tue, 18 Oct 2022 14:17:58 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 7D01A3857B83 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1666102678; bh=sCre/FudsoqCubfXJZI9i8V4a3u/yMKf46+DqqNIRF0=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:Cc:From; b=XGEkF8TywTlV5z2csqbe1pRe0MwZhefHjFIFsDv3a0/b7p2oU2r6qUW4BReX7NGPj z7Tp1DKNw9RBqKK89X4f3Vh7KY71YrhzHf5roU6HDrKVmCSGiBXjRyAnCEpCRKb6eA XxlLym5f7GkSm3gV64IeINkcA8io/G9WtTTXzeAo= Received: from alt32.smtp-out.videotron.ca (alt32.smtp-out.videotron.ca [24.53.0.21]) by sourceware.org (Postfix) with ESMTPS id 748E93858027 for ; Tue, 18 Oct 2022 14:17:38 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 748E93858027 Received: from localhost.localdomain ([74.56.249.162]) by Videotron with ESMTP id knPSoUIItLykPknPSohknt; Tue, 18 Oct 2022 10:17:37 -0400 X-Authority-Analysis: v=2.4 cv=Ys1s+6UX c=1 sm=1 tr=0 ts=634eb581 a=vTEE2W6FS0436lLiwMOoNg==:117 a=vTEE2W6FS0436lLiwMOoNg==:17 a=0Lei0MbLZxCwy9XTfUEA:9 To: gdb-patches@sourceware.org Subject: [PATCH] gdb: check for groups with duplicate names in reggroups:add Date: Tue, 18 Oct 2022 10:17:33 -0400 Message-Id: <20221018141733.29298-1-simon.marchi@efficios.com> X-Mailer: git-send-email 2.38.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-CMAE-Envelope: MS4xfDDgUVbPLbfVBQZrXpLTZfuhl+L+Xq1io3XMCb+zedAANl7Jjmar1FjIEvtIJVhIHMyxD6BpUgww7ZqYgR9pa14vDNINbKTeFHENr35JH8TyZq4oQWfs dsrSAs0NZU/5u+cx8srD7547m9Bk68BIIEAf5mA9YtZgR3wEAOHv01SoCsZK4h3637fsVuSt/ieDBC7bPy30nKgmf8tgB0Zcv2IdBnxYyaXCoVWlXu3cn9wU X6yPIYhwmVcnUWR2g3P9cA== X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Simon Marchi via Gdb-patches Reply-To: Simon Marchi Cc: Simon Marchi Errors-To: gdb-patches-bounces+public-inbox=simark.ca@sourceware.org Sender: "Gdb-patches" In the downstream ROCm GDB port, we would create multiple register groups with duplicate names. While it did not really hurt, it certainly wasn't the intent. And I don't think it ever makes sense to do so. To catch these, change the assert in reggroups::add to check for duplicate names. It's no longer necessary to check for duplicate reggroup pointers, because adding the same group twice would be caught by the duplicate name check. Change-Id: Id216a58acf91f1b314d3cba2d02de73656f8851d --- gdb/reggroups.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/gdb/reggroups.c b/gdb/reggroups.c index 8e4af303c545..a012bf085265 100644 --- a/gdb/reggroups.c +++ b/gdb/reggroups.c @@ -71,8 +71,13 @@ struct reggroups void add (const reggroup *group) { gdb_assert (group != nullptr); - gdb_assert (std::find (m_groups.begin(), m_groups.end(), group) - == m_groups.end()); + + auto find_by_name = [group] (const reggroup *g) + { + return streq (group->name (), g->name ()); + }; + gdb_assert (std::find_if (m_groups.begin (), m_groups.end (), find_by_name) + == m_groups.end ()); m_groups.push_back (group); } -- 2.38.0