1 /* General python/gdb code
3 Copyright (C) 2008, 2009, 2010, 2011 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"
31 #include "event-loop.h"
37 /* True if we should print the stack when catching a Python error,
39 static int gdbpy_should_print_stack
= 0;
43 #include "libiberty.h"
44 #include "cli/cli-decode.h"
48 #include "python-internal.h"
53 #include "gdbthread.h"
55 static PyMethodDef GdbMethods
[];
59 /* Some string constants we may wish to use. */
60 PyObject
*gdbpy_to_string_cst
;
61 PyObject
*gdbpy_children_cst
;
62 PyObject
*gdbpy_display_hint_cst
;
63 PyObject
*gdbpy_doc_cst
;
64 PyObject
*gdbpy_enabled_cst
;
65 PyObject
*gdbpy_value_cst
;
67 /* The GdbError exception. */
68 PyObject
*gdbpy_gdberror_exc
;
70 /* The `gdb.error' base class. */
71 PyObject
*gdbpy_gdb_error
;
73 /* The `gdb.MemoryError' exception. */
74 PyObject
*gdbpy_gdb_memory_error
;
76 /* Architecture and language to be used in callbacks from
77 the Python interpreter. */
78 struct gdbarch
*python_gdbarch
;
79 const struct language_defn
*python_language
;
81 /* Restore global language and architecture and Python GIL state
82 when leaving the Python interpreter. */
86 PyGILState_STATE state
;
87 struct gdbarch
*gdbarch
;
88 const struct language_defn
*language
;
89 PyObject
*error_type
, *error_value
, *error_traceback
;
93 restore_python_env (void *p
)
95 struct python_env
*env
= (struct python_env
*)p
;
97 /* Leftover Python error is forbidden by Python Exception Handling. */
98 if (PyErr_Occurred ())
100 /* This order is similar to the one calling error afterwards. */
101 gdbpy_print_stack ();
102 warning (_("internal error: Unhandled Python exception"));
105 PyErr_Restore (env
->error_type
, env
->error_value
, env
->error_traceback
);
107 PyGILState_Release (env
->state
);
108 python_gdbarch
= env
->gdbarch
;
109 python_language
= env
->language
;
113 /* Called before entering the Python interpreter to install the
114 current language and architecture to be used for Python values. */
117 ensure_python_env (struct gdbarch
*gdbarch
,
118 const struct language_defn
*language
)
120 struct python_env
*env
= xmalloc (sizeof *env
);
122 env
->state
= PyGILState_Ensure ();
123 env
->gdbarch
= python_gdbarch
;
124 env
->language
= python_language
;
126 python_gdbarch
= gdbarch
;
127 python_language
= language
;
129 /* Save it and ensure ! PyErr_Occurred () afterwards. */
130 PyErr_Fetch (&env
->error_type
, &env
->error_value
, &env
->error_traceback
);
132 return make_cleanup (restore_python_env
, env
);
136 /* Given a command_line, return a command string suitable for passing
137 to Python. Lines in the string are separated by newlines. The
138 return value is allocated using xmalloc and the caller is
139 responsible for freeing it. */
142 compute_python_string (struct command_line
*l
)
144 struct command_line
*iter
;
149 for (iter
= l
; iter
; iter
= iter
->next
)
150 size
+= strlen (iter
->line
) + 1;
152 script
= xmalloc (size
+ 1);
154 for (iter
= l
; iter
; iter
= iter
->next
)
156 int len
= strlen (iter
->line
);
158 strcpy (&script
[here
], iter
->line
);
160 script
[here
++] = '\n';
166 /* Take a command line structure representing a 'python' command, and
167 evaluate its body using the Python interpreter. */
170 eval_python_from_control_command (struct command_line
*cmd
)
174 struct cleanup
*cleanup
;
176 if (cmd
->body_count
!= 1)
177 error (_("Invalid \"python\" block structure."));
179 cleanup
= ensure_python_env (get_current_arch (), current_language
);
181 script
= compute_python_string (cmd
->body_list
[0]);
182 ret
= PyRun_SimpleString (script
);
186 gdbpy_print_stack ();
187 error (_("Error while executing Python code."));
190 do_cleanups (cleanup
);
193 /* Implementation of the gdb "python" command. */
196 python_command (char *arg
, int from_tty
)
198 struct cleanup
*cleanup
;
200 cleanup
= ensure_python_env (get_current_arch (), current_language
);
201 while (arg
&& *arg
&& isspace (*arg
))
205 if (PyRun_SimpleString (arg
))
207 gdbpy_print_stack ();
208 error (_("Error while executing Python code."));
213 struct command_line
*l
= get_command_line (python_control
, "");
215 make_cleanup_free_command_lines (&l
);
216 execute_control_command_untraced (l
);
219 do_cleanups (cleanup
);
224 /* Transform a gdb parameters's value into a Python value. May return
225 NULL (and set a Python exception) on error. Helper function for
228 gdbpy_parameter_value (enum var_types type
, void *var
)
233 case var_string_noescape
:
234 case var_optional_filename
:
238 char *str
= * (char **) var
;
242 return PyString_Decode (str
, strlen (str
), host_charset (), NULL
);
253 case var_auto_boolean
:
255 enum auto_boolean ab
= * (enum auto_boolean
*) var
;
257 if (ab
== AUTO_BOOLEAN_TRUE
)
259 else if (ab
== AUTO_BOOLEAN_FALSE
)
266 if ((* (int *) var
) == INT_MAX
)
270 return PyLong_FromLong (* (int *) var
);
274 unsigned int val
= * (unsigned int *) var
;
278 return PyLong_FromUnsignedLong (val
);
282 return PyErr_Format (PyExc_RuntimeError
,
283 _("Programmer error: unhandled type."));
286 /* A Python function which returns a gdb parameter's value as a Python
290 gdbpy_parameter (PyObject
*self
, PyObject
*args
)
292 struct cmd_list_element
*alias
, *prefix
, *cmd
;
296 volatile struct gdb_exception except
;
298 if (! PyArg_ParseTuple (args
, "s", &arg
))
301 newarg
= concat ("show ", arg
, (char *) NULL
);
303 TRY_CATCH (except
, RETURN_MASK_ALL
)
305 found
= lookup_cmd_composition (newarg
, &alias
, &prefix
, &cmd
);
308 GDB_PY_HANDLE_EXCEPTION (except
);
310 return PyErr_Format (PyExc_RuntimeError
,
311 _("Could not find parameter `%s'."), arg
);
314 return PyErr_Format (PyExc_RuntimeError
,
315 _("`%s' is not a parameter."), arg
);
316 return gdbpy_parameter_value (cmd
->var_type
, cmd
->var
);
319 /* Wrapper for target_charset. */
322 gdbpy_target_charset (PyObject
*self
, PyObject
*args
)
324 const char *cset
= target_charset (python_gdbarch
);
326 return PyUnicode_Decode (cset
, strlen (cset
), host_charset (), NULL
);
329 /* Wrapper for target_wide_charset. */
332 gdbpy_target_wide_charset (PyObject
*self
, PyObject
*args
)
334 const char *cset
= target_wide_charset (python_gdbarch
);
336 return PyUnicode_Decode (cset
, strlen (cset
), host_charset (), NULL
);
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
);
380 prevent_dont_repeat ();
382 result
= execute_command_to_string (copy
, from_tty
);
386 execute_command (copy
, from_tty
);
389 do_cleanups (cleanup
);
391 GDB_PY_HANDLE_EXCEPTION (except
);
393 /* Do any commands attached to breakpoint we stopped at. */
394 bpstat_do_actions ();
398 PyObject
*r
= PyString_FromString (result
);
405 /* Implementation of gdb.solib_name (Long) -> String.
406 Returns the name of the shared library holding a given address, or None. */
409 gdbpy_solib_name (PyObject
*self
, PyObject
*args
)
415 if (!PyArg_ParseTuple (args
, GDB_PY_LL_ARG
, &pc
))
418 soname
= solib_name_from_address (current_program_space
, pc
);
420 str_obj
= PyString_Decode (soname
, strlen (soname
), host_charset (), NULL
);
430 /* A Python function which is a wrapper for decode_line_1. */
433 gdbpy_decode_line (PyObject
*self
, PyObject
*args
)
435 struct symtabs_and_lines sals
= { NULL
, 0 }; /* Initialize to
437 struct symtab_and_line sal
;
438 const char *arg
= NULL
;
440 struct cleanup
*cleanups
;
441 PyObject
*result
= NULL
;
442 PyObject
*return_result
= NULL
;
443 PyObject
*unparsed
= NULL
;
444 volatile struct gdb_exception except
;
446 if (! PyArg_ParseTuple (args
, "|s", &arg
))
449 cleanups
= ensure_python_env (get_current_arch (), current_language
);
451 TRY_CATCH (except
, RETURN_MASK_ALL
)
455 copy
= xstrdup (arg
);
456 make_cleanup (xfree
, copy
);
457 sals
= decode_line_1 (©
, 0, 0, 0, 0);
458 make_cleanup (xfree
, sals
.sals
);
462 set_default_source_symtab_and_line ();
463 sal
= get_current_source_symtab_and_line ();
468 if (except
.reason
< 0)
470 do_cleanups (cleanups
);
471 /* We know this will always throw. */
472 GDB_PY_HANDLE_EXCEPTION (except
);
479 result
= PyTuple_New (sals
.nelts
);
482 for (i
= 0; i
< sals
.nelts
; ++i
)
487 obj
= symtab_and_line_to_sal_object (sals
.sals
[i
]);
494 PyTuple_SetItem (result
, i
, obj
);
503 return_result
= PyTuple_New (2);
510 if (copy
&& strlen (copy
) > 0)
511 unparsed
= PyString_FromString (copy
);
518 PyTuple_SetItem (return_result
, 0, unparsed
);
519 PyTuple_SetItem (return_result
, 1, result
);
521 do_cleanups (cleanups
);
523 return return_result
;
526 do_cleanups (cleanups
);
530 /* Parse a string and evaluate it as an expression. */
532 gdbpy_parse_and_eval (PyObject
*self
, PyObject
*args
)
534 const char *expr_str
;
535 struct value
*result
= NULL
;
536 volatile struct gdb_exception except
;
538 if (!PyArg_ParseTuple (args
, "s", &expr_str
))
541 TRY_CATCH (except
, RETURN_MASK_ALL
)
543 char *copy
= xstrdup (expr_str
);
544 struct cleanup
*cleanup
= make_cleanup (xfree
, copy
);
546 result
= parse_and_eval (copy
);
547 do_cleanups (cleanup
);
549 GDB_PY_HANDLE_EXCEPTION (except
);
551 return value_to_value_object (result
);
554 /* Read a file as Python code. STREAM is the input file; FILE is the
556 STREAM is not closed, that is the caller's responsibility. */
559 source_python_script (FILE *stream
, const char *file
)
561 struct cleanup
*cleanup
;
563 cleanup
= ensure_python_env (get_current_arch (), current_language
);
565 /* Note: If an exception occurs python will print the traceback and
566 clear the error indicator. */
567 PyRun_SimpleFile (stream
, file
);
569 do_cleanups (cleanup
);
574 /* Posting and handling events. */
576 /* A single event. */
579 /* The Python event. This is just a callable object. */
581 /* The next event. */
582 struct gdbpy_event
*next
;
585 /* All pending events. */
586 static struct gdbpy_event
*gdbpy_event_list
;
587 /* The final link of the event list. */
588 static struct gdbpy_event
**gdbpy_event_list_end
;
590 /* We use a file handler, and not an async handler, so that we can
591 wake up the main thread even when it is blocked in poll(). */
592 static struct serial
*gdbpy_event_fds
[2];
594 /* The file handler callback. This reads from the internal pipe, and
595 then processes the Python event queue. This will always be run in
596 the main gdb thread. */
599 gdbpy_run_events (struct serial
*scb
, void *context
)
601 struct cleanup
*cleanup
;
604 cleanup
= ensure_python_env (get_current_arch (), current_language
);
606 /* Flush the fd. Do this before flushing the events list, so that
607 any new event post afterwards is sure to re-awake the event
609 while (serial_readchar (gdbpy_event_fds
[0], 0) >= 0)
612 while (gdbpy_event_list
)
614 /* Dispatching the event might push a new element onto the event
615 loop, so we update here "atomically enough". */
616 struct gdbpy_event
*item
= gdbpy_event_list
;
617 gdbpy_event_list
= gdbpy_event_list
->next
;
618 if (gdbpy_event_list
== NULL
)
619 gdbpy_event_list_end
= &gdbpy_event_list
;
622 if (PyObject_CallObject (item
->event
, NULL
) == NULL
)
625 Py_DECREF (item
->event
);
629 do_cleanups (cleanup
);
632 /* Submit an event to the gdb thread. */
634 gdbpy_post_event (PyObject
*self
, PyObject
*args
)
636 struct gdbpy_event
*event
;
640 if (!PyArg_ParseTuple (args
, "O", &func
))
643 if (!PyCallable_Check (func
))
645 PyErr_SetString (PyExc_RuntimeError
,
646 _("Posted event is not callable"));
652 /* From here until the end of the function, we have the GIL, so we
653 can operate on our global data structures without worrying. */
654 wakeup
= gdbpy_event_list
== NULL
;
656 event
= XNEW (struct gdbpy_event
);
659 *gdbpy_event_list_end
= event
;
660 gdbpy_event_list_end
= &event
->next
;
662 /* Wake up gdb when needed. */
665 char c
= 'q'; /* Anything. */
667 if (serial_write (gdbpy_event_fds
[1], &c
, 1))
668 return PyErr_SetFromErrno (PyExc_IOError
);
674 /* Initialize the Python event handler. */
676 gdbpy_initialize_events (void)
678 if (serial_pipe (gdbpy_event_fds
) == 0)
680 gdbpy_event_list_end
= &gdbpy_event_list
;
681 serial_async (gdbpy_event_fds
[0], gdbpy_run_events
, NULL
);
687 /* A python function to write a single string using gdb's filtered
688 output stream . The optional keyword STREAM can be used to write
689 to a particular stream. The default stream is to gdb_stdout. */
692 gdbpy_write (PyObject
*self
, PyObject
*args
, PyObject
*kw
)
695 static char *keywords
[] = {"text", "stream", NULL
};
698 if (! PyArg_ParseTupleAndKeywords (args
, kw
, "s|i", keywords
, &arg
,
706 fprintf_filtered (gdb_stderr
, "%s", arg
);
711 fprintf_filtered (gdb_stdlog
, "%s", arg
);
715 fprintf_filtered (gdb_stdout
, "%s", arg
);
721 /* A python function to flush a gdb stream. The optional keyword
722 STREAM can be used to flush a particular stream. The default stream
726 gdbpy_flush (PyObject
*self
, PyObject
*args
, PyObject
*kw
)
728 static char *keywords
[] = {"stream", NULL
};
731 if (! PyArg_ParseTupleAndKeywords (args
, kw
, "|i", keywords
,
739 gdb_flush (gdb_stderr
);
744 gdb_flush (gdb_stdlog
);
748 gdb_flush (gdb_stdout
);
754 /* Print a python exception trace, or print nothing and clear the
755 python exception, depending on gdbpy_should_print_stack. Only call
756 this if a python exception is set. */
758 gdbpy_print_stack (void)
760 if (gdbpy_should_print_stack
)
763 /* PyErr_Print doesn't necessarily end output with a newline.
764 This works because Python's stdout/stderr is fed through
774 /* Return the current Progspace.
775 There always is one. */
778 gdbpy_get_current_progspace (PyObject
*unused1
, PyObject
*unused2
)
782 result
= pspace_to_pspace_object (current_program_space
);
788 /* Return a sequence holding all the Progspaces. */
791 gdbpy_progspaces (PyObject
*unused1
, PyObject
*unused2
)
793 struct program_space
*ps
;
796 list
= PyList_New (0);
802 PyObject
*item
= pspace_to_pspace_object (ps
);
804 if (!item
|| PyList_Append (list
, item
) == -1)
816 /* The "current" objfile. This is set when gdb detects that a new
817 objfile has been loaded. It is only set for the duration of a call to
818 source_python_script_for_objfile; it is NULL at other times. */
819 static struct objfile
*gdbpy_current_objfile
;
821 /* Set the current objfile to OBJFILE and then read STREAM,FILE as
825 source_python_script_for_objfile (struct objfile
*objfile
,
826 FILE *stream
, const char *file
)
828 struct cleanup
*cleanups
;
830 cleanups
= ensure_python_env (get_objfile_arch (objfile
), current_language
);
831 gdbpy_current_objfile
= objfile
;
833 /* Note: If an exception occurs python will print the traceback and
834 clear the error indicator. */
835 PyRun_SimpleFile (stream
, file
);
837 do_cleanups (cleanups
);
838 gdbpy_current_objfile
= NULL
;
841 /* Return the current Objfile, or None if there isn't one. */
844 gdbpy_get_current_objfile (PyObject
*unused1
, PyObject
*unused2
)
848 if (! gdbpy_current_objfile
)
851 result
= objfile_to_objfile_object (gdbpy_current_objfile
);
857 /* Return a sequence holding all the Objfiles. */
860 gdbpy_objfiles (PyObject
*unused1
, PyObject
*unused2
)
862 struct objfile
*objf
;
865 list
= PyList_New (0);
871 PyObject
*item
= objfile_to_objfile_object (objf
);
873 if (!item
|| PyList_Append (list
, item
) == -1)
883 #else /* HAVE_PYTHON */
885 /* Dummy implementation of the gdb "python" command. */
888 python_command (char *arg
, int from_tty
)
890 while (arg
&& *arg
&& isspace (*arg
))
893 error (_("Python scripting is not supported in this copy of GDB."));
896 struct command_line
*l
= get_command_line (python_control
, "");
897 struct cleanup
*cleanups
= make_cleanup_free_command_lines (&l
);
899 execute_control_command_untraced (l
);
900 do_cleanups (cleanups
);
905 eval_python_from_control_command (struct command_line
*cmd
)
907 error (_("Python scripting is not supported in this copy of GDB."));
911 source_python_script (FILE *stream
, const char *file
)
913 throw_error (UNSUPPORTED_ERROR
,
914 _("Python scripting is not supported in this copy of GDB."));
918 gdbpy_should_stop (struct breakpoint_object
*bp_obj
)
920 internal_error (__FILE__
, __LINE__
,
921 _("gdbpy_should_stop called when Python scripting is " \
926 gdbpy_breakpoint_has_py_cond (struct breakpoint_object
*bp_obj
)
928 internal_error (__FILE__
, __LINE__
,
929 _("gdbpy_breakpoint_has_py_cond called when Python " \
930 "scripting is not supported."));
933 #endif /* HAVE_PYTHON */
937 /* Lists for 'maint set python' commands. */
939 static struct cmd_list_element
*maint_set_python_list
;
940 static struct cmd_list_element
*maint_show_python_list
;
942 /* Lists for 'set python' commands. */
944 static struct cmd_list_element
*user_set_python_list
;
945 static struct cmd_list_element
*user_show_python_list
;
947 /* Function for use by 'maint set python' prefix command. */
950 maint_set_python (char *args
, int from_tty
)
952 help_list (maint_set_python_list
, "maintenance set python ",
953 class_deprecated
, gdb_stdout
);
956 /* Function for use by 'maint show python' prefix command. */
959 maint_show_python (char *args
, int from_tty
)
961 cmd_show_list (maint_show_python_list
, from_tty
, "");
964 /* Function for use by 'set python' prefix command. */
967 user_set_python (char *args
, int from_tty
)
969 help_list (user_set_python_list
, "set python ", all_commands
,
973 /* Function for use by 'show python' prefix command. */
976 user_show_python (char *args
, int from_tty
)
978 cmd_show_list (user_show_python_list
, from_tty
, "");
981 /* Initialize the Python code. */
983 /* Provide a prototype to silence -Wmissing-prototypes. */
984 extern initialize_file_ftype _initialize_python
;
987 _initialize_python (void)
990 struct cmd_list_element
*cmd
;
992 add_com ("python", class_obscure
, python_command
,
995 Evaluate a Python command.\n\
997 The command can be given as an argument, for instance:\n\
1001 If no argument is given, the following lines are read and used\n\
1002 as the Python commands. Type a line containing \"end\" to indicate\n\
1003 the end of the command.")
1004 #else /* HAVE_PYTHON */
1006 Evaluate a Python command.\n\
1008 Python scripting is not supported in this copy of GDB.\n\
1009 This command is only a placeholder.")
1010 #endif /* HAVE_PYTHON */
1013 add_prefix_cmd ("python", no_class
, maint_show_python
,
1014 _("Prefix command for python maintenance settings."),
1015 &maint_show_python_list
, "maintenance show python ", 0,
1016 &maintenance_show_cmdlist
);
1017 add_prefix_cmd ("python", no_class
, maint_set_python
,
1018 _("Prefix command for python maintenance settings."),
1019 &maint_set_python_list
, "maintenance set python ", 0,
1020 &maintenance_set_cmdlist
);
1022 add_setshow_boolean_cmd ("print-stack", class_maintenance
,
1023 &gdbpy_should_print_stack
, _("\
1024 Enable or disable printing of Python stack dump on error."), _("\
1025 Show whether Python stack will be printed on error."), _("\
1026 Enables or disables printing of Python stack traces."),
1028 &maint_set_python_list
,
1029 &maint_show_python_list
);
1031 /* Deprecate maint set/show python print-stack in favour of
1032 non-maintenance alternatives. */
1033 cmd_name
= "print-stack";
1034 cmd
= lookup_cmd (&cmd_name
, maint_set_python_list
, "", -1, 0);
1035 deprecate_cmd (cmd
, "set python print-stack");
1036 cmd_name
= "print-stack"; /* Reset name. */
1037 cmd
= lookup_cmd (&cmd_name
, maint_show_python_list
, "", -1, 0);
1038 deprecate_cmd (cmd
, "show python print-stack");
1040 /* Add set/show python print-stack. */
1041 add_prefix_cmd ("python", no_class
, user_show_python
,
1042 _("Prefix command for python preference settings."),
1043 &user_show_python_list
, "show python ", 0,
1046 add_prefix_cmd ("python", no_class
, user_set_python
,
1047 _("Prefix command for python preference settings."),
1048 &user_set_python_list
, "set python ", 0,
1051 add_setshow_boolean_cmd ("print-stack", no_class
,
1052 &gdbpy_should_print_stack
, _("\
1053 Enable or disable printing of Python stack dump on error."), _("\
1054 Show whether Python stack will be printed on error."), _("\
1055 Enables or disables printing of Python stack traces."),
1057 &user_set_python_list
,
1058 &user_show_python_list
);
1061 #ifdef WITH_PYTHON_PATH
1062 /* Work around problem where python gets confused about where it is,
1063 and then can't find its libraries, etc.
1064 NOTE: Python assumes the following layout:
1066 /foo/lib/pythonX.Y/...
1067 This must be done before calling Py_Initialize. */
1068 Py_SetProgramName (concat (ldirname (python_libdir
), SLASH_STRING
, "bin",
1069 SLASH_STRING
, "python", NULL
));
1073 PyEval_InitThreads ();
1075 gdb_module
= Py_InitModule ("gdb", GdbMethods
);
1077 /* The casts to (char*) are for python 2.4. */
1078 PyModule_AddStringConstant (gdb_module
, "VERSION", (char*) version
);
1079 PyModule_AddStringConstant (gdb_module
, "HOST_CONFIG", (char*) host_name
);
1080 PyModule_AddStringConstant (gdb_module
, "TARGET_CONFIG",
1081 (char*) target_name
);
1083 /* Add stream constants. */
1084 PyModule_AddIntConstant (gdb_module
, "STDOUT", 0);
1085 PyModule_AddIntConstant (gdb_module
, "STDERR", 1);
1086 PyModule_AddIntConstant (gdb_module
, "STDLOG", 2);
1088 /* gdb.parameter ("data-directory") doesn't necessarily exist when the python
1089 script below is run (depending on order of _initialize_* functions).
1090 Define the initial value of gdb.PYTHONDIR here. */
1092 char *gdb_pythondir
;
1094 gdb_pythondir
= concat (gdb_datadir
, SLASH_STRING
, "python", NULL
);
1095 PyModule_AddStringConstant (gdb_module
, "PYTHONDIR", gdb_pythondir
);
1096 xfree (gdb_pythondir
);
1099 gdbpy_gdb_error
= PyErr_NewException ("gdb.error", PyExc_RuntimeError
, NULL
);
1100 PyModule_AddObject (gdb_module
, "error", gdbpy_gdb_error
);
1102 gdbpy_gdb_memory_error
= PyErr_NewException ("gdb.MemoryError",
1103 gdbpy_gdb_error
, NULL
);
1104 PyModule_AddObject (gdb_module
, "MemoryError", gdbpy_gdb_memory_error
);
1106 gdbpy_gdberror_exc
= PyErr_NewException ("gdb.GdbError", NULL
, NULL
);
1107 PyModule_AddObject (gdb_module
, "GdbError", gdbpy_gdberror_exc
);
1109 gdbpy_initialize_auto_load ();
1110 gdbpy_initialize_values ();
1111 gdbpy_initialize_frames ();
1112 gdbpy_initialize_commands ();
1113 gdbpy_initialize_symbols ();
1114 gdbpy_initialize_symtabs ();
1115 gdbpy_initialize_blocks ();
1116 gdbpy_initialize_functions ();
1117 gdbpy_initialize_parameters ();
1118 gdbpy_initialize_types ();
1119 gdbpy_initialize_pspace ();
1120 gdbpy_initialize_objfile ();
1121 gdbpy_initialize_breakpoints ();
1122 gdbpy_initialize_lazy_string ();
1123 gdbpy_initialize_thread ();
1124 gdbpy_initialize_inferior ();
1125 gdbpy_initialize_events ();
1127 gdbpy_initialize_eventregistry ();
1128 gdbpy_initialize_py_events ();
1129 gdbpy_initialize_event ();
1130 gdbpy_initialize_stop_event ();
1131 gdbpy_initialize_signal_event ();
1132 gdbpy_initialize_breakpoint_event ();
1133 gdbpy_initialize_continue_event ();
1134 gdbpy_initialize_exited_event ();
1135 gdbpy_initialize_thread_event ();
1137 PyRun_SimpleString ("import gdb");
1138 PyRun_SimpleString ("gdb.pretty_printers = []");
1140 gdbpy_to_string_cst
= PyString_FromString ("to_string");
1141 gdbpy_children_cst
= PyString_FromString ("children");
1142 gdbpy_display_hint_cst
= PyString_FromString ("display_hint");
1143 gdbpy_doc_cst
= PyString_FromString ("__doc__");
1144 gdbpy_enabled_cst
= PyString_FromString ("enabled");
1145 gdbpy_value_cst
= PyString_FromString ("value");
1147 /* Release the GIL while gdb runs. */
1148 PyThreadState_Swap (NULL
);
1149 PyEval_ReleaseLock ();
1151 #endif /* HAVE_PYTHON */
1156 /* Perform the remaining python initializations.
1157 These must be done after GDB is at least mostly initialized.
1158 E.g., The "info pretty-printer" command needs the "info" prefix
1159 command installed. */
1162 finish_python_initialization (void)
1164 struct cleanup
*cleanup
;
1166 cleanup
= ensure_python_env (get_current_arch (), current_language
);
1168 PyRun_SimpleString ("\
1172 class GdbOutputFile:\n\
1177 def isatty(self):\n\
1180 def write(self, s):\n\
1181 gdb.write(s, stream=gdb.STDOUT)\n \
1183 def writelines(self, iterable):\n\
1184 for line in iterable:\n\
1190 sys.stdout = GdbOutputFile()\n\
1192 class GdbOutputErrorFile:\n\
1197 def isatty(self):\n\
1200 def write(self, s):\n\
1201 gdb.write(s, stream=gdb.STDERR)\n \
1203 def writelines(self, iterable):\n\
1204 for line in iterable:\n\
1205 self.write(line)\n \
1210 sys.stderr = GdbOutputErrorFile()\n\
1212 # Ideally this would live in the gdb module, but it's intentionally written\n\
1213 # in python, and we need this to bootstrap the gdb module.\n\
1215 def GdbSetPythonDirectory (dir):\n\
1216 \"Set gdb.PYTHONDIR and update sys.path,etc.\"\n\
1217 old_dir = gdb.PYTHONDIR\n\
1218 gdb.PYTHONDIR = dir\n\
1219 # GDB's python scripts are stored inside gdb.PYTHONDIR. So insert\n\
1220 # that directory name at the start of sys.path to allow the Python\n\
1221 # interpreter to find them.\n\
1222 if old_dir in sys.path:\n\
1223 sys.path.remove (old_dir)\n\
1224 sys.path.insert (0, gdb.PYTHONDIR)\n\
1226 # Tell python where to find submodules of gdb.\n\
1227 gdb.__path__ = [gdb.PYTHONDIR + '/gdb']\n\
1229 # The gdb module is implemented in C rather than in Python. As a result,\n\
1230 # the associated __init.py__ script is not not executed by default when\n\
1231 # the gdb module gets imported. Execute that script manually if it\n\
1233 ipy = gdb.PYTHONDIR + '/gdb/__init__.py'\n\
1234 if os.path.exists (ipy):\n\
1237 # Install the default gdb.PYTHONDIR.\n\
1238 GdbSetPythonDirectory (gdb.PYTHONDIR)\n\
1241 do_cleanups (cleanup
);
1244 #endif /* HAVE_PYTHON */
1250 static PyMethodDef GdbMethods
[] =
1252 { "history", gdbpy_history
, METH_VARARGS
,
1253 "Get a value from history" },
1254 { "execute", (PyCFunction
) execute_gdb_command
, METH_VARARGS
| METH_KEYWORDS
,
1255 "Execute a gdb command" },
1256 { "parameter", gdbpy_parameter
, METH_VARARGS
,
1257 "Return a gdb parameter's value" },
1259 { "breakpoints", gdbpy_breakpoints
, METH_NOARGS
,
1260 "Return a tuple of all breakpoint objects" },
1262 { "default_visualizer", gdbpy_default_visualizer
, METH_VARARGS
,
1263 "Find the default visualizer for a Value." },
1265 { "current_progspace", gdbpy_get_current_progspace
, METH_NOARGS
,
1266 "Return the current Progspace." },
1267 { "progspaces", gdbpy_progspaces
, METH_NOARGS
,
1268 "Return a sequence of all progspaces." },
1270 { "current_objfile", gdbpy_get_current_objfile
, METH_NOARGS
,
1271 "Return the current Objfile being loaded, or None." },
1272 { "objfiles", gdbpy_objfiles
, METH_NOARGS
,
1273 "Return a sequence of all loaded objfiles." },
1275 { "newest_frame", gdbpy_newest_frame
, METH_NOARGS
,
1276 "newest_frame () -> gdb.Frame.\n\
1277 Return the newest frame object." },
1278 { "selected_frame", gdbpy_selected_frame
, METH_NOARGS
,
1279 "selected_frame () -> gdb.Frame.\n\
1280 Return the selected frame object." },
1281 { "frame_stop_reason_string", gdbpy_frame_stop_reason_string
, METH_VARARGS
,
1282 "stop_reason_string (Integer) -> String.\n\
1283 Return a string explaining unwind stop reason." },
1285 { "lookup_type", (PyCFunction
) gdbpy_lookup_type
,
1286 METH_VARARGS
| METH_KEYWORDS
,
1287 "lookup_type (name [, block]) -> type\n\
1288 Return a Type corresponding to the given name." },
1289 { "lookup_symbol", (PyCFunction
) gdbpy_lookup_symbol
,
1290 METH_VARARGS
| METH_KEYWORDS
,
1291 "lookup_symbol (name [, block] [, domain]) -> (symbol, is_field_of_this)\n\
1292 Return a tuple with the symbol corresponding to the given name (or None) and\n\
1293 a boolean indicating if name is a field of the current implied argument\n\
1294 `this' (when the current language is object-oriented)." },
1295 { "lookup_global_symbol", (PyCFunction
) gdbpy_lookup_global_symbol
,
1296 METH_VARARGS
| METH_KEYWORDS
,
1297 "lookup_global_symbol (name [, domain]) -> symbol\n\
1298 Return the symbol corresponding to the given name (or None)." },
1299 { "block_for_pc", gdbpy_block_for_pc
, METH_VARARGS
,
1300 "Return the block containing the given pc value, or None." },
1301 { "solib_name", gdbpy_solib_name
, METH_VARARGS
,
1302 "solib_name (Long) -> String.\n\
1303 Return the name of the shared library holding a given address, or None." },
1304 { "decode_line", gdbpy_decode_line
, METH_VARARGS
,
1305 "decode_line (String) -> Tuple. Decode a string argument the way\n\
1306 that 'break' or 'edit' does. Return a tuple containing two elements.\n\
1307 The first element contains any unparsed portion of the String parameter\n\
1308 (or None if the string was fully parsed). The second element contains\n\
1309 a tuple that contains all the locations that match, represented as\n\
1310 gdb.Symtab_and_line objects (or None)."},
1311 { "parse_and_eval", gdbpy_parse_and_eval
, METH_VARARGS
,
1312 "parse_and_eval (String) -> Value.\n\
1313 Parse String as an expression, evaluate it, and return the result as a Value."
1316 { "post_event", gdbpy_post_event
, METH_VARARGS
,
1317 "Post an event into gdb's event loop." },
1319 { "target_charset", gdbpy_target_charset
, METH_NOARGS
,
1320 "target_charset () -> string.\n\
1321 Return the name of the current target charset." },
1322 { "target_wide_charset", gdbpy_target_wide_charset
, METH_NOARGS
,
1323 "target_wide_charset () -> string.\n\
1324 Return the name of the current target wide charset." },
1326 { "string_to_argv", gdbpy_string_to_argv
, METH_VARARGS
,
1327 "string_to_argv (String) -> Array.\n\
1328 Parse String and return an argv-like array.\n\
1329 Arguments are separate by spaces and may be quoted."
1331 { "write", (PyCFunction
)gdbpy_write
, METH_VARARGS
| METH_KEYWORDS
,
1332 "Write a string using gdb's filtered stream." },
1333 { "flush", (PyCFunction
)gdbpy_flush
, METH_VARARGS
| METH_KEYWORDS
,
1334 "Flush gdb's filtered stdout stream." },
1335 { "selected_thread", gdbpy_selected_thread
, METH_NOARGS
,
1336 "selected_thread () -> gdb.InferiorThread.\n\
1337 Return the selected thread object." },
1338 { "inferiors", gdbpy_inferiors
, METH_NOARGS
,
1339 "inferiors () -> (gdb.Inferior, ...).\n\
1340 Return a tuple containing all inferiors." },
1341 {NULL
, NULL
, 0, NULL
}
1344 #endif /* HAVE_PYTHON */