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 v = PyRun_StringFlags (command, Py_single_input, d, d, NULL);
289 /* Implementation of the gdb "python-interactive" command. */
292 python_interactive_command (char *arg, int from_tty)
294 struct ui *ui = current_ui;
297 scoped_restore save_async = make_scoped_restore (¤t_ui->async, 0);
299 arg = skip_spaces (arg);
301 gdbpy_enter enter_py (get_current_arch (), current_language);
305 int len = strlen (arg);
306 char *script = (char *) xmalloc (len + 2);
308 strcpy (script, arg);
310 script[len + 1] = '\0';
311 err = eval_python_command (script);
316 err = PyRun_InteractiveLoop (ui->instream, "<stdin>");
322 gdbpy_print_stack ();
323 error (_("Error while executing Python code."));
327 /* A wrapper around PyRun_SimpleFile. FILE is the Python script to run
330 On Windows hosts few users would build Python themselves (this is no
331 trivial task on this platform), and thus use binaries built by
332 someone else instead. There may happen situation where the Python
333 library and GDB are using two different versions of the C runtime
334 library. Python, being built with VC, would use one version of the
335 msvcr DLL (Eg. msvcr100.dll), while MinGW uses msvcrt.dll.
336 A FILE * from one runtime does not necessarily operate correctly in
339 To work around this potential issue, we create on Windows hosts the
340 FILE object using Python routines, thus making sure that it is
341 compatible with the Python library. */
344 python_run_simple_file (FILE *file, const char *filename)
348 PyRun_SimpleFile (file, filename);
352 /* Because we have a string for a filename, and are using Python to
353 open the file, we need to expand any tilde in the path first. */
354 gdb::unique_xmalloc_ptr<char> full_path (tilde_expand (filename));
355 gdbpy_ref python_file (PyFile_FromString (full_path.get (), "r"));
356 if (python_file == NULL)
358 gdbpy_print_stack ();
359 error (_("Error while opening file: %s"), full_path.get ());
362 PyRun_SimpleFile (PyFile_AsFile (python_file.get ()), filename);
367 /* Given a command_line, return a command string suitable for passing
368 to Python. Lines in the string are separated by newlines. The
369 return value is allocated using xmalloc and the caller is
370 responsible for freeing it. */
373 compute_python_string (struct command_line *l)
375 struct command_line *iter;
380 for (iter = l; iter; iter = iter->next)
381 size += strlen (iter->line) + 1;
383 script = (char *) xmalloc (size + 1);
385 for (iter = l; iter; iter = iter->next)
387 int len = strlen (iter->line);
389 strcpy (&script[here], iter->line);
391 script[here++] = '\n';
397 /* Take a command line structure representing a 'python' command, and
398 evaluate its body using the Python interpreter. */
401 gdbpy_eval_from_control_command (const struct extension_language_defn *extlang,
402 struct command_line *cmd)
407 if (cmd->body_count != 1)
408 error (_("Invalid \"python\" block structure."));
410 gdbpy_enter enter_py (get_current_arch (), current_language);
412 script = compute_python_string (cmd->body_list[0]);
413 ret = PyRun_SimpleString (script);
416 error (_("Error while executing Python code."));
419 /* Implementation of the gdb "python" command. */
422 python_command (char *arg, int from_tty)
424 gdbpy_enter enter_py (get_current_arch (), current_language);
426 scoped_restore save_async = make_scoped_restore (¤t_ui->async, 0);
428 arg = skip_spaces (arg);
431 if (PyRun_SimpleString (arg))
432 error (_("Error while executing Python code."));
436 struct command_line *l = get_command_line (python_control, "");
437 struct cleanup *cleanup = make_cleanup_free_command_lines (&l);
439 execute_control_command_untraced (l);
440 do_cleanups (cleanup);
446 /* Transform a gdb parameters's value into a Python value. May return
447 NULL (and set a Python exception) on error. Helper function for
450 gdbpy_parameter_value (enum var_types type, void *var)
455 case var_string_noescape:
456 case var_optional_filename:
460 char *str = * (char **) var;
464 return host_string_to_python_string (str);
475 case var_auto_boolean:
477 enum auto_boolean ab = * (enum auto_boolean *) var;
479 if (ab == AUTO_BOOLEAN_TRUE)
481 else if (ab == AUTO_BOOLEAN_FALSE)
488 if ((* (int *) var) == INT_MAX)
492 return PyLong_FromLong (* (int *) var);
496 unsigned int val = * (unsigned int *) var;
500 return PyLong_FromUnsignedLong (val);
504 return PyErr_Format (PyExc_RuntimeError,
505 _("Programmer error: unhandled type."));
508 /* A Python function which returns a gdb parameter's value as a Python
512 gdbpy_parameter (PyObject *self, PyObject *args)
514 struct gdb_exception except = exception_none;
515 struct cmd_list_element *alias, *prefix, *cmd;
520 if (! PyArg_ParseTuple (args, "s", &arg))
523 newarg = concat ("show ", arg, (char *) NULL);
527 found = lookup_cmd_composition (newarg, &alias, &prefix, &cmd);
529 CATCH (ex, RETURN_MASK_ALL)
536 GDB_PY_HANDLE_EXCEPTION (except);
538 return PyErr_Format (PyExc_RuntimeError,
539 _("Could not find parameter `%s'."), arg);
542 return PyErr_Format (PyExc_RuntimeError,
543 _("`%s' is not a parameter."), arg);
544 return gdbpy_parameter_value (cmd->var_type, cmd->var);
547 /* Wrapper for target_charset. */
550 gdbpy_target_charset (PyObject *self, PyObject *args)
552 const char *cset = target_charset (python_gdbarch);
554 return PyUnicode_Decode (cset, strlen (cset), host_charset (), NULL);
557 /* Wrapper for target_wide_charset. */
560 gdbpy_target_wide_charset (PyObject *self, PyObject *args)
562 const char *cset = target_wide_charset (python_gdbarch);
564 return PyUnicode_Decode (cset, strlen (cset), host_charset (), NULL);
567 /* A Python function which evaluates a string using the gdb CLI. */
570 execute_gdb_command (PyObject *self, PyObject *args, PyObject *kw)
573 PyObject *from_tty_obj = NULL, *to_string_obj = NULL;
574 int from_tty, to_string;
575 static char *keywords[] = {"command", "from_tty", "to_string", NULL };
577 if (! PyArg_ParseTupleAndKeywords (args, kw, "s|O!O!", keywords, &arg,
578 &PyBool_Type, &from_tty_obj,
579 &PyBool_Type, &to_string_obj))
585 int cmp = PyObject_IsTrue (from_tty_obj);
594 int cmp = PyObject_IsTrue (to_string_obj);
600 std::string to_string_res;
604 /* Copy the argument text in case the command modifies it. */
605 char *copy = xstrdup (arg);
606 struct cleanup *cleanup = make_cleanup (xfree, copy);
607 struct interp *interp;
609 scoped_restore save_async = make_scoped_restore (¤t_ui->async, 0);
611 scoped_restore save_uiout = make_scoped_restore (¤t_uiout);
613 /* Use the console interpreter uiout to have the same print format
614 for console or MI. */
615 interp = interp_lookup (current_ui, "console");
616 current_uiout = interp_ui_out (interp);
618 prevent_dont_repeat ();
620 to_string_res = execute_command_to_string (copy, from_tty);
622 execute_command (copy, from_tty);
623 do_cleanups (cleanup);
625 CATCH (except, RETURN_MASK_ALL)
627 GDB_PY_HANDLE_EXCEPTION (except);
631 /* Do any commands attached to breakpoint we stopped at. */
632 bpstat_do_actions ();
635 return PyString_FromString (to_string_res.c_str ());
639 /* Implementation of gdb.solib_name (Long) -> String.
640 Returns the name of the shared library holding a given address, or None. */
643 gdbpy_solib_name (PyObject *self, PyObject *args)
649 if (!PyArg_ParseTuple (args, GDB_PY_LLU_ARG, &pc))
652 soname = solib_name_from_address (current_program_space, pc);
654 str_obj = host_string_to_python_string (soname);
664 /* A Python function which is a wrapper for decode_line_1. */
667 gdbpy_decode_line (PyObject *self, PyObject *args)
669 struct gdb_exception except = exception_none;
670 struct symtabs_and_lines sals = { NULL, 0 }; /* Initialize to
672 struct symtab_and_line sal;
674 struct cleanup *cleanups;
675 PyObject *result = NULL;
676 PyObject *return_result = NULL;
677 PyObject *unparsed = NULL;
678 struct event_location *location = NULL;
680 if (! PyArg_ParseTuple (args, "|s", &arg))
683 cleanups = make_cleanup (null_cleanup, NULL);
689 location = string_to_event_location_basic (&arg, python_language);
690 make_cleanup_delete_event_location (location);
695 if (location != NULL)
696 sals = decode_line_1 (location, 0, NULL, NULL, 0);
699 set_default_source_symtab_and_line ();
700 sal = get_current_source_symtab_and_line ();
705 CATCH (ex, RETURN_MASK_ALL)
711 if (sals.sals != NULL && sals.sals != &sal)
712 make_cleanup (xfree, sals.sals);
714 if (except.reason < 0)
716 do_cleanups (cleanups);
717 /* We know this will always throw. */
718 gdbpy_convert_exception (except);
726 result = PyTuple_New (sals.nelts);
729 for (i = 0; i < sals.nelts; ++i)
733 obj = symtab_and_line_to_sal_object (sals.sals[i]);
740 PyTuple_SetItem (result, i, obj);
749 return_result = PyTuple_New (2);
756 if (arg != NULL && strlen (arg) > 0)
758 unparsed = PyString_FromString (arg);
759 if (unparsed == NULL)
762 Py_DECREF (return_result);
763 return_result = NULL;
773 PyTuple_SetItem (return_result, 0, unparsed);
774 PyTuple_SetItem (return_result, 1, result);
777 do_cleanups (cleanups);
779 return return_result;
782 /* Parse a string and evaluate it as an expression. */
784 gdbpy_parse_and_eval (PyObject *self, PyObject *args)
786 const char *expr_str;
787 struct value *result = NULL;
789 if (!PyArg_ParseTuple (args, "s", &expr_str))
794 result = parse_and_eval (expr_str);
796 CATCH (except, RETURN_MASK_ALL)
798 GDB_PY_HANDLE_EXCEPTION (except);
802 return value_to_value_object (result);
805 /* Implementation of gdb.find_pc_line function.
806 Returns the gdb.Symtab_and_line object corresponding to a PC value. */
809 gdbpy_find_pc_line (PyObject *self, PyObject *args)
811 gdb_py_ulongest pc_llu;
812 PyObject *result = NULL; /* init for gcc -Wall */
814 if (!PyArg_ParseTuple (args, GDB_PY_LLU_ARG, &pc_llu))
819 struct symtab_and_line sal;
822 pc = (CORE_ADDR) pc_llu;
823 sal = find_pc_line (pc, 0);
824 result = symtab_and_line_to_sal_object (sal);
826 CATCH (except, RETURN_MASK_ALL)
828 GDB_PY_HANDLE_EXCEPTION (except);
835 /* Implementation of gdb.invalidate_cached_frames. */
838 gdbpy_invalidate_cached_frames (PyObject *self, PyObject *args)
840 reinit_frame_cache ();
844 /* Read a file as Python code.
845 This is the extension_language_script_ops.script_sourcer "method".
846 FILE is the file to load. FILENAME is name of the file FILE.
847 This does not throw any errors. If an exception occurs python will print
848 the traceback and clear the error indicator. */
851 gdbpy_source_script (const struct extension_language_defn *extlang,
852 FILE *file, const char *filename)
854 gdbpy_enter enter_py (get_current_arch (), current_language);
855 python_run_simple_file (file, filename);
860 /* Posting and handling events. */
862 /* A single event. */
865 /* The Python event. This is just a callable object. */
867 /* The next event. */
868 struct gdbpy_event *next;
871 /* All pending events. */
872 static struct gdbpy_event *gdbpy_event_list;
873 /* The final link of the event list. */
874 static struct gdbpy_event **gdbpy_event_list_end;
876 /* So that we can wake up the main thread even when it is blocked in
878 static struct serial_event *gdbpy_serial_event;
880 /* The file handler callback. This reads from the internal pipe, and
881 then processes the Python event queue. This will always be run in
882 the main gdb thread. */
885 gdbpy_run_events (int error, gdb_client_data client_data)
887 gdbpy_enter enter_py (get_current_arch (), current_language);
889 /* Clear the event fd. Do this before flushing the events list, so
890 that any new event post afterwards is sure to re-awake the event
892 serial_event_clear (gdbpy_serial_event);
894 while (gdbpy_event_list)
896 PyObject *call_result;
898 /* Dispatching the event might push a new element onto the event
899 loop, so we update here "atomically enough". */
900 struct gdbpy_event *item = gdbpy_event_list;
901 gdbpy_event_list = gdbpy_event_list->next;
902 if (gdbpy_event_list == NULL)
903 gdbpy_event_list_end = &gdbpy_event_list;
906 call_result = PyObject_CallObject (item->event, NULL);
907 if (call_result == NULL)
910 Py_XDECREF (call_result);
911 Py_DECREF (item->event);
916 /* Submit an event to the gdb thread. */
918 gdbpy_post_event (PyObject *self, PyObject *args)
920 struct gdbpy_event *event;
924 if (!PyArg_ParseTuple (args, "O", &func))
927 if (!PyCallable_Check (func))
929 PyErr_SetString (PyExc_RuntimeError,
930 _("Posted event is not callable"));
936 /* From here until the end of the function, we have the GIL, so we
937 can operate on our global data structures without worrying. */
938 wakeup = gdbpy_event_list == NULL;
940 event = XNEW (struct gdbpy_event);
943 *gdbpy_event_list_end = event;
944 gdbpy_event_list_end = &event->next;
946 /* Wake up gdb when needed. */
948 serial_event_set (gdbpy_serial_event);
953 /* Initialize the Python event handler. */
955 gdbpy_initialize_events (void)
957 gdbpy_event_list_end = &gdbpy_event_list;
959 gdbpy_serial_event = make_serial_event ();
960 add_file_handler (serial_event_fd (gdbpy_serial_event),
961 gdbpy_run_events, NULL);
968 /* This is the extension_language_ops.before_prompt "method". */
970 static enum ext_lang_rc
971 gdbpy_before_prompt_hook (const struct extension_language_defn *extlang,
972 const char *current_gdb_prompt)
974 if (!gdb_python_initialized)
975 return EXT_LANG_RC_NOP;
977 gdbpy_enter enter_py (get_current_arch (), current_language);
979 if (gdb_python_module
980 && PyObject_HasAttrString (gdb_python_module, "prompt_hook"))
982 gdbpy_ref hook (PyObject_GetAttrString (gdb_python_module,
986 gdbpy_print_stack ();
987 return EXT_LANG_RC_ERROR;
990 if (PyCallable_Check (hook.get ()))
992 gdbpy_ref current_prompt (PyString_FromString (current_gdb_prompt));
993 if (current_prompt == NULL)
995 gdbpy_print_stack ();
996 return EXT_LANG_RC_ERROR;
999 gdbpy_ref result (PyObject_CallFunctionObjArgs (hook.get (),
1000 current_prompt.get (),
1004 gdbpy_print_stack ();
1005 return EXT_LANG_RC_ERROR;
1008 /* Return type should be None, or a String. If it is None,
1009 fall through, we will not set a prompt. If it is a
1010 string, set PROMPT. Anything else, set an exception. */
1011 if (result != Py_None && ! PyString_Check (result.get ()))
1013 PyErr_Format (PyExc_RuntimeError,
1014 _("Return from prompt_hook must " \
1015 "be either a Python string, or None"));
1016 gdbpy_print_stack ();
1017 return EXT_LANG_RC_ERROR;
1020 if (result != Py_None)
1022 gdb::unique_xmalloc_ptr<char>
1023 prompt (python_string_to_host_string (result.get ()));
1027 gdbpy_print_stack ();
1028 return EXT_LANG_RC_ERROR;
1031 set_prompt (prompt.get ());
1032 return EXT_LANG_RC_OK;
1037 return EXT_LANG_RC_NOP;
1044 /* A python function to write a single string using gdb's filtered
1045 output stream . The optional keyword STREAM can be used to write
1046 to a particular stream. The default stream is to gdb_stdout. */
1049 gdbpy_write (PyObject *self, PyObject *args, PyObject *kw)
1052 static char *keywords[] = {"text", "stream", NULL };
1053 int stream_type = 0;
1055 if (! PyArg_ParseTupleAndKeywords (args, kw, "s|i", keywords, &arg,
1061 switch (stream_type)
1065 fprintf_filtered (gdb_stderr, "%s", arg);
1070 fprintf_filtered (gdb_stdlog, "%s", arg);
1074 fprintf_filtered (gdb_stdout, "%s", arg);
1077 CATCH (except, RETURN_MASK_ALL)
1079 GDB_PY_HANDLE_EXCEPTION (except);
1086 /* A python function to flush a gdb stream. The optional keyword
1087 STREAM can be used to flush a particular stream. The default stream
1091 gdbpy_flush (PyObject *self, PyObject *args, PyObject *kw)
1093 static char *keywords[] = {"stream", NULL };
1094 int stream_type = 0;
1096 if (! PyArg_ParseTupleAndKeywords (args, kw, "|i", keywords,
1100 switch (stream_type)
1104 gdb_flush (gdb_stderr);
1109 gdb_flush (gdb_stdlog);
1113 gdb_flush (gdb_stdout);
1119 /* Return non-zero if print-stack is not "none". */
1122 gdbpy_print_python_errors_p (void)
1124 return gdbpy_should_print_stack != python_excp_none;
1127 /* Print a python exception trace, print just a message, or print
1128 nothing and clear the python exception, depending on
1129 gdbpy_should_print_stack. Only call this if a python exception is
1132 gdbpy_print_stack (void)
1135 /* Print "none", just clear exception. */
1136 if (gdbpy_should_print_stack == python_excp_none)
1140 /* Print "full" message and backtrace. */
1141 else if (gdbpy_should_print_stack == python_excp_full)
1144 /* PyErr_Print doesn't necessarily end output with a newline.
1145 This works because Python's stdout/stderr is fed through
1151 CATCH (except, RETURN_MASK_ALL)
1156 /* Print "message", just error print message. */
1159 PyObject *ptype, *pvalue, *ptraceback;
1161 PyErr_Fetch (&ptype, &pvalue, &ptraceback);
1163 /* Fetch the error message contained within ptype, pvalue. */
1164 gdb::unique_xmalloc_ptr<char>
1165 msg (gdbpy_exception_to_string (ptype, pvalue));
1166 gdb::unique_xmalloc_ptr<char> type (gdbpy_obj_to_string (ptype));
1172 /* An error occurred computing the string representation of the
1174 fprintf_filtered (gdb_stderr,
1175 _("Error occurred computing Python error" \
1179 fprintf_filtered (gdb_stderr, "Python Exception %s %s: \n",
1180 type.get (), msg.get ());
1182 CATCH (except, RETURN_MASK_ALL)
1188 Py_XDECREF (pvalue);
1189 Py_XDECREF (ptraceback);
1195 /* Return the current Progspace.
1196 There always is one. */
1199 gdbpy_get_current_progspace (PyObject *unused1, PyObject *unused2)
1203 result = pspace_to_pspace_object (current_program_space);
1209 /* Return a sequence holding all the Progspaces. */
1212 gdbpy_progspaces (PyObject *unused1, PyObject *unused2)
1214 struct program_space *ps;
1216 gdbpy_ref list (PyList_New (0));
1222 PyObject *item = pspace_to_pspace_object (ps);
1224 if (!item || PyList_Append (list.get (), item) == -1)
1228 return list.release ();
1233 /* The "current" objfile. This is set when gdb detects that a new
1234 objfile has been loaded. It is only set for the duration of a call to
1235 gdbpy_source_objfile_script and gdbpy_execute_objfile_script; it is NULL
1237 static struct objfile *gdbpy_current_objfile;
1239 /* Set the current objfile to OBJFILE and then read FILE named FILENAME
1240 as Python code. This does not throw any errors. If an exception
1241 occurs python will print the traceback and clear the error indicator.
1242 This is the extension_language_script_ops.objfile_script_sourcer
1246 gdbpy_source_objfile_script (const struct extension_language_defn *extlang,
1247 struct objfile *objfile, FILE *file,
1248 const char *filename)
1250 if (!gdb_python_initialized)
1253 gdbpy_enter enter_py (get_objfile_arch (objfile), current_language);
1254 gdbpy_current_objfile = objfile;
1256 python_run_simple_file (file, filename);
1258 gdbpy_current_objfile = NULL;
1261 /* Set the current objfile to OBJFILE and then execute SCRIPT
1262 as Python code. This does not throw any errors. If an exception
1263 occurs python will print the traceback and clear the error indicator.
1264 This is the extension_language_script_ops.objfile_script_executor
1268 gdbpy_execute_objfile_script (const struct extension_language_defn *extlang,
1269 struct objfile *objfile, const char *name,
1272 if (!gdb_python_initialized)
1275 gdbpy_enter enter_py (get_objfile_arch (objfile), current_language);
1276 gdbpy_current_objfile = objfile;
1278 PyRun_SimpleString (script);
1280 gdbpy_current_objfile = NULL;
1283 /* Return the current Objfile, or None if there isn't one. */
1286 gdbpy_get_current_objfile (PyObject *unused1, PyObject *unused2)
1290 if (! gdbpy_current_objfile)
1293 result = objfile_to_objfile_object (gdbpy_current_objfile);
1299 /* Return a sequence holding all the Objfiles. */
1302 gdbpy_objfiles (PyObject *unused1, PyObject *unused2)
1304 struct objfile *objf;
1306 gdbpy_ref list (PyList_New (0));
1312 PyObject *item = objfile_to_objfile_object (objf);
1314 if (!item || PyList_Append (list.get (), item) == -1)
1318 return list.release ();
1321 /* Compute the list of active python type printers and store them in
1322 EXT_PRINTERS->py_type_printers. The product of this function is used by
1323 gdbpy_apply_type_printers, and freed by gdbpy_free_type_printers.
1324 This is the extension_language_ops.start_type_printers "method". */
1327 gdbpy_start_type_printers (const struct extension_language_defn *extlang,
1328 struct ext_lang_type_printers *ext_printers)
1330 PyObject *type_module, *func = NULL, *printers_obj = NULL;
1332 if (!gdb_python_initialized)
1335 gdbpy_enter enter_py (get_current_arch (), current_language);
1337 type_module = PyImport_ImportModule ("gdb.types");
1338 if (type_module == NULL)
1340 gdbpy_print_stack ();
1344 func = PyObject_GetAttrString (type_module, "get_type_recognizers");
1347 gdbpy_print_stack ();
1351 printers_obj = PyObject_CallFunctionObjArgs (func, (char *) NULL);
1352 if (printers_obj == NULL)
1353 gdbpy_print_stack ();
1355 ext_printers->py_type_printers = printers_obj;
1358 Py_XDECREF (type_module);
1362 /* If TYPE is recognized by some type printer, store in *PRETTIED_TYPE
1363 a newly allocated string holding the type's replacement name, and return
1364 EXT_LANG_RC_OK. The caller is responsible for freeing the string.
1365 If there's a Python error return EXT_LANG_RC_ERROR.
1366 Otherwise, return EXT_LANG_RC_NOP.
1367 This is the extension_language_ops.apply_type_printers "method". */
1369 static enum ext_lang_rc
1370 gdbpy_apply_type_printers (const struct extension_language_defn *extlang,
1371 const struct ext_lang_type_printers *ext_printers,
1372 struct type *type, char **prettied_type)
1374 PyObject *type_obj, *type_module = NULL, *func = NULL;
1375 PyObject *result_obj = NULL;
1376 PyObject *printers_obj = (PyObject *) ext_printers->py_type_printers;
1377 gdb::unique_xmalloc_ptr<char> result;
1379 if (printers_obj == NULL)
1380 return EXT_LANG_RC_NOP;
1382 if (!gdb_python_initialized)
1383 return EXT_LANG_RC_NOP;
1385 gdbpy_enter enter_py (get_current_arch (), current_language);
1387 type_obj = type_to_type_object (type);
1388 if (type_obj == NULL)
1390 gdbpy_print_stack ();
1394 type_module = PyImport_ImportModule ("gdb.types");
1395 if (type_module == NULL)
1397 gdbpy_print_stack ();
1401 func = PyObject_GetAttrString (type_module, "apply_type_recognizers");
1404 gdbpy_print_stack ();
1408 result_obj = PyObject_CallFunctionObjArgs (func, printers_obj,
1409 type_obj, (char *) NULL);
1410 if (result_obj == NULL)
1412 gdbpy_print_stack ();
1416 if (result_obj != Py_None)
1418 result = python_string_to_host_string (result_obj);
1420 gdbpy_print_stack ();
1424 Py_XDECREF (type_obj);
1425 Py_XDECREF (type_module);
1427 Py_XDECREF (result_obj);
1430 *prettied_type = result.release ();
1431 return EXT_LANG_RC_OK;
1433 return EXT_LANG_RC_ERROR;
1436 /* Free the result of start_type_printers.
1437 This is the extension_language_ops.free_type_printers "method". */
1440 gdbpy_free_type_printers (const struct extension_language_defn *extlang,
1441 struct ext_lang_type_printers *ext_printers)
1443 PyObject *printers = (PyObject *) ext_printers->py_type_printers;
1445 if (printers == NULL)
1448 if (!gdb_python_initialized)
1451 gdbpy_enter enter_py (get_current_arch (), current_language);
1452 Py_DECREF (printers);
1455 #else /* HAVE_PYTHON */
1457 /* Dummy implementation of the gdb "python-interactive" and "python"
1461 python_interactive_command (char *arg, int from_tty)
1463 arg = skip_spaces (arg);
1465 error (_("Python scripting is not supported in this copy of GDB."));
1468 struct command_line *l = get_command_line (python_control, "");
1469 struct cleanup *cleanups = make_cleanup_free_command_lines (&l);
1471 execute_control_command_untraced (l);
1472 do_cleanups (cleanups);
1477 python_command (char *arg, int from_tty)
1479 python_interactive_command (arg, from_tty);
1482 #endif /* HAVE_PYTHON */
1486 /* Lists for 'set python' commands. */
1488 static struct cmd_list_element *user_set_python_list;
1489 static struct cmd_list_element *user_show_python_list;
1491 /* Function for use by 'set python' prefix command. */
1494 user_set_python (char *args, int from_tty)
1496 help_list (user_set_python_list, "set python ", all_commands,
1500 /* Function for use by 'show python' prefix command. */
1503 user_show_python (char *args, int from_tty)
1505 cmd_show_list (user_show_python_list, from_tty, "");
1508 /* Initialize the Python code. */
1512 /* This is installed as a final cleanup and cleans up the
1513 interpreter. This lets Python's 'atexit' work. */
1516 finalize_python (void *ignore)
1518 struct active_ext_lang_state *previous_active;
1520 /* We don't use ensure_python_env here because if we ever ran the
1521 cleanup, gdb would crash -- because the cleanup calls into the
1522 Python interpreter, which we are about to destroy. It seems
1523 clearer to make the needed calls explicitly here than to create a
1524 cleanup and then mysteriously discard it. */
1526 /* This is only called as a final cleanup so we can assume the active
1527 SIGINT handler is gdb's. We still need to tell it to notify Python. */
1528 previous_active = set_active_ext_lang (&extension_language_python);
1530 (void) PyGILState_Ensure ();
1531 python_gdbarch = target_gdbarch ();
1532 python_language = current_language;
1536 restore_active_ext_lang (previous_active);
1540 /* Provide a prototype to silence -Wmissing-prototypes. */
1541 extern initialize_file_ftype _initialize_python;
1544 _initialize_python (void)
1549 size_t progsize, count;
1551 wchar_t *progname_copy;
1554 add_com ("python-interactive", class_obscure,
1555 python_interactive_command,
1558 Start an interactive Python prompt.\n\
1560 To return to GDB, type the EOF character (e.g., Ctrl-D on an empty\n\
1563 Alternatively, a single-line Python command can be given as an\n\
1564 argument, and if the command is an expression, the result will be\n\
1565 printed. For example:\n\
1567 (gdb) python-interactive 2 + 3\n\
1570 #else /* HAVE_PYTHON */
1572 Start a Python interactive prompt.\n\
1574 Python scripting is not supported in this copy of GDB.\n\
1575 This command is only a placeholder.")
1576 #endif /* HAVE_PYTHON */
1578 add_com_alias ("pi", "python-interactive", class_obscure, 1);
1580 add_com ("python", class_obscure, python_command,
1583 Evaluate a Python command.\n\
1585 The command can be given as an argument, for instance:\n\
1589 If no argument is given, the following lines are read and used\n\
1590 as the Python commands. Type a line containing \"end\" to indicate\n\
1591 the end of the command.")
1592 #else /* HAVE_PYTHON */
1594 Evaluate a Python command.\n\
1596 Python scripting is not supported in this copy of GDB.\n\
1597 This command is only a placeholder.")
1598 #endif /* HAVE_PYTHON */
1600 add_com_alias ("py", "python", class_obscure, 1);
1602 /* Add set/show python print-stack. */
1603 add_prefix_cmd ("python", no_class, user_show_python,
1604 _("Prefix command for python preference settings."),
1605 &user_show_python_list, "show python ", 0,
1608 add_prefix_cmd ("python", no_class, user_set_python,
1609 _("Prefix command for python preference settings."),
1610 &user_set_python_list, "set python ", 0,
1613 add_setshow_enum_cmd ("print-stack", no_class, python_excp_enums,
1614 &gdbpy_should_print_stack, _("\
1615 Set mode for Python stack dump on error."), _("\
1616 Show the mode of Python stack printing on error."), _("\
1617 none == no stack or message will be printed.\n\
1618 full == a message and a stack will be printed.\n\
1619 message == an error message without a stack will be printed."),
1621 &user_set_python_list,
1622 &user_show_python_list);
1625 #ifdef WITH_PYTHON_PATH
1626 /* Work around problem where python gets confused about where it is,
1627 and then can't find its libraries, etc.
1628 NOTE: Python assumes the following layout:
1630 /foo/lib/pythonX.Y/...
1631 This must be done before calling Py_Initialize. */
1632 progname = concat (ldirname (python_libdir), SLASH_STRING, "bin",
1633 SLASH_STRING, "python", (char *) NULL);
1635 oldloc = xstrdup (setlocale (LC_ALL, NULL));
1636 setlocale (LC_ALL, "");
1637 progsize = strlen (progname);
1638 progname_copy = (wchar_t *) PyMem_Malloc ((progsize + 1) * sizeof (wchar_t));
1642 fprintf (stderr, "out of memory\n");
1645 count = mbstowcs (progname_copy, progname, progsize + 1);
1646 if (count == (size_t) -1)
1649 fprintf (stderr, "Could not convert python path to string\n");
1652 setlocale (LC_ALL, oldloc);
1655 /* Note that Py_SetProgramName expects the string it is passed to
1656 remain alive for the duration of the program's execution, so
1657 it is not freed after this call. */
1658 Py_SetProgramName (progname_copy);
1660 Py_SetProgramName (progname);
1665 PyEval_InitThreads ();
1668 gdb_module = PyModule_Create (&python_GdbModuleDef);
1669 /* Add _gdb module to the list of known built-in modules. */
1670 _PyImport_FixupBuiltin (gdb_module, "_gdb");
1672 gdb_module = Py_InitModule ("_gdb", python_GdbMethods);
1674 if (gdb_module == NULL)
1677 /* The casts to (char*) are for python 2.4. */
1678 if (PyModule_AddStringConstant (gdb_module, "VERSION", (char*) version) < 0
1679 || PyModule_AddStringConstant (gdb_module, "HOST_CONFIG",
1680 (char*) host_name) < 0
1681 || PyModule_AddStringConstant (gdb_module, "TARGET_CONFIG",
1682 (char*) target_name) < 0)
1685 /* Add stream constants. */
1686 if (PyModule_AddIntConstant (gdb_module, "STDOUT", 0) < 0
1687 || PyModule_AddIntConstant (gdb_module, "STDERR", 1) < 0
1688 || PyModule_AddIntConstant (gdb_module, "STDLOG", 2) < 0)
1691 gdbpy_gdb_error = PyErr_NewException ("gdb.error", PyExc_RuntimeError, NULL);
1692 if (gdbpy_gdb_error == NULL
1693 || gdb_pymodule_addobject (gdb_module, "error", gdbpy_gdb_error) < 0)
1696 gdbpy_gdb_memory_error = PyErr_NewException ("gdb.MemoryError",
1697 gdbpy_gdb_error, NULL);
1698 if (gdbpy_gdb_memory_error == NULL
1699 || gdb_pymodule_addobject (gdb_module, "MemoryError",
1700 gdbpy_gdb_memory_error) < 0)
1703 gdbpy_gdberror_exc = PyErr_NewException ("gdb.GdbError", NULL, NULL);
1704 if (gdbpy_gdberror_exc == NULL
1705 || gdb_pymodule_addobject (gdb_module, "GdbError",
1706 gdbpy_gdberror_exc) < 0)
1709 gdbpy_initialize_gdb_readline ();
1711 if (gdbpy_initialize_auto_load () < 0
1712 || gdbpy_initialize_values () < 0
1713 || gdbpy_initialize_frames () < 0
1714 || gdbpy_initialize_commands () < 0
1715 || gdbpy_initialize_symbols () < 0
1716 || gdbpy_initialize_symtabs () < 0
1717 || gdbpy_initialize_blocks () < 0
1718 || gdbpy_initialize_functions () < 0
1719 || gdbpy_initialize_parameters () < 0
1720 || gdbpy_initialize_types () < 0
1721 || gdbpy_initialize_pspace () < 0
1722 || gdbpy_initialize_objfile () < 0
1723 || gdbpy_initialize_breakpoints () < 0
1724 || gdbpy_initialize_finishbreakpoints () < 0
1725 || gdbpy_initialize_lazy_string () < 0
1726 || gdbpy_initialize_linetable () < 0
1727 || gdbpy_initialize_thread () < 0
1728 || gdbpy_initialize_inferior () < 0
1729 || gdbpy_initialize_events () < 0
1730 || gdbpy_initialize_eventregistry () < 0
1731 || gdbpy_initialize_py_events () < 0
1732 || gdbpy_initialize_event () < 0
1733 || gdbpy_initialize_stop_event () < 0
1734 || gdbpy_initialize_signal_event () < 0
1735 || gdbpy_initialize_breakpoint_event () < 0
1736 || gdbpy_initialize_continue_event () < 0
1737 || gdbpy_initialize_inferior_call_pre_event () < 0
1738 || gdbpy_initialize_inferior_call_post_event () < 0
1739 || gdbpy_initialize_register_changed_event () < 0
1740 || gdbpy_initialize_memory_changed_event () < 0
1741 || gdbpy_initialize_exited_event () < 0
1742 || gdbpy_initialize_thread_event () < 0
1743 || gdbpy_initialize_new_objfile_event () < 0
1744 || gdbpy_initialize_clear_objfiles_event () < 0
1745 || gdbpy_initialize_arch () < 0
1746 || gdbpy_initialize_xmethods () < 0
1747 || gdbpy_initialize_unwind () < 0)
1750 gdbpy_to_string_cst = PyString_FromString ("to_string");
1751 if (gdbpy_to_string_cst == NULL)
1753 gdbpy_children_cst = PyString_FromString ("children");
1754 if (gdbpy_children_cst == NULL)
1756 gdbpy_display_hint_cst = PyString_FromString ("display_hint");
1757 if (gdbpy_display_hint_cst == NULL)
1759 gdbpy_doc_cst = PyString_FromString ("__doc__");
1760 if (gdbpy_doc_cst == NULL)
1762 gdbpy_enabled_cst = PyString_FromString ("enabled");
1763 if (gdbpy_enabled_cst == NULL)
1765 gdbpy_value_cst = PyString_FromString ("value");
1766 if (gdbpy_value_cst == NULL)
1769 /* Release the GIL while gdb runs. */
1770 PyThreadState_Swap (NULL);
1771 PyEval_ReleaseLock ();
1773 make_final_cleanup (finalize_python, NULL);
1775 gdb_python_initialized = 1;
1779 gdbpy_print_stack ();
1780 /* Do not set 'gdb_python_initialized'. */
1783 #endif /* HAVE_PYTHON */
1788 /* Helper function for gdbpy_finish_initialization. This does the
1789 work and then returns false if an error has occurred and must be
1790 displayed, or true on success. */
1793 do_finish_initialization (const struct extension_language_defn *extlang)
1798 /* Add the initial data-directory to sys.path. */
1800 std::string gdb_pythondir = (std::string (gdb_datadir) + SLASH_STRING
1803 sys_path = PySys_GetObject ("path");
1805 /* If sys.path is not defined yet, define it first. */
1806 if (!(sys_path && PyList_Check (sys_path)))
1809 PySys_SetPath (L"");
1813 sys_path = PySys_GetObject ("path");
1815 if (sys_path && PyList_Check (sys_path))
1817 gdbpy_ref pythondir (PyString_FromString (gdb_pythondir.c_str ()));
1818 if (pythondir == NULL || PyList_Insert (sys_path, 0, pythondir.get ()))
1824 /* Import the gdb module to finish the initialization, and
1825 add it to __main__ for convenience. */
1826 m = PyImport_AddModule ("__main__");
1830 /* Keep the reference to gdb_python_module since it is in a global
1832 gdb_python_module = PyImport_ImportModule ("gdb");
1833 if (gdb_python_module == NULL)
1835 gdbpy_print_stack ();
1836 /* This is passed in one call to warning so that blank lines aren't
1837 inserted between each line of text. */
1839 "Could not load the Python gdb module from `%s'.\n"
1840 "Limited Python support is available from the _gdb module.\n"
1841 "Suggest passing --data-directory=/path/to/gdb/data-directory.\n"),
1842 gdb_pythondir.c_str ());
1843 /* We return "success" here as we've already emitted the
1848 return gdb_pymodule_addobject (m, "gdb", gdb_python_module) >= 0;
1851 /* Perform the remaining python initializations.
1852 These must be done after GDB is at least mostly initialized.
1853 E.g., The "info pretty-printer" command needs the "info" prefix
1855 This is the extension_language_ops.finish_initialization "method". */
1858 gdbpy_finish_initialization (const struct extension_language_defn *extlang)
1860 gdbpy_enter enter_py (get_current_arch (), current_language);
1862 if (!do_finish_initialization (extlang))
1864 gdbpy_print_stack ();
1865 warning (_("internal error: Unhandled Python exception"));
1869 /* Return non-zero if Python has successfully initialized.
1870 This is the extension_languages_ops.initialized "method". */
1873 gdbpy_initialized (const struct extension_language_defn *extlang)
1875 return gdb_python_initialized;
1878 #endif /* HAVE_PYTHON */
1884 PyMethodDef python_GdbMethods[] =
1886 { "history", gdbpy_history, METH_VARARGS,
1887 "Get a value from history" },
1888 { "execute", (PyCFunction) execute_gdb_command, METH_VARARGS | METH_KEYWORDS,
1889 "execute (command [, from_tty] [, to_string]) -> [String]\n\
1890 Evaluate command, a string, as a gdb CLI command. Optionally returns\n\
1891 a Python String containing the output of the command if to_string is\n\
1893 { "parameter", gdbpy_parameter, METH_VARARGS,
1894 "Return a gdb parameter's value" },
1896 { "breakpoints", gdbpy_breakpoints, METH_NOARGS,
1897 "Return a tuple of all breakpoint objects" },
1899 { "default_visualizer", gdbpy_default_visualizer, METH_VARARGS,
1900 "Find the default visualizer for a Value." },
1902 { "current_progspace", gdbpy_get_current_progspace, METH_NOARGS,
1903 "Return the current Progspace." },
1904 { "progspaces", gdbpy_progspaces, METH_NOARGS,
1905 "Return a sequence of all progspaces." },
1907 { "current_objfile", gdbpy_get_current_objfile, METH_NOARGS,
1908 "Return the current Objfile being loaded, or None." },
1909 { "objfiles", gdbpy_objfiles, METH_NOARGS,
1910 "Return a sequence of all loaded objfiles." },
1912 { "newest_frame", gdbpy_newest_frame, METH_NOARGS,
1913 "newest_frame () -> gdb.Frame.\n\
1914 Return the newest frame object." },
1915 { "selected_frame", gdbpy_selected_frame, METH_NOARGS,
1916 "selected_frame () -> gdb.Frame.\n\
1917 Return the selected frame object." },
1918 { "frame_stop_reason_string", gdbpy_frame_stop_reason_string, METH_VARARGS,
1919 "stop_reason_string (Integer) -> String.\n\
1920 Return a string explaining unwind stop reason." },
1922 { "lookup_type", (PyCFunction) gdbpy_lookup_type,
1923 METH_VARARGS | METH_KEYWORDS,
1924 "lookup_type (name [, block]) -> type\n\
1925 Return a Type corresponding to the given name." },
1926 { "lookup_symbol", (PyCFunction) gdbpy_lookup_symbol,
1927 METH_VARARGS | METH_KEYWORDS,
1928 "lookup_symbol (name [, block] [, domain]) -> (symbol, is_field_of_this)\n\
1929 Return a tuple with the symbol corresponding to the given name (or None) and\n\
1930 a boolean indicating if name is a field of the current implied argument\n\
1931 `this' (when the current language is object-oriented)." },
1932 { "lookup_global_symbol", (PyCFunction) gdbpy_lookup_global_symbol,
1933 METH_VARARGS | METH_KEYWORDS,
1934 "lookup_global_symbol (name [, domain]) -> symbol\n\
1935 Return the symbol corresponding to the given name (or None)." },
1937 { "lookup_objfile", (PyCFunction) gdbpy_lookup_objfile,
1938 METH_VARARGS | METH_KEYWORDS,
1939 "lookup_objfile (name, [by_build_id]) -> objfile\n\
1940 Look up the specified objfile.\n\
1941 If by_build_id is True, the objfile is looked up by using name\n\
1942 as its build id." },
1944 { "block_for_pc", gdbpy_block_for_pc, METH_VARARGS,
1945 "Return the block containing the given pc value, or None." },
1946 { "solib_name", gdbpy_solib_name, METH_VARARGS,
1947 "solib_name (Long) -> String.\n\
1948 Return the name of the shared library holding a given address, or None." },
1949 { "decode_line", gdbpy_decode_line, METH_VARARGS,
1950 "decode_line (String) -> Tuple. Decode a string argument the way\n\
1951 that 'break' or 'edit' does. Return a tuple containing two elements.\n\
1952 The first element contains any unparsed portion of the String parameter\n\
1953 (or None if the string was fully parsed). The second element contains\n\
1954 a tuple that contains all the locations that match, represented as\n\
1955 gdb.Symtab_and_line objects (or None)."},
1956 { "parse_and_eval", gdbpy_parse_and_eval, METH_VARARGS,
1957 "parse_and_eval (String) -> Value.\n\
1958 Parse String as an expression, evaluate it, and return the result as a Value."
1960 { "find_pc_line", gdbpy_find_pc_line, METH_VARARGS,
1961 "find_pc_line (pc) -> Symtab_and_line.\n\
1962 Return the gdb.Symtab_and_line object corresponding to the pc value." },
1964 { "post_event", gdbpy_post_event, METH_VARARGS,
1965 "Post an event into gdb's event loop." },
1967 { "target_charset", gdbpy_target_charset, METH_NOARGS,
1968 "target_charset () -> string.\n\
1969 Return the name of the current target charset." },
1970 { "target_wide_charset", gdbpy_target_wide_charset, METH_NOARGS,
1971 "target_wide_charset () -> string.\n\
1972 Return the name of the current target wide charset." },
1974 { "string_to_argv", gdbpy_string_to_argv, METH_VARARGS,
1975 "string_to_argv (String) -> Array.\n\
1976 Parse String and return an argv-like array.\n\
1977 Arguments are separate by spaces and may be quoted."
1979 { "write", (PyCFunction)gdbpy_write, METH_VARARGS | METH_KEYWORDS,
1980 "Write a string using gdb's filtered stream." },
1981 { "flush", (PyCFunction)gdbpy_flush, METH_VARARGS | METH_KEYWORDS,
1982 "Flush gdb's filtered stdout stream." },
1983 { "selected_thread", gdbpy_selected_thread, METH_NOARGS,
1984 "selected_thread () -> gdb.InferiorThread.\n\
1985 Return the selected thread object." },
1986 { "selected_inferior", gdbpy_selected_inferior, METH_NOARGS,
1987 "selected_inferior () -> gdb.Inferior.\n\
1988 Return the selected inferior object." },
1989 { "inferiors", gdbpy_inferiors, METH_NOARGS,
1990 "inferiors () -> (gdb.Inferior, ...).\n\
1991 Return a tuple containing all inferiors." },
1993 { "invalidate_cached_frames", gdbpy_invalidate_cached_frames, METH_NOARGS,
1994 "invalidate_cached_frames () -> None.\n\
1995 Invalidate any cached frame objects in gdb.\n\
1996 Intended for internal use only." },
1998 {NULL, NULL, 0, NULL}
2002 struct PyModuleDef python_GdbModuleDef =
2004 PyModuleDef_HEAD_INIT,
2015 #endif /* HAVE_PYTHON */