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