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