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