gdb/python: convert Frame.read_register to take named arguments

Following on from the previous commit, this updates
Frame.read_register to accept named arguments.  As with the previous
commit there's no huge benefit for the users in accepting named
arguments here -- this function only takes a single argument after
all.

But I do think it is worth keeping Frame.read_register method in sync
with the PendingFrame.read_register method, this allows for the
possibility that the user has some code that can operate on either a
Frame or a Pending frame.

Minor update to allow for named arguments, and an extra test to check
the new functionality.

Reviewed-By: Tom Tromey <tom@tromey.com>
This commit is contained in:
Andrew Burgess 2023-03-30 10:40:41 +01:00
parent 56fcb715a9
commit 02c7fce1ad
2 changed files with 13 additions and 4 deletions

View file

@ -238,13 +238,15 @@ frapy_pc (PyObject *self, PyObject *args)
Returns the value of a register in this frame. */
static PyObject *
frapy_read_register (PyObject *self, PyObject *args)
frapy_read_register (PyObject *self, PyObject *args, PyObject *kw)
{
PyObject *pyo_reg_id;
PyObject *result = nullptr;
if (!PyArg_UnpackTuple (args, "read_register", 1, 1, &pyo_reg_id))
return NULL;
static const char *keywords[] = { "register", nullptr };
if (!gdb_PyArg_ParseTupleAndKeywords (args, kw, "O", keywords, &pyo_reg_id))
return nullptr;
try
{
scoped_value_mark free_values;
@ -766,7 +768,8 @@ Return the reason why it's not possible to find frames older than this." },
{ "pc", frapy_pc, METH_NOARGS,
"pc () -> Long.\n\
Return the frame's resume address." },
{ "read_register", frapy_read_register, METH_VARARGS,
{ "read_register", (PyCFunction) frapy_read_register,
METH_VARARGS | METH_KEYWORDS,
"read_register (register_name) -> gdb.Value\n\
Return the value of the register in the frame." },
{ "block", frapy_block, METH_NOARGS,