PR python/12070:
* python/py-event.c (event_object_getset): New global. (event_object_type): Reference it. * python/py-type.c (field_object_getset): New global. (field_object_type): Reference it. * python/python-internal.h (gdb_py_generic_dict): Declare. * python/py-utils.c (gdb_py_generic_dict): New function. testsuite/gdb * gdb.python/py-events.py (exit_handler): Add test for 'dir'. * gdb.python/py-events.exp: Check 'dir' output. * gdb.python/py-type.exp (test_fields): Add test for 'dir'.
This commit is contained in:
parent
8544a1503d
commit
2e8265fd8b
9 changed files with 64 additions and 4 deletions
|
@ -373,3 +373,23 @@ gdb_py_int_as_long (PyObject *obj, long *result)
|
|||
*result = PyInt_AsLong (obj);
|
||||
return ! (*result == -1 && PyErr_Occurred ());
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Generic implementation of the __dict__ attribute for objects that
|
||||
have a dictionary. The CLOSURE argument should be the type object.
|
||||
This only handles positive values for tp_dictoffset. */
|
||||
|
||||
PyObject *
|
||||
gdb_py_generic_dict (PyObject *self, void *closure)
|
||||
{
|
||||
PyObject *result;
|
||||
PyTypeObject *type_obj = closure;
|
||||
char *raw_ptr;
|
||||
|
||||
raw_ptr = (char *) self + type_obj->tp_dictoffset;
|
||||
result = * (PyObject **) raw_ptr;
|
||||
|
||||
Py_INCREF (result);
|
||||
return result;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue