From patchwork Mon Mar 10 15:10:46 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Marchi X-Patchwork-Id: 107590 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id B75163858CDB for ; Mon, 10 Mar 2025 15:31:34 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org B75163858CDB Authentication-Results: sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=polymtl.ca header.i=@polymtl.ca header.a=rsa-sha256 header.s=default header.b=aENWcwuj X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from smtp.polymtl.ca (smtp.polymtl.ca [132.207.4.11]) by sourceware.org (Postfix) with ESMTPS id DAAF93858D20 for ; Mon, 10 Mar 2025 15:30:55 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org DAAF93858D20 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=polymtl.ca Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=polymtl.ca ARC-Filter: OpenARC Filter v1.0.0 sourceware.org DAAF93858D20 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=132.207.4.11 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1741620655; cv=none; b=sI4/bc0bC3ZgezaZcywghc9NuxWQ7gQV8DvidRTpMoReAvPMMwXxQOSj2fjBa8UogFcd4e7QOT5sxP22tYtfpNvXx+/AuVfzWZsur0S9rH1jl7J4kWMUBEd5z7RmdUnME3k4N1wHmsfylh5oepC3SLXF4Lmi0w5RgPq87htCsS8= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1741620655; c=relaxed/simple; bh=m6Ewi6VStFIr6ELWZlSG8+YNX6i5XRJWpss2tecI/rE=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=ZLO2SuaUXmnU7MZ54aXSlyHIqfVmnLSPV2dCO3QBBWv8jasDFWY9pvbKHXfaZ4WwtzQz6cRCRR8q8vFqfSSQPnNs/R2i0I7YP4Tq8QZDD+GTUzfdCePArHuHo4sRaowxCJOEf88D5uiuV8RynPtwREHlu7tzW4wWUSMHsUlbdPI= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org DAAF93858D20 Received: from simark.ca (simark.ca [158.69.221.121]) (authenticated bits=0) by smtp.polymtl.ca (8.14.7/8.14.7) with ESMTP id 52AFUoYq000372 (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Mon, 10 Mar 2025 11:30:55 -0400 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp.polymtl.ca 52AFUoYq000372 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=polymtl.ca; s=default; t=1741620655; bh=rN4NpabL7v9xTlJ1qc6v/DQv8hfFw56P0by+/CTUPQY=; h=From:To:Cc:Subject:Date:In-Reply-To:From; b=aENWcwujMYtieYmtSruvUF83CisyQ9ePUT5pXRftFvCSUXqMR0Dx0w0pNTh3yzkCu 06shoxB76X814sjO24a15IcvqwNgiZGFnCUVCuL86USvFVbOKClQWAjUU1cN+zSPI6 j5wnbT/nFZDAbSXvg2CsNFD8skxH8FRTq0el10DA= Received: by simark.ca (Postfix, from userid 112) id 85F2A1E11F; Mon, 10 Mar 2025 11:12:15 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-Spam-Level: X-Spam-Status: No, score=-3187.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_PASS, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.6 Received: from simark.localdomain (modemcable238.237-201-24.mc.videotron.ca [24.201.237.238]) (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 ESMTPSA id 121751E0FE; Mon, 10 Mar 2025 11:12:12 -0400 (EDT) From: simon.marchi@polymtl.ca To: gdb-patches@sourceware.org Cc: Simon Marchi Subject: [PATCH 1/4] gdb: C++-ify internal_function Date: Mon, 10 Mar 2025 11:10:46 -0400 Message-ID: <20250310151211.2708331-2-simon.marchi@polymtl.ca> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250310151211.2708331-1-simon.marchi@polymtl.ca> References: <20250310151211.2708331-1-simon.marchi@polymtl.ca> MIME-Version: 1.0 X-Poly-FromMTA: (simark.ca [158.69.221.121]) at Mon, 10 Mar 2025 15:30:50 +0000 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~patchwork=sourceware.org@sourceware.org From: Simon Marchi Change the `name` field to std::string, add constructor. Remove function `create_internal_function`, since it becomes a trivial wrapper around the constructor. Change-Id: Ifc8b1282c442e1930bcd69d6e140128067e49563 --- gdb/value.c | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/gdb/value.c b/gdb/value.c index e498632fe3ca..18c9f7494674 100644 --- a/gdb/value.c +++ b/gdb/value.c @@ -55,10 +55,17 @@ /* Definition of a user function. */ struct internal_function { + internal_function (std::string name, internal_function_fn_noside handler, + void *cookie) + : name (std::move (name)), + handler (handler), + cookie (cookie) + {} + /* The name of the function. It is a bit odd to have this in the function itself -- the user might use a differently-named convenience variable to hold the function. */ - char *name; + std::string name; /* The handler. */ internal_function_fn_noside handler; @@ -2316,18 +2323,6 @@ internalvar_name (const struct internalvar *var) return var->name.c_str (); } -static struct internal_function * -create_internal_function (const char *name, - internal_function_fn_noside handler, void *cookie) -{ - struct internal_function *ifn = new (struct internal_function); - - ifn->name = xstrdup (name); - ifn->handler = handler; - ifn->cookie = cookie; - return ifn; -} - const char * value_internal_function_name (struct value *val) { @@ -2338,7 +2333,7 @@ value_internal_function_name (struct value *val) result = get_internalvar_function (VALUE_INTERNALVAR (val), &ifn); gdb_assert (result); - return ifn->name; + return ifn->name.c_str (); } struct value * @@ -2376,7 +2371,7 @@ do_add_internal_function (const char *name, const char *doc, struct internal_function *ifn; struct internalvar *var = lookup_internalvar (name); - ifn = create_internal_function (name, handler, cookie); + ifn = new internal_function (name, handler, cookie); set_internalvar_function (var, ifn); return add_cmd (name, no_class, function_command, doc, &functionlist); From patchwork Mon Mar 10 15:10:47 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Marchi X-Patchwork-Id: 107588 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 4BE8F3858CDB for ; Mon, 10 Mar 2025 15:23:08 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 4BE8F3858CDB Authentication-Results: sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=polymtl.ca header.i=@polymtl.ca header.a=rsa-sha256 header.s=default header.b=jwIk4R22 X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from smtp.polymtl.ca (smtp.polymtl.ca [132.207.4.11]) by sourceware.org (Postfix) with ESMTPS id 48F653858401 for ; Mon, 10 Mar 2025 15:20:55 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 48F653858401 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=polymtl.ca Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=polymtl.ca ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 48F653858401 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=132.207.4.11 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1741620055; cv=none; b=dUT9NsimR6Hs8bJXnI+X6RknnnSLV584Tx0sZe3FOmEQ2Nnzq+NjPSXWHwYOTvq2rNXo1k8j4KZfngvIdrBfqti2uV2MSGdCuHpL7iW60Nx6rYZw84epFi6C5fAa7ql72WH+PJeXof3VZslvthZeaAbAAzheAZpwFMFgxFO9tC4= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1741620055; c=relaxed/simple; bh=+/fgrxM7bAeMlKv2ZMp0tNHnhpw1VD8VqK63+lhXqcA=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=eMweV42htRcHi0fFlsZ9yns/3aiuCl5GIV7uKxjbOjEW7rimkdd8Hhf+2t4XEL04c1FwAPvtQ+02kUCVAcR98iTVPK8EiYPMKM8gKWzXLGF3QDKzek89tECPfmPH7y9rXdHoCZ/FhOFAEOtX51vGonFBAkksF3LvFPyfqSgyX+c= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 48F653858401 Received: from simark.ca (simark.ca [158.69.221.121]) (authenticated bits=0) by smtp.polymtl.ca (8.14.7/8.14.7) with ESMTP id 52AFKoXQ240782 (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Mon, 10 Mar 2025 11:20:54 -0400 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp.polymtl.ca 52AFKoXQ240782 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=polymtl.ca; s=default; t=1741620054; bh=Qgx0Li2uQ7jXCOH4VZqqxLHb1KzDQGr9uZigbHUxYnU=; h=From:To:Cc:Subject:Date:In-Reply-To:From; b=jwIk4R22yVnK2+nS7EvXmOz8gipeDBgYPdW2+vjtDbtfUOsmd3UqcT2sl+4iGmEdH HgKhHU6Sl275zXqnsCOhishL3fAD6MTNOKHBCOs4UyFh2zNU4BDPWBWZ9TYC0XoJsE YSpJNkbL1/qpqlTL8atAx0AbLmXcj/k44Gijy4Mw= Received: by simark.ca (Postfix, from userid 112) id E63CB1E0FE; Mon, 10 Mar 2025 11:12:15 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-Spam-Level: X-Spam-Status: No, score=-3187.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_PASS, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.6 Received: from simark.localdomain (modemcable238.237-201-24.mc.videotron.ca [24.201.237.238]) (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 ESMTPSA id 4386A1E105; Mon, 10 Mar 2025 11:12:13 -0400 (EDT) From: simon.marchi@polymtl.ca To: gdb-patches@sourceware.org Cc: Simon Marchi Subject: [PATCH 2/4] gdb: clear internalvar on destruction Date: Mon, 10 Mar 2025 11:10:47 -0400 Message-ID: <20250310151211.2708331-3-simon.marchi@polymtl.ca> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250310151211.2708331-1-simon.marchi@polymtl.ca> References: <20250310151211.2708331-1-simon.marchi@polymtl.ca> MIME-Version: 1.0 X-Poly-FromMTA: (simark.ca [158.69.221.121]) at Mon, 10 Mar 2025 15:20:50 +0000 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~patchwork=sourceware.org@sourceware.org From: Simon Marchi The data associated to an internalvar is destroyed when changing the kind of the internalvar, but not when it is destroyed. Fix that by calling clear_internalvar in ~internalvar. A move constructor becomes needed to avoid freeing things multiple times when internalvars are moved (and if we forget it, clang helpfully gives us a -Wdeprecated-copy-with-user-provided-dtor warning). Change-Id: I427718569208fd955ea25e94d341dde356725033 --- gdb/value.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/gdb/value.c b/gdb/value.c index 18c9f7494674..8b8b5c8f4de1 100644 --- a/gdb/value.c +++ b/gdb/value.c @@ -1872,6 +1872,19 @@ struct internalvar : name (std::move (name)) {} + internalvar (internalvar &&other) + : name (std::move(other.name)), + kind (other.kind), + u (other.u) + { + other.kind = INTERNALVAR_VOID; + } + + ~internalvar () + { + clear_internalvar (this); + } + std::string name; /* We support various different kinds of content of an internal variable. From patchwork Mon Mar 10 15:10:48 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Marchi X-Patchwork-Id: 107587 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id AEB143858CD9 for ; Mon, 10 Mar 2025 15:22:23 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org AEB143858CD9 Authentication-Results: sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=polymtl.ca header.i=@polymtl.ca header.a=rsa-sha256 header.s=default header.b=jUyKgwTT X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from smtp.polymtl.ca (smtp.polymtl.ca [132.207.4.11]) by sourceware.org (Postfix) with ESMTPS id 41E133858C51 for ; Mon, 10 Mar 2025 15:20:55 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 41E133858C51 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=polymtl.ca Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=polymtl.ca ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 41E133858C51 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=132.207.4.11 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1741620055; cv=none; b=QrbeTk/WKwxBw0QV53r9HA3ic9d6TCG1CLf/+aW0BCd7eluFYIwNbCq6mjJANL6Ie6p4Hwyq6hEQQVr2Stns1Dw6zkXL63MMmDjhTK2xqBSLrfwWjtEvFb9GijYSllGYEDPyAZcG6EGpkil9dKVHdSvB5gkstzzKPSmNynFAfTE= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1741620055; c=relaxed/simple; bh=ltdLwBig7rRYYUF8U2yIxqwLPGnqLSat/OEm6GxO/vE=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=sM0juki+PZaqAukuJfv73En32AJtfpXZI3DLoyihl12kj1APzs7X3b9GfQ0XqVd2mOp9w1+58GwPyJ2+jWGsJzSRWoAWBZ84j9tF7D0qthOupdWHvzvTupLQ6YwQJ9LNBG7HRyIBdJa6Z8PmmeAo9csrLJR5eZyPI8lP0SaaZNQ= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 41E133858C51 Received: from simark.ca (simark.ca [158.69.221.121]) (authenticated bits=0) by smtp.polymtl.ca (8.14.7/8.14.7) with ESMTP id 52AFKoUu240771 (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Mon, 10 Mar 2025 11:20:54 -0400 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp.polymtl.ca 52AFKoUu240771 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=polymtl.ca; s=default; t=1741620054; bh=9vQ6XeEgH40RPLnYOOwwnbXkvO9bILMB3fDfz7Jg5h8=; h=From:To:Cc:Subject:Date:In-Reply-To:From; b=jUyKgwTToXoBj3I8XwGRixzbX1N+ps/rHZsm2LvM0LYTlH3RJAhHSv1RpI1hhqCox sAzMKCk5jooq5QW0JGHIR1tp8RJQ/z5sgFTokmNAdx88CSitwJ38MDNebiVyzQZS2h nC3lvyzL1IaFZAaVvUqZoH5YYS3qL2fPsuagnJ3M= Received: by simark.ca (Postfix, from userid 112) id 1C6821E105; Mon, 10 Mar 2025 11:12:16 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-Spam-Level: X-Spam-Status: No, score=-3187.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_PASS, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.6 Received: from simark.localdomain (modemcable238.237-201-24.mc.videotron.ca [24.201.237.238]) (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 ESMTPSA id 6B1EA1E10A; Mon, 10 Mar 2025 11:12:13 -0400 (EDT) From: simon.marchi@polymtl.ca To: gdb-patches@sourceware.org Cc: Simon Marchi Subject: [PATCH 3/4] gdb: handle INTERNALVAR_FUNCTION in clear_internalvar Date: Mon, 10 Mar 2025 11:10:48 -0400 Message-ID: <20250310151211.2708331-4-simon.marchi@polymtl.ca> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250310151211.2708331-1-simon.marchi@polymtl.ca> References: <20250310151211.2708331-1-simon.marchi@polymtl.ca> MIME-Version: 1.0 X-Poly-FromMTA: (simark.ca [158.69.221.121]) at Mon, 10 Mar 2025 15:20:50 +0000 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~patchwork=sourceware.org@sourceware.org From: Simon Marchi While checking the list of leaks reported by ASan, I found that clear_internalvar doesn't free the internal_function object owned by the internalvar when the internalvar is of kind INTERNALVAR_FUNCTION, fix that. Change-Id: I78f53b83b97bae39370a7b5ba5e1cec70626d66a --- gdb/value.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/gdb/value.c b/gdb/value.c index 8b8b5c8f4de1..e36feaf81bed 100644 --- a/gdb/value.c +++ b/gdb/value.c @@ -2322,6 +2322,10 @@ clear_internalvar (struct internalvar *var) xfree (var->u.string); break; + case INTERNALVAR_FUNCTION: + delete var->u.fn.function; + break; + default: break; } From patchwork Mon Mar 10 15:10:49 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Marchi X-Patchwork-Id: 107589 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 6A1E93858C39 for ; Mon, 10 Mar 2025 15:23:54 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 6A1E93858C39 Authentication-Results: sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=polymtl.ca header.i=@polymtl.ca header.a=rsa-sha256 header.s=default header.b=gFzrE1Os X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from smtp.polymtl.ca (smtp.polymtl.ca [132.207.4.11]) by sourceware.org (Postfix) with ESMTPS id 459013858C39 for ; Mon, 10 Mar 2025 15:20:55 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 459013858C39 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=polymtl.ca Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=polymtl.ca ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 459013858C39 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=132.207.4.11 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1741620055; cv=none; b=CPqlpIbHy54KCBO6fd4/EtvKY+3/ijTTDSWIwE/RhXTMO7fUmUNHKY9egAe96OzcKpkIGHSrO3eV3e2TPcWYj0NqPMMgdhQG6O869dCgKQ7q0+D1oonPNTBijsKWajnPo3bCwRz18XxZ5KMQ1wKDZ4WdKT2EfmOUg4VGA66I2hw= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1741620055; c=relaxed/simple; bh=laxRpPWlvoTpRfssKOaT4z+GHASb0amPk9D/ykKo4qY=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=x9OBYhte6Lb5ttsfJOM42qHa75y+GNiSSFlVAqgE3HR4TXJRf9LgeG7ZQixpWb7x0G1cnn7VPhWzF6igkkR/WfNXzyWbf+TgASq6upUoLQDZGq3DcGzlux9ayBoMAYe641+8K7KjFODzdEJiBFyXlqeCo3fbFX9cArrbHZrY1UY= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 459013858C39 Received: from simark.ca (simark.ca [158.69.221.121]) (authenticated bits=0) by smtp.polymtl.ca (8.14.7/8.14.7) with ESMTP id 52AFKoLi240775 (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Mon, 10 Mar 2025 11:20:54 -0400 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp.polymtl.ca 52AFKoLi240775 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=polymtl.ca; s=default; t=1741620054; bh=OWxGUZCZxVh9cNRgPhZnl4ej7Fdnw2W5qU+Iy+sM99w=; h=From:To:Cc:Subject:Date:In-Reply-To:From; b=gFzrE1OsOXHV7nSHdO/77jpAMNDj2eu1tV7W0LF8ibCZwfHVqjA0Pmo22WV0mo4Up 75f+OEcaxdUKDMAlODKV+JoTgwtAohKKF9i6Tunbz9JaSLEFjesOj/VcR3L8zy74xK UD6Go7h/p4E3DDRZ8MOYoNxVeEidK874z44+TzhI= Received: by simark.ca (Postfix, from userid 112) id 6C1991E10A; Mon, 10 Mar 2025 11:12:16 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-Spam-Level: X-Spam-Status: No, score=-3187.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_PASS, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.6 Received: from simark.localdomain (modemcable238.237-201-24.mc.videotron.ca [24.201.237.238]) (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 ESMTPSA id 910E11E114; Mon, 10 Mar 2025 11:12:13 -0400 (EDT) From: simon.marchi@polymtl.ca To: gdb-patches@sourceware.org Cc: Simon Marchi Subject: [PATCH 4/4] gdb: change set_internalvar_function to take a unique pointer Date: Mon, 10 Mar 2025 11:10:49 -0400 Message-ID: <20250310151211.2708331-5-simon.marchi@polymtl.ca> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250310151211.2708331-1-simon.marchi@polymtl.ca> References: <20250310151211.2708331-1-simon.marchi@polymtl.ca> MIME-Version: 1.0 X-Poly-FromMTA: (simark.ca [158.69.221.121]) at Mon, 10 Mar 2025 15:20:50 +0000 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~patchwork=sourceware.org@sourceware.org From: Simon Marchi This makes the transfer of ownership a bit clearer, even though the internal_function is still held with a raw pointer inside internalval. Change-Id: Ie8d13270b64737b92291532acfbfcbc992b482b5 --- gdb/value.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/gdb/value.c b/gdb/value.c index e36feaf81bed..ddc0959c2241 100644 --- a/gdb/value.c +++ b/gdb/value.c @@ -74,6 +74,8 @@ struct internal_function void *cookie; }; +using internal_function_up = std::unique_ptr; + /* Returns true if the ranges defined by [offset1, offset1+len1) and [offset2, offset2+len2) overlap. */ @@ -2297,13 +2299,13 @@ set_internalvar_string (struct internalvar *var, const char *string) } static void -set_internalvar_function (struct internalvar *var, struct internal_function *f) +set_internalvar_function (internalvar *var, internal_function_up f) { /* Clean up old contents. */ clear_internalvar (var); var->kind = INTERNALVAR_FUNCTION; - var->u.fn.function = f; + var->u.fn.function = f.release (); var->u.fn.canonical = 1; /* Variables installed here are always the canonical version. */ } @@ -2385,11 +2387,9 @@ static struct cmd_list_element * do_add_internal_function (const char *name, const char *doc, internal_function_fn_noside handler, void *cookie) { - struct internal_function *ifn; - struct internalvar *var = lookup_internalvar (name); - - ifn = new internal_function (name, handler, cookie); - set_internalvar_function (var, ifn); + set_internalvar_function (lookup_internalvar (name), + std::make_unique (name, handler, + cookie)); return add_cmd (name, no_class, function_command, doc, &functionlist); }