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