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