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