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);
245 restore_python_env (void *p)
247 gdbpy_enter *env = (gdbpy_enter *) p;
252 /* Called before entering the Python interpreter to install the
253 current language and architecture to be used for Python values.
254 Also set the active extension language for GDB so that SIGINT's
255 are directed our way, and if necessary install the right SIGINT
259 ensure_python_env (struct gdbarch *gdbarch,
260 const struct language_defn *language)
262 gdbpy_enter *env = new gdbpy_enter (gdbarch, language);
264 return make_cleanup (restore_python_env, env);
267 /* Set the quit flag. */
270 gdbpy_set_quit_flag (const struct extension_language_defn *extlang)
272 PyErr_SetInterrupt ();
275 /* Return true if the quit flag has been set, false otherwise. */
278 gdbpy_check_quit_flag (const struct extension_language_defn *extlang)
280 return PyOS_InterruptOccurred ();
283 /* Evaluate a Python command like PyRun_SimpleString, but uses
284 Py_single_input which prints the result of expressions, and does
285 not automatically print the stack on errors. */
288 eval_python_command (const char *command)
292 m = PyImport_AddModule ("__main__");
296 d = PyModule_GetDict (m);
299 v = PyRun_StringFlags (command, Py_single_input, d, d, NULL);
312 /* Implementation of the gdb "python-interactive" command. */
315 python_interactive_command (char *arg, int from_tty)
317 struct ui *ui = current_ui;
320 scoped_restore save_async = make_scoped_restore (¤t_ui->async, 0);
322 arg = skip_spaces (arg);
324 gdbpy_enter enter_py (get_current_arch (), current_language);
328 int len = strlen (arg);
329 char *script = (char *) xmalloc (len + 2);
331 strcpy (script, arg);
333 script[len + 1] = '\0';
334 err = eval_python_command (script);
339 err = PyRun_InteractiveLoop (ui->instream, "<stdin>");
345 gdbpy_print_stack ();
346 error (_("Error while executing Python code."));
350 /* A wrapper around PyRun_SimpleFile. FILE is the Python script to run
353 On Windows hosts few users would build Python themselves (this is no
354 trivial task on this platform), and thus use binaries built by
355 someone else instead. There may happen situation where the Python
356 library and GDB are using two different versions of the C runtime
357 library. Python, being built with VC, would use one version of the
358 msvcr DLL (Eg. msvcr100.dll), while MinGW uses msvcrt.dll.
359 A FILE * from one runtime does not necessarily operate correctly in
362 To work around this potential issue, we create on Windows hosts the
363 FILE object using Python routines, thus making sure that it is
364 compatible with the Python library. */
367 python_run_simple_file (FILE *file, const char *filename)
371 PyRun_SimpleFile (file, filename);
376 PyObject *python_file;
377 struct cleanup *cleanup;
379 /* Because we have a string for a filename, and are using Python to
380 open the file, we need to expand any tilde in the path first. */
381 full_path = tilde_expand (filename);
382 cleanup = make_cleanup (xfree, full_path);
383 python_file = PyFile_FromString (full_path, "r");
386 do_cleanups (cleanup);
387 gdbpy_print_stack ();
388 error (_("Error while opening file: %s"), full_path);
391 make_cleanup_py_decref (python_file);
392 PyRun_SimpleFile (PyFile_AsFile (python_file), filename);
393 do_cleanups (cleanup);
398 /* Given a command_line, return a command string suitable for passing
399 to Python. Lines in the string are separated by newlines. The
400 return value is allocated using xmalloc and the caller is
401 responsible for freeing it. */
404 compute_python_string (struct command_line *l)
406 struct command_line *iter;
411 for (iter = l; iter; iter = iter->next)
412 size += strlen (iter->line) + 1;
414 script = (char *) xmalloc (size + 1);
416 for (iter = l; iter; iter = iter->next)
418 int len = strlen (iter->line);
420 strcpy (&script[here], iter->line);
422 script[here++] = '\n';
428 /* Take a command line structure representing a 'python' command, and
429 evaluate its body using the Python interpreter. */
432 gdbpy_eval_from_control_command (const struct extension_language_defn *extlang,
433 struct command_line *cmd)
438 if (cmd->body_count != 1)
439 error (_("Invalid \"python\" block structure."));
441 gdbpy_enter enter_py (get_current_arch (), current_language);
443 script = compute_python_string (cmd->body_list[0]);
444 ret = PyRun_SimpleString (script);
447 error (_("Error while executing Python code."));
450 /* Implementation of the gdb "python" command. */
453 python_command (char *arg, int from_tty)
455 gdbpy_enter enter_py (get_current_arch (), current_language);
457 scoped_restore save_async = make_scoped_restore (¤t_ui->async, 0);
459 arg = skip_spaces (arg);
462 if (PyRun_SimpleString (arg))
463 error (_("Error while executing Python code."));
467 struct command_line *l = get_command_line (python_control, "");
468 struct cleanup *cleanup = make_cleanup_free_command_lines (&l);
470 execute_control_command_untraced (l);
471 do_cleanups (cleanup);
477 /* Transform a gdb parameters's value into a Python value. May return
478 NULL (and set a Python exception) on error. Helper function for
481 gdbpy_parameter_value (enum var_types type, void *var)
486 case var_string_noescape:
487 case var_optional_filename:
491 char *str = * (char **) var;
495 return host_string_to_python_string (str);
506 case var_auto_boolean:
508 enum auto_boolean ab = * (enum auto_boolean *) var;
510 if (ab == AUTO_BOOLEAN_TRUE)
512 else if (ab == AUTO_BOOLEAN_FALSE)
519 if ((* (int *) var) == INT_MAX)
523 return PyLong_FromLong (* (int *) var);
527 unsigned int val = * (unsigned int *) var;
531 return PyLong_FromUnsignedLong (val);
535 return PyErr_Format (PyExc_RuntimeError,
536 _("Programmer error: unhandled type."));
539 /* A Python function which returns a gdb parameter's value as a Python
543 gdbpy_parameter (PyObject *self, PyObject *args)
545 struct gdb_exception except = exception_none;
546 struct cmd_list_element *alias, *prefix, *cmd;
551 if (! PyArg_ParseTuple (args, "s", &arg))
554 newarg = concat ("show ", arg, (char *) NULL);
558 found = lookup_cmd_composition (newarg, &alias, &prefix, &cmd);
560 CATCH (ex, RETURN_MASK_ALL)
567 GDB_PY_HANDLE_EXCEPTION (except);
569 return PyErr_Format (PyExc_RuntimeError,
570 _("Could not find parameter `%s'."), arg);
573 return PyErr_Format (PyExc_RuntimeError,
574 _("`%s' is not a parameter."), arg);
575 return gdbpy_parameter_value (cmd->var_type, cmd->var);
578 /* Wrapper for target_charset. */
581 gdbpy_target_charset (PyObject *self, PyObject *args)
583 const char *cset = target_charset (python_gdbarch);
585 return PyUnicode_Decode (cset, strlen (cset), host_charset (), NULL);
588 /* Wrapper for target_wide_charset. */
591 gdbpy_target_wide_charset (PyObject *self, PyObject *args)
593 const char *cset = target_wide_charset (python_gdbarch);
595 return PyUnicode_Decode (cset, strlen (cset), host_charset (), NULL);
598 /* A Python function which evaluates a string using the gdb CLI. */
601 execute_gdb_command (PyObject *self, PyObject *args, PyObject *kw)
604 PyObject *from_tty_obj = NULL, *to_string_obj = NULL;
605 int from_tty, to_string;
606 static char *keywords[] = {"command", "from_tty", "to_string", NULL };
608 if (! PyArg_ParseTupleAndKeywords (args, kw, "s|O!O!", keywords, &arg,
609 &PyBool_Type, &from_tty_obj,
610 &PyBool_Type, &to_string_obj))
616 int cmp = PyObject_IsTrue (from_tty_obj);
625 int cmp = PyObject_IsTrue (to_string_obj);
631 std::string to_string_res;
635 /* Copy the argument text in case the command modifies it. */
636 char *copy = xstrdup (arg);
637 struct cleanup *cleanup = make_cleanup (xfree, copy);
638 struct interp *interp;
640 scoped_restore save_async = make_scoped_restore (¤t_ui->async, 0);
642 scoped_restore save_uiout = make_scoped_restore (¤t_uiout);
644 /* Use the console interpreter uiout to have the same print format
645 for console or MI. */
646 interp = interp_lookup (current_ui, "console");
647 current_uiout = interp_ui_out (interp);
649 prevent_dont_repeat ();
651 to_string_res = execute_command_to_string (copy, from_tty);
653 execute_command (copy, from_tty);
654 do_cleanups (cleanup);
656 CATCH (except, RETURN_MASK_ALL)
658 GDB_PY_HANDLE_EXCEPTION (except);
662 /* Do any commands attached to breakpoint we stopped at. */
663 bpstat_do_actions ();
666 return PyString_FromString (to_string_res.c_str ());
670 /* Implementation of gdb.solib_name (Long) -> String.
671 Returns the name of the shared library holding a given address, or None. */
674 gdbpy_solib_name (PyObject *self, PyObject *args)
680 if (!PyArg_ParseTuple (args, GDB_PY_LLU_ARG, &pc))
683 soname = solib_name_from_address (current_program_space, pc);
685 str_obj = host_string_to_python_string (soname);
695 /* A Python function which is a wrapper for decode_line_1. */
698 gdbpy_decode_line (PyObject *self, PyObject *args)
700 struct gdb_exception except = exception_none;
701 struct symtabs_and_lines sals = { NULL, 0 }; /* Initialize to
703 struct symtab_and_line sal;
705 struct cleanup *cleanups;
706 PyObject *result = NULL;
707 PyObject *return_result = NULL;
708 PyObject *unparsed = NULL;
709 struct event_location *location = NULL;
711 if (! PyArg_ParseTuple (args, "|s", &arg))
714 cleanups = make_cleanup (null_cleanup, NULL);
720 location = string_to_event_location_basic (&arg, python_language);
721 make_cleanup_delete_event_location (location);
726 if (location != NULL)
727 sals = decode_line_1 (location, 0, NULL, NULL, 0);
730 set_default_source_symtab_and_line ();
731 sal = get_current_source_symtab_and_line ();
736 CATCH (ex, RETURN_MASK_ALL)
742 if (sals.sals != NULL && sals.sals != &sal)
743 make_cleanup (xfree, sals.sals);
745 if (except.reason < 0)
747 do_cleanups (cleanups);
748 /* We know this will always throw. */
749 gdbpy_convert_exception (except);
757 result = PyTuple_New (sals.nelts);
760 for (i = 0; i < sals.nelts; ++i)
764 obj = symtab_and_line_to_sal_object (sals.sals[i]);
771 PyTuple_SetItem (result, i, obj);
780 return_result = PyTuple_New (2);
787 if (arg != NULL && strlen (arg) > 0)
789 unparsed = PyString_FromString (arg);
790 if (unparsed == NULL)
793 Py_DECREF (return_result);
794 return_result = NULL;
804 PyTuple_SetItem (return_result, 0, unparsed);
805 PyTuple_SetItem (return_result, 1, result);
808 do_cleanups (cleanups);
810 return return_result;
813 /* Parse a string and evaluate it as an expression. */
815 gdbpy_parse_and_eval (PyObject *self, PyObject *args)
817 const char *expr_str;
818 struct value *result = NULL;
820 if (!PyArg_ParseTuple (args, "s", &expr_str))
825 result = parse_and_eval (expr_str);
827 CATCH (except, RETURN_MASK_ALL)
829 GDB_PY_HANDLE_EXCEPTION (except);
833 return value_to_value_object (result);
836 /* Implementation of gdb.find_pc_line function.
837 Returns the gdb.Symtab_and_line object corresponding to a PC value. */
840 gdbpy_find_pc_line (PyObject *self, PyObject *args)
842 gdb_py_ulongest pc_llu;
843 PyObject *result = NULL; /* init for gcc -Wall */
845 if (!PyArg_ParseTuple (args, GDB_PY_LLU_ARG, &pc_llu))
850 struct symtab_and_line sal;
853 pc = (CORE_ADDR) pc_llu;
854 sal = find_pc_line (pc, 0);
855 result = symtab_and_line_to_sal_object (sal);
857 CATCH (except, RETURN_MASK_ALL)
859 GDB_PY_HANDLE_EXCEPTION (except);
866 /* Implementation of gdb.invalidate_cached_frames. */
869 gdbpy_invalidate_cached_frames (PyObject *self, PyObject *args)
871 reinit_frame_cache ();
875 /* Read a file as Python code.
876 This is the extension_language_script_ops.script_sourcer "method".
877 FILE is the file to load. FILENAME is name of the file FILE.
878 This does not throw any errors. If an exception occurs python will print
879 the traceback and clear the error indicator. */
882 gdbpy_source_script (const struct extension_language_defn *extlang,
883 FILE *file, const char *filename)
885 gdbpy_enter enter_py (get_current_arch (), current_language);
886 python_run_simple_file (file, filename);
891 /* Posting and handling events. */
893 /* A single event. */
896 /* The Python event. This is just a callable object. */
898 /* The next event. */
899 struct gdbpy_event *next;
902 /* All pending events. */
903 static struct gdbpy_event *gdbpy_event_list;
904 /* The final link of the event list. */
905 static struct gdbpy_event **gdbpy_event_list_end;
907 /* So that we can wake up the main thread even when it is blocked in
909 static struct serial_event *gdbpy_serial_event;
911 /* The file handler callback. This reads from the internal pipe, and
912 then processes the Python event queue. This will always be run in
913 the main gdb thread. */
916 gdbpy_run_events (int error, gdb_client_data client_data)
918 gdbpy_enter enter_py (get_current_arch (), current_language);
920 /* Clear the event fd. Do this before flushing the events list, so
921 that any new event post afterwards is sure to re-awake the event
923 serial_event_clear (gdbpy_serial_event);
925 while (gdbpy_event_list)
927 PyObject *call_result;
929 /* Dispatching the event might push a new element onto the event
930 loop, so we update here "atomically enough". */
931 struct gdbpy_event *item = gdbpy_event_list;
932 gdbpy_event_list = gdbpy_event_list->next;
933 if (gdbpy_event_list == NULL)
934 gdbpy_event_list_end = &gdbpy_event_list;
937 call_result = PyObject_CallObject (item->event, NULL);
938 if (call_result == NULL)
941 Py_XDECREF (call_result);
942 Py_DECREF (item->event);
947 /* Submit an event to the gdb thread. */
949 gdbpy_post_event (PyObject *self, PyObject *args)
951 struct gdbpy_event *event;
955 if (!PyArg_ParseTuple (args, "O", &func))
958 if (!PyCallable_Check (func))
960 PyErr_SetString (PyExc_RuntimeError,
961 _("Posted event is not callable"));
967 /* From here until the end of the function, we have the GIL, so we
968 can operate on our global data structures without worrying. */
969 wakeup = gdbpy_event_list == NULL;
971 event = XNEW (struct gdbpy_event);
974 *gdbpy_event_list_end = event;
975 gdbpy_event_list_end = &event->next;
977 /* Wake up gdb when needed. */
979 serial_event_set (gdbpy_serial_event);
984 /* Initialize the Python event handler. */
986 gdbpy_initialize_events (void)
988 gdbpy_event_list_end = &gdbpy_event_list;
990 gdbpy_serial_event = make_serial_event ();
991 add_file_handler (serial_event_fd (gdbpy_serial_event),
992 gdbpy_run_events, NULL);
999 /* This is the extension_language_ops.before_prompt "method". */
1001 static enum ext_lang_rc
1002 gdbpy_before_prompt_hook (const struct extension_language_defn *extlang,
1003 const char *current_gdb_prompt)
1005 if (!gdb_python_initialized)
1006 return EXT_LANG_RC_NOP;
1008 gdbpy_enter enter_py (get_current_arch (), current_language);
1010 if (gdb_python_module
1011 && PyObject_HasAttrString (gdb_python_module, "prompt_hook"))
1013 gdbpy_ref hook (PyObject_GetAttrString (gdb_python_module,
1017 gdbpy_print_stack ();
1018 return EXT_LANG_RC_ERROR;
1021 if (PyCallable_Check (hook.get ()))
1023 gdbpy_ref current_prompt (PyString_FromString (current_gdb_prompt));
1024 if (current_prompt == NULL)
1026 gdbpy_print_stack ();
1027 return EXT_LANG_RC_ERROR;
1030 gdbpy_ref result (PyObject_CallFunctionObjArgs (hook.get (),
1031 current_prompt.get (),
1035 gdbpy_print_stack ();
1036 return EXT_LANG_RC_ERROR;
1039 /* Return type should be None, or a String. If it is None,
1040 fall through, we will not set a prompt. If it is a
1041 string, set PROMPT. Anything else, set an exception. */
1042 if (result != Py_None && ! PyString_Check (result.get ()))
1044 PyErr_Format (PyExc_RuntimeError,
1045 _("Return from prompt_hook must " \
1046 "be either a Python string, or None"));
1047 gdbpy_print_stack ();
1048 return EXT_LANG_RC_ERROR;
1051 if (result != Py_None)
1053 gdb::unique_xmalloc_ptr<char>
1054 prompt (python_string_to_host_string (result.get ()));
1058 gdbpy_print_stack ();
1059 return EXT_LANG_RC_ERROR;
1062 set_prompt (prompt.get ());
1063 return EXT_LANG_RC_OK;
1068 return EXT_LANG_RC_NOP;
1075 /* A python function to write a single string using gdb's filtered
1076 output stream . The optional keyword STREAM can be used to write
1077 to a particular stream. The default stream is to gdb_stdout. */
1080 gdbpy_write (PyObject *self, PyObject *args, PyObject *kw)
1083 static char *keywords[] = {"text", "stream", NULL };
1084 int stream_type = 0;
1086 if (! PyArg_ParseTupleAndKeywords (args, kw, "s|i", keywords, &arg,
1092 switch (stream_type)
1096 fprintf_filtered (gdb_stderr, "%s", arg);
1101 fprintf_filtered (gdb_stdlog, "%s", arg);
1105 fprintf_filtered (gdb_stdout, "%s", arg);
1108 CATCH (except, RETURN_MASK_ALL)
1110 GDB_PY_HANDLE_EXCEPTION (except);
1117 /* A python function to flush a gdb stream. The optional keyword
1118 STREAM can be used to flush a particular stream. The default stream
1122 gdbpy_flush (PyObject *self, PyObject *args, PyObject *kw)
1124 static char *keywords[] = {"stream", NULL };
1125 int stream_type = 0;
1127 if (! PyArg_ParseTupleAndKeywords (args, kw, "|i", keywords,
1131 switch (stream_type)
1135 gdb_flush (gdb_stderr);
1140 gdb_flush (gdb_stdlog);
1144 gdb_flush (gdb_stdout);
1150 /* Return non-zero if print-stack is not "none". */
1153 gdbpy_print_python_errors_p (void)
1155 return gdbpy_should_print_stack != python_excp_none;
1158 /* Print a python exception trace, print just a message, or print
1159 nothing and clear the python exception, depending on
1160 gdbpy_should_print_stack. Only call this if a python exception is
1163 gdbpy_print_stack (void)
1166 /* Print "none", just clear exception. */
1167 if (gdbpy_should_print_stack == python_excp_none)
1171 /* Print "full" message and backtrace. */
1172 else if (gdbpy_should_print_stack == python_excp_full)
1175 /* PyErr_Print doesn't necessarily end output with a newline.
1176 This works because Python's stdout/stderr is fed through
1182 CATCH (except, RETURN_MASK_ALL)
1187 /* Print "message", just error print message. */
1190 PyObject *ptype, *pvalue, *ptraceback;
1192 PyErr_Fetch (&ptype, &pvalue, &ptraceback);
1194 /* Fetch the error message contained within ptype, pvalue. */
1195 gdb::unique_xmalloc_ptr<char>
1196 msg (gdbpy_exception_to_string (ptype, pvalue));
1197 gdb::unique_xmalloc_ptr<char> type (gdbpy_obj_to_string (ptype));
1203 /* An error occurred computing the string representation of the
1205 fprintf_filtered (gdb_stderr,
1206 _("Error occurred computing Python error" \
1210 fprintf_filtered (gdb_stderr, "Python Exception %s %s: \n",
1211 type.get (), msg.get ());
1213 CATCH (except, RETURN_MASK_ALL)
1219 Py_XDECREF (pvalue);
1220 Py_XDECREF (ptraceback);
1226 /* Return the current Progspace.
1227 There always is one. */
1230 gdbpy_get_current_progspace (PyObject *unused1, PyObject *unused2)
1234 result = pspace_to_pspace_object (current_program_space);
1240 /* Return a sequence holding all the Progspaces. */
1243 gdbpy_progspaces (PyObject *unused1, PyObject *unused2)
1245 struct program_space *ps;
1247 gdbpy_ref list (PyList_New (0));
1253 PyObject *item = pspace_to_pspace_object (ps);
1255 if (!item || PyList_Append (list.get (), item) == -1)
1259 return list.release ();
1264 /* The "current" objfile. This is set when gdb detects that a new
1265 objfile has been loaded. It is only set for the duration of a call to
1266 gdbpy_source_objfile_script and gdbpy_execute_objfile_script; it is NULL
1268 static struct objfile *gdbpy_current_objfile;
1270 /* Set the current objfile to OBJFILE and then read FILE named FILENAME
1271 as Python code. This does not throw any errors. If an exception
1272 occurs python will print the traceback and clear the error indicator.
1273 This is the extension_language_script_ops.objfile_script_sourcer
1277 gdbpy_source_objfile_script (const struct extension_language_defn *extlang,
1278 struct objfile *objfile, FILE *file,
1279 const char *filename)
1281 if (!gdb_python_initialized)
1284 gdbpy_enter enter_py (get_objfile_arch (objfile), current_language);
1285 gdbpy_current_objfile = objfile;
1287 python_run_simple_file (file, filename);
1289 gdbpy_current_objfile = NULL;
1292 /* Set the current objfile to OBJFILE and then execute SCRIPT
1293 as Python code. This does not throw any errors. If an exception
1294 occurs python will print the traceback and clear the error indicator.
1295 This is the extension_language_script_ops.objfile_script_executor
1299 gdbpy_execute_objfile_script (const struct extension_language_defn *extlang,
1300 struct objfile *objfile, const char *name,
1303 if (!gdb_python_initialized)
1306 gdbpy_enter enter_py (get_objfile_arch (objfile), current_language);
1307 gdbpy_current_objfile = objfile;
1309 PyRun_SimpleString (script);
1311 gdbpy_current_objfile = NULL;
1314 /* Return the current Objfile, or None if there isn't one. */
1317 gdbpy_get_current_objfile (PyObject *unused1, PyObject *unused2)
1321 if (! gdbpy_current_objfile)
1324 result = objfile_to_objfile_object (gdbpy_current_objfile);
1330 /* Return a sequence holding all the Objfiles. */
1333 gdbpy_objfiles (PyObject *unused1, PyObject *unused2)
1335 struct objfile *objf;
1337 gdbpy_ref list (PyList_New (0));
1343 PyObject *item = objfile_to_objfile_object (objf);
1345 if (!item || PyList_Append (list.get (), item) == -1)
1349 return list.release ();
1352 /* Compute the list of active python type printers and store them in
1353 EXT_PRINTERS->py_type_printers. The product of this function is used by
1354 gdbpy_apply_type_printers, and freed by gdbpy_free_type_printers.
1355 This is the extension_language_ops.start_type_printers "method". */
1358 gdbpy_start_type_printers (const struct extension_language_defn *extlang,
1359 struct ext_lang_type_printers *ext_printers)
1361 PyObject *type_module, *func = NULL, *printers_obj = NULL;
1363 if (!gdb_python_initialized)
1366 gdbpy_enter enter_py (get_current_arch (), current_language);
1368 type_module = PyImport_ImportModule ("gdb.types");
1369 if (type_module == NULL)
1371 gdbpy_print_stack ();
1375 func = PyObject_GetAttrString (type_module, "get_type_recognizers");
1378 gdbpy_print_stack ();
1382 printers_obj = PyObject_CallFunctionObjArgs (func, (char *) NULL);
1383 if (printers_obj == NULL)
1384 gdbpy_print_stack ();
1386 ext_printers->py_type_printers = printers_obj;
1389 Py_XDECREF (type_module);
1393 /* If TYPE is recognized by some type printer, store in *PRETTIED_TYPE
1394 a newly allocated string holding the type's replacement name, and return
1395 EXT_LANG_RC_OK. The caller is responsible for freeing the string.
1396 If there's a Python error return EXT_LANG_RC_ERROR.
1397 Otherwise, return EXT_LANG_RC_NOP.
1398 This is the extension_language_ops.apply_type_printers "method". */
1400 static enum ext_lang_rc
1401 gdbpy_apply_type_printers (const struct extension_language_defn *extlang,
1402 const struct ext_lang_type_printers *ext_printers,
1403 struct type *type, char **prettied_type)
1405 PyObject *type_obj, *type_module = NULL, *func = NULL;
1406 PyObject *result_obj = NULL;
1407 PyObject *printers_obj = (PyObject *) ext_printers->py_type_printers;
1408 gdb::unique_xmalloc_ptr<char> result;
1410 if (printers_obj == NULL)
1411 return EXT_LANG_RC_NOP;
1413 if (!gdb_python_initialized)
1414 return EXT_LANG_RC_NOP;
1416 gdbpy_enter enter_py (get_current_arch (), current_language);
1418 type_obj = type_to_type_object (type);
1419 if (type_obj == NULL)
1421 gdbpy_print_stack ();
1425 type_module = PyImport_ImportModule ("gdb.types");
1426 if (type_module == NULL)
1428 gdbpy_print_stack ();
1432 func = PyObject_GetAttrString (type_module, "apply_type_recognizers");
1435 gdbpy_print_stack ();
1439 result_obj = PyObject_CallFunctionObjArgs (func, printers_obj,
1440 type_obj, (char *) NULL);
1441 if (result_obj == NULL)
1443 gdbpy_print_stack ();
1447 if (result_obj != Py_None)
1449 result = python_string_to_host_string (result_obj);
1451 gdbpy_print_stack ();
1455 Py_XDECREF (type_obj);
1456 Py_XDECREF (type_module);
1458 Py_XDECREF (result_obj);
1461 *prettied_type = result.release ();
1462 return EXT_LANG_RC_OK;
1464 return EXT_LANG_RC_ERROR;
1467 /* Free the result of start_type_printers.
1468 This is the extension_language_ops.free_type_printers "method". */
1471 gdbpy_free_type_printers (const struct extension_language_defn *extlang,
1472 struct ext_lang_type_printers *ext_printers)
1474 PyObject *printers = (PyObject *) ext_printers->py_type_printers;
1476 if (printers == NULL)
1479 if (!gdb_python_initialized)
1482 gdbpy_enter enter_py (get_current_arch (), current_language);
1483 Py_DECREF (printers);
1486 #else /* HAVE_PYTHON */
1488 /* Dummy implementation of the gdb "python-interactive" and "python"
1492 python_interactive_command (char *arg, int from_tty)
1494 arg = skip_spaces (arg);
1496 error (_("Python scripting is not supported in this copy of GDB."));
1499 struct command_line *l = get_command_line (python_control, "");
1500 struct cleanup *cleanups = make_cleanup_free_command_lines (&l);
1502 execute_control_command_untraced (l);
1503 do_cleanups (cleanups);
1508 python_command (char *arg, int from_tty)
1510 python_interactive_command (arg, from_tty);
1513 #endif /* HAVE_PYTHON */
1517 /* Lists for 'set python' commands. */
1519 static struct cmd_list_element *user_set_python_list;
1520 static struct cmd_list_element *user_show_python_list;
1522 /* Function for use by 'set python' prefix command. */
1525 user_set_python (char *args, int from_tty)
1527 help_list (user_set_python_list, "set python ", all_commands,
1531 /* Function for use by 'show python' prefix command. */
1534 user_show_python (char *args, int from_tty)
1536 cmd_show_list (user_show_python_list, from_tty, "");
1539 /* Initialize the Python code. */
1543 /* This is installed as a final cleanup and cleans up the
1544 interpreter. This lets Python's 'atexit' work. */
1547 finalize_python (void *ignore)
1549 struct active_ext_lang_state *previous_active;
1551 /* We don't use ensure_python_env here because if we ever ran the
1552 cleanup, gdb would crash -- because the cleanup calls into the
1553 Python interpreter, which we are about to destroy. It seems
1554 clearer to make the needed calls explicitly here than to create a
1555 cleanup and then mysteriously discard it. */
1557 /* This is only called as a final cleanup so we can assume the active
1558 SIGINT handler is gdb's. We still need to tell it to notify Python. */
1559 previous_active = set_active_ext_lang (&extension_language_python);
1561 (void) PyGILState_Ensure ();
1562 python_gdbarch = target_gdbarch ();
1563 python_language = current_language;
1567 restore_active_ext_lang (previous_active);
1571 /* Provide a prototype to silence -Wmissing-prototypes. */
1572 extern initialize_file_ftype _initialize_python;
1575 _initialize_python (void)
1580 size_t progsize, count;
1582 wchar_t *progname_copy;
1585 add_com ("python-interactive", class_obscure,
1586 python_interactive_command,
1589 Start an interactive Python prompt.\n\
1591 To return to GDB, type the EOF character (e.g., Ctrl-D on an empty\n\
1594 Alternatively, a single-line Python command can be given as an\n\
1595 argument, and if the command is an expression, the result will be\n\
1596 printed. For example:\n\
1598 (gdb) python-interactive 2 + 3\n\
1601 #else /* HAVE_PYTHON */
1603 Start a Python interactive prompt.\n\
1605 Python scripting is not supported in this copy of GDB.\n\
1606 This command is only a placeholder.")
1607 #endif /* HAVE_PYTHON */
1609 add_com_alias ("pi", "python-interactive", class_obscure, 1);
1611 add_com ("python", class_obscure, python_command,
1614 Evaluate a Python command.\n\
1616 The command can be given as an argument, for instance:\n\
1620 If no argument is given, the following lines are read and used\n\
1621 as the Python commands. Type a line containing \"end\" to indicate\n\
1622 the end of the command.")
1623 #else /* HAVE_PYTHON */
1625 Evaluate a Python command.\n\
1627 Python scripting is not supported in this copy of GDB.\n\
1628 This command is only a placeholder.")
1629 #endif /* HAVE_PYTHON */
1631 add_com_alias ("py", "python", class_obscure, 1);
1633 /* Add set/show python print-stack. */
1634 add_prefix_cmd ("python", no_class, user_show_python,
1635 _("Prefix command for python preference settings."),
1636 &user_show_python_list, "show python ", 0,
1639 add_prefix_cmd ("python", no_class, user_set_python,
1640 _("Prefix command for python preference settings."),
1641 &user_set_python_list, "set python ", 0,
1644 add_setshow_enum_cmd ("print-stack", no_class, python_excp_enums,
1645 &gdbpy_should_print_stack, _("\
1646 Set mode for Python stack dump on error."), _("\
1647 Show the mode of Python stack printing on error."), _("\
1648 none == no stack or message will be printed.\n\
1649 full == a message and a stack will be printed.\n\
1650 message == an error message without a stack will be printed."),
1652 &user_set_python_list,
1653 &user_show_python_list);
1656 #ifdef WITH_PYTHON_PATH
1657 /* Work around problem where python gets confused about where it is,
1658 and then can't find its libraries, etc.
1659 NOTE: Python assumes the following layout:
1661 /foo/lib/pythonX.Y/...
1662 This must be done before calling Py_Initialize. */
1663 progname = concat (ldirname (python_libdir), SLASH_STRING, "bin",
1664 SLASH_STRING, "python", (char *) NULL);
1666 oldloc = xstrdup (setlocale (LC_ALL, NULL));
1667 setlocale (LC_ALL, "");
1668 progsize = strlen (progname);
1669 progname_copy = (wchar_t *) PyMem_Malloc ((progsize + 1) * sizeof (wchar_t));
1673 fprintf (stderr, "out of memory\n");
1676 count = mbstowcs (progname_copy, progname, progsize + 1);
1677 if (count == (size_t) -1)
1680 fprintf (stderr, "Could not convert python path to string\n");
1683 setlocale (LC_ALL, oldloc);
1686 /* Note that Py_SetProgramName expects the string it is passed to
1687 remain alive for the duration of the program's execution, so
1688 it is not freed after this call. */
1689 Py_SetProgramName (progname_copy);
1691 Py_SetProgramName (progname);
1696 PyEval_InitThreads ();
1699 gdb_module = PyModule_Create (&python_GdbModuleDef);
1700 /* Add _gdb module to the list of known built-in modules. */
1701 _PyImport_FixupBuiltin (gdb_module, "_gdb");
1703 gdb_module = Py_InitModule ("_gdb", python_GdbMethods);
1705 if (gdb_module == NULL)
1708 /* The casts to (char*) are for python 2.4. */
1709 if (PyModule_AddStringConstant (gdb_module, "VERSION", (char*) version) < 0
1710 || PyModule_AddStringConstant (gdb_module, "HOST_CONFIG",
1711 (char*) host_name) < 0
1712 || PyModule_AddStringConstant (gdb_module, "TARGET_CONFIG",
1713 (char*) target_name) < 0)
1716 /* Add stream constants. */
1717 if (PyModule_AddIntConstant (gdb_module, "STDOUT", 0) < 0
1718 || PyModule_AddIntConstant (gdb_module, "STDERR", 1) < 0
1719 || PyModule_AddIntConstant (gdb_module, "STDLOG", 2) < 0)
1722 gdbpy_gdb_error = PyErr_NewException ("gdb.error", PyExc_RuntimeError, NULL);
1723 if (gdbpy_gdb_error == NULL
1724 || gdb_pymodule_addobject (gdb_module, "error", gdbpy_gdb_error) < 0)
1727 gdbpy_gdb_memory_error = PyErr_NewException ("gdb.MemoryError",
1728 gdbpy_gdb_error, NULL);
1729 if (gdbpy_gdb_memory_error == NULL
1730 || gdb_pymodule_addobject (gdb_module, "MemoryError",
1731 gdbpy_gdb_memory_error) < 0)
1734 gdbpy_gdberror_exc = PyErr_NewException ("gdb.GdbError", NULL, NULL);
1735 if (gdbpy_gdberror_exc == NULL
1736 || gdb_pymodule_addobject (gdb_module, "GdbError",
1737 gdbpy_gdberror_exc) < 0)
1740 gdbpy_initialize_gdb_readline ();
1742 if (gdbpy_initialize_auto_load () < 0
1743 || gdbpy_initialize_values () < 0
1744 || gdbpy_initialize_frames () < 0
1745 || gdbpy_initialize_commands () < 0
1746 || gdbpy_initialize_symbols () < 0
1747 || gdbpy_initialize_symtabs () < 0
1748 || gdbpy_initialize_blocks () < 0
1749 || gdbpy_initialize_functions () < 0
1750 || gdbpy_initialize_parameters () < 0
1751 || gdbpy_initialize_types () < 0
1752 || gdbpy_initialize_pspace () < 0
1753 || gdbpy_initialize_objfile () < 0
1754 || gdbpy_initialize_breakpoints () < 0
1755 || gdbpy_initialize_finishbreakpoints () < 0
1756 || gdbpy_initialize_lazy_string () < 0
1757 || gdbpy_initialize_linetable () < 0
1758 || gdbpy_initialize_thread () < 0
1759 || gdbpy_initialize_inferior () < 0
1760 || gdbpy_initialize_events () < 0
1761 || gdbpy_initialize_eventregistry () < 0
1762 || gdbpy_initialize_py_events () < 0
1763 || gdbpy_initialize_event () < 0
1764 || gdbpy_initialize_stop_event () < 0
1765 || gdbpy_initialize_signal_event () < 0
1766 || gdbpy_initialize_breakpoint_event () < 0
1767 || gdbpy_initialize_continue_event () < 0
1768 || gdbpy_initialize_inferior_call_pre_event () < 0
1769 || gdbpy_initialize_inferior_call_post_event () < 0
1770 || gdbpy_initialize_register_changed_event () < 0
1771 || gdbpy_initialize_memory_changed_event () < 0
1772 || gdbpy_initialize_exited_event () < 0
1773 || gdbpy_initialize_thread_event () < 0
1774 || gdbpy_initialize_new_objfile_event () < 0
1775 || gdbpy_initialize_clear_objfiles_event () < 0
1776 || gdbpy_initialize_arch () < 0
1777 || gdbpy_initialize_xmethods () < 0
1778 || gdbpy_initialize_unwind () < 0)
1781 gdbpy_to_string_cst = PyString_FromString ("to_string");
1782 if (gdbpy_to_string_cst == NULL)
1784 gdbpy_children_cst = PyString_FromString ("children");
1785 if (gdbpy_children_cst == NULL)
1787 gdbpy_display_hint_cst = PyString_FromString ("display_hint");
1788 if (gdbpy_display_hint_cst == NULL)
1790 gdbpy_doc_cst = PyString_FromString ("__doc__");
1791 if (gdbpy_doc_cst == NULL)
1793 gdbpy_enabled_cst = PyString_FromString ("enabled");
1794 if (gdbpy_enabled_cst == NULL)
1796 gdbpy_value_cst = PyString_FromString ("value");
1797 if (gdbpy_value_cst == NULL)
1800 /* Release the GIL while gdb runs. */
1801 PyThreadState_Swap (NULL);
1802 PyEval_ReleaseLock ();
1804 make_final_cleanup (finalize_python, NULL);
1806 gdb_python_initialized = 1;
1810 gdbpy_print_stack ();
1811 /* Do not set 'gdb_python_initialized'. */
1814 #endif /* HAVE_PYTHON */
1819 /* Helper function for gdbpy_finish_initialization. This does the
1820 work and then returns false if an error has occurred and must be
1821 displayed, or true on success. */
1824 do_finish_initialization (const struct extension_language_defn *extlang)
1829 /* Add the initial data-directory to sys.path. */
1831 std::string gdb_pythondir = (std::string (gdb_datadir) + SLASH_STRING
1834 sys_path = PySys_GetObject ("path");
1836 /* If sys.path is not defined yet, define it first. */
1837 if (!(sys_path && PyList_Check (sys_path)))
1840 PySys_SetPath (L"");
1844 sys_path = PySys_GetObject ("path");
1846 if (sys_path && PyList_Check (sys_path))
1848 gdbpy_ref pythondir (PyString_FromString (gdb_pythondir.c_str ()));
1849 if (pythondir == NULL || PyList_Insert (sys_path, 0, pythondir.get ()))
1855 /* Import the gdb module to finish the initialization, and
1856 add it to __main__ for convenience. */
1857 m = PyImport_AddModule ("__main__");
1861 /* Keep the reference to gdb_python_module since it is in a global
1863 gdb_python_module = PyImport_ImportModule ("gdb");
1864 if (gdb_python_module == NULL)
1866 gdbpy_print_stack ();
1867 /* This is passed in one call to warning so that blank lines aren't
1868 inserted between each line of text. */
1870 "Could not load the Python gdb module from `%s'.\n"
1871 "Limited Python support is available from the _gdb module.\n"
1872 "Suggest passing --data-directory=/path/to/gdb/data-directory.\n"),
1873 gdb_pythondir.c_str ());
1874 /* We return "success" here as we've already emitted the
1879 return gdb_pymodule_addobject (m, "gdb", gdb_python_module) >= 0;
1882 /* Perform the remaining python initializations.
1883 These must be done after GDB is at least mostly initialized.
1884 E.g., The "info pretty-printer" command needs the "info" prefix
1886 This is the extension_language_ops.finish_initialization "method". */
1889 gdbpy_finish_initialization (const struct extension_language_defn *extlang)
1891 gdbpy_enter enter_py (get_current_arch (), current_language);
1893 if (!do_finish_initialization (extlang))
1895 gdbpy_print_stack ();
1896 warning (_("internal error: Unhandled Python exception"));
1900 /* Return non-zero if Python has successfully initialized.
1901 This is the extension_languages_ops.initialized "method". */
1904 gdbpy_initialized (const struct extension_language_defn *extlang)
1906 return gdb_python_initialized;
1909 #endif /* HAVE_PYTHON */
1915 PyMethodDef python_GdbMethods[] =
1917 { "history", gdbpy_history, METH_VARARGS,
1918 "Get a value from history" },
1919 { "execute", (PyCFunction) execute_gdb_command, METH_VARARGS | METH_KEYWORDS,
1920 "execute (command [, from_tty] [, to_string]) -> [String]\n\
1921 Evaluate command, a string, as a gdb CLI command. Optionally returns\n\
1922 a Python String containing the output of the command if to_string is\n\
1924 { "parameter", gdbpy_parameter, METH_VARARGS,
1925 "Return a gdb parameter's value" },
1927 { "breakpoints", gdbpy_breakpoints, METH_NOARGS,
1928 "Return a tuple of all breakpoint objects" },
1930 { "default_visualizer", gdbpy_default_visualizer, METH_VARARGS,
1931 "Find the default visualizer for a Value." },
1933 { "current_progspace", gdbpy_get_current_progspace, METH_NOARGS,
1934 "Return the current Progspace." },
1935 { "progspaces", gdbpy_progspaces, METH_NOARGS,
1936 "Return a sequence of all progspaces." },
1938 { "current_objfile", gdbpy_get_current_objfile, METH_NOARGS,
1939 "Return the current Objfile being loaded, or None." },
1940 { "objfiles", gdbpy_objfiles, METH_NOARGS,
1941 "Return a sequence of all loaded objfiles." },
1943 { "newest_frame", gdbpy_newest_frame, METH_NOARGS,
1944 "newest_frame () -> gdb.Frame.\n\
1945 Return the newest frame object." },
1946 { "selected_frame", gdbpy_selected_frame, METH_NOARGS,
1947 "selected_frame () -> gdb.Frame.\n\
1948 Return the selected frame object." },
1949 { "frame_stop_reason_string", gdbpy_frame_stop_reason_string, METH_VARARGS,
1950 "stop_reason_string (Integer) -> String.\n\
1951 Return a string explaining unwind stop reason." },
1953 { "lookup_type", (PyCFunction) gdbpy_lookup_type,
1954 METH_VARARGS | METH_KEYWORDS,
1955 "lookup_type (name [, block]) -> type\n\
1956 Return a Type corresponding to the given name." },
1957 { "lookup_symbol", (PyCFunction) gdbpy_lookup_symbol,
1958 METH_VARARGS | METH_KEYWORDS,
1959 "lookup_symbol (name [, block] [, domain]) -> (symbol, is_field_of_this)\n\
1960 Return a tuple with the symbol corresponding to the given name (or None) and\n\
1961 a boolean indicating if name is a field of the current implied argument\n\
1962 `this' (when the current language is object-oriented)." },
1963 { "lookup_global_symbol", (PyCFunction) gdbpy_lookup_global_symbol,
1964 METH_VARARGS | METH_KEYWORDS,
1965 "lookup_global_symbol (name [, domain]) -> symbol\n\
1966 Return the symbol corresponding to the given name (or None)." },
1968 { "lookup_objfile", (PyCFunction) gdbpy_lookup_objfile,
1969 METH_VARARGS | METH_KEYWORDS,
1970 "lookup_objfile (name, [by_build_id]) -> objfile\n\
1971 Look up the specified objfile.\n\
1972 If by_build_id is True, the objfile is looked up by using name\n\
1973 as its build id." },
1975 { "block_for_pc", gdbpy_block_for_pc, METH_VARARGS,
1976 "Return the block containing the given pc value, or None." },
1977 { "solib_name", gdbpy_solib_name, METH_VARARGS,
1978 "solib_name (Long) -> String.\n\
1979 Return the name of the shared library holding a given address, or None." },
1980 { "decode_line", gdbpy_decode_line, METH_VARARGS,
1981 "decode_line (String) -> Tuple. Decode a string argument the way\n\
1982 that 'break' or 'edit' does. Return a tuple containing two elements.\n\
1983 The first element contains any unparsed portion of the String parameter\n\
1984 (or None if the string was fully parsed). The second element contains\n\
1985 a tuple that contains all the locations that match, represented as\n\
1986 gdb.Symtab_and_line objects (or None)."},
1987 { "parse_and_eval", gdbpy_parse_and_eval, METH_VARARGS,
1988 "parse_and_eval (String) -> Value.\n\
1989 Parse String as an expression, evaluate it, and return the result as a Value."
1991 { "find_pc_line", gdbpy_find_pc_line, METH_VARARGS,
1992 "find_pc_line (pc) -> Symtab_and_line.\n\
1993 Return the gdb.Symtab_and_line object corresponding to the pc value." },
1995 { "post_event", gdbpy_post_event, METH_VARARGS,
1996 "Post an event into gdb's event loop." },
1998 { "target_charset", gdbpy_target_charset, METH_NOARGS,
1999 "target_charset () -> string.\n\
2000 Return the name of the current target charset." },
2001 { "target_wide_charset", gdbpy_target_wide_charset, METH_NOARGS,
2002 "target_wide_charset () -> string.\n\
2003 Return the name of the current target wide charset." },
2005 { "string_to_argv", gdbpy_string_to_argv, METH_VARARGS,
2006 "string_to_argv (String) -> Array.\n\
2007 Parse String and return an argv-like array.\n\
2008 Arguments are separate by spaces and may be quoted."
2010 { "write", (PyCFunction)gdbpy_write, METH_VARARGS | METH_KEYWORDS,
2011 "Write a string using gdb's filtered stream." },
2012 { "flush", (PyCFunction)gdbpy_flush, METH_VARARGS | METH_KEYWORDS,
2013 "Flush gdb's filtered stdout stream." },
2014 { "selected_thread", gdbpy_selected_thread, METH_NOARGS,
2015 "selected_thread () -> gdb.InferiorThread.\n\
2016 Return the selected thread object." },
2017 { "selected_inferior", gdbpy_selected_inferior, METH_NOARGS,
2018 "selected_inferior () -> gdb.Inferior.\n\
2019 Return the selected inferior object." },
2020 { "inferiors", gdbpy_inferiors, METH_NOARGS,
2021 "inferiors () -> (gdb.Inferior, ...).\n\
2022 Return a tuple containing all inferiors." },
2024 { "invalidate_cached_frames", gdbpy_invalidate_cached_frames, METH_NOARGS,
2025 "invalidate_cached_frames () -> None.\n\
2026 Invalidate any cached frame objects in gdb.\n\
2027 Intended for internal use only." },
2029 {NULL, NULL, 0, NULL}
2033 struct PyModuleDef python_GdbModuleDef =
2035 PyModuleDef_HEAD_INIT,
2046 #endif /* HAVE_PYTHON */