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