aboutsummaryrefslogtreecommitdiff
path: root/gdb/python
diff options
context:
space:
mode:
authorSimon Marchi <simon.marchi@ericsson.com>2015-10-21 15:57:22 -0400
committerSimon Marchi <simon.marchi@ericsson.com>2015-10-21 15:57:22 -0400
commitbed91f4da252b5f30d3cb4fd9f9febd61ad9560d (patch)
tree863ae6006d0e18b2f383713c3048d0e4287266ee /gdb/python
parent3f2f83ddcba5b04389dd3c666ce7d4cace7e5b63 (diff)
downloadgdb-bed91f4da252b5f30d3cb4fd9f9febd61ad9560d.zip
gdb-bed91f4da252b5f30d3cb4fd9f9febd61ad9560d.tar.gz
gdb-bed91f4da252b5f30d3cb4fd9f9febd61ad9560d.tar.bz2
Fix accessing a function's fields (parameters) from Python (PR 18073)
Since 7.4, gdb doesn't allow calling .fields() on a function type, even though the documentation states it should return a list corresponding to the function's parameters. This patch restores the intended behaviour and adds a test for it. Reg-tested on Arch Linux x86-64. gdb/ChangeLog: PR python/18073 * python/py-type.c (typy_get_composite): Allow returning a function type. gdb/testsuite/ChangeLog: PR python/18073 * gdb.python/py-type.c (C::a_method): New. (C::a_const_method): New. (C::a_static_method): New. (a_function): New. * gdb.python/py-type.exp (test_fields): Test getting fields from function and method.
Diffstat (limited to 'gdb/python')
-rw-r--r--gdb/python/py-type.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/gdb/python/py-type.c b/gdb/python/py-type.c
index 7b3f8f9..ef4e719 100644
--- a/gdb/python/py-type.c
+++ b/gdb/python/py-type.c
@@ -495,10 +495,11 @@ typy_get_composite (struct type *type)
exception. */
if (TYPE_CODE (type) != TYPE_CODE_STRUCT
&& TYPE_CODE (type) != TYPE_CODE_UNION
- && TYPE_CODE (type) != TYPE_CODE_ENUM)
+ && TYPE_CODE (type) != TYPE_CODE_ENUM
+ && TYPE_CODE (type) != TYPE_CODE_FUNC)
{
PyErr_SetString (PyExc_TypeError,
- "Type is not a structure, union, or enum type.");
+ "Type is not a structure, union, enum, or function type.");
return NULL;
}