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