2010-07-30 Hui Zhu <teawater@gmail.com>
[deliverable/binutils-gdb.git] / gdb / python / python.c
1 /* General python/gdb code
2
3 Copyright (C) 2008, 2009, 2010 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
32 #include <ctype.h>
33
34 /* True if we should print the stack when catching a Python error,
35 false otherwise. */
36 static int gdbpy_should_print_stack = 1;
37
38 #ifdef HAVE_PYTHON
39
40 #include "python.h"
41 #include "libiberty.h"
42 #include "cli/cli-decode.h"
43 #include "charset.h"
44 #include "top.h"
45 #include "python-internal.h"
46 #include "version.h"
47 #include "target.h"
48 #include "gdbthread.h"
49
50 static PyMethodDef GdbMethods[];
51
52 PyObject *gdb_module;
53
54 /* Some string constants we may wish to use. */
55 PyObject *gdbpy_to_string_cst;
56 PyObject *gdbpy_children_cst;
57 PyObject *gdbpy_display_hint_cst;
58 PyObject *gdbpy_doc_cst;
59 PyObject *gdbpy_enabled_cst;
60
61 /* The GdbError exception. */
62 PyObject *gdbpy_gdberror_exc;
63
64 /* Architecture and language to be used in callbacks from
65 the Python interpreter. */
66 struct gdbarch *python_gdbarch;
67 const struct language_defn *python_language;
68
69 /* Restore global language and architecture and Python GIL state
70 when leaving the Python interpreter. */
71
72 struct python_env
73 {
74 PyGILState_STATE state;
75 struct gdbarch *gdbarch;
76 const struct language_defn *language;
77 };
78
79 static void
80 restore_python_env (void *p)
81 {
82 struct python_env *env = (struct python_env *)p;
83
84 PyGILState_Release (env->state);
85 python_gdbarch = env->gdbarch;
86 python_language = env->language;
87 xfree (env);
88 }
89
90 /* Called before entering the Python interpreter to install the
91 current language and architecture to be used for Python values. */
92
93 struct cleanup *
94 ensure_python_env (struct gdbarch *gdbarch,
95 const struct language_defn *language)
96 {
97 struct python_env *env = xmalloc (sizeof *env);
98
99 env->state = PyGILState_Ensure ();
100 env->gdbarch = python_gdbarch;
101 env->language = python_language;
102
103 python_gdbarch = gdbarch;
104 python_language = language;
105
106 return make_cleanup (restore_python_env, env);
107 }
108
109
110 /* Given a command_line, return a command string suitable for passing
111 to Python. Lines in the string are separated by newlines. The
112 return value is allocated using xmalloc and the caller is
113 responsible for freeing it. */
114
115 static char *
116 compute_python_string (struct command_line *l)
117 {
118 struct command_line *iter;
119 char *script = NULL;
120 int size = 0;
121 int here;
122
123 for (iter = l; iter; iter = iter->next)
124 size += strlen (iter->line) + 1;
125
126 script = xmalloc (size + 1);
127 here = 0;
128 for (iter = l; iter; iter = iter->next)
129 {
130 int len = strlen (iter->line);
131
132 strcpy (&script[here], iter->line);
133 here += len;
134 script[here++] = '\n';
135 }
136 script[here] = '\0';
137 return script;
138 }
139
140 /* Take a command line structure representing a 'python' command, and
141 evaluate its body using the Python interpreter. */
142
143 void
144 eval_python_from_control_command (struct command_line *cmd)
145 {
146 int ret;
147 char *script;
148 struct cleanup *cleanup;
149
150 if (cmd->body_count != 1)
151 error (_("Invalid \"python\" block structure."));
152
153 cleanup = ensure_python_env (get_current_arch (), current_language);
154
155 script = compute_python_string (cmd->body_list[0]);
156 ret = PyRun_SimpleString (script);
157 xfree (script);
158 if (ret)
159 {
160 gdbpy_print_stack ();
161 error (_("Error while executing Python code."));
162 }
163
164 do_cleanups (cleanup);
165 }
166
167 /* Implementation of the gdb "python" command. */
168
169 static void
170 python_command (char *arg, int from_tty)
171 {
172 struct cleanup *cleanup;
173
174 cleanup = ensure_python_env (get_current_arch (), current_language);
175 while (arg && *arg && isspace (*arg))
176 ++arg;
177 if (arg && *arg)
178 {
179 if (PyRun_SimpleString (arg))
180 {
181 gdbpy_print_stack ();
182 error (_("Error while executing Python code."));
183 }
184 }
185 else
186 {
187 struct command_line *l = get_command_line (python_control, "");
188
189 make_cleanup_free_command_lines (&l);
190 execute_control_command_untraced (l);
191 }
192
193 do_cleanups (cleanup);
194 }
195
196 \f
197
198 /* Transform a gdb parameters's value into a Python value. May return
199 NULL (and set a Python exception) on error. Helper function for
200 get_parameter. */
201 PyObject *
202 gdbpy_parameter_value (enum var_types type, void *var)
203 {
204 switch (type)
205 {
206 case var_string:
207 case var_string_noescape:
208 case var_optional_filename:
209 case var_filename:
210 case var_enum:
211 {
212 char *str = * (char **) var;
213
214 if (! str)
215 str = "";
216 return PyString_Decode (str, strlen (str), host_charset (), NULL);
217 }
218
219 case var_boolean:
220 {
221 if (* (int *) var)
222 Py_RETURN_TRUE;
223 else
224 Py_RETURN_FALSE;
225 }
226
227 case var_auto_boolean:
228 {
229 enum auto_boolean ab = * (enum auto_boolean *) var;
230
231 if (ab == AUTO_BOOLEAN_TRUE)
232 Py_RETURN_TRUE;
233 else if (ab == AUTO_BOOLEAN_FALSE)
234 Py_RETURN_FALSE;
235 else
236 Py_RETURN_NONE;
237 }
238
239 case var_integer:
240 if ((* (int *) var) == INT_MAX)
241 Py_RETURN_NONE;
242 /* Fall through. */
243 case var_zinteger:
244 return PyLong_FromLong (* (int *) var);
245
246 case var_uinteger:
247 {
248 unsigned int val = * (unsigned int *) var;
249
250 if (val == UINT_MAX)
251 Py_RETURN_NONE;
252 return PyLong_FromUnsignedLong (val);
253 }
254 }
255
256 return PyErr_Format (PyExc_RuntimeError,
257 _("Programmer error: unhandled type."));
258 }
259
260 /* A Python function which returns a gdb parameter's value as a Python
261 value. */
262
263 PyObject *
264 gdbpy_parameter (PyObject *self, PyObject *args)
265 {
266 struct cmd_list_element *alias, *prefix, *cmd;
267 char *arg, *newarg;
268 int found = -1;
269 volatile struct gdb_exception except;
270
271 if (! PyArg_ParseTuple (args, "s", &arg))
272 return NULL;
273
274 newarg = concat ("show ", arg, (char *) NULL);
275
276 TRY_CATCH (except, RETURN_MASK_ALL)
277 {
278 found = lookup_cmd_composition (newarg, &alias, &prefix, &cmd);
279 }
280 xfree (newarg);
281 GDB_PY_HANDLE_EXCEPTION (except);
282 if (!found)
283 return PyErr_Format (PyExc_RuntimeError,
284 _("Could not find parameter `%s'."), arg);
285
286 if (! cmd->var)
287 return PyErr_Format (PyExc_RuntimeError,
288 _("`%s' is not a parameter."), arg);
289 return gdbpy_parameter_value (cmd->var_type, cmd->var);
290 }
291
292 /* Wrapper for target_charset. */
293
294 static PyObject *
295 gdbpy_target_charset (PyObject *self, PyObject *args)
296 {
297 const char *cset = target_charset (python_gdbarch);
298
299 return PyUnicode_Decode (cset, strlen (cset), host_charset (), NULL);
300 }
301
302 /* Wrapper for target_wide_charset. */
303
304 static PyObject *
305 gdbpy_target_wide_charset (PyObject *self, PyObject *args)
306 {
307 const char *cset = target_wide_charset (python_gdbarch);
308
309 return PyUnicode_Decode (cset, strlen (cset), host_charset (), NULL);
310 }
311
312 struct restore_ui_file_closure
313 {
314 struct ui_file **variable;
315 struct ui_file *value;
316 };
317
318 static void
319 restore_ui_file (void *p)
320 {
321 struct restore_ui_file_closure *closure = p;
322
323 *(closure->variable) = closure->value;
324 }
325
326 /* Remember the current value of *VARIABLE and make it restored when
327 the cleanup is run. */
328 struct cleanup *
329 make_cleanup_restore_ui_file (struct ui_file **variable)
330 {
331 struct restore_ui_file_closure *c = XNEW (struct restore_ui_file_closure);
332
333 c->variable = variable;
334 c->value = *variable;
335
336 return make_cleanup_dtor (restore_ui_file, (void *) c, xfree);
337 }
338
339 /* A Python function which evaluates a string using the gdb CLI. */
340
341 static PyObject *
342 execute_gdb_command (PyObject *self, PyObject *args, PyObject *kw)
343 {
344 char *arg;
345 PyObject *from_tty_obj = NULL, *to_string_obj = NULL;
346 int from_tty, to_string;
347 volatile struct gdb_exception except;
348 static char *keywords[] = {"command", "from_tty", "to_string", NULL };
349 char *result = NULL;
350
351 if (! PyArg_ParseTupleAndKeywords (args, kw, "s|O!O!", keywords, &arg,
352 &PyBool_Type, &from_tty_obj,
353 &PyBool_Type, &to_string_obj))
354 return NULL;
355
356 from_tty = 0;
357 if (from_tty_obj)
358 {
359 int cmp = PyObject_IsTrue (from_tty_obj);
360 if (cmp < 0)
361 return NULL;
362 from_tty = cmp;
363 }
364
365 to_string = 0;
366 if (to_string_obj)
367 {
368 int cmp = PyObject_IsTrue (to_string_obj);
369 if (cmp < 0)
370 return NULL;
371 to_string = cmp;
372 }
373
374 TRY_CATCH (except, RETURN_MASK_ALL)
375 {
376 /* Copy the argument text in case the command modifies it. */
377 char *copy = xstrdup (arg);
378 struct cleanup *cleanup = make_cleanup (xfree, copy);
379 struct ui_file *str_file = NULL;
380
381 if (to_string)
382 {
383 str_file = mem_fileopen ();
384
385 make_cleanup_restore_ui_file (&gdb_stdout);
386 make_cleanup_restore_ui_file (&gdb_stderr);
387 make_cleanup_ui_file_delete (str_file);
388
389 gdb_stdout = str_file;
390 gdb_stderr = str_file;
391 }
392
393 execute_command (copy, from_tty);
394
395 if (str_file)
396 result = ui_file_xstrdup (str_file, NULL);
397 else
398 result = NULL;
399
400 do_cleanups (cleanup);
401 }
402 GDB_PY_HANDLE_EXCEPTION (except);
403
404 /* Do any commands attached to breakpoint we stopped at. */
405 bpstat_do_actions ();
406
407 if (result)
408 {
409 PyObject *r = PyString_FromString (result);
410 xfree (result);
411 return r;
412 }
413 Py_RETURN_NONE;
414 }
415
416 /* Parse a string and evaluate it as an expression. */
417 static PyObject *
418 gdbpy_parse_and_eval (PyObject *self, PyObject *args)
419 {
420 char *expr_str;
421 struct value *result = NULL;
422 volatile struct gdb_exception except;
423
424 if (!PyArg_ParseTuple (args, "s", &expr_str))
425 return NULL;
426
427 TRY_CATCH (except, RETURN_MASK_ALL)
428 {
429 result = parse_and_eval (expr_str);
430 }
431 GDB_PY_HANDLE_EXCEPTION (except);
432
433 return value_to_value_object (result);
434 }
435
436 /* Read a file as Python code. STREAM is the input file; FILE is the
437 name of the file.
438 STREAM is not closed, that is the caller's responsibility. */
439
440 void
441 source_python_script (FILE *stream, const char *file)
442 {
443 struct cleanup *cleanup;
444
445 cleanup = ensure_python_env (get_current_arch (), current_language);
446
447 /* Note: If an exception occurs python will print the traceback and
448 clear the error indicator. */
449 PyRun_SimpleFile (stream, file);
450
451 do_cleanups (cleanup);
452 }
453
454 \f
455
456 /* Printing. */
457
458 /* A python function to write a single string using gdb's filtered
459 output stream. */
460 static PyObject *
461 gdbpy_write (PyObject *self, PyObject *args)
462 {
463 char *arg;
464
465 if (! PyArg_ParseTuple (args, "s", &arg))
466 return NULL;
467 printf_filtered ("%s", arg);
468 Py_RETURN_NONE;
469 }
470
471 /* A python function to flush gdb's filtered output stream. */
472 static PyObject *
473 gdbpy_flush (PyObject *self, PyObject *args)
474 {
475 gdb_flush (gdb_stdout);
476 Py_RETURN_NONE;
477 }
478
479 /* Print a python exception trace, or print nothing and clear the
480 python exception, depending on gdbpy_should_print_stack. Only call
481 this if a python exception is set. */
482 void
483 gdbpy_print_stack (void)
484 {
485 if (gdbpy_should_print_stack)
486 {
487 PyErr_Print ();
488 /* PyErr_Print doesn't necessarily end output with a newline.
489 This works because Python's stdout/stderr is fed through
490 printf_filtered. */
491 begin_line ();
492 }
493 else
494 PyErr_Clear ();
495 }
496
497 \f
498
499 /* Return the current Progspace.
500 There always is one. */
501
502 static PyObject *
503 gdbpy_get_current_progspace (PyObject *unused1, PyObject *unused2)
504 {
505 PyObject *result;
506
507 result = pspace_to_pspace_object (current_program_space);
508 if (result)
509 Py_INCREF (result);
510 return result;
511 }
512
513 /* Return a sequence holding all the Progspaces. */
514
515 static PyObject *
516 gdbpy_progspaces (PyObject *unused1, PyObject *unused2)
517 {
518 struct program_space *ps;
519 PyObject *list;
520
521 list = PyList_New (0);
522 if (!list)
523 return NULL;
524
525 ALL_PSPACES (ps)
526 {
527 PyObject *item = pspace_to_pspace_object (ps);
528
529 if (!item || PyList_Append (list, item) == -1)
530 {
531 Py_DECREF (list);
532 return NULL;
533 }
534 }
535
536 return list;
537 }
538
539 \f
540
541 /* The "current" objfile. This is set when gdb detects that a new
542 objfile has been loaded. It is only set for the duration of a call to
543 source_python_script_for_objfile; it is NULL at other times. */
544 static struct objfile *gdbpy_current_objfile;
545
546 /* Set the current objfile to OBJFILE and then read STREAM,FILE as
547 Python code. */
548
549 void
550 source_python_script_for_objfile (struct objfile *objfile,
551 FILE *stream, const char *file)
552 {
553 struct cleanup *cleanups;
554
555 cleanups = ensure_python_env (get_objfile_arch (objfile), current_language);
556 gdbpy_current_objfile = objfile;
557
558 /* Note: If an exception occurs python will print the traceback and
559 clear the error indicator. */
560 PyRun_SimpleFile (stream, file);
561
562 do_cleanups (cleanups);
563 gdbpy_current_objfile = NULL;
564 }
565
566 /* Return the current Objfile, or None if there isn't one. */
567
568 static PyObject *
569 gdbpy_get_current_objfile (PyObject *unused1, PyObject *unused2)
570 {
571 PyObject *result;
572
573 if (! gdbpy_current_objfile)
574 Py_RETURN_NONE;
575
576 result = objfile_to_objfile_object (gdbpy_current_objfile);
577 if (result)
578 Py_INCREF (result);
579 return result;
580 }
581
582 /* Return a sequence holding all the Objfiles. */
583
584 static PyObject *
585 gdbpy_objfiles (PyObject *unused1, PyObject *unused2)
586 {
587 struct objfile *objf;
588 PyObject *list;
589
590 list = PyList_New (0);
591 if (!list)
592 return NULL;
593
594 ALL_OBJFILES (objf)
595 {
596 PyObject *item = objfile_to_objfile_object (objf);
597
598 if (!item || PyList_Append (list, item) == -1)
599 {
600 Py_DECREF (list);
601 return NULL;
602 }
603 }
604
605 return list;
606 }
607
608 #else /* HAVE_PYTHON */
609
610 /* Dummy implementation of the gdb "python" command. */
611
612 static void
613 python_command (char *arg, int from_tty)
614 {
615 while (arg && *arg && isspace (*arg))
616 ++arg;
617 if (arg && *arg)
618 error (_("Python scripting is not supported in this copy of GDB."));
619 else
620 {
621 struct command_line *l = get_command_line (python_control, "");
622 struct cleanup *cleanups = make_cleanup_free_command_lines (&l);
623
624 execute_control_command_untraced (l);
625 do_cleanups (cleanups);
626 }
627 }
628
629 void
630 eval_python_from_control_command (struct command_line *cmd)
631 {
632 error (_("Python scripting is not supported in this copy of GDB."));
633 }
634
635 void
636 source_python_script (FILE *stream, const char *file)
637 {
638 throw_error (UNSUPPORTED_ERROR,
639 _("Python scripting is not supported in this copy of GDB."));
640 }
641
642 #endif /* HAVE_PYTHON */
643
644 \f
645
646 /* Lists for 'maint set python' commands. */
647
648 struct cmd_list_element *set_python_list;
649 struct cmd_list_element *show_python_list;
650
651 /* Function for use by 'maint set python' prefix command. */
652
653 static void
654 set_python (char *args, int from_tty)
655 {
656 help_list (set_python_list, "maintenance set python ", -1, gdb_stdout);
657 }
658
659 /* Function for use by 'maint show python' prefix command. */
660
661 static void
662 show_python (char *args, int from_tty)
663 {
664 cmd_show_list (show_python_list, from_tty, "");
665 }
666
667 /* Initialize the Python code. */
668
669 /* Provide a prototype to silence -Wmissing-prototypes. */
670 extern initialize_file_ftype _initialize_python;
671
672 void
673 _initialize_python (void)
674 {
675 add_com ("python", class_obscure, python_command,
676 #ifdef HAVE_PYTHON
677 _("\
678 Evaluate a Python command.\n\
679 \n\
680 The command can be given as an argument, for instance:\n\
681 \n\
682 python print 23\n\
683 \n\
684 If no argument is given, the following lines are read and used\n\
685 as the Python commands. Type a line containing \"end\" to indicate\n\
686 the end of the command.")
687 #else /* HAVE_PYTHON */
688 _("\
689 Evaluate a Python command.\n\
690 \n\
691 Python scripting is not supported in this copy of GDB.\n\
692 This command is only a placeholder.")
693 #endif /* HAVE_PYTHON */
694 );
695
696 add_prefix_cmd ("python", no_class, show_python,
697 _("Prefix command for python maintenance settings."),
698 &show_python_list, "maintenance show python ", 0,
699 &maintenance_show_cmdlist);
700 add_prefix_cmd ("python", no_class, set_python,
701 _("Prefix command for python maintenance settings."),
702 &set_python_list, "maintenance set python ", 0,
703 &maintenance_set_cmdlist);
704
705 add_setshow_boolean_cmd ("print-stack", class_maintenance,
706 &gdbpy_should_print_stack, _("\
707 Enable or disable printing of Python stack dump on error."), _("\
708 Show whether Python stack will be printed on error."), _("\
709 Enables or disables printing of Python stack traces."),
710 NULL, NULL,
711 &set_python_list,
712 &show_python_list);
713
714 #ifdef HAVE_PYTHON
715 #ifdef WITH_PYTHON_PATH
716 /* Work around problem where python gets confused about where it is,
717 and then can't find its libraries, etc.
718 NOTE: Python assumes the following layout:
719 /foo/bin/python
720 /foo/lib/pythonX.Y/...
721 This must be done before calling Py_Initialize. */
722 Py_SetProgramName (concat (ldirname (python_libdir), SLASH_STRING, "bin",
723 SLASH_STRING, "python", NULL));
724 #endif
725
726 Py_Initialize ();
727 PyEval_InitThreads ();
728
729 gdb_module = Py_InitModule ("gdb", GdbMethods);
730
731 /* The casts to (char*) are for python 2.4. */
732 PyModule_AddStringConstant (gdb_module, "VERSION", (char*) version);
733 PyModule_AddStringConstant (gdb_module, "HOST_CONFIG", (char*) host_name);
734 PyModule_AddStringConstant (gdb_module, "TARGET_CONFIG", (char*) target_name);
735 {
736 char *gdb_pythondir;
737
738 gdb_pythondir = concat (gdb_datadir, SLASH_STRING, "python", NULL);
739 PyModule_AddStringConstant (gdb_module, "PYTHONDIR", gdb_pythondir);
740 xfree (gdb_pythondir);
741 }
742
743 gdbpy_gdberror_exc = PyErr_NewException ("gdb.GdbError", NULL, NULL);
744 PyModule_AddObject (gdb_module, "GdbError", gdbpy_gdberror_exc);
745
746 gdbpy_initialize_auto_load ();
747 gdbpy_initialize_values ();
748 gdbpy_initialize_frames ();
749 gdbpy_initialize_commands ();
750 gdbpy_initialize_symbols ();
751 gdbpy_initialize_symtabs ();
752 gdbpy_initialize_blocks ();
753 gdbpy_initialize_functions ();
754 gdbpy_initialize_parameters ();
755 gdbpy_initialize_types ();
756 gdbpy_initialize_pspace ();
757 gdbpy_initialize_objfile ();
758 gdbpy_initialize_breakpoints ();
759 gdbpy_initialize_lazy_string ();
760 gdbpy_initialize_thread ();
761 gdbpy_initialize_inferior ();
762
763 PyRun_SimpleString ("import gdb");
764 PyRun_SimpleString ("gdb.pretty_printers = []");
765
766 gdbpy_to_string_cst = PyString_FromString ("to_string");
767 gdbpy_children_cst = PyString_FromString ("children");
768 gdbpy_display_hint_cst = PyString_FromString ("display_hint");
769 gdbpy_doc_cst = PyString_FromString ("__doc__");
770 gdbpy_enabled_cst = PyString_FromString ("enabled");
771
772 /* Create a couple objects which are used for Python's stdout and
773 stderr. */
774 PyRun_SimpleString ("\
775 import sys\n\
776 class GdbOutputFile:\n\
777 def close(self):\n\
778 # Do nothing.\n\
779 return None\n\
780 \n\
781 def isatty(self):\n\
782 return False\n\
783 \n\
784 def write(self, s):\n\
785 gdb.write(s)\n\
786 \n\
787 def writelines(self, iterable):\n\
788 for line in iterable:\n\
789 self.write(line)\n\
790 \n\
791 def flush(self):\n\
792 gdb.flush()\n\
793 \n\
794 sys.stderr = GdbOutputFile()\n\
795 sys.stdout = GdbOutputFile()\n\
796 \n\
797 # GDB's python scripts are stored inside gdb.PYTHONDIR. So insert\n\
798 # that directory name at the start of sys.path to allow the Python\n\
799 # interpreter to find them.\n\
800 sys.path.insert(0, gdb.PYTHONDIR)\n\
801 \n\
802 # The gdb module is implemented in C rather than in Python. As a result,\n\
803 # the associated __init.py__ script is not not executed by default when\n\
804 # the gdb module gets imported. Execute that script manually if it exists.\n\
805 gdb.__path__ = [gdb.PYTHONDIR + '/gdb']\n\
806 from os.path import exists\n\
807 ipy = gdb.PYTHONDIR + '/gdb/__init__.py'\n\
808 if exists (ipy):\n\
809 execfile (ipy)\n\
810 ");
811
812 /* Release the GIL while gdb runs. */
813 PyThreadState_Swap (NULL);
814 PyEval_ReleaseLock ();
815
816 #endif /* HAVE_PYTHON */
817 }
818
819 \f
820
821 #if HAVE_PYTHON
822
823 static PyMethodDef GdbMethods[] =
824 {
825 { "history", gdbpy_history, METH_VARARGS,
826 "Get a value from history" },
827 { "execute", (PyCFunction) execute_gdb_command, METH_VARARGS | METH_KEYWORDS,
828 "Execute a gdb command" },
829 { "parameter", gdbpy_parameter, METH_VARARGS,
830 "Return a gdb parameter's value" },
831
832 { "breakpoints", gdbpy_breakpoints, METH_NOARGS,
833 "Return a tuple of all breakpoint objects" },
834
835 { "default_visualizer", gdbpy_default_visualizer, METH_VARARGS,
836 "Find the default visualizer for a Value." },
837
838 { "current_progspace", gdbpy_get_current_progspace, METH_NOARGS,
839 "Return the current Progspace." },
840 { "progspaces", gdbpy_progspaces, METH_NOARGS,
841 "Return a sequence of all progspaces." },
842
843 { "current_objfile", gdbpy_get_current_objfile, METH_NOARGS,
844 "Return the current Objfile being loaded, or None." },
845 { "objfiles", gdbpy_objfiles, METH_NOARGS,
846 "Return a sequence of all loaded objfiles." },
847
848 { "selected_frame", gdbpy_selected_frame, METH_NOARGS,
849 "selected_frame () -> gdb.Frame.\n\
850 Return the selected frame object." },
851 { "frame_stop_reason_string", gdbpy_frame_stop_reason_string, METH_VARARGS,
852 "stop_reason_string (Integer) -> String.\n\
853 Return a string explaining unwind stop reason." },
854
855 { "lookup_type", (PyCFunction) gdbpy_lookup_type,
856 METH_VARARGS | METH_KEYWORDS,
857 "lookup_type (name [, block]) -> type\n\
858 Return a Type corresponding to the given name." },
859 { "lookup_symbol", (PyCFunction) gdbpy_lookup_symbol,
860 METH_VARARGS | METH_KEYWORDS,
861 "lookup_symbol (name [, block] [, domain]) -> (symbol, is_field_of_this)\n\
862 Return a tuple with the symbol corresponding to the given name (or None) and\n\
863 a boolean indicating if name is a field of the current implied argument\n\
864 `this' (when the current language is object-oriented)." },
865 { "block_for_pc", gdbpy_block_for_pc, METH_VARARGS,
866 "Return the block containing the given pc value, or None." },
867 { "parse_and_eval", gdbpy_parse_and_eval, METH_VARARGS,
868 "parse_and_eval (String) -> Value.\n\
869 Parse String as an expression, evaluate it, and return the result as a Value."
870 },
871
872 { "target_charset", gdbpy_target_charset, METH_NOARGS,
873 "target_charset () -> string.\n\
874 Return the name of the current target charset." },
875 { "target_wide_charset", gdbpy_target_wide_charset, METH_NOARGS,
876 "target_wide_charset () -> string.\n\
877 Return the name of the current target wide charset." },
878
879 { "string_to_argv", gdbpy_string_to_argv, METH_VARARGS,
880 "string_to_argv (String) -> Array.\n\
881 Parse String and return an argv-like array.\n\
882 Arguments are separate by spaces and may be quoted."
883 },
884
885 { "write", gdbpy_write, METH_VARARGS,
886 "Write a string using gdb's filtered stream." },
887 { "flush", gdbpy_flush, METH_NOARGS,
888 "Flush gdb's filtered stdout stream." },
889 { "selected_thread", gdbpy_selected_thread, METH_NOARGS,
890 "selected_thread () -> gdb.InferiorThread.\n\
891 Return the selected thread object." },
892 { "inferiors", gdbpy_inferiors, METH_NOARGS,
893 "inferiors () -> (gdb.Inferior, ...).\n\
894 Return a tuple containing all inferiors." },
895 {NULL, NULL, 0, NULL}
896 };
897
898 #endif /* HAVE_PYTHON */
This page took 0.047607 seconds and 4 git commands to generate.