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