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