9854c79c103aa9fb2cab2516f67f8e57440e1e62
[deliverable/binutils-gdb.git] / gdb / python / python.c
1 /* General python/gdb code
2
3 Copyright (C) 2008-2015 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
38 /* Declared constants and enum for python stack printing. */
39 static const char python_excp_none[] = "none";
40 static const char python_excp_full[] = "full";
41 static const char python_excp_message[] = "message";
42
43 /* "set python print-stack" choices. */
44 static const char *const python_excp_enums[] =
45 {
46 python_excp_none,
47 python_excp_full,
48 python_excp_message,
49 NULL
50 };
51
52 /* The exception printing variable. 'full' if we want to print the
53 error message and stack, 'none' if we want to print nothing, and
54 'message' if we only want to print the error message. 'message' is
55 the default. */
56 static const char *gdbpy_should_print_stack = python_excp_message;
57
58 #ifdef HAVE_PYTHON
59 /* Forward decls, these are defined later. */
60 extern const struct extension_language_script_ops python_extension_script_ops;
61 extern const struct extension_language_ops python_extension_ops;
62 #endif
63
64 /* The main struct describing GDB's interface to the Python
65 extension language. */
66 const struct extension_language_defn extension_language_python =
67 {
68 EXT_LANG_PYTHON,
69 "python",
70 "Python",
71
72 ".py",
73 "-gdb.py",
74
75 python_control,
76
77 #ifdef HAVE_PYTHON
78 &python_extension_script_ops,
79 &python_extension_ops
80 #else
81 NULL,
82 NULL
83 #endif
84 };
85 \f
86 #ifdef HAVE_PYTHON
87
88 #include "cli/cli-decode.h"
89 #include "charset.h"
90 #include "top.h"
91 #include "solib.h"
92 #include "python-internal.h"
93 #include "linespec.h"
94 #include "source.h"
95 #include "version.h"
96 #include "target.h"
97 #include "gdbthread.h"
98 #include "interps.h"
99 #include "event-top.h"
100
101 /* True if Python has been successfully initialized, false
102 otherwise. */
103
104 int gdb_python_initialized;
105
106 static PyMethodDef GdbMethods[];
107
108 #ifdef IS_PY3K
109 static struct PyModuleDef GdbModuleDef;
110 #endif
111
112 PyObject *gdb_module;
113 PyObject *gdb_python_module;
114
115 /* Some string constants we may wish to use. */
116 PyObject *gdbpy_to_string_cst;
117 PyObject *gdbpy_children_cst;
118 PyObject *gdbpy_display_hint_cst;
119 PyObject *gdbpy_doc_cst;
120 PyObject *gdbpy_enabled_cst;
121 PyObject *gdbpy_value_cst;
122
123 /* The GdbError exception. */
124 PyObject *gdbpy_gdberror_exc;
125
126 /* The `gdb.error' base class. */
127 PyObject *gdbpy_gdb_error;
128
129 /* The `gdb.MemoryError' exception. */
130 PyObject *gdbpy_gdb_memory_error;
131
132 static script_sourcer_func gdbpy_source_script;
133 static objfile_script_sourcer_func gdbpy_source_objfile_script;
134 static objfile_script_executor_func gdbpy_execute_objfile_script;
135 static void gdbpy_finish_initialization
136 (const struct extension_language_defn *);
137 static int gdbpy_initialized (const struct extension_language_defn *);
138 static void gdbpy_eval_from_control_command
139 (const struct extension_language_defn *, struct command_line *cmd);
140 static void gdbpy_start_type_printers (const struct extension_language_defn *,
141 struct ext_lang_type_printers *);
142 static enum ext_lang_rc gdbpy_apply_type_printers
143 (const struct extension_language_defn *,
144 const struct ext_lang_type_printers *, struct type *, char **);
145 static void gdbpy_free_type_printers (const struct extension_language_defn *,
146 struct ext_lang_type_printers *);
147 static void gdbpy_clear_quit_flag (const struct extension_language_defn *);
148 static void gdbpy_set_quit_flag (const struct extension_language_defn *);
149 static int gdbpy_check_quit_flag (const struct extension_language_defn *);
150 static enum ext_lang_rc gdbpy_before_prompt_hook
151 (const struct extension_language_defn *, const char *current_gdb_prompt);
152
153 /* The interface between gdb proper and loading of python scripts. */
154
155 const struct extension_language_script_ops python_extension_script_ops =
156 {
157 gdbpy_source_script,
158 gdbpy_source_objfile_script,
159 gdbpy_execute_objfile_script,
160 gdbpy_auto_load_enabled
161 };
162
163 /* The interface between gdb proper and python extensions. */
164
165 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 and gdbpy_execute_objfile_script; it is NULL
1268 at other times. */
1269 static struct objfile *gdbpy_current_objfile;
1270
1271 /* Set the current objfile to OBJFILE and then read FILE named FILENAME
1272 as Python code. This does not throw any errors. If an exception
1273 occurs python will print the traceback and clear the error indicator.
1274 This is the extension_language_script_ops.objfile_script_sourcer
1275 "method". */
1276
1277 static void
1278 gdbpy_source_objfile_script (const struct extension_language_defn *extlang,
1279 struct objfile *objfile, FILE *file,
1280 const char *filename)
1281 {
1282 struct cleanup *cleanups;
1283
1284 if (!gdb_python_initialized)
1285 return;
1286
1287 cleanups = ensure_python_env (get_objfile_arch (objfile), current_language);
1288 gdbpy_current_objfile = objfile;
1289
1290 python_run_simple_file (file, filename);
1291
1292 do_cleanups (cleanups);
1293 gdbpy_current_objfile = NULL;
1294 }
1295
1296 /* Set the current objfile to OBJFILE and then execute SCRIPT
1297 as Python code. This does not throw any errors. If an exception
1298 occurs python will print the traceback and clear the error indicator.
1299 This is the extension_language_script_ops.objfile_script_executor
1300 "method". */
1301
1302 static void
1303 gdbpy_execute_objfile_script (const struct extension_language_defn *extlang,
1304 struct objfile *objfile, const char *name,
1305 const char *script)
1306 {
1307 struct cleanup *cleanups;
1308
1309 if (!gdb_python_initialized)
1310 return;
1311
1312 cleanups = ensure_python_env (get_objfile_arch (objfile), current_language);
1313 gdbpy_current_objfile = objfile;
1314
1315 PyRun_SimpleString (script);
1316
1317 do_cleanups (cleanups);
1318 gdbpy_current_objfile = NULL;
1319 }
1320
1321 /* Return the current Objfile, or None if there isn't one. */
1322
1323 static PyObject *
1324 gdbpy_get_current_objfile (PyObject *unused1, PyObject *unused2)
1325 {
1326 PyObject *result;
1327
1328 if (! gdbpy_current_objfile)
1329 Py_RETURN_NONE;
1330
1331 result = objfile_to_objfile_object (gdbpy_current_objfile);
1332 if (result)
1333 Py_INCREF (result);
1334 return result;
1335 }
1336
1337 /* Return a sequence holding all the Objfiles. */
1338
1339 static PyObject *
1340 gdbpy_objfiles (PyObject *unused1, PyObject *unused2)
1341 {
1342 struct objfile *objf;
1343 PyObject *list;
1344
1345 list = PyList_New (0);
1346 if (!list)
1347 return NULL;
1348
1349 ALL_OBJFILES (objf)
1350 {
1351 PyObject *item = objfile_to_objfile_object (objf);
1352
1353 if (!item || PyList_Append (list, item) == -1)
1354 {
1355 Py_DECREF (list);
1356 return NULL;
1357 }
1358 }
1359
1360 return list;
1361 }
1362
1363 /* Compute the list of active python type printers and store them in
1364 EXT_PRINTERS->py_type_printers. The product of this function is used by
1365 gdbpy_apply_type_printers, and freed by gdbpy_free_type_printers.
1366 This is the extension_language_ops.start_type_printers "method". */
1367
1368 static void
1369 gdbpy_start_type_printers (const struct extension_language_defn *extlang,
1370 struct ext_lang_type_printers *ext_printers)
1371 {
1372 struct cleanup *cleanups;
1373 PyObject *type_module, *func = NULL, *printers_obj = NULL;
1374
1375 if (!gdb_python_initialized)
1376 return;
1377
1378 cleanups = ensure_python_env (get_current_arch (), current_language);
1379
1380 type_module = PyImport_ImportModule ("gdb.types");
1381 if (type_module == NULL)
1382 {
1383 gdbpy_print_stack ();
1384 goto done;
1385 }
1386
1387 func = PyObject_GetAttrString (type_module, "get_type_recognizers");
1388 if (func == NULL)
1389 {
1390 gdbpy_print_stack ();
1391 goto done;
1392 }
1393
1394 printers_obj = PyObject_CallFunctionObjArgs (func, (char *) NULL);
1395 if (printers_obj == NULL)
1396 gdbpy_print_stack ();
1397 else
1398 ext_printers->py_type_printers = printers_obj;
1399
1400 done:
1401 Py_XDECREF (type_module);
1402 Py_XDECREF (func);
1403 do_cleanups (cleanups);
1404 }
1405
1406 /* If TYPE is recognized by some type printer, store in *PRETTIED_TYPE
1407 a newly allocated string holding the type's replacement name, and return
1408 EXT_LANG_RC_OK. The caller is responsible for freeing the string.
1409 If there's a Python error return EXT_LANG_RC_ERROR.
1410 Otherwise, return EXT_LANG_RC_NOP.
1411 This is the extension_language_ops.apply_type_printers "method". */
1412
1413 static enum ext_lang_rc
1414 gdbpy_apply_type_printers (const struct extension_language_defn *extlang,
1415 const struct ext_lang_type_printers *ext_printers,
1416 struct type *type, char **prettied_type)
1417 {
1418 struct cleanup *cleanups;
1419 PyObject *type_obj, *type_module = NULL, *func = NULL;
1420 PyObject *result_obj = NULL;
1421 PyObject *printers_obj = ext_printers->py_type_printers;
1422 char *result = NULL;
1423
1424 if (printers_obj == NULL)
1425 return EXT_LANG_RC_NOP;
1426
1427 if (!gdb_python_initialized)
1428 return EXT_LANG_RC_NOP;
1429
1430 cleanups = ensure_python_env (get_current_arch (), current_language);
1431
1432 type_obj = type_to_type_object (type);
1433 if (type_obj == NULL)
1434 {
1435 gdbpy_print_stack ();
1436 goto done;
1437 }
1438
1439 type_module = PyImport_ImportModule ("gdb.types");
1440 if (type_module == NULL)
1441 {
1442 gdbpy_print_stack ();
1443 goto done;
1444 }
1445
1446 func = PyObject_GetAttrString (type_module, "apply_type_recognizers");
1447 if (func == NULL)
1448 {
1449 gdbpy_print_stack ();
1450 goto done;
1451 }
1452
1453 result_obj = PyObject_CallFunctionObjArgs (func, printers_obj,
1454 type_obj, (char *) NULL);
1455 if (result_obj == NULL)
1456 {
1457 gdbpy_print_stack ();
1458 goto done;
1459 }
1460
1461 if (result_obj != Py_None)
1462 {
1463 result = python_string_to_host_string (result_obj);
1464 if (result == NULL)
1465 gdbpy_print_stack ();
1466 }
1467
1468 done:
1469 Py_XDECREF (type_obj);
1470 Py_XDECREF (type_module);
1471 Py_XDECREF (func);
1472 Py_XDECREF (result_obj);
1473 do_cleanups (cleanups);
1474 if (result != NULL)
1475 *prettied_type = result;
1476 return result != NULL ? EXT_LANG_RC_OK : EXT_LANG_RC_ERROR;
1477 }
1478
1479 /* Free the result of start_type_printers.
1480 This is the extension_language_ops.free_type_printers "method". */
1481
1482 static void
1483 gdbpy_free_type_printers (const struct extension_language_defn *extlang,
1484 struct ext_lang_type_printers *ext_printers)
1485 {
1486 struct cleanup *cleanups;
1487 PyObject *printers = ext_printers->py_type_printers;
1488
1489 if (printers == NULL)
1490 return;
1491
1492 if (!gdb_python_initialized)
1493 return;
1494
1495 cleanups = ensure_python_env (get_current_arch (), current_language);
1496 Py_DECREF (printers);
1497 do_cleanups (cleanups);
1498 }
1499
1500 #else /* HAVE_PYTHON */
1501
1502 /* Dummy implementation of the gdb "python-interactive" and "python"
1503 command. */
1504
1505 static void
1506 python_interactive_command (char *arg, int from_tty)
1507 {
1508 arg = skip_spaces (arg);
1509 if (arg && *arg)
1510 error (_("Python scripting is not supported in this copy of GDB."));
1511 else
1512 {
1513 struct command_line *l = get_command_line (python_control, "");
1514 struct cleanup *cleanups = make_cleanup_free_command_lines (&l);
1515
1516 execute_control_command_untraced (l);
1517 do_cleanups (cleanups);
1518 }
1519 }
1520
1521 static void
1522 python_command (char *arg, int from_tty)
1523 {
1524 python_interactive_command (arg, from_tty);
1525 }
1526
1527 #endif /* HAVE_PYTHON */
1528
1529 \f
1530
1531 /* Lists for 'set python' commands. */
1532
1533 static struct cmd_list_element *user_set_python_list;
1534 static struct cmd_list_element *user_show_python_list;
1535
1536 /* Function for use by 'set python' prefix command. */
1537
1538 static void
1539 user_set_python (char *args, int from_tty)
1540 {
1541 help_list (user_set_python_list, "set python ", all_commands,
1542 gdb_stdout);
1543 }
1544
1545 /* Function for use by 'show python' prefix command. */
1546
1547 static void
1548 user_show_python (char *args, int from_tty)
1549 {
1550 cmd_show_list (user_show_python_list, from_tty, "");
1551 }
1552
1553 /* Initialize the Python code. */
1554
1555 #ifdef HAVE_PYTHON
1556
1557 /* This is installed as a final cleanup and cleans up the
1558 interpreter. This lets Python's 'atexit' work. */
1559
1560 static void
1561 finalize_python (void *ignore)
1562 {
1563 struct active_ext_lang_state *previous_active;
1564
1565 /* We don't use ensure_python_env here because if we ever ran the
1566 cleanup, gdb would crash -- because the cleanup calls into the
1567 Python interpreter, which we are about to destroy. It seems
1568 clearer to make the needed calls explicitly here than to create a
1569 cleanup and then mysteriously discard it. */
1570
1571 /* This is only called as a final cleanup so we can assume the active
1572 SIGINT handler is gdb's. We still need to tell it to notify Python. */
1573 previous_active = set_active_ext_lang (&extension_language_python);
1574
1575 (void) PyGILState_Ensure ();
1576 python_gdbarch = target_gdbarch ();
1577 python_language = current_language;
1578
1579 Py_Finalize ();
1580
1581 restore_active_ext_lang (previous_active);
1582 }
1583 #endif
1584
1585 /* Provide a prototype to silence -Wmissing-prototypes. */
1586 extern initialize_file_ftype _initialize_python;
1587
1588 void
1589 _initialize_python (void)
1590 {
1591 char *progname;
1592 #ifdef IS_PY3K
1593 int i;
1594 size_t progsize, count;
1595 char *oldloc;
1596 wchar_t *progname_copy;
1597 #endif
1598
1599 add_com ("python-interactive", class_obscure,
1600 python_interactive_command,
1601 #ifdef HAVE_PYTHON
1602 _("\
1603 Start an interactive Python prompt.\n\
1604 \n\
1605 To return to GDB, type the EOF character (e.g., Ctrl-D on an empty\n\
1606 prompt).\n\
1607 \n\
1608 Alternatively, a single-line Python command can be given as an\n\
1609 argument, and if the command is an expression, the result will be\n\
1610 printed. For example:\n\
1611 \n\
1612 (gdb) python-interactive 2 + 3\n\
1613 5\n\
1614 ")
1615 #else /* HAVE_PYTHON */
1616 _("\
1617 Start a Python interactive prompt.\n\
1618 \n\
1619 Python scripting is not supported in this copy of GDB.\n\
1620 This command is only a placeholder.")
1621 #endif /* HAVE_PYTHON */
1622 );
1623 add_com_alias ("pi", "python-interactive", class_obscure, 1);
1624
1625 add_com ("python", class_obscure, python_command,
1626 #ifdef HAVE_PYTHON
1627 _("\
1628 Evaluate a Python command.\n\
1629 \n\
1630 The command can be given as an argument, for instance:\n\
1631 \n\
1632 python print 23\n\
1633 \n\
1634 If no argument is given, the following lines are read and used\n\
1635 as the Python commands. Type a line containing \"end\" to indicate\n\
1636 the end of the command.")
1637 #else /* HAVE_PYTHON */
1638 _("\
1639 Evaluate a Python command.\n\
1640 \n\
1641 Python scripting is not supported in this copy of GDB.\n\
1642 This command is only a placeholder.")
1643 #endif /* HAVE_PYTHON */
1644 );
1645 add_com_alias ("py", "python", class_obscure, 1);
1646
1647 /* Add set/show python print-stack. */
1648 add_prefix_cmd ("python", no_class, user_show_python,
1649 _("Prefix command for python preference settings."),
1650 &user_show_python_list, "show python ", 0,
1651 &showlist);
1652
1653 add_prefix_cmd ("python", no_class, user_set_python,
1654 _("Prefix command for python preference settings."),
1655 &user_set_python_list, "set python ", 0,
1656 &setlist);
1657
1658 add_setshow_enum_cmd ("print-stack", no_class, python_excp_enums,
1659 &gdbpy_should_print_stack, _("\
1660 Set mode for Python stack dump on error."), _("\
1661 Show the mode of Python stack printing on error."), _("\
1662 none == no stack or message will be printed.\n\
1663 full == a message and a stack will be printed.\n\
1664 message == an error message without a stack will be printed."),
1665 NULL, NULL,
1666 &user_set_python_list,
1667 &user_show_python_list);
1668
1669 #ifdef HAVE_PYTHON
1670 #ifdef WITH_PYTHON_PATH
1671 /* Work around problem where python gets confused about where it is,
1672 and then can't find its libraries, etc.
1673 NOTE: Python assumes the following layout:
1674 /foo/bin/python
1675 /foo/lib/pythonX.Y/...
1676 This must be done before calling Py_Initialize. */
1677 progname = concat (ldirname (python_libdir), SLASH_STRING, "bin",
1678 SLASH_STRING, "python", NULL);
1679 #ifdef IS_PY3K
1680 oldloc = setlocale (LC_ALL, NULL);
1681 setlocale (LC_ALL, "");
1682 progsize = strlen (progname);
1683 if (progsize == (size_t) -1)
1684 {
1685 fprintf (stderr, "Could not convert python path to string\n");
1686 return;
1687 }
1688 progname_copy = PyMem_Malloc ((progsize + 1) * sizeof (wchar_t));
1689 if (!progname_copy)
1690 {
1691 fprintf (stderr, "out of memory\n");
1692 return;
1693 }
1694 count = mbstowcs (progname_copy, progname, progsize + 1);
1695 if (count == (size_t) -1)
1696 {
1697 fprintf (stderr, "Could not convert python path to string\n");
1698 return;
1699 }
1700 setlocale (LC_ALL, oldloc);
1701
1702 /* Note that Py_SetProgramName expects the string it is passed to
1703 remain alive for the duration of the program's execution, so
1704 it is not freed after this call. */
1705 Py_SetProgramName (progname_copy);
1706 #else
1707 Py_SetProgramName (progname);
1708 #endif
1709 #endif
1710
1711 Py_Initialize ();
1712 PyEval_InitThreads ();
1713
1714 #ifdef IS_PY3K
1715 gdb_module = PyModule_Create (&GdbModuleDef);
1716 /* Add _gdb module to the list of known built-in modules. */
1717 _PyImport_FixupBuiltin (gdb_module, "_gdb");
1718 #else
1719 gdb_module = Py_InitModule ("_gdb", GdbMethods);
1720 #endif
1721 if (gdb_module == NULL)
1722 goto fail;
1723
1724 /* The casts to (char*) are for python 2.4. */
1725 if (PyModule_AddStringConstant (gdb_module, "VERSION", (char*) version) < 0
1726 || PyModule_AddStringConstant (gdb_module, "HOST_CONFIG",
1727 (char*) host_name) < 0
1728 || PyModule_AddStringConstant (gdb_module, "TARGET_CONFIG",
1729 (char*) target_name) < 0)
1730 goto fail;
1731
1732 /* Add stream constants. */
1733 if (PyModule_AddIntConstant (gdb_module, "STDOUT", 0) < 0
1734 || PyModule_AddIntConstant (gdb_module, "STDERR", 1) < 0
1735 || PyModule_AddIntConstant (gdb_module, "STDLOG", 2) < 0)
1736 goto fail;
1737
1738 gdbpy_gdb_error = PyErr_NewException ("gdb.error", PyExc_RuntimeError, NULL);
1739 if (gdbpy_gdb_error == NULL
1740 || gdb_pymodule_addobject (gdb_module, "error", gdbpy_gdb_error) < 0)
1741 goto fail;
1742
1743 gdbpy_gdb_memory_error = PyErr_NewException ("gdb.MemoryError",
1744 gdbpy_gdb_error, NULL);
1745 if (gdbpy_gdb_memory_error == NULL
1746 || gdb_pymodule_addobject (gdb_module, "MemoryError",
1747 gdbpy_gdb_memory_error) < 0)
1748 goto fail;
1749
1750 gdbpy_gdberror_exc = PyErr_NewException ("gdb.GdbError", NULL, NULL);
1751 if (gdbpy_gdberror_exc == NULL
1752 || gdb_pymodule_addobject (gdb_module, "GdbError",
1753 gdbpy_gdberror_exc) < 0)
1754 goto fail;
1755
1756 gdbpy_initialize_gdb_readline ();
1757
1758 if (gdbpy_initialize_auto_load () < 0
1759 || gdbpy_initialize_values () < 0
1760 || gdbpy_initialize_frames () < 0
1761 || gdbpy_initialize_commands () < 0
1762 || gdbpy_initialize_symbols () < 0
1763 || gdbpy_initialize_symtabs () < 0
1764 || gdbpy_initialize_blocks () < 0
1765 || gdbpy_initialize_functions () < 0
1766 || gdbpy_initialize_parameters () < 0
1767 || gdbpy_initialize_types () < 0
1768 || gdbpy_initialize_pspace () < 0
1769 || gdbpy_initialize_objfile () < 0
1770 || gdbpy_initialize_breakpoints () < 0
1771 || gdbpy_initialize_finishbreakpoints () < 0
1772 || gdbpy_initialize_lazy_string () < 0
1773 || gdbpy_initialize_linetable () < 0
1774 || gdbpy_initialize_thread () < 0
1775 || gdbpy_initialize_inferior () < 0
1776 || gdbpy_initialize_events () < 0
1777 || gdbpy_initialize_eventregistry () < 0
1778 || gdbpy_initialize_py_events () < 0
1779 || gdbpy_initialize_event () < 0
1780 || gdbpy_initialize_stop_event () < 0
1781 || gdbpy_initialize_signal_event () < 0
1782 || gdbpy_initialize_breakpoint_event () < 0
1783 || gdbpy_initialize_continue_event () < 0
1784 || gdbpy_initialize_inferior_call_pre_event () < 0
1785 || gdbpy_initialize_inferior_call_post_event () < 0
1786 || gdbpy_initialize_register_changed_event () < 0
1787 || gdbpy_initialize_memory_changed_event () < 0
1788 || gdbpy_initialize_exited_event () < 0
1789 || gdbpy_initialize_thread_event () < 0
1790 || gdbpy_initialize_new_objfile_event () < 0
1791 || gdbpy_initialize_clear_objfiles_event () < 0
1792 || gdbpy_initialize_arch () < 0
1793 || gdbpy_initialize_xmethods () < 0)
1794 goto fail;
1795
1796 gdbpy_to_string_cst = PyString_FromString ("to_string");
1797 if (gdbpy_to_string_cst == NULL)
1798 goto fail;
1799 gdbpy_children_cst = PyString_FromString ("children");
1800 if (gdbpy_children_cst == NULL)
1801 goto fail;
1802 gdbpy_display_hint_cst = PyString_FromString ("display_hint");
1803 if (gdbpy_display_hint_cst == NULL)
1804 goto fail;
1805 gdbpy_doc_cst = PyString_FromString ("__doc__");
1806 if (gdbpy_doc_cst == NULL)
1807 goto fail;
1808 gdbpy_enabled_cst = PyString_FromString ("enabled");
1809 if (gdbpy_enabled_cst == NULL)
1810 goto fail;
1811 gdbpy_value_cst = PyString_FromString ("value");
1812 if (gdbpy_value_cst == NULL)
1813 goto fail;
1814
1815 /* Release the GIL while gdb runs. */
1816 PyThreadState_Swap (NULL);
1817 PyEval_ReleaseLock ();
1818
1819 make_final_cleanup (finalize_python, NULL);
1820
1821 gdb_python_initialized = 1;
1822 return;
1823
1824 fail:
1825 gdbpy_print_stack ();
1826 /* Do not set 'gdb_python_initialized'. */
1827 return;
1828
1829 #endif /* HAVE_PYTHON */
1830 }
1831
1832 #ifdef HAVE_PYTHON
1833
1834 /* Perform the remaining python initializations.
1835 These must be done after GDB is at least mostly initialized.
1836 E.g., The "info pretty-printer" command needs the "info" prefix
1837 command installed.
1838 This is the extension_language_ops.finish_initialization "method". */
1839
1840 static void
1841 gdbpy_finish_initialization (const struct extension_language_defn *extlang)
1842 {
1843 PyObject *m;
1844 char *gdb_pythondir;
1845 PyObject *sys_path;
1846 struct cleanup *cleanup;
1847
1848 cleanup = ensure_python_env (get_current_arch (), current_language);
1849
1850 /* Add the initial data-directory to sys.path. */
1851
1852 gdb_pythondir = concat (gdb_datadir, SLASH_STRING, "python", NULL);
1853 make_cleanup (xfree, gdb_pythondir);
1854
1855 sys_path = PySys_GetObject ("path");
1856
1857 /* If sys.path is not defined yet, define it first. */
1858 if (!(sys_path && PyList_Check (sys_path)))
1859 {
1860 #ifdef IS_PY3K
1861 PySys_SetPath (L"");
1862 #else
1863 PySys_SetPath ("");
1864 #endif
1865 sys_path = PySys_GetObject ("path");
1866 }
1867 if (sys_path && PyList_Check (sys_path))
1868 {
1869 PyObject *pythondir;
1870 int err;
1871
1872 pythondir = PyString_FromString (gdb_pythondir);
1873 if (pythondir == NULL)
1874 goto fail;
1875
1876 err = PyList_Insert (sys_path, 0, pythondir);
1877 Py_DECREF (pythondir);
1878 if (err)
1879 goto fail;
1880 }
1881 else
1882 goto fail;
1883
1884 /* Import the gdb module to finish the initialization, and
1885 add it to __main__ for convenience. */
1886 m = PyImport_AddModule ("__main__");
1887 if (m == NULL)
1888 goto fail;
1889
1890 gdb_python_module = PyImport_ImportModule ("gdb");
1891 if (gdb_python_module == NULL)
1892 {
1893 gdbpy_print_stack ();
1894 /* This is passed in one call to warning so that blank lines aren't
1895 inserted between each line of text. */
1896 warning (_("\n"
1897 "Could not load the Python gdb module from `%s'.\n"
1898 "Limited Python support is available from the _gdb module.\n"
1899 "Suggest passing --data-directory=/path/to/gdb/data-directory.\n"),
1900 gdb_pythondir);
1901 do_cleanups (cleanup);
1902 return;
1903 }
1904
1905 if (gdb_pymodule_addobject (m, "gdb", gdb_python_module) < 0)
1906 goto fail;
1907
1908 /* Keep the reference to gdb_python_module since it is in a global
1909 variable. */
1910
1911 do_cleanups (cleanup);
1912 return;
1913
1914 fail:
1915 gdbpy_print_stack ();
1916 warning (_("internal error: Unhandled Python exception"));
1917 do_cleanups (cleanup);
1918 }
1919
1920 /* Return non-zero if Python has successfully initialized.
1921 This is the extension_languages_ops.initialized "method". */
1922
1923 static int
1924 gdbpy_initialized (const struct extension_language_defn *extlang)
1925 {
1926 return gdb_python_initialized;
1927 }
1928
1929 #endif /* HAVE_PYTHON */
1930
1931 \f
1932
1933 #ifdef HAVE_PYTHON
1934
1935 static PyMethodDef GdbMethods[] =
1936 {
1937 { "history", gdbpy_history, METH_VARARGS,
1938 "Get a value from history" },
1939 { "execute", (PyCFunction) execute_gdb_command, METH_VARARGS | METH_KEYWORDS,
1940 "execute (command [, from_tty] [, to_string]) -> [String]\n\
1941 Evaluate command, a string, as a gdb CLI command. Optionally returns\n\
1942 a Python String containing the output of the command if to_string is\n\
1943 set to True." },
1944 { "parameter", gdbpy_parameter, METH_VARARGS,
1945 "Return a gdb parameter's value" },
1946
1947 { "breakpoints", gdbpy_breakpoints, METH_NOARGS,
1948 "Return a tuple of all breakpoint objects" },
1949
1950 { "default_visualizer", gdbpy_default_visualizer, METH_VARARGS,
1951 "Find the default visualizer for a Value." },
1952
1953 { "current_progspace", gdbpy_get_current_progspace, METH_NOARGS,
1954 "Return the current Progspace." },
1955 { "progspaces", gdbpy_progspaces, METH_NOARGS,
1956 "Return a sequence of all progspaces." },
1957
1958 { "current_objfile", gdbpy_get_current_objfile, METH_NOARGS,
1959 "Return the current Objfile being loaded, or None." },
1960 { "objfiles", gdbpy_objfiles, METH_NOARGS,
1961 "Return a sequence of all loaded objfiles." },
1962
1963 { "newest_frame", gdbpy_newest_frame, METH_NOARGS,
1964 "newest_frame () -> gdb.Frame.\n\
1965 Return the newest frame object." },
1966 { "selected_frame", gdbpy_selected_frame, METH_NOARGS,
1967 "selected_frame () -> gdb.Frame.\n\
1968 Return the selected frame object." },
1969 { "frame_stop_reason_string", gdbpy_frame_stop_reason_string, METH_VARARGS,
1970 "stop_reason_string (Integer) -> String.\n\
1971 Return a string explaining unwind stop reason." },
1972
1973 { "lookup_type", (PyCFunction) gdbpy_lookup_type,
1974 METH_VARARGS | METH_KEYWORDS,
1975 "lookup_type (name [, block]) -> type\n\
1976 Return a Type corresponding to the given name." },
1977 { "lookup_symbol", (PyCFunction) gdbpy_lookup_symbol,
1978 METH_VARARGS | METH_KEYWORDS,
1979 "lookup_symbol (name [, block] [, domain]) -> (symbol, is_field_of_this)\n\
1980 Return a tuple with the symbol corresponding to the given name (or None) and\n\
1981 a boolean indicating if name is a field of the current implied argument\n\
1982 `this' (when the current language is object-oriented)." },
1983 { "lookup_global_symbol", (PyCFunction) gdbpy_lookup_global_symbol,
1984 METH_VARARGS | METH_KEYWORDS,
1985 "lookup_global_symbol (name [, domain]) -> symbol\n\
1986 Return the symbol corresponding to the given name (or None)." },
1987
1988 { "lookup_objfile", (PyCFunction) gdbpy_lookup_objfile,
1989 METH_VARARGS | METH_KEYWORDS,
1990 "lookup_objfile (name, [by_build_id]) -> objfile\n\
1991 Look up the specified objfile.\n\
1992 If by_build_id is True, the objfile is looked up by using name\n\
1993 as its build id." },
1994
1995 { "block_for_pc", gdbpy_block_for_pc, METH_VARARGS,
1996 "Return the block containing the given pc value, or None." },
1997 { "solib_name", gdbpy_solib_name, METH_VARARGS,
1998 "solib_name (Long) -> String.\n\
1999 Return the name of the shared library holding a given address, or None." },
2000 { "decode_line", gdbpy_decode_line, METH_VARARGS,
2001 "decode_line (String) -> Tuple. Decode a string argument the way\n\
2002 that 'break' or 'edit' does. Return a tuple containing two elements.\n\
2003 The first element contains any unparsed portion of the String parameter\n\
2004 (or None if the string was fully parsed). The second element contains\n\
2005 a tuple that contains all the locations that match, represented as\n\
2006 gdb.Symtab_and_line objects (or None)."},
2007 { "parse_and_eval", gdbpy_parse_and_eval, METH_VARARGS,
2008 "parse_and_eval (String) -> Value.\n\
2009 Parse String as an expression, evaluate it, and return the result as a Value."
2010 },
2011 { "find_pc_line", gdbpy_find_pc_line, METH_VARARGS,
2012 "find_pc_line (pc) -> Symtab_and_line.\n\
2013 Return the gdb.Symtab_and_line object corresponding to the pc value." },
2014
2015 { "post_event", gdbpy_post_event, METH_VARARGS,
2016 "Post an event into gdb's event loop." },
2017
2018 { "target_charset", gdbpy_target_charset, METH_NOARGS,
2019 "target_charset () -> string.\n\
2020 Return the name of the current target charset." },
2021 { "target_wide_charset", gdbpy_target_wide_charset, METH_NOARGS,
2022 "target_wide_charset () -> string.\n\
2023 Return the name of the current target wide charset." },
2024
2025 { "string_to_argv", gdbpy_string_to_argv, METH_VARARGS,
2026 "string_to_argv (String) -> Array.\n\
2027 Parse String and return an argv-like array.\n\
2028 Arguments are separate by spaces and may be quoted."
2029 },
2030 { "write", (PyCFunction)gdbpy_write, METH_VARARGS | METH_KEYWORDS,
2031 "Write a string using gdb's filtered stream." },
2032 { "flush", (PyCFunction)gdbpy_flush, METH_VARARGS | METH_KEYWORDS,
2033 "Flush gdb's filtered stdout stream." },
2034 { "selected_thread", gdbpy_selected_thread, METH_NOARGS,
2035 "selected_thread () -> gdb.InferiorThread.\n\
2036 Return the selected thread object." },
2037 { "selected_inferior", gdbpy_selected_inferior, METH_NOARGS,
2038 "selected_inferior () -> gdb.Inferior.\n\
2039 Return the selected inferior object." },
2040 { "inferiors", gdbpy_inferiors, METH_NOARGS,
2041 "inferiors () -> (gdb.Inferior, ...).\n\
2042 Return a tuple containing all inferiors." },
2043 {NULL, NULL, 0, NULL}
2044 };
2045
2046 #ifdef IS_PY3K
2047 static struct PyModuleDef GdbModuleDef =
2048 {
2049 PyModuleDef_HEAD_INIT,
2050 "_gdb",
2051 NULL,
2052 -1,
2053 GdbMethods,
2054 NULL,
2055 NULL,
2056 NULL,
2057 NULL
2058 };
2059 #endif
2060 #endif /* HAVE_PYTHON */
This page took 0.071739 seconds and 4 git commands to generate.