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