aboutsummaryrefslogtreecommitdiff
path: root/gdb/python
diff options
context:
space:
mode:
authorMatthieu Longo <matthieu.longo@arm.com>2026-02-26 17:20:20 +0000
committerMatthieu Longo <matthieu.longo@arm.com>2026-03-10 12:43:12 +0000
commitf0cfbf6ceda8396291d736858cfd713cc4a0e0da (patch)
tree77a7e0db3cde8d52504f42fb69e4463fa863d49d /gdb/python
parent995cf2f8feb57aa564eb4ec1191e3290affc574b (diff)
downloadbinutils-f0cfbf6ceda8396291d736858cfd713cc4a0e0da.tar.gz
binutils-f0cfbf6ceda8396291d736858cfd713cc4a0e0da.tar.bz2
binutils-f0cfbf6ceda8396291d736858cfd713cc4a0e0da.zip
gdb/python: allow ref_ptr<T, Policy>::new_reference to accept subclasses of T
When ref_ptr<T,Policy>::new_reference() is specialized for 'PyObject' (i.e. gdbpy_ref<>), it currently requires the argument type to be exactly 'PyObject *'. As a result, pointers to subclasses of 'PyObject' must be explicitly cast before being passed, making call sites unnecessarily verbose. This patch makes ref_ptr<T,Policy>::new_reference() a template method that accepts both T and subclasses of T, performing the cast to 'T *' internally when needed. This removes redundant casts at call sites without changing behavior. Approved-By: Tom Tromey <tom@tromey.com>
Diffstat (limited to 'gdb/python')
-rw-r--r--gdb/python/py-block.c2
-rw-r--r--gdb/python/py-inferior.c2
2 files changed, 2 insertions, 2 deletions
diff --git a/gdb/python/py-block.c b/gdb/python/py-block.c
index 263819e1292..4d77242ca0d 100644
--- a/gdb/python/py-block.c
+++ b/gdb/python/py-block.c
@@ -346,7 +346,7 @@ block_to_block_object (const struct block *block, struct objfile *objfile)
block_object *result = (block_object *) htab_find_with_hash (table, block,
hash);
if (result != nullptr)
- return gdbpy_ref<>::new_reference ((PyObject *) result);
+ return gdbpy_ref<>::new_reference (result);
result = PyObject_New (block_object, &block_object_type);
if (result == nullptr)
diff --git a/gdb/python/py-inferior.c b/gdb/python/py-inferior.c
index 76e3da9f620..ed28ccf3c07 100644
--- a/gdb/python/py-inferior.c
+++ b/gdb/python/py-inferior.c
@@ -400,7 +400,7 @@ infpy_threads (PyObject *self, PyObject *args)
for (const thread_map_t::value_type &entry : *inf_obj->threads)
{
- auto thr = gdbpy_ref<>::new_reference ((PyObject *) entry.second.get ());
+ gdbpy_ref<> thr = entry.second;
if (PyTuple_SetItem (tuple.get (), i++, thr.release ()) < 0)
return nullptr;
}