Introduce typeid_operation
[deliverable/binutils-gdb.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
39 /* Declared constants and enum for python stack printing. */
40 static const char python_excp_none[] = "none";
41 static const char python_excp_full[] = "full";
42 static const char python_excp_message[] = "message";
43
44 /* "set python print-stack" choices. */
45 static const char *const python_excp_enums[] =
46 {
47 python_excp_none,
48 python_excp_full,
49 python_excp_message,
50 NULL
51 };
52
53 /* The exception printing variable. 'full' if we want to print the
54 error message and stack, 'none' if we want to print nothing, and
55 'message' if we only want to print the error message. 'message' is
56 the default. */
57 static const char *gdbpy_should_print_stack = python_excp_message;
58
59 #ifdef HAVE_PYTHON
60 /* Forward decls, these are defined later. */
61 extern const struct extension_language_script_ops python_extension_script_ops;
62 extern const struct extension_language_ops python_extension_ops;
63 #endif
64
65 /* The main struct describing GDB's interface to the Python
66 extension language. */
67 const struct extension_language_defn extension_language_python =
68 {
69 EXT_LANG_PYTHON,
70 "python",
71 "Python",
72
73 ".py",
74 "-gdb.py",
75
76 python_control,
77
78 #ifdef HAVE_PYTHON
79 &python_extension_script_ops,
80 &python_extension_ops
81 #else
82 NULL,
83 NULL
84 #endif
85 };
86 \f
87 #ifdef HAVE_PYTHON
88
89 #include "cli/cli-decode.h"
90 #include "charset.h"
91 #include "top.h"
92 #include "python-internal.h"
93 #include "linespec.h"
94 #include "source.h"
95 #include "gdbsupport/version.h"
96 #include "target.h"
97 #include "gdbthread.h"
98 #include "interps.h"
99 #include "event-top.h"
100 #include "py-event.h"
101
102 /* True if Python has been successfully initialized, false
103 otherwise. */
104
105 int gdb_python_initialized;
106
107 extern PyMethodDef python_GdbMethods[];
108
109 PyObject *gdb_module;
110 PyObject *gdb_python_module;
111
112 /* Some string constants we may wish to use. */
113 PyObject *gdbpy_to_string_cst;
114 PyObject *gdbpy_children_cst;
115 PyObject *gdbpy_display_hint_cst;
116 PyObject *gdbpy_doc_cst;
117 PyObject *gdbpy_enabled_cst;
118 PyObject *gdbpy_value_cst;
119
120 /* The GdbError exception. */
121 PyObject *gdbpy_gdberror_exc;
122
123 /* The `gdb.error' base class. */
124 PyObject *gdbpy_gdb_error;
125
126 /* The `gdb.MemoryError' exception. */
127 PyObject *gdbpy_gdb_memory_error;
128
129 static script_sourcer_func gdbpy_source_script;
130 static objfile_script_sourcer_func gdbpy_source_objfile_script;
131 static objfile_script_executor_func gdbpy_execute_objfile_script;
132 static void gdbpy_finish_initialization
133 (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_finish_initialization,
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 gdbpy_current_objfile = objfile;
1392
1393 python_run_simple_file (file, filename);
1394
1395 gdbpy_current_objfile = NULL;
1396 }
1397
1398 /* Set the current objfile to OBJFILE and then execute SCRIPT
1399 as Python code. This does not throw any errors. If an exception
1400 occurs python will print the traceback and clear the error indicator.
1401 This is the extension_language_script_ops.objfile_script_executor
1402 "method". */
1403
1404 static void
1405 gdbpy_execute_objfile_script (const struct extension_language_defn *extlang,
1406 struct objfile *objfile, const char *name,
1407 const char *script)
1408 {
1409 if (!gdb_python_initialized)
1410 return;
1411
1412 gdbpy_enter enter_py (objfile->arch (), current_language);
1413 gdbpy_current_objfile = objfile;
1414
1415 PyRun_SimpleString (script);
1416
1417 gdbpy_current_objfile = NULL;
1418 }
1419
1420 /* Return the current Objfile, or None if there isn't one. */
1421
1422 static PyObject *
1423 gdbpy_get_current_objfile (PyObject *unused1, PyObject *unused2)
1424 {
1425 if (! gdbpy_current_objfile)
1426 Py_RETURN_NONE;
1427
1428 return objfile_to_objfile_object (gdbpy_current_objfile).release ();
1429 }
1430
1431 /* Compute the list of active python type printers and store them in
1432 EXT_PRINTERS->py_type_printers. The product of this function is used by
1433 gdbpy_apply_type_printers, and freed by gdbpy_free_type_printers.
1434 This is the extension_language_ops.start_type_printers "method". */
1435
1436 static void
1437 gdbpy_start_type_printers (const struct extension_language_defn *extlang,
1438 struct ext_lang_type_printers *ext_printers)
1439 {
1440 PyObject *printers_obj = NULL;
1441
1442 if (!gdb_python_initialized)
1443 return;
1444
1445 gdbpy_enter enter_py (get_current_arch (), current_language);
1446
1447 gdbpy_ref<> type_module (PyImport_ImportModule ("gdb.types"));
1448 if (type_module == NULL)
1449 {
1450 gdbpy_print_stack ();
1451 return;
1452 }
1453
1454 gdbpy_ref<> func (PyObject_GetAttrString (type_module.get (),
1455 "get_type_recognizers"));
1456 if (func == NULL)
1457 {
1458 gdbpy_print_stack ();
1459 return;
1460 }
1461
1462 printers_obj = PyObject_CallFunctionObjArgs (func.get (), (char *) NULL);
1463 if (printers_obj == NULL)
1464 gdbpy_print_stack ();
1465 else
1466 ext_printers->py_type_printers = printers_obj;
1467 }
1468
1469 /* If TYPE is recognized by some type printer, store in *PRETTIED_TYPE
1470 a newly allocated string holding the type's replacement name, and return
1471 EXT_LANG_RC_OK. The caller is responsible for freeing the string.
1472 If there's a Python error return EXT_LANG_RC_ERROR.
1473 Otherwise, return EXT_LANG_RC_NOP.
1474 This is the extension_language_ops.apply_type_printers "method". */
1475
1476 static enum ext_lang_rc
1477 gdbpy_apply_type_printers (const struct extension_language_defn *extlang,
1478 const struct ext_lang_type_printers *ext_printers,
1479 struct type *type, char **prettied_type)
1480 {
1481 PyObject *printers_obj = (PyObject *) ext_printers->py_type_printers;
1482 gdb::unique_xmalloc_ptr<char> result;
1483
1484 if (printers_obj == NULL)
1485 return EXT_LANG_RC_NOP;
1486
1487 if (!gdb_python_initialized)
1488 return EXT_LANG_RC_NOP;
1489
1490 gdbpy_enter enter_py (get_current_arch (), current_language);
1491
1492 gdbpy_ref<> type_obj (type_to_type_object (type));
1493 if (type_obj == NULL)
1494 {
1495 gdbpy_print_stack ();
1496 return EXT_LANG_RC_ERROR;
1497 }
1498
1499 gdbpy_ref<> type_module (PyImport_ImportModule ("gdb.types"));
1500 if (type_module == NULL)
1501 {
1502 gdbpy_print_stack ();
1503 return EXT_LANG_RC_ERROR;
1504 }
1505
1506 gdbpy_ref<> func (PyObject_GetAttrString (type_module.get (),
1507 "apply_type_recognizers"));
1508 if (func == NULL)
1509 {
1510 gdbpy_print_stack ();
1511 return EXT_LANG_RC_ERROR;
1512 }
1513
1514 gdbpy_ref<> result_obj (PyObject_CallFunctionObjArgs (func.get (),
1515 printers_obj,
1516 type_obj.get (),
1517 (char *) NULL));
1518 if (result_obj == NULL)
1519 {
1520 gdbpy_print_stack ();
1521 return EXT_LANG_RC_ERROR;
1522 }
1523
1524 if (result_obj == Py_None)
1525 return EXT_LANG_RC_NOP;
1526
1527 result = python_string_to_host_string (result_obj.get ());
1528 if (result == NULL)
1529 {
1530 gdbpy_print_stack ();
1531 return EXT_LANG_RC_ERROR;
1532 }
1533
1534 *prettied_type = result.release ();
1535 return EXT_LANG_RC_OK;
1536 }
1537
1538 /* Free the result of start_type_printers.
1539 This is the extension_language_ops.free_type_printers "method". */
1540
1541 static void
1542 gdbpy_free_type_printers (const struct extension_language_defn *extlang,
1543 struct ext_lang_type_printers *ext_printers)
1544 {
1545 PyObject *printers = (PyObject *) ext_printers->py_type_printers;
1546
1547 if (printers == NULL)
1548 return;
1549
1550 if (!gdb_python_initialized)
1551 return;
1552
1553 gdbpy_enter enter_py (get_current_arch (), current_language);
1554 Py_DECREF (printers);
1555 }
1556
1557 #else /* HAVE_PYTHON */
1558
1559 /* Dummy implementation of the gdb "python-interactive" and "python"
1560 command. */
1561
1562 static void
1563 python_interactive_command (const char *arg, int from_tty)
1564 {
1565 arg = skip_spaces (arg);
1566 if (arg && *arg)
1567 error (_("Python scripting is not supported in this copy of GDB."));
1568 else
1569 {
1570 counted_command_line l = get_command_line (python_control, "");
1571
1572 execute_control_command_untraced (l.get ());
1573 }
1574 }
1575
1576 static void
1577 python_command (const char *arg, int from_tty)
1578 {
1579 python_interactive_command (arg, from_tty);
1580 }
1581
1582 #endif /* HAVE_PYTHON */
1583
1584 \f
1585
1586 /* Lists for 'set python' commands. */
1587
1588 static struct cmd_list_element *user_set_python_list;
1589 static struct cmd_list_element *user_show_python_list;
1590
1591 /* Initialize the Python code. */
1592
1593 #ifdef HAVE_PYTHON
1594
1595 /* This is installed as a final cleanup and cleans up the
1596 interpreter. This lets Python's 'atexit' work. */
1597
1598 static void
1599 finalize_python (void *ignore)
1600 {
1601 struct active_ext_lang_state *previous_active;
1602
1603 /* We don't use ensure_python_env here because if we ever ran the
1604 cleanup, gdb would crash -- because the cleanup calls into the
1605 Python interpreter, which we are about to destroy. It seems
1606 clearer to make the needed calls explicitly here than to create a
1607 cleanup and then mysteriously discard it. */
1608
1609 /* This is only called as a final cleanup so we can assume the active
1610 SIGINT handler is gdb's. We still need to tell it to notify Python. */
1611 previous_active = set_active_ext_lang (&extension_language_python);
1612
1613 (void) PyGILState_Ensure ();
1614 python_gdbarch = target_gdbarch ();
1615 python_language = current_language;
1616
1617 Py_Finalize ();
1618
1619 gdb_python_initialized = false;
1620 restore_active_ext_lang (previous_active);
1621 }
1622
1623 #ifdef IS_PY3K
1624 static struct PyModuleDef python_GdbModuleDef =
1625 {
1626 PyModuleDef_HEAD_INIT,
1627 "_gdb",
1628 NULL,
1629 -1,
1630 python_GdbMethods,
1631 NULL,
1632 NULL,
1633 NULL,
1634 NULL
1635 };
1636
1637 /* This is called via the PyImport_AppendInittab mechanism called
1638 during initialization, to make the built-in _gdb module known to
1639 Python. */
1640 PyMODINIT_FUNC init__gdb_module (void);
1641 PyMODINIT_FUNC
1642 init__gdb_module (void)
1643 {
1644 return PyModule_Create (&python_GdbModuleDef);
1645 }
1646 #endif
1647
1648 static bool
1649 do_start_initialization ()
1650 {
1651 #ifdef WITH_PYTHON_PATH
1652 /* Work around problem where python gets confused about where it is,
1653 and then can't find its libraries, etc.
1654 NOTE: Python assumes the following layout:
1655 /foo/bin/python
1656 /foo/lib/pythonX.Y/...
1657 This must be done before calling Py_Initialize. */
1658 gdb::unique_xmalloc_ptr<char> progname
1659 (concat (ldirname (python_libdir.c_str ()).c_str (), SLASH_STRING, "bin",
1660 SLASH_STRING, "python", (char *) NULL));
1661 #ifdef IS_PY3K
1662 /* Python documentation indicates that the memory given
1663 to Py_SetProgramName cannot be freed. However, it seems that
1664 at least Python 3.7.4 Py_SetProgramName takes a copy of the
1665 given program_name. Making progname_copy static and not release
1666 the memory avoids a leak report for Python versions that duplicate
1667 program_name, and respect the requirement of Py_SetProgramName
1668 for Python versions that do not duplicate program_name. */
1669 static wchar_t *progname_copy;
1670
1671 std::string oldloc = setlocale (LC_ALL, NULL);
1672 setlocale (LC_ALL, "");
1673 size_t progsize = strlen (progname.get ());
1674 progname_copy = XNEWVEC (wchar_t, progsize + 1);
1675 size_t count = mbstowcs (progname_copy, progname.get (), progsize + 1);
1676 if (count == (size_t) -1)
1677 {
1678 fprintf (stderr, "Could not convert python path to string\n");
1679 return false;
1680 }
1681 setlocale (LC_ALL, oldloc.c_str ());
1682
1683 /* Note that Py_SetProgramName expects the string it is passed to
1684 remain alive for the duration of the program's execution, so
1685 it is not freed after this call. */
1686 Py_SetProgramName (progname_copy);
1687
1688 /* Define _gdb as a built-in module. */
1689 PyImport_AppendInittab ("_gdb", init__gdb_module);
1690 #else
1691 Py_SetProgramName (progname.release ());
1692 #endif
1693 #endif
1694
1695 Py_Initialize ();
1696 #if PY_VERSION_HEX < 0x03090000
1697 /* PyEval_InitThreads became deprecated in Python 3.9 and will
1698 be removed in Python 3.11. Prior to Python 3.7, this call was
1699 required to initialize the GIL. */
1700 PyEval_InitThreads ();
1701 #endif
1702
1703 #ifdef IS_PY3K
1704 gdb_module = PyImport_ImportModule ("_gdb");
1705 #else
1706 gdb_module = Py_InitModule ("_gdb", python_GdbMethods);
1707 #endif
1708 if (gdb_module == NULL)
1709 return false;
1710
1711 if (PyModule_AddStringConstant (gdb_module, "VERSION", version) < 0
1712 || PyModule_AddStringConstant (gdb_module, "HOST_CONFIG", host_name) < 0
1713 || PyModule_AddStringConstant (gdb_module, "TARGET_CONFIG",
1714 target_name) < 0)
1715 return false;
1716
1717 /* Add stream constants. */
1718 if (PyModule_AddIntConstant (gdb_module, "STDOUT", 0) < 0
1719 || PyModule_AddIntConstant (gdb_module, "STDERR", 1) < 0
1720 || PyModule_AddIntConstant (gdb_module, "STDLOG", 2) < 0)
1721 return false;
1722
1723 gdbpy_gdb_error = PyErr_NewException ("gdb.error", PyExc_RuntimeError, NULL);
1724 if (gdbpy_gdb_error == NULL
1725 || gdb_pymodule_addobject (gdb_module, "error", gdbpy_gdb_error) < 0)
1726 return false;
1727
1728 gdbpy_gdb_memory_error = PyErr_NewException ("gdb.MemoryError",
1729 gdbpy_gdb_error, NULL);
1730 if (gdbpy_gdb_memory_error == NULL
1731 || gdb_pymodule_addobject (gdb_module, "MemoryError",
1732 gdbpy_gdb_memory_error) < 0)
1733 return false;
1734
1735 gdbpy_gdberror_exc = PyErr_NewException ("gdb.GdbError", NULL, NULL);
1736 if (gdbpy_gdberror_exc == NULL
1737 || gdb_pymodule_addobject (gdb_module, "GdbError",
1738 gdbpy_gdberror_exc) < 0)
1739 return false;
1740
1741 gdbpy_initialize_gdb_readline ();
1742
1743 if (gdbpy_initialize_auto_load () < 0
1744 || gdbpy_initialize_values () < 0
1745 || gdbpy_initialize_frames () < 0
1746 || gdbpy_initialize_commands () < 0
1747 || gdbpy_initialize_instruction () < 0
1748 || gdbpy_initialize_record () < 0
1749 || gdbpy_initialize_btrace () < 0
1750 || gdbpy_initialize_symbols () < 0
1751 || gdbpy_initialize_symtabs () < 0
1752 || gdbpy_initialize_blocks () < 0
1753 || gdbpy_initialize_functions () < 0
1754 || gdbpy_initialize_parameters () < 0
1755 || gdbpy_initialize_types () < 0
1756 || gdbpy_initialize_pspace () < 0
1757 || gdbpy_initialize_objfile () < 0
1758 || gdbpy_initialize_breakpoints () < 0
1759 || gdbpy_initialize_finishbreakpoints () < 0
1760 || gdbpy_initialize_lazy_string () < 0
1761 || gdbpy_initialize_linetable () < 0
1762 || gdbpy_initialize_thread () < 0
1763 || gdbpy_initialize_inferior () < 0
1764 || gdbpy_initialize_eventregistry () < 0
1765 || gdbpy_initialize_py_events () < 0
1766 || gdbpy_initialize_event () < 0
1767 || gdbpy_initialize_arch () < 0
1768 || gdbpy_initialize_registers () < 0
1769 || gdbpy_initialize_xmethods () < 0
1770 || gdbpy_initialize_unwind () < 0
1771 || gdbpy_initialize_tui () < 0)
1772 return false;
1773
1774 #define GDB_PY_DEFINE_EVENT_TYPE(name, py_name, doc, base) \
1775 if (gdbpy_initialize_event_generic (&name##_event_object_type, py_name) < 0) \
1776 return false;
1777 #include "py-event-types.def"
1778 #undef GDB_PY_DEFINE_EVENT_TYPE
1779
1780 gdbpy_to_string_cst = PyString_FromString ("to_string");
1781 if (gdbpy_to_string_cst == NULL)
1782 return false;
1783 gdbpy_children_cst = PyString_FromString ("children");
1784 if (gdbpy_children_cst == NULL)
1785 return false;
1786 gdbpy_display_hint_cst = PyString_FromString ("display_hint");
1787 if (gdbpy_display_hint_cst == NULL)
1788 return false;
1789 gdbpy_doc_cst = PyString_FromString ("__doc__");
1790 if (gdbpy_doc_cst == NULL)
1791 return false;
1792 gdbpy_enabled_cst = PyString_FromString ("enabled");
1793 if (gdbpy_enabled_cst == NULL)
1794 return false;
1795 gdbpy_value_cst = PyString_FromString ("value");
1796 if (gdbpy_value_cst == NULL)
1797 return false;
1798
1799 /* Release the GIL while gdb runs. */
1800 PyEval_SaveThread ();
1801
1802 make_final_cleanup (finalize_python, NULL);
1803
1804 /* Only set this when initialization has succeeded. */
1805 gdb_python_initialized = 1;
1806 return true;
1807 }
1808
1809 #endif /* HAVE_PYTHON */
1810
1811 /* See python.h. */
1812 cmd_list_element *python_cmd_element = nullptr;
1813
1814 void _initialize_python ();
1815 void
1816 _initialize_python ()
1817 {
1818 add_com ("python-interactive", class_obscure,
1819 python_interactive_command,
1820 #ifdef HAVE_PYTHON
1821 _("\
1822 Start an interactive Python prompt.\n\
1823 \n\
1824 To return to GDB, type the EOF character (e.g., Ctrl-D on an empty\n\
1825 prompt).\n\
1826 \n\
1827 Alternatively, a single-line Python command can be given as an\n\
1828 argument, and if the command is an expression, the result will be\n\
1829 printed. For example:\n\
1830 \n\
1831 (gdb) python-interactive 2 + 3\n\
1832 5")
1833 #else /* HAVE_PYTHON */
1834 _("\
1835 Start a Python interactive prompt.\n\
1836 \n\
1837 Python scripting is not supported in this copy of GDB.\n\
1838 This command is only a placeholder.")
1839 #endif /* HAVE_PYTHON */
1840 );
1841 add_com_alias ("pi", "python-interactive", class_obscure, 1);
1842
1843 python_cmd_element = add_com ("python", class_obscure, python_command,
1844 #ifdef HAVE_PYTHON
1845 _("\
1846 Evaluate a Python command.\n\
1847 \n\
1848 The command can be given as an argument, for instance:\n\
1849 \n\
1850 python print (23)\n\
1851 \n\
1852 If no argument is given, the following lines are read and used\n\
1853 as the Python commands. Type a line containing \"end\" to indicate\n\
1854 the end of the command.")
1855 #else /* HAVE_PYTHON */
1856 _("\
1857 Evaluate a Python command.\n\
1858 \n\
1859 Python scripting is not supported in this copy of GDB.\n\
1860 This command is only a placeholder.")
1861 #endif /* HAVE_PYTHON */
1862 );
1863 add_com_alias ("py", "python", class_obscure, 1);
1864
1865 /* Add set/show python print-stack. */
1866 add_basic_prefix_cmd ("python", no_class,
1867 _("Prefix command for python preference settings."),
1868 &user_show_python_list, "show python ", 0,
1869 &showlist);
1870
1871 add_show_prefix_cmd ("python", no_class,
1872 _("Prefix command for python preference settings."),
1873 &user_set_python_list, "set python ", 0,
1874 &setlist);
1875
1876 add_setshow_enum_cmd ("print-stack", no_class, python_excp_enums,
1877 &gdbpy_should_print_stack, _("\
1878 Set mode for Python stack dump on error."), _("\
1879 Show the mode of Python stack printing on error."), _("\
1880 none == no stack or message will be printed.\n\
1881 full == a message and a stack will be printed.\n\
1882 message == an error message without a stack will be printed."),
1883 NULL, NULL,
1884 &user_set_python_list,
1885 &user_show_python_list);
1886
1887 #ifdef HAVE_PYTHON
1888 if (!do_start_initialization () && PyErr_Occurred ())
1889 gdbpy_print_stack ();
1890 #endif /* HAVE_PYTHON */
1891 }
1892
1893 #ifdef HAVE_PYTHON
1894
1895 /* Helper function for gdbpy_finish_initialization. This does the
1896 work and then returns false if an error has occurred and must be
1897 displayed, or true on success. */
1898
1899 static bool
1900 do_finish_initialization (const struct extension_language_defn *extlang)
1901 {
1902 PyObject *m;
1903 PyObject *sys_path;
1904
1905 /* Add the initial data-directory to sys.path. */
1906
1907 std::string gdb_pythondir = (std::string (gdb_datadir) + SLASH_STRING
1908 + "python");
1909
1910 sys_path = PySys_GetObject ("path");
1911
1912 /* If sys.path is not defined yet, define it first. */
1913 if (!(sys_path && PyList_Check (sys_path)))
1914 {
1915 #ifdef IS_PY3K
1916 PySys_SetPath (L"");
1917 #else
1918 PySys_SetPath ("");
1919 #endif
1920 sys_path = PySys_GetObject ("path");
1921 }
1922 if (sys_path && PyList_Check (sys_path))
1923 {
1924 gdbpy_ref<> pythondir (PyString_FromString (gdb_pythondir.c_str ()));
1925 if (pythondir == NULL || PyList_Insert (sys_path, 0, pythondir.get ()))
1926 return false;
1927 }
1928 else
1929 return false;
1930
1931 /* Import the gdb module to finish the initialization, and
1932 add it to __main__ for convenience. */
1933 m = PyImport_AddModule ("__main__");
1934 if (m == NULL)
1935 return false;
1936
1937 /* Keep the reference to gdb_python_module since it is in a global
1938 variable. */
1939 gdb_python_module = PyImport_ImportModule ("gdb");
1940 if (gdb_python_module == NULL)
1941 {
1942 gdbpy_print_stack ();
1943 /* This is passed in one call to warning so that blank lines aren't
1944 inserted between each line of text. */
1945 warning (_("\n"
1946 "Could not load the Python gdb module from `%s'.\n"
1947 "Limited Python support is available from the _gdb module.\n"
1948 "Suggest passing --data-directory=/path/to/gdb/data-directory."),
1949 gdb_pythondir.c_str ());
1950 /* We return "success" here as we've already emitted the
1951 warning. */
1952 return true;
1953 }
1954
1955 return gdb_pymodule_addobject (m, "gdb", gdb_python_module) >= 0;
1956 }
1957
1958 /* Perform the remaining python initializations.
1959 These must be done after GDB is at least mostly initialized.
1960 E.g., The "info pretty-printer" command needs the "info" prefix
1961 command installed.
1962 This is the extension_language_ops.finish_initialization "method". */
1963
1964 static void
1965 gdbpy_finish_initialization (const struct extension_language_defn *extlang)
1966 {
1967 gdbpy_enter enter_py (get_current_arch (), current_language);
1968
1969 if (!do_finish_initialization (extlang))
1970 {
1971 gdbpy_print_stack ();
1972 warning (_("internal error: Unhandled Python exception"));
1973 }
1974 }
1975
1976 /* Return non-zero if Python has successfully initialized.
1977 This is the extension_languages_ops.initialized "method". */
1978
1979 static int
1980 gdbpy_initialized (const struct extension_language_defn *extlang)
1981 {
1982 return gdb_python_initialized;
1983 }
1984
1985 PyMethodDef python_GdbMethods[] =
1986 {
1987 { "history", gdbpy_history, METH_VARARGS,
1988 "Get a value from history" },
1989 { "execute", (PyCFunction) execute_gdb_command, METH_VARARGS | METH_KEYWORDS,
1990 "execute (command [, from_tty] [, to_string]) -> [String]\n\
1991 Evaluate command, a string, as a gdb CLI command. Optionally returns\n\
1992 a Python String containing the output of the command if to_string is\n\
1993 set to True." },
1994 { "parameter", gdbpy_parameter, METH_VARARGS,
1995 "Return a gdb parameter's value" },
1996
1997 { "breakpoints", gdbpy_breakpoints, METH_NOARGS,
1998 "Return a tuple of all breakpoint objects" },
1999
2000 { "default_visualizer", gdbpy_default_visualizer, METH_VARARGS,
2001 "Find the default visualizer for a Value." },
2002
2003 { "progspaces", gdbpy_progspaces, METH_NOARGS,
2004 "Return a sequence of all progspaces." },
2005
2006 { "current_objfile", gdbpy_get_current_objfile, METH_NOARGS,
2007 "Return the current Objfile being loaded, or None." },
2008
2009 { "newest_frame", gdbpy_newest_frame, METH_NOARGS,
2010 "newest_frame () -> gdb.Frame.\n\
2011 Return the newest frame object." },
2012 { "selected_frame", gdbpy_selected_frame, METH_NOARGS,
2013 "selected_frame () -> gdb.Frame.\n\
2014 Return the selected frame object." },
2015 { "frame_stop_reason_string", gdbpy_frame_stop_reason_string, METH_VARARGS,
2016 "stop_reason_string (Integer) -> String.\n\
2017 Return a string explaining unwind stop reason." },
2018
2019 { "start_recording", gdbpy_start_recording, METH_VARARGS,
2020 "start_recording ([method] [, format]) -> gdb.Record.\n\
2021 Start recording with the given method. If no method is given, will fall back\n\
2022 to the system default method. If no format is given, will fall back to the\n\
2023 default format for the given method."},
2024 { "current_recording", gdbpy_current_recording, METH_NOARGS,
2025 "current_recording () -> gdb.Record.\n\
2026 Return current recording object." },
2027 { "stop_recording", gdbpy_stop_recording, METH_NOARGS,
2028 "stop_recording () -> None.\n\
2029 Stop current recording." },
2030
2031 { "lookup_type", (PyCFunction) gdbpy_lookup_type,
2032 METH_VARARGS | METH_KEYWORDS,
2033 "lookup_type (name [, block]) -> type\n\
2034 Return a Type corresponding to the given name." },
2035 { "lookup_symbol", (PyCFunction) gdbpy_lookup_symbol,
2036 METH_VARARGS | METH_KEYWORDS,
2037 "lookup_symbol (name [, block] [, domain]) -> (symbol, is_field_of_this)\n\
2038 Return a tuple with the symbol corresponding to the given name (or None) and\n\
2039 a boolean indicating if name is a field of the current implied argument\n\
2040 `this' (when the current language is object-oriented)." },
2041 { "lookup_global_symbol", (PyCFunction) gdbpy_lookup_global_symbol,
2042 METH_VARARGS | METH_KEYWORDS,
2043 "lookup_global_symbol (name [, domain]) -> symbol\n\
2044 Return the symbol corresponding to the given name (or None)." },
2045 { "lookup_static_symbol", (PyCFunction) gdbpy_lookup_static_symbol,
2046 METH_VARARGS | METH_KEYWORDS,
2047 "lookup_static_symbol (name [, domain]) -> symbol\n\
2048 Return the static-linkage symbol corresponding to the given name (or None)." },
2049 { "lookup_static_symbols", (PyCFunction) gdbpy_lookup_static_symbols,
2050 METH_VARARGS | METH_KEYWORDS,
2051 "lookup_static_symbols (name [, domain]) -> symbol\n\
2052 Return a list of all static-linkage symbols corresponding to the given name." },
2053
2054 { "lookup_objfile", (PyCFunction) gdbpy_lookup_objfile,
2055 METH_VARARGS | METH_KEYWORDS,
2056 "lookup_objfile (name, [by_build_id]) -> objfile\n\
2057 Look up the specified objfile.\n\
2058 If by_build_id is True, the objfile is looked up by using name\n\
2059 as its build id." },
2060
2061 { "decode_line", gdbpy_decode_line, METH_VARARGS,
2062 "decode_line (String) -> Tuple. Decode a string argument the way\n\
2063 that 'break' or 'edit' does. Return a tuple containing two elements.\n\
2064 The first element contains any unparsed portion of the String parameter\n\
2065 (or None if the string was fully parsed). The second element contains\n\
2066 a tuple that contains all the locations that match, represented as\n\
2067 gdb.Symtab_and_line objects (or None)."},
2068 { "parse_and_eval", gdbpy_parse_and_eval, METH_VARARGS,
2069 "parse_and_eval (String) -> Value.\n\
2070 Parse String as an expression, evaluate it, and return the result as a Value."
2071 },
2072
2073 { "post_event", gdbpy_post_event, METH_VARARGS,
2074 "Post an event into gdb's event loop." },
2075
2076 { "target_charset", gdbpy_target_charset, METH_NOARGS,
2077 "target_charset () -> string.\n\
2078 Return the name of the current target charset." },
2079 { "target_wide_charset", gdbpy_target_wide_charset, METH_NOARGS,
2080 "target_wide_charset () -> string.\n\
2081 Return the name of the current target wide charset." },
2082 { "rbreak", (PyCFunction) gdbpy_rbreak, METH_VARARGS | METH_KEYWORDS,
2083 "rbreak (Regex) -> List.\n\
2084 Return a Tuple containing gdb.Breakpoint objects that match the given Regex." },
2085 { "string_to_argv", gdbpy_string_to_argv, METH_VARARGS,
2086 "string_to_argv (String) -> Array.\n\
2087 Parse String and return an argv-like array.\n\
2088 Arguments are separate by spaces and may be quoted."
2089 },
2090 { "write", (PyCFunction)gdbpy_write, METH_VARARGS | METH_KEYWORDS,
2091 "Write a string using gdb's filtered stream." },
2092 { "flush", (PyCFunction)gdbpy_flush, METH_VARARGS | METH_KEYWORDS,
2093 "Flush gdb's filtered stdout stream." },
2094 { "selected_thread", gdbpy_selected_thread, METH_NOARGS,
2095 "selected_thread () -> gdb.InferiorThread.\n\
2096 Return the selected thread object." },
2097 { "selected_inferior", gdbpy_selected_inferior, METH_NOARGS,
2098 "selected_inferior () -> gdb.Inferior.\n\
2099 Return the selected inferior object." },
2100 { "inferiors", gdbpy_inferiors, METH_NOARGS,
2101 "inferiors () -> (gdb.Inferior, ...).\n\
2102 Return a tuple containing all inferiors." },
2103
2104 { "invalidate_cached_frames", gdbpy_invalidate_cached_frames, METH_NOARGS,
2105 "invalidate_cached_frames () -> None.\n\
2106 Invalidate any cached frame objects in gdb.\n\
2107 Intended for internal use only." },
2108
2109 { "convenience_variable", gdbpy_convenience_variable, METH_VARARGS,
2110 "convenience_variable (NAME) -> value.\n\
2111 Return the value of the convenience variable $NAME,\n\
2112 or None if not set." },
2113 { "set_convenience_variable", gdbpy_set_convenience_variable, METH_VARARGS,
2114 "convenience_variable (NAME, VALUE) -> None.\n\
2115 Set the value of the convenience variable $NAME." },
2116
2117 #ifdef TUI
2118 { "register_window_type", (PyCFunction) gdbpy_register_tui_window,
2119 METH_VARARGS | METH_KEYWORDS,
2120 "register_window_type (NAME, CONSTRUCSTOR) -> None\n\
2121 Register a TUI window constructor." },
2122 #endif /* TUI */
2123
2124 {NULL, NULL, 0, NULL}
2125 };
2126
2127 /* Define all the event objects. */
2128 #define GDB_PY_DEFINE_EVENT_TYPE(name, py_name, doc, base) \
2129 PyTypeObject name##_event_object_type \
2130 CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("event_object") \
2131 = { \
2132 PyVarObject_HEAD_INIT (NULL, 0) \
2133 "gdb." py_name, /* tp_name */ \
2134 sizeof (event_object), /* tp_basicsize */ \
2135 0, /* tp_itemsize */ \
2136 evpy_dealloc, /* tp_dealloc */ \
2137 0, /* tp_print */ \
2138 0, /* tp_getattr */ \
2139 0, /* tp_setattr */ \
2140 0, /* tp_compare */ \
2141 0, /* tp_repr */ \
2142 0, /* tp_as_number */ \
2143 0, /* tp_as_sequence */ \
2144 0, /* tp_as_mapping */ \
2145 0, /* tp_hash */ \
2146 0, /* tp_call */ \
2147 0, /* tp_str */ \
2148 0, /* tp_getattro */ \
2149 0, /* tp_setattro */ \
2150 0, /* tp_as_buffer */ \
2151 Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */ \
2152 doc, /* tp_doc */ \
2153 0, /* tp_traverse */ \
2154 0, /* tp_clear */ \
2155 0, /* tp_richcompare */ \
2156 0, /* tp_weaklistoffset */ \
2157 0, /* tp_iter */ \
2158 0, /* tp_iternext */ \
2159 0, /* tp_methods */ \
2160 0, /* tp_members */ \
2161 0, /* tp_getset */ \
2162 &base, /* tp_base */ \
2163 0, /* tp_dict */ \
2164 0, /* tp_descr_get */ \
2165 0, /* tp_descr_set */ \
2166 0, /* tp_dictoffset */ \
2167 0, /* tp_init */ \
2168 0 /* tp_alloc */ \
2169 };
2170 #include "py-event-types.def"
2171 #undef GDB_PY_DEFINE_EVENT_TYPE
2172
2173 #endif /* HAVE_PYTHON */
This page took 0.232814 seconds and 4 git commands to generate.