X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Fpython%2Fpython.c;h=03ea5d5286cfb047158fa0eafa5109295d8c9653;hb=95a6b0a106fac6ea35670421534d461a3663c0ba;hp=b086cef2510f83f92ebecce5c45da30a3dcb0ae6;hpb=481695ed5f6e0a8a9c9c50bfac1cdd2b3151e6c9;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/python/python.c b/gdb/python/python.c index b086cef251..03ea5d5286 100644 --- a/gdb/python/python.c +++ b/gdb/python/python.c @@ -289,7 +289,7 @@ eval_python_command (const char *command) /* Implementation of the gdb "python-interactive" command. */ static void -python_interactive_command (char *arg, int from_tty) +python_interactive_command (const char *arg, int from_tty) { struct ui *ui = current_ui; int err; @@ -404,7 +404,7 @@ gdbpy_eval_from_control_command (const struct extension_language_defn *extlang, /* Implementation of the gdb "python" command. */ static void -python_command (char *arg, int from_tty) +python_command (const char *arg, int from_tty) { gdbpy_enter enter_py (get_current_arch (), current_language); @@ -584,8 +584,6 @@ execute_gdb_command (PyObject *self, PyObject *args, PyObject *kw) TRY { - /* Copy the argument text in case the command modifies it. */ - std::string copy (arg); struct interp *interp; scoped_restore save_async = make_scoped_restore (¤t_ui->async, 0); @@ -599,9 +597,9 @@ execute_gdb_command (PyObject *self, PyObject *args, PyObject *kw) scoped_restore preventer = prevent_dont_repeat (); if (to_string) - to_string_res = execute_command_to_string (©[0], from_tty); + to_string_res = execute_command_to_string (arg, from_tty); else - execute_command (©[0], from_tty); + execute_command (arg, from_tty); } CATCH (except, RETURN_MASK_ALL) { @@ -647,7 +645,7 @@ gdbpy_solib_name (PyObject *self, PyObject *args) static PyObject * gdbpy_decode_line (PyObject *self, PyObject *args) { - char *arg = NULL; + const char *arg = NULL; gdbpy_ref<> result; gdbpy_ref<> unparsed; event_location_up location; @@ -1397,7 +1395,7 @@ gdbpy_free_type_printers (const struct extension_language_defn *extlang, command. */ static void -python_interactive_command (char *arg, int from_tty) +python_interactive_command (const char *arg, int from_tty) { arg = skip_spaces (arg); if (arg && *arg) @@ -1411,7 +1409,7 @@ python_interactive_command (char *arg, int from_tty) } static void -python_command (char *arg, int from_tty) +python_command (const char *arg, int from_tty) { python_interactive_command (arg, from_tty); } @@ -1428,7 +1426,7 @@ static struct cmd_list_element *user_show_python_list; /* Function for use by 'set python' prefix command. */ static void -user_set_python (char *args, int from_tty) +user_set_python (const char *args, int from_tty) { help_list (user_set_python_list, "set python ", all_commands, gdb_stdout); @@ -1437,7 +1435,7 @@ user_set_python (char *args, int from_tty) /* Function for use by 'show python' prefix command. */ static void -user_show_python (char *args, int from_tty) +user_show_python (const char *args, int from_tty) { cmd_show_list (user_show_python_list, from_tty, ""); } @@ -1591,23 +1589,17 @@ do_start_initialization () || gdbpy_initialize_eventregistry () < 0 || gdbpy_initialize_py_events () < 0 || gdbpy_initialize_event () < 0 - || gdbpy_initialize_stop_event () < 0 - || gdbpy_initialize_signal_event () < 0 - || gdbpy_initialize_breakpoint_event () < 0 - || gdbpy_initialize_continue_event () < 0 - || gdbpy_initialize_inferior_call_pre_event () < 0 - || gdbpy_initialize_inferior_call_post_event () < 0 - || gdbpy_initialize_register_changed_event () < 0 - || gdbpy_initialize_memory_changed_event () < 0 - || gdbpy_initialize_exited_event () < 0 - || gdbpy_initialize_thread_event () < 0 - || gdbpy_initialize_new_objfile_event () < 0 - || gdbpy_initialize_clear_objfiles_event () < 0 || gdbpy_initialize_arch () < 0 || gdbpy_initialize_xmethods () < 0 || gdbpy_initialize_unwind () < 0) return false; +#define GDB_PY_DEFINE_EVENT_TYPE(name, py_name, doc, base) \ + if (gdbpy_initialize_event_generic (&name##_event_object_type, py_name) < 0) \ + return false; +#include "py-event-types.def" +#undef GDB_PY_DEFINE_EVENT_TYPE + gdbpy_to_string_cst = PyString_FromString ("to_string"); if (gdbpy_to_string_cst == NULL) return false; @@ -1960,4 +1952,51 @@ struct PyModuleDef python_GdbModuleDef = NULL }; #endif + +/* Define all the event objects. */ +#define GDB_PY_DEFINE_EVENT_TYPE(name, py_name, doc, base) \ + PyTypeObject name##_event_object_type \ + CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("event_object") \ + = { \ + PyVarObject_HEAD_INIT (NULL, 0) \ + "gdb." py_name, /* tp_name */ \ + sizeof (event_object), /* tp_basicsize */ \ + 0, /* tp_itemsize */ \ + evpy_dealloc, /* tp_dealloc */ \ + 0, /* tp_print */ \ + 0, /* tp_getattr */ \ + 0, /* tp_setattr */ \ + 0, /* tp_compare */ \ + 0, /* tp_repr */ \ + 0, /* tp_as_number */ \ + 0, /* tp_as_sequence */ \ + 0, /* tp_as_mapping */ \ + 0, /* tp_hash */ \ + 0, /* tp_call */ \ + 0, /* tp_str */ \ + 0, /* tp_getattro */ \ + 0, /* tp_setattro */ \ + 0, /* tp_as_buffer */ \ + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */ \ + doc, /* tp_doc */ \ + 0, /* tp_traverse */ \ + 0, /* tp_clear */ \ + 0, /* tp_richcompare */ \ + 0, /* tp_weaklistoffset */ \ + 0, /* tp_iter */ \ + 0, /* tp_iternext */ \ + 0, /* tp_methods */ \ + 0, /* tp_members */ \ + 0, /* tp_getset */ \ + &base, /* tp_base */ \ + 0, /* tp_dict */ \ + 0, /* tp_descr_get */ \ + 0, /* tp_descr_set */ \ + 0, /* tp_dictoffset */ \ + 0, /* tp_init */ \ + 0 /* tp_alloc */ \ + }; +#include "py-event-types.def" +#undef GDB_PY_DEFINE_EVENT_TYPE + #endif /* HAVE_PYTHON */