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