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