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