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