xref: /netbsd-src/external/gpl3/gdb.old/dist/gdb/python/python.c (revision d909946ca08dceb44d7d0f22ec9488679695d976)
1 /* General python/gdb code
2 
3    Copyright (C) 2008-2015 Free Software Foundation, Inc.
4 
5    This file is part of GDB.
6 
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.
11 
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.
16 
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/>.  */
19 
20 #include "defs.h"
21 #include "arch-utils.h"
22 #include "command.h"
23 #include "ui-out.h"
24 #include "cli/cli-script.h"
25 #include "gdbcmd.h"
26 #include "progspace.h"
27 #include "objfiles.h"
28 #include "value.h"
29 #include "language.h"
30 #include "event-loop.h"
31 #include "serial.h"
32 #include "readline/tilde.h"
33 #include "python.h"
34 #include "extension-priv.h"
35 #include "cli/cli-utils.h"
36 #include <ctype.h>
37 
38 /* Declared constants and enum for python stack printing.  */
39 static const char python_excp_none[] = "none";
40 static const char python_excp_full[] = "full";
41 static const char python_excp_message[] = "message";
42 
43 /* "set python print-stack" choices.  */
44 static const char *const python_excp_enums[] =
45   {
46     python_excp_none,
47     python_excp_full,
48     python_excp_message,
49     NULL
50   };
51 
52 /* The exception printing variable.  'full' if we want to print the
53    error message and stack, 'none' if we want to print nothing, and
54    'message' if we only want to print the error message.  'message' is
55    the default.  */
56 static const char *gdbpy_should_print_stack = python_excp_message;
57 
58 #ifdef HAVE_PYTHON
59 /* Forward decls, these are defined later.  */
60 static const struct extension_language_script_ops python_extension_script_ops;
61 static const struct extension_language_ops python_extension_ops;
62 #endif
63 
64 /* The main struct describing GDB's interface to the Python
65    extension language.  */
66 const struct extension_language_defn extension_language_python =
67 {
68   EXT_LANG_PYTHON,
69   "python",
70   "Python",
71 
72   ".py",
73   "-gdb.py",
74 
75   python_control,
76 
77 #ifdef HAVE_PYTHON
78   &python_extension_script_ops,
79   &python_extension_ops
80 #else
81   NULL,
82   NULL
83 #endif
84 };
85 
86 #ifdef HAVE_PYTHON
87 
88 #include "cli/cli-decode.h"
89 #include "charset.h"
90 #include "top.h"
91 #include "solib.h"
92 #include "python-internal.h"
93 #include "linespec.h"
94 #include "source.h"
95 #include "version.h"
96 #include "target.h"
97 #include "gdbthread.h"
98 #include "interps.h"
99 #include "event-top.h"
100 
101 /* True if Python has been successfully initialized, false
102    otherwise.  */
103 
104 int gdb_python_initialized;
105 
106 static PyMethodDef GdbMethods[];
107 
108 #ifdef IS_PY3K
109 static struct PyModuleDef GdbModuleDef;
110 #endif
111 
112 PyObject *gdb_module;
113 PyObject *gdb_python_module;
114 
115 /* Some string constants we may wish to use.  */
116 PyObject *gdbpy_to_string_cst;
117 PyObject *gdbpy_children_cst;
118 PyObject *gdbpy_display_hint_cst;
119 PyObject *gdbpy_doc_cst;
120 PyObject *gdbpy_enabled_cst;
121 PyObject *gdbpy_value_cst;
122 
123 /* The GdbError exception.  */
124 PyObject *gdbpy_gdberror_exc;
125 
126 /* The `gdb.error' base class.  */
127 PyObject *gdbpy_gdb_error;
128 
129 /* The `gdb.MemoryError' exception.  */
130 PyObject *gdbpy_gdb_memory_error;
131 
132 static script_sourcer_func gdbpy_source_script;
133 static objfile_script_sourcer_func gdbpy_source_objfile_script;
134 static void gdbpy_finish_initialization
135   (const struct extension_language_defn *);
136 static int gdbpy_initialized (const struct extension_language_defn *);
137 static void gdbpy_eval_from_control_command
138   (const struct extension_language_defn *, struct command_line *cmd);
139 static void gdbpy_start_type_printers (const struct extension_language_defn *,
140 				       struct ext_lang_type_printers *);
141 static enum ext_lang_rc gdbpy_apply_type_printers
142   (const struct extension_language_defn *,
143    const struct ext_lang_type_printers *, struct type *, char **);
144 static void gdbpy_free_type_printers (const struct extension_language_defn *,
145 				      struct ext_lang_type_printers *);
146 static void gdbpy_clear_quit_flag (const struct extension_language_defn *);
147 static void gdbpy_set_quit_flag (const struct extension_language_defn *);
148 static int gdbpy_check_quit_flag (const struct extension_language_defn *);
149 static enum ext_lang_rc gdbpy_before_prompt_hook
150   (const struct extension_language_defn *, const char *current_gdb_prompt);
151 
152 /* The interface between gdb proper and loading of python scripts.  */
153 
154 static const struct extension_language_script_ops python_extension_script_ops =
155 {
156   gdbpy_source_script,
157   gdbpy_source_objfile_script,
158   gdbpy_auto_load_enabled
159 };
160 
161 /* The interface between gdb proper and python extensions.  */
162 
163 static const struct extension_language_ops python_extension_ops =
164 {
165   gdbpy_finish_initialization,
166   gdbpy_initialized,
167 
168   gdbpy_eval_from_control_command,
169 
170   gdbpy_start_type_printers,
171   gdbpy_apply_type_printers,
172   gdbpy_free_type_printers,
173 
174   gdbpy_apply_val_pretty_printer,
175 
176   gdbpy_apply_frame_filter,
177 
178   gdbpy_preserve_values,
179 
180   gdbpy_breakpoint_has_cond,
181   gdbpy_breakpoint_cond_says_stop,
182 
183   gdbpy_clear_quit_flag,
184   gdbpy_set_quit_flag,
185   gdbpy_check_quit_flag,
186 
187   gdbpy_before_prompt_hook,
188 
189   gdbpy_clone_xmethod_worker_data,
190   gdbpy_free_xmethod_worker_data,
191   gdbpy_get_matching_xmethod_workers,
192   gdbpy_get_xmethod_arg_types,
193   gdbpy_get_xmethod_result_type,
194   gdbpy_invoke_xmethod
195 };
196 
197 /* Architecture and language to be used in callbacks from
198    the Python interpreter.  */
199 struct gdbarch *python_gdbarch;
200 const struct language_defn *python_language;
201 
202 /* Restore global language and architecture and Python GIL state
203    when leaving the Python interpreter.  */
204 
205 struct python_env
206 {
207   struct active_ext_lang_state *previous_active;
208   PyGILState_STATE state;
209   struct gdbarch *gdbarch;
210   const struct language_defn *language;
211   PyObject *error_type, *error_value, *error_traceback;
212 };
213 
214 static void
215 restore_python_env (void *p)
216 {
217   struct python_env *env = (struct python_env *)p;
218 
219   /* Leftover Python error is forbidden by Python Exception Handling.  */
220   if (PyErr_Occurred ())
221     {
222       /* This order is similar to the one calling error afterwards. */
223       gdbpy_print_stack ();
224       warning (_("internal error: Unhandled Python exception"));
225     }
226 
227   PyErr_Restore (env->error_type, env->error_value, env->error_traceback);
228 
229   PyGILState_Release (env->state);
230   python_gdbarch = env->gdbarch;
231   python_language = env->language;
232 
233   restore_active_ext_lang (env->previous_active);
234 
235   xfree (env);
236 }
237 
238 /* Called before entering the Python interpreter to install the
239    current language and architecture to be used for Python values.
240    Also set the active extension language for GDB so that SIGINT's
241    are directed our way, and if necessary install the right SIGINT
242    handler.  */
243 
244 struct cleanup *
245 ensure_python_env (struct gdbarch *gdbarch,
246                    const struct language_defn *language)
247 {
248   struct python_env *env = xmalloc (sizeof *env);
249 
250   /* We should not ever enter Python unless initialized.  */
251   if (!gdb_python_initialized)
252     error (_("Python not initialized"));
253 
254   env->previous_active = set_active_ext_lang (&extension_language_python);
255 
256   env->state = PyGILState_Ensure ();
257   env->gdbarch = python_gdbarch;
258   env->language = python_language;
259 
260   python_gdbarch = gdbarch;
261   python_language = language;
262 
263   /* Save it and ensure ! PyErr_Occurred () afterwards.  */
264   PyErr_Fetch (&env->error_type, &env->error_value, &env->error_traceback);
265 
266   return make_cleanup (restore_python_env, env);
267 }
268 
269 /* Clear the quit flag.  */
270 
271 static void
272 gdbpy_clear_quit_flag (const struct extension_language_defn *extlang)
273 {
274   /* This clears the flag as a side effect.  */
275   PyOS_InterruptOccurred ();
276 }
277 
278 /* Set the quit flag.  */
279 
280 static void
281 gdbpy_set_quit_flag (const struct extension_language_defn *extlang)
282 {
283   PyErr_SetInterrupt ();
284 }
285 
286 /* Return true if the quit flag has been set, false otherwise.  */
287 
288 static int
289 gdbpy_check_quit_flag (const struct extension_language_defn *extlang)
290 {
291   return PyOS_InterruptOccurred ();
292 }
293 
294 /* Evaluate a Python command like PyRun_SimpleString, but uses
295    Py_single_input which prints the result of expressions, and does
296    not automatically print the stack on errors.  */
297 
298 static int
299 eval_python_command (const char *command)
300 {
301   PyObject *m, *d, *v;
302 
303   m = PyImport_AddModule ("__main__");
304   if (m == NULL)
305     return -1;
306 
307   d = PyModule_GetDict (m);
308   if (d == NULL)
309     return -1;
310   v = PyRun_StringFlags (command, Py_single_input, d, d, NULL);
311   if (v == NULL)
312     return -1;
313 
314   Py_DECREF (v);
315 #ifndef IS_PY3K
316   if (Py_FlushLine ())
317     PyErr_Clear ();
318 #endif
319 
320   return 0;
321 }
322 
323 /* Implementation of the gdb "python-interactive" command.  */
324 
325 static void
326 python_interactive_command (char *arg, int from_tty)
327 {
328   struct cleanup *cleanup;
329   int err;
330 
331   cleanup = make_cleanup_restore_integer (&interpreter_async);
332   interpreter_async = 0;
333 
334   arg = skip_spaces (arg);
335 
336   ensure_python_env (get_current_arch (), current_language);
337 
338   if (arg && *arg)
339     {
340       int len = strlen (arg);
341       char *script = xmalloc (len + 2);
342 
343       strcpy (script, arg);
344       script[len] = '\n';
345       script[len + 1] = '\0';
346       err = eval_python_command (script);
347       xfree (script);
348     }
349   else
350     {
351       err = PyRun_InteractiveLoop (instream, "<stdin>");
352       dont_repeat ();
353     }
354 
355   if (err)
356     {
357       gdbpy_print_stack ();
358       error (_("Error while executing Python code."));
359     }
360 
361   do_cleanups (cleanup);
362 }
363 
364 /* A wrapper around PyRun_SimpleFile.  FILE is the Python script to run
365    named FILENAME.
366 
367    On Windows hosts few users would build Python themselves (this is no
368    trivial task on this platform), and thus use binaries built by
369    someone else instead.  There may happen situation where the Python
370    library and GDB are using two different versions of the C runtime
371    library.  Python, being built with VC, would use one version of the
372    msvcr DLL (Eg. msvcr100.dll), while MinGW uses msvcrt.dll.
373    A FILE * from one runtime does not necessarily operate correctly in
374    the other runtime.
375 
376    To work around this potential issue, we create on Windows hosts the
377    FILE object using Python routines, thus making sure that it is
378    compatible with the Python library.  */
379 
380 static void
381 python_run_simple_file (FILE *file, const char *filename)
382 {
383 #ifndef _WIN32
384 
385   PyRun_SimpleFile (file, filename);
386 
387 #else /* _WIN32 */
388 
389   char *full_path;
390   PyObject *python_file;
391   struct cleanup *cleanup;
392 
393   /* Because we have a string for a filename, and are using Python to
394      open the file, we need to expand any tilde in the path first.  */
395   full_path = tilde_expand (filename);
396   cleanup = make_cleanup (xfree, full_path);
397   python_file = PyFile_FromString (full_path, "r");
398   if (! python_file)
399     {
400       do_cleanups (cleanup);
401       gdbpy_print_stack ();
402       error (_("Error while opening file: %s"), full_path);
403     }
404 
405   make_cleanup_py_decref (python_file);
406   PyRun_SimpleFile (PyFile_AsFile (python_file), filename);
407   do_cleanups (cleanup);
408 
409 #endif /* _WIN32 */
410 }
411 
412 /* Given a command_line, return a command string suitable for passing
413    to Python.  Lines in the string are separated by newlines.  The
414    return value is allocated using xmalloc and the caller is
415    responsible for freeing it.  */
416 
417 static char *
418 compute_python_string (struct command_line *l)
419 {
420   struct command_line *iter;
421   char *script = NULL;
422   int size = 0;
423   int here;
424 
425   for (iter = l; iter; iter = iter->next)
426     size += strlen (iter->line) + 1;
427 
428   script = xmalloc (size + 1);
429   here = 0;
430   for (iter = l; iter; iter = iter->next)
431     {
432       int len = strlen (iter->line);
433 
434       strcpy (&script[here], iter->line);
435       here += len;
436       script[here++] = '\n';
437     }
438   script[here] = '\0';
439   return script;
440 }
441 
442 /* Take a command line structure representing a 'python' command, and
443    evaluate its body using the Python interpreter.  */
444 
445 static void
446 gdbpy_eval_from_control_command (const struct extension_language_defn *extlang,
447 				 struct command_line *cmd)
448 {
449   int ret;
450   char *script;
451   struct cleanup *cleanup;
452 
453   if (cmd->body_count != 1)
454     error (_("Invalid \"python\" block structure."));
455 
456   cleanup = ensure_python_env (get_current_arch (), current_language);
457 
458   script = compute_python_string (cmd->body_list[0]);
459   ret = PyRun_SimpleString (script);
460   xfree (script);
461   if (ret)
462     error (_("Error while executing Python code."));
463 
464   do_cleanups (cleanup);
465 }
466 
467 /* Implementation of the gdb "python" command.  */
468 
469 static void
470 python_command (char *arg, int from_tty)
471 {
472   struct cleanup *cleanup;
473 
474   cleanup = ensure_python_env (get_current_arch (), current_language);
475 
476   make_cleanup_restore_integer (&interpreter_async);
477   interpreter_async = 0;
478 
479   arg = skip_spaces (arg);
480   if (arg && *arg)
481     {
482       if (PyRun_SimpleString (arg))
483 	error (_("Error while executing Python code."));
484     }
485   else
486     {
487       struct command_line *l = get_command_line (python_control, "");
488 
489       make_cleanup_free_command_lines (&l);
490       execute_control_command_untraced (l);
491     }
492 
493   do_cleanups (cleanup);
494 }
495 
496 
497 
498 /* Transform a gdb parameters's value into a Python value.  May return
499    NULL (and set a Python exception) on error.  Helper function for
500    get_parameter.  */
501 PyObject *
502 gdbpy_parameter_value (enum var_types type, void *var)
503 {
504   switch (type)
505     {
506     case var_string:
507     case var_string_noescape:
508     case var_optional_filename:
509     case var_filename:
510     case var_enum:
511       {
512 	char *str = * (char **) var;
513 
514 	if (! str)
515 	  str = "";
516 	return PyString_Decode (str, strlen (str), host_charset (), NULL);
517       }
518 
519     case var_boolean:
520       {
521 	if (* (int *) var)
522 	  Py_RETURN_TRUE;
523 	else
524 	  Py_RETURN_FALSE;
525       }
526 
527     case var_auto_boolean:
528       {
529 	enum auto_boolean ab = * (enum auto_boolean *) var;
530 
531 	if (ab == AUTO_BOOLEAN_TRUE)
532 	  Py_RETURN_TRUE;
533 	else if (ab == AUTO_BOOLEAN_FALSE)
534 	  Py_RETURN_FALSE;
535 	else
536 	  Py_RETURN_NONE;
537       }
538 
539     case var_integer:
540       if ((* (int *) var) == INT_MAX)
541 	Py_RETURN_NONE;
542       /* Fall through.  */
543     case var_zinteger:
544       return PyLong_FromLong (* (int *) var);
545 
546     case var_uinteger:
547       {
548 	unsigned int val = * (unsigned int *) var;
549 
550 	if (val == UINT_MAX)
551 	  Py_RETURN_NONE;
552 	return PyLong_FromUnsignedLong (val);
553       }
554     }
555 
556   return PyErr_Format (PyExc_RuntimeError,
557 		       _("Programmer error: unhandled type."));
558 }
559 
560 /* A Python function which returns a gdb parameter's value as a Python
561    value.  */
562 
563 PyObject *
564 gdbpy_parameter (PyObject *self, PyObject *args)
565 {
566   struct cmd_list_element *alias, *prefix, *cmd;
567   const char *arg;
568   char *newarg;
569   int found = -1;
570   volatile struct gdb_exception except;
571 
572   if (! PyArg_ParseTuple (args, "s", &arg))
573     return NULL;
574 
575   newarg = concat ("show ", arg, (char *) NULL);
576 
577   TRY_CATCH (except, RETURN_MASK_ALL)
578     {
579       found = lookup_cmd_composition (newarg, &alias, &prefix, &cmd);
580     }
581   xfree (newarg);
582   GDB_PY_HANDLE_EXCEPTION (except);
583   if (!found)
584     return PyErr_Format (PyExc_RuntimeError,
585 			 _("Could not find parameter `%s'."), arg);
586 
587   if (! cmd->var)
588     return PyErr_Format (PyExc_RuntimeError,
589 			 _("`%s' is not a parameter."), arg);
590   return gdbpy_parameter_value (cmd->var_type, cmd->var);
591 }
592 
593 /* Wrapper for target_charset.  */
594 
595 static PyObject *
596 gdbpy_target_charset (PyObject *self, PyObject *args)
597 {
598   const char *cset = target_charset (python_gdbarch);
599 
600   return PyUnicode_Decode (cset, strlen (cset), host_charset (), NULL);
601 }
602 
603 /* Wrapper for target_wide_charset.  */
604 
605 static PyObject *
606 gdbpy_target_wide_charset (PyObject *self, PyObject *args)
607 {
608   const char *cset = target_wide_charset (python_gdbarch);
609 
610   return PyUnicode_Decode (cset, strlen (cset), host_charset (), NULL);
611 }
612 
613 /* A Python function which evaluates a string using the gdb CLI.  */
614 
615 static PyObject *
616 execute_gdb_command (PyObject *self, PyObject *args, PyObject *kw)
617 {
618   const char *arg;
619   PyObject *from_tty_obj = NULL, *to_string_obj = NULL;
620   int from_tty, to_string;
621   volatile struct gdb_exception except;
622   static char *keywords[] = {"command", "from_tty", "to_string", NULL };
623   char *result = NULL;
624 
625   if (! PyArg_ParseTupleAndKeywords (args, kw, "s|O!O!", keywords, &arg,
626 				     &PyBool_Type, &from_tty_obj,
627 				     &PyBool_Type, &to_string_obj))
628     return NULL;
629 
630   from_tty = 0;
631   if (from_tty_obj)
632     {
633       int cmp = PyObject_IsTrue (from_tty_obj);
634       if (cmp < 0)
635 	return NULL;
636       from_tty = cmp;
637     }
638 
639   to_string = 0;
640   if (to_string_obj)
641     {
642       int cmp = PyObject_IsTrue (to_string_obj);
643       if (cmp < 0)
644 	return NULL;
645       to_string = cmp;
646     }
647 
648   TRY_CATCH (except, RETURN_MASK_ALL)
649     {
650       /* Copy the argument text in case the command modifies it.  */
651       char *copy = xstrdup (arg);
652       struct cleanup *cleanup = make_cleanup (xfree, copy);
653 
654       make_cleanup_restore_integer (&interpreter_async);
655       interpreter_async = 0;
656 
657       prevent_dont_repeat ();
658       if (to_string)
659 	result = execute_command_to_string (copy, from_tty);
660       else
661 	{
662 	  result = NULL;
663 	  execute_command (copy, from_tty);
664 	}
665 
666       do_cleanups (cleanup);
667     }
668   GDB_PY_HANDLE_EXCEPTION (except);
669 
670   /* Do any commands attached to breakpoint we stopped at.  */
671   bpstat_do_actions ();
672 
673   if (result)
674     {
675       PyObject *r = PyString_FromString (result);
676       xfree (result);
677       return r;
678     }
679   Py_RETURN_NONE;
680 }
681 
682 /* Implementation of gdb.solib_name (Long) -> String.
683    Returns the name of the shared library holding a given address, or None.  */
684 
685 static PyObject *
686 gdbpy_solib_name (PyObject *self, PyObject *args)
687 {
688   char *soname;
689   PyObject *str_obj;
690   gdb_py_longest pc;
691 
692   if (!PyArg_ParseTuple (args, GDB_PY_LL_ARG, &pc))
693     return NULL;
694 
695   soname = solib_name_from_address (current_program_space, pc);
696   if (soname)
697     str_obj = PyString_Decode (soname, strlen (soname), host_charset (), NULL);
698   else
699     {
700       str_obj = Py_None;
701       Py_INCREF (Py_None);
702     }
703 
704   return str_obj;
705 }
706 
707 /* A Python function which is a wrapper for decode_line_1.  */
708 
709 static PyObject *
710 gdbpy_decode_line (PyObject *self, PyObject *args)
711 {
712   struct symtabs_and_lines sals = { NULL, 0 }; /* Initialize to
713 						  appease gcc.  */
714   struct symtab_and_line sal;
715   const char *arg = NULL;
716   char *copy_to_free = NULL, *copy = NULL;
717   struct cleanup *cleanups;
718   PyObject *result = NULL;
719   PyObject *return_result = NULL;
720   PyObject *unparsed = NULL;
721   volatile struct gdb_exception except;
722 
723   if (! PyArg_ParseTuple (args, "|s", &arg))
724     return NULL;
725 
726   cleanups = make_cleanup (null_cleanup, NULL);
727 
728   sals.sals = NULL;
729   TRY_CATCH (except, RETURN_MASK_ALL)
730     {
731       if (arg)
732 	{
733 	  copy = xstrdup (arg);
734 	  copy_to_free = copy;
735 	  sals = decode_line_1 (&copy, 0, 0, 0);
736 	}
737       else
738 	{
739 	  set_default_source_symtab_and_line ();
740 	  sal = get_current_source_symtab_and_line ();
741 	  sals.sals = &sal;
742 	  sals.nelts = 1;
743 	}
744     }
745 
746   if (sals.sals != NULL && sals.sals != &sal)
747     {
748       make_cleanup (xfree, copy_to_free);
749       make_cleanup (xfree, sals.sals);
750     }
751 
752   if (except.reason < 0)
753     {
754       do_cleanups (cleanups);
755       /* We know this will always throw.  */
756       gdbpy_convert_exception (except);
757       return NULL;
758     }
759 
760   if (sals.nelts)
761     {
762       int i;
763 
764       result = PyTuple_New (sals.nelts);
765       if (! result)
766 	goto error;
767       for (i = 0; i < sals.nelts; ++i)
768 	{
769 	  PyObject *obj;
770 
771 	  obj = symtab_and_line_to_sal_object (sals.sals[i]);
772 	  if (! obj)
773 	    {
774 	      Py_DECREF (result);
775 	      goto error;
776 	    }
777 
778 	  PyTuple_SetItem (result, i, obj);
779 	}
780     }
781   else
782     {
783       result = Py_None;
784       Py_INCREF (Py_None);
785     }
786 
787   return_result = PyTuple_New (2);
788   if (! return_result)
789     {
790       Py_DECREF (result);
791       goto error;
792     }
793 
794   if (copy && strlen (copy) > 0)
795     {
796       unparsed = PyString_FromString (copy);
797       if (unparsed == NULL)
798 	{
799 	  Py_DECREF (result);
800 	  Py_DECREF (return_result);
801 	  return_result = NULL;
802 	  goto error;
803 	}
804     }
805   else
806     {
807       unparsed = Py_None;
808       Py_INCREF (Py_None);
809     }
810 
811   PyTuple_SetItem (return_result, 0, unparsed);
812   PyTuple_SetItem (return_result, 1, result);
813 
814  error:
815   do_cleanups (cleanups);
816 
817   return return_result;
818 }
819 
820 /* Parse a string and evaluate it as an expression.  */
821 static PyObject *
822 gdbpy_parse_and_eval (PyObject *self, PyObject *args)
823 {
824   const char *expr_str;
825   struct value *result = NULL;
826   volatile struct gdb_exception except;
827 
828   if (!PyArg_ParseTuple (args, "s", &expr_str))
829     return NULL;
830 
831   TRY_CATCH (except, RETURN_MASK_ALL)
832     {
833       result = parse_and_eval (expr_str);
834     }
835   GDB_PY_HANDLE_EXCEPTION (except);
836 
837   return value_to_value_object (result);
838 }
839 
840 /* Implementation of gdb.find_pc_line function.
841    Returns the gdb.Symtab_and_line object corresponding to a PC value.  */
842 
843 static PyObject *
844 gdbpy_find_pc_line (PyObject *self, PyObject *args)
845 {
846   gdb_py_ulongest pc_llu;
847   volatile struct gdb_exception except;
848   PyObject *result = NULL; /* init for gcc -Wall */
849 
850   if (!PyArg_ParseTuple (args, GDB_PY_LLU_ARG, &pc_llu))
851     return NULL;
852 
853   TRY_CATCH (except, RETURN_MASK_ALL)
854     {
855       struct symtab_and_line sal;
856       CORE_ADDR pc;
857 
858       pc = (CORE_ADDR) pc_llu;
859       sal = find_pc_line (pc, 0);
860       result = symtab_and_line_to_sal_object (sal);
861     }
862   GDB_PY_HANDLE_EXCEPTION (except);
863 
864   return result;
865 }
866 
867 /* Read a file as Python code.
868    This is the extension_language_script_ops.script_sourcer "method".
869    FILE is the file to load.  FILENAME is name of the file FILE.
870    This does not throw any errors.  If an exception occurs python will print
871    the traceback and clear the error indicator.  */
872 
873 static void
874 gdbpy_source_script (const struct extension_language_defn *extlang,
875 		     FILE *file, const char *filename)
876 {
877   struct cleanup *cleanup;
878 
879   cleanup = ensure_python_env (get_current_arch (), current_language);
880   python_run_simple_file (file, filename);
881   do_cleanups (cleanup);
882 }
883 
884 
885 
886 /* Posting and handling events.  */
887 
888 /* A single event.  */
889 struct gdbpy_event
890 {
891   /* The Python event.  This is just a callable object.  */
892   PyObject *event;
893   /* The next event.  */
894   struct gdbpy_event *next;
895 };
896 
897 /* All pending events.  */
898 static struct gdbpy_event *gdbpy_event_list;
899 /* The final link of the event list.  */
900 static struct gdbpy_event **gdbpy_event_list_end;
901 
902 /* We use a file handler, and not an async handler, so that we can
903    wake up the main thread even when it is blocked in poll().  */
904 static struct serial *gdbpy_event_fds[2];
905 
906 /* The file handler callback.  This reads from the internal pipe, and
907    then processes the Python event queue.  This will always be run in
908    the main gdb thread.  */
909 
910 static void
911 gdbpy_run_events (struct serial *scb, void *context)
912 {
913   struct cleanup *cleanup;
914 
915   cleanup = ensure_python_env (get_current_arch (), current_language);
916 
917   /* Flush the fd.  Do this before flushing the events list, so that
918      any new event post afterwards is sure to re-awake the event
919      loop.  */
920   while (serial_readchar (gdbpy_event_fds[0], 0) >= 0)
921     ;
922 
923   while (gdbpy_event_list)
924     {
925       PyObject *call_result;
926 
927       /* Dispatching the event might push a new element onto the event
928 	 loop, so we update here "atomically enough".  */
929       struct gdbpy_event *item = gdbpy_event_list;
930       gdbpy_event_list = gdbpy_event_list->next;
931       if (gdbpy_event_list == NULL)
932 	gdbpy_event_list_end = &gdbpy_event_list;
933 
934       /* Ignore errors.  */
935       call_result = PyObject_CallObject (item->event, NULL);
936       if (call_result == NULL)
937 	PyErr_Clear ();
938 
939       Py_XDECREF (call_result);
940       Py_DECREF (item->event);
941       xfree (item);
942     }
943 
944   do_cleanups (cleanup);
945 }
946 
947 /* Submit an event to the gdb thread.  */
948 static PyObject *
949 gdbpy_post_event (PyObject *self, PyObject *args)
950 {
951   struct gdbpy_event *event;
952   PyObject *func;
953   int wakeup;
954 
955   if (!PyArg_ParseTuple (args, "O", &func))
956     return NULL;
957 
958   if (!PyCallable_Check (func))
959     {
960       PyErr_SetString (PyExc_RuntimeError,
961 		       _("Posted event is not callable"));
962       return NULL;
963     }
964 
965   Py_INCREF (func);
966 
967   /* From here until the end of the function, we have the GIL, so we
968      can operate on our global data structures without worrying.  */
969   wakeup = gdbpy_event_list == NULL;
970 
971   event = XNEW (struct gdbpy_event);
972   event->event = func;
973   event->next = NULL;
974   *gdbpy_event_list_end = event;
975   gdbpy_event_list_end = &event->next;
976 
977   /* Wake up gdb when needed.  */
978   if (wakeup)
979     {
980       char c = 'q';		/* Anything. */
981 
982       if (serial_write (gdbpy_event_fds[1], &c, 1))
983         return PyErr_SetFromErrno (PyExc_IOError);
984     }
985 
986   Py_RETURN_NONE;
987 }
988 
989 /* Initialize the Python event handler.  */
990 static int
991 gdbpy_initialize_events (void)
992 {
993   if (serial_pipe (gdbpy_event_fds) == 0)
994     {
995       gdbpy_event_list_end = &gdbpy_event_list;
996       serial_async (gdbpy_event_fds[0], gdbpy_run_events, NULL);
997     }
998 
999   return 0;
1000 }
1001 
1002 
1003 
1004 /* This is the extension_language_ops.before_prompt "method".  */
1005 
1006 static enum ext_lang_rc
1007 gdbpy_before_prompt_hook (const struct extension_language_defn *extlang,
1008 			  const char *current_gdb_prompt)
1009 {
1010   struct cleanup *cleanup;
1011   char *prompt = NULL;
1012 
1013   if (!gdb_python_initialized)
1014     return EXT_LANG_RC_NOP;
1015 
1016   cleanup = ensure_python_env (get_current_arch (), current_language);
1017 
1018   if (gdb_python_module
1019       && PyObject_HasAttrString (gdb_python_module, "prompt_hook"))
1020     {
1021       PyObject *hook;
1022 
1023       hook = PyObject_GetAttrString (gdb_python_module, "prompt_hook");
1024       if (hook == NULL)
1025 	goto fail;
1026 
1027       make_cleanup_py_decref (hook);
1028 
1029       if (PyCallable_Check (hook))
1030 	{
1031 	  PyObject *result;
1032 	  PyObject *current_prompt;
1033 
1034 	  current_prompt = PyString_FromString (current_gdb_prompt);
1035 	  if (current_prompt == NULL)
1036 	    goto fail;
1037 
1038 	  result = PyObject_CallFunctionObjArgs (hook, current_prompt, NULL);
1039 
1040 	  Py_DECREF (current_prompt);
1041 
1042 	  if (result == NULL)
1043 	    goto fail;
1044 
1045 	  make_cleanup_py_decref (result);
1046 
1047 	  /* Return type should be None, or a String.  If it is None,
1048 	     fall through, we will not set a prompt.  If it is a
1049 	     string, set  PROMPT.  Anything else, set an exception.  */
1050 	  if (result != Py_None && ! PyString_Check (result))
1051 	    {
1052 	      PyErr_Format (PyExc_RuntimeError,
1053 			    _("Return from prompt_hook must " \
1054 			      "be either a Python string, or None"));
1055 	      goto fail;
1056 	    }
1057 
1058 	  if (result != Py_None)
1059 	    {
1060 	      prompt = python_string_to_host_string (result);
1061 
1062 	      if (prompt == NULL)
1063 		goto fail;
1064 	      else
1065 		make_cleanup (xfree, prompt);
1066 	    }
1067 	}
1068     }
1069 
1070   /* If a prompt has been set, PROMPT will not be NULL.  If it is
1071      NULL, do not set the prompt.  */
1072   if (prompt != NULL)
1073     set_prompt (prompt);
1074 
1075   do_cleanups (cleanup);
1076   return prompt != NULL ? EXT_LANG_RC_OK : EXT_LANG_RC_NOP;
1077 
1078  fail:
1079   gdbpy_print_stack ();
1080   do_cleanups (cleanup);
1081   return EXT_LANG_RC_ERROR;
1082 }
1083 
1084 
1085 
1086 /* Printing.  */
1087 
1088 /* A python function to write a single string using gdb's filtered
1089    output stream .  The optional keyword STREAM can be used to write
1090    to a particular stream.  The default stream is to gdb_stdout.  */
1091 
1092 static PyObject *
1093 gdbpy_write (PyObject *self, PyObject *args, PyObject *kw)
1094 {
1095   const char *arg;
1096   static char *keywords[] = {"text", "stream", NULL };
1097   int stream_type = 0;
1098   volatile struct gdb_exception except;
1099 
1100   if (! PyArg_ParseTupleAndKeywords (args, kw, "s|i", keywords, &arg,
1101 				     &stream_type))
1102     return NULL;
1103 
1104   TRY_CATCH (except, RETURN_MASK_ALL)
1105     {
1106       switch (stream_type)
1107         {
1108         case 1:
1109           {
1110 	    fprintf_filtered (gdb_stderr, "%s", arg);
1111 	    break;
1112           }
1113         case 2:
1114           {
1115 	    fprintf_filtered (gdb_stdlog, "%s", arg);
1116 	    break;
1117           }
1118         default:
1119           fprintf_filtered (gdb_stdout, "%s", arg);
1120         }
1121     }
1122   GDB_PY_HANDLE_EXCEPTION (except);
1123 
1124   Py_RETURN_NONE;
1125 }
1126 
1127 /* A python function to flush a gdb stream.  The optional keyword
1128    STREAM can be used to flush a particular stream.  The default stream
1129    is gdb_stdout.  */
1130 
1131 static PyObject *
1132 gdbpy_flush (PyObject *self, PyObject *args, PyObject *kw)
1133 {
1134   static char *keywords[] = {"stream", NULL };
1135   int stream_type = 0;
1136 
1137   if (! PyArg_ParseTupleAndKeywords (args, kw, "|i", keywords,
1138 				     &stream_type))
1139     return NULL;
1140 
1141   switch (stream_type)
1142     {
1143     case 1:
1144       {
1145 	gdb_flush (gdb_stderr);
1146 	break;
1147       }
1148     case 2:
1149       {
1150 	gdb_flush (gdb_stdlog);
1151 	break;
1152       }
1153     default:
1154       gdb_flush (gdb_stdout);
1155     }
1156 
1157   Py_RETURN_NONE;
1158 }
1159 
1160 /* Print a python exception trace, print just a message, or print
1161    nothing and clear the python exception, depending on
1162    gdbpy_should_print_stack.  Only call this if a python exception is
1163    set.  */
1164 void
1165 gdbpy_print_stack (void)
1166 {
1167   volatile struct gdb_exception except;
1168 
1169   /* Print "none", just clear exception.  */
1170   if (gdbpy_should_print_stack == python_excp_none)
1171     {
1172       PyErr_Clear ();
1173     }
1174   /* Print "full" message and backtrace.  */
1175   else if (gdbpy_should_print_stack == python_excp_full)
1176     {
1177       PyErr_Print ();
1178       /* PyErr_Print doesn't necessarily end output with a newline.
1179 	 This works because Python's stdout/stderr is fed through
1180 	 printf_filtered.  */
1181       TRY_CATCH (except, RETURN_MASK_ALL)
1182 	{
1183 	  begin_line ();
1184 	}
1185     }
1186   /* Print "message", just error print message.  */
1187   else
1188     {
1189       PyObject *ptype, *pvalue, *ptraceback;
1190       char *msg = NULL, *type = NULL;
1191 
1192       PyErr_Fetch (&ptype, &pvalue, &ptraceback);
1193 
1194       /* Fetch the error message contained within ptype, pvalue.  */
1195       msg = gdbpy_exception_to_string (ptype, pvalue);
1196       type = gdbpy_obj_to_string (ptype);
1197 
1198       TRY_CATCH (except, RETURN_MASK_ALL)
1199 	{
1200 	  if (msg == NULL)
1201 	    {
1202 	      /* An error occurred computing the string representation of the
1203 		 error message.  */
1204 	      fprintf_filtered (gdb_stderr,
1205 				_("Error occurred computing Python error" \
1206 				  "message.\n"));
1207 	    }
1208 	  else
1209 	    fprintf_filtered (gdb_stderr, "Python Exception %s %s: \n",
1210 			      type, msg);
1211 	}
1212 
1213       Py_XDECREF (ptype);
1214       Py_XDECREF (pvalue);
1215       Py_XDECREF (ptraceback);
1216       xfree (msg);
1217     }
1218 }
1219 
1220 
1221 
1222 /* Return the current Progspace.
1223    There always is one.  */
1224 
1225 static PyObject *
1226 gdbpy_get_current_progspace (PyObject *unused1, PyObject *unused2)
1227 {
1228   PyObject *result;
1229 
1230   result = pspace_to_pspace_object (current_program_space);
1231   if (result)
1232     Py_INCREF (result);
1233   return result;
1234 }
1235 
1236 /* Return a sequence holding all the Progspaces.  */
1237 
1238 static PyObject *
1239 gdbpy_progspaces (PyObject *unused1, PyObject *unused2)
1240 {
1241   struct program_space *ps;
1242   PyObject *list;
1243 
1244   list = PyList_New (0);
1245   if (!list)
1246     return NULL;
1247 
1248   ALL_PSPACES (ps)
1249   {
1250     PyObject *item = pspace_to_pspace_object (ps);
1251 
1252     if (!item || PyList_Append (list, item) == -1)
1253       {
1254 	Py_DECREF (list);
1255 	return NULL;
1256       }
1257   }
1258 
1259   return list;
1260 }
1261 
1262 
1263 
1264 /* The "current" objfile.  This is set when gdb detects that a new
1265    objfile has been loaded.  It is only set for the duration of a call to
1266    gdbpy_source_objfile_script; it is NULL at other times.  */
1267 static struct objfile *gdbpy_current_objfile;
1268 
1269 /* Set the current objfile to OBJFILE and then read FILE named FILENAME
1270    as Python code.  This does not throw any errors.  If an exception
1271    occurs python will print the traceback and clear the error indicator.
1272    This is the extension_language_script_ops.objfile_script_sourcer
1273    "method".  */
1274 
1275 static void
1276 gdbpy_source_objfile_script (const struct extension_language_defn *extlang,
1277 			     struct objfile *objfile, FILE *file,
1278 			     const char *filename)
1279 {
1280   struct cleanup *cleanups;
1281 
1282   if (!gdb_python_initialized)
1283     return;
1284 
1285   cleanups = ensure_python_env (get_objfile_arch (objfile), current_language);
1286   gdbpy_current_objfile = objfile;
1287 
1288   python_run_simple_file (file, filename);
1289 
1290   do_cleanups (cleanups);
1291   gdbpy_current_objfile = NULL;
1292 }
1293 
1294 /* Return the current Objfile, or None if there isn't one.  */
1295 
1296 static PyObject *
1297 gdbpy_get_current_objfile (PyObject *unused1, PyObject *unused2)
1298 {
1299   PyObject *result;
1300 
1301   if (! gdbpy_current_objfile)
1302     Py_RETURN_NONE;
1303 
1304   result = objfile_to_objfile_object (gdbpy_current_objfile);
1305   if (result)
1306     Py_INCREF (result);
1307   return result;
1308 }
1309 
1310 /* Return a sequence holding all the Objfiles.  */
1311 
1312 static PyObject *
1313 gdbpy_objfiles (PyObject *unused1, PyObject *unused2)
1314 {
1315   struct objfile *objf;
1316   PyObject *list;
1317 
1318   list = PyList_New (0);
1319   if (!list)
1320     return NULL;
1321 
1322   ALL_OBJFILES (objf)
1323   {
1324     PyObject *item = objfile_to_objfile_object (objf);
1325 
1326     if (!item || PyList_Append (list, item) == -1)
1327       {
1328 	Py_DECREF (list);
1329 	return NULL;
1330       }
1331   }
1332 
1333   return list;
1334 }
1335 
1336 /* Compute the list of active python type printers and store them in
1337    EXT_PRINTERS->py_type_printers.  The product of this function is used by
1338    gdbpy_apply_type_printers, and freed by gdbpy_free_type_printers.
1339    This is the extension_language_ops.start_type_printers "method".  */
1340 
1341 static void
1342 gdbpy_start_type_printers (const struct extension_language_defn *extlang,
1343 			   struct ext_lang_type_printers *ext_printers)
1344 {
1345   struct cleanup *cleanups;
1346   PyObject *type_module, *func = NULL, *printers_obj = NULL;
1347 
1348   if (!gdb_python_initialized)
1349     return;
1350 
1351   cleanups = ensure_python_env (get_current_arch (), current_language);
1352 
1353   type_module = PyImport_ImportModule ("gdb.types");
1354   if (type_module == NULL)
1355     {
1356       gdbpy_print_stack ();
1357       goto done;
1358     }
1359 
1360   func = PyObject_GetAttrString (type_module, "get_type_recognizers");
1361   if (func == NULL)
1362     {
1363       gdbpy_print_stack ();
1364       goto done;
1365     }
1366 
1367   printers_obj = PyObject_CallFunctionObjArgs (func, (char *) NULL);
1368   if (printers_obj == NULL)
1369     gdbpy_print_stack ();
1370   else
1371     ext_printers->py_type_printers = printers_obj;
1372 
1373  done:
1374   Py_XDECREF (type_module);
1375   Py_XDECREF (func);
1376   do_cleanups (cleanups);
1377 }
1378 
1379 /* If TYPE is recognized by some type printer, store in *PRETTIED_TYPE
1380    a newly allocated string holding the type's replacement name, and return
1381    EXT_LANG_RC_OK.  The caller is responsible for freeing the string.
1382    If there's a Python error return EXT_LANG_RC_ERROR.
1383    Otherwise, return EXT_LANG_RC_NOP.
1384    This is the extension_language_ops.apply_type_printers "method".  */
1385 
1386 static enum ext_lang_rc
1387 gdbpy_apply_type_printers (const struct extension_language_defn *extlang,
1388 			   const struct ext_lang_type_printers *ext_printers,
1389 			   struct type *type, char **prettied_type)
1390 {
1391   struct cleanup *cleanups;
1392   PyObject *type_obj, *type_module = NULL, *func = NULL;
1393   PyObject *result_obj = NULL;
1394   PyObject *printers_obj = ext_printers->py_type_printers;
1395   char *result = NULL;
1396 
1397   if (printers_obj == NULL)
1398     return EXT_LANG_RC_NOP;
1399 
1400   if (!gdb_python_initialized)
1401     return EXT_LANG_RC_NOP;
1402 
1403   cleanups = ensure_python_env (get_current_arch (), current_language);
1404 
1405   type_obj = type_to_type_object (type);
1406   if (type_obj == NULL)
1407     {
1408       gdbpy_print_stack ();
1409       goto done;
1410     }
1411 
1412   type_module = PyImport_ImportModule ("gdb.types");
1413   if (type_module == NULL)
1414     {
1415       gdbpy_print_stack ();
1416       goto done;
1417     }
1418 
1419   func = PyObject_GetAttrString (type_module, "apply_type_recognizers");
1420   if (func == NULL)
1421     {
1422       gdbpy_print_stack ();
1423       goto done;
1424     }
1425 
1426   result_obj = PyObject_CallFunctionObjArgs (func, printers_obj,
1427 					     type_obj, (char *) NULL);
1428   if (result_obj == NULL)
1429     {
1430       gdbpy_print_stack ();
1431       goto done;
1432     }
1433 
1434   if (result_obj != Py_None)
1435     {
1436       result = python_string_to_host_string (result_obj);
1437       if (result == NULL)
1438 	gdbpy_print_stack ();
1439     }
1440 
1441  done:
1442   Py_XDECREF (type_obj);
1443   Py_XDECREF (type_module);
1444   Py_XDECREF (func);
1445   Py_XDECREF (result_obj);
1446   do_cleanups (cleanups);
1447   if (result != NULL)
1448     *prettied_type = result;
1449   return result != NULL ? EXT_LANG_RC_OK : EXT_LANG_RC_ERROR;
1450 }
1451 
1452 /* Free the result of start_type_printers.
1453    This is the extension_language_ops.free_type_printers "method".  */
1454 
1455 static void
1456 gdbpy_free_type_printers (const struct extension_language_defn *extlang,
1457 			  struct ext_lang_type_printers *ext_printers)
1458 {
1459   struct cleanup *cleanups;
1460   PyObject *printers = ext_printers->py_type_printers;
1461 
1462   if (printers == NULL)
1463     return;
1464 
1465   if (!gdb_python_initialized)
1466     return;
1467 
1468   cleanups = ensure_python_env (get_current_arch (), current_language);
1469   Py_DECREF (printers);
1470   do_cleanups (cleanups);
1471 }
1472 
1473 #else /* HAVE_PYTHON */
1474 
1475 /* Dummy implementation of the gdb "python-interactive" and "python"
1476    command. */
1477 
1478 static void
1479 python_interactive_command (char *arg, int from_tty)
1480 {
1481   arg = skip_spaces (arg);
1482   if (arg && *arg)
1483     error (_("Python scripting is not supported in this copy of GDB."));
1484   else
1485     {
1486       struct command_line *l = get_command_line (python_control, "");
1487       struct cleanup *cleanups = make_cleanup_free_command_lines (&l);
1488 
1489       execute_control_command_untraced (l);
1490       do_cleanups (cleanups);
1491     }
1492 }
1493 
1494 static void
1495 python_command (char *arg, int from_tty)
1496 {
1497   python_interactive_command (arg, from_tty);
1498 }
1499 
1500 #endif /* HAVE_PYTHON */
1501 
1502 
1503 
1504 /* Lists for 'set python' commands.  */
1505 
1506 static struct cmd_list_element *user_set_python_list;
1507 static struct cmd_list_element *user_show_python_list;
1508 
1509 /* Function for use by 'set python' prefix command.  */
1510 
1511 static void
1512 user_set_python (char *args, int from_tty)
1513 {
1514   help_list (user_set_python_list, "set python ", all_commands,
1515 	     gdb_stdout);
1516 }
1517 
1518 /* Function for use by 'show python' prefix command.  */
1519 
1520 static void
1521 user_show_python (char *args, int from_tty)
1522 {
1523   cmd_show_list (user_show_python_list, from_tty, "");
1524 }
1525 
1526 /* Initialize the Python code.  */
1527 
1528 #ifdef HAVE_PYTHON
1529 
1530 /* This is installed as a final cleanup and cleans up the
1531    interpreter.  This lets Python's 'atexit' work.  */
1532 
1533 static void
1534 finalize_python (void *ignore)
1535 {
1536   struct active_ext_lang_state *previous_active;
1537 
1538   /* We don't use ensure_python_env here because if we ever ran the
1539      cleanup, gdb would crash -- because the cleanup calls into the
1540      Python interpreter, which we are about to destroy.  It seems
1541      clearer to make the needed calls explicitly here than to create a
1542      cleanup and then mysteriously discard it.  */
1543 
1544   /* This is only called as a final cleanup so we can assume the active
1545      SIGINT handler is gdb's.  We still need to tell it to notify Python.  */
1546   previous_active = set_active_ext_lang (&extension_language_python);
1547 
1548   (void) PyGILState_Ensure ();
1549   python_gdbarch = target_gdbarch ();
1550   python_language = current_language;
1551 
1552   Py_Finalize ();
1553 
1554   restore_active_ext_lang (previous_active);
1555 }
1556 #endif
1557 
1558 /* Provide a prototype to silence -Wmissing-prototypes.  */
1559 extern initialize_file_ftype _initialize_python;
1560 
1561 void
1562 _initialize_python (void)
1563 {
1564   char *progname;
1565 #ifdef IS_PY3K
1566   int i;
1567   size_t progsize, count;
1568   char *oldloc;
1569   wchar_t *progname_copy;
1570 #endif
1571 
1572   add_com ("python-interactive", class_obscure,
1573 	   python_interactive_command,
1574 #ifdef HAVE_PYTHON
1575 	   _("\
1576 Start an interactive Python prompt.\n\
1577 \n\
1578 To return to GDB, type the EOF character (e.g., Ctrl-D on an empty\n\
1579 prompt).\n\
1580 \n\
1581 Alternatively, a single-line Python command can be given as an\n\
1582 argument, and if the command is an expression, the result will be\n\
1583 printed.  For example:\n\
1584 \n\
1585     (gdb) python-interactive 2 + 3\n\
1586     5\n\
1587 ")
1588 #else /* HAVE_PYTHON */
1589 	   _("\
1590 Start a Python interactive prompt.\n\
1591 \n\
1592 Python scripting is not supported in this copy of GDB.\n\
1593 This command is only a placeholder.")
1594 #endif /* HAVE_PYTHON */
1595 	   );
1596   add_com_alias ("pi", "python-interactive", class_obscure, 1);
1597 
1598   add_com ("python", class_obscure, python_command,
1599 #ifdef HAVE_PYTHON
1600 	   _("\
1601 Evaluate a Python command.\n\
1602 \n\
1603 The command can be given as an argument, for instance:\n\
1604 \n\
1605     python print 23\n\
1606 \n\
1607 If no argument is given, the following lines are read and used\n\
1608 as the Python commands.  Type a line containing \"end\" to indicate\n\
1609 the end of the command.")
1610 #else /* HAVE_PYTHON */
1611 	   _("\
1612 Evaluate a Python command.\n\
1613 \n\
1614 Python scripting is not supported in this copy of GDB.\n\
1615 This command is only a placeholder.")
1616 #endif /* HAVE_PYTHON */
1617 	   );
1618   add_com_alias ("py", "python", class_obscure, 1);
1619 
1620   /* Add set/show python print-stack.  */
1621   add_prefix_cmd ("python", no_class, user_show_python,
1622 		  _("Prefix command for python preference settings."),
1623 		  &user_show_python_list, "show python ", 0,
1624 		  &showlist);
1625 
1626   add_prefix_cmd ("python", no_class, user_set_python,
1627 		  _("Prefix command for python preference settings."),
1628 		  &user_set_python_list, "set python ", 0,
1629 		  &setlist);
1630 
1631   add_setshow_enum_cmd ("print-stack", no_class, python_excp_enums,
1632 			&gdbpy_should_print_stack, _("\
1633 Set mode for Python stack dump on error."), _("\
1634 Show the mode of Python stack printing on error."), _("\
1635 none  == no stack or message will be printed.\n\
1636 full == a message and a stack will be printed.\n\
1637 message == an error message without a stack will be printed."),
1638 			NULL, NULL,
1639 			&user_set_python_list,
1640 			&user_show_python_list);
1641 
1642 #ifdef HAVE_PYTHON
1643 #ifdef WITH_PYTHON_PATH
1644   /* Work around problem where python gets confused about where it is,
1645      and then can't find its libraries, etc.
1646      NOTE: Python assumes the following layout:
1647      /foo/bin/python
1648      /foo/lib/pythonX.Y/...
1649      This must be done before calling Py_Initialize.  */
1650   progname = concat (ldirname (python_libdir), SLASH_STRING, "bin",
1651 		     SLASH_STRING, "python", NULL);
1652 #ifdef IS_PY3K
1653   oldloc = setlocale (LC_ALL, NULL);
1654   setlocale (LC_ALL, "");
1655   progsize = strlen (progname);
1656   if (progsize == (size_t) -1)
1657     {
1658       fprintf (stderr, "Could not convert python path to string\n");
1659       return;
1660     }
1661   progname_copy = PyMem_Malloc ((progsize + 1) * sizeof (wchar_t));
1662   if (!progname_copy)
1663     {
1664       fprintf (stderr, "out of memory\n");
1665       return;
1666     }
1667   count = mbstowcs (progname_copy, progname, progsize + 1);
1668   if (count == (size_t) -1)
1669     {
1670       fprintf (stderr, "Could not convert python path to string\n");
1671       return;
1672     }
1673   setlocale (LC_ALL, oldloc);
1674 
1675   /* Note that Py_SetProgramName expects the string it is passed to
1676      remain alive for the duration of the program's execution, so
1677      it is not freed after this call.  */
1678   Py_SetProgramName (progname_copy);
1679 #else
1680   Py_SetProgramName (progname);
1681 #endif
1682 #endif
1683 
1684   Py_Initialize ();
1685   PyEval_InitThreads ();
1686 
1687 #ifdef IS_PY3K
1688   gdb_module = PyModule_Create (&GdbModuleDef);
1689   /* Add _gdb module to the list of known built-in modules.  */
1690   _PyImport_FixupBuiltin (gdb_module, "_gdb");
1691 #else
1692   gdb_module = Py_InitModule ("_gdb", GdbMethods);
1693 #endif
1694   if (gdb_module == NULL)
1695     goto fail;
1696 
1697   /* The casts to (char*) are for python 2.4.  */
1698   if (PyModule_AddStringConstant (gdb_module, "VERSION", (char*) version) < 0
1699       || PyModule_AddStringConstant (gdb_module, "HOST_CONFIG",
1700 				     (char*) host_name) < 0
1701       || PyModule_AddStringConstant (gdb_module, "TARGET_CONFIG",
1702 				     (char*) target_name) < 0)
1703     goto fail;
1704 
1705   /* Add stream constants.  */
1706   if (PyModule_AddIntConstant (gdb_module, "STDOUT", 0) < 0
1707       || PyModule_AddIntConstant (gdb_module, "STDERR", 1) < 0
1708       || PyModule_AddIntConstant (gdb_module, "STDLOG", 2) < 0)
1709     goto fail;
1710 
1711   gdbpy_gdb_error = PyErr_NewException ("gdb.error", PyExc_RuntimeError, NULL);
1712   if (gdbpy_gdb_error == NULL
1713       || gdb_pymodule_addobject (gdb_module, "error", gdbpy_gdb_error) < 0)
1714     goto fail;
1715 
1716   gdbpy_gdb_memory_error = PyErr_NewException ("gdb.MemoryError",
1717 					       gdbpy_gdb_error, NULL);
1718   if (gdbpy_gdb_memory_error == NULL
1719       || gdb_pymodule_addobject (gdb_module, "MemoryError",
1720 				 gdbpy_gdb_memory_error) < 0)
1721     goto fail;
1722 
1723   gdbpy_gdberror_exc = PyErr_NewException ("gdb.GdbError", NULL, NULL);
1724   if (gdbpy_gdberror_exc == NULL
1725       || gdb_pymodule_addobject (gdb_module, "GdbError",
1726 				 gdbpy_gdberror_exc) < 0)
1727     goto fail;
1728 
1729   gdbpy_initialize_gdb_readline ();
1730 
1731   if (gdbpy_initialize_auto_load () < 0
1732       || gdbpy_initialize_values () < 0
1733       || gdbpy_initialize_frames () < 0
1734       || gdbpy_initialize_commands () < 0
1735       || gdbpy_initialize_symbols () < 0
1736       || gdbpy_initialize_symtabs () < 0
1737       || gdbpy_initialize_blocks () < 0
1738       || gdbpy_initialize_functions () < 0
1739       || gdbpy_initialize_parameters () < 0
1740       || gdbpy_initialize_types () < 0
1741       || gdbpy_initialize_pspace () < 0
1742       || gdbpy_initialize_objfile () < 0
1743       || gdbpy_initialize_breakpoints () < 0
1744       || gdbpy_initialize_finishbreakpoints () < 0
1745       || gdbpy_initialize_lazy_string () < 0
1746       || gdbpy_initialize_linetable () < 0
1747       || gdbpy_initialize_thread () < 0
1748       || gdbpy_initialize_inferior () < 0
1749       || gdbpy_initialize_events () < 0
1750       || gdbpy_initialize_eventregistry () < 0
1751       || gdbpy_initialize_py_events () < 0
1752       || gdbpy_initialize_event () < 0
1753       || gdbpy_initialize_stop_event () < 0
1754       || gdbpy_initialize_signal_event () < 0
1755       || gdbpy_initialize_breakpoint_event () < 0
1756       || gdbpy_initialize_continue_event () < 0
1757       || gdbpy_initialize_inferior_call_pre_event () < 0
1758       || gdbpy_initialize_inferior_call_post_event () < 0
1759       || gdbpy_initialize_register_changed_event () < 0
1760       || gdbpy_initialize_memory_changed_event () < 0
1761       || gdbpy_initialize_exited_event () < 0
1762       || gdbpy_initialize_thread_event () < 0
1763       || gdbpy_initialize_new_objfile_event ()  < 0
1764       || gdbpy_initialize_clear_objfiles_event ()  < 0
1765       || gdbpy_initialize_arch () < 0
1766       || gdbpy_initialize_xmethods () < 0)
1767     goto fail;
1768 
1769   gdbpy_to_string_cst = PyString_FromString ("to_string");
1770   if (gdbpy_to_string_cst == NULL)
1771     goto fail;
1772   gdbpy_children_cst = PyString_FromString ("children");
1773   if (gdbpy_children_cst == NULL)
1774     goto fail;
1775   gdbpy_display_hint_cst = PyString_FromString ("display_hint");
1776   if (gdbpy_display_hint_cst == NULL)
1777     goto fail;
1778   gdbpy_doc_cst = PyString_FromString ("__doc__");
1779   if (gdbpy_doc_cst == NULL)
1780     goto fail;
1781   gdbpy_enabled_cst = PyString_FromString ("enabled");
1782   if (gdbpy_enabled_cst == NULL)
1783     goto fail;
1784   gdbpy_value_cst = PyString_FromString ("value");
1785   if (gdbpy_value_cst == NULL)
1786     goto fail;
1787 
1788   /* Release the GIL while gdb runs.  */
1789   PyThreadState_Swap (NULL);
1790   PyEval_ReleaseLock ();
1791 
1792   make_final_cleanup (finalize_python, NULL);
1793 
1794   gdb_python_initialized = 1;
1795   return;
1796 
1797  fail:
1798   gdbpy_print_stack ();
1799   /* Do not set 'gdb_python_initialized'.  */
1800   return;
1801 
1802 #endif /* HAVE_PYTHON */
1803 }
1804 
1805 #ifdef HAVE_PYTHON
1806 
1807 /* Perform the remaining python initializations.
1808    These must be done after GDB is at least mostly initialized.
1809    E.g., The "info pretty-printer" command needs the "info" prefix
1810    command installed.
1811    This is the extension_language_ops.finish_initialization "method".  */
1812 
1813 static void
1814 gdbpy_finish_initialization (const struct extension_language_defn *extlang)
1815 {
1816   PyObject *m;
1817   char *gdb_pythondir;
1818   PyObject *sys_path;
1819   struct cleanup *cleanup;
1820 
1821   cleanup = ensure_python_env (get_current_arch (), current_language);
1822 
1823   /* Add the initial data-directory to sys.path.  */
1824 
1825   gdb_pythondir = concat (gdb_datadir, SLASH_STRING, "python", NULL);
1826   make_cleanup (xfree, gdb_pythondir);
1827 
1828   sys_path = PySys_GetObject ("path");
1829 
1830   /* If sys.path is not defined yet, define it first.  */
1831   if (!(sys_path && PyList_Check (sys_path)))
1832     {
1833 #ifdef IS_PY3K
1834       PySys_SetPath (L"");
1835 #else
1836       PySys_SetPath ("");
1837 #endif
1838       sys_path = PySys_GetObject ("path");
1839     }
1840   if (sys_path && PyList_Check (sys_path))
1841     {
1842       PyObject *pythondir;
1843       int err;
1844 
1845       pythondir = PyString_FromString (gdb_pythondir);
1846       if (pythondir == NULL)
1847 	goto fail;
1848 
1849       err = PyList_Insert (sys_path, 0, pythondir);
1850       Py_DECREF (pythondir);
1851       if (err)
1852 	goto fail;
1853     }
1854   else
1855     goto fail;
1856 
1857   /* Import the gdb module to finish the initialization, and
1858      add it to __main__ for convenience.  */
1859   m = PyImport_AddModule ("__main__");
1860   if (m == NULL)
1861     goto fail;
1862 
1863   gdb_python_module = PyImport_ImportModule ("gdb");
1864   if (gdb_python_module == NULL)
1865     {
1866       gdbpy_print_stack ();
1867       /* This is passed in one call to warning so that blank lines aren't
1868 	 inserted between each line of text.  */
1869       warning (_("\n"
1870 		 "Could not load the Python gdb module from `%s'.\n"
1871 		 "Limited Python support is available from the _gdb module.\n"
1872 		 "Suggest passing --data-directory=/path/to/gdb/data-directory.\n"),
1873 		 gdb_pythondir);
1874       do_cleanups (cleanup);
1875       return;
1876     }
1877 
1878   if (gdb_pymodule_addobject (m, "gdb", gdb_python_module) < 0)
1879     goto fail;
1880 
1881   /* Keep the reference to gdb_python_module since it is in a global
1882      variable.  */
1883 
1884   do_cleanups (cleanup);
1885   return;
1886 
1887  fail:
1888   gdbpy_print_stack ();
1889   warning (_("internal error: Unhandled Python exception"));
1890   do_cleanups (cleanup);
1891 }
1892 
1893 /* Return non-zero if Python has successfully initialized.
1894    This is the extension_languages_ops.initialized "method".  */
1895 
1896 static int
1897 gdbpy_initialized (const struct extension_language_defn *extlang)
1898 {
1899   return gdb_python_initialized;
1900 }
1901 
1902 #endif /* HAVE_PYTHON */
1903 
1904 
1905 
1906 #ifdef HAVE_PYTHON
1907 
1908 static PyMethodDef GdbMethods[] =
1909 {
1910   { "history", gdbpy_history, METH_VARARGS,
1911     "Get a value from history" },
1912   { "execute", (PyCFunction) execute_gdb_command, METH_VARARGS | METH_KEYWORDS,
1913     "execute (command [, from_tty] [, to_string]) -> [String]\n\
1914 Evaluate command, a string, as a gdb CLI command.  Optionally returns\n\
1915 a Python String containing the output of the command if to_string is\n\
1916 set to True." },
1917   { "parameter", gdbpy_parameter, METH_VARARGS,
1918     "Return a gdb parameter's value" },
1919 
1920   { "breakpoints", gdbpy_breakpoints, METH_NOARGS,
1921     "Return a tuple of all breakpoint objects" },
1922 
1923   { "default_visualizer", gdbpy_default_visualizer, METH_VARARGS,
1924     "Find the default visualizer for a Value." },
1925 
1926   { "current_progspace", gdbpy_get_current_progspace, METH_NOARGS,
1927     "Return the current Progspace." },
1928   { "progspaces", gdbpy_progspaces, METH_NOARGS,
1929     "Return a sequence of all progspaces." },
1930 
1931   { "current_objfile", gdbpy_get_current_objfile, METH_NOARGS,
1932     "Return the current Objfile being loaded, or None." },
1933   { "objfiles", gdbpy_objfiles, METH_NOARGS,
1934     "Return a sequence of all loaded objfiles." },
1935 
1936   { "newest_frame", gdbpy_newest_frame, METH_NOARGS,
1937     "newest_frame () -> gdb.Frame.\n\
1938 Return the newest frame object." },
1939   { "selected_frame", gdbpy_selected_frame, METH_NOARGS,
1940     "selected_frame () -> gdb.Frame.\n\
1941 Return the selected frame object." },
1942   { "frame_stop_reason_string", gdbpy_frame_stop_reason_string, METH_VARARGS,
1943     "stop_reason_string (Integer) -> String.\n\
1944 Return a string explaining unwind stop reason." },
1945 
1946   { "lookup_type", (PyCFunction) gdbpy_lookup_type,
1947     METH_VARARGS | METH_KEYWORDS,
1948     "lookup_type (name [, block]) -> type\n\
1949 Return a Type corresponding to the given name." },
1950   { "lookup_symbol", (PyCFunction) gdbpy_lookup_symbol,
1951     METH_VARARGS | METH_KEYWORDS,
1952     "lookup_symbol (name [, block] [, domain]) -> (symbol, is_field_of_this)\n\
1953 Return a tuple with the symbol corresponding to the given name (or None) and\n\
1954 a boolean indicating if name is a field of the current implied argument\n\
1955 `this' (when the current language is object-oriented)." },
1956   { "lookup_global_symbol", (PyCFunction) gdbpy_lookup_global_symbol,
1957     METH_VARARGS | METH_KEYWORDS,
1958     "lookup_global_symbol (name [, domain]) -> symbol\n\
1959 Return the symbol corresponding to the given name (or None)." },
1960 
1961   { "lookup_objfile", (PyCFunction) gdbpy_lookup_objfile,
1962     METH_VARARGS | METH_KEYWORDS,
1963     "lookup_objfile (name, [by_build_id]) -> objfile\n\
1964 Look up the specified objfile.\n\
1965 If by_build_id is True, the objfile is looked up by using name\n\
1966 as its build id." },
1967 
1968   { "block_for_pc", gdbpy_block_for_pc, METH_VARARGS,
1969     "Return the block containing the given pc value, or None." },
1970   { "solib_name", gdbpy_solib_name, METH_VARARGS,
1971     "solib_name (Long) -> String.\n\
1972 Return the name of the shared library holding a given address, or None." },
1973   { "decode_line", gdbpy_decode_line, METH_VARARGS,
1974     "decode_line (String) -> Tuple.  Decode a string argument the way\n\
1975 that 'break' or 'edit' does.  Return a tuple containing two elements.\n\
1976 The first element contains any unparsed portion of the String parameter\n\
1977 (or None if the string was fully parsed).  The second element contains\n\
1978 a tuple that contains all the locations that match, represented as\n\
1979 gdb.Symtab_and_line objects (or None)."},
1980   { "parse_and_eval", gdbpy_parse_and_eval, METH_VARARGS,
1981     "parse_and_eval (String) -> Value.\n\
1982 Parse String as an expression, evaluate it, and return the result as a Value."
1983   },
1984   { "find_pc_line", gdbpy_find_pc_line, METH_VARARGS,
1985     "find_pc_line (pc) -> Symtab_and_line.\n\
1986 Return the gdb.Symtab_and_line object corresponding to the pc value." },
1987 
1988   { "post_event", gdbpy_post_event, METH_VARARGS,
1989     "Post an event into gdb's event loop." },
1990 
1991   { "target_charset", gdbpy_target_charset, METH_NOARGS,
1992     "target_charset () -> string.\n\
1993 Return the name of the current target charset." },
1994   { "target_wide_charset", gdbpy_target_wide_charset, METH_NOARGS,
1995     "target_wide_charset () -> string.\n\
1996 Return the name of the current target wide charset." },
1997 
1998   { "string_to_argv", gdbpy_string_to_argv, METH_VARARGS,
1999     "string_to_argv (String) -> Array.\n\
2000 Parse String and return an argv-like array.\n\
2001 Arguments are separate by spaces and may be quoted."
2002   },
2003   { "write", (PyCFunction)gdbpy_write, METH_VARARGS | METH_KEYWORDS,
2004     "Write a string using gdb's filtered stream." },
2005   { "flush", (PyCFunction)gdbpy_flush, METH_VARARGS | METH_KEYWORDS,
2006     "Flush gdb's filtered stdout stream." },
2007   { "selected_thread", gdbpy_selected_thread, METH_NOARGS,
2008     "selected_thread () -> gdb.InferiorThread.\n\
2009 Return the selected thread object." },
2010   { "selected_inferior", gdbpy_selected_inferior, METH_NOARGS,
2011     "selected_inferior () -> gdb.Inferior.\n\
2012 Return the selected inferior object." },
2013   { "inferiors", gdbpy_inferiors, METH_NOARGS,
2014     "inferiors () -> (gdb.Inferior, ...).\n\
2015 Return a tuple containing all inferiors." },
2016   {NULL, NULL, 0, NULL}
2017 };
2018 
2019 #ifdef IS_PY3K
2020 static struct PyModuleDef GdbModuleDef =
2021 {
2022   PyModuleDef_HEAD_INIT,
2023   "_gdb",
2024   NULL,
2025   -1,
2026   GdbMethods,
2027   NULL,
2028   NULL,
2029   NULL,
2030   NULL
2031 };
2032 #endif
2033 #endif /* HAVE_PYTHON */
2034