* python/python.c (gdbpy_decode_line): Move cleanup creation out
[deliverable/binutils-gdb.git] / gdb / python / python.c
1 /* General python/gdb code
2
3 Copyright (C) 2008-2012 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
36 #include <ctype.h>
37
38 /* Declared constants and enum for python stack printing. */
39 static const char python_excp_none[] = "none";
40 static const char python_excp_full[] = "full";
41 static const char python_excp_message[] = "message";
42
43 /* "set python print-stack" choices. */
44 static const char *const python_excp_enums[] =
45 {
46 python_excp_none,
47 python_excp_full,
48 python_excp_message,
49 NULL
50 };
51
52 /* The exception printing variable. 'full' if we want to print the
53 error message and stack, 'none' if we want to print nothing, and
54 'message' if we only want to print the error message. 'message' is
55 the default. */
56 static const char *gdbpy_should_print_stack = python_excp_message;
57
58 #ifdef HAVE_PYTHON
59
60 #include "libiberty.h"
61 #include "cli/cli-decode.h"
62 #include "charset.h"
63 #include "top.h"
64 #include "solib.h"
65 #include "python-internal.h"
66 #include "linespec.h"
67 #include "source.h"
68 #include "version.h"
69 #include "target.h"
70 #include "gdbthread.h"
71 #include "observer.h"
72 #include "interps.h"
73
74 static PyMethodDef GdbMethods[];
75
76 PyObject *gdb_module;
77
78 /* Some string constants we may wish to use. */
79 PyObject *gdbpy_to_string_cst;
80 PyObject *gdbpy_children_cst;
81 PyObject *gdbpy_display_hint_cst;
82 PyObject *gdbpy_doc_cst;
83 PyObject *gdbpy_enabled_cst;
84 PyObject *gdbpy_value_cst;
85
86 /* The GdbError exception. */
87 PyObject *gdbpy_gdberror_exc;
88
89 /* The `gdb.error' base class. */
90 PyObject *gdbpy_gdb_error;
91
92 /* The `gdb.MemoryError' exception. */
93 PyObject *gdbpy_gdb_memory_error;
94
95 /* Architecture and language to be used in callbacks from
96 the Python interpreter. */
97 struct gdbarch *python_gdbarch;
98 const struct language_defn *python_language;
99
100 /* Restore global language and architecture and Python GIL state
101 when leaving the Python interpreter. */
102
103 struct python_env
104 {
105 PyGILState_STATE state;
106 struct gdbarch *gdbarch;
107 const struct language_defn *language;
108 PyObject *error_type, *error_value, *error_traceback;
109 };
110
111 static void
112 restore_python_env (void *p)
113 {
114 struct python_env *env = (struct python_env *)p;
115
116 /* Leftover Python error is forbidden by Python Exception Handling. */
117 if (PyErr_Occurred ())
118 {
119 /* This order is similar to the one calling error afterwards. */
120 gdbpy_print_stack ();
121 warning (_("internal error: Unhandled Python exception"));
122 }
123
124 PyErr_Restore (env->error_type, env->error_value, env->error_traceback);
125
126 PyGILState_Release (env->state);
127 python_gdbarch = env->gdbarch;
128 python_language = env->language;
129 xfree (env);
130 }
131
132 /* Called before entering the Python interpreter to install the
133 current language and architecture to be used for Python values. */
134
135 struct cleanup *
136 ensure_python_env (struct gdbarch *gdbarch,
137 const struct language_defn *language)
138 {
139 struct python_env *env = xmalloc (sizeof *env);
140
141 env->state = PyGILState_Ensure ();
142 env->gdbarch = python_gdbarch;
143 env->language = python_language;
144
145 python_gdbarch = gdbarch;
146 python_language = language;
147
148 /* Save it and ensure ! PyErr_Occurred () afterwards. */
149 PyErr_Fetch (&env->error_type, &env->error_value, &env->error_traceback);
150
151 return make_cleanup (restore_python_env, env);
152 }
153
154 /* A wrapper around PyRun_SimpleFile. FILE is the Python script to run
155 named FILENAME.
156
157 On Windows hosts few users would build Python themselves (this is no
158 trivial task on this platform), and thus use binaries built by
159 someone else instead. There may happen situation where the Python
160 library and GDB are using two different versions of the C runtime
161 library. Python, being built with VC, would use one version of the
162 msvcr DLL (Eg. msvcr100.dll), while MinGW uses msvcrt.dll.
163 A FILE * from one runtime does not necessarily operate correctly in
164 the other runtime.
165
166 To work around this potential issue, we create on Windows hosts the
167 FILE object using Python routines, thus making sure that it is
168 compatible with the Python library. */
169
170 static void
171 python_run_simple_file (FILE *file, const char *filename)
172 {
173 #ifndef _WIN32
174
175 PyRun_SimpleFile (file, filename);
176
177 #else /* _WIN32 */
178
179 char *full_path;
180 PyObject *python_file;
181 struct cleanup *cleanup;
182
183 /* Because we have a string for a filename, and are using Python to
184 open the file, we need to expand any tilde in the path first. */
185 full_path = tilde_expand (filename);
186 cleanup = make_cleanup (xfree, full_path);
187 python_file = PyFile_FromString (full_path, "r");
188 if (! python_file)
189 {
190 do_cleanups (cleanup);
191 gdbpy_print_stack ();
192 error (_("Error while opening file: %s"), full_path);
193 }
194
195 make_cleanup_py_decref (python_file);
196 PyRun_SimpleFile (PyFile_AsFile (python_file), filename);
197 do_cleanups (cleanup);
198
199 #endif /* _WIN32 */
200 }
201
202 /* Given a command_line, return a command string suitable for passing
203 to Python. Lines in the string are separated by newlines. The
204 return value is allocated using xmalloc and the caller is
205 responsible for freeing it. */
206
207 static char *
208 compute_python_string (struct command_line *l)
209 {
210 struct command_line *iter;
211 char *script = NULL;
212 int size = 0;
213 int here;
214
215 for (iter = l; iter; iter = iter->next)
216 size += strlen (iter->line) + 1;
217
218 script = xmalloc (size + 1);
219 here = 0;
220 for (iter = l; iter; iter = iter->next)
221 {
222 int len = strlen (iter->line);
223
224 strcpy (&script[here], iter->line);
225 here += len;
226 script[here++] = '\n';
227 }
228 script[here] = '\0';
229 return script;
230 }
231
232 /* Take a command line structure representing a 'python' command, and
233 evaluate its body using the Python interpreter. */
234
235 void
236 eval_python_from_control_command (struct command_line *cmd)
237 {
238 int ret;
239 char *script;
240 struct cleanup *cleanup;
241
242 if (cmd->body_count != 1)
243 error (_("Invalid \"python\" block structure."));
244
245 cleanup = ensure_python_env (get_current_arch (), current_language);
246
247 script = compute_python_string (cmd->body_list[0]);
248 ret = PyRun_SimpleString (script);
249 xfree (script);
250 if (ret)
251 error (_("Error while executing Python code."));
252
253 do_cleanups (cleanup);
254 }
255
256 /* Implementation of the gdb "python" command. */
257
258 static void
259 python_command (char *arg, int from_tty)
260 {
261 struct cleanup *cleanup;
262
263 cleanup = ensure_python_env (get_current_arch (), current_language);
264
265 make_cleanup_restore_integer (&interpreter_async);
266 interpreter_async = 0;
267
268 while (arg && *arg && isspace (*arg))
269 ++arg;
270 if (arg && *arg)
271 {
272 if (PyRun_SimpleString (arg))
273 error (_("Error while executing Python code."));
274 }
275 else
276 {
277 struct command_line *l = get_command_line (python_control, "");
278
279 make_cleanup_free_command_lines (&l);
280 execute_control_command_untraced (l);
281 }
282
283 do_cleanups (cleanup);
284 }
285
286 \f
287
288 /* Transform a gdb parameters's value into a Python value. May return
289 NULL (and set a Python exception) on error. Helper function for
290 get_parameter. */
291 PyObject *
292 gdbpy_parameter_value (enum var_types type, void *var)
293 {
294 switch (type)
295 {
296 case var_string:
297 case var_string_noescape:
298 case var_optional_filename:
299 case var_filename:
300 case var_enum:
301 {
302 char *str = * (char **) var;
303
304 if (! str)
305 str = "";
306 return PyString_Decode (str, strlen (str), host_charset (), NULL);
307 }
308
309 case var_boolean:
310 {
311 if (* (int *) var)
312 Py_RETURN_TRUE;
313 else
314 Py_RETURN_FALSE;
315 }
316
317 case var_auto_boolean:
318 {
319 enum auto_boolean ab = * (enum auto_boolean *) var;
320
321 if (ab == AUTO_BOOLEAN_TRUE)
322 Py_RETURN_TRUE;
323 else if (ab == AUTO_BOOLEAN_FALSE)
324 Py_RETURN_FALSE;
325 else
326 Py_RETURN_NONE;
327 }
328
329 case var_integer:
330 if ((* (int *) var) == INT_MAX)
331 Py_RETURN_NONE;
332 /* Fall through. */
333 case var_zinteger:
334 return PyLong_FromLong (* (int *) var);
335
336 case var_uinteger:
337 {
338 unsigned int val = * (unsigned int *) var;
339
340 if (val == UINT_MAX)
341 Py_RETURN_NONE;
342 return PyLong_FromUnsignedLong (val);
343 }
344 }
345
346 return PyErr_Format (PyExc_RuntimeError,
347 _("Programmer error: unhandled type."));
348 }
349
350 /* A Python function which returns a gdb parameter's value as a Python
351 value. */
352
353 PyObject *
354 gdbpy_parameter (PyObject *self, PyObject *args)
355 {
356 struct cmd_list_element *alias, *prefix, *cmd;
357 const char *arg;
358 char *newarg;
359 int found = -1;
360 volatile struct gdb_exception except;
361
362 if (! PyArg_ParseTuple (args, "s", &arg))
363 return NULL;
364
365 newarg = concat ("show ", arg, (char *) NULL);
366
367 TRY_CATCH (except, RETURN_MASK_ALL)
368 {
369 found = lookup_cmd_composition (newarg, &alias, &prefix, &cmd);
370 }
371 xfree (newarg);
372 GDB_PY_HANDLE_EXCEPTION (except);
373 if (!found)
374 return PyErr_Format (PyExc_RuntimeError,
375 _("Could not find parameter `%s'."), arg);
376
377 if (! cmd->var)
378 return PyErr_Format (PyExc_RuntimeError,
379 _("`%s' is not a parameter."), arg);
380 return gdbpy_parameter_value (cmd->var_type, cmd->var);
381 }
382
383 /* Wrapper for target_charset. */
384
385 static PyObject *
386 gdbpy_target_charset (PyObject *self, PyObject *args)
387 {
388 const char *cset = target_charset (python_gdbarch);
389
390 return PyUnicode_Decode (cset, strlen (cset), host_charset (), NULL);
391 }
392
393 /* Wrapper for target_wide_charset. */
394
395 static PyObject *
396 gdbpy_target_wide_charset (PyObject *self, PyObject *args)
397 {
398 const char *cset = target_wide_charset (python_gdbarch);
399
400 return PyUnicode_Decode (cset, strlen (cset), host_charset (), NULL);
401 }
402
403 /* A Python function which evaluates a string using the gdb CLI. */
404
405 static PyObject *
406 execute_gdb_command (PyObject *self, PyObject *args, PyObject *kw)
407 {
408 const char *arg;
409 PyObject *from_tty_obj = NULL, *to_string_obj = NULL;
410 int from_tty, to_string;
411 volatile struct gdb_exception except;
412 static char *keywords[] = {"command", "from_tty", "to_string", NULL };
413 char *result = NULL;
414
415 if (! PyArg_ParseTupleAndKeywords (args, kw, "s|O!O!", keywords, &arg,
416 &PyBool_Type, &from_tty_obj,
417 &PyBool_Type, &to_string_obj))
418 return NULL;
419
420 from_tty = 0;
421 if (from_tty_obj)
422 {
423 int cmp = PyObject_IsTrue (from_tty_obj);
424 if (cmp < 0)
425 return NULL;
426 from_tty = cmp;
427 }
428
429 to_string = 0;
430 if (to_string_obj)
431 {
432 int cmp = PyObject_IsTrue (to_string_obj);
433 if (cmp < 0)
434 return NULL;
435 to_string = cmp;
436 }
437
438 TRY_CATCH (except, RETURN_MASK_ALL)
439 {
440 /* Copy the argument text in case the command modifies it. */
441 char *copy = xstrdup (arg);
442 struct cleanup *cleanup = make_cleanup (xfree, copy);
443
444 make_cleanup_restore_integer (&interpreter_async);
445 interpreter_async = 0;
446
447 prevent_dont_repeat ();
448 if (to_string)
449 result = execute_command_to_string (copy, from_tty);
450 else
451 {
452 result = NULL;
453 execute_command (copy, from_tty);
454 }
455
456 do_cleanups (cleanup);
457 }
458 GDB_PY_HANDLE_EXCEPTION (except);
459
460 /* Do any commands attached to breakpoint we stopped at. */
461 bpstat_do_actions ();
462
463 if (result)
464 {
465 PyObject *r = PyString_FromString (result);
466 xfree (result);
467 return r;
468 }
469 Py_RETURN_NONE;
470 }
471
472 /* Implementation of gdb.solib_name (Long) -> String.
473 Returns the name of the shared library holding a given address, or None. */
474
475 static PyObject *
476 gdbpy_solib_name (PyObject *self, PyObject *args)
477 {
478 char *soname;
479 PyObject *str_obj;
480 gdb_py_longest pc;
481
482 if (!PyArg_ParseTuple (args, GDB_PY_LL_ARG, &pc))
483 return NULL;
484
485 soname = solib_name_from_address (current_program_space, pc);
486 if (soname)
487 str_obj = PyString_Decode (soname, strlen (soname), host_charset (), NULL);
488 else
489 {
490 str_obj = Py_None;
491 Py_INCREF (Py_None);
492 }
493
494 return str_obj;
495 }
496
497 /* A Python function which is a wrapper for decode_line_1. */
498
499 static PyObject *
500 gdbpy_decode_line (PyObject *self, PyObject *args)
501 {
502 struct symtabs_and_lines sals = { NULL, 0 }; /* Initialize to
503 appease gcc. */
504 struct symtab_and_line sal;
505 const char *arg = NULL;
506 char *copy_to_free = NULL, *copy = NULL;
507 struct cleanup *cleanups;
508 PyObject *result = NULL;
509 PyObject *return_result = NULL;
510 PyObject *unparsed = NULL;
511 volatile struct gdb_exception except;
512
513 if (! PyArg_ParseTuple (args, "|s", &arg))
514 return NULL;
515
516 cleanups = make_cleanup (null_cleanup, NULL);
517
518 sals.sals = NULL;
519 TRY_CATCH (except, RETURN_MASK_ALL)
520 {
521 if (arg)
522 {
523 copy = xstrdup (arg);
524 copy_to_free = copy;
525 sals = decode_line_1 (&copy, 0, 0, 0);
526 }
527 else
528 {
529 set_default_source_symtab_and_line ();
530 sal = get_current_source_symtab_and_line ();
531 sals.sals = &sal;
532 sals.nelts = 1;
533 }
534 }
535
536 if (sals.sals != NULL && sals.sals != &sal)
537 {
538 make_cleanup (xfree, copy_to_free);
539 make_cleanup (xfree, sals.sals);
540 }
541
542 if (except.reason < 0)
543 {
544 do_cleanups (cleanups);
545 /* We know this will always throw. */
546 GDB_PY_HANDLE_EXCEPTION (except);
547 }
548
549 if (sals.nelts)
550 {
551 int i;
552
553 result = PyTuple_New (sals.nelts);
554 if (! result)
555 goto error;
556 for (i = 0; i < sals.nelts; ++i)
557 {
558 PyObject *obj;
559 char *str;
560
561 obj = symtab_and_line_to_sal_object (sals.sals[i]);
562 if (! obj)
563 {
564 Py_DECREF (result);
565 goto error;
566 }
567
568 PyTuple_SetItem (result, i, obj);
569 }
570 }
571 else
572 {
573 result = Py_None;
574 Py_INCREF (Py_None);
575 }
576
577 return_result = PyTuple_New (2);
578 if (! return_result)
579 {
580 Py_DECREF (result);
581 goto error;
582 }
583
584 if (copy && strlen (copy) > 0)
585 {
586 unparsed = PyString_FromString (copy);
587 if (unparsed == NULL)
588 {
589 Py_DECREF (result);
590 Py_DECREF (return_result);
591 return_result = NULL;
592 goto error;
593 }
594 }
595 else
596 {
597 unparsed = Py_None;
598 Py_INCREF (Py_None);
599 }
600
601 PyTuple_SetItem (return_result, 0, unparsed);
602 PyTuple_SetItem (return_result, 1, result);
603
604 error:
605 do_cleanups (cleanups);
606
607 return return_result;
608 }
609
610 /* Parse a string and evaluate it as an expression. */
611 static PyObject *
612 gdbpy_parse_and_eval (PyObject *self, PyObject *args)
613 {
614 const char *expr_str;
615 struct value *result = NULL;
616 volatile struct gdb_exception except;
617
618 if (!PyArg_ParseTuple (args, "s", &expr_str))
619 return NULL;
620
621 TRY_CATCH (except, RETURN_MASK_ALL)
622 {
623 char *copy = xstrdup (expr_str);
624 struct cleanup *cleanup = make_cleanup (xfree, copy);
625
626 result = parse_and_eval (copy);
627 do_cleanups (cleanup);
628 }
629 GDB_PY_HANDLE_EXCEPTION (except);
630
631 return value_to_value_object (result);
632 }
633
634 /* Read a file as Python code.
635 FILE is the file to run. FILENAME is name of the file FILE.
636 This does not throw any errors. If an exception occurs python will print
637 the traceback and clear the error indicator. */
638
639 void
640 source_python_script (FILE *file, const char *filename)
641 {
642 struct cleanup *cleanup;
643
644 cleanup = ensure_python_env (get_current_arch (), current_language);
645 python_run_simple_file (file, filename);
646 do_cleanups (cleanup);
647 }
648
649 \f
650
651 /* Posting and handling events. */
652
653 /* A single event. */
654 struct gdbpy_event
655 {
656 /* The Python event. This is just a callable object. */
657 PyObject *event;
658 /* The next event. */
659 struct gdbpy_event *next;
660 };
661
662 /* All pending events. */
663 static struct gdbpy_event *gdbpy_event_list;
664 /* The final link of the event list. */
665 static struct gdbpy_event **gdbpy_event_list_end;
666
667 /* We use a file handler, and not an async handler, so that we can
668 wake up the main thread even when it is blocked in poll(). */
669 static struct serial *gdbpy_event_fds[2];
670
671 /* The file handler callback. This reads from the internal pipe, and
672 then processes the Python event queue. This will always be run in
673 the main gdb thread. */
674
675 static void
676 gdbpy_run_events (struct serial *scb, void *context)
677 {
678 struct cleanup *cleanup;
679 int r;
680
681 cleanup = ensure_python_env (get_current_arch (), current_language);
682
683 /* Flush the fd. Do this before flushing the events list, so that
684 any new event post afterwards is sure to re-awake the event
685 loop. */
686 while (serial_readchar (gdbpy_event_fds[0], 0) >= 0)
687 ;
688
689 while (gdbpy_event_list)
690 {
691 /* Dispatching the event might push a new element onto the event
692 loop, so we update here "atomically enough". */
693 struct gdbpy_event *item = gdbpy_event_list;
694 gdbpy_event_list = gdbpy_event_list->next;
695 if (gdbpy_event_list == NULL)
696 gdbpy_event_list_end = &gdbpy_event_list;
697
698 /* Ignore errors. */
699 if (PyObject_CallObject (item->event, NULL) == NULL)
700 PyErr_Clear ();
701
702 Py_DECREF (item->event);
703 xfree (item);
704 }
705
706 do_cleanups (cleanup);
707 }
708
709 /* Submit an event to the gdb thread. */
710 static PyObject *
711 gdbpy_post_event (PyObject *self, PyObject *args)
712 {
713 struct gdbpy_event *event;
714 PyObject *func;
715 int wakeup;
716
717 if (!PyArg_ParseTuple (args, "O", &func))
718 return NULL;
719
720 if (!PyCallable_Check (func))
721 {
722 PyErr_SetString (PyExc_RuntimeError,
723 _("Posted event is not callable"));
724 return NULL;
725 }
726
727 Py_INCREF (func);
728
729 /* From here until the end of the function, we have the GIL, so we
730 can operate on our global data structures without worrying. */
731 wakeup = gdbpy_event_list == NULL;
732
733 event = XNEW (struct gdbpy_event);
734 event->event = func;
735 event->next = NULL;
736 *gdbpy_event_list_end = event;
737 gdbpy_event_list_end = &event->next;
738
739 /* Wake up gdb when needed. */
740 if (wakeup)
741 {
742 char c = 'q'; /* Anything. */
743
744 if (serial_write (gdbpy_event_fds[1], &c, 1))
745 return PyErr_SetFromErrno (PyExc_IOError);
746 }
747
748 Py_RETURN_NONE;
749 }
750
751 /* Initialize the Python event handler. */
752 static void
753 gdbpy_initialize_events (void)
754 {
755 if (serial_pipe (gdbpy_event_fds) == 0)
756 {
757 gdbpy_event_list_end = &gdbpy_event_list;
758 serial_async (gdbpy_event_fds[0], gdbpy_run_events, NULL);
759 }
760 }
761
762 \f
763
764 static void
765 before_prompt_hook (const char *current_gdb_prompt)
766 {
767 struct cleanup *cleanup;
768 char *prompt = NULL;
769
770 cleanup = ensure_python_env (get_current_arch (), current_language);
771
772 if (PyObject_HasAttrString (gdb_module, "prompt_hook"))
773 {
774 PyObject *hook;
775
776 hook = PyObject_GetAttrString (gdb_module, "prompt_hook");
777 if (hook == NULL)
778 goto fail;
779
780 if (PyCallable_Check (hook))
781 {
782 PyObject *result;
783 PyObject *current_prompt;
784
785 current_prompt = PyString_FromString (current_gdb_prompt);
786 if (current_prompt == NULL)
787 goto fail;
788
789 result = PyObject_CallFunctionObjArgs (hook, current_prompt, NULL);
790
791 Py_DECREF (current_prompt);
792
793 if (result == NULL)
794 goto fail;
795
796 make_cleanup_py_decref (result);
797
798 /* Return type should be None, or a String. If it is None,
799 fall through, we will not set a prompt. If it is a
800 string, set PROMPT. Anything else, set an exception. */
801 if (result != Py_None && ! PyString_Check (result))
802 {
803 PyErr_Format (PyExc_RuntimeError,
804 _("Return from prompt_hook must " \
805 "be either a Python string, or None"));
806 goto fail;
807 }
808
809 if (result != Py_None)
810 {
811 prompt = python_string_to_host_string (result);
812
813 if (prompt == NULL)
814 goto fail;
815 else
816 make_cleanup (xfree, prompt);
817 }
818 }
819 }
820
821 /* If a prompt has been set, PROMPT will not be NULL. If it is
822 NULL, do not set the prompt. */
823 if (prompt != NULL)
824 set_prompt (prompt);
825
826 do_cleanups (cleanup);
827 return;
828
829 fail:
830 gdbpy_print_stack ();
831 do_cleanups (cleanup);
832 return;
833 }
834
835 \f
836
837 /* Printing. */
838
839 /* A python function to write a single string using gdb's filtered
840 output stream . The optional keyword STREAM can be used to write
841 to a particular stream. The default stream is to gdb_stdout. */
842
843 static PyObject *
844 gdbpy_write (PyObject *self, PyObject *args, PyObject *kw)
845 {
846 const char *arg;
847 static char *keywords[] = {"text", "stream", NULL };
848 int stream_type = 0;
849
850 if (! PyArg_ParseTupleAndKeywords (args, kw, "s|i", keywords, &arg,
851 &stream_type))
852 return NULL;
853
854 switch (stream_type)
855 {
856 case 1:
857 {
858 fprintf_filtered (gdb_stderr, "%s", arg);
859 break;
860 }
861 case 2:
862 {
863 fprintf_filtered (gdb_stdlog, "%s", arg);
864 break;
865 }
866 default:
867 fprintf_filtered (gdb_stdout, "%s", arg);
868 }
869
870 Py_RETURN_NONE;
871 }
872
873 /* A python function to flush a gdb stream. The optional keyword
874 STREAM can be used to flush a particular stream. The default stream
875 is gdb_stdout. */
876
877 static PyObject *
878 gdbpy_flush (PyObject *self, PyObject *args, PyObject *kw)
879 {
880 static char *keywords[] = {"stream", NULL };
881 int stream_type = 0;
882
883 if (! PyArg_ParseTupleAndKeywords (args, kw, "|i", keywords,
884 &stream_type))
885 return NULL;
886
887 switch (stream_type)
888 {
889 case 1:
890 {
891 gdb_flush (gdb_stderr);
892 break;
893 }
894 case 2:
895 {
896 gdb_flush (gdb_stdlog);
897 break;
898 }
899 default:
900 gdb_flush (gdb_stdout);
901 }
902
903 Py_RETURN_NONE;
904 }
905
906 /* Print a python exception trace, print just a message, or print
907 nothing and clear the python exception, depending on
908 gdbpy_should_print_stack. Only call this if a python exception is
909 set. */
910 void
911 gdbpy_print_stack (void)
912 {
913 /* Print "none", just clear exception. */
914 if (gdbpy_should_print_stack == python_excp_none)
915 {
916 PyErr_Clear ();
917 }
918 /* Print "full" message and backtrace. */
919 else if (gdbpy_should_print_stack == python_excp_full)
920 {
921 PyErr_Print ();
922 /* PyErr_Print doesn't necessarily end output with a newline.
923 This works because Python's stdout/stderr is fed through
924 printf_filtered. */
925 begin_line ();
926 }
927 /* Print "message", just error print message. */
928 else
929 {
930 PyObject *ptype, *pvalue, *ptraceback;
931 char *msg = NULL, *type = NULL;
932
933 PyErr_Fetch (&ptype, &pvalue, &ptraceback);
934
935 /* Fetch the error message contained within ptype, pvalue. */
936 msg = gdbpy_exception_to_string (ptype, pvalue);
937 type = gdbpy_obj_to_string (ptype);
938 if (msg == NULL)
939 {
940 /* An error occurred computing the string representation of the
941 error message. */
942 fprintf_filtered (gdb_stderr,
943 _("Error occurred computing Python error" \
944 "message.\n"));
945 }
946 else
947 fprintf_filtered (gdb_stderr, "Python Exception %s %s: \n",
948 type, msg);
949
950 Py_XDECREF (ptype);
951 Py_XDECREF (pvalue);
952 Py_XDECREF (ptraceback);
953 xfree (msg);
954 }
955 }
956
957 \f
958
959 /* Return the current Progspace.
960 There always is one. */
961
962 static PyObject *
963 gdbpy_get_current_progspace (PyObject *unused1, PyObject *unused2)
964 {
965 PyObject *result;
966
967 result = pspace_to_pspace_object (current_program_space);
968 if (result)
969 Py_INCREF (result);
970 return result;
971 }
972
973 /* Return a sequence holding all the Progspaces. */
974
975 static PyObject *
976 gdbpy_progspaces (PyObject *unused1, PyObject *unused2)
977 {
978 struct program_space *ps;
979 PyObject *list;
980
981 list = PyList_New (0);
982 if (!list)
983 return NULL;
984
985 ALL_PSPACES (ps)
986 {
987 PyObject *item = pspace_to_pspace_object (ps);
988
989 if (!item || PyList_Append (list, item) == -1)
990 {
991 Py_DECREF (list);
992 return NULL;
993 }
994 }
995
996 return list;
997 }
998
999 \f
1000
1001 /* The "current" objfile. This is set when gdb detects that a new
1002 objfile has been loaded. It is only set for the duration of a call to
1003 source_python_script_for_objfile; it is NULL at other times. */
1004 static struct objfile *gdbpy_current_objfile;
1005
1006 /* Set the current objfile to OBJFILE and then read FILE named FILENAME
1007 as Python code. This does not throw any errors. If an exception
1008 occurs python will print the traceback and clear the error indicator. */
1009
1010 void
1011 source_python_script_for_objfile (struct objfile *objfile, FILE *file,
1012 const char *filename)
1013 {
1014 struct cleanup *cleanups;
1015
1016 cleanups = ensure_python_env (get_objfile_arch (objfile), current_language);
1017 gdbpy_current_objfile = objfile;
1018
1019 python_run_simple_file (file, filename);
1020
1021 do_cleanups (cleanups);
1022 gdbpy_current_objfile = NULL;
1023 }
1024
1025 /* Return the current Objfile, or None if there isn't one. */
1026
1027 static PyObject *
1028 gdbpy_get_current_objfile (PyObject *unused1, PyObject *unused2)
1029 {
1030 PyObject *result;
1031
1032 if (! gdbpy_current_objfile)
1033 Py_RETURN_NONE;
1034
1035 result = objfile_to_objfile_object (gdbpy_current_objfile);
1036 if (result)
1037 Py_INCREF (result);
1038 return result;
1039 }
1040
1041 /* Return a sequence holding all the Objfiles. */
1042
1043 static PyObject *
1044 gdbpy_objfiles (PyObject *unused1, PyObject *unused2)
1045 {
1046 struct objfile *objf;
1047 PyObject *list;
1048
1049 list = PyList_New (0);
1050 if (!list)
1051 return NULL;
1052
1053 ALL_OBJFILES (objf)
1054 {
1055 PyObject *item = objfile_to_objfile_object (objf);
1056
1057 if (!item || PyList_Append (list, item) == -1)
1058 {
1059 Py_DECREF (list);
1060 return NULL;
1061 }
1062 }
1063
1064 return list;
1065 }
1066
1067 #else /* HAVE_PYTHON */
1068
1069 /* Dummy implementation of the gdb "python" command. */
1070
1071 static void
1072 python_command (char *arg, int from_tty)
1073 {
1074 while (arg && *arg && isspace (*arg))
1075 ++arg;
1076 if (arg && *arg)
1077 error (_("Python scripting is not supported in this copy of GDB."));
1078 else
1079 {
1080 struct command_line *l = get_command_line (python_control, "");
1081 struct cleanup *cleanups = make_cleanup_free_command_lines (&l);
1082
1083 execute_control_command_untraced (l);
1084 do_cleanups (cleanups);
1085 }
1086 }
1087
1088 void
1089 eval_python_from_control_command (struct command_line *cmd)
1090 {
1091 error (_("Python scripting is not supported in this copy of GDB."));
1092 }
1093
1094 void
1095 source_python_script (FILE *file, const char *filename)
1096 {
1097 throw_error (UNSUPPORTED_ERROR,
1098 _("Python scripting is not supported in this copy of GDB."));
1099 }
1100
1101 int
1102 gdbpy_should_stop (struct breakpoint_object *bp_obj)
1103 {
1104 internal_error (__FILE__, __LINE__,
1105 _("gdbpy_should_stop called when Python scripting is " \
1106 "not supported."));
1107 }
1108
1109 int
1110 gdbpy_breakpoint_has_py_cond (struct breakpoint_object *bp_obj)
1111 {
1112 internal_error (__FILE__, __LINE__,
1113 _("gdbpy_breakpoint_has_py_cond called when Python " \
1114 "scripting is not supported."));
1115 }
1116
1117 #endif /* HAVE_PYTHON */
1118
1119 \f
1120
1121 /* Lists for 'set python' commands. */
1122
1123 static struct cmd_list_element *user_set_python_list;
1124 static struct cmd_list_element *user_show_python_list;
1125
1126 /* Function for use by 'set python' prefix command. */
1127
1128 static void
1129 user_set_python (char *args, int from_tty)
1130 {
1131 help_list (user_set_python_list, "set python ", all_commands,
1132 gdb_stdout);
1133 }
1134
1135 /* Function for use by 'show python' prefix command. */
1136
1137 static void
1138 user_show_python (char *args, int from_tty)
1139 {
1140 cmd_show_list (user_show_python_list, from_tty, "");
1141 }
1142
1143 /* Initialize the Python code. */
1144
1145 /* Provide a prototype to silence -Wmissing-prototypes. */
1146 extern initialize_file_ftype _initialize_python;
1147
1148 void
1149 _initialize_python (void)
1150 {
1151 char *cmd_name;
1152 struct cmd_list_element *cmd;
1153
1154 add_com ("python", class_obscure, python_command,
1155 #ifdef HAVE_PYTHON
1156 _("\
1157 Evaluate a Python command.\n\
1158 \n\
1159 The command can be given as an argument, for instance:\n\
1160 \n\
1161 python print 23\n\
1162 \n\
1163 If no argument is given, the following lines are read and used\n\
1164 as the Python commands. Type a line containing \"end\" to indicate\n\
1165 the end of the command.")
1166 #else /* HAVE_PYTHON */
1167 _("\
1168 Evaluate a Python command.\n\
1169 \n\
1170 Python scripting is not supported in this copy of GDB.\n\
1171 This command is only a placeholder.")
1172 #endif /* HAVE_PYTHON */
1173 );
1174
1175 /* Add set/show python print-stack. */
1176 add_prefix_cmd ("python", no_class, user_show_python,
1177 _("Prefix command for python preference settings."),
1178 &user_show_python_list, "show python ", 0,
1179 &showlist);
1180
1181 add_prefix_cmd ("python", no_class, user_set_python,
1182 _("Prefix command for python preference settings."),
1183 &user_set_python_list, "set python ", 0,
1184 &setlist);
1185
1186 add_setshow_enum_cmd ("print-stack", no_class, python_excp_enums,
1187 &gdbpy_should_print_stack, _("\
1188 Set mode for Python stack dump on error."), _("\
1189 Show the mode of Python stack printing on error."), _("\
1190 none == no stack or message will be printed.\n\
1191 full == a message and a stack will be printed.\n\
1192 message == an error message without a stack will be printed."),
1193 NULL, NULL,
1194 &user_set_python_list,
1195 &user_show_python_list);
1196
1197 #ifdef HAVE_PYTHON
1198 #ifdef WITH_PYTHON_PATH
1199 /* Work around problem where python gets confused about where it is,
1200 and then can't find its libraries, etc.
1201 NOTE: Python assumes the following layout:
1202 /foo/bin/python
1203 /foo/lib/pythonX.Y/...
1204 This must be done before calling Py_Initialize. */
1205 Py_SetProgramName (concat (ldirname (python_libdir), SLASH_STRING, "bin",
1206 SLASH_STRING, "python", NULL));
1207 #endif
1208
1209 Py_Initialize ();
1210 PyEval_InitThreads ();
1211
1212 gdb_module = Py_InitModule ("gdb", GdbMethods);
1213
1214 /* The casts to (char*) are for python 2.4. */
1215 PyModule_AddStringConstant (gdb_module, "VERSION", (char*) version);
1216 PyModule_AddStringConstant (gdb_module, "HOST_CONFIG", (char*) host_name);
1217 PyModule_AddStringConstant (gdb_module, "TARGET_CONFIG",
1218 (char*) target_name);
1219
1220 /* Add stream constants. */
1221 PyModule_AddIntConstant (gdb_module, "STDOUT", 0);
1222 PyModule_AddIntConstant (gdb_module, "STDERR", 1);
1223 PyModule_AddIntConstant (gdb_module, "STDLOG", 2);
1224
1225 /* gdb.parameter ("data-directory") doesn't necessarily exist when the python
1226 script below is run (depending on order of _initialize_* functions).
1227 Define the initial value of gdb.PYTHONDIR here. */
1228 {
1229 char *gdb_pythondir;
1230
1231 gdb_pythondir = concat (gdb_datadir, SLASH_STRING, "python", NULL);
1232 PyModule_AddStringConstant (gdb_module, "PYTHONDIR", gdb_pythondir);
1233 xfree (gdb_pythondir);
1234 }
1235
1236 gdbpy_gdb_error = PyErr_NewException ("gdb.error", PyExc_RuntimeError, NULL);
1237 PyModule_AddObject (gdb_module, "error", gdbpy_gdb_error);
1238
1239 gdbpy_gdb_memory_error = PyErr_NewException ("gdb.MemoryError",
1240 gdbpy_gdb_error, NULL);
1241 PyModule_AddObject (gdb_module, "MemoryError", gdbpy_gdb_memory_error);
1242
1243 gdbpy_gdberror_exc = PyErr_NewException ("gdb.GdbError", NULL, NULL);
1244 PyModule_AddObject (gdb_module, "GdbError", gdbpy_gdberror_exc);
1245
1246 gdbpy_initialize_auto_load ();
1247 gdbpy_initialize_values ();
1248 gdbpy_initialize_frames ();
1249 gdbpy_initialize_commands ();
1250 gdbpy_initialize_symbols ();
1251 gdbpy_initialize_symtabs ();
1252 gdbpy_initialize_blocks ();
1253 gdbpy_initialize_functions ();
1254 gdbpy_initialize_parameters ();
1255 gdbpy_initialize_types ();
1256 gdbpy_initialize_pspace ();
1257 gdbpy_initialize_objfile ();
1258 gdbpy_initialize_breakpoints ();
1259 gdbpy_initialize_finishbreakpoints ();
1260 gdbpy_initialize_lazy_string ();
1261 gdbpy_initialize_thread ();
1262 gdbpy_initialize_inferior ();
1263 gdbpy_initialize_events ();
1264
1265 gdbpy_initialize_eventregistry ();
1266 gdbpy_initialize_py_events ();
1267 gdbpy_initialize_event ();
1268 gdbpy_initialize_stop_event ();
1269 gdbpy_initialize_signal_event ();
1270 gdbpy_initialize_breakpoint_event ();
1271 gdbpy_initialize_continue_event ();
1272 gdbpy_initialize_exited_event ();
1273 gdbpy_initialize_thread_event ();
1274 gdbpy_initialize_new_objfile_event () ;
1275
1276 observer_attach_before_prompt (before_prompt_hook);
1277
1278 PyRun_SimpleString ("import gdb");
1279 PyRun_SimpleString ("gdb.pretty_printers = []");
1280
1281 gdbpy_to_string_cst = PyString_FromString ("to_string");
1282 gdbpy_children_cst = PyString_FromString ("children");
1283 gdbpy_display_hint_cst = PyString_FromString ("display_hint");
1284 gdbpy_doc_cst = PyString_FromString ("__doc__");
1285 gdbpy_enabled_cst = PyString_FromString ("enabled");
1286 gdbpy_value_cst = PyString_FromString ("value");
1287
1288 /* Release the GIL while gdb runs. */
1289 PyThreadState_Swap (NULL);
1290 PyEval_ReleaseLock ();
1291
1292 #endif /* HAVE_PYTHON */
1293 }
1294
1295 #ifdef HAVE_PYTHON
1296
1297 /* Perform the remaining python initializations.
1298 These must be done after GDB is at least mostly initialized.
1299 E.g., The "info pretty-printer" command needs the "info" prefix
1300 command installed. */
1301
1302 void
1303 finish_python_initialization (void)
1304 {
1305 struct cleanup *cleanup;
1306
1307 cleanup = ensure_python_env (get_current_arch (), current_language);
1308
1309 PyRun_SimpleString ("\
1310 import os\n\
1311 import sys\n\
1312 \n\
1313 class GdbOutputFile:\n\
1314 def close(self):\n\
1315 # Do nothing.\n\
1316 return None\n\
1317 \n\
1318 def isatty(self):\n\
1319 return False\n\
1320 \n\
1321 def write(self, s):\n\
1322 gdb.write(s, stream=gdb.STDOUT)\n \
1323 \n\
1324 def writelines(self, iterable):\n\
1325 for line in iterable:\n\
1326 self.write(line)\n\
1327 \n\
1328 def flush(self):\n\
1329 gdb.flush()\n\
1330 \n\
1331 sys.stdout = GdbOutputFile()\n\
1332 \n\
1333 class GdbOutputErrorFile:\n\
1334 def close(self):\n\
1335 # Do nothing.\n\
1336 return None\n\
1337 \n\
1338 def isatty(self):\n\
1339 return False\n\
1340 \n\
1341 def write(self, s):\n\
1342 gdb.write(s, stream=gdb.STDERR)\n \
1343 \n\
1344 def writelines(self, iterable):\n\
1345 for line in iterable:\n\
1346 self.write(line)\n \
1347 \n\
1348 def flush(self):\n\
1349 gdb.flush()\n\
1350 \n\
1351 sys.stderr = GdbOutputErrorFile()\n\
1352 \n\
1353 # Ideally this would live in the gdb module, but it's intentionally written\n\
1354 # in python, and we need this to bootstrap the gdb module.\n\
1355 \n\
1356 def GdbSetPythonDirectory (dir):\n\
1357 \"Set gdb.PYTHONDIR and update sys.path,etc.\"\n\
1358 old_dir = gdb.PYTHONDIR\n\
1359 gdb.PYTHONDIR = dir\n\
1360 # GDB's python scripts are stored inside gdb.PYTHONDIR. So insert\n\
1361 # that directory name at the start of sys.path to allow the Python\n\
1362 # interpreter to find them.\n\
1363 if old_dir in sys.path:\n\
1364 sys.path.remove (old_dir)\n\
1365 sys.path.insert (0, gdb.PYTHONDIR)\n\
1366 \n\
1367 # Tell python where to find submodules of gdb.\n\
1368 gdb.__path__ = [os.path.join (gdb.PYTHONDIR, 'gdb')]\n\
1369 \n\
1370 # The gdb module is implemented in C rather than in Python. As a result,\n\
1371 # the associated __init.py__ script is not not executed by default when\n\
1372 # the gdb module gets imported. Execute that script manually if it\n\
1373 # exists.\n\
1374 ipy = os.path.join (gdb.PYTHONDIR, 'gdb', '__init__.py')\n\
1375 if os.path.exists (ipy):\n\
1376 execfile (ipy)\n\
1377 \n\
1378 # Install the default gdb.PYTHONDIR.\n\
1379 GdbSetPythonDirectory (gdb.PYTHONDIR)\n\
1380 # Default prompt hook does nothing.\n\
1381 prompt_hook = None\n\
1382 # Ensure that sys.argv is set to something.\n\
1383 # We do not use PySys_SetArgvEx because it did not appear until 2.6.6.\n\
1384 sys.argv = ['']\n\
1385 ");
1386
1387 do_cleanups (cleanup);
1388 }
1389
1390 #endif /* HAVE_PYTHON */
1391
1392 \f
1393
1394 #ifdef HAVE_PYTHON
1395
1396 static PyMethodDef GdbMethods[] =
1397 {
1398 { "history", gdbpy_history, METH_VARARGS,
1399 "Get a value from history" },
1400 { "execute", (PyCFunction) execute_gdb_command, METH_VARARGS | METH_KEYWORDS,
1401 "Execute a gdb command" },
1402 { "parameter", gdbpy_parameter, METH_VARARGS,
1403 "Return a gdb parameter's value" },
1404
1405 { "breakpoints", gdbpy_breakpoints, METH_NOARGS,
1406 "Return a tuple of all breakpoint objects" },
1407
1408 { "default_visualizer", gdbpy_default_visualizer, METH_VARARGS,
1409 "Find the default visualizer for a Value." },
1410
1411 { "current_progspace", gdbpy_get_current_progspace, METH_NOARGS,
1412 "Return the current Progspace." },
1413 { "progspaces", gdbpy_progspaces, METH_NOARGS,
1414 "Return a sequence of all progspaces." },
1415
1416 { "current_objfile", gdbpy_get_current_objfile, METH_NOARGS,
1417 "Return the current Objfile being loaded, or None." },
1418 { "objfiles", gdbpy_objfiles, METH_NOARGS,
1419 "Return a sequence of all loaded objfiles." },
1420
1421 { "newest_frame", gdbpy_newest_frame, METH_NOARGS,
1422 "newest_frame () -> gdb.Frame.\n\
1423 Return the newest frame object." },
1424 { "selected_frame", gdbpy_selected_frame, METH_NOARGS,
1425 "selected_frame () -> gdb.Frame.\n\
1426 Return the selected frame object." },
1427 { "frame_stop_reason_string", gdbpy_frame_stop_reason_string, METH_VARARGS,
1428 "stop_reason_string (Integer) -> String.\n\
1429 Return a string explaining unwind stop reason." },
1430
1431 { "lookup_type", (PyCFunction) gdbpy_lookup_type,
1432 METH_VARARGS | METH_KEYWORDS,
1433 "lookup_type (name [, block]) -> type\n\
1434 Return a Type corresponding to the given name." },
1435 { "lookup_symbol", (PyCFunction) gdbpy_lookup_symbol,
1436 METH_VARARGS | METH_KEYWORDS,
1437 "lookup_symbol (name [, block] [, domain]) -> (symbol, is_field_of_this)\n\
1438 Return a tuple with the symbol corresponding to the given name (or None) and\n\
1439 a boolean indicating if name is a field of the current implied argument\n\
1440 `this' (when the current language is object-oriented)." },
1441 { "lookup_global_symbol", (PyCFunction) gdbpy_lookup_global_symbol,
1442 METH_VARARGS | METH_KEYWORDS,
1443 "lookup_global_symbol (name [, domain]) -> symbol\n\
1444 Return the symbol corresponding to the given name (or None)." },
1445 { "block_for_pc", gdbpy_block_for_pc, METH_VARARGS,
1446 "Return the block containing the given pc value, or None." },
1447 { "solib_name", gdbpy_solib_name, METH_VARARGS,
1448 "solib_name (Long) -> String.\n\
1449 Return the name of the shared library holding a given address, or None." },
1450 { "decode_line", gdbpy_decode_line, METH_VARARGS,
1451 "decode_line (String) -> Tuple. Decode a string argument the way\n\
1452 that 'break' or 'edit' does. Return a tuple containing two elements.\n\
1453 The first element contains any unparsed portion of the String parameter\n\
1454 (or None if the string was fully parsed). The second element contains\n\
1455 a tuple that contains all the locations that match, represented as\n\
1456 gdb.Symtab_and_line objects (or None)."},
1457 { "parse_and_eval", gdbpy_parse_and_eval, METH_VARARGS,
1458 "parse_and_eval (String) -> Value.\n\
1459 Parse String as an expression, evaluate it, and return the result as a Value."
1460 },
1461
1462 { "post_event", gdbpy_post_event, METH_VARARGS,
1463 "Post an event into gdb's event loop." },
1464
1465 { "target_charset", gdbpy_target_charset, METH_NOARGS,
1466 "target_charset () -> string.\n\
1467 Return the name of the current target charset." },
1468 { "target_wide_charset", gdbpy_target_wide_charset, METH_NOARGS,
1469 "target_wide_charset () -> string.\n\
1470 Return the name of the current target wide charset." },
1471
1472 { "string_to_argv", gdbpy_string_to_argv, METH_VARARGS,
1473 "string_to_argv (String) -> Array.\n\
1474 Parse String and return an argv-like array.\n\
1475 Arguments are separate by spaces and may be quoted."
1476 },
1477 { "write", (PyCFunction)gdbpy_write, METH_VARARGS | METH_KEYWORDS,
1478 "Write a string using gdb's filtered stream." },
1479 { "flush", (PyCFunction)gdbpy_flush, METH_VARARGS | METH_KEYWORDS,
1480 "Flush gdb's filtered stdout stream." },
1481 { "selected_thread", gdbpy_selected_thread, METH_NOARGS,
1482 "selected_thread () -> gdb.InferiorThread.\n\
1483 Return the selected thread object." },
1484 { "selected_inferior", gdbpy_selected_inferior, METH_NOARGS,
1485 "selected_inferior () -> gdb.Inferior.\n\
1486 Return the selected inferior object." },
1487 { "inferiors", gdbpy_inferiors, METH_NOARGS,
1488 "inferiors () -> (gdb.Inferior, ...).\n\
1489 Return a tuple containing all inferiors." },
1490 {NULL, NULL, 0, NULL}
1491 };
1492
1493 #endif /* HAVE_PYTHON */
This page took 0.059128 seconds and 5 git commands to generate.