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