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