]> Git Repo - binutils.git/blob - gdb/python/python.c
2013-12-12 Siva Chandra Reddy <[email protected]>
[binutils.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       gdbpy_convert_exception (except);
657       return NULL;
658     }
659
660   if (sals.nelts)
661     {
662       int i;
663
664       result = PyTuple_New (sals.nelts);
665       if (! result)
666         goto error;
667       for (i = 0; i < sals.nelts; ++i)
668         {
669           PyObject *obj;
670
671           obj = symtab_and_line_to_sal_object (sals.sals[i]);
672           if (! obj)
673             {
674               Py_DECREF (result);
675               goto error;
676             }
677
678           PyTuple_SetItem (result, i, obj);
679         }
680     }
681   else
682     {
683       result = Py_None;
684       Py_INCREF (Py_None);
685     }
686
687   return_result = PyTuple_New (2);
688   if (! return_result)
689     {
690       Py_DECREF (result);
691       goto error;
692     }
693
694   if (copy && strlen (copy) > 0)
695     {
696       unparsed = PyString_FromString (copy);
697       if (unparsed == NULL)
698         {
699           Py_DECREF (result);
700           Py_DECREF (return_result);
701           return_result = NULL;
702           goto error;
703         }
704     }
705   else
706     {
707       unparsed = Py_None;
708       Py_INCREF (Py_None);
709     }
710
711   PyTuple_SetItem (return_result, 0, unparsed);
712   PyTuple_SetItem (return_result, 1, result);
713
714  error:
715   do_cleanups (cleanups);
716
717   return return_result;
718 }
719
720 /* Parse a string and evaluate it as an expression.  */
721 static PyObject *
722 gdbpy_parse_and_eval (PyObject *self, PyObject *args)
723 {
724   const char *expr_str;
725   struct value *result = NULL;
726   volatile struct gdb_exception except;
727
728   if (!PyArg_ParseTuple (args, "s", &expr_str))
729     return NULL;
730
731   TRY_CATCH (except, RETURN_MASK_ALL)
732     {
733       result = parse_and_eval (expr_str);
734     }
735   GDB_PY_HANDLE_EXCEPTION (except);
736
737   return value_to_value_object (result);
738 }
739
740 /* Implementation of gdb.find_pc_line function.
741    Returns the gdb.Symtab_and_line object corresponding to a PC value.  */
742
743 static PyObject *
744 gdbpy_find_pc_line (PyObject *self, PyObject *args)
745 {
746   gdb_py_ulongest pc_llu;
747   volatile struct gdb_exception except;
748   PyObject *result = NULL; /* init for gcc -Wall */
749
750   if (!PyArg_ParseTuple (args, GDB_PY_LLU_ARG, &pc_llu))
751     return NULL;
752
753   TRY_CATCH (except, RETURN_MASK_ALL)
754     {
755       struct symtab_and_line sal;
756       CORE_ADDR pc;
757
758       pc = (CORE_ADDR) pc_llu;
759       sal = find_pc_line (pc, 0);
760       result = symtab_and_line_to_sal_object (sal);
761     }
762   GDB_PY_HANDLE_EXCEPTION (except);
763
764   return result;
765 }
766
767 /* Read a file as Python code.
768    FILE is the file to run.  FILENAME is name of the file FILE.
769    This does not throw any errors.  If an exception occurs python will print
770    the traceback and clear the error indicator.  */
771
772 void
773 source_python_script (FILE *file, const char *filename)
774 {
775   struct cleanup *cleanup;
776
777   cleanup = ensure_python_env (get_current_arch (), current_language);
778   python_run_simple_file (file, filename);
779   do_cleanups (cleanup);
780 }
781
782 \f
783
784 /* Posting and handling events.  */
785
786 /* A single event.  */
787 struct gdbpy_event
788 {
789   /* The Python event.  This is just a callable object.  */
790   PyObject *event;
791   /* The next event.  */
792   struct gdbpy_event *next;
793 };
794
795 /* All pending events.  */
796 static struct gdbpy_event *gdbpy_event_list;
797 /* The final link of the event list.  */
798 static struct gdbpy_event **gdbpy_event_list_end;
799
800 /* We use a file handler, and not an async handler, so that we can
801    wake up the main thread even when it is blocked in poll().  */
802 static struct serial *gdbpy_event_fds[2];
803
804 /* The file handler callback.  This reads from the internal pipe, and
805    then processes the Python event queue.  This will always be run in
806    the main gdb thread.  */
807
808 static void
809 gdbpy_run_events (struct serial *scb, void *context)
810 {
811   struct cleanup *cleanup;
812
813   cleanup = ensure_python_env (get_current_arch (), current_language);
814
815   /* Flush the fd.  Do this before flushing the events list, so that
816      any new event post afterwards is sure to re-awake the event
817      loop.  */
818   while (serial_readchar (gdbpy_event_fds[0], 0) >= 0)
819     ;
820
821   while (gdbpy_event_list)
822     {
823       PyObject *call_result;
824
825       /* Dispatching the event might push a new element onto the event
826          loop, so we update here "atomically enough".  */
827       struct gdbpy_event *item = gdbpy_event_list;
828       gdbpy_event_list = gdbpy_event_list->next;
829       if (gdbpy_event_list == NULL)
830         gdbpy_event_list_end = &gdbpy_event_list;
831
832       /* Ignore errors.  */
833       call_result = PyObject_CallObject (item->event, NULL);
834       if (call_result == NULL)
835         PyErr_Clear ();
836
837       Py_XDECREF (call_result);
838       Py_DECREF (item->event);
839       xfree (item);
840     }
841
842   do_cleanups (cleanup);
843 }
844
845 /* Submit an event to the gdb thread.  */
846 static PyObject *
847 gdbpy_post_event (PyObject *self, PyObject *args)
848 {
849   struct gdbpy_event *event;
850   PyObject *func;
851   int wakeup;
852
853   if (!PyArg_ParseTuple (args, "O", &func))
854     return NULL;
855
856   if (!PyCallable_Check (func))
857     {
858       PyErr_SetString (PyExc_RuntimeError,
859                        _("Posted event is not callable"));
860       return NULL;
861     }
862
863   Py_INCREF (func);
864
865   /* From here until the end of the function, we have the GIL, so we
866      can operate on our global data structures without worrying.  */
867   wakeup = gdbpy_event_list == NULL;
868
869   event = XNEW (struct gdbpy_event);
870   event->event = func;
871   event->next = NULL;
872   *gdbpy_event_list_end = event;
873   gdbpy_event_list_end = &event->next;
874
875   /* Wake up gdb when needed.  */
876   if (wakeup)
877     {
878       char c = 'q';             /* Anything. */
879
880       if (serial_write (gdbpy_event_fds[1], &c, 1))
881         return PyErr_SetFromErrno (PyExc_IOError);
882     }
883
884   Py_RETURN_NONE;
885 }
886
887 /* Initialize the Python event handler.  */
888 static int
889 gdbpy_initialize_events (void)
890 {
891   if (serial_pipe (gdbpy_event_fds) == 0)
892     {
893       gdbpy_event_list_end = &gdbpy_event_list;
894       serial_async (gdbpy_event_fds[0], gdbpy_run_events, NULL);
895     }
896
897   return 0;
898 }
899
900 \f
901
902 static void
903 before_prompt_hook (const char *current_gdb_prompt)
904 {
905   struct cleanup *cleanup;
906   char *prompt = NULL;
907
908   if (!gdb_python_initialized)
909     return;
910
911   cleanup = ensure_python_env (get_current_arch (), current_language);
912
913   if (gdb_python_module
914       && PyObject_HasAttrString (gdb_python_module, "prompt_hook"))
915     {
916       PyObject *hook;
917
918       hook = PyObject_GetAttrString (gdb_python_module, "prompt_hook");
919       if (hook == NULL)
920         goto fail;
921
922       make_cleanup_py_decref (hook);
923
924       if (PyCallable_Check (hook))
925         {
926           PyObject *result;
927           PyObject *current_prompt;
928
929           current_prompt = PyString_FromString (current_gdb_prompt);
930           if (current_prompt == NULL)
931             goto fail;
932
933           result = PyObject_CallFunctionObjArgs (hook, current_prompt, NULL);
934
935           Py_DECREF (current_prompt);
936
937           if (result == NULL)
938             goto fail;
939
940           make_cleanup_py_decref (result);
941
942           /* Return type should be None, or a String.  If it is None,
943              fall through, we will not set a prompt.  If it is a
944              string, set  PROMPT.  Anything else, set an exception.  */
945           if (result != Py_None && ! PyString_Check (result))
946             {
947               PyErr_Format (PyExc_RuntimeError,
948                             _("Return from prompt_hook must " \
949                               "be either a Python string, or None"));
950               goto fail;
951             }
952
953           if (result != Py_None)
954             {
955               prompt = python_string_to_host_string (result);
956
957               if (prompt == NULL)
958                 goto fail;
959               else
960                 make_cleanup (xfree, prompt);
961             }
962         }
963     }
964
965   /* If a prompt has been set, PROMPT will not be NULL.  If it is
966      NULL, do not set the prompt.  */
967   if (prompt != NULL)
968     set_prompt (prompt);
969
970   do_cleanups (cleanup);
971   return;
972
973  fail:
974   gdbpy_print_stack ();
975   do_cleanups (cleanup);
976   return;
977 }
978
979 \f
980
981 /* Printing.  */
982
983 /* A python function to write a single string using gdb's filtered
984    output stream .  The optional keyword STREAM can be used to write
985    to a particular stream.  The default stream is to gdb_stdout.  */
986
987 static PyObject *
988 gdbpy_write (PyObject *self, PyObject *args, PyObject *kw)
989 {
990   const char *arg;
991   static char *keywords[] = {"text", "stream", NULL };
992   int stream_type = 0;
993   volatile struct gdb_exception except;
994
995   if (! PyArg_ParseTupleAndKeywords (args, kw, "s|i", keywords, &arg,
996                                      &stream_type))
997     return NULL;
998
999   TRY_CATCH (except, RETURN_MASK_ALL)
1000     {
1001       switch (stream_type)
1002         {
1003         case 1:
1004           {
1005             fprintf_filtered (gdb_stderr, "%s", arg);
1006             break;
1007           }
1008         case 2:
1009           {
1010             fprintf_filtered (gdb_stdlog, "%s", arg);
1011             break;
1012           }
1013         default:
1014           fprintf_filtered (gdb_stdout, "%s", arg);
1015         }
1016     }
1017   GDB_PY_HANDLE_EXCEPTION (except);
1018
1019   Py_RETURN_NONE;
1020 }
1021
1022 /* A python function to flush a gdb stream.  The optional keyword
1023    STREAM can be used to flush a particular stream.  The default stream
1024    is gdb_stdout.  */
1025
1026 static PyObject *
1027 gdbpy_flush (PyObject *self, PyObject *args, PyObject *kw)
1028 {
1029   static char *keywords[] = {"stream", NULL };
1030   int stream_type = 0;
1031
1032   if (! PyArg_ParseTupleAndKeywords (args, kw, "|i", keywords,
1033                                      &stream_type))
1034     return NULL;
1035
1036   switch (stream_type)
1037     {
1038     case 1:
1039       {
1040         gdb_flush (gdb_stderr);
1041         break;
1042       }
1043     case 2:
1044       {
1045         gdb_flush (gdb_stdlog);
1046         break;
1047       }
1048     default:
1049       gdb_flush (gdb_stdout);
1050     }
1051
1052   Py_RETURN_NONE;
1053 }
1054
1055 /* Print a python exception trace, print just a message, or print
1056    nothing and clear the python exception, depending on
1057    gdbpy_should_print_stack.  Only call this if a python exception is
1058    set.  */
1059 void
1060 gdbpy_print_stack (void)
1061 {
1062   volatile struct gdb_exception except;
1063
1064   /* Print "none", just clear exception.  */
1065   if (gdbpy_should_print_stack == python_excp_none)
1066     {
1067       PyErr_Clear ();
1068     }
1069   /* Print "full" message and backtrace.  */
1070   else if (gdbpy_should_print_stack == python_excp_full)
1071     {
1072       PyErr_Print ();
1073       /* PyErr_Print doesn't necessarily end output with a newline.
1074          This works because Python's stdout/stderr is fed through
1075          printf_filtered.  */
1076       TRY_CATCH (except, RETURN_MASK_ALL)
1077         {
1078           begin_line ();
1079         }
1080     }
1081   /* Print "message", just error print message.  */
1082   else
1083     {
1084       PyObject *ptype, *pvalue, *ptraceback;
1085       char *msg = NULL, *type = NULL;
1086
1087       PyErr_Fetch (&ptype, &pvalue, &ptraceback);
1088
1089       /* Fetch the error message contained within ptype, pvalue.  */
1090       msg = gdbpy_exception_to_string (ptype, pvalue);
1091       type = gdbpy_obj_to_string (ptype);
1092
1093       TRY_CATCH (except, RETURN_MASK_ALL)
1094         {
1095           if (msg == NULL)
1096             {
1097               /* An error occurred computing the string representation of the
1098                  error message.  */
1099               fprintf_filtered (gdb_stderr,
1100                                 _("Error occurred computing Python error" \
1101                                   "message.\n"));
1102             }
1103           else
1104             fprintf_filtered (gdb_stderr, "Python Exception %s %s: \n",
1105                               type, msg);
1106         }
1107
1108       Py_XDECREF (ptype);
1109       Py_XDECREF (pvalue);
1110       Py_XDECREF (ptraceback);
1111       xfree (msg);
1112     }
1113 }
1114
1115 \f
1116
1117 /* Return the current Progspace.
1118    There always is one.  */
1119
1120 static PyObject *
1121 gdbpy_get_current_progspace (PyObject *unused1, PyObject *unused2)
1122 {
1123   PyObject *result;
1124
1125   result = pspace_to_pspace_object (current_program_space);
1126   if (result)
1127     Py_INCREF (result);
1128   return result;
1129 }
1130
1131 /* Return a sequence holding all the Progspaces.  */
1132
1133 static PyObject *
1134 gdbpy_progspaces (PyObject *unused1, PyObject *unused2)
1135 {
1136   struct program_space *ps;
1137   PyObject *list;
1138
1139   list = PyList_New (0);
1140   if (!list)
1141     return NULL;
1142
1143   ALL_PSPACES (ps)
1144   {
1145     PyObject *item = pspace_to_pspace_object (ps);
1146
1147     if (!item || PyList_Append (list, item) == -1)
1148       {
1149         Py_DECREF (list);
1150         return NULL;
1151       }
1152   }
1153
1154   return list;
1155 }
1156
1157 \f
1158
1159 /* The "current" objfile.  This is set when gdb detects that a new
1160    objfile has been loaded.  It is only set for the duration of a call to
1161    source_python_script_for_objfile; it is NULL at other times.  */
1162 static struct objfile *gdbpy_current_objfile;
1163
1164 /* Set the current objfile to OBJFILE and then read FILE named FILENAME
1165    as Python code.  This does not throw any errors.  If an exception
1166    occurs python will print the traceback and clear the error indicator.  */
1167
1168 void
1169 source_python_script_for_objfile (struct objfile *objfile, FILE *file,
1170                                   const char *filename)
1171 {
1172   struct cleanup *cleanups;
1173
1174   if (!gdb_python_initialized)
1175     return;
1176
1177   cleanups = ensure_python_env (get_objfile_arch (objfile), current_language);
1178   gdbpy_current_objfile = objfile;
1179
1180   python_run_simple_file (file, filename);
1181
1182   do_cleanups (cleanups);
1183   gdbpy_current_objfile = NULL;
1184 }
1185
1186 /* Return the current Objfile, or None if there isn't one.  */
1187
1188 static PyObject *
1189 gdbpy_get_current_objfile (PyObject *unused1, PyObject *unused2)
1190 {
1191   PyObject *result;
1192
1193   if (! gdbpy_current_objfile)
1194     Py_RETURN_NONE;
1195
1196   result = objfile_to_objfile_object (gdbpy_current_objfile);
1197   if (result)
1198     Py_INCREF (result);
1199   return result;
1200 }
1201
1202 /* Return a sequence holding all the Objfiles.  */
1203
1204 static PyObject *
1205 gdbpy_objfiles (PyObject *unused1, PyObject *unused2)
1206 {
1207   struct objfile *objf;
1208   PyObject *list;
1209
1210   list = PyList_New (0);
1211   if (!list)
1212     return NULL;
1213
1214   ALL_OBJFILES (objf)
1215   {
1216     PyObject *item = objfile_to_objfile_object (objf);
1217
1218     if (!item || PyList_Append (list, item) == -1)
1219       {
1220         Py_DECREF (list);
1221         return NULL;
1222       }
1223   }
1224
1225   return list;
1226 }
1227
1228 /* Compute the list of active type printers and return it.  The result
1229    of this function can be passed to apply_type_printers, and should
1230    be freed by free_type_printers.  */
1231
1232 void *
1233 start_type_printers (void)
1234 {
1235   struct cleanup *cleanups;
1236   PyObject *type_module, *func = NULL, *result_obj = NULL;
1237
1238   if (!gdb_python_initialized)
1239     return NULL;
1240
1241   cleanups = ensure_python_env (get_current_arch (), current_language);
1242
1243   type_module = PyImport_ImportModule ("gdb.types");
1244   if (type_module == NULL)
1245     {
1246       gdbpy_print_stack ();
1247       goto done;
1248     }
1249
1250   func = PyObject_GetAttrString (type_module, "get_type_recognizers");
1251   if (func == NULL)
1252     {
1253       gdbpy_print_stack ();
1254       goto done;
1255     }
1256
1257   result_obj = PyObject_CallFunctionObjArgs (func, (char *) NULL);
1258   if (result_obj == NULL)
1259     gdbpy_print_stack ();
1260
1261  done:
1262   Py_XDECREF (type_module);
1263   Py_XDECREF (func);
1264   do_cleanups (cleanups);
1265   return result_obj;
1266 }
1267
1268 /* If TYPE is recognized by some type printer, return a newly
1269    allocated string holding the type's replacement name.  The caller
1270    is responsible for freeing the string.  Otherwise, return NULL.
1271
1272    This function has a bit of a funny name, since it actually applies
1273    recognizers, but this seemed clearer given the start_type_printers
1274    and free_type_printers functions.  */
1275
1276 char *
1277 apply_type_printers (void *printers, struct type *type)
1278 {
1279   struct cleanup *cleanups;
1280   PyObject *type_obj, *type_module = NULL, *func = NULL;
1281   PyObject *result_obj = NULL;
1282   PyObject *printers_obj = printers;
1283   char *result = NULL;
1284
1285   if (printers_obj == NULL)
1286     return NULL;
1287
1288   if (!gdb_python_initialized)
1289     return NULL;
1290
1291   cleanups = ensure_python_env (get_current_arch (), current_language);
1292
1293   type_obj = type_to_type_object (type);
1294   if (type_obj == NULL)
1295     {
1296       gdbpy_print_stack ();
1297       goto done;
1298     }
1299
1300   type_module = PyImport_ImportModule ("gdb.types");
1301   if (type_module == NULL)
1302     {
1303       gdbpy_print_stack ();
1304       goto done;
1305     }
1306
1307   func = PyObject_GetAttrString (type_module, "apply_type_recognizers");
1308   if (func == NULL)
1309     {
1310       gdbpy_print_stack ();
1311       goto done;
1312     }
1313
1314   result_obj = PyObject_CallFunctionObjArgs (func, printers_obj,
1315                                              type_obj, (char *) NULL);
1316   if (result_obj == NULL)
1317     {
1318       gdbpy_print_stack ();
1319       goto done;
1320     }
1321
1322   if (result_obj != Py_None)
1323     {
1324       result = python_string_to_host_string (result_obj);
1325       if (result == NULL)
1326         gdbpy_print_stack ();
1327     }
1328
1329  done:
1330   Py_XDECREF (type_obj);
1331   Py_XDECREF (type_module);
1332   Py_XDECREF (func);
1333   Py_XDECREF (result_obj);
1334   do_cleanups (cleanups);
1335   return result;
1336 }
1337
1338 /* Free the result of start_type_printers.  */
1339
1340 void
1341 free_type_printers (void *arg)
1342 {
1343   struct cleanup *cleanups;
1344   PyObject *printers = arg;
1345
1346   if (printers == NULL)
1347     return;
1348
1349   if (!gdb_python_initialized)
1350     return;
1351
1352   cleanups = ensure_python_env (get_current_arch (), current_language);
1353   Py_DECREF (printers);
1354   do_cleanups (cleanups);
1355 }
1356
1357 #else /* HAVE_PYTHON */
1358
1359 /* Dummy implementation of the gdb "python-interactive" and "python"
1360    command. */
1361
1362 static void
1363 python_interactive_command (char *arg, int from_tty)
1364 {
1365   arg = skip_spaces (arg);
1366   if (arg && *arg)
1367     error (_("Python scripting is not supported in this copy of GDB."));
1368   else
1369     {
1370       struct command_line *l = get_command_line (python_control, "");
1371       struct cleanup *cleanups = make_cleanup_free_command_lines (&l);
1372
1373       execute_control_command_untraced (l);
1374       do_cleanups (cleanups);
1375     }
1376 }
1377
1378 static void
1379 python_command (char *arg, int from_tty)
1380 {
1381   python_interactive_command (arg, from_tty);
1382 }
1383
1384 void
1385 eval_python_from_control_command (struct command_line *cmd)
1386 {
1387   error (_("Python scripting is not supported in this copy of GDB."));
1388 }
1389
1390 void
1391 source_python_script (FILE *file, const char *filename)
1392 {
1393   internal_error (__FILE__, __LINE__,
1394                   _("source_python_script called when Python scripting is "
1395                     "not supported."));
1396 }
1397
1398 int
1399 gdbpy_should_stop (struct gdbpy_breakpoint_object *bp_obj)
1400 {
1401   internal_error (__FILE__, __LINE__,
1402                   _("gdbpy_should_stop called when Python scripting is  " \
1403                     "not supported."));
1404 }
1405
1406 int
1407 gdbpy_breakpoint_has_py_cond (struct gdbpy_breakpoint_object *bp_obj)
1408 {
1409   internal_error (__FILE__, __LINE__,
1410                   _("gdbpy_breakpoint_has_py_cond called when Python " \
1411                     "scripting is not supported."));
1412 }
1413
1414 void *
1415 start_type_printers (void)
1416 {
1417   return NULL;
1418 }
1419
1420 char *
1421 apply_type_printers (void *ignore, struct type *type)
1422 {
1423   return NULL;
1424 }
1425
1426 void
1427 free_type_printers (void *arg)
1428 {
1429 }
1430
1431 enum py_bt_status
1432 apply_frame_filter (struct frame_info *frame, int flags,
1433                     enum py_frame_args args_type,
1434                     struct ui_out *out, int frame_low,
1435                     int frame_high)
1436 {
1437   return PY_BT_NO_FILTERS;
1438 }
1439
1440 #endif /* HAVE_PYTHON */
1441
1442 \f
1443
1444 /* Lists for 'set python' commands.  */
1445
1446 static struct cmd_list_element *user_set_python_list;
1447 static struct cmd_list_element *user_show_python_list;
1448
1449 /* Function for use by 'set python' prefix command.  */
1450
1451 static void
1452 user_set_python (char *args, int from_tty)
1453 {
1454   help_list (user_set_python_list, "set python ", all_commands,
1455              gdb_stdout);
1456 }
1457
1458 /* Function for use by 'show python' prefix command.  */
1459
1460 static void
1461 user_show_python (char *args, int from_tty)
1462 {
1463   cmd_show_list (user_show_python_list, from_tty, "");
1464 }
1465
1466 /* Initialize the Python code.  */
1467
1468 #ifdef HAVE_PYTHON
1469
1470 /* This is installed as a final cleanup and cleans up the
1471    interpreter.  This lets Python's 'atexit' work.  */
1472
1473 static void
1474 finalize_python (void *ignore)
1475 {
1476   /* We don't use ensure_python_env here because if we ever ran the
1477      cleanup, gdb would crash -- because the cleanup calls into the
1478      Python interpreter, which we are about to destroy.  It seems
1479      clearer to make the needed calls explicitly here than to create a
1480      cleanup and then mysteriously discard it.  */
1481   (void) PyGILState_Ensure ();
1482   python_gdbarch = target_gdbarch ();
1483   python_language = current_language;
1484
1485   Py_Finalize ();
1486 }
1487 #endif
1488
1489 /* Provide a prototype to silence -Wmissing-prototypes.  */
1490 extern initialize_file_ftype _initialize_python;
1491
1492 void
1493 _initialize_python (void)
1494 {
1495   char *progname;
1496 #ifdef IS_PY3K
1497   int i;
1498   size_t progsize, count;
1499   char *oldloc;
1500   wchar_t *progname_copy;
1501 #endif
1502
1503   add_com ("python-interactive", class_obscure,
1504            python_interactive_command,
1505 #ifdef HAVE_PYTHON
1506            _("\
1507 Start an interactive Python prompt.\n\
1508 \n\
1509 To return to GDB, type the EOF character (e.g., Ctrl-D on an empty\n\
1510 prompt).\n\
1511 \n\
1512 Alternatively, a single-line Python command can be given as an\n\
1513 argument, and if the command is an expression, the result will be\n\
1514 printed.  For example:\n\
1515 \n\
1516     (gdb) python-interactive 2 + 3\n\
1517     5\n\
1518 ")
1519 #else /* HAVE_PYTHON */
1520            _("\
1521 Start a Python interactive prompt.\n\
1522 \n\
1523 Python scripting is not supported in this copy of GDB.\n\
1524 This command is only a placeholder.")
1525 #endif /* HAVE_PYTHON */
1526            );
1527   add_com_alias ("pi", "python-interactive", class_obscure, 1);
1528
1529   add_com ("python", class_obscure, python_command,
1530 #ifdef HAVE_PYTHON
1531            _("\
1532 Evaluate a Python command.\n\
1533 \n\
1534 The command can be given as an argument, for instance:\n\
1535 \n\
1536     python print 23\n\
1537 \n\
1538 If no argument is given, the following lines are read and used\n\
1539 as the Python commands.  Type a line containing \"end\" to indicate\n\
1540 the end of the command.")
1541 #else /* HAVE_PYTHON */
1542            _("\
1543 Evaluate a Python command.\n\
1544 \n\
1545 Python scripting is not supported in this copy of GDB.\n\
1546 This command is only a placeholder.")
1547 #endif /* HAVE_PYTHON */
1548            );
1549   add_com_alias ("py", "python", class_obscure, 1);
1550
1551   /* Add set/show python print-stack.  */
1552   add_prefix_cmd ("python", no_class, user_show_python,
1553                   _("Prefix command for python preference settings."),
1554                   &user_show_python_list, "show python ", 0,
1555                   &showlist);
1556
1557   add_prefix_cmd ("python", no_class, user_set_python,
1558                   _("Prefix command for python preference settings."),
1559                   &user_set_python_list, "set python ", 0,
1560                   &setlist);
1561
1562   add_setshow_enum_cmd ("print-stack", no_class, python_excp_enums,
1563                         &gdbpy_should_print_stack, _("\
1564 Set mode for Python stack dump on error."), _("\
1565 Show the mode of Python stack printing on error."), _("\
1566 none  == no stack or message will be printed.\n\
1567 full == a message and a stack will be printed.\n\
1568 message == an error message without a stack will be printed."),
1569                         NULL, NULL,
1570                         &user_set_python_list,
1571                         &user_show_python_list);
1572
1573 #ifdef HAVE_PYTHON
1574 #ifdef WITH_PYTHON_PATH
1575   /* Work around problem where python gets confused about where it is,
1576      and then can't find its libraries, etc.
1577      NOTE: Python assumes the following layout:
1578      /foo/bin/python
1579      /foo/lib/pythonX.Y/...
1580      This must be done before calling Py_Initialize.  */
1581   progname = concat (ldirname (python_libdir), SLASH_STRING, "bin",
1582                      SLASH_STRING, "python", NULL);
1583 #ifdef IS_PY3K
1584   oldloc = setlocale (LC_ALL, NULL);
1585   setlocale (LC_ALL, "");
1586   progsize = strlen (progname);
1587   if (progsize == (size_t) -1)
1588     {
1589       fprintf (stderr, "Could not convert python path to string\n");
1590       return;
1591     }
1592   progname_copy = PyMem_Malloc ((progsize + 1) * sizeof (wchar_t));
1593   if (!progname_copy)
1594     {
1595       fprintf (stderr, "out of memory\n");
1596       return;
1597     }
1598   count = mbstowcs (progname_copy, progname, progsize + 1);
1599   if (count == (size_t) -1)
1600     {
1601       fprintf (stderr, "Could not convert python path to string\n");
1602       return;
1603     }
1604   setlocale (LC_ALL, oldloc);
1605
1606   /* Note that Py_SetProgramName expects the string it is passed to
1607      remain alive for the duration of the program's execution, so
1608      it is not freed after this call.  */
1609   Py_SetProgramName (progname_copy);
1610 #else
1611   Py_SetProgramName (progname);
1612 #endif
1613 #endif
1614
1615   Py_Initialize ();
1616   PyEval_InitThreads ();
1617
1618 #ifdef IS_PY3K
1619   gdb_module = PyModule_Create (&GdbModuleDef);
1620   /* Add _gdb module to the list of known built-in modules.  */
1621   _PyImport_FixupBuiltin (gdb_module, "_gdb");
1622 #else
1623   gdb_module = Py_InitModule ("_gdb", GdbMethods);
1624 #endif
1625   if (gdb_module == NULL)
1626     goto fail;
1627
1628   /* The casts to (char*) are for python 2.4.  */
1629   if (PyModule_AddStringConstant (gdb_module, "VERSION", (char*) version) < 0
1630       || PyModule_AddStringConstant (gdb_module, "HOST_CONFIG",
1631                                      (char*) host_name) < 0
1632       || PyModule_AddStringConstant (gdb_module, "TARGET_CONFIG",
1633                                      (char*) target_name) < 0)
1634     goto fail;
1635
1636   /* Add stream constants.  */
1637   if (PyModule_AddIntConstant (gdb_module, "STDOUT", 0) < 0
1638       || PyModule_AddIntConstant (gdb_module, "STDERR", 1) < 0
1639       || PyModule_AddIntConstant (gdb_module, "STDLOG", 2) < 0)
1640     goto fail;
1641
1642   gdbpy_gdb_error = PyErr_NewException ("gdb.error", PyExc_RuntimeError, NULL);
1643   if (gdbpy_gdb_error == NULL
1644       || gdb_pymodule_addobject (gdb_module, "error", gdbpy_gdb_error) < 0)
1645     goto fail;
1646
1647   gdbpy_gdb_memory_error = PyErr_NewException ("gdb.MemoryError",
1648                                                gdbpy_gdb_error, NULL);
1649   if (gdbpy_gdb_memory_error == NULL
1650       || gdb_pymodule_addobject (gdb_module, "MemoryError",
1651                                  gdbpy_gdb_memory_error) < 0)
1652     goto fail;
1653
1654   gdbpy_gdberror_exc = PyErr_NewException ("gdb.GdbError", NULL, NULL);
1655   if (gdbpy_gdberror_exc == NULL
1656       || gdb_pymodule_addobject (gdb_module, "GdbError",
1657                                  gdbpy_gdberror_exc) < 0)
1658     goto fail;
1659
1660   gdbpy_initialize_gdb_readline ();
1661
1662   if (gdbpy_initialize_auto_load () < 0
1663       || gdbpy_initialize_values () < 0
1664       || gdbpy_initialize_frames () < 0
1665       || gdbpy_initialize_commands () < 0
1666       || gdbpy_initialize_symbols () < 0
1667       || gdbpy_initialize_symtabs () < 0
1668       || gdbpy_initialize_blocks () < 0
1669       || gdbpy_initialize_functions () < 0
1670       || gdbpy_initialize_parameters () < 0
1671       || gdbpy_initialize_types () < 0
1672       || gdbpy_initialize_pspace () < 0
1673       || gdbpy_initialize_objfile () < 0
1674       || gdbpy_initialize_breakpoints () < 0
1675       || gdbpy_initialize_finishbreakpoints () < 0
1676       || gdbpy_initialize_lazy_string () < 0
1677       || gdbpy_initialize_linetable () < 0
1678       || gdbpy_initialize_thread () < 0
1679       || gdbpy_initialize_inferior () < 0
1680       || gdbpy_initialize_events () < 0
1681       || gdbpy_initialize_eventregistry () < 0
1682       || gdbpy_initialize_py_events () < 0
1683       || gdbpy_initialize_event () < 0
1684       || gdbpy_initialize_stop_event () < 0
1685       || gdbpy_initialize_signal_event () < 0
1686       || gdbpy_initialize_breakpoint_event () < 0
1687       || gdbpy_initialize_continue_event () < 0
1688       || gdbpy_initialize_exited_event () < 0
1689       || gdbpy_initialize_thread_event () < 0
1690       || gdbpy_initialize_new_objfile_event ()  < 0
1691       || gdbpy_initialize_arch () < 0)
1692     goto fail;
1693
1694   observer_attach_before_prompt (before_prompt_hook);
1695
1696   gdbpy_to_string_cst = PyString_FromString ("to_string");
1697   if (gdbpy_to_string_cst == NULL)
1698     goto fail;
1699   gdbpy_children_cst = PyString_FromString ("children");
1700   if (gdbpy_children_cst == NULL)
1701     goto fail;
1702   gdbpy_display_hint_cst = PyString_FromString ("display_hint");
1703   if (gdbpy_display_hint_cst == NULL)
1704     goto fail;
1705   gdbpy_doc_cst = PyString_FromString ("__doc__");
1706   if (gdbpy_doc_cst == NULL)
1707     goto fail;
1708   gdbpy_enabled_cst = PyString_FromString ("enabled");
1709   if (gdbpy_enabled_cst == NULL)
1710     goto fail;
1711   gdbpy_value_cst = PyString_FromString ("value");
1712   if (gdbpy_value_cst == NULL)
1713     goto fail;
1714
1715   /* Release the GIL while gdb runs.  */
1716   PyThreadState_Swap (NULL);
1717   PyEval_ReleaseLock ();
1718
1719   make_final_cleanup (finalize_python, NULL);
1720
1721   gdb_python_initialized = 1;
1722   return;
1723
1724  fail:
1725   gdbpy_print_stack ();
1726   /* Do not set 'gdb_python_initialized'.  */
1727   return;
1728
1729 #endif /* HAVE_PYTHON */
1730 }
1731
1732 #ifdef HAVE_PYTHON
1733
1734 /* Perform the remaining python initializations.
1735    These must be done after GDB is at least mostly initialized.
1736    E.g., The "info pretty-printer" command needs the "info" prefix
1737    command installed.  */
1738
1739 void
1740 finish_python_initialization (void)
1741 {
1742   PyObject *m;
1743   char *gdb_pythondir;
1744   PyObject *sys_path;
1745   struct cleanup *cleanup;
1746
1747   cleanup = ensure_python_env (get_current_arch (), current_language);
1748
1749   /* Add the initial data-directory to sys.path.  */
1750
1751   gdb_pythondir = concat (gdb_datadir, SLASH_STRING, "python", NULL);
1752   make_cleanup (xfree, gdb_pythondir);
1753
1754   sys_path = PySys_GetObject ("path");
1755
1756   /* If sys.path is not defined yet, define it first.  */
1757   if (!(sys_path && PyList_Check (sys_path)))
1758     {
1759 #ifdef IS_PY3K
1760       PySys_SetPath (L"");
1761 #else
1762       PySys_SetPath ("");
1763 #endif
1764       sys_path = PySys_GetObject ("path");
1765     }
1766   if (sys_path && PyList_Check (sys_path))
1767     {
1768       PyObject *pythondir;
1769       int err;
1770
1771       pythondir = PyString_FromString (gdb_pythondir);
1772       if (pythondir == NULL)
1773         goto fail;
1774
1775       err = PyList_Insert (sys_path, 0, pythondir);
1776       Py_DECREF (pythondir);
1777       if (err)
1778         goto fail;
1779     }
1780   else
1781     goto fail;
1782
1783   /* Import the gdb module to finish the initialization, and
1784      add it to __main__ for convenience.  */
1785   m = PyImport_AddModule ("__main__");
1786   if (m == NULL)
1787     goto fail;
1788
1789   gdb_python_module = PyImport_ImportModule ("gdb");
1790   if (gdb_python_module == NULL)
1791     {
1792       gdbpy_print_stack ();
1793       /* This is passed in one call to warning so that blank lines aren't
1794          inserted between each line of text.  */
1795       warning (_("\n"
1796                  "Could not load the Python gdb module from `%s'.\n"
1797                  "Limited Python support is available from the _gdb module.\n"
1798                  "Suggest passing --data-directory=/path/to/gdb/data-directory.\n"),
1799                  gdb_pythondir);
1800       do_cleanups (cleanup);
1801       return;
1802     }
1803
1804   if (gdb_pymodule_addobject (m, "gdb", gdb_python_module) < 0)
1805     goto fail;
1806
1807   /* Keep the reference to gdb_python_module since it is in a global
1808      variable.  */
1809
1810   do_cleanups (cleanup);
1811   return;
1812
1813  fail:
1814   gdbpy_print_stack ();
1815   warning (_("internal error: Unhandled Python exception"));
1816   do_cleanups (cleanup);
1817 }
1818
1819 #endif /* HAVE_PYTHON */
1820
1821 \f
1822
1823 #ifdef HAVE_PYTHON
1824
1825 static PyMethodDef GdbMethods[] =
1826 {
1827   { "history", gdbpy_history, METH_VARARGS,
1828     "Get a value from history" },
1829   { "execute", (PyCFunction) execute_gdb_command, METH_VARARGS | METH_KEYWORDS,
1830     "execute (command [, from_tty] [, to_string]) -> [String]\n\
1831 Evaluate command, a string, as a gdb CLI command.  Optionally returns\n\
1832 a Python String containing the output of the command if to_string is\n\
1833 set to True." },
1834   { "parameter", gdbpy_parameter, METH_VARARGS,
1835     "Return a gdb parameter's value" },
1836
1837   { "breakpoints", gdbpy_breakpoints, METH_NOARGS,
1838     "Return a tuple of all breakpoint objects" },
1839
1840   { "default_visualizer", gdbpy_default_visualizer, METH_VARARGS,
1841     "Find the default visualizer for a Value." },
1842
1843   { "current_progspace", gdbpy_get_current_progspace, METH_NOARGS,
1844     "Return the current Progspace." },
1845   { "progspaces", gdbpy_progspaces, METH_NOARGS,
1846     "Return a sequence of all progspaces." },
1847
1848   { "current_objfile", gdbpy_get_current_objfile, METH_NOARGS,
1849     "Return the current Objfile being loaded, or None." },
1850   { "objfiles", gdbpy_objfiles, METH_NOARGS,
1851     "Return a sequence of all loaded objfiles." },
1852
1853   { "newest_frame", gdbpy_newest_frame, METH_NOARGS,
1854     "newest_frame () -> gdb.Frame.\n\
1855 Return the newest frame object." },
1856   { "selected_frame", gdbpy_selected_frame, METH_NOARGS,
1857     "selected_frame () -> gdb.Frame.\n\
1858 Return the selected frame object." },
1859   { "frame_stop_reason_string", gdbpy_frame_stop_reason_string, METH_VARARGS,
1860     "stop_reason_string (Integer) -> String.\n\
1861 Return a string explaining unwind stop reason." },
1862
1863   { "lookup_type", (PyCFunction) gdbpy_lookup_type,
1864     METH_VARARGS | METH_KEYWORDS,
1865     "lookup_type (name [, block]) -> type\n\
1866 Return a Type corresponding to the given name." },
1867   { "lookup_symbol", (PyCFunction) gdbpy_lookup_symbol,
1868     METH_VARARGS | METH_KEYWORDS,
1869     "lookup_symbol (name [, block] [, domain]) -> (symbol, is_field_of_this)\n\
1870 Return a tuple with the symbol corresponding to the given name (or None) and\n\
1871 a boolean indicating if name is a field of the current implied argument\n\
1872 `this' (when the current language is object-oriented)." },
1873   { "lookup_global_symbol", (PyCFunction) gdbpy_lookup_global_symbol,
1874     METH_VARARGS | METH_KEYWORDS,
1875     "lookup_global_symbol (name [, domain]) -> symbol\n\
1876 Return the symbol corresponding to the given name (or None)." },
1877   { "block_for_pc", gdbpy_block_for_pc, METH_VARARGS,
1878     "Return the block containing the given pc value, or None." },
1879   { "solib_name", gdbpy_solib_name, METH_VARARGS,
1880     "solib_name (Long) -> String.\n\
1881 Return the name of the shared library holding a given address, or None." },
1882   { "decode_line", gdbpy_decode_line, METH_VARARGS,
1883     "decode_line (String) -> Tuple.  Decode a string argument the way\n\
1884 that 'break' or 'edit' does.  Return a tuple containing two elements.\n\
1885 The first element contains any unparsed portion of the String parameter\n\
1886 (or None if the string was fully parsed).  The second element contains\n\
1887 a tuple that contains all the locations that match, represented as\n\
1888 gdb.Symtab_and_line objects (or None)."},
1889   { "parse_and_eval", gdbpy_parse_and_eval, METH_VARARGS,
1890     "parse_and_eval (String) -> Value.\n\
1891 Parse String as an expression, evaluate it, and return the result as a Value."
1892   },
1893   { "find_pc_line", gdbpy_find_pc_line, METH_VARARGS,
1894     "find_pc_line (pc) -> Symtab_and_line.\n\
1895 Return the gdb.Symtab_and_line object corresponding to the pc value." },
1896
1897   { "post_event", gdbpy_post_event, METH_VARARGS,
1898     "Post an event into gdb's event loop." },
1899
1900   { "target_charset", gdbpy_target_charset, METH_NOARGS,
1901     "target_charset () -> string.\n\
1902 Return the name of the current target charset." },
1903   { "target_wide_charset", gdbpy_target_wide_charset, METH_NOARGS,
1904     "target_wide_charset () -> string.\n\
1905 Return the name of the current target wide charset." },
1906
1907   { "string_to_argv", gdbpy_string_to_argv, METH_VARARGS,
1908     "string_to_argv (String) -> Array.\n\
1909 Parse String and return an argv-like array.\n\
1910 Arguments are separate by spaces and may be quoted."
1911   },
1912   { "write", (PyCFunction)gdbpy_write, METH_VARARGS | METH_KEYWORDS,
1913     "Write a string using gdb's filtered stream." },
1914   { "flush", (PyCFunction)gdbpy_flush, METH_VARARGS | METH_KEYWORDS,
1915     "Flush gdb's filtered stdout stream." },
1916   { "selected_thread", gdbpy_selected_thread, METH_NOARGS,
1917     "selected_thread () -> gdb.InferiorThread.\n\
1918 Return the selected thread object." },
1919   { "selected_inferior", gdbpy_selected_inferior, METH_NOARGS,
1920     "selected_inferior () -> gdb.Inferior.\n\
1921 Return the selected inferior object." },
1922   { "inferiors", gdbpy_inferiors, METH_NOARGS,
1923     "inferiors () -> (gdb.Inferior, ...).\n\
1924 Return a tuple containing all inferiors." },
1925   {NULL, NULL, 0, NULL}
1926 };
1927
1928 #ifdef IS_PY3K
1929 static struct PyModuleDef GdbModuleDef =
1930 {
1931   PyModuleDef_HEAD_INIT,
1932   "_gdb",
1933   NULL,
1934   -1,
1935   GdbMethods,
1936   NULL,
1937   NULL,
1938   NULL,
1939   NULL
1940 };
1941 #endif
1942 #endif /* HAVE_PYTHON */
This page took 0.134953 seconds and 4 git commands to generate.