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