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