1 /* General python/gdb code
3 Copyright (C) 2008, 2009, 2010 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 "exceptions.h"
34 /* True if we should print the stack when catching a Python error,
36 static int gdbpy_should_print_stack = 1;
41 #include "libiberty.h"
42 #include "cli/cli-decode.h"
45 #include "python-internal.h"
48 #include "gdbthread.h"
50 static PyMethodDef GdbMethods[];
54 /* Some string constants we may wish to use. */
55 PyObject *gdbpy_to_string_cst;
56 PyObject *gdbpy_children_cst;
57 PyObject *gdbpy_display_hint_cst;
58 PyObject *gdbpy_doc_cst;
59 PyObject *gdbpy_enabled_cst;
61 /* The GdbError exception. */
62 PyObject *gdbpy_gdberror_exc;
64 /* Architecture and language to be used in callbacks from
65 the Python interpreter. */
66 struct gdbarch *python_gdbarch;
67 const struct language_defn *python_language;
69 /* Restore global language and architecture and Python GIL state
70 when leaving the Python interpreter. */
74 PyGILState_STATE state;
75 struct gdbarch *gdbarch;
76 const struct language_defn *language;
80 restore_python_env (void *p)
82 struct python_env *env = (struct python_env *)p;
84 PyGILState_Release (env->state);
85 python_gdbarch = env->gdbarch;
86 python_language = env->language;
90 /* Called before entering the Python interpreter to install the
91 current language and architecture to be used for Python values. */
94 ensure_python_env (struct gdbarch *gdbarch,
95 const struct language_defn *language)
97 struct python_env *env = xmalloc (sizeof *env);
99 env->state = PyGILState_Ensure ();
100 env->gdbarch = python_gdbarch;
101 env->language = python_language;
103 python_gdbarch = gdbarch;
104 python_language = language;
106 return make_cleanup (restore_python_env, env);
110 /* Given a command_line, return a command string suitable for passing
111 to Python. Lines in the string are separated by newlines. The
112 return value is allocated using xmalloc and the caller is
113 responsible for freeing it. */
116 compute_python_string (struct command_line *l)
118 struct command_line *iter;
123 for (iter = l; iter; iter = iter->next)
124 size += strlen (iter->line) + 1;
126 script = xmalloc (size + 1);
128 for (iter = l; iter; iter = iter->next)
130 int len = strlen (iter->line);
132 strcpy (&script[here], iter->line);
134 script[here++] = '\n';
140 /* Take a command line structure representing a 'python' command, and
141 evaluate its body using the Python interpreter. */
144 eval_python_from_control_command (struct command_line *cmd)
148 struct cleanup *cleanup;
150 if (cmd->body_count != 1)
151 error (_("Invalid \"python\" block structure."));
153 cleanup = ensure_python_env (get_current_arch (), current_language);
155 script = compute_python_string (cmd->body_list[0]);
156 ret = PyRun_SimpleString (script);
160 gdbpy_print_stack ();
161 error (_("Error while executing Python code."));
164 do_cleanups (cleanup);
167 /* Implementation of the gdb "python" command. */
170 python_command (char *arg, int from_tty)
172 struct cleanup *cleanup;
174 cleanup = ensure_python_env (get_current_arch (), current_language);
175 while (arg && *arg && isspace (*arg))
179 if (PyRun_SimpleString (arg))
181 gdbpy_print_stack ();
182 error (_("Error while executing Python code."));
187 struct command_line *l = get_command_line (python_control, "");
189 make_cleanup_free_command_lines (&l);
190 execute_control_command_untraced (l);
193 do_cleanups (cleanup);
198 /* Transform a gdb parameters's value into a Python value. May return
199 NULL (and set a Python exception) on error. Helper function for
202 gdbpy_parameter_value (enum var_types type, void *var)
207 case var_string_noescape:
208 case var_optional_filename:
212 char *str = * (char **) var;
216 return PyString_Decode (str, strlen (str), host_charset (), NULL);
227 case var_auto_boolean:
229 enum auto_boolean ab = * (enum auto_boolean *) var;
231 if (ab == AUTO_BOOLEAN_TRUE)
233 else if (ab == AUTO_BOOLEAN_FALSE)
240 if ((* (int *) var) == INT_MAX)
244 return PyLong_FromLong (* (int *) var);
248 unsigned int val = * (unsigned int *) var;
252 return PyLong_FromUnsignedLong (val);
256 return PyErr_Format (PyExc_RuntimeError,
257 _("Programmer error: unhandled type."));
260 /* A Python function which returns a gdb parameter's value as a Python
264 gdbpy_parameter (PyObject *self, PyObject *args)
266 struct cmd_list_element *alias, *prefix, *cmd;
269 volatile struct gdb_exception except;
271 if (! PyArg_ParseTuple (args, "s", &arg))
274 newarg = concat ("show ", arg, (char *) NULL);
276 TRY_CATCH (except, RETURN_MASK_ALL)
278 found = lookup_cmd_composition (newarg, &alias, &prefix, &cmd);
281 GDB_PY_HANDLE_EXCEPTION (except);
283 return PyErr_Format (PyExc_RuntimeError,
284 _("Could not find parameter `%s'."), arg);
287 return PyErr_Format (PyExc_RuntimeError,
288 _("`%s' is not a parameter."), arg);
289 return gdbpy_parameter_value (cmd->var_type, cmd->var);
292 /* Wrapper for target_charset. */
295 gdbpy_target_charset (PyObject *self, PyObject *args)
297 const char *cset = target_charset (python_gdbarch);
299 return PyUnicode_Decode (cset, strlen (cset), host_charset (), NULL);
302 /* Wrapper for target_wide_charset. */
305 gdbpy_target_wide_charset (PyObject *self, PyObject *args)
307 const char *cset = target_wide_charset (python_gdbarch);
309 return PyUnicode_Decode (cset, strlen (cset), host_charset (), NULL);
312 struct restore_ui_file_closure
314 struct ui_file **variable;
315 struct ui_file *value;
319 restore_ui_file (void *p)
321 struct restore_ui_file_closure *closure = p;
323 *(closure->variable) = closure->value;
326 /* Remember the current value of *VARIABLE and make it restored when
327 the cleanup is run. */
329 make_cleanup_restore_ui_file (struct ui_file **variable)
331 struct restore_ui_file_closure *c = XNEW (struct restore_ui_file_closure);
333 c->variable = variable;
334 c->value = *variable;
336 return make_cleanup_dtor (restore_ui_file, (void *) c, xfree);
339 /* A Python function which evaluates a string using the gdb CLI. */
342 execute_gdb_command (PyObject *self, PyObject *args, PyObject *kw)
345 PyObject *from_tty_obj = NULL, *to_string_obj = NULL;
346 int from_tty, to_string;
347 volatile struct gdb_exception except;
348 static char *keywords[] = {"command", "from_tty", "to_string", NULL };
351 if (! PyArg_ParseTupleAndKeywords (args, kw, "s|O!O!", keywords, &arg,
352 &PyBool_Type, &from_tty_obj,
353 &PyBool_Type, &to_string_obj))
359 int cmp = PyObject_IsTrue (from_tty_obj);
368 int cmp = PyObject_IsTrue (to_string_obj);
374 TRY_CATCH (except, RETURN_MASK_ALL)
376 /* Copy the argument text in case the command modifies it. */
377 char *copy = xstrdup (arg);
378 struct cleanup *cleanup = make_cleanup (xfree, copy);
379 struct ui_file *str_file = NULL;
383 str_file = mem_fileopen ();
385 make_cleanup_restore_ui_file (&gdb_stdout);
386 make_cleanup_restore_ui_file (&gdb_stderr);
387 make_cleanup_ui_file_delete (str_file);
389 gdb_stdout = str_file;
390 gdb_stderr = str_file;
393 execute_command (copy, from_tty);
396 result = ui_file_xstrdup (str_file, NULL);
400 do_cleanups (cleanup);
402 GDB_PY_HANDLE_EXCEPTION (except);
404 /* Do any commands attached to breakpoint we stopped at. */
405 bpstat_do_actions ();
409 PyObject *r = PyString_FromString (result);
416 /* Parse a string and evaluate it as an expression. */
418 gdbpy_parse_and_eval (PyObject *self, PyObject *args)
421 struct value *result = NULL;
422 volatile struct gdb_exception except;
424 if (!PyArg_ParseTuple (args, "s", &expr_str))
427 TRY_CATCH (except, RETURN_MASK_ALL)
429 result = parse_and_eval (expr_str);
431 GDB_PY_HANDLE_EXCEPTION (except);
433 return value_to_value_object (result);
436 /* Read a file as Python code. STREAM is the input file; FILE is the
438 STREAM is not closed, that is the caller's responsibility. */
441 source_python_script (FILE *stream, const char *file)
443 struct cleanup *cleanup;
445 cleanup = ensure_python_env (get_current_arch (), current_language);
447 /* Note: If an exception occurs python will print the traceback and
448 clear the error indicator. */
449 PyRun_SimpleFile (stream, file);
451 do_cleanups (cleanup);
458 /* A python function to write a single string using gdb's filtered
461 gdbpy_write (PyObject *self, PyObject *args)
465 if (! PyArg_ParseTuple (args, "s", &arg))
467 printf_filtered ("%s", arg);
471 /* A python function to flush gdb's filtered output stream. */
473 gdbpy_flush (PyObject *self, PyObject *args)
475 gdb_flush (gdb_stdout);
479 /* Print a python exception trace, or print nothing and clear the
480 python exception, depending on gdbpy_should_print_stack. Only call
481 this if a python exception is set. */
483 gdbpy_print_stack (void)
485 if (gdbpy_should_print_stack)
488 /* PyErr_Print doesn't necessarily end output with a newline.
489 This works because Python's stdout/stderr is fed through
499 /* Return the current Progspace.
500 There always is one. */
503 gdbpy_get_current_progspace (PyObject *unused1, PyObject *unused2)
507 result = pspace_to_pspace_object (current_program_space);
513 /* Return a sequence holding all the Progspaces. */
516 gdbpy_progspaces (PyObject *unused1, PyObject *unused2)
518 struct program_space *ps;
521 list = PyList_New (0);
527 PyObject *item = pspace_to_pspace_object (ps);
529 if (!item || PyList_Append (list, item) == -1)
541 /* The "current" objfile. This is set when gdb detects that a new
542 objfile has been loaded. It is only set for the duration of a call to
543 source_python_script_for_objfile; it is NULL at other times. */
544 static struct objfile *gdbpy_current_objfile;
546 /* Set the current objfile to OBJFILE and then read STREAM,FILE as
550 source_python_script_for_objfile (struct objfile *objfile,
551 FILE *stream, const char *file)
553 struct cleanup *cleanups;
555 cleanups = ensure_python_env (get_objfile_arch (objfile), current_language);
556 gdbpy_current_objfile = objfile;
558 /* Note: If an exception occurs python will print the traceback and
559 clear the error indicator. */
560 PyRun_SimpleFile (stream, file);
562 do_cleanups (cleanups);
563 gdbpy_current_objfile = NULL;
566 /* Return the current Objfile, or None if there isn't one. */
569 gdbpy_get_current_objfile (PyObject *unused1, PyObject *unused2)
573 if (! gdbpy_current_objfile)
576 result = objfile_to_objfile_object (gdbpy_current_objfile);
582 /* Return a sequence holding all the Objfiles. */
585 gdbpy_objfiles (PyObject *unused1, PyObject *unused2)
587 struct objfile *objf;
590 list = PyList_New (0);
596 PyObject *item = objfile_to_objfile_object (objf);
598 if (!item || PyList_Append (list, item) == -1)
608 #else /* HAVE_PYTHON */
610 /* Dummy implementation of the gdb "python" command. */
613 python_command (char *arg, int from_tty)
615 while (arg && *arg && isspace (*arg))
618 error (_("Python scripting is not supported in this copy of GDB."));
621 struct command_line *l = get_command_line (python_control, "");
622 struct cleanup *cleanups = make_cleanup_free_command_lines (&l);
624 execute_control_command_untraced (l);
625 do_cleanups (cleanups);
630 eval_python_from_control_command (struct command_line *cmd)
632 error (_("Python scripting is not supported in this copy of GDB."));
636 source_python_script (FILE *stream, const char *file)
638 throw_error (UNSUPPORTED_ERROR,
639 _("Python scripting is not supported in this copy of GDB."));
642 #endif /* HAVE_PYTHON */
646 /* Lists for 'maint set python' commands. */
648 struct cmd_list_element *set_python_list;
649 struct cmd_list_element *show_python_list;
651 /* Function for use by 'maint set python' prefix command. */
654 set_python (char *args, int from_tty)
656 help_list (set_python_list, "maintenance set python ", -1, gdb_stdout);
659 /* Function for use by 'maint show python' prefix command. */
662 show_python (char *args, int from_tty)
664 cmd_show_list (show_python_list, from_tty, "");
667 /* Initialize the Python code. */
669 /* Provide a prototype to silence -Wmissing-prototypes. */
670 extern initialize_file_ftype _initialize_python;
673 _initialize_python (void)
675 add_com ("python", class_obscure, python_command,
678 Evaluate a Python command.\n\
680 The command can be given as an argument, for instance:\n\
684 If no argument is given, the following lines are read and used\n\
685 as the Python commands. Type a line containing \"end\" to indicate\n\
686 the end of the command.")
687 #else /* HAVE_PYTHON */
689 Evaluate a Python command.\n\
691 Python scripting is not supported in this copy of GDB.\n\
692 This command is only a placeholder.")
693 #endif /* HAVE_PYTHON */
696 add_prefix_cmd ("python", no_class, show_python,
697 _("Prefix command for python maintenance settings."),
698 &show_python_list, "maintenance show python ", 0,
699 &maintenance_show_cmdlist);
700 add_prefix_cmd ("python", no_class, set_python,
701 _("Prefix command for python maintenance settings."),
702 &set_python_list, "maintenance set python ", 0,
703 &maintenance_set_cmdlist);
705 add_setshow_boolean_cmd ("print-stack", class_maintenance,
706 &gdbpy_should_print_stack, _("\
707 Enable or disable printing of Python stack dump on error."), _("\
708 Show whether Python stack will be printed on error."), _("\
709 Enables or disables printing of Python stack traces."),
715 #ifdef WITH_PYTHON_PATH
716 /* Work around problem where python gets confused about where it is,
717 and then can't find its libraries, etc.
718 NOTE: Python assumes the following layout:
720 /foo/lib/pythonX.Y/...
721 This must be done before calling Py_Initialize. */
722 Py_SetProgramName (concat (ldirname (python_libdir), SLASH_STRING, "bin",
723 SLASH_STRING, "python", NULL));
727 PyEval_InitThreads ();
729 gdb_module = Py_InitModule ("gdb", GdbMethods);
731 /* The casts to (char*) are for python 2.4. */
732 PyModule_AddStringConstant (gdb_module, "VERSION", (char*) version);
733 PyModule_AddStringConstant (gdb_module, "HOST_CONFIG", (char*) host_name);
734 PyModule_AddStringConstant (gdb_module, "TARGET_CONFIG", (char*) target_name);
738 gdb_pythondir = concat (gdb_datadir, SLASH_STRING, "python", NULL);
739 PyModule_AddStringConstant (gdb_module, "PYTHONDIR", gdb_pythondir);
740 xfree (gdb_pythondir);
743 gdbpy_gdberror_exc = PyErr_NewException ("gdb.GdbError", NULL, NULL);
744 PyModule_AddObject (gdb_module, "GdbError", gdbpy_gdberror_exc);
746 gdbpy_initialize_auto_load ();
747 gdbpy_initialize_values ();
748 gdbpy_initialize_frames ();
749 gdbpy_initialize_commands ();
750 gdbpy_initialize_symbols ();
751 gdbpy_initialize_symtabs ();
752 gdbpy_initialize_blocks ();
753 gdbpy_initialize_functions ();
754 gdbpy_initialize_parameters ();
755 gdbpy_initialize_types ();
756 gdbpy_initialize_pspace ();
757 gdbpy_initialize_objfile ();
758 gdbpy_initialize_breakpoints ();
759 gdbpy_initialize_lazy_string ();
760 gdbpy_initialize_thread ();
761 gdbpy_initialize_inferior ();
763 PyRun_SimpleString ("import gdb");
764 PyRun_SimpleString ("gdb.pretty_printers = []");
766 gdbpy_to_string_cst = PyString_FromString ("to_string");
767 gdbpy_children_cst = PyString_FromString ("children");
768 gdbpy_display_hint_cst = PyString_FromString ("display_hint");
769 gdbpy_doc_cst = PyString_FromString ("__doc__");
770 gdbpy_enabled_cst = PyString_FromString ("enabled");
772 /* Create a couple objects which are used for Python's stdout and
774 PyRun_SimpleString ("\
776 class GdbOutputFile:\n\
784 def write(self, s):\n\
787 def writelines(self, iterable):\n\
788 for line in iterable:\n\
794 sys.stderr = GdbOutputFile()\n\
795 sys.stdout = GdbOutputFile()\n\
797 # GDB's python scripts are stored inside gdb.PYTHONDIR. So insert\n\
798 # that directory name at the start of sys.path to allow the Python\n\
799 # interpreter to find them.\n\
800 sys.path.insert(0, gdb.PYTHONDIR)\n\
802 # The gdb module is implemented in C rather than in Python. As a result,\n\
803 # the associated __init.py__ script is not not executed by default when\n\
804 # the gdb module gets imported. Execute that script manually if it exists.\n\
805 gdb.__path__ = [gdb.PYTHONDIR + '/gdb']\n\
806 from os.path import exists\n\
807 ipy = gdb.PYTHONDIR + '/gdb/__init__.py'\n\
812 /* Release the GIL while gdb runs. */
813 PyThreadState_Swap (NULL);
814 PyEval_ReleaseLock ();
816 #endif /* HAVE_PYTHON */
823 static PyMethodDef GdbMethods[] =
825 { "history", gdbpy_history, METH_VARARGS,
826 "Get a value from history" },
827 { "execute", (PyCFunction) execute_gdb_command, METH_VARARGS | METH_KEYWORDS,
828 "Execute a gdb command" },
829 { "parameter", gdbpy_parameter, METH_VARARGS,
830 "Return a gdb parameter's value" },
832 { "breakpoints", gdbpy_breakpoints, METH_NOARGS,
833 "Return a tuple of all breakpoint objects" },
835 { "default_visualizer", gdbpy_default_visualizer, METH_VARARGS,
836 "Find the default visualizer for a Value." },
838 { "current_progspace", gdbpy_get_current_progspace, METH_NOARGS,
839 "Return the current Progspace." },
840 { "progspaces", gdbpy_progspaces, METH_NOARGS,
841 "Return a sequence of all progspaces." },
843 { "current_objfile", gdbpy_get_current_objfile, METH_NOARGS,
844 "Return the current Objfile being loaded, or None." },
845 { "objfiles", gdbpy_objfiles, METH_NOARGS,
846 "Return a sequence of all loaded objfiles." },
848 { "selected_frame", gdbpy_selected_frame, METH_NOARGS,
849 "selected_frame () -> gdb.Frame.\n\
850 Return the selected frame object." },
851 { "frame_stop_reason_string", gdbpy_frame_stop_reason_string, METH_VARARGS,
852 "stop_reason_string (Integer) -> String.\n\
853 Return a string explaining unwind stop reason." },
855 { "lookup_type", (PyCFunction) gdbpy_lookup_type,
856 METH_VARARGS | METH_KEYWORDS,
857 "lookup_type (name [, block]) -> type\n\
858 Return a Type corresponding to the given name." },
859 { "lookup_symbol", (PyCFunction) gdbpy_lookup_symbol,
860 METH_VARARGS | METH_KEYWORDS,
861 "lookup_symbol (name [, block] [, domain]) -> (symbol, is_field_of_this)\n\
862 Return a tuple with the symbol corresponding to the given name (or None) and\n\
863 a boolean indicating if name is a field of the current implied argument\n\
864 `this' (when the current language is object-oriented)." },
865 { "block_for_pc", gdbpy_block_for_pc, METH_VARARGS,
866 "Return the block containing the given pc value, or None." },
867 { "parse_and_eval", gdbpy_parse_and_eval, METH_VARARGS,
868 "parse_and_eval (String) -> Value.\n\
869 Parse String as an expression, evaluate it, and return the result as a Value."
872 { "target_charset", gdbpy_target_charset, METH_NOARGS,
873 "target_charset () -> string.\n\
874 Return the name of the current target charset." },
875 { "target_wide_charset", gdbpy_target_wide_charset, METH_NOARGS,
876 "target_wide_charset () -> string.\n\
877 Return the name of the current target wide charset." },
879 { "string_to_argv", gdbpy_string_to_argv, METH_VARARGS,
880 "string_to_argv (String) -> Array.\n\
881 Parse String and return an argv-like array.\n\
882 Arguments are separate by spaces and may be quoted."
885 { "write", gdbpy_write, METH_VARARGS,
886 "Write a string using gdb's filtered stream." },
887 { "flush", gdbpy_flush, METH_NOARGS,
888 "Flush gdb's filtered stdout stream." },
889 { "selected_thread", gdbpy_selected_thread, METH_NOARGS,
890 "selected_thread () -> gdb.InferiorThread.\n\
891 Return the selected thread object." },
892 { "inferiors", gdbpy_inferiors, METH_NOARGS,
893 "inferiors () -> (gdb.Inferior, ...).\n\
894 Return a tuple containing all inferiors." },
895 {NULL, NULL, 0, NULL}
898 #endif /* HAVE_PYTHON */