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