1 /* General python/gdb code
3 Copyright (C) 2008-2017 Free Software Foundation, Inc.
5 This file is part of GDB.
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 3 of the License, or
10 (at your option) any later version.
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
21 #include "arch-utils.h"
24 #include "cli/cli-script.h"
26 #include "progspace.h"
30 #include "event-loop.h"
32 #include "readline/tilde.h"
34 #include "extension-priv.h"
35 #include "cli/cli-utils.h"
38 #include "ser-event.h"
40 /* Declared constants and enum for python stack printing. */
41 static const char python_excp_none[] = "none";
42 static const char python_excp_full[] = "full";
43 static const char python_excp_message[] = "message";
45 /* "set python print-stack" choices. */
46 static const char *const python_excp_enums[] =
54 /* The exception printing variable. 'full' if we want to print the
55 error message and stack, 'none' if we want to print nothing, and
56 'message' if we only want to print the error message. 'message' is
58 static const char *gdbpy_should_print_stack = python_excp_message;
61 /* Forward decls, these are defined later. */
62 extern const struct extension_language_script_ops python_extension_script_ops;
63 extern const struct extension_language_ops python_extension_ops;
66 /* The main struct describing GDB's interface to the Python
67 extension language. */
68 const struct extension_language_defn extension_language_python =
80 &python_extension_script_ops,
90 #include "cli/cli-decode.h"
94 #include "python-internal.h"
99 #include "gdbthread.h"
101 #include "event-top.h"
104 /* True if Python has been successfully initialized, false
107 int gdb_python_initialized;
109 extern PyMethodDef python_GdbMethods[];
112 extern struct PyModuleDef python_GdbModuleDef;
115 PyObject *gdb_module;
116 PyObject *gdb_python_module;
118 /* Some string constants we may wish to use. */
119 PyObject *gdbpy_to_string_cst;
120 PyObject *gdbpy_children_cst;
121 PyObject *gdbpy_display_hint_cst;
122 PyObject *gdbpy_doc_cst;
123 PyObject *gdbpy_enabled_cst;
124 PyObject *gdbpy_value_cst;
126 /* The GdbError exception. */
127 PyObject *gdbpy_gdberror_exc;
129 /* The `gdb.error' base class. */
130 PyObject *gdbpy_gdb_error;
132 /* The `gdb.MemoryError' exception. */
133 PyObject *gdbpy_gdb_memory_error;
135 static script_sourcer_func gdbpy_source_script;
136 static objfile_script_sourcer_func gdbpy_source_objfile_script;
137 static objfile_script_executor_func gdbpy_execute_objfile_script;
138 static void gdbpy_finish_initialization
139 (const struct extension_language_defn *);
140 static int gdbpy_initialized (const struct extension_language_defn *);
141 static void gdbpy_eval_from_control_command
142 (const struct extension_language_defn *, struct command_line *cmd);
143 static void gdbpy_start_type_printers (const struct extension_language_defn *,
144 struct ext_lang_type_printers *);
145 static enum ext_lang_rc gdbpy_apply_type_printers
146 (const struct extension_language_defn *,
147 const struct ext_lang_type_printers *, struct type *, char **);
148 static void gdbpy_free_type_printers (const struct extension_language_defn *,
149 struct ext_lang_type_printers *);
150 static void gdbpy_set_quit_flag (const struct extension_language_defn *);
151 static int gdbpy_check_quit_flag (const struct extension_language_defn *);
152 static enum ext_lang_rc gdbpy_before_prompt_hook
153 (const struct extension_language_defn *, const char *current_gdb_prompt);
155 /* The interface between gdb proper and loading of python scripts. */
157 const struct extension_language_script_ops python_extension_script_ops =
160 gdbpy_source_objfile_script,
161 gdbpy_execute_objfile_script,
162 gdbpy_auto_load_enabled
165 /* The interface between gdb proper and python extensions. */
167 const struct extension_language_ops python_extension_ops =
169 gdbpy_finish_initialization,
172 gdbpy_eval_from_control_command,
174 gdbpy_start_type_printers,
175 gdbpy_apply_type_printers,
176 gdbpy_free_type_printers,
178 gdbpy_apply_val_pretty_printer,
180 gdbpy_apply_frame_filter,
182 gdbpy_preserve_values,
184 gdbpy_breakpoint_has_cond,
185 gdbpy_breakpoint_cond_says_stop,
188 gdbpy_check_quit_flag,
190 gdbpy_before_prompt_hook,
192 gdbpy_clone_xmethod_worker_data,
193 gdbpy_free_xmethod_worker_data,
194 gdbpy_get_matching_xmethod_workers,
195 gdbpy_get_xmethod_arg_types,
196 gdbpy_get_xmethod_result_type,
200 /* Architecture and language to be used in callbacks from
201 the Python interpreter. */
202 struct gdbarch *python_gdbarch;
203 const struct language_defn *python_language;
205 gdbpy_enter::gdbpy_enter (struct gdbarch *gdbarch,
206 const struct language_defn *language)
207 : m_gdbarch (python_gdbarch),
208 m_language (python_language)
210 /* We should not ever enter Python unless initialized. */
211 if (!gdb_python_initialized)
212 error (_("Python not initialized"));
214 m_previous_active = set_active_ext_lang (&extension_language_python);
216 m_state = PyGILState_Ensure ();
218 python_gdbarch = gdbarch;
219 python_language = language;
221 /* Save it and ensure ! PyErr_Occurred () afterwards. */
222 PyErr_Fetch (&m_error_type, &m_error_value, &m_error_traceback);
225 gdbpy_enter::~gdbpy_enter ()
227 /* Leftover Python error is forbidden by Python Exception Handling. */
228 if (PyErr_Occurred ())
230 /* This order is similar to the one calling error afterwards. */
231 gdbpy_print_stack ();
232 warning (_("internal error: Unhandled Python exception"));
235 PyErr_Restore (m_error_type, m_error_value, m_error_traceback);
237 PyGILState_Release (m_state);
238 python_gdbarch = m_gdbarch;
239 python_language = m_language;
241 restore_active_ext_lang (m_previous_active);
244 /* Set the quit flag. */
247 gdbpy_set_quit_flag (const struct extension_language_defn *extlang)
249 PyErr_SetInterrupt ();
252 /* Return true if the quit flag has been set, false otherwise. */
255 gdbpy_check_quit_flag (const struct extension_language_defn *extlang)
257 return PyOS_InterruptOccurred ();
260 /* Evaluate a Python command like PyRun_SimpleString, but uses
261 Py_single_input which prints the result of expressions, and does
262 not automatically print the stack on errors. */
265 eval_python_command (const char *command)
269 m = PyImport_AddModule ("__main__");
273 d = PyModule_GetDict (m);
276 gdbpy_ref v (PyRun_StringFlags (command, Py_single_input, d, d, NULL));
288 /* Implementation of the gdb "python-interactive" command. */
291 python_interactive_command (char *arg, int from_tty)
293 struct ui *ui = current_ui;
296 scoped_restore save_async = make_scoped_restore (¤t_ui->async, 0);
298 arg = skip_spaces (arg);
300 gdbpy_enter enter_py (get_current_arch (), current_language);
304 int len = strlen (arg);
305 char *script = (char *) xmalloc (len + 2);
307 strcpy (script, arg);
309 script[len + 1] = '\0';
310 err = eval_python_command (script);
315 err = PyRun_InteractiveLoop (ui->instream, "<stdin>");
321 gdbpy_print_stack ();
322 error (_("Error while executing Python code."));
326 /* A wrapper around PyRun_SimpleFile. FILE is the Python script to run
329 On Windows hosts few users would build Python themselves (this is no
330 trivial task on this platform), and thus use binaries built by
331 someone else instead. There may happen situation where the Python
332 library and GDB are using two different versions of the C runtime
333 library. Python, being built with VC, would use one version of the
334 msvcr DLL (Eg. msvcr100.dll), while MinGW uses msvcrt.dll.
335 A FILE * from one runtime does not necessarily operate correctly in
338 To work around this potential issue, we create on Windows hosts the
339 FILE object using Python routines, thus making sure that it is
340 compatible with the Python library. */
343 python_run_simple_file (FILE *file, const char *filename)
347 PyRun_SimpleFile (file, filename);
351 /* Because we have a string for a filename, and are using Python to
352 open the file, we need to expand any tilde in the path first. */
353 gdb::unique_xmalloc_ptr<char> full_path (tilde_expand (filename));
354 gdbpy_ref python_file (PyFile_FromString (full_path.get (), "r"));
355 if (python_file == NULL)
357 gdbpy_print_stack ();
358 error (_("Error while opening file: %s"), full_path.get ());
361 PyRun_SimpleFile (PyFile_AsFile (python_file.get ()), filename);
366 /* Given a command_line, return a command string suitable for passing
367 to Python. Lines in the string are separated by newlines. The
368 return value is allocated using xmalloc and the caller is
369 responsible for freeing it. */
372 compute_python_string (struct command_line *l)
374 struct command_line *iter;
379 for (iter = l; iter; iter = iter->next)
380 size += strlen (iter->line) + 1;
382 script = (char *) xmalloc (size + 1);
384 for (iter = l; iter; iter = iter->next)
386 int len = strlen (iter->line);
388 strcpy (&script[here], iter->line);
390 script[here++] = '\n';
396 /* Take a command line structure representing a 'python' command, and
397 evaluate its body using the Python interpreter. */
400 gdbpy_eval_from_control_command (const struct extension_language_defn *extlang,
401 struct command_line *cmd)
406 if (cmd->body_count != 1)
407 error (_("Invalid \"python\" block structure."));
409 gdbpy_enter enter_py (get_current_arch (), current_language);
411 script = compute_python_string (cmd->body_list[0]);
412 ret = PyRun_SimpleString (script);
415 error (_("Error while executing Python code."));
418 /* Implementation of the gdb "python" command. */
421 python_command (char *arg, int from_tty)
423 gdbpy_enter enter_py (get_current_arch (), current_language);
425 scoped_restore save_async = make_scoped_restore (¤t_ui->async, 0);
427 arg = skip_spaces (arg);
430 if (PyRun_SimpleString (arg))
431 error (_("Error while executing Python code."));
435 struct command_line *l = get_command_line (python_control, "");
436 struct cleanup *cleanup = make_cleanup_free_command_lines (&l);
438 execute_control_command_untraced (l);
439 do_cleanups (cleanup);
445 /* Transform a gdb parameters's value into a Python value. May return
446 NULL (and set a Python exception) on error. Helper function for
449 gdbpy_parameter_value (enum var_types type, void *var)
454 case var_string_noescape:
455 case var_optional_filename:
459 char *str = * (char **) var;
463 return host_string_to_python_string (str);
474 case var_auto_boolean:
476 enum auto_boolean ab = * (enum auto_boolean *) var;
478 if (ab == AUTO_BOOLEAN_TRUE)
480 else if (ab == AUTO_BOOLEAN_FALSE)
487 if ((* (int *) var) == INT_MAX)
491 return PyLong_FromLong (* (int *) var);
495 unsigned int val = * (unsigned int *) var;
499 return PyLong_FromUnsignedLong (val);
503 return PyErr_Format (PyExc_RuntimeError,
504 _("Programmer error: unhandled type."));
507 /* A Python function which returns a gdb parameter's value as a Python
511 gdbpy_parameter (PyObject *self, PyObject *args)
513 struct gdb_exception except = exception_none;
514 struct cmd_list_element *alias, *prefix, *cmd;
519 if (! PyArg_ParseTuple (args, "s", &arg))
522 newarg = concat ("show ", arg, (char *) NULL);
526 found = lookup_cmd_composition (newarg, &alias, &prefix, &cmd);
528 CATCH (ex, RETURN_MASK_ALL)
535 GDB_PY_HANDLE_EXCEPTION (except);
537 return PyErr_Format (PyExc_RuntimeError,
538 _("Could not find parameter `%s'."), arg);
541 return PyErr_Format (PyExc_RuntimeError,
542 _("`%s' is not a parameter."), arg);
543 return gdbpy_parameter_value (cmd->var_type, cmd->var);
546 /* Wrapper for target_charset. */
549 gdbpy_target_charset (PyObject *self, PyObject *args)
551 const char *cset = target_charset (python_gdbarch);
553 return PyUnicode_Decode (cset, strlen (cset), host_charset (), NULL);
556 /* Wrapper for target_wide_charset. */
559 gdbpy_target_wide_charset (PyObject *self, PyObject *args)
561 const char *cset = target_wide_charset (python_gdbarch);
563 return PyUnicode_Decode (cset, strlen (cset), host_charset (), NULL);
566 /* A Python function which evaluates a string using the gdb CLI. */
569 execute_gdb_command (PyObject *self, PyObject *args, PyObject *kw)
572 PyObject *from_tty_obj = NULL, *to_string_obj = NULL;
573 int from_tty, to_string;
574 static char *keywords[] = {"command", "from_tty", "to_string", NULL };
576 if (! PyArg_ParseTupleAndKeywords (args, kw, "s|O!O!", keywords, &arg,
577 &PyBool_Type, &from_tty_obj,
578 &PyBool_Type, &to_string_obj))
584 int cmp = PyObject_IsTrue (from_tty_obj);
593 int cmp = PyObject_IsTrue (to_string_obj);
599 std::string to_string_res;
603 /* Copy the argument text in case the command modifies it. */
604 char *copy = xstrdup (arg);
605 struct cleanup *cleanup = make_cleanup (xfree, copy);
606 struct interp *interp;
608 scoped_restore save_async = make_scoped_restore (¤t_ui->async, 0);
610 scoped_restore save_uiout = make_scoped_restore (¤t_uiout);
612 /* Use the console interpreter uiout to have the same print format
613 for console or MI. */
614 interp = interp_lookup (current_ui, "console");
615 current_uiout = interp_ui_out (interp);
617 prevent_dont_repeat ();
619 to_string_res = execute_command_to_string (copy, from_tty);
621 execute_command (copy, from_tty);
622 do_cleanups (cleanup);
624 CATCH (except, RETURN_MASK_ALL)
626 GDB_PY_HANDLE_EXCEPTION (except);
630 /* Do any commands attached to breakpoint we stopped at. */
631 bpstat_do_actions ();
634 return PyString_FromString (to_string_res.c_str ());
638 /* Implementation of gdb.solib_name (Long) -> String.
639 Returns the name of the shared library holding a given address, or None. */
642 gdbpy_solib_name (PyObject *self, PyObject *args)
648 if (!PyArg_ParseTuple (args, GDB_PY_LLU_ARG, &pc))
651 soname = solib_name_from_address (current_program_space, pc);
653 str_obj = host_string_to_python_string (soname);
663 /* A Python function which is a wrapper for decode_line_1. */
666 gdbpy_decode_line (PyObject *self, PyObject *args)
668 struct gdb_exception except = exception_none;
669 struct symtabs_and_lines sals = { NULL, 0 }; /* Initialize to
671 struct symtab_and_line sal;
673 struct cleanup *cleanups;
676 struct event_location *location = NULL;
678 if (! PyArg_ParseTuple (args, "|s", &arg))
681 cleanups = make_cleanup (null_cleanup, NULL);
687 location = string_to_event_location_basic (&arg, python_language);
688 make_cleanup_delete_event_location (location);
693 if (location != NULL)
694 sals = decode_line_1 (location, 0, NULL, NULL, 0);
697 set_default_source_symtab_and_line ();
698 sal = get_current_source_symtab_and_line ();
703 CATCH (ex, RETURN_MASK_ALL)
709 if (sals.sals != NULL && sals.sals != &sal)
710 make_cleanup (xfree, sals.sals);
712 if (except.reason < 0)
714 do_cleanups (cleanups);
715 /* We know this will always throw. */
716 gdbpy_convert_exception (except);
724 result.reset (PyTuple_New (sals.nelts));
727 do_cleanups (cleanups);
730 for (i = 0; i < sals.nelts; ++i)
734 obj = symtab_and_line_to_sal_object (sals.sals[i]);
737 do_cleanups (cleanups);
741 PyTuple_SetItem (result.get (), i, obj);
746 result.reset (Py_None);
750 gdbpy_ref return_result (PyTuple_New (2));
751 if (return_result == NULL)
753 do_cleanups (cleanups);
757 if (arg != NULL && strlen (arg) > 0)
759 unparsed.reset (PyString_FromString (arg));
760 if (unparsed == NULL)
762 do_cleanups (cleanups);
768 unparsed.reset (Py_None);
772 PyTuple_SetItem (return_result.get (), 0, unparsed.release ());
773 PyTuple_SetItem (return_result.get (), 1, result.release ());
775 do_cleanups (cleanups);
777 return return_result.release ();
780 /* Parse a string and evaluate it as an expression. */
782 gdbpy_parse_and_eval (PyObject *self, PyObject *args)
784 const char *expr_str;
785 struct value *result = NULL;
787 if (!PyArg_ParseTuple (args, "s", &expr_str))
792 result = parse_and_eval (expr_str);
794 CATCH (except, RETURN_MASK_ALL)
796 GDB_PY_HANDLE_EXCEPTION (except);
800 return value_to_value_object (result);
803 /* Implementation of gdb.find_pc_line function.
804 Returns the gdb.Symtab_and_line object corresponding to a PC value. */
807 gdbpy_find_pc_line (PyObject *self, PyObject *args)
809 gdb_py_ulongest pc_llu;
810 PyObject *result = NULL; /* init for gcc -Wall */
812 if (!PyArg_ParseTuple (args, GDB_PY_LLU_ARG, &pc_llu))
817 struct symtab_and_line sal;
820 pc = (CORE_ADDR) pc_llu;
821 sal = find_pc_line (pc, 0);
822 result = symtab_and_line_to_sal_object (sal);
824 CATCH (except, RETURN_MASK_ALL)
826 GDB_PY_HANDLE_EXCEPTION (except);
833 /* Implementation of gdb.invalidate_cached_frames. */
836 gdbpy_invalidate_cached_frames (PyObject *self, PyObject *args)
838 reinit_frame_cache ();
842 /* Read a file as Python code.
843 This is the extension_language_script_ops.script_sourcer "method".
844 FILE is the file to load. FILENAME is name of the file FILE.
845 This does not throw any errors. If an exception occurs python will print
846 the traceback and clear the error indicator. */
849 gdbpy_source_script (const struct extension_language_defn *extlang,
850 FILE *file, const char *filename)
852 gdbpy_enter enter_py (get_current_arch (), current_language);
853 python_run_simple_file (file, filename);
858 /* Posting and handling events. */
860 /* A single event. */
863 /* The Python event. This is just a callable object. */
865 /* The next event. */
866 struct gdbpy_event *next;
869 /* All pending events. */
870 static struct gdbpy_event *gdbpy_event_list;
871 /* The final link of the event list. */
872 static struct gdbpy_event **gdbpy_event_list_end;
874 /* So that we can wake up the main thread even when it is blocked in
876 static struct serial_event *gdbpy_serial_event;
878 /* The file handler callback. This reads from the internal pipe, and
879 then processes the Python event queue. This will always be run in
880 the main gdb thread. */
883 gdbpy_run_events (int error, gdb_client_data client_data)
885 gdbpy_enter enter_py (get_current_arch (), current_language);
887 /* Clear the event fd. Do this before flushing the events list, so
888 that any new event post afterwards is sure to re-awake the event
890 serial_event_clear (gdbpy_serial_event);
892 while (gdbpy_event_list)
894 /* Dispatching the event might push a new element onto the event
895 loop, so we update here "atomically enough". */
896 struct gdbpy_event *item = gdbpy_event_list;
897 gdbpy_event_list = gdbpy_event_list->next;
898 if (gdbpy_event_list == NULL)
899 gdbpy_event_list_end = &gdbpy_event_list;
902 gdbpy_ref call_result (PyObject_CallObject (item->event, NULL));
903 if (call_result == NULL)
906 Py_DECREF (item->event);
911 /* Submit an event to the gdb thread. */
913 gdbpy_post_event (PyObject *self, PyObject *args)
915 struct gdbpy_event *event;
919 if (!PyArg_ParseTuple (args, "O", &func))
922 if (!PyCallable_Check (func))
924 PyErr_SetString (PyExc_RuntimeError,
925 _("Posted event is not callable"));
931 /* From here until the end of the function, we have the GIL, so we
932 can operate on our global data structures without worrying. */
933 wakeup = gdbpy_event_list == NULL;
935 event = XNEW (struct gdbpy_event);
938 *gdbpy_event_list_end = event;
939 gdbpy_event_list_end = &event->next;
941 /* Wake up gdb when needed. */
943 serial_event_set (gdbpy_serial_event);
948 /* Initialize the Python event handler. */
950 gdbpy_initialize_events (void)
952 gdbpy_event_list_end = &gdbpy_event_list;
954 gdbpy_serial_event = make_serial_event ();
955 add_file_handler (serial_event_fd (gdbpy_serial_event),
956 gdbpy_run_events, NULL);
963 /* This is the extension_language_ops.before_prompt "method". */
965 static enum ext_lang_rc
966 gdbpy_before_prompt_hook (const struct extension_language_defn *extlang,
967 const char *current_gdb_prompt)
969 if (!gdb_python_initialized)
970 return EXT_LANG_RC_NOP;
972 gdbpy_enter enter_py (get_current_arch (), current_language);
974 if (gdb_python_module
975 && PyObject_HasAttrString (gdb_python_module, "prompt_hook"))
977 gdbpy_ref hook (PyObject_GetAttrString (gdb_python_module,
981 gdbpy_print_stack ();
982 return EXT_LANG_RC_ERROR;
985 if (PyCallable_Check (hook.get ()))
987 gdbpy_ref current_prompt (PyString_FromString (current_gdb_prompt));
988 if (current_prompt == NULL)
990 gdbpy_print_stack ();
991 return EXT_LANG_RC_ERROR;
994 gdbpy_ref result (PyObject_CallFunctionObjArgs (hook.get (),
995 current_prompt.get (),
999 gdbpy_print_stack ();
1000 return EXT_LANG_RC_ERROR;
1003 /* Return type should be None, or a String. If it is None,
1004 fall through, we will not set a prompt. If it is a
1005 string, set PROMPT. Anything else, set an exception. */
1006 if (result != Py_None && ! PyString_Check (result.get ()))
1008 PyErr_Format (PyExc_RuntimeError,
1009 _("Return from prompt_hook must " \
1010 "be either a Python string, or None"));
1011 gdbpy_print_stack ();
1012 return EXT_LANG_RC_ERROR;
1015 if (result != Py_None)
1017 gdb::unique_xmalloc_ptr<char>
1018 prompt (python_string_to_host_string (result.get ()));
1022 gdbpy_print_stack ();
1023 return EXT_LANG_RC_ERROR;
1026 set_prompt (prompt.get ());
1027 return EXT_LANG_RC_OK;
1032 return EXT_LANG_RC_NOP;
1039 /* A python function to write a single string using gdb's filtered
1040 output stream . The optional keyword STREAM can be used to write
1041 to a particular stream. The default stream is to gdb_stdout. */
1044 gdbpy_write (PyObject *self, PyObject *args, PyObject *kw)
1047 static char *keywords[] = {"text", "stream", NULL };
1048 int stream_type = 0;
1050 if (! PyArg_ParseTupleAndKeywords (args, kw, "s|i", keywords, &arg,
1056 switch (stream_type)
1060 fprintf_filtered (gdb_stderr, "%s", arg);
1065 fprintf_filtered (gdb_stdlog, "%s", arg);
1069 fprintf_filtered (gdb_stdout, "%s", arg);
1072 CATCH (except, RETURN_MASK_ALL)
1074 GDB_PY_HANDLE_EXCEPTION (except);
1081 /* A python function to flush a gdb stream. The optional keyword
1082 STREAM can be used to flush a particular stream. The default stream
1086 gdbpy_flush (PyObject *self, PyObject *args, PyObject *kw)
1088 static char *keywords[] = {"stream", NULL };
1089 int stream_type = 0;
1091 if (! PyArg_ParseTupleAndKeywords (args, kw, "|i", keywords,
1095 switch (stream_type)
1099 gdb_flush (gdb_stderr);
1104 gdb_flush (gdb_stdlog);
1108 gdb_flush (gdb_stdout);
1114 /* Return non-zero if print-stack is not "none". */
1117 gdbpy_print_python_errors_p (void)
1119 return gdbpy_should_print_stack != python_excp_none;
1122 /* Print a python exception trace, print just a message, or print
1123 nothing and clear the python exception, depending on
1124 gdbpy_should_print_stack. Only call this if a python exception is
1127 gdbpy_print_stack (void)
1130 /* Print "none", just clear exception. */
1131 if (gdbpy_should_print_stack == python_excp_none)
1135 /* Print "full" message and backtrace. */
1136 else if (gdbpy_should_print_stack == python_excp_full)
1139 /* PyErr_Print doesn't necessarily end output with a newline.
1140 This works because Python's stdout/stderr is fed through
1146 CATCH (except, RETURN_MASK_ALL)
1151 /* Print "message", just error print message. */
1154 PyObject *ptype, *pvalue, *ptraceback;
1156 PyErr_Fetch (&ptype, &pvalue, &ptraceback);
1158 /* Fetch the error message contained within ptype, pvalue. */
1159 gdb::unique_xmalloc_ptr<char>
1160 msg (gdbpy_exception_to_string (ptype, pvalue));
1161 gdb::unique_xmalloc_ptr<char> type (gdbpy_obj_to_string (ptype));
1167 /* An error occurred computing the string representation of the
1169 fprintf_filtered (gdb_stderr,
1170 _("Error occurred computing Python error" \
1174 fprintf_filtered (gdb_stderr, "Python Exception %s %s: \n",
1175 type.get (), msg.get ());
1177 CATCH (except, RETURN_MASK_ALL)
1183 Py_XDECREF (pvalue);
1184 Py_XDECREF (ptraceback);
1190 /* Return the current Progspace.
1191 There always is one. */
1194 gdbpy_get_current_progspace (PyObject *unused1, PyObject *unused2)
1198 result = pspace_to_pspace_object (current_program_space);
1204 /* Return a sequence holding all the Progspaces. */
1207 gdbpy_progspaces (PyObject *unused1, PyObject *unused2)
1209 struct program_space *ps;
1211 gdbpy_ref list (PyList_New (0));
1217 PyObject *item = pspace_to_pspace_object (ps);
1219 if (!item || PyList_Append (list.get (), item) == -1)
1223 return list.release ();
1228 /* The "current" objfile. This is set when gdb detects that a new
1229 objfile has been loaded. It is only set for the duration of a call to
1230 gdbpy_source_objfile_script and gdbpy_execute_objfile_script; it is NULL
1232 static struct objfile *gdbpy_current_objfile;
1234 /* Set the current objfile to OBJFILE and then read FILE named FILENAME
1235 as Python code. This does not throw any errors. If an exception
1236 occurs python will print the traceback and clear the error indicator.
1237 This is the extension_language_script_ops.objfile_script_sourcer
1241 gdbpy_source_objfile_script (const struct extension_language_defn *extlang,
1242 struct objfile *objfile, FILE *file,
1243 const char *filename)
1245 if (!gdb_python_initialized)
1248 gdbpy_enter enter_py (get_objfile_arch (objfile), current_language);
1249 gdbpy_current_objfile = objfile;
1251 python_run_simple_file (file, filename);
1253 gdbpy_current_objfile = NULL;
1256 /* Set the current objfile to OBJFILE and then execute SCRIPT
1257 as Python code. This does not throw any errors. If an exception
1258 occurs python will print the traceback and clear the error indicator.
1259 This is the extension_language_script_ops.objfile_script_executor
1263 gdbpy_execute_objfile_script (const struct extension_language_defn *extlang,
1264 struct objfile *objfile, const char *name,
1267 if (!gdb_python_initialized)
1270 gdbpy_enter enter_py (get_objfile_arch (objfile), current_language);
1271 gdbpy_current_objfile = objfile;
1273 PyRun_SimpleString (script);
1275 gdbpy_current_objfile = NULL;
1278 /* Return the current Objfile, or None if there isn't one. */
1281 gdbpy_get_current_objfile (PyObject *unused1, PyObject *unused2)
1285 if (! gdbpy_current_objfile)
1288 result = objfile_to_objfile_object (gdbpy_current_objfile);
1294 /* Return a sequence holding all the Objfiles. */
1297 gdbpy_objfiles (PyObject *unused1, PyObject *unused2)
1299 struct objfile *objf;
1301 gdbpy_ref list (PyList_New (0));
1307 PyObject *item = objfile_to_objfile_object (objf);
1309 if (!item || PyList_Append (list.get (), item) == -1)
1313 return list.release ();
1316 /* Compute the list of active python type printers and store them in
1317 EXT_PRINTERS->py_type_printers. The product of this function is used by
1318 gdbpy_apply_type_printers, and freed by gdbpy_free_type_printers.
1319 This is the extension_language_ops.start_type_printers "method". */
1322 gdbpy_start_type_printers (const struct extension_language_defn *extlang,
1323 struct ext_lang_type_printers *ext_printers)
1325 PyObject *printers_obj = NULL;
1327 if (!gdb_python_initialized)
1330 gdbpy_enter enter_py (get_current_arch (), current_language);
1332 gdbpy_ref type_module (PyImport_ImportModule ("gdb.types"));
1333 if (type_module == NULL)
1335 gdbpy_print_stack ();
1339 gdbpy_ref func (PyObject_GetAttrString (type_module.get (),
1340 "get_type_recognizers"));
1343 gdbpy_print_stack ();
1347 printers_obj = PyObject_CallFunctionObjArgs (func.get (), (char *) NULL);
1348 if (printers_obj == NULL)
1349 gdbpy_print_stack ();
1351 ext_printers->py_type_printers = printers_obj;
1354 /* If TYPE is recognized by some type printer, store in *PRETTIED_TYPE
1355 a newly allocated string holding the type's replacement name, and return
1356 EXT_LANG_RC_OK. The caller is responsible for freeing the string.
1357 If there's a Python error return EXT_LANG_RC_ERROR.
1358 Otherwise, return EXT_LANG_RC_NOP.
1359 This is the extension_language_ops.apply_type_printers "method". */
1361 static enum ext_lang_rc
1362 gdbpy_apply_type_printers (const struct extension_language_defn *extlang,
1363 const struct ext_lang_type_printers *ext_printers,
1364 struct type *type, char **prettied_type)
1366 PyObject *printers_obj = (PyObject *) ext_printers->py_type_printers;
1367 gdb::unique_xmalloc_ptr<char> result;
1369 if (printers_obj == NULL)
1370 return EXT_LANG_RC_NOP;
1372 if (!gdb_python_initialized)
1373 return EXT_LANG_RC_NOP;
1375 gdbpy_enter enter_py (get_current_arch (), current_language);
1377 gdbpy_ref type_obj (type_to_type_object (type));
1378 if (type_obj == NULL)
1380 gdbpy_print_stack ();
1381 return EXT_LANG_RC_ERROR;
1384 gdbpy_ref type_module (PyImport_ImportModule ("gdb.types"));
1385 if (type_module == NULL)
1387 gdbpy_print_stack ();
1388 return EXT_LANG_RC_ERROR;
1391 gdbpy_ref func (PyObject_GetAttrString (type_module.get (),
1392 "apply_type_recognizers"));
1395 gdbpy_print_stack ();
1396 return EXT_LANG_RC_ERROR;
1399 gdbpy_ref result_obj (PyObject_CallFunctionObjArgs (func.get (), printers_obj,
1402 if (result_obj == NULL)
1404 gdbpy_print_stack ();
1405 return EXT_LANG_RC_ERROR;
1408 if (result_obj == Py_None)
1409 return EXT_LANG_RC_NOP;
1411 result = python_string_to_host_string (result_obj.get ());
1414 gdbpy_print_stack ();
1415 return EXT_LANG_RC_ERROR;
1418 *prettied_type = result.release ();
1419 return EXT_LANG_RC_OK;
1422 /* Free the result of start_type_printers.
1423 This is the extension_language_ops.free_type_printers "method". */
1426 gdbpy_free_type_printers (const struct extension_language_defn *extlang,
1427 struct ext_lang_type_printers *ext_printers)
1429 PyObject *printers = (PyObject *) ext_printers->py_type_printers;
1431 if (printers == NULL)
1434 if (!gdb_python_initialized)
1437 gdbpy_enter enter_py (get_current_arch (), current_language);
1438 Py_DECREF (printers);
1441 #else /* HAVE_PYTHON */
1443 /* Dummy implementation of the gdb "python-interactive" and "python"
1447 python_interactive_command (char *arg, int from_tty)
1449 arg = skip_spaces (arg);
1451 error (_("Python scripting is not supported in this copy of GDB."));
1454 struct command_line *l = get_command_line (python_control, "");
1455 struct cleanup *cleanups = make_cleanup_free_command_lines (&l);
1457 execute_control_command_untraced (l);
1458 do_cleanups (cleanups);
1463 python_command (char *arg, int from_tty)
1465 python_interactive_command (arg, from_tty);
1468 #endif /* HAVE_PYTHON */
1472 /* Lists for 'set python' commands. */
1474 static struct cmd_list_element *user_set_python_list;
1475 static struct cmd_list_element *user_show_python_list;
1477 /* Function for use by 'set python' prefix command. */
1480 user_set_python (char *args, int from_tty)
1482 help_list (user_set_python_list, "set python ", all_commands,
1486 /* Function for use by 'show python' prefix command. */
1489 user_show_python (char *args, int from_tty)
1491 cmd_show_list (user_show_python_list, from_tty, "");
1494 /* Initialize the Python code. */
1498 /* This is installed as a final cleanup and cleans up the
1499 interpreter. This lets Python's 'atexit' work. */
1502 finalize_python (void *ignore)
1504 struct active_ext_lang_state *previous_active;
1506 /* We don't use ensure_python_env here because if we ever ran the
1507 cleanup, gdb would crash -- because the cleanup calls into the
1508 Python interpreter, which we are about to destroy. It seems
1509 clearer to make the needed calls explicitly here than to create a
1510 cleanup and then mysteriously discard it. */
1512 /* This is only called as a final cleanup so we can assume the active
1513 SIGINT handler is gdb's. We still need to tell it to notify Python. */
1514 previous_active = set_active_ext_lang (&extension_language_python);
1516 (void) PyGILState_Ensure ();
1517 python_gdbarch = target_gdbarch ();
1518 python_language = current_language;
1522 restore_active_ext_lang (previous_active);
1526 /* Provide a prototype to silence -Wmissing-prototypes. */
1527 extern initialize_file_ftype _initialize_python;
1530 _initialize_python (void)
1535 size_t progsize, count;
1537 wchar_t *progname_copy;
1540 add_com ("python-interactive", class_obscure,
1541 python_interactive_command,
1544 Start an interactive Python prompt.\n\
1546 To return to GDB, type the EOF character (e.g., Ctrl-D on an empty\n\
1549 Alternatively, a single-line Python command can be given as an\n\
1550 argument, and if the command is an expression, the result will be\n\
1551 printed. For example:\n\
1553 (gdb) python-interactive 2 + 3\n\
1556 #else /* HAVE_PYTHON */
1558 Start a Python interactive prompt.\n\
1560 Python scripting is not supported in this copy of GDB.\n\
1561 This command is only a placeholder.")
1562 #endif /* HAVE_PYTHON */
1564 add_com_alias ("pi", "python-interactive", class_obscure, 1);
1566 add_com ("python", class_obscure, python_command,
1569 Evaluate a Python command.\n\
1571 The command can be given as an argument, for instance:\n\
1575 If no argument is given, the following lines are read and used\n\
1576 as the Python commands. Type a line containing \"end\" to indicate\n\
1577 the end of the command.")
1578 #else /* HAVE_PYTHON */
1580 Evaluate a Python command.\n\
1582 Python scripting is not supported in this copy of GDB.\n\
1583 This command is only a placeholder.")
1584 #endif /* HAVE_PYTHON */
1586 add_com_alias ("py", "python", class_obscure, 1);
1588 /* Add set/show python print-stack. */
1589 add_prefix_cmd ("python", no_class, user_show_python,
1590 _("Prefix command for python preference settings."),
1591 &user_show_python_list, "show python ", 0,
1594 add_prefix_cmd ("python", no_class, user_set_python,
1595 _("Prefix command for python preference settings."),
1596 &user_set_python_list, "set python ", 0,
1599 add_setshow_enum_cmd ("print-stack", no_class, python_excp_enums,
1600 &gdbpy_should_print_stack, _("\
1601 Set mode for Python stack dump on error."), _("\
1602 Show the mode of Python stack printing on error."), _("\
1603 none == no stack or message will be printed.\n\
1604 full == a message and a stack will be printed.\n\
1605 message == an error message without a stack will be printed."),
1607 &user_set_python_list,
1608 &user_show_python_list);
1611 #ifdef WITH_PYTHON_PATH
1612 /* Work around problem where python gets confused about where it is,
1613 and then can't find its libraries, etc.
1614 NOTE: Python assumes the following layout:
1616 /foo/lib/pythonX.Y/...
1617 This must be done before calling Py_Initialize. */
1618 progname = concat (ldirname (python_libdir), SLASH_STRING, "bin",
1619 SLASH_STRING, "python", (char *) NULL);
1621 oldloc = xstrdup (setlocale (LC_ALL, NULL));
1622 setlocale (LC_ALL, "");
1623 progsize = strlen (progname);
1624 progname_copy = (wchar_t *) PyMem_Malloc ((progsize + 1) * sizeof (wchar_t));
1628 fprintf (stderr, "out of memory\n");
1631 count = mbstowcs (progname_copy, progname, progsize + 1);
1632 if (count == (size_t) -1)
1635 fprintf (stderr, "Could not convert python path to string\n");
1638 setlocale (LC_ALL, oldloc);
1641 /* Note that Py_SetProgramName expects the string it is passed to
1642 remain alive for the duration of the program's execution, so
1643 it is not freed after this call. */
1644 Py_SetProgramName (progname_copy);
1646 Py_SetProgramName (progname);
1651 PyEval_InitThreads ();
1654 gdb_module = PyModule_Create (&python_GdbModuleDef);
1655 /* Add _gdb module to the list of known built-in modules. */
1656 _PyImport_FixupBuiltin (gdb_module, "_gdb");
1658 gdb_module = Py_InitModule ("_gdb", python_GdbMethods);
1660 if (gdb_module == NULL)
1663 /* The casts to (char*) are for python 2.4. */
1664 if (PyModule_AddStringConstant (gdb_module, "VERSION", (char*) version) < 0
1665 || PyModule_AddStringConstant (gdb_module, "HOST_CONFIG",
1666 (char*) host_name) < 0
1667 || PyModule_AddStringConstant (gdb_module, "TARGET_CONFIG",
1668 (char*) target_name) < 0)
1671 /* Add stream constants. */
1672 if (PyModule_AddIntConstant (gdb_module, "STDOUT", 0) < 0
1673 || PyModule_AddIntConstant (gdb_module, "STDERR", 1) < 0
1674 || PyModule_AddIntConstant (gdb_module, "STDLOG", 2) < 0)
1677 gdbpy_gdb_error = PyErr_NewException ("gdb.error", PyExc_RuntimeError, NULL);
1678 if (gdbpy_gdb_error == NULL
1679 || gdb_pymodule_addobject (gdb_module, "error", gdbpy_gdb_error) < 0)
1682 gdbpy_gdb_memory_error = PyErr_NewException ("gdb.MemoryError",
1683 gdbpy_gdb_error, NULL);
1684 if (gdbpy_gdb_memory_error == NULL
1685 || gdb_pymodule_addobject (gdb_module, "MemoryError",
1686 gdbpy_gdb_memory_error) < 0)
1689 gdbpy_gdberror_exc = PyErr_NewException ("gdb.GdbError", NULL, NULL);
1690 if (gdbpy_gdberror_exc == NULL
1691 || gdb_pymodule_addobject (gdb_module, "GdbError",
1692 gdbpy_gdberror_exc) < 0)
1695 gdbpy_initialize_gdb_readline ();
1697 if (gdbpy_initialize_auto_load () < 0
1698 || gdbpy_initialize_values () < 0
1699 || gdbpy_initialize_frames () < 0
1700 || gdbpy_initialize_commands () < 0
1701 || gdbpy_initialize_symbols () < 0
1702 || gdbpy_initialize_symtabs () < 0
1703 || gdbpy_initialize_blocks () < 0
1704 || gdbpy_initialize_functions () < 0
1705 || gdbpy_initialize_parameters () < 0
1706 || gdbpy_initialize_types () < 0
1707 || gdbpy_initialize_pspace () < 0
1708 || gdbpy_initialize_objfile () < 0
1709 || gdbpy_initialize_breakpoints () < 0
1710 || gdbpy_initialize_finishbreakpoints () < 0
1711 || gdbpy_initialize_lazy_string () < 0
1712 || gdbpy_initialize_linetable () < 0
1713 || gdbpy_initialize_thread () < 0
1714 || gdbpy_initialize_inferior () < 0
1715 || gdbpy_initialize_events () < 0
1716 || gdbpy_initialize_eventregistry () < 0
1717 || gdbpy_initialize_py_events () < 0
1718 || gdbpy_initialize_event () < 0
1719 || gdbpy_initialize_stop_event () < 0
1720 || gdbpy_initialize_signal_event () < 0
1721 || gdbpy_initialize_breakpoint_event () < 0
1722 || gdbpy_initialize_continue_event () < 0
1723 || gdbpy_initialize_inferior_call_pre_event () < 0
1724 || gdbpy_initialize_inferior_call_post_event () < 0
1725 || gdbpy_initialize_register_changed_event () < 0
1726 || gdbpy_initialize_memory_changed_event () < 0
1727 || gdbpy_initialize_exited_event () < 0
1728 || gdbpy_initialize_thread_event () < 0
1729 || gdbpy_initialize_new_objfile_event () < 0
1730 || gdbpy_initialize_clear_objfiles_event () < 0
1731 || gdbpy_initialize_arch () < 0
1732 || gdbpy_initialize_xmethods () < 0
1733 || gdbpy_initialize_unwind () < 0)
1736 gdbpy_to_string_cst = PyString_FromString ("to_string");
1737 if (gdbpy_to_string_cst == NULL)
1739 gdbpy_children_cst = PyString_FromString ("children");
1740 if (gdbpy_children_cst == NULL)
1742 gdbpy_display_hint_cst = PyString_FromString ("display_hint");
1743 if (gdbpy_display_hint_cst == NULL)
1745 gdbpy_doc_cst = PyString_FromString ("__doc__");
1746 if (gdbpy_doc_cst == NULL)
1748 gdbpy_enabled_cst = PyString_FromString ("enabled");
1749 if (gdbpy_enabled_cst == NULL)
1751 gdbpy_value_cst = PyString_FromString ("value");
1752 if (gdbpy_value_cst == NULL)
1755 /* Release the GIL while gdb runs. */
1756 PyThreadState_Swap (NULL);
1757 PyEval_ReleaseLock ();
1759 make_final_cleanup (finalize_python, NULL);
1761 gdb_python_initialized = 1;
1765 gdbpy_print_stack ();
1766 /* Do not set 'gdb_python_initialized'. */
1769 #endif /* HAVE_PYTHON */
1774 /* Helper function for gdbpy_finish_initialization. This does the
1775 work and then returns false if an error has occurred and must be
1776 displayed, or true on success. */
1779 do_finish_initialization (const struct extension_language_defn *extlang)
1784 /* Add the initial data-directory to sys.path. */
1786 std::string gdb_pythondir = (std::string (gdb_datadir) + SLASH_STRING
1789 sys_path = PySys_GetObject ("path");
1791 /* If sys.path is not defined yet, define it first. */
1792 if (!(sys_path && PyList_Check (sys_path)))
1795 PySys_SetPath (L"");
1799 sys_path = PySys_GetObject ("path");
1801 if (sys_path && PyList_Check (sys_path))
1803 gdbpy_ref pythondir (PyString_FromString (gdb_pythondir.c_str ()));
1804 if (pythondir == NULL || PyList_Insert (sys_path, 0, pythondir.get ()))
1810 /* Import the gdb module to finish the initialization, and
1811 add it to __main__ for convenience. */
1812 m = PyImport_AddModule ("__main__");
1816 /* Keep the reference to gdb_python_module since it is in a global
1818 gdb_python_module = PyImport_ImportModule ("gdb");
1819 if (gdb_python_module == NULL)
1821 gdbpy_print_stack ();
1822 /* This is passed in one call to warning so that blank lines aren't
1823 inserted between each line of text. */
1825 "Could not load the Python gdb module from `%s'.\n"
1826 "Limited Python support is available from the _gdb module.\n"
1827 "Suggest passing --data-directory=/path/to/gdb/data-directory.\n"),
1828 gdb_pythondir.c_str ());
1829 /* We return "success" here as we've already emitted the
1834 return gdb_pymodule_addobject (m, "gdb", gdb_python_module) >= 0;
1837 /* Perform the remaining python initializations.
1838 These must be done after GDB is at least mostly initialized.
1839 E.g., The "info pretty-printer" command needs the "info" prefix
1841 This is the extension_language_ops.finish_initialization "method". */
1844 gdbpy_finish_initialization (const struct extension_language_defn *extlang)
1846 gdbpy_enter enter_py (get_current_arch (), current_language);
1848 if (!do_finish_initialization (extlang))
1850 gdbpy_print_stack ();
1851 warning (_("internal error: Unhandled Python exception"));
1855 /* Return non-zero if Python has successfully initialized.
1856 This is the extension_languages_ops.initialized "method". */
1859 gdbpy_initialized (const struct extension_language_defn *extlang)
1861 return gdb_python_initialized;
1864 #endif /* HAVE_PYTHON */
1870 PyMethodDef python_GdbMethods[] =
1872 { "history", gdbpy_history, METH_VARARGS,
1873 "Get a value from history" },
1874 { "execute", (PyCFunction) execute_gdb_command, METH_VARARGS | METH_KEYWORDS,
1875 "execute (command [, from_tty] [, to_string]) -> [String]\n\
1876 Evaluate command, a string, as a gdb CLI command. Optionally returns\n\
1877 a Python String containing the output of the command if to_string is\n\
1879 { "parameter", gdbpy_parameter, METH_VARARGS,
1880 "Return a gdb parameter's value" },
1882 { "breakpoints", gdbpy_breakpoints, METH_NOARGS,
1883 "Return a tuple of all breakpoint objects" },
1885 { "default_visualizer", gdbpy_default_visualizer, METH_VARARGS,
1886 "Find the default visualizer for a Value." },
1888 { "current_progspace", gdbpy_get_current_progspace, METH_NOARGS,
1889 "Return the current Progspace." },
1890 { "progspaces", gdbpy_progspaces, METH_NOARGS,
1891 "Return a sequence of all progspaces." },
1893 { "current_objfile", gdbpy_get_current_objfile, METH_NOARGS,
1894 "Return the current Objfile being loaded, or None." },
1895 { "objfiles", gdbpy_objfiles, METH_NOARGS,
1896 "Return a sequence of all loaded objfiles." },
1898 { "newest_frame", gdbpy_newest_frame, METH_NOARGS,
1899 "newest_frame () -> gdb.Frame.\n\
1900 Return the newest frame object." },
1901 { "selected_frame", gdbpy_selected_frame, METH_NOARGS,
1902 "selected_frame () -> gdb.Frame.\n\
1903 Return the selected frame object." },
1904 { "frame_stop_reason_string", gdbpy_frame_stop_reason_string, METH_VARARGS,
1905 "stop_reason_string (Integer) -> String.\n\
1906 Return a string explaining unwind stop reason." },
1908 { "lookup_type", (PyCFunction) gdbpy_lookup_type,
1909 METH_VARARGS | METH_KEYWORDS,
1910 "lookup_type (name [, block]) -> type\n\
1911 Return a Type corresponding to the given name." },
1912 { "lookup_symbol", (PyCFunction) gdbpy_lookup_symbol,
1913 METH_VARARGS | METH_KEYWORDS,
1914 "lookup_symbol (name [, block] [, domain]) -> (symbol, is_field_of_this)\n\
1915 Return a tuple with the symbol corresponding to the given name (or None) and\n\
1916 a boolean indicating if name is a field of the current implied argument\n\
1917 `this' (when the current language is object-oriented)." },
1918 { "lookup_global_symbol", (PyCFunction) gdbpy_lookup_global_symbol,
1919 METH_VARARGS | METH_KEYWORDS,
1920 "lookup_global_symbol (name [, domain]) -> symbol\n\
1921 Return the symbol corresponding to the given name (or None)." },
1923 { "lookup_objfile", (PyCFunction) gdbpy_lookup_objfile,
1924 METH_VARARGS | METH_KEYWORDS,
1925 "lookup_objfile (name, [by_build_id]) -> objfile\n\
1926 Look up the specified objfile.\n\
1927 If by_build_id is True, the objfile is looked up by using name\n\
1928 as its build id." },
1930 { "block_for_pc", gdbpy_block_for_pc, METH_VARARGS,
1931 "Return the block containing the given pc value, or None." },
1932 { "solib_name", gdbpy_solib_name, METH_VARARGS,
1933 "solib_name (Long) -> String.\n\
1934 Return the name of the shared library holding a given address, or None." },
1935 { "decode_line", gdbpy_decode_line, METH_VARARGS,
1936 "decode_line (String) -> Tuple. Decode a string argument the way\n\
1937 that 'break' or 'edit' does. Return a tuple containing two elements.\n\
1938 The first element contains any unparsed portion of the String parameter\n\
1939 (or None if the string was fully parsed). The second element contains\n\
1940 a tuple that contains all the locations that match, represented as\n\
1941 gdb.Symtab_and_line objects (or None)."},
1942 { "parse_and_eval", gdbpy_parse_and_eval, METH_VARARGS,
1943 "parse_and_eval (String) -> Value.\n\
1944 Parse String as an expression, evaluate it, and return the result as a Value."
1946 { "find_pc_line", gdbpy_find_pc_line, METH_VARARGS,
1947 "find_pc_line (pc) -> Symtab_and_line.\n\
1948 Return the gdb.Symtab_and_line object corresponding to the pc value." },
1950 { "post_event", gdbpy_post_event, METH_VARARGS,
1951 "Post an event into gdb's event loop." },
1953 { "target_charset", gdbpy_target_charset, METH_NOARGS,
1954 "target_charset () -> string.\n\
1955 Return the name of the current target charset." },
1956 { "target_wide_charset", gdbpy_target_wide_charset, METH_NOARGS,
1957 "target_wide_charset () -> string.\n\
1958 Return the name of the current target wide charset." },
1960 { "string_to_argv", gdbpy_string_to_argv, METH_VARARGS,
1961 "string_to_argv (String) -> Array.\n\
1962 Parse String and return an argv-like array.\n\
1963 Arguments are separate by spaces and may be quoted."
1965 { "write", (PyCFunction)gdbpy_write, METH_VARARGS | METH_KEYWORDS,
1966 "Write a string using gdb's filtered stream." },
1967 { "flush", (PyCFunction)gdbpy_flush, METH_VARARGS | METH_KEYWORDS,
1968 "Flush gdb's filtered stdout stream." },
1969 { "selected_thread", gdbpy_selected_thread, METH_NOARGS,
1970 "selected_thread () -> gdb.InferiorThread.\n\
1971 Return the selected thread object." },
1972 { "selected_inferior", gdbpy_selected_inferior, METH_NOARGS,
1973 "selected_inferior () -> gdb.Inferior.\n\
1974 Return the selected inferior object." },
1975 { "inferiors", gdbpy_inferiors, METH_NOARGS,
1976 "inferiors () -> (gdb.Inferior, ...).\n\
1977 Return a tuple containing all inferiors." },
1979 { "invalidate_cached_frames", gdbpy_invalidate_cached_frames, METH_NOARGS,
1980 "invalidate_cached_frames () -> None.\n\
1981 Invalidate any cached frame objects in gdb.\n\
1982 Intended for internal use only." },
1984 {NULL, NULL, 0, NULL}
1988 struct PyModuleDef python_GdbModuleDef =
1990 PyModuleDef_HEAD_INIT,
2001 #endif /* HAVE_PYTHON */