mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-05-23 10:17:53 +08:00
Xmethod support in Python.
* python/py-xmethods.c: New file. * python/py-objfile.c (objfile_object): New field 'xmethods'. (objfpy_dealloc): XDECREF on the new xmethods field. (objfpy_new, objfile_to_objfile_object): Initialize xmethods field. (objfpy_get_xmethods): New function. (objfile_getset): New entry 'xmethods'. * python/py-progspace.c (pspace_object): New field 'xmethods'. (pspy_dealloc): XDECREF on the new xmethods field. (pspy_new, pspace_to_pspace_object): Initialize xmethods field. (pspy_get_xmethods): New function. (pspace_getset): New entry 'xmethods'. * python/python-internal.h: Add declarations for new functions. * python/python.c (_initialize_python): Invoke gdbpy_initialize_xmethods. * python/lib/gdb/__init__.py (xmethods): New attribute. * python/lib/gdb/xmethod.py: New file. * python/lib/gdb/command/xmethods.py: New file. testuite/ * gdb.python/py-xmethods.cc: New testcase to test xmethods. * gdb.python/py-xmethods.exp: New tests to test xmethods. * gdb.python/py-xmethods.py: Python script supporting the new testcase and tests.
This commit is contained in:
@ -307,6 +307,24 @@ extern enum ext_lang_bp_stop gdbpy_breakpoint_cond_says_stop
|
||||
(const struct extension_language_defn *, struct breakpoint *);
|
||||
extern int gdbpy_breakpoint_has_cond (const struct extension_language_defn *,
|
||||
struct breakpoint *b);
|
||||
|
||||
extern void *gdbpy_clone_xmethod_worker_data
|
||||
(const struct extension_language_defn *extlang, void *data);
|
||||
extern void gdbpy_free_xmethod_worker_data
|
||||
(const struct extension_language_defn *extlang, void *data);
|
||||
extern enum ext_lang_rc gdbpy_get_matching_xmethod_workers
|
||||
(const struct extension_language_defn *extlang,
|
||||
struct type *obj_type, const char *method_name,
|
||||
xmethod_worker_vec **dm_vec);
|
||||
extern enum ext_lang_rc gdbpy_get_xmethod_arg_types
|
||||
(const struct extension_language_defn *extlang,
|
||||
struct xmethod_worker *worker,
|
||||
int *nargs,
|
||||
struct type ***arg_types);
|
||||
extern struct value *gdbpy_invoke_xmethod
|
||||
(const struct extension_language_defn *extlang,
|
||||
struct xmethod_worker *worker,
|
||||
struct value *obj, struct value **args, int nargs);
|
||||
|
||||
PyObject *gdbpy_history (PyObject *self, PyObject *args);
|
||||
PyObject *gdbpy_breakpoints (PyObject *, PyObject *);
|
||||
@ -345,11 +363,13 @@ PyObject *pspace_to_pspace_object (struct program_space *)
|
||||
CPYCHECKER_RETURNS_BORROWED_REF;
|
||||
PyObject *pspy_get_printers (PyObject *, void *);
|
||||
PyObject *pspy_get_frame_filters (PyObject *, void *);
|
||||
PyObject *pspy_get_xmethods (PyObject *, void *);
|
||||
|
||||
PyObject *objfile_to_objfile_object (struct objfile *)
|
||||
CPYCHECKER_RETURNS_BORROWED_REF;
|
||||
PyObject *objfpy_get_printers (PyObject *, void *);
|
||||
PyObject *objfpy_get_frame_filters (PyObject *, void *);
|
||||
PyObject *objfpy_get_xmethods (PyObject *, void *);
|
||||
|
||||
PyObject *gdbarch_to_arch_object (struct gdbarch *gdbarch);
|
||||
|
||||
@ -430,6 +450,8 @@ int gdbpy_initialize_new_objfile_event (void)
|
||||
CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
|
||||
int gdbpy_initialize_arch (void)
|
||||
CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
|
||||
int gdbpy_initialize_xmethods (void)
|
||||
CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
|
||||
|
||||
struct cleanup *make_cleanup_py_decref (PyObject *py);
|
||||
struct cleanup *make_cleanup_py_xdecref (PyObject *py);
|
||||
|
Reference in New Issue
Block a user