aboutsummaryrefslogtreecommitdiff
path: root/gdb/python
diff options
context:
space:
mode:
authorTom Tromey <tromey@adacore.com>2026-02-20 12:47:51 -0700
committerTom Tromey <tromey@adacore.com>2026-02-23 05:29:11 -0700
commit9d71572cbaf558051255c5f8b8fa577e40387e64 (patch)
tree1cee38f4c9116f8c18f8864121bece546e5bb14a /gdb/python
parent0ab23e2707ad6099bb21d52b32dd9a096fe61f8c (diff)
downloadbinutils-9d71572cbaf558051255c5f8b8fa577e40387e64.tar.gz
binutils-9d71572cbaf558051255c5f8b8fa577e40387e64.tar.bz2
binutils-9d71572cbaf558051255c5f8b8fa577e40387e64.zip
Return gdbpy_ref<> from symtab_to_symtab_object
This changes symtab_to_symtab_object to return a gdbpy_ref<>, using the type system to convey that a new reference is always returned. Approved-By: Simon Marchi <simon.marchi@efficios.com>
Diffstat (limited to 'gdb/python')
-rw-r--r--gdb/python/py-symbol.c2
-rw-r--r--gdb/python/py-symtab.c8
-rw-r--r--gdb/python/python-internal.h2
3 files changed, 6 insertions, 6 deletions
diff --git a/gdb/python/py-symbol.c b/gdb/python/py-symbol.c
index d51f4823315..492c386b7ee 100644
--- a/gdb/python/py-symbol.c
+++ b/gdb/python/py-symbol.c
@@ -86,7 +86,7 @@ sympy_get_symtab (PyObject *self, void *closure)
if (!symbol->is_objfile_owned ())
Py_RETURN_NONE;
- return symtab_to_symtab_object (symbol->symtab ());
+ return symtab_to_symtab_object (symbol->symtab ()).release ();
}
static PyObject *
diff --git a/gdb/python/py-symtab.c b/gdb/python/py-symtab.c
index 820542932ba..3b05721e616 100644
--- a/gdb/python/py-symtab.c
+++ b/gdb/python/py-symtab.c
@@ -299,7 +299,7 @@ salpy_get_symtab (PyObject *self, void *closure)
if (sal->symtab == nullptr)
Py_RETURN_NONE;
else
- return symtab_to_symtab_object (sal->symtab);
+ return symtab_to_symtab_object (sal->symtab).release ();
}
/* Implementation of gdb.Symtab_and_line.is_valid (self) -> Boolean.
@@ -366,7 +366,7 @@ set_symtab (symtab_object *obj, struct symtab *symtab)
/* Create a new symbol table (gdb.Symtab) object that encapsulates the
symtab structure from GDB. */
-PyObject *
+gdbpy_ref<>
symtab_to_symtab_object (struct symtab *symtab)
{
symtab_object *symtab_obj;
@@ -378,14 +378,14 @@ symtab_to_symtab_object (struct symtab *symtab)
symtab_obj = stpy_registry.lookup (symtab->compunit ()->objfile (),
symtab);
if (symtab_obj != nullptr)
- return (PyObject*)symtab_obj;
+ return gdbpy_ref<> (symtab_obj);
}
symtab_obj = PyObject_New (symtab_object, &symtab_object_type);
if (symtab_obj)
set_symtab (symtab_obj, symtab);
- return (PyObject *) symtab_obj;
+ return gdbpy_ref<> (symtab_obj);
}
/* Create a new symtab and line (gdb.Symtab_and_line) object
diff --git a/gdb/python/python-internal.h b/gdb/python/python-internal.h
index 979bf2498da..8d101e8afb6 100644
--- a/gdb/python/python-internal.h
+++ b/gdb/python/python-internal.h
@@ -496,7 +496,7 @@ PyObject *gdbpy_register_tui_window (PyObject *self, PyObject *args,
PyObject *kw);
gdbpy_ref<> symtab_and_line_to_sal_object (struct symtab_and_line sal);
-PyObject *symtab_to_symtab_object (struct symtab *symtab);
+gdbpy_ref<> symtab_to_symtab_object (struct symtab *symtab);
gdbpy_ref<> symbol_to_symbol_object (struct symbol *sym);
PyObject *block_to_block_object (const struct block *block,
struct objfile *objfile);