binutils-gdb/gdb/python
Matthieu Longo e3998113f9 gdb: add new helpers for retrieving a type's fully qualified name
Py_TYPE (self)->tp_name is the traditional idiomatic way to get a Python
type's fully qualified name. However, in the context of the Python
limited API, PyTypeObject is opaque, so the 'tp_name' attribute is no
longer accessible. Additionally, retrieving the type of a Python object
requires Py_TYPE, which is only available as part of the stable API
starting with Python 3.14.

This patch increases minimal Python limited API version from 3.11 to 3.14.
It also introduces two new helpers to retrieve a type's fully qualified
name: gdb_py_tp_name() and gdbpy_py_obj_tp_name(), which extract the fully
qualified name from a PyTypeObject and a PyObject, respectively. Ifdefery
allows these wrappers to select the appropriate API depending on the Python
version and whether the Python limited API is enabled. For any Python
version less than 3.13, gdb_py_tp_name() fallbacks using __qualname__
instead. However, the result may differ slightly in some cases, e.g. the
module name may be missing.

Finally, this patch adapts the existing code to use these wrappers, and
adjusts some test expectations to use the fully qualified name (or
__qualname__ for versions <= 3.13) where it was not previously used.
Note that the corner case where the module name would be missing does not
appear in the testsuite.

Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=23830

