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 ensure_python_env (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)
437 struct cleanup *cleanup;
439 if (cmd->body_count != 1)
440 error (_("Invalid \"python\" block structure."));
442 cleanup = ensure_python_env (get_current_arch (), current_language);
444 script = compute_python_string (cmd->body_list[0]);
445 ret = PyRun_SimpleString (script);
448 error (_("Error while executing Python code."));
450 do_cleanups (cleanup);
453 /* Implementation of the gdb "python" command. */
456 python_command (char *arg, int from_tty)
458 struct cleanup *cleanup;
460 cleanup = ensure_python_env (get_current_arch (), current_language);
462 scoped_restore save_async = make_scoped_restore (¤t_ui->async, 0);
464 arg = skip_spaces (arg);
467 if (PyRun_SimpleString (arg))
468 error (_("Error while executing Python code."));
472 struct command_line *l = get_command_line (python_control, "");
474 make_cleanup_free_command_lines (&l);
475 execute_control_command_untraced (l);
478 do_cleanups (cleanup);
483 /* Transform a gdb parameters's value into a Python value. May return
484 NULL (and set a Python exception) on error. Helper function for
487 gdbpy_parameter_value (enum var_types type, void *var)
492 case var_string_noescape:
493 case var_optional_filename:
497 char *str = * (char **) var;
501 return host_string_to_python_string (str);
512 case var_auto_boolean:
514 enum auto_boolean ab = * (enum auto_boolean *) var;
516 if (ab == AUTO_BOOLEAN_TRUE)
518 else if (ab == AUTO_BOOLEAN_FALSE)
525 if ((* (int *) var) == INT_MAX)
529 return PyLong_FromLong (* (int *) var);
533 unsigned int val = * (unsigned int *) var;
537 return PyLong_FromUnsignedLong (val);
541 return PyErr_Format (PyExc_RuntimeError,
542 _("Programmer error: unhandled type."));
545 /* A Python function which returns a gdb parameter's value as a Python
549 gdbpy_parameter (PyObject *self, PyObject *args)
551 struct gdb_exception except = exception_none;
552 struct cmd_list_element *alias, *prefix, *cmd;
557 if (! PyArg_ParseTuple (args, "s", &arg))
560 newarg = concat ("show ", arg, (char *) NULL);
564 found = lookup_cmd_composition (newarg, &alias, &prefix, &cmd);
566 CATCH (ex, RETURN_MASK_ALL)
573 GDB_PY_HANDLE_EXCEPTION (except);
575 return PyErr_Format (PyExc_RuntimeError,
576 _("Could not find parameter `%s'."), arg);
579 return PyErr_Format (PyExc_RuntimeError,
580 _("`%s' is not a parameter."), arg);
581 return gdbpy_parameter_value (cmd->var_type, cmd->var);
584 /* Wrapper for target_charset. */
587 gdbpy_target_charset (PyObject *self, PyObject *args)
589 const char *cset = target_charset (python_gdbarch);
591 return PyUnicode_Decode (cset, strlen (cset), host_charset (), NULL);
594 /* Wrapper for target_wide_charset. */
597 gdbpy_target_wide_charset (PyObject *self, PyObject *args)
599 const char *cset = target_wide_charset (python_gdbarch);
601 return PyUnicode_Decode (cset, strlen (cset), host_charset (), NULL);
604 /* A Python function which evaluates a string using the gdb CLI. */
607 execute_gdb_command (PyObject *self, PyObject *args, PyObject *kw)
610 PyObject *from_tty_obj = NULL, *to_string_obj = NULL;
611 int from_tty, to_string;
612 static char *keywords[] = {"command", "from_tty", "to_string", NULL };
614 if (! PyArg_ParseTupleAndKeywords (args, kw, "s|O!O!", keywords, &arg,
615 &PyBool_Type, &from_tty_obj,
616 &PyBool_Type, &to_string_obj))
622 int cmp = PyObject_IsTrue (from_tty_obj);
631 int cmp = PyObject_IsTrue (to_string_obj);
637 std::string to_string_res;
641 /* Copy the argument text in case the command modifies it. */
642 char *copy = xstrdup (arg);
643 struct cleanup *cleanup = make_cleanup (xfree, copy);
644 struct interp *interp;
646 scoped_restore save_async = make_scoped_restore (¤t_ui->async, 0);
648 scoped_restore save_uiout = make_scoped_restore (¤t_uiout);
650 /* Use the console interpreter uiout to have the same print format
651 for console or MI. */
652 interp = interp_lookup (current_ui, "console");
653 current_uiout = interp_ui_out (interp);
655 prevent_dont_repeat ();
657 to_string_res = execute_command_to_string (copy, from_tty);
659 execute_command (copy, from_tty);
660 do_cleanups (cleanup);
662 CATCH (except, RETURN_MASK_ALL)
664 GDB_PY_HANDLE_EXCEPTION (except);
668 /* Do any commands attached to breakpoint we stopped at. */
669 bpstat_do_actions ();
672 return PyString_FromString (to_string_res.c_str ());
676 /* Implementation of gdb.solib_name (Long) -> String.
677 Returns the name of the shared library holding a given address, or None. */
680 gdbpy_solib_name (PyObject *self, PyObject *args)
686 if (!PyArg_ParseTuple (args, GDB_PY_LLU_ARG, &pc))
689 soname = solib_name_from_address (current_program_space, pc);
691 str_obj = host_string_to_python_string (soname);
701 /* A Python function which is a wrapper for decode_line_1. */
704 gdbpy_decode_line (PyObject *self, PyObject *args)
706 struct gdb_exception except = exception_none;
707 struct symtabs_and_lines sals = { NULL, 0 }; /* Initialize to
709 struct symtab_and_line sal;
711 struct cleanup *cleanups;
712 PyObject *result = NULL;
713 PyObject *return_result = NULL;
714 PyObject *unparsed = NULL;
715 struct event_location *location = NULL;
717 if (! PyArg_ParseTuple (args, "|s", &arg))
720 cleanups = make_cleanup (null_cleanup, NULL);
726 location = string_to_event_location_basic (&arg, python_language);
727 make_cleanup_delete_event_location (location);
732 if (location != NULL)
733 sals = decode_line_1 (location, 0, NULL, NULL, 0);
736 set_default_source_symtab_and_line ();
737 sal = get_current_source_symtab_and_line ();
742 CATCH (ex, RETURN_MASK_ALL)
748 if (sals.sals != NULL && sals.sals != &sal)
749 make_cleanup (xfree, sals.sals);
751 if (except.reason < 0)
753 do_cleanups (cleanups);
754 /* We know this will always throw. */
755 gdbpy_convert_exception (except);
763 result = PyTuple_New (sals.nelts);
766 for (i = 0; i < sals.nelts; ++i)
770 obj = symtab_and_line_to_sal_object (sals.sals[i]);
777 PyTuple_SetItem (result, i, obj);
786 return_result = PyTuple_New (2);
793 if (arg != NULL && strlen (arg) > 0)
795 unparsed = PyString_FromString (arg);
796 if (unparsed == NULL)
799 Py_DECREF (return_result);
800 return_result = NULL;
810 PyTuple_SetItem (return_result, 0, unparsed);
811 PyTuple_SetItem (return_result, 1, result);
814 do_cleanups (cleanups);
816 return return_result;
819 /* Parse a string and evaluate it as an expression. */
821 gdbpy_parse_and_eval (PyObject *self, PyObject *args)
823 const char *expr_str;
824 struct value *result = NULL;
826 if (!PyArg_ParseTuple (args, "s", &expr_str))
831 result = parse_and_eval (expr_str);
833 CATCH (except, RETURN_MASK_ALL)
835 GDB_PY_HANDLE_EXCEPTION (except);
839 return value_to_value_object (result);
842 /* Implementation of gdb.find_pc_line function.
843 Returns the gdb.Symtab_and_line object corresponding to a PC value. */
846 gdbpy_find_pc_line (PyObject *self, PyObject *args)
848 gdb_py_ulongest pc_llu;
849 PyObject *result = NULL; /* init for gcc -Wall */
851 if (!PyArg_ParseTuple (args, GDB_PY_LLU_ARG, &pc_llu))
856 struct symtab_and_line sal;
859 pc = (CORE_ADDR) pc_llu;
860 sal = find_pc_line (pc, 0);
861 result = symtab_and_line_to_sal_object (sal);
863 CATCH (except, RETURN_MASK_ALL)
865 GDB_PY_HANDLE_EXCEPTION (except);
872 /* Implementation of gdb.invalidate_cached_frames. */
875 gdbpy_invalidate_cached_frames (PyObject *self, PyObject *args)
877 reinit_frame_cache ();
881 /* Read a file as Python code.
882 This is the extension_language_script_ops.script_sourcer "method".
883 FILE is the file to load. FILENAME is name of the file FILE.
884 This does not throw any errors. If an exception occurs python will print
885 the traceback and clear the error indicator. */
888 gdbpy_source_script (const struct extension_language_defn *extlang,
889 FILE *file, const char *filename)
891 struct cleanup *cleanup;
893 cleanup = ensure_python_env (get_current_arch (), current_language);
894 python_run_simple_file (file, filename);
895 do_cleanups (cleanup);
900 /* Posting and handling events. */
902 /* A single event. */
905 /* The Python event. This is just a callable object. */
907 /* The next event. */
908 struct gdbpy_event *next;
911 /* All pending events. */
912 static struct gdbpy_event *gdbpy_event_list;
913 /* The final link of the event list. */
914 static struct gdbpy_event **gdbpy_event_list_end;
916 /* So that we can wake up the main thread even when it is blocked in
918 static struct serial_event *gdbpy_serial_event;
920 /* The file handler callback. This reads from the internal pipe, and
921 then processes the Python event queue. This will always be run in
922 the main gdb thread. */
925 gdbpy_run_events (int error, gdb_client_data client_data)
927 struct cleanup *cleanup;
929 cleanup = ensure_python_env (get_current_arch (), current_language);
931 /* Clear the event fd. Do this before flushing the events list, so
932 that any new event post afterwards is sure to re-awake the event
934 serial_event_clear (gdbpy_serial_event);
936 while (gdbpy_event_list)
938 PyObject *call_result;
940 /* Dispatching the event might push a new element onto the event
941 loop, so we update here "atomically enough". */
942 struct gdbpy_event *item = gdbpy_event_list;
943 gdbpy_event_list = gdbpy_event_list->next;
944 if (gdbpy_event_list == NULL)
945 gdbpy_event_list_end = &gdbpy_event_list;
948 call_result = PyObject_CallObject (item->event, NULL);
949 if (call_result == NULL)
952 Py_XDECREF (call_result);
953 Py_DECREF (item->event);
957 do_cleanups (cleanup);
960 /* Submit an event to the gdb thread. */
962 gdbpy_post_event (PyObject *self, PyObject *args)
964 struct gdbpy_event *event;
968 if (!PyArg_ParseTuple (args, "O", &func))
971 if (!PyCallable_Check (func))
973 PyErr_SetString (PyExc_RuntimeError,
974 _("Posted event is not callable"));
980 /* From here until the end of the function, we have the GIL, so we
981 can operate on our global data structures without worrying. */
982 wakeup = gdbpy_event_list == NULL;
984 event = XNEW (struct gdbpy_event);
987 *gdbpy_event_list_end = event;
988 gdbpy_event_list_end = &event->next;
990 /* Wake up gdb when needed. */
992 serial_event_set (gdbpy_serial_event);
997 /* Initialize the Python event handler. */
999 gdbpy_initialize_events (void)
1001 gdbpy_event_list_end = &gdbpy_event_list;
1003 gdbpy_serial_event = make_serial_event ();
1004 add_file_handler (serial_event_fd (gdbpy_serial_event),
1005 gdbpy_run_events, NULL);
1012 /* This is the extension_language_ops.before_prompt "method". */
1014 static enum ext_lang_rc
1015 gdbpy_before_prompt_hook (const struct extension_language_defn *extlang,
1016 const char *current_gdb_prompt)
1018 struct cleanup *cleanup;
1019 gdb::unique_xmalloc_ptr<char> prompt;
1021 if (!gdb_python_initialized)
1022 return EXT_LANG_RC_NOP;
1024 cleanup = ensure_python_env (get_current_arch (), current_language);
1026 if (gdb_python_module
1027 && PyObject_HasAttrString (gdb_python_module, "prompt_hook"))
1031 hook = PyObject_GetAttrString (gdb_python_module, "prompt_hook");
1035 make_cleanup_py_decref (hook);
1037 if (PyCallable_Check (hook))
1040 PyObject *current_prompt;
1042 current_prompt = PyString_FromString (current_gdb_prompt);
1043 if (current_prompt == NULL)
1046 result = PyObject_CallFunctionObjArgs (hook, current_prompt, NULL);
1048 Py_DECREF (current_prompt);
1053 make_cleanup_py_decref (result);
1055 /* Return type should be None, or a String. If it is None,
1056 fall through, we will not set a prompt. If it is a
1057 string, set PROMPT. Anything else, set an exception. */
1058 if (result != Py_None && ! PyString_Check (result))
1060 PyErr_Format (PyExc_RuntimeError,
1061 _("Return from prompt_hook must " \
1062 "be either a Python string, or None"));
1066 if (result != Py_None)
1068 prompt = python_string_to_host_string (result);
1076 /* If a prompt has been set, PROMPT will not be NULL. If it is
1077 NULL, do not set the prompt. */
1079 set_prompt (prompt.get ());
1081 do_cleanups (cleanup);
1082 return prompt != NULL ? EXT_LANG_RC_OK : EXT_LANG_RC_NOP;
1085 gdbpy_print_stack ();
1086 do_cleanups (cleanup);
1087 return EXT_LANG_RC_ERROR;
1094 /* A python function to write a single string using gdb's filtered
1095 output stream . The optional keyword STREAM can be used to write
1096 to a particular stream. The default stream is to gdb_stdout. */
1099 gdbpy_write (PyObject *self, PyObject *args, PyObject *kw)
1102 static char *keywords[] = {"text", "stream", NULL };
1103 int stream_type = 0;
1105 if (! PyArg_ParseTupleAndKeywords (args, kw, "s|i", keywords, &arg,
1111 switch (stream_type)
1115 fprintf_filtered (gdb_stderr, "%s", arg);
1120 fprintf_filtered (gdb_stdlog, "%s", arg);
1124 fprintf_filtered (gdb_stdout, "%s", arg);
1127 CATCH (except, RETURN_MASK_ALL)
1129 GDB_PY_HANDLE_EXCEPTION (except);
1136 /* A python function to flush a gdb stream. The optional keyword
1137 STREAM can be used to flush a particular stream. The default stream
1141 gdbpy_flush (PyObject *self, PyObject *args, PyObject *kw)
1143 static char *keywords[] = {"stream", NULL };
1144 int stream_type = 0;
1146 if (! PyArg_ParseTupleAndKeywords (args, kw, "|i", keywords,
1150 switch (stream_type)
1154 gdb_flush (gdb_stderr);
1159 gdb_flush (gdb_stdlog);
1163 gdb_flush (gdb_stdout);
1169 /* Return non-zero if print-stack is not "none". */
1172 gdbpy_print_python_errors_p (void)
1174 return gdbpy_should_print_stack != python_excp_none;
1177 /* Print a python exception trace, print just a message, or print
1178 nothing and clear the python exception, depending on
1179 gdbpy_should_print_stack. Only call this if a python exception is
1182 gdbpy_print_stack (void)
1185 /* Print "none", just clear exception. */
1186 if (gdbpy_should_print_stack == python_excp_none)
1190 /* Print "full" message and backtrace. */
1191 else if (gdbpy_should_print_stack == python_excp_full)
1194 /* PyErr_Print doesn't necessarily end output with a newline.
1195 This works because Python's stdout/stderr is fed through
1201 CATCH (except, RETURN_MASK_ALL)
1206 /* Print "message", just error print message. */
1209 PyObject *ptype, *pvalue, *ptraceback;
1211 PyErr_Fetch (&ptype, &pvalue, &ptraceback);
1213 /* Fetch the error message contained within ptype, pvalue. */
1214 gdb::unique_xmalloc_ptr<char>
1215 msg (gdbpy_exception_to_string (ptype, pvalue));
1216 gdb::unique_xmalloc_ptr<char> type (gdbpy_obj_to_string (ptype));
1222 /* An error occurred computing the string representation of the
1224 fprintf_filtered (gdb_stderr,
1225 _("Error occurred computing Python error" \
1229 fprintf_filtered (gdb_stderr, "Python Exception %s %s: \n",
1230 type.get (), msg.get ());
1232 CATCH (except, RETURN_MASK_ALL)
1238 Py_XDECREF (pvalue);
1239 Py_XDECREF (ptraceback);
1245 /* Return the current Progspace.
1246 There always is one. */
1249 gdbpy_get_current_progspace (PyObject *unused1, PyObject *unused2)
1253 result = pspace_to_pspace_object (current_program_space);
1259 /* Return a sequence holding all the Progspaces. */
1262 gdbpy_progspaces (PyObject *unused1, PyObject *unused2)
1264 struct program_space *ps;
1266 gdbpy_ref list (PyList_New (0));
1272 PyObject *item = pspace_to_pspace_object (ps);
1274 if (!item || PyList_Append (list.get (), item) == -1)
1278 return list.release ();
1283 /* The "current" objfile. This is set when gdb detects that a new
1284 objfile has been loaded. It is only set for the duration of a call to
1285 gdbpy_source_objfile_script and gdbpy_execute_objfile_script; it is NULL
1287 static struct objfile *gdbpy_current_objfile;
1289 /* Set the current objfile to OBJFILE and then read FILE named FILENAME
1290 as Python code. This does not throw any errors. If an exception
1291 occurs python will print the traceback and clear the error indicator.
1292 This is the extension_language_script_ops.objfile_script_sourcer
1296 gdbpy_source_objfile_script (const struct extension_language_defn *extlang,
1297 struct objfile *objfile, FILE *file,
1298 const char *filename)
1300 struct cleanup *cleanups;
1302 if (!gdb_python_initialized)
1305 cleanups = ensure_python_env (get_objfile_arch (objfile), current_language);
1306 gdbpy_current_objfile = objfile;
1308 python_run_simple_file (file, filename);
1310 do_cleanups (cleanups);
1311 gdbpy_current_objfile = NULL;
1314 /* Set the current objfile to OBJFILE and then execute SCRIPT
1315 as Python code. This does not throw any errors. If an exception
1316 occurs python will print the traceback and clear the error indicator.
1317 This is the extension_language_script_ops.objfile_script_executor
1321 gdbpy_execute_objfile_script (const struct extension_language_defn *extlang,
1322 struct objfile *objfile, const char *name,
1325 struct cleanup *cleanups;
1327 if (!gdb_python_initialized)
1330 cleanups = ensure_python_env (get_objfile_arch (objfile), current_language);
1331 gdbpy_current_objfile = objfile;
1333 PyRun_SimpleString (script);
1335 do_cleanups (cleanups);
1336 gdbpy_current_objfile = NULL;
1339 /* Return the current Objfile, or None if there isn't one. */
1342 gdbpy_get_current_objfile (PyObject *unused1, PyObject *unused2)
1346 if (! gdbpy_current_objfile)
1349 result = objfile_to_objfile_object (gdbpy_current_objfile);
1355 /* Return a sequence holding all the Objfiles. */
1358 gdbpy_objfiles (PyObject *unused1, PyObject *unused2)
1360 struct objfile *objf;
1362 gdbpy_ref list (PyList_New (0));
1368 PyObject *item = objfile_to_objfile_object (objf);
1370 if (!item || PyList_Append (list.get (), item) == -1)
1374 return list.release ();
1377 /* Compute the list of active python type printers and store them in
1378 EXT_PRINTERS->py_type_printers. The product of this function is used by
1379 gdbpy_apply_type_printers, and freed by gdbpy_free_type_printers.
1380 This is the extension_language_ops.start_type_printers "method". */
1383 gdbpy_start_type_printers (const struct extension_language_defn *extlang,
1384 struct ext_lang_type_printers *ext_printers)
1386 struct cleanup *cleanups;
1387 PyObject *type_module, *func = NULL, *printers_obj = NULL;
1389 if (!gdb_python_initialized)
1392 cleanups = ensure_python_env (get_current_arch (), current_language);
1394 type_module = PyImport_ImportModule ("gdb.types");
1395 if (type_module == NULL)
1397 gdbpy_print_stack ();
1401 func = PyObject_GetAttrString (type_module, "get_type_recognizers");
1404 gdbpy_print_stack ();
1408 printers_obj = PyObject_CallFunctionObjArgs (func, (char *) NULL);
1409 if (printers_obj == NULL)
1410 gdbpy_print_stack ();
1412 ext_printers->py_type_printers = printers_obj;
1415 Py_XDECREF (type_module);
1417 do_cleanups (cleanups);
1420 /* If TYPE is recognized by some type printer, store in *PRETTIED_TYPE
1421 a newly allocated string holding the type's replacement name, and return
1422 EXT_LANG_RC_OK. The caller is responsible for freeing the string.
1423 If there's a Python error return EXT_LANG_RC_ERROR.
1424 Otherwise, return EXT_LANG_RC_NOP.
1425 This is the extension_language_ops.apply_type_printers "method". */
1427 static enum ext_lang_rc
1428 gdbpy_apply_type_printers (const struct extension_language_defn *extlang,
1429 const struct ext_lang_type_printers *ext_printers,
1430 struct type *type, char **prettied_type)
1432 struct cleanup *cleanups;
1433 PyObject *type_obj, *type_module = NULL, *func = NULL;
1434 PyObject *result_obj = NULL;
1435 PyObject *printers_obj = (PyObject *) ext_printers->py_type_printers;
1436 gdb::unique_xmalloc_ptr<char> result;
1438 if (printers_obj == NULL)
1439 return EXT_LANG_RC_NOP;
1441 if (!gdb_python_initialized)
1442 return EXT_LANG_RC_NOP;
1444 cleanups = ensure_python_env (get_current_arch (), current_language);
1446 type_obj = type_to_type_object (type);
1447 if (type_obj == NULL)
1449 gdbpy_print_stack ();
1453 type_module = PyImport_ImportModule ("gdb.types");
1454 if (type_module == NULL)
1456 gdbpy_print_stack ();
1460 func = PyObject_GetAttrString (type_module, "apply_type_recognizers");
1463 gdbpy_print_stack ();
1467 result_obj = PyObject_CallFunctionObjArgs (func, printers_obj,
1468 type_obj, (char *) NULL);
1469 if (result_obj == NULL)
1471 gdbpy_print_stack ();
1475 if (result_obj != Py_None)
1477 result = python_string_to_host_string (result_obj);
1479 gdbpy_print_stack ();
1483 Py_XDECREF (type_obj);
1484 Py_XDECREF (type_module);
1486 Py_XDECREF (result_obj);
1487 do_cleanups (cleanups);
1490 *prettied_type = result.release ();
1491 return EXT_LANG_RC_OK;
1493 return EXT_LANG_RC_ERROR;
1496 /* Free the result of start_type_printers.
1497 This is the extension_language_ops.free_type_printers "method". */
1500 gdbpy_free_type_printers (const struct extension_language_defn *extlang,
1501 struct ext_lang_type_printers *ext_printers)
1503 struct cleanup *cleanups;
1504 PyObject *printers = (PyObject *) ext_printers->py_type_printers;
1506 if (printers == NULL)
1509 if (!gdb_python_initialized)
1512 cleanups = ensure_python_env (get_current_arch (), current_language);
1513 Py_DECREF (printers);
1514 do_cleanups (cleanups);
1517 #else /* HAVE_PYTHON */
1519 /* Dummy implementation of the gdb "python-interactive" and "python"
1523 python_interactive_command (char *arg, int from_tty)
1525 arg = skip_spaces (arg);
1527 error (_("Python scripting is not supported in this copy of GDB."));
1530 struct command_line *l = get_command_line (python_control, "");
1531 struct cleanup *cleanups = make_cleanup_free_command_lines (&l);
1533 execute_control_command_untraced (l);
1534 do_cleanups (cleanups);
1539 python_command (char *arg, int from_tty)
1541 python_interactive_command (arg, from_tty);
1544 #endif /* HAVE_PYTHON */
1548 /* Lists for 'set python' commands. */
1550 static struct cmd_list_element *user_set_python_list;
1551 static struct cmd_list_element *user_show_python_list;
1553 /* Function for use by 'set python' prefix command. */
1556 user_set_python (char *args, int from_tty)
1558 help_list (user_set_python_list, "set python ", all_commands,
1562 /* Function for use by 'show python' prefix command. */
1565 user_show_python (char *args, int from_tty)
1567 cmd_show_list (user_show_python_list, from_tty, "");
1570 /* Initialize the Python code. */
1574 /* This is installed as a final cleanup and cleans up the
1575 interpreter. This lets Python's 'atexit' work. */
1578 finalize_python (void *ignore)
1580 struct active_ext_lang_state *previous_active;
1582 /* We don't use ensure_python_env here because if we ever ran the
1583 cleanup, gdb would crash -- because the cleanup calls into the
1584 Python interpreter, which we are about to destroy. It seems
1585 clearer to make the needed calls explicitly here than to create a
1586 cleanup and then mysteriously discard it. */
1588 /* This is only called as a final cleanup so we can assume the active
1589 SIGINT handler is gdb's. We still need to tell it to notify Python. */
1590 previous_active = set_active_ext_lang (&extension_language_python);
1592 (void) PyGILState_Ensure ();
1593 python_gdbarch = target_gdbarch ();
1594 python_language = current_language;
1598 restore_active_ext_lang (previous_active);
1602 /* Provide a prototype to silence -Wmissing-prototypes. */
1603 extern initialize_file_ftype _initialize_python;
1606 _initialize_python (void)
1611 size_t progsize, count;
1613 wchar_t *progname_copy;
1616 add_com ("python-interactive", class_obscure,
1617 python_interactive_command,
1620 Start an interactive Python prompt.\n\
1622 To return to GDB, type the EOF character (e.g., Ctrl-D on an empty\n\
1625 Alternatively, a single-line Python command can be given as an\n\
1626 argument, and if the command is an expression, the result will be\n\
1627 printed. For example:\n\
1629 (gdb) python-interactive 2 + 3\n\
1632 #else /* HAVE_PYTHON */
1634 Start a Python interactive prompt.\n\
1636 Python scripting is not supported in this copy of GDB.\n\
1637 This command is only a placeholder.")
1638 #endif /* HAVE_PYTHON */
1640 add_com_alias ("pi", "python-interactive", class_obscure, 1);
1642 add_com ("python", class_obscure, python_command,
1645 Evaluate a Python command.\n\
1647 The command can be given as an argument, for instance:\n\
1651 If no argument is given, the following lines are read and used\n\
1652 as the Python commands. Type a line containing \"end\" to indicate\n\
1653 the end of the command.")
1654 #else /* HAVE_PYTHON */
1656 Evaluate a Python command.\n\
1658 Python scripting is not supported in this copy of GDB.\n\
1659 This command is only a placeholder.")
1660 #endif /* HAVE_PYTHON */
1662 add_com_alias ("py", "python", class_obscure, 1);
1664 /* Add set/show python print-stack. */
1665 add_prefix_cmd ("python", no_class, user_show_python,
1666 _("Prefix command for python preference settings."),
1667 &user_show_python_list, "show python ", 0,
1670 add_prefix_cmd ("python", no_class, user_set_python,
1671 _("Prefix command for python preference settings."),
1672 &user_set_python_list, "set python ", 0,
1675 add_setshow_enum_cmd ("print-stack", no_class, python_excp_enums,
1676 &gdbpy_should_print_stack, _("\
1677 Set mode for Python stack dump on error."), _("\
1678 Show the mode of Python stack printing on error."), _("\
1679 none == no stack or message will be printed.\n\
1680 full == a message and a stack will be printed.\n\
1681 message == an error message without a stack will be printed."),
1683 &user_set_python_list,
1684 &user_show_python_list);
1687 #ifdef WITH_PYTHON_PATH
1688 /* Work around problem where python gets confused about where it is,
1689 and then can't find its libraries, etc.
1690 NOTE: Python assumes the following layout:
1692 /foo/lib/pythonX.Y/...
1693 This must be done before calling Py_Initialize. */
1694 progname = concat (ldirname (python_libdir), SLASH_STRING, "bin",
1695 SLASH_STRING, "python", (char *) NULL);
1697 oldloc = xstrdup (setlocale (LC_ALL, NULL));
1698 setlocale (LC_ALL, "");
1699 progsize = strlen (progname);
1700 progname_copy = (wchar_t *) PyMem_Malloc ((progsize + 1) * sizeof (wchar_t));
1704 fprintf (stderr, "out of memory\n");
1707 count = mbstowcs (progname_copy, progname, progsize + 1);
1708 if (count == (size_t) -1)
1711 fprintf (stderr, "Could not convert python path to string\n");
1714 setlocale (LC_ALL, oldloc);
1717 /* Note that Py_SetProgramName expects the string it is passed to
1718 remain alive for the duration of the program's execution, so
1719 it is not freed after this call. */
1720 Py_SetProgramName (progname_copy);
1722 Py_SetProgramName (progname);
1727 PyEval_InitThreads ();
1730 gdb_module = PyModule_Create (&python_GdbModuleDef);
1731 /* Add _gdb module to the list of known built-in modules. */
1732 _PyImport_FixupBuiltin (gdb_module, "_gdb");
1734 gdb_module = Py_InitModule ("_gdb", python_GdbMethods);
1736 if (gdb_module == NULL)
1739 /* The casts to (char*) are for python 2.4. */
1740 if (PyModule_AddStringConstant (gdb_module, "VERSION", (char*) version) < 0
1741 || PyModule_AddStringConstant (gdb_module, "HOST_CONFIG",
1742 (char*) host_name) < 0
1743 || PyModule_AddStringConstant (gdb_module, "TARGET_CONFIG",
1744 (char*) target_name) < 0)
1747 /* Add stream constants. */
1748 if (PyModule_AddIntConstant (gdb_module, "STDOUT", 0) < 0
1749 || PyModule_AddIntConstant (gdb_module, "STDERR", 1) < 0
1750 || PyModule_AddIntConstant (gdb_module, "STDLOG", 2) < 0)
1753 gdbpy_gdb_error = PyErr_NewException ("gdb.error", PyExc_RuntimeError, NULL);
1754 if (gdbpy_gdb_error == NULL
1755 || gdb_pymodule_addobject (gdb_module, "error", gdbpy_gdb_error) < 0)
1758 gdbpy_gdb_memory_error = PyErr_NewException ("gdb.MemoryError",
1759 gdbpy_gdb_error, NULL);
1760 if (gdbpy_gdb_memory_error == NULL
1761 || gdb_pymodule_addobject (gdb_module, "MemoryError",
1762 gdbpy_gdb_memory_error) < 0)
1765 gdbpy_gdberror_exc = PyErr_NewException ("gdb.GdbError", NULL, NULL);
1766 if (gdbpy_gdberror_exc == NULL
1767 || gdb_pymodule_addobject (gdb_module, "GdbError",
1768 gdbpy_gdberror_exc) < 0)
1771 gdbpy_initialize_gdb_readline ();
1773 if (gdbpy_initialize_auto_load () < 0
1774 || gdbpy_initialize_values () < 0
1775 || gdbpy_initialize_frames () < 0
1776 || gdbpy_initialize_commands () < 0
1777 || gdbpy_initialize_symbols () < 0
1778 || gdbpy_initialize_symtabs () < 0
1779 || gdbpy_initialize_blocks () < 0
1780 || gdbpy_initialize_functions () < 0
1781 || gdbpy_initialize_parameters () < 0
1782 || gdbpy_initialize_types () < 0
1783 || gdbpy_initialize_pspace () < 0
1784 || gdbpy_initialize_objfile () < 0
1785 || gdbpy_initialize_breakpoints () < 0
1786 || gdbpy_initialize_finishbreakpoints () < 0
1787 || gdbpy_initialize_lazy_string () < 0
1788 || gdbpy_initialize_linetable () < 0
1789 || gdbpy_initialize_thread () < 0
1790 || gdbpy_initialize_inferior () < 0
1791 || gdbpy_initialize_events () < 0
1792 || gdbpy_initialize_eventregistry () < 0
1793 || gdbpy_initialize_py_events () < 0
1794 || gdbpy_initialize_event () < 0
1795 || gdbpy_initialize_stop_event () < 0
1796 || gdbpy_initialize_signal_event () < 0
1797 || gdbpy_initialize_breakpoint_event () < 0
1798 || gdbpy_initialize_continue_event () < 0
1799 || gdbpy_initialize_inferior_call_pre_event () < 0
1800 || gdbpy_initialize_inferior_call_post_event () < 0
1801 || gdbpy_initialize_register_changed_event () < 0
1802 || gdbpy_initialize_memory_changed_event () < 0
1803 || gdbpy_initialize_exited_event () < 0
1804 || gdbpy_initialize_thread_event () < 0
1805 || gdbpy_initialize_new_objfile_event () < 0
1806 || gdbpy_initialize_clear_objfiles_event () < 0
1807 || gdbpy_initialize_arch () < 0
1808 || gdbpy_initialize_xmethods () < 0
1809 || gdbpy_initialize_unwind () < 0)
1812 gdbpy_to_string_cst = PyString_FromString ("to_string");
1813 if (gdbpy_to_string_cst == NULL)
1815 gdbpy_children_cst = PyString_FromString ("children");
1816 if (gdbpy_children_cst == NULL)
1818 gdbpy_display_hint_cst = PyString_FromString ("display_hint");
1819 if (gdbpy_display_hint_cst == NULL)
1821 gdbpy_doc_cst = PyString_FromString ("__doc__");
1822 if (gdbpy_doc_cst == NULL)
1824 gdbpy_enabled_cst = PyString_FromString ("enabled");
1825 if (gdbpy_enabled_cst == NULL)
1827 gdbpy_value_cst = PyString_FromString ("value");
1828 if (gdbpy_value_cst == NULL)
1831 /* Release the GIL while gdb runs. */
1832 PyThreadState_Swap (NULL);
1833 PyEval_ReleaseLock ();
1835 make_final_cleanup (finalize_python, NULL);
1837 gdb_python_initialized = 1;
1841 gdbpy_print_stack ();
1842 /* Do not set 'gdb_python_initialized'. */
1845 #endif /* HAVE_PYTHON */
1850 /* Perform the remaining python initializations.
1851 These must be done after GDB is at least mostly initialized.
1852 E.g., The "info pretty-printer" command needs the "info" prefix
1854 This is the extension_language_ops.finish_initialization "method". */
1857 gdbpy_finish_initialization (const struct extension_language_defn *extlang)
1860 char *gdb_pythondir;
1862 struct cleanup *cleanup;
1864 cleanup = ensure_python_env (get_current_arch (), current_language);
1866 /* Add the initial data-directory to sys.path. */
1868 gdb_pythondir = concat (gdb_datadir, SLASH_STRING, "python", (char *) NULL);
1869 make_cleanup (xfree, gdb_pythondir);
1871 sys_path = PySys_GetObject ("path");
1873 /* If sys.path is not defined yet, define it first. */
1874 if (!(sys_path && PyList_Check (sys_path)))
1877 PySys_SetPath (L"");
1881 sys_path = PySys_GetObject ("path");
1883 if (sys_path && PyList_Check (sys_path))
1885 PyObject *pythondir;
1888 pythondir = PyString_FromString (gdb_pythondir);
1889 if (pythondir == NULL)
1892 err = PyList_Insert (sys_path, 0, pythondir);
1893 Py_DECREF (pythondir);
1900 /* Import the gdb module to finish the initialization, and
1901 add it to __main__ for convenience. */
1902 m = PyImport_AddModule ("__main__");
1906 gdb_python_module = PyImport_ImportModule ("gdb");
1907 if (gdb_python_module == NULL)
1909 gdbpy_print_stack ();
1910 /* This is passed in one call to warning so that blank lines aren't
1911 inserted between each line of text. */
1913 "Could not load the Python gdb module from `%s'.\n"
1914 "Limited Python support is available from the _gdb module.\n"
1915 "Suggest passing --data-directory=/path/to/gdb/data-directory.\n"),
1917 do_cleanups (cleanup);
1921 if (gdb_pymodule_addobject (m, "gdb", gdb_python_module) < 0)
1924 /* Keep the reference to gdb_python_module since it is in a global
1927 do_cleanups (cleanup);
1931 gdbpy_print_stack ();
1932 warning (_("internal error: Unhandled Python exception"));
1933 do_cleanups (cleanup);
1936 /* Return non-zero if Python has successfully initialized.
1937 This is the extension_languages_ops.initialized "method". */
1940 gdbpy_initialized (const struct extension_language_defn *extlang)
1942 return gdb_python_initialized;
1945 #endif /* HAVE_PYTHON */
1951 PyMethodDef python_GdbMethods[] =
1953 { "history", gdbpy_history, METH_VARARGS,
1954 "Get a value from history" },
1955 { "execute", (PyCFunction) execute_gdb_command, METH_VARARGS | METH_KEYWORDS,
1956 "execute (command [, from_tty] [, to_string]) -> [String]\n\
1957 Evaluate command, a string, as a gdb CLI command. Optionally returns\n\
1958 a Python String containing the output of the command if to_string is\n\
1960 { "parameter", gdbpy_parameter, METH_VARARGS,
1961 "Return a gdb parameter's value" },
1963 { "breakpoints", gdbpy_breakpoints, METH_NOARGS,
1964 "Return a tuple of all breakpoint objects" },
1966 { "default_visualizer", gdbpy_default_visualizer, METH_VARARGS,
1967 "Find the default visualizer for a Value." },
1969 { "current_progspace", gdbpy_get_current_progspace, METH_NOARGS,
1970 "Return the current Progspace." },
1971 { "progspaces", gdbpy_progspaces, METH_NOARGS,
1972 "Return a sequence of all progspaces." },
1974 { "current_objfile", gdbpy_get_current_objfile, METH_NOARGS,
1975 "Return the current Objfile being loaded, or None." },
1976 { "objfiles", gdbpy_objfiles, METH_NOARGS,
1977 "Return a sequence of all loaded objfiles." },
1979 { "newest_frame", gdbpy_newest_frame, METH_NOARGS,
1980 "newest_frame () -> gdb.Frame.\n\
1981 Return the newest frame object." },
1982 { "selected_frame", gdbpy_selected_frame, METH_NOARGS,
1983 "selected_frame () -> gdb.Frame.\n\
1984 Return the selected frame object." },
1985 { "frame_stop_reason_string", gdbpy_frame_stop_reason_string, METH_VARARGS,
1986 "stop_reason_string (Integer) -> String.\n\
1987 Return a string explaining unwind stop reason." },
1989 { "lookup_type", (PyCFunction) gdbpy_lookup_type,
1990 METH_VARARGS | METH_KEYWORDS,
1991 "lookup_type (name [, block]) -> type\n\
1992 Return a Type corresponding to the given name." },
1993 { "lookup_symbol", (PyCFunction) gdbpy_lookup_symbol,
1994 METH_VARARGS | METH_KEYWORDS,
1995 "lookup_symbol (name [, block] [, domain]) -> (symbol, is_field_of_this)\n\
1996 Return a tuple with the symbol corresponding to the given name (or None) and\n\
1997 a boolean indicating if name is a field of the current implied argument\n\
1998 `this' (when the current language is object-oriented)." },
1999 { "lookup_global_symbol", (PyCFunction) gdbpy_lookup_global_symbol,
2000 METH_VARARGS | METH_KEYWORDS,
2001 "lookup_global_symbol (name [, domain]) -> symbol\n\
2002 Return the symbol corresponding to the given name (or None)." },
2004 { "lookup_objfile", (PyCFunction) gdbpy_lookup_objfile,
2005 METH_VARARGS | METH_KEYWORDS,
2006 "lookup_objfile (name, [by_build_id]) -> objfile\n\
2007 Look up the specified objfile.\n\
2008 If by_build_id is True, the objfile is looked up by using name\n\
2009 as its build id." },
2011 { "block_for_pc", gdbpy_block_for_pc, METH_VARARGS,
2012 "Return the block containing the given pc value, or None." },
2013 { "solib_name", gdbpy_solib_name, METH_VARARGS,
2014 "solib_name (Long) -> String.\n\
2015 Return the name of the shared library holding a given address, or None." },
2016 { "decode_line", gdbpy_decode_line, METH_VARARGS,
2017 "decode_line (String) -> Tuple. Decode a string argument the way\n\
2018 that 'break' or 'edit' does. Return a tuple containing two elements.\n\
2019 The first element contains any unparsed portion of the String parameter\n\
2020 (or None if the string was fully parsed). The second element contains\n\
2021 a tuple that contains all the locations that match, represented as\n\
2022 gdb.Symtab_and_line objects (or None)."},
2023 { "parse_and_eval", gdbpy_parse_and_eval, METH_VARARGS,
2024 "parse_and_eval (String) -> Value.\n\
2025 Parse String as an expression, evaluate it, and return the result as a Value."
2027 { "find_pc_line", gdbpy_find_pc_line, METH_VARARGS,
2028 "find_pc_line (pc) -> Symtab_and_line.\n\
2029 Return the gdb.Symtab_and_line object corresponding to the pc value." },
2031 { "post_event", gdbpy_post_event, METH_VARARGS,
2032 "Post an event into gdb's event loop." },
2034 { "target_charset", gdbpy_target_charset, METH_NOARGS,
2035 "target_charset () -> string.\n\
2036 Return the name of the current target charset." },
2037 { "target_wide_charset", gdbpy_target_wide_charset, METH_NOARGS,
2038 "target_wide_charset () -> string.\n\
2039 Return the name of the current target wide charset." },
2041 { "string_to_argv", gdbpy_string_to_argv, METH_VARARGS,
2042 "string_to_argv (String) -> Array.\n\
2043 Parse String and return an argv-like array.\n\
2044 Arguments are separate by spaces and may be quoted."
2046 { "write", (PyCFunction)gdbpy_write, METH_VARARGS | METH_KEYWORDS,
2047 "Write a string using gdb's filtered stream." },
2048 { "flush", (PyCFunction)gdbpy_flush, METH_VARARGS | METH_KEYWORDS,
2049 "Flush gdb's filtered stdout stream." },
2050 { "selected_thread", gdbpy_selected_thread, METH_NOARGS,
2051 "selected_thread () -> gdb.InferiorThread.\n\
2052 Return the selected thread object." },
2053 { "selected_inferior", gdbpy_selected_inferior, METH_NOARGS,
2054 "selected_inferior () -> gdb.Inferior.\n\
2055 Return the selected inferior object." },
2056 { "inferiors", gdbpy_inferiors, METH_NOARGS,
2057 "inferiors () -> (gdb.Inferior, ...).\n\
2058 Return a tuple containing all inferiors." },
2060 { "invalidate_cached_frames", gdbpy_invalidate_cached_frames, METH_NOARGS,
2061 "invalidate_cached_frames () -> None.\n\
2062 Invalidate any cached frame objects in gdb.\n\
2063 Intended for internal use only." },
2065 {NULL, NULL, 0, NULL}
2069 struct PyModuleDef python_GdbModuleDef =
2071 PyModuleDef_HEAD_INIT,
2082 #endif /* HAVE_PYTHON */