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