Approved-By: Tom Tromey <tom@tromey.com>
2026-04-08 11:49:30 +01:00
..
lib/gdb Update black to 26.1.0 2026-01-23 06:45:46 -07:00
py-all-events.def gdb/python: new selected_context event 2026-03-05 09:42:18 +00:00
py-arch.c gdb: add new helpers for retrieving a type's fully qualified name 2026-04-08 11:49:30 +01:00
py-auto-load.c Update copyright dates to include 2026 2026-01-05 13:16:46 -07:00
py-block.c gdb: add new helpers for retrieving a type's fully qualified name 2026-04-08 11:49:30 +01:00
py-bpevent.c Update copyright dates to include 2026 2026-01-05 13:16:46 -07:00
py-breakpoint.c gdb: add new helpers for retrieving a type's fully qualified name 2026-04-08 11:49:30 +01:00
py-cmd.c gdb: cast all Python extension objects passed to gdbpy_ref_policy to PyObject* 2026-01-29 16:46:14 +00:00
py-color.c gdb: introduce rgb_color type to simplify existing code 2026-03-10 11:22:28 +00:00
py-color.h Update copyright dates to include 2026 2026-01-05 13:16:46 -07:00
py-connection.c gdb: add new helpers for retrieving a type's fully qualified name 2026-04-08 11:49:30 +01:00
py-continueevent.c Update copyright dates to include 2026 2026-01-05 13:16:46 -07:00
py-corefile.c gdb: add new helpers for retrieving a type's fully qualified name 2026-04-08 11:49:30 +01:00
py-dap.c Rewrite output redirection and logging 2026-02-09 08:15:44 -07:00
py-disasm.c gdb: add new helpers for retrieving a type's fully qualified name 2026-04-08 11:49:30 +01:00
py-event-types.def gdb/python: new selected_context event 2026-03-05 09:42:18 +00:00
py-event.c gdb/python: add accessor helpers for __dict__ in Python extension objects 2026-03-14 13:21:06 +00:00
py-event.h gdb: new setters and getters for __dict__, and attributes 2026-01-29 16:46:14 +00:00
py-events.h gdb: cast all Python extension objects passed to gdbpy_ref_policy to PyObject* 2026-01-29 16:46:14 +00:00
py-evtregistry.c Update copyright dates to include 2026 2026-01-05 13:16:46 -07:00
py-evts.c Update copyright dates to include 2026 2026-01-05 13:16:46 -07:00
py-exitedevent.c Update copyright dates to include 2026 2026-01-05 13:16:46 -07:00
py-finishbreakpoint.c gdb/python: fix gdb.FinishBreakpoint returning to a tail call frame 2026-03-05 17:45:29 +00:00
py-frame.c gdb: add new helpers for retrieving a type's fully qualified name 2026-04-08 11:49:30 +01:00
py-framefilter.c Return gdbpy_ref<> from frame_info_to_frame_object 2026-02-23 05:29:12 -07:00
py-function.c gdb: switch tuple object helpers to Python limited API equivalents 2026-03-04 15:38:11 +00:00
py-gdb-readline.c Python limited API: migrate Py_CompileStringExFlags and PyRun_SimpleString 2026-01-28 09:41:25 +00:00
py-inferior.c gdb: change new_objfile observer to take an objfile reference 2026-03-19 14:36:25 +00:00
py-infevents.c Return gdbpy_ref<> from frame_info_to_frame_object 2026-02-23 05:29:12 -07:00
py-infthread.c gdb: add new helpers for retrieving a type's fully qualified name 2026-04-08 11:49:30 +01:00
py-instruction.c gdb: make remaining Python extension objects inherit from PyObject 2026-01-29 16:46:14 +00:00
py-instruction.h Update copyright dates to include 2026 2026-01-05 13:16:46 -07:00
py-lazy-string.c gdb, gdbserver, gdbsupport: replace many uses of strcmp with streq 2026-03-16 13:24:00 -04:00
py-linetable.c Return gdbpy_ref<> from symtab_to_linetable_object 2026-02-23 05:29:12 -07:00
py-membuf.c gdb: cast all Python extension objects passed to gdbpy_ref_policy to PyObject* 2026-01-29 16:46:14 +00:00
py-mi.c gdb: add new helpers for retrieving a type's fully qualified name 2026-04-08 11:49:30 +01:00
py-micmd.c gdb: add new helpers for retrieving a type's fully qualified name 2026-04-08 11:49:30 +01:00
py-newobjfileevent.c Update copyright dates to include 2026 2026-01-05 13:16:46 -07:00
py-obj-type.c gdb: add new helpers for retrieving a type's fully qualified name 2026-04-08 11:49:30 +01:00
py-obj-type.h gdb: add new helpers for retrieving a type's fully qualified name 2026-04-08 11:49:30 +01:00
py-objfile.c gdb/python: add accessor helpers for __dict__ in Python extension objects 2026-03-14 13:21:06 +00:00
py-param.c gdb, gdbserver, gdbsupport: replace many uses of strcmp with streq 2026-03-16 13:24:00 -04:00
py-prettyprint.c gdb, gdbserver, gdbsupport: replace many uses of strcmp with streq 2026-03-16 13:24:00 -04:00
py-progspace.c gdb/python: add accessor helpers for __dict__ in Python extension objects 2026-03-14 13:21:06 +00:00
py-record-btrace.c Use the "O!" format more in the Python code 2026-02-27 12:01:56 -07:00
py-record-btrace.h Update copyright dates to include 2026 2026-01-05 13:16:46 -07:00
py-record-full.c Update copyright dates to include 2026 2026-01-05 13:16:46 -07:00
py-record-full.h Update copyright dates to include 2026 2026-01-05 13:16:46 -07:00
py-record.c gdb: make remaining Python extension objects inherit from PyObject 2026-01-29 16:46:14 +00:00
py-record.h gdb: make remaining Python extension objects inherit from PyObject 2026-01-29 16:46:14 +00:00
py-ref.h gdb/python: add accessor helpers for __dict__ in Python extension objects 2026-03-14 13:21:06 +00:00
py-registers.c Hold the GIL while clearing gdbpy_reggroup_object_map 2026-03-25 11:12:14 -06:00
py-signalevent.c Update copyright dates to include 2026 2026-01-05 13:16:46 -07:00
py-stopevent.c Return gdbpy_ref<> from value_to_value_object 2026-02-23 05:29:11 -07:00
py-stopevent.h Update copyright dates to include 2026 2026-01-05 13:16:46 -07:00
py-style.c gdb: add new helpers for retrieving a type's fully qualified name 2026-04-08 11:49:30 +01:00
py-symbol.c gdb: add new helpers for retrieving a type's fully qualified name 2026-04-08 11:49:30 +01:00
py-symtab.c gdb/python: introduce gdb.Symtab.source_lines method 2026-03-05 10:17:08 +00:00
py-threadevent.c Update copyright dates to include 2026 2026-01-05 13:16:46 -07:00
py-tui.c gdb: cast all Python extension objects passed to gdbpy_ref_policy to PyObject* 2026-01-29 16:46:14 +00:00
py-type.c gdb: add new helpers for retrieving a type's fully qualified name 2026-04-08 11:49:30 +01:00
py-uiout.h Remove m_applied_style from ui_file 2026-02-09 08:15:29 -07:00
py-unwind.c gdb: add new helpers for retrieving a type's fully qualified name 2026-04-08 11:49:30 +01:00
py-utils.c gdb: add new helpers for retrieving a type's fully qualified name 2026-04-08 11:49:30 +01:00
py-value.c Return gdbpy_ref<> from type_to_type_object 2026-02-23 05:29:12 -07:00
py-varobj.c Update copyright dates to include 2026 2026-01-05 13:16:46 -07:00
py-xmethods.c gdb: switch tuple object helpers to Python limited API equivalents 2026-03-04 15:38:11 +00:00
python-config.py
python-internal.h gdb: add new helpers for retrieving a type's fully qualified name 2026-04-08 11:49:30 +01:00
python.c gdb: add new helpers for retrieving a type's fully qualified name 2026-04-08 11:49:30 +01:00
python.h Update copyright dates to include 2026 2026-01-05 13:16:46 -07:00