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