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