diff options
author | Tom Tromey <tromey@adacore.com> | 2024-02-23 13:24:03 -0700 |
---|---|---|
committer | Tom Tromey <tromey@adacore.com> | 2024-02-27 10:30:29 -0700 |
commit | ec471b627aa76fa8ac1f103ecabd73e304e952c8 (patch) | |
tree | 4c9a42d2f8de916023664f719ef10218a94c266d | |
parent | beadf912845c9c37c5afeadd77635950cf697d9f (diff) | |
download | gdb-ec471b627aa76fa8ac1f103ecabd73e304e952c8.zip gdb-ec471b627aa76fa8ac1f103ecabd73e304e952c8.tar.gz gdb-ec471b627aa76fa8ac1f103ecabd73e304e952c8.tar.bz2 |
Change finalize_values into a final cleanup
This removes finalize_values in favor of adding a new final cleanup.
This is safe now that extension languages are explicitly shut down.
-rw-r--r-- | gdb/top.c | 6 | ||||
-rw-r--r-- | gdb/value.c | 15 | ||||
-rw-r--r-- | gdb/value.h | 4 |
3 files changed, 8 insertions, 17 deletions
@@ -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 c7e940b..a2b2721 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 e8d3c9f..9d7e88d 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); |