mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-05 15:15:42 +00:00
gdb/python: add unlink () method to gdb.Objfile object
This commit adds method allowing one remove any objfile. This is meant to be used to remove objfiles for dynamic code when this dynamic code is discarded. However gdb.Objfile.unlink() makes no attempt to ensure this - to make it consistent with other Python API to create and modify objfiles related structures (compunits, symbol tables and so on). Reviewed-By: Eli Zaretskii <eliz@gnu.org>
This commit is contained in:
@@ -5710,6 +5710,12 @@ Return a sequence of all the compunits associated with this objfile.
|
||||
@xref{Compunits In Python}.
|
||||
@end defun
|
||||
|
||||
@defun Objfile.unlink ()
|
||||
Remove this objfile. This should be used only on objfiles created by
|
||||
Python (see @code{Objfile.__init__} above) but @code{Objfile.unlink} does
|
||||
not make any checks.
|
||||
@end defun
|
||||
|
||||
@node Frames In Python
|
||||
@subsubsection Accessing inferior stack frames from Python
|
||||
|
||||
|
||||
@@ -608,6 +608,20 @@ objfpy_lookup_static_symbol (PyObject *self, PyObject *args, PyObject *kw)
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
|
||||
/* Implementation of gdb.Objfile.unlink (). */
|
||||
|
||||
static PyObject *
|
||||
objfpy_unlink (PyObject *self, PyObject *args)
|
||||
{
|
||||
objfile_object *obj = (objfile_object *) self;
|
||||
|
||||
OBJFPY_REQUIRE_VALID (obj);
|
||||
|
||||
obj->objfile->unlink();
|
||||
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
|
||||
/* Implement repr() for gdb.Objfile. */
|
||||
|
||||
static PyObject *
|
||||
@@ -871,6 +885,10 @@ Look up a static-linkage global symbol in this objfile and return it." },
|
||||
"compunits () -> List.\n\
|
||||
Return a sequence of compunits associated to this objfile." },
|
||||
|
||||
{ "unlink", objfpy_unlink, METH_NOARGS,
|
||||
"unlink ().\n\
|
||||
Remove this objfile." },
|
||||
|
||||
{ NULL }
|
||||
};
|
||||
|
||||
|
||||
@@ -209,3 +209,15 @@ gdb_test "python print( gdb.Objfile(\"Test objfile 4\", gdb))" \
|
||||
gdb_test "python print( gdb.Objfile(\"Test objfile 5\", gdb.selected_inferior(), gdb.selected_inferior()))" \
|
||||
"TypeError.*:.*" \
|
||||
"create objfile with valid inferior but invalid arch"
|
||||
|
||||
gdb_test "python print(objfile.unlink())" \
|
||||
"None" \
|
||||
"remove (dynamic) objfile"
|
||||
|
||||
gdb_test "python print(objfile in gdb.objfiles())" \
|
||||
"False" \
|
||||
"removed (dynamic) objfile no longer in gdb.objfiles()"
|
||||
|
||||
gdb_test "python print(objfile.is_valid())" \
|
||||
"False" \
|
||||
"removes (dynamic) objfile is no longer valid"
|
||||
|
||||
Reference in New Issue
Block a user