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