diff options
author | Andrew Burgess <aburgess@redhat.com> | 2023-09-07 15:47:07 +0100 |
---|---|---|
committer | Andrew Burgess <aburgess@redhat.com> | 2023-09-28 15:33:13 +0100 |
commit | 4e02aca0c5ed0c23f8d8a3e30dc317967193a5f0 (patch) | |
tree | ab9774fa3de282f47ba23c0044c7f8cceb7f8dec /gdb/python | |
parent | 5ce85461a143e0d564b6dfa6407374851899d491 (diff) | |
download | gdb-4e02aca0c5ed0c23f8d8a3e30dc317967193a5f0.zip gdb-4e02aca0c5ed0c23f8d8a3e30dc317967193a5f0.tar.gz gdb-4e02aca0c5ed0c23f8d8a3e30dc317967193a5f0.tar.bz2 |
gdb/python: new Progspace.executable_filename attribute
Add a new Progspace.executable_filename attribute that contains the
path to the executable for this program space, or None if no
executable is set.
The path within this attribute will be set by the "exec-file" and/or
"file" commands.
Accessing this attribute for an invalid program space will raise an
exception.
This new attribute is similar too, but not the same as the existing
gdb.Progspace.filename attribute. If I could change the past, I'd
change the 'filename' attribute to 'symbol_filename', which is what it
actually represents. The old attribute will be set by the
'symbol-file' command, while the new attribute is set by the
'exec-file' command. Obviously the 'file' command sets both of these
attributes.
Reviewed-By: Eli Zaretskii <eliz@gnu.org>
Approved-By: Tom Tromey <tom@tromey.com>
Diffstat (limited to 'gdb/python')
-rw-r--r-- | gdb/python/py-progspace.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/gdb/python/py-progspace.c b/gdb/python/py-progspace.c index 929c5f4..1319978 100644 --- a/gdb/python/py-progspace.c +++ b/gdb/python/py-progspace.c @@ -131,6 +131,25 @@ pspy_get_symbol_file (PyObject *self, void *closure) Py_RETURN_NONE; } +/* Implement the gdb.Progspace.executable_filename attribute. Retun a + string containing the name of the current executable, or None if no + executable is currently set. If the Progspace is invalid then raise an + exception. */ + +static PyObject * +pspy_get_exec_file (PyObject *self, void *closure) +{ + pspace_object *obj = (pspace_object *) self; + + PSPY_REQUIRE_VALID (obj); + + const char *filename = obj->pspace->exec_filename.get (); + if (filename != nullptr) + return host_string_to_python_string (filename).release (); + + Py_RETURN_NONE; +} + static void pspy_dealloc (PyObject *self) { @@ -596,6 +615,8 @@ static gdb_PyGetSetDef pspace_getset[] = { "symbol_file", pspy_get_symbol_file, nullptr, "The gdb.Objfile for the progspace's main symbol file, or None.", nullptr}, + { "executable_filename", pspy_get_exec_file, nullptr, + "The filename for the progspace's executable, or None.", nullptr}, { "pretty_printers", pspy_get_printers, pspy_set_printers, "Pretty printers.", NULL }, { "frame_filters", pspy_get_frame_filters, pspy_set_frame_filters, |