diff options
author | Siva Chandra <sivachandra@chromium.org> | 2014-05-20 06:53:04 -0700 |
---|---|---|
committer | Siva Chandra <sivachandra@chromium.org> | 2014-06-03 10:03:07 -0700 |
commit | 883964a75e8c6531f167391354f1a4d83d203988 (patch) | |
tree | 75eb5ad7ee3808a76dd561f58b6412be5c52b3a0 /gdb/python/python-internal.h | |
parent | 58992dc550f2012ca04f190cb77d2d829301cb72 (diff) | |
download | fsf-binutils-gdb-883964a75e8c6531f167391354f1a4d83d203988.zip fsf-binutils-gdb-883964a75e8c6531f167391354f1a4d83d203988.tar.gz fsf-binutils-gdb-883964a75e8c6531f167391354f1a4d83d203988.tar.bz2 |
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.
Diffstat (limited to 'gdb/python/python-internal.h')
-rw-r--r-- | gdb/python/python-internal.h | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/gdb/python/python-internal.h b/gdb/python/python-internal.h index 07650f7..9c06621 100644 --- a/gdb/python/python-internal.h +++ b/gdb/python/python-internal.h @@ -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); |