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