1 /* General python/gdb code
3 Copyright (C) 2008-2015 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"
39 /* Declared constants and enum for python stack printing. */
40 static const char python_excp_none[] = "none";
41 static const char python_excp_full[] = "full";
42 static const char python_excp_message[] = "message";
44 /* "set python print-stack" choices. */
45 static const char *const python_excp_enums[] =
53 /* The exception printing variable. 'full' if we want to print the
54 error message and stack, 'none' if we want to print nothing, and
55 'message' if we only want to print the error message. 'message' is
57 static const char *gdbpy_should_print_stack = python_excp_message;
60 /* Forward decls, these are defined later. */
61 extern const struct extension_language_script_ops python_extension_script_ops;
62 extern const struct extension_language_ops python_extension_ops;
65 /* The main struct describing GDB's interface to the Python
66 extension language. */
67 const struct extension_language_defn extension_language_python =
79 &python_extension_script_ops,
89 #include "cli/cli-decode.h"
93 #include "python-internal.h"
98 #include "gdbthread.h"
100 #include "event-top.h"
102 /* True if Python has been successfully initialized, false
105 int gdb_python_initialized;
107 extern PyMethodDef python_GdbMethods[];
110 extern struct PyModuleDef python_GdbModuleDef;
113 PyObject *gdb_module;
114 PyObject *gdb_python_module;
116 /* Some string constants we may wish to use. */
117 PyObject *gdbpy_to_string_cst;
118 PyObject *gdbpy_children_cst;
119 PyObject *gdbpy_display_hint_cst;
120 PyObject *gdbpy_doc_cst;
121 PyObject *gdbpy_enabled_cst;
122 PyObject *gdbpy_value_cst;
124 /* The GdbError exception. */
125 PyObject *gdbpy_gdberror_exc;
127 /* The `gdb.error' base class. */
128 PyObject *gdbpy_gdb_error;
130 /* The `gdb.MemoryError' exception. */
131 PyObject *gdbpy_gdb_memory_error;
133 static script_sourcer_func gdbpy_source_script;
134 static objfile_script_sourcer_func gdbpy_source_objfile_script;
135 static objfile_script_executor_func gdbpy_execute_objfile_script;
136 static void gdbpy_finish_initialization
137 (const struct extension_language_defn *);
138 static int gdbpy_initialized (const struct extension_language_defn *);
139 static void gdbpy_eval_from_control_command
140 (const struct extension_language_defn *, struct command_line *cmd);
141 static void gdbpy_start_type_printers (const struct extension_language_defn *,
142 struct ext_lang_type_printers *);
143 static enum ext_lang_rc gdbpy_apply_type_printers
144 (const struct extension_language_defn *,
145 const struct ext_lang_type_printers *, struct type *, char **);
146 static void gdbpy_free_type_printers (const struct extension_language_defn *,
147 struct ext_lang_type_printers *);
148 static void gdbpy_clear_quit_flag (const struct extension_language_defn *);
149 static void gdbpy_set_quit_flag (const struct extension_language_defn *);
150 static int gdbpy_check_quit_flag (const struct extension_language_defn *);
151 static enum ext_lang_rc gdbpy_before_prompt_hook
152 (const struct extension_language_defn *, const char *current_gdb_prompt);
154 /* The interface between gdb proper and loading of python scripts. */
156 const struct extension_language_script_ops python_extension_script_ops =
159 gdbpy_source_objfile_script,
160 gdbpy_execute_objfile_script,
161 gdbpy_auto_load_enabled
164 /* The interface between gdb proper and python extensions. */
166 const struct extension_language_ops python_extension_ops =
168 gdbpy_finish_initialization,
171 gdbpy_eval_from_control_command,
173 gdbpy_start_type_printers,
174 gdbpy_apply_type_printers,
175 gdbpy_free_type_printers,
177 gdbpy_apply_val_pretty_printer,
179 gdbpy_apply_frame_filter,
181 gdbpy_preserve_values,
183 gdbpy_breakpoint_has_cond,
184 gdbpy_breakpoint_cond_says_stop,
186 gdbpy_clear_quit_flag,
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 /* Restore global language and architecture and Python GIL state
206 when leaving the Python interpreter. */
210 struct active_ext_lang_state *previous_active;
211 PyGILState_STATE state;
212 struct gdbarch *gdbarch;
213 const struct language_defn *language;
214 PyObject *error_type, *error_value, *error_traceback;
218 restore_python_env (void *p)
220 struct python_env *env = (struct python_env *)p;
222 /* Leftover Python error is forbidden by Python Exception Handling. */
223 if (PyErr_Occurred ())
225 /* This order is similar to the one calling error afterwards. */
226 gdbpy_print_stack ();
227 warning (_("internal error: Unhandled Python exception"));
230 PyErr_Restore (env->error_type, env->error_value, env->error_traceback);
232 PyGILState_Release (env->state);
233 python_gdbarch = env->gdbarch;
234 python_language = env->language;
236 restore_active_ext_lang (env->previous_active);
241 /* Called before entering the Python interpreter to install the
242 current language and architecture to be used for Python values.
243 Also set the active extension language for GDB so that SIGINT's
244 are directed our way, and if necessary install the right SIGINT
248 ensure_python_env (struct gdbarch *gdbarch,
249 const struct language_defn *language)
251 struct python_env *env = xmalloc (sizeof *env);
253 /* We should not ever enter Python unless initialized. */
254 if (!gdb_python_initialized)
255 error (_("Python not initialized"));
257 env->previous_active = set_active_ext_lang (&extension_language_python);
259 env->state = PyGILState_Ensure ();
260 env->gdbarch = python_gdbarch;
261 env->language = python_language;
263 python_gdbarch = gdbarch;
264 python_language = language;
266 /* Save it and ensure ! PyErr_Occurred () afterwards. */
267 PyErr_Fetch (&env->error_type, &env->error_value, &env->error_traceback);
269 return make_cleanup (restore_python_env, env);
272 /* Clear the quit flag. */
275 gdbpy_clear_quit_flag (const struct extension_language_defn *extlang)
277 /* This clears the flag as a side effect. */
278 PyOS_InterruptOccurred ();
281 /* Set the quit flag. */
284 gdbpy_set_quit_flag (const struct extension_language_defn *extlang)
286 PyErr_SetInterrupt ();
289 /* Return true if the quit flag has been set, false otherwise. */
292 gdbpy_check_quit_flag (const struct extension_language_defn *extlang)
294 return PyOS_InterruptOccurred ();
297 /* Evaluate a Python command like PyRun_SimpleString, but uses
298 Py_single_input which prints the result of expressions, and does
299 not automatically print the stack on errors. */
302 eval_python_command (const char *command)
306 m = PyImport_AddModule ("__main__");
310 d = PyModule_GetDict (m);
313 v = PyRun_StringFlags (command, Py_single_input, d, d, NULL);
326 /* Implementation of the gdb "python-interactive" command. */
329 python_interactive_command (char *arg, int from_tty)
331 struct cleanup *cleanup;
334 cleanup = make_cleanup_restore_integer (&interpreter_async);
335 interpreter_async = 0;
337 arg = skip_spaces (arg);
339 ensure_python_env (get_current_arch (), current_language);
343 int len = strlen (arg);
344 char *script = xmalloc (len + 2);
346 strcpy (script, arg);
348 script[len + 1] = '\0';
349 err = eval_python_command (script);
354 err = PyRun_InteractiveLoop (instream, "<stdin>");
360 gdbpy_print_stack ();
361 error (_("Error while executing Python code."));
364 do_cleanups (cleanup);
367 /* A wrapper around PyRun_SimpleFile. FILE is the Python script to run
370 On Windows hosts few users would build Python themselves (this is no
371 trivial task on this platform), and thus use binaries built by
372 someone else instead. There may happen situation where the Python
373 library and GDB are using two different versions of the C runtime
374 library. Python, being built with VC, would use one version of the
375 msvcr DLL (Eg. msvcr100.dll), while MinGW uses msvcrt.dll.
376 A FILE * from one runtime does not necessarily operate correctly in
379 To work around this potential issue, we create on Windows hosts the
380 FILE object using Python routines, thus making sure that it is
381 compatible with the Python library. */
384 python_run_simple_file (FILE *file, const char *filename)
388 PyRun_SimpleFile (file, filename);
393 PyObject *python_file;
394 struct cleanup *cleanup;
396 /* Because we have a string for a filename, and are using Python to
397 open the file, we need to expand any tilde in the path first. */
398 full_path = tilde_expand (filename);
399 cleanup = make_cleanup (xfree, full_path);
400 python_file = PyFile_FromString (full_path, "r");
403 do_cleanups (cleanup);
404 gdbpy_print_stack ();
405 error (_("Error while opening file: %s"), full_path);
408 make_cleanup_py_decref (python_file);
409 PyRun_SimpleFile (PyFile_AsFile (python_file), filename);
410 do_cleanups (cleanup);
415 /* Given a command_line, return a command string suitable for passing
416 to Python. Lines in the string are separated by newlines. The
417 return value is allocated using xmalloc and the caller is
418 responsible for freeing it. */
421 compute_python_string (struct command_line *l)
423 struct command_line *iter;
428 for (iter = l; iter; iter = iter->next)
429 size += strlen (iter->line) + 1;
431 script = xmalloc (size + 1);
433 for (iter = l; iter; iter = iter->next)
435 int len = strlen (iter->line);
437 strcpy (&script[here], iter->line);
439 script[here++] = '\n';
445 /* Take a command line structure representing a 'python' command, and
446 evaluate its body using the Python interpreter. */
449 gdbpy_eval_from_control_command (const struct extension_language_defn *extlang,
450 struct command_line *cmd)
454 struct cleanup *cleanup;
456 if (cmd->body_count != 1)
457 error (_("Invalid \"python\" block structure."));
459 cleanup = ensure_python_env (get_current_arch (), current_language);
461 script = compute_python_string (cmd->body_list[0]);
462 ret = PyRun_SimpleString (script);
465 error (_("Error while executing Python code."));
467 do_cleanups (cleanup);
470 /* Implementation of the gdb "python" command. */
473 python_command (char *arg, int from_tty)
475 struct cleanup *cleanup;
477 cleanup = ensure_python_env (get_current_arch (), current_language);
479 make_cleanup_restore_integer (&interpreter_async);
480 interpreter_async = 0;
482 arg = skip_spaces (arg);
485 if (PyRun_SimpleString (arg))
486 error (_("Error while executing Python code."));
490 struct command_line *l = get_command_line (python_control, "");
492 make_cleanup_free_command_lines (&l);
493 execute_control_command_untraced (l);
496 do_cleanups (cleanup);
501 /* Transform a gdb parameters's value into a Python value. May return
502 NULL (and set a Python exception) on error. Helper function for
505 gdbpy_parameter_value (enum var_types type, void *var)
510 case var_string_noescape:
511 case var_optional_filename:
515 char *str = * (char **) var;
519 return PyString_Decode (str, strlen (str), host_charset (), NULL);
530 case var_auto_boolean:
532 enum auto_boolean ab = * (enum auto_boolean *) var;
534 if (ab == AUTO_BOOLEAN_TRUE)
536 else if (ab == AUTO_BOOLEAN_FALSE)
543 if ((* (int *) var) == INT_MAX)
547 return PyLong_FromLong (* (int *) var);
551 unsigned int val = * (unsigned int *) var;
555 return PyLong_FromUnsignedLong (val);
559 return PyErr_Format (PyExc_RuntimeError,
560 _("Programmer error: unhandled type."));
563 /* A Python function which returns a gdb parameter's value as a Python
567 gdbpy_parameter (PyObject *self, PyObject *args)
569 struct gdb_exception except = exception_none;
570 struct cmd_list_element *alias, *prefix, *cmd;
575 if (! PyArg_ParseTuple (args, "s", &arg))
578 newarg = concat ("show ", arg, (char *) NULL);
582 found = lookup_cmd_composition (newarg, &alias, &prefix, &cmd);
584 CATCH (ex, RETURN_MASK_ALL)
591 GDB_PY_HANDLE_EXCEPTION (except);
593 return PyErr_Format (PyExc_RuntimeError,
594 _("Could not find parameter `%s'."), arg);
597 return PyErr_Format (PyExc_RuntimeError,
598 _("`%s' is not a parameter."), arg);
599 return gdbpy_parameter_value (cmd->var_type, cmd->var);
602 /* Wrapper for target_charset. */
605 gdbpy_target_charset (PyObject *self, PyObject *args)
607 const char *cset = target_charset (python_gdbarch);
609 return PyUnicode_Decode (cset, strlen (cset), host_charset (), NULL);
612 /* Wrapper for target_wide_charset. */
615 gdbpy_target_wide_charset (PyObject *self, PyObject *args)
617 const char *cset = target_wide_charset (python_gdbarch);
619 return PyUnicode_Decode (cset, strlen (cset), host_charset (), NULL);
622 /* A Python function which evaluates a string using the gdb CLI. */
625 execute_gdb_command (PyObject *self, PyObject *args, PyObject *kw)
628 PyObject *from_tty_obj = NULL, *to_string_obj = NULL;
629 int from_tty, to_string;
630 static char *keywords[] = {"command", "from_tty", "to_string", NULL };
633 if (! PyArg_ParseTupleAndKeywords (args, kw, "s|O!O!", keywords, &arg,
634 &PyBool_Type, &from_tty_obj,
635 &PyBool_Type, &to_string_obj))
641 int cmp = PyObject_IsTrue (from_tty_obj);
650 int cmp = PyObject_IsTrue (to_string_obj);
658 /* Copy the argument text in case the command modifies it. */
659 char *copy = xstrdup (arg);
660 struct cleanup *cleanup = make_cleanup (xfree, copy);
662 make_cleanup_restore_integer (&interpreter_async);
663 interpreter_async = 0;
665 prevent_dont_repeat ();
667 result = execute_command_to_string (copy, from_tty);
671 execute_command (copy, from_tty);
674 do_cleanups (cleanup);
676 CATCH (except, RETURN_MASK_ALL)
678 GDB_PY_HANDLE_EXCEPTION (except);
682 /* Do any commands attached to breakpoint we stopped at. */
683 bpstat_do_actions ();
687 PyObject *r = PyString_FromString (result);
694 /* Implementation of gdb.solib_name (Long) -> String.
695 Returns the name of the shared library holding a given address, or None. */
698 gdbpy_solib_name (PyObject *self, PyObject *args)
704 if (!PyArg_ParseTuple (args, GDB_PY_LL_ARG, &pc))
707 soname = solib_name_from_address (current_program_space, pc);
709 str_obj = PyString_Decode (soname, strlen (soname), host_charset (), NULL);
719 /* A Python function which is a wrapper for decode_line_1. */
722 gdbpy_decode_line (PyObject *self, PyObject *args)
724 struct gdb_exception except = exception_none;
725 struct symtabs_and_lines sals = { NULL, 0 }; /* Initialize to
727 struct symtab_and_line sal;
729 struct cleanup *cleanups;
730 PyObject *result = NULL;
731 PyObject *return_result = NULL;
732 PyObject *unparsed = NULL;
733 struct event_location *location;
735 if (! PyArg_ParseTuple (args, "|s", &arg))
738 cleanups = make_cleanup (null_cleanup, NULL);
744 location = new_linespec_location (&arg);
745 make_cleanup_delete_event_location (location);
751 sals = decode_line_1 (location, 0, 0, 0);
754 set_default_source_symtab_and_line ();
755 sal = get_current_source_symtab_and_line ();
760 CATCH (ex, RETURN_MASK_ALL)
766 if (sals.sals != NULL && sals.sals != &sal)
767 make_cleanup (xfree, sals.sals);
769 if (except.reason < 0)
771 do_cleanups (cleanups);
772 /* We know this will always throw. */
773 gdbpy_convert_exception (except);
781 result = PyTuple_New (sals.nelts);
784 for (i = 0; i < sals.nelts; ++i)
788 obj = symtab_and_line_to_sal_object (sals.sals[i]);
795 PyTuple_SetItem (result, i, obj);
804 return_result = PyTuple_New (2);
811 if (arg != NULL && strlen (arg) > 0)
813 unparsed = PyString_FromString (arg);
814 if (unparsed == NULL)
817 Py_DECREF (return_result);
818 return_result = NULL;
828 PyTuple_SetItem (return_result, 0, unparsed);
829 PyTuple_SetItem (return_result, 1, result);
832 do_cleanups (cleanups);
834 return return_result;
837 /* Parse a string and evaluate it as an expression. */
839 gdbpy_parse_and_eval (PyObject *self, PyObject *args)
841 const char *expr_str;
842 struct value *result = NULL;
844 if (!PyArg_ParseTuple (args, "s", &expr_str))
849 result = parse_and_eval (expr_str);
851 CATCH (except, RETURN_MASK_ALL)
853 GDB_PY_HANDLE_EXCEPTION (except);
857 return value_to_value_object (result);
860 /* Implementation of gdb.find_pc_line function.
861 Returns the gdb.Symtab_and_line object corresponding to a PC value. */
864 gdbpy_find_pc_line (PyObject *self, PyObject *args)
866 gdb_py_ulongest pc_llu;
867 PyObject *result = NULL; /* init for gcc -Wall */
869 if (!PyArg_ParseTuple (args, GDB_PY_LLU_ARG, &pc_llu))
874 struct symtab_and_line sal;
877 pc = (CORE_ADDR) pc_llu;
878 sal = find_pc_line (pc, 0);
879 result = symtab_and_line_to_sal_object (sal);
881 CATCH (except, RETURN_MASK_ALL)
883 GDB_PY_HANDLE_EXCEPTION (except);
890 /* Read a file as Python code.
891 This is the extension_language_script_ops.script_sourcer "method".
892 FILE is the file to load. FILENAME is name of the file FILE.
893 This does not throw any errors. If an exception occurs python will print
894 the traceback and clear the error indicator. */
897 gdbpy_source_script (const struct extension_language_defn *extlang,
898 FILE *file, const char *filename)
900 struct cleanup *cleanup;
902 cleanup = ensure_python_env (get_current_arch (), current_language);
903 python_run_simple_file (file, filename);
904 do_cleanups (cleanup);
909 /* Posting and handling events. */
911 /* A single event. */
914 /* The Python event. This is just a callable object. */
916 /* The next event. */
917 struct gdbpy_event *next;
920 /* All pending events. */
921 static struct gdbpy_event *gdbpy_event_list;
922 /* The final link of the event list. */
923 static struct gdbpy_event **gdbpy_event_list_end;
925 /* We use a file handler, and not an async handler, so that we can
926 wake up the main thread even when it is blocked in poll(). */
927 static struct serial *gdbpy_event_fds[2];
929 /* The file handler callback. This reads from the internal pipe, and
930 then processes the Python event queue. This will always be run in
931 the main gdb thread. */
934 gdbpy_run_events (struct serial *scb, void *context)
936 struct cleanup *cleanup;
938 cleanup = ensure_python_env (get_current_arch (), current_language);
940 /* Flush the fd. Do this before flushing the events list, so that
941 any new event post afterwards is sure to re-awake the event
943 while (serial_readchar (gdbpy_event_fds[0], 0) >= 0)
946 while (gdbpy_event_list)
948 PyObject *call_result;
950 /* Dispatching the event might push a new element onto the event
951 loop, so we update here "atomically enough". */
952 struct gdbpy_event *item = gdbpy_event_list;
953 gdbpy_event_list = gdbpy_event_list->next;
954 if (gdbpy_event_list == NULL)
955 gdbpy_event_list_end = &gdbpy_event_list;
958 call_result = PyObject_CallObject (item->event, NULL);
959 if (call_result == NULL)
962 Py_XDECREF (call_result);
963 Py_DECREF (item->event);
967 do_cleanups (cleanup);
970 /* Submit an event to the gdb thread. */
972 gdbpy_post_event (PyObject *self, PyObject *args)
974 struct gdbpy_event *event;
978 if (!PyArg_ParseTuple (args, "O", &func))
981 if (!PyCallable_Check (func))
983 PyErr_SetString (PyExc_RuntimeError,
984 _("Posted event is not callable"));
990 /* From here until the end of the function, we have the GIL, so we
991 can operate on our global data structures without worrying. */
992 wakeup = gdbpy_event_list == NULL;
994 event = XNEW (struct gdbpy_event);
997 *gdbpy_event_list_end = event;
998 gdbpy_event_list_end = &event->next;
1000 /* Wake up gdb when needed. */
1003 char c = 'q'; /* Anything. */
1005 if (serial_write (gdbpy_event_fds[1], &c, 1))
1006 return PyErr_SetFromErrno (PyExc_IOError);
1012 /* Initialize the Python event handler. */
1014 gdbpy_initialize_events (void)
1016 if (serial_pipe (gdbpy_event_fds) == 0)
1018 gdbpy_event_list_end = &gdbpy_event_list;
1019 serial_async (gdbpy_event_fds[0], gdbpy_run_events, NULL);
1027 /* This is the extension_language_ops.before_prompt "method". */
1029 static enum ext_lang_rc
1030 gdbpy_before_prompt_hook (const struct extension_language_defn *extlang,
1031 const char *current_gdb_prompt)
1033 struct cleanup *cleanup;
1034 char *prompt = NULL;
1036 if (!gdb_python_initialized)
1037 return EXT_LANG_RC_NOP;
1039 cleanup = ensure_python_env (get_current_arch (), current_language);
1041 if (gdb_python_module
1042 && PyObject_HasAttrString (gdb_python_module, "prompt_hook"))
1046 hook = PyObject_GetAttrString (gdb_python_module, "prompt_hook");
1050 make_cleanup_py_decref (hook);
1052 if (PyCallable_Check (hook))
1055 PyObject *current_prompt;
1057 current_prompt = PyString_FromString (current_gdb_prompt);
1058 if (current_prompt == NULL)
1061 result = PyObject_CallFunctionObjArgs (hook, current_prompt, NULL);
1063 Py_DECREF (current_prompt);
1068 make_cleanup_py_decref (result);
1070 /* Return type should be None, or a String. If it is None,
1071 fall through, we will not set a prompt. If it is a
1072 string, set PROMPT. Anything else, set an exception. */
1073 if (result != Py_None && ! PyString_Check (result))
1075 PyErr_Format (PyExc_RuntimeError,
1076 _("Return from prompt_hook must " \
1077 "be either a Python string, or None"));
1081 if (result != Py_None)
1083 prompt = python_string_to_host_string (result);
1088 make_cleanup (xfree, prompt);
1093 /* If a prompt has been set, PROMPT will not be NULL. If it is
1094 NULL, do not set the prompt. */
1096 set_prompt (prompt);
1098 do_cleanups (cleanup);
1099 return prompt != NULL ? EXT_LANG_RC_OK : EXT_LANG_RC_NOP;
1102 gdbpy_print_stack ();
1103 do_cleanups (cleanup);
1104 return EXT_LANG_RC_ERROR;
1111 /* A python function to write a single string using gdb's filtered
1112 output stream . The optional keyword STREAM can be used to write
1113 to a particular stream. The default stream is to gdb_stdout. */
1116 gdbpy_write (PyObject *self, PyObject *args, PyObject *kw)
1119 static char *keywords[] = {"text", "stream", NULL };
1120 int stream_type = 0;
1122 if (! PyArg_ParseTupleAndKeywords (args, kw, "s|i", keywords, &arg,
1128 switch (stream_type)
1132 fprintf_filtered (gdb_stderr, "%s", arg);
1137 fprintf_filtered (gdb_stdlog, "%s", arg);
1141 fprintf_filtered (gdb_stdout, "%s", arg);
1144 CATCH (except, RETURN_MASK_ALL)
1146 GDB_PY_HANDLE_EXCEPTION (except);
1153 /* A python function to flush a gdb stream. The optional keyword
1154 STREAM can be used to flush a particular stream. The default stream
1158 gdbpy_flush (PyObject *self, PyObject *args, PyObject *kw)
1160 static char *keywords[] = {"stream", NULL };
1161 int stream_type = 0;
1163 if (! PyArg_ParseTupleAndKeywords (args, kw, "|i", keywords,
1167 switch (stream_type)
1171 gdb_flush (gdb_stderr);
1176 gdb_flush (gdb_stdlog);
1180 gdb_flush (gdb_stdout);
1186 /* Return non-zero if print-stack is not "none". */
1189 gdbpy_print_python_errors_p (void)
1191 return gdbpy_should_print_stack != python_excp_none;
1194 /* Print a python exception trace, print just a message, or print
1195 nothing and clear the python exception, depending on
1196 gdbpy_should_print_stack. Only call this if a python exception is
1199 gdbpy_print_stack (void)
1202 /* Print "none", just clear exception. */
1203 if (gdbpy_should_print_stack == python_excp_none)
1207 /* Print "full" message and backtrace. */
1208 else if (gdbpy_should_print_stack == python_excp_full)
1211 /* PyErr_Print doesn't necessarily end output with a newline.
1212 This works because Python's stdout/stderr is fed through
1218 CATCH (except, RETURN_MASK_ALL)
1223 /* Print "message", just error print message. */
1226 PyObject *ptype, *pvalue, *ptraceback;
1227 char *msg = NULL, *type = NULL;
1229 PyErr_Fetch (&ptype, &pvalue, &ptraceback);
1231 /* Fetch the error message contained within ptype, pvalue. */
1232 msg = gdbpy_exception_to_string (ptype, pvalue);
1233 type = gdbpy_obj_to_string (ptype);
1239 /* An error occurred computing the string representation of the
1241 fprintf_filtered (gdb_stderr,
1242 _("Error occurred computing Python error" \
1246 fprintf_filtered (gdb_stderr, "Python Exception %s %s: \n",
1249 CATCH (except, RETURN_MASK_ALL)
1255 Py_XDECREF (pvalue);
1256 Py_XDECREF (ptraceback);
1263 /* Return the current Progspace.
1264 There always is one. */
1267 gdbpy_get_current_progspace (PyObject *unused1, PyObject *unused2)
1271 result = pspace_to_pspace_object (current_program_space);
1277 /* Return a sequence holding all the Progspaces. */
1280 gdbpy_progspaces (PyObject *unused1, PyObject *unused2)
1282 struct program_space *ps;
1285 list = PyList_New (0);
1291 PyObject *item = pspace_to_pspace_object (ps);
1293 if (!item || PyList_Append (list, item) == -1)
1305 /* The "current" objfile. This is set when gdb detects that a new
1306 objfile has been loaded. It is only set for the duration of a call to
1307 gdbpy_source_objfile_script and gdbpy_execute_objfile_script; it is NULL
1309 static struct objfile *gdbpy_current_objfile;
1311 /* Set the current objfile to OBJFILE and then read FILE named FILENAME
1312 as Python code. This does not throw any errors. If an exception
1313 occurs python will print the traceback and clear the error indicator.
1314 This is the extension_language_script_ops.objfile_script_sourcer
1318 gdbpy_source_objfile_script (const struct extension_language_defn *extlang,
1319 struct objfile *objfile, FILE *file,
1320 const char *filename)
1322 struct cleanup *cleanups;
1324 if (!gdb_python_initialized)
1327 cleanups = ensure_python_env (get_objfile_arch (objfile), current_language);
1328 gdbpy_current_objfile = objfile;
1330 python_run_simple_file (file, filename);
1332 do_cleanups (cleanups);
1333 gdbpy_current_objfile = NULL;
1336 /* Set the current objfile to OBJFILE and then execute SCRIPT
1337 as Python code. This does not throw any errors. If an exception
1338 occurs python will print the traceback and clear the error indicator.
1339 This is the extension_language_script_ops.objfile_script_executor
1343 gdbpy_execute_objfile_script (const struct extension_language_defn *extlang,
1344 struct objfile *objfile, const char *name,
1347 struct cleanup *cleanups;
1349 if (!gdb_python_initialized)
1352 cleanups = ensure_python_env (get_objfile_arch (objfile), current_language);
1353 gdbpy_current_objfile = objfile;
1355 PyRun_SimpleString (script);
1357 do_cleanups (cleanups);
1358 gdbpy_current_objfile = NULL;
1361 /* Return the current Objfile, or None if there isn't one. */
1364 gdbpy_get_current_objfile (PyObject *unused1, PyObject *unused2)
1368 if (! gdbpy_current_objfile)
1371 result = objfile_to_objfile_object (gdbpy_current_objfile);
1377 /* Return a sequence holding all the Objfiles. */
1380 gdbpy_objfiles (PyObject *unused1, PyObject *unused2)
1382 struct objfile *objf;
1385 list = PyList_New (0);
1391 PyObject *item = objfile_to_objfile_object (objf);
1393 if (!item || PyList_Append (list, item) == -1)
1403 /* Compute the list of active python type printers and store them in
1404 EXT_PRINTERS->py_type_printers. The product of this function is used by
1405 gdbpy_apply_type_printers, and freed by gdbpy_free_type_printers.
1406 This is the extension_language_ops.start_type_printers "method". */
1409 gdbpy_start_type_printers (const struct extension_language_defn *extlang,
1410 struct ext_lang_type_printers *ext_printers)
1412 struct cleanup *cleanups;
1413 PyObject *type_module, *func = NULL, *printers_obj = NULL;
1415 if (!gdb_python_initialized)
1418 cleanups = ensure_python_env (get_current_arch (), current_language);
1420 type_module = PyImport_ImportModule ("gdb.types");
1421 if (type_module == NULL)
1423 gdbpy_print_stack ();
1427 func = PyObject_GetAttrString (type_module, "get_type_recognizers");
1430 gdbpy_print_stack ();
1434 printers_obj = PyObject_CallFunctionObjArgs (func, (char *) NULL);
1435 if (printers_obj == NULL)
1436 gdbpy_print_stack ();
1438 ext_printers->py_type_printers = printers_obj;
1441 Py_XDECREF (type_module);
1443 do_cleanups (cleanups);
1446 /* If TYPE is recognized by some type printer, store in *PRETTIED_TYPE
1447 a newly allocated string holding the type's replacement name, and return
1448 EXT_LANG_RC_OK. The caller is responsible for freeing the string.
1449 If there's a Python error return EXT_LANG_RC_ERROR.
1450 Otherwise, return EXT_LANG_RC_NOP.
1451 This is the extension_language_ops.apply_type_printers "method". */
1453 static enum ext_lang_rc
1454 gdbpy_apply_type_printers (const struct extension_language_defn *extlang,
1455 const struct ext_lang_type_printers *ext_printers,
1456 struct type *type, char **prettied_type)
1458 struct cleanup *cleanups;
1459 PyObject *type_obj, *type_module = NULL, *func = NULL;
1460 PyObject *result_obj = NULL;
1461 PyObject *printers_obj = ext_printers->py_type_printers;
1462 char *result = NULL;
1464 if (printers_obj == NULL)
1465 return EXT_LANG_RC_NOP;
1467 if (!gdb_python_initialized)
1468 return EXT_LANG_RC_NOP;
1470 cleanups = ensure_python_env (get_current_arch (), current_language);
1472 type_obj = type_to_type_object (type);
1473 if (type_obj == NULL)
1475 gdbpy_print_stack ();
1479 type_module = PyImport_ImportModule ("gdb.types");
1480 if (type_module == NULL)
1482 gdbpy_print_stack ();
1486 func = PyObject_GetAttrString (type_module, "apply_type_recognizers");
1489 gdbpy_print_stack ();
1493 result_obj = PyObject_CallFunctionObjArgs (func, printers_obj,
1494 type_obj, (char *) NULL);
1495 if (result_obj == NULL)
1497 gdbpy_print_stack ();
1501 if (result_obj != Py_None)
1503 result = python_string_to_host_string (result_obj);
1505 gdbpy_print_stack ();
1509 Py_XDECREF (type_obj);
1510 Py_XDECREF (type_module);
1512 Py_XDECREF (result_obj);
1513 do_cleanups (cleanups);
1515 *prettied_type = result;
1516 return result != NULL ? EXT_LANG_RC_OK : EXT_LANG_RC_ERROR;
1519 /* Free the result of start_type_printers.
1520 This is the extension_language_ops.free_type_printers "method". */
1523 gdbpy_free_type_printers (const struct extension_language_defn *extlang,
1524 struct ext_lang_type_printers *ext_printers)
1526 struct cleanup *cleanups;
1527 PyObject *printers = ext_printers->py_type_printers;
1529 if (printers == NULL)
1532 if (!gdb_python_initialized)
1535 cleanups = ensure_python_env (get_current_arch (), current_language);
1536 Py_DECREF (printers);
1537 do_cleanups (cleanups);
1540 #else /* HAVE_PYTHON */
1542 /* Dummy implementation of the gdb "python-interactive" and "python"
1546 python_interactive_command (char *arg, int from_tty)
1548 arg = skip_spaces (arg);
1550 error (_("Python scripting is not supported in this copy of GDB."));
1553 struct command_line *l = get_command_line (python_control, "");
1554 struct cleanup *cleanups = make_cleanup_free_command_lines (&l);
1556 execute_control_command_untraced (l);
1557 do_cleanups (cleanups);
1562 python_command (char *arg, int from_tty)
1564 python_interactive_command (arg, from_tty);
1567 #endif /* HAVE_PYTHON */
1571 /* Lists for 'set python' commands. */
1573 static struct cmd_list_element *user_set_python_list;
1574 static struct cmd_list_element *user_show_python_list;
1576 /* Function for use by 'set python' prefix command. */
1579 user_set_python (char *args, int from_tty)
1581 help_list (user_set_python_list, "set python ", all_commands,
1585 /* Function for use by 'show python' prefix command. */
1588 user_show_python (char *args, int from_tty)
1590 cmd_show_list (user_show_python_list, from_tty, "");
1593 /* Initialize the Python code. */
1597 /* This is installed as a final cleanup and cleans up the
1598 interpreter. This lets Python's 'atexit' work. */
1601 finalize_python (void *ignore)
1603 struct active_ext_lang_state *previous_active;
1605 /* We don't use ensure_python_env here because if we ever ran the
1606 cleanup, gdb would crash -- because the cleanup calls into the
1607 Python interpreter, which we are about to destroy. It seems
1608 clearer to make the needed calls explicitly here than to create a
1609 cleanup and then mysteriously discard it. */
1611 /* This is only called as a final cleanup so we can assume the active
1612 SIGINT handler is gdb's. We still need to tell it to notify Python. */
1613 previous_active = set_active_ext_lang (&extension_language_python);
1615 (void) PyGILState_Ensure ();
1616 python_gdbarch = target_gdbarch ();
1617 python_language = current_language;
1621 restore_active_ext_lang (previous_active);
1625 /* Provide a prototype to silence -Wmissing-prototypes. */
1626 extern initialize_file_ftype _initialize_python;
1629 _initialize_python (void)
1634 size_t progsize, count;
1636 wchar_t *progname_copy;
1639 add_com ("python-interactive", class_obscure,
1640 python_interactive_command,
1643 Start an interactive Python prompt.\n\
1645 To return to GDB, type the EOF character (e.g., Ctrl-D on an empty\n\
1648 Alternatively, a single-line Python command can be given as an\n\
1649 argument, and if the command is an expression, the result will be\n\
1650 printed. For example:\n\
1652 (gdb) python-interactive 2 + 3\n\
1655 #else /* HAVE_PYTHON */
1657 Start a Python interactive prompt.\n\
1659 Python scripting is not supported in this copy of GDB.\n\
1660 This command is only a placeholder.")
1661 #endif /* HAVE_PYTHON */
1663 add_com_alias ("pi", "python-interactive", class_obscure, 1);
1665 add_com ("python", class_obscure, python_command,
1668 Evaluate a Python command.\n\
1670 The command can be given as an argument, for instance:\n\
1674 If no argument is given, the following lines are read and used\n\
1675 as the Python commands. Type a line containing \"end\" to indicate\n\
1676 the end of the command.")
1677 #else /* HAVE_PYTHON */
1679 Evaluate a Python command.\n\
1681 Python scripting is not supported in this copy of GDB.\n\
1682 This command is only a placeholder.")
1683 #endif /* HAVE_PYTHON */
1685 add_com_alias ("py", "python", class_obscure, 1);
1687 /* Add set/show python print-stack. */
1688 add_prefix_cmd ("python", no_class, user_show_python,
1689 _("Prefix command for python preference settings."),
1690 &user_show_python_list, "show python ", 0,
1693 add_prefix_cmd ("python", no_class, user_set_python,
1694 _("Prefix command for python preference settings."),
1695 &user_set_python_list, "set python ", 0,
1698 add_setshow_enum_cmd ("print-stack", no_class, python_excp_enums,
1699 &gdbpy_should_print_stack, _("\
1700 Set mode for Python stack dump on error."), _("\
1701 Show the mode of Python stack printing on error."), _("\
1702 none == no stack or message will be printed.\n\
1703 full == a message and a stack will be printed.\n\
1704 message == an error message without a stack will be printed."),
1706 &user_set_python_list,
1707 &user_show_python_list);
1710 #ifdef WITH_PYTHON_PATH
1711 /* Work around problem where python gets confused about where it is,
1712 and then can't find its libraries, etc.
1713 NOTE: Python assumes the following layout:
1715 /foo/lib/pythonX.Y/...
1716 This must be done before calling Py_Initialize. */
1717 progname = concat (ldirname (python_libdir), SLASH_STRING, "bin",
1718 SLASH_STRING, "python", NULL);
1720 oldloc = setlocale (LC_ALL, NULL);
1721 setlocale (LC_ALL, "");
1722 progsize = strlen (progname);
1723 if (progsize == (size_t) -1)
1725 fprintf (stderr, "Could not convert python path to string\n");
1728 progname_copy = PyMem_Malloc ((progsize + 1) * sizeof (wchar_t));
1731 fprintf (stderr, "out of memory\n");
1734 count = mbstowcs (progname_copy, progname, progsize + 1);
1735 if (count == (size_t) -1)
1737 fprintf (stderr, "Could not convert python path to string\n");
1740 setlocale (LC_ALL, oldloc);
1742 /* Note that Py_SetProgramName expects the string it is passed to
1743 remain alive for the duration of the program's execution, so
1744 it is not freed after this call. */
1745 Py_SetProgramName (progname_copy);
1747 Py_SetProgramName (progname);
1752 PyEval_InitThreads ();
1755 gdb_module = PyModule_Create (&python_GdbModuleDef);
1756 /* Add _gdb module to the list of known built-in modules. */
1757 _PyImport_FixupBuiltin (gdb_module, "_gdb");
1759 gdb_module = Py_InitModule ("_gdb", python_GdbMethods);
1761 if (gdb_module == NULL)
1764 /* The casts to (char*) are for python 2.4. */
1765 if (PyModule_AddStringConstant (gdb_module, "VERSION", (char*) version) < 0
1766 || PyModule_AddStringConstant (gdb_module, "HOST_CONFIG",
1767 (char*) host_name) < 0
1768 || PyModule_AddStringConstant (gdb_module, "TARGET_CONFIG",
1769 (char*) target_name) < 0)
1772 /* Add stream constants. */
1773 if (PyModule_AddIntConstant (gdb_module, "STDOUT", 0) < 0
1774 || PyModule_AddIntConstant (gdb_module, "STDERR", 1) < 0
1775 || PyModule_AddIntConstant (gdb_module, "STDLOG", 2) < 0)
1778 gdbpy_gdb_error = PyErr_NewException ("gdb.error", PyExc_RuntimeError, NULL);
1779 if (gdbpy_gdb_error == NULL
1780 || gdb_pymodule_addobject (gdb_module, "error", gdbpy_gdb_error) < 0)
1783 gdbpy_gdb_memory_error = PyErr_NewException ("gdb.MemoryError",
1784 gdbpy_gdb_error, NULL);
1785 if (gdbpy_gdb_memory_error == NULL
1786 || gdb_pymodule_addobject (gdb_module, "MemoryError",
1787 gdbpy_gdb_memory_error) < 0)
1790 gdbpy_gdberror_exc = PyErr_NewException ("gdb.GdbError", NULL, NULL);
1791 if (gdbpy_gdberror_exc == NULL
1792 || gdb_pymodule_addobject (gdb_module, "GdbError",
1793 gdbpy_gdberror_exc) < 0)
1796 gdbpy_initialize_gdb_readline ();
1798 if (gdbpy_initialize_auto_load () < 0
1799 || gdbpy_initialize_values () < 0
1800 || gdbpy_initialize_frames () < 0
1801 || gdbpy_initialize_commands () < 0
1802 || gdbpy_initialize_symbols () < 0
1803 || gdbpy_initialize_symtabs () < 0
1804 || gdbpy_initialize_blocks () < 0
1805 || gdbpy_initialize_functions () < 0
1806 || gdbpy_initialize_parameters () < 0
1807 || gdbpy_initialize_types () < 0
1808 || gdbpy_initialize_pspace () < 0
1809 || gdbpy_initialize_objfile () < 0
1810 || gdbpy_initialize_breakpoints () < 0
1811 || gdbpy_initialize_finishbreakpoints () < 0
1812 || gdbpy_initialize_lazy_string () < 0
1813 || gdbpy_initialize_linetable () < 0
1814 || gdbpy_initialize_thread () < 0
1815 || gdbpy_initialize_inferior () < 0
1816 || gdbpy_initialize_events () < 0
1817 || gdbpy_initialize_eventregistry () < 0
1818 || gdbpy_initialize_py_events () < 0
1819 || gdbpy_initialize_event () < 0
1820 || gdbpy_initialize_stop_event () < 0
1821 || gdbpy_initialize_signal_event () < 0
1822 || gdbpy_initialize_breakpoint_event () < 0
1823 || gdbpy_initialize_continue_event () < 0
1824 || gdbpy_initialize_inferior_call_pre_event () < 0
1825 || gdbpy_initialize_inferior_call_post_event () < 0
1826 || gdbpy_initialize_register_changed_event () < 0
1827 || gdbpy_initialize_memory_changed_event () < 0
1828 || gdbpy_initialize_exited_event () < 0
1829 || gdbpy_initialize_thread_event () < 0
1830 || gdbpy_initialize_new_objfile_event () < 0
1831 || gdbpy_initialize_clear_objfiles_event () < 0
1832 || gdbpy_initialize_arch () < 0
1833 || gdbpy_initialize_xmethods () < 0
1834 || gdbpy_initialize_unwind () < 0)
1837 gdbpy_to_string_cst = PyString_FromString ("to_string");
1838 if (gdbpy_to_string_cst == NULL)
1840 gdbpy_children_cst = PyString_FromString ("children");
1841 if (gdbpy_children_cst == NULL)
1843 gdbpy_display_hint_cst = PyString_FromString ("display_hint");
1844 if (gdbpy_display_hint_cst == NULL)
1846 gdbpy_doc_cst = PyString_FromString ("__doc__");
1847 if (gdbpy_doc_cst == NULL)
1849 gdbpy_enabled_cst = PyString_FromString ("enabled");
1850 if (gdbpy_enabled_cst == NULL)
1852 gdbpy_value_cst = PyString_FromString ("value");
1853 if (gdbpy_value_cst == NULL)
1856 /* Release the GIL while gdb runs. */
1857 PyThreadState_Swap (NULL);
1858 PyEval_ReleaseLock ();
1860 make_final_cleanup (finalize_python, NULL);
1862 gdb_python_initialized = 1;
1866 gdbpy_print_stack ();
1867 /* Do not set 'gdb_python_initialized'. */
1870 #endif /* HAVE_PYTHON */
1875 /* Perform the remaining python initializations.
1876 These must be done after GDB is at least mostly initialized.
1877 E.g., The "info pretty-printer" command needs the "info" prefix
1879 This is the extension_language_ops.finish_initialization "method". */
1882 gdbpy_finish_initialization (const struct extension_language_defn *extlang)
1885 char *gdb_pythondir;
1887 struct cleanup *cleanup;
1889 cleanup = ensure_python_env (get_current_arch (), current_language);
1891 /* Add the initial data-directory to sys.path. */
1893 gdb_pythondir = concat (gdb_datadir, SLASH_STRING, "python", NULL);
1894 make_cleanup (xfree, gdb_pythondir);
1896 sys_path = PySys_GetObject ("path");
1898 /* If sys.path is not defined yet, define it first. */
1899 if (!(sys_path && PyList_Check (sys_path)))
1902 PySys_SetPath (L"");
1906 sys_path = PySys_GetObject ("path");
1908 if (sys_path && PyList_Check (sys_path))
1910 PyObject *pythondir;
1913 pythondir = PyString_FromString (gdb_pythondir);
1914 if (pythondir == NULL)
1917 err = PyList_Insert (sys_path, 0, pythondir);
1918 Py_DECREF (pythondir);
1925 /* Import the gdb module to finish the initialization, and
1926 add it to __main__ for convenience. */
1927 m = PyImport_AddModule ("__main__");
1931 gdb_python_module = PyImport_ImportModule ("gdb");
1932 if (gdb_python_module == NULL)
1934 gdbpy_print_stack ();
1935 /* This is passed in one call to warning so that blank lines aren't
1936 inserted between each line of text. */
1938 "Could not load the Python gdb module from `%s'.\n"
1939 "Limited Python support is available from the _gdb module.\n"
1940 "Suggest passing --data-directory=/path/to/gdb/data-directory.\n"),
1942 do_cleanups (cleanup);
1946 if (gdb_pymodule_addobject (m, "gdb", gdb_python_module) < 0)
1949 /* Keep the reference to gdb_python_module since it is in a global
1952 do_cleanups (cleanup);
1956 gdbpy_print_stack ();
1957 warning (_("internal error: Unhandled Python exception"));
1958 do_cleanups (cleanup);
1961 /* Return non-zero if Python has successfully initialized.
1962 This is the extension_languages_ops.initialized "method". */
1965 gdbpy_initialized (const struct extension_language_defn *extlang)
1967 return gdb_python_initialized;
1970 #endif /* HAVE_PYTHON */
1976 PyMethodDef python_GdbMethods[] =
1978 { "history", gdbpy_history, METH_VARARGS,
1979 "Get a value from history" },
1980 { "execute", (PyCFunction) execute_gdb_command, METH_VARARGS | METH_KEYWORDS,
1981 "execute (command [, from_tty] [, to_string]) -> [String]\n\
1982 Evaluate command, a string, as a gdb CLI command. Optionally returns\n\
1983 a Python String containing the output of the command if to_string is\n\
1985 { "parameter", gdbpy_parameter, METH_VARARGS,
1986 "Return a gdb parameter's value" },
1988 { "breakpoints", gdbpy_breakpoints, METH_NOARGS,
1989 "Return a tuple of all breakpoint objects" },
1991 { "default_visualizer", gdbpy_default_visualizer, METH_VARARGS,
1992 "Find the default visualizer for a Value." },
1994 { "current_progspace", gdbpy_get_current_progspace, METH_NOARGS,
1995 "Return the current Progspace." },
1996 { "progspaces", gdbpy_progspaces, METH_NOARGS,
1997 "Return a sequence of all progspaces." },
1999 { "current_objfile", gdbpy_get_current_objfile, METH_NOARGS,
2000 "Return the current Objfile being loaded, or None." },
2001 { "objfiles", gdbpy_objfiles, METH_NOARGS,
2002 "Return a sequence of all loaded objfiles." },
2004 { "newest_frame", gdbpy_newest_frame, METH_NOARGS,
2005 "newest_frame () -> gdb.Frame.\n\
2006 Return the newest frame object." },
2007 { "selected_frame", gdbpy_selected_frame, METH_NOARGS,
2008 "selected_frame () -> gdb.Frame.\n\
2009 Return the selected frame object." },
2010 { "frame_stop_reason_string", gdbpy_frame_stop_reason_string, METH_VARARGS,
2011 "stop_reason_string (Integer) -> String.\n\
2012 Return a string explaining unwind stop reason." },
2014 { "lookup_type", (PyCFunction) gdbpy_lookup_type,
2015 METH_VARARGS | METH_KEYWORDS,
2016 "lookup_type (name [, block]) -> type\n\
2017 Return a Type corresponding to the given name." },
2018 { "lookup_symbol", (PyCFunction) gdbpy_lookup_symbol,
2019 METH_VARARGS | METH_KEYWORDS,
2020 "lookup_symbol (name [, block] [, domain]) -> (symbol, is_field_of_this)\n\
2021 Return a tuple with the symbol corresponding to the given name (or None) and\n\
2022 a boolean indicating if name is a field of the current implied argument\n\
2023 `this' (when the current language is object-oriented)." },
2024 { "lookup_global_symbol", (PyCFunction) gdbpy_lookup_global_symbol,
2025 METH_VARARGS | METH_KEYWORDS,
2026 "lookup_global_symbol (name [, domain]) -> symbol\n\
2027 Return the symbol corresponding to the given name (or None)." },
2029 { "lookup_objfile", (PyCFunction) gdbpy_lookup_objfile,
2030 METH_VARARGS | METH_KEYWORDS,
2031 "lookup_objfile (name, [by_build_id]) -> objfile\n\
2032 Look up the specified objfile.\n\
2033 If by_build_id is True, the objfile is looked up by using name\n\
2034 as its build id." },
2036 { "block_for_pc", gdbpy_block_for_pc, METH_VARARGS,
2037 "Return the block containing the given pc value, or None." },
2038 { "solib_name", gdbpy_solib_name, METH_VARARGS,
2039 "solib_name (Long) -> String.\n\
2040 Return the name of the shared library holding a given address, or None." },
2041 { "decode_line", gdbpy_decode_line, METH_VARARGS,
2042 "decode_line (String) -> Tuple. Decode a string argument the way\n\
2043 that 'break' or 'edit' does. Return a tuple containing two elements.\n\
2044 The first element contains any unparsed portion of the String parameter\n\
2045 (or None if the string was fully parsed). The second element contains\n\
2046 a tuple that contains all the locations that match, represented as\n\
2047 gdb.Symtab_and_line objects (or None)."},
2048 { "parse_and_eval", gdbpy_parse_and_eval, METH_VARARGS,
2049 "parse_and_eval (String) -> Value.\n\
2050 Parse String as an expression, evaluate it, and return the result as a Value."
2052 { "find_pc_line", gdbpy_find_pc_line, METH_VARARGS,
2053 "find_pc_line (pc) -> Symtab_and_line.\n\
2054 Return the gdb.Symtab_and_line object corresponding to the pc value." },
2056 { "post_event", gdbpy_post_event, METH_VARARGS,
2057 "Post an event into gdb's event loop." },
2059 { "target_charset", gdbpy_target_charset, METH_NOARGS,
2060 "target_charset () -> string.\n\
2061 Return the name of the current target charset." },
2062 { "target_wide_charset", gdbpy_target_wide_charset, METH_NOARGS,
2063 "target_wide_charset () -> string.\n\
2064 Return the name of the current target wide charset." },
2066 { "string_to_argv", gdbpy_string_to_argv, METH_VARARGS,
2067 "string_to_argv (String) -> Array.\n\
2068 Parse String and return an argv-like array.\n\
2069 Arguments are separate by spaces and may be quoted."
2071 { "write", (PyCFunction)gdbpy_write, METH_VARARGS | METH_KEYWORDS,
2072 "Write a string using gdb's filtered stream." },
2073 { "flush", (PyCFunction)gdbpy_flush, METH_VARARGS | METH_KEYWORDS,
2074 "Flush gdb's filtered stdout stream." },
2075 { "selected_thread", gdbpy_selected_thread, METH_NOARGS,
2076 "selected_thread () -> gdb.InferiorThread.\n\
2077 Return the selected thread object." },
2078 { "selected_inferior", gdbpy_selected_inferior, METH_NOARGS,
2079 "selected_inferior () -> gdb.Inferior.\n\
2080 Return the selected inferior object." },
2081 { "inferiors", gdbpy_inferiors, METH_NOARGS,
2082 "inferiors () -> (gdb.Inferior, ...).\n\
2083 Return a tuple containing all inferiors." },
2084 {NULL, NULL, 0, NULL}
2088 struct PyModuleDef python_GdbModuleDef =
2090 PyModuleDef_HEAD_INIT,
2101 #endif /* HAVE_PYTHON */