From patchwork Fri Feb 23 21:11:39 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Tromey X-Patchwork-Id: 86309 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 0D6E338582B1 for ; Fri, 23 Feb 2024 21:12:26 +0000 (GMT) X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from mail-io1-xd29.google.com (mail-io1-xd29.google.com [IPv6:2607:f8b0:4864:20::d29]) by sourceware.org (Postfix) with ESMTPS id 14F883858413 for ; Fri, 23 Feb 2024 21:11:41 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 14F883858413 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=adacore.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 14F883858413 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::d29 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1708722703; cv=none; b=YGH9WlKVwkGewoXg6ztLrIstNgeSuyFRTzqrXWUvOzxPaM3yMIZDnkZdoP1HvkhJS9StydIkOFZ4OeEGgLNGhhT2EE2kZD9sWb7md3nJDDTeHT9UykXBsSDp4pI913hkPLl1Iik7I/QOvip5HdHD20sLaU9oy5XCAy1CoagOHzs= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1708722703; c=relaxed/simple; bh=x4UKdiOJ4+WmLppHxHBcTLjYqRjV/3VSfIuu8m8NJ7g=; h=DKIM-Signature:From:Date:Subject:MIME-Version:Message-Id:To; b=YDDdoyFOIFKaZJinpR75Qz4yncPKBlpWBZGWIM8s1/lxKAljq9N3X3jmpwP9ImDsQyvlS4H+Zz22SjiDCtdNBl5Ca/vUIncILzHAB3n8nyTuD0zeSttw9qV/pBzCAeawsxrRANilO7UKLe2Rwf9pQGnAjnI6aaMGIri9PDXkW5Q= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-io1-xd29.google.com with SMTP id ca18e2360f4ac-7bb5fda069bso45148339f.0 for ; Fri, 23 Feb 2024 13:11:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adacore.com; s=google; t=1708722700; x=1709327500; darn=sourceware.org; h=to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=GKZH9sGXVUTVf3TxFxShpP1P+jJlwXpDw/pOwY/Hd5M=; b=eejqpJBVm06s++Nmt+kLORWZTzIvlKo5cg+fPau7ax3EWfL42G6ploD48Y6/wibDrJ bdBhyDGBw1pY86Vxdz2+YRw6nRZkRirrEmve6aogg7Fjcve9kJTyzZfVl9MKdp4S0Uix 0agZ4fWyMQHpbo6SR6gR9/HCUb+czvd2ef7BFLbB0teerfcemf8kGWjCyaOwxvRxJtcF 3Q1xvcYeVuuHiN5NYtNI6KK9YUbgMGOkfV6Yn2XNK5XA95e/MUagy0+XBfmgQfG6m6fW VhZ0uUT6Ucs24XerLJdvjaqQt25JArz/HAlJDGlCtG46N30uCIc2YT8jYsbIbuw8HqLY kGsQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1708722700; x=1709327500; h=to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=GKZH9sGXVUTVf3TxFxShpP1P+jJlwXpDw/pOwY/Hd5M=; b=KCsPDqnlZlus003N5BWkKvpIbyNHgKLSpH1swxadIr1Ley59ykBvzi8Fk3jtSYHnBa YnbDncowQHOfoQzXIEOo1hrq/aZyYkv4XTlnUtsfsea8RTjLfYLVZpd/x82HZF42HFde 10buvKS2aINv/4hd8ePyp9hFiOVs1ifZotXkclRV/7OcnDInE7E0zhiBecAyanLO+v45 I0ZcBEHoa+GV86iYQh2HoZTj4R0cUjAE5wTxoJp6Ya1T8I1VfyFsKa3LkhTJWAvfSg7D 8wM0JgbvXZjIBrsNgkZz1EtXB8eYp71McQ6lTT6Mgfz8x3UscYTBX96DcKyypmHwVz83 OPpw== X-Gm-Message-State: AOJu0YygkV1psRS7CKeRQuKlx207yShXP55JIA2+/At6VEZe4DwastUh WrKiM2OPFOqkcMRPSZTonLhGNUA6kd2VfRc5IhUeXJKDSl01sI7ZAi4ogeQJnEX2QopGgrdEsOY = X-Google-Smtp-Source: AGHT+IEkg2YZuie7eXHwlX/d5Ojl2Te9J0uwbW0idxMHF8yfy5c2cRLnAZFe8AmT+1wS2oGqUQ9c3A== X-Received: by 2002:a5e:8e09:0:b0:7c4:58cb:38ae with SMTP id a9-20020a5e8e09000000b007c458cb38aemr1221730ion.6.1708722700015; Fri, 23 Feb 2024 13:11:40 -0800 (PST) Received: from localhost.localdomain (71-211-170-195.hlrn.qwest.net. [71.211.170.195]) by smtp.gmail.com with ESMTPSA id y14-20020a02c00e000000b004741aec6cdasm3497851jai.25.2024.02.23.13.11.39 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 Feb 2024 13:11:39 -0800 (PST) From: Tom Tromey Date: Fri, 23 Feb 2024 14:11:39 -0700 Subject: [PATCH 3/5] Change finalize_values into a final cleanup MIME-Version: 1.0 Message-Id: <20240223-final-cleanups-v1-3-84d5271e9979@adacore.com> References: <20240223-final-cleanups-v1-0-84d5271e9979@adacore.com> In-Reply-To: <20240223-final-cleanups-v1-0-84d5271e9979@adacore.com> To: gdb-patches@sourceware.org X-Mailer: b4 0.12.4 X-Spam-Status: No, score=-11.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org 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 This removes finalize_values in favor of adding a new final cleanup. This is safe now that extension languages are explicitly shut down. --- gdb/top.c | 6 ------ gdb/value.c | 15 ++++++++------- gdb/value.h | 4 ---- 3 files changed, 8 insertions(+), 17 deletions(-) diff --git a/gdb/top.c b/gdb/top.c index 67d6670cd9c..cf7d3a913ba 100644 --- a/gdb/top.c +++ b/gdb/top.c @@ -1803,12 +1803,6 @@ quit_force (int *exit_arg, int from_tty) exception_print (gdb_stderr, ex); } - /* Destroy any values currently allocated now instead of leaving it - to global destructors, because that may be too late. For - example, the destructors of xmethod values call into the Python - runtime, which is finalized via a final cleanup. */ - finalize_values (); - /* Do any final cleanups before exiting. */ try { diff --git a/gdb/value.c b/gdb/value.c index c7e940badb9..a2b2721d183 100644 --- a/gdb/value.c +++ b/gdb/value.c @@ -4499,12 +4499,13 @@ and exceeds this limit will cause an error."), selftests::test_insert_into_bit_range_vector); selftests::register_test ("value_copy", selftests::test_value_copy); #endif -} - -/* See value.h. */ -void -finalize_values () -{ - all_values.clear (); + /* Destroy any values currently allocated in a final cleanup instead + of leaving it to global destructors, because that may be too + late. For example, the destructors of xmethod values call into + the Python runtime. */ + add_final_cleanup ([] () + { + all_values.clear (); + }); } diff --git a/gdb/value.h b/gdb/value.h index e8d3c9fd907..9d7e88d9433 100644 --- a/gdb/value.h +++ b/gdb/value.h @@ -1630,10 +1630,6 @@ struct value *call_internal_function (struct gdbarch *gdbarch, const char *value_internal_function_name (struct value *); -/* Destroy the values currently allocated. This is called when GDB is - exiting (e.g., on quit_force). */ -extern void finalize_values (); - /* Convert VALUE to a gdb_mpq. The caller must ensure that VALUE is of floating-point, fixed-point, or integer type. */ extern gdb_mpq value_to_gdb_mpq (struct value *value);