From df4447e4c43e105bd6366081a07447506506f78b Mon Sep 17 00:00:00 2001 From: Andrew Burgess Date: Fri, 10 Mar 2023 10:28:21 +0000 Subject: gdb/python: remove Py_TPFLAGS_BASETYPE from gdb.UnwindInfo It is not currently possible to directly create gdb.UnwindInfo instances, they need to be created by calling gdb.PendingFrame.create_unwind_info so that the newly created UnwindInfo can be linked to the pending frame. As such there's no tp_init method defined for UnwindInfo. A consequence of all this is that it doesn't really make sense to allow sub-classing of gdb.UnwindInfo. Any sub-class can't call the parents __init__ method to correctly link up the PendingFrame object (there is no parent __init__ method). And any instances that sub-classes UnwindInfo but doesn't call the parent __init__ is going to be invalid for use in GDB. This commit removes the Py_TPFLAGS_BASETYPE flag from the UnwindInfo class, which prevents the class being sub-classed. Then I've added a test to check that this is indeed prevented. Any functional user code will not have any issues with this change. Reviewed-By: Tom Tromey --- gdb/python/py-unwind.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'gdb/python') diff --git a/gdb/python/py-unwind.c b/gdb/python/py-unwind.c index 1e94c24..432a26a 100644 --- a/gdb/python/py-unwind.c +++ b/gdb/python/py-unwind.c @@ -1097,7 +1097,7 @@ PyTypeObject unwind_info_object_type = 0, /* tp_getattro */ 0, /* tp_setattro */ 0, /* tp_as_buffer */ - Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */ + Py_TPFLAGS_DEFAULT, /* tp_flags */ "GDB UnwindInfo object", /* tp_doc */ 0, /* tp_traverse */ 0, /* tp_clear */ -- cgit v1.1