]> Git Repo - binutils.git/blob - gdb/python/python.c
Add more methods to gdb.Progspace
[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);
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,
747                                 symtab_paths.vec.size (), files);
748     }
749   else
750     symbols = search_symbols (regex, FUNCTIONS_DOMAIN, 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       /* Ignore errors.  */
991       gdbpy_ref<> call_result (PyObject_CallObject (item->event, NULL));
992       if (call_result == NULL)
993         PyErr_Clear ();
994
995       Py_DECREF (item->event);
996       xfree (item);
997     }
998 }
999
1000 /* Submit an event to the gdb thread.  */
1001 static PyObject *
1002 gdbpy_post_event (PyObject *self, PyObject *args)
1003 {
1004   struct gdbpy_event *event;
1005   PyObject *func;
1006   int wakeup;
1007
1008   if (!PyArg_ParseTuple (args, "O", &func))
1009     return NULL;
1010
1011   if (!PyCallable_Check (func))
1012     {
1013       PyErr_SetString (PyExc_RuntimeError,
1014                        _("Posted event is not callable"));
1015       return NULL;
1016     }
1017
1018   Py_INCREF (func);
1019
1020   /* From here until the end of the function, we have the GIL, so we
1021      can operate on our global data structures without worrying.  */
1022   wakeup = gdbpy_event_list == NULL;
1023
1024   event = XNEW (struct gdbpy_event);
1025   event->event = func;
1026   event->next = NULL;
1027   *gdbpy_event_list_end = event;
1028   gdbpy_event_list_end = &event->next;
1029
1030   /* Wake up gdb when needed.  */
1031   if (wakeup)
1032     serial_event_set (gdbpy_serial_event);
1033
1034   Py_RETURN_NONE;
1035 }
1036
1037 /* Initialize the Python event handler.  */
1038 static int
1039 gdbpy_initialize_events (void)
1040 {
1041   gdbpy_event_list_end = &gdbpy_event_list;
1042
1043   gdbpy_serial_event = make_serial_event ();
1044   add_file_handler (serial_event_fd (gdbpy_serial_event),
1045                     gdbpy_run_events, NULL);
1046
1047   return 0;
1048 }
1049
1050 \f
1051
1052 /* This is the extension_language_ops.before_prompt "method".  */
1053
1054 static enum ext_lang_rc
1055 gdbpy_before_prompt_hook (const struct extension_language_defn *extlang,
1056                           const char *current_gdb_prompt)
1057 {
1058   if (!gdb_python_initialized)
1059     return EXT_LANG_RC_NOP;
1060
1061   gdbpy_enter enter_py (get_current_arch (), current_language);
1062
1063   if (!evregpy_no_listeners_p (gdb_py_events.before_prompt)
1064       && evpy_emit_event (NULL, gdb_py_events.before_prompt) < 0)
1065     return EXT_LANG_RC_ERROR;
1066
1067   if (gdb_python_module
1068       && PyObject_HasAttrString (gdb_python_module, "prompt_hook"))
1069     {
1070       gdbpy_ref<> hook (PyObject_GetAttrString (gdb_python_module,
1071                                                 "prompt_hook"));
1072       if (hook == NULL)
1073         {
1074           gdbpy_print_stack ();
1075           return EXT_LANG_RC_ERROR;
1076         }
1077
1078       if (PyCallable_Check (hook.get ()))
1079         {
1080           gdbpy_ref<> current_prompt (PyString_FromString (current_gdb_prompt));
1081           if (current_prompt == NULL)
1082             {
1083               gdbpy_print_stack ();
1084               return EXT_LANG_RC_ERROR;
1085             }
1086
1087           gdbpy_ref<> result
1088             (PyObject_CallFunctionObjArgs (hook.get (), current_prompt.get (),
1089                                            NULL));
1090           if (result == NULL)
1091             {
1092               gdbpy_print_stack ();
1093               return EXT_LANG_RC_ERROR;
1094             }
1095
1096           /* Return type should be None, or a String.  If it is None,
1097              fall through, we will not set a prompt.  If it is a
1098              string, set  PROMPT.  Anything else, set an exception.  */
1099           if (result != Py_None && ! PyString_Check (result.get ()))
1100             {
1101               PyErr_Format (PyExc_RuntimeError,
1102                             _("Return from prompt_hook must " \
1103                               "be either a Python string, or None"));
1104               gdbpy_print_stack ();
1105               return EXT_LANG_RC_ERROR;
1106             }
1107
1108           if (result != Py_None)
1109             {
1110               gdb::unique_xmalloc_ptr<char>
1111                 prompt (python_string_to_host_string (result.get ()));
1112
1113               if (prompt == NULL)
1114                 {
1115                   gdbpy_print_stack ();
1116                   return EXT_LANG_RC_ERROR;
1117                 }
1118
1119               set_prompt (prompt.get ());
1120               return EXT_LANG_RC_OK;
1121             }
1122         }
1123     }
1124
1125   return EXT_LANG_RC_NOP;
1126 }
1127
1128 \f
1129
1130 /* Printing.  */
1131
1132 /* A python function to write a single string using gdb's filtered
1133    output stream .  The optional keyword STREAM can be used to write
1134    to a particular stream.  The default stream is to gdb_stdout.  */
1135
1136 static PyObject *
1137 gdbpy_write (PyObject *self, PyObject *args, PyObject *kw)
1138 {
1139   const char *arg;
1140   static const char *keywords[] = { "text", "stream", NULL };
1141   int stream_type = 0;
1142
1143   if (!gdb_PyArg_ParseTupleAndKeywords (args, kw, "s|i", keywords, &arg,
1144                                         &stream_type))
1145     return NULL;
1146
1147   TRY
1148     {
1149       switch (stream_type)
1150         {
1151         case 1:
1152           {
1153             fprintf_filtered (gdb_stderr, "%s", arg);
1154             break;
1155           }
1156         case 2:
1157           {
1158             fprintf_filtered (gdb_stdlog, "%s", arg);
1159             break;
1160           }
1161         default:
1162           fprintf_filtered (gdb_stdout, "%s", arg);
1163         }
1164     }
1165   CATCH (except, RETURN_MASK_ALL)
1166     {
1167       GDB_PY_HANDLE_EXCEPTION (except);
1168     }
1169   END_CATCH
1170
1171   Py_RETURN_NONE;
1172 }
1173
1174 /* A python function to flush a gdb stream.  The optional keyword
1175    STREAM can be used to flush a particular stream.  The default stream
1176    is gdb_stdout.  */
1177
1178 static PyObject *
1179 gdbpy_flush (PyObject *self, PyObject *args, PyObject *kw)
1180 {
1181   static const char *keywords[] = { "stream", NULL };
1182   int stream_type = 0;
1183
1184   if (!gdb_PyArg_ParseTupleAndKeywords (args, kw, "|i", keywords,
1185                                         &stream_type))
1186     return NULL;
1187
1188   switch (stream_type)
1189     {
1190     case 1:
1191       {
1192         gdb_flush (gdb_stderr);
1193         break;
1194       }
1195     case 2:
1196       {
1197         gdb_flush (gdb_stdlog);
1198         break;
1199       }
1200     default:
1201       gdb_flush (gdb_stdout);
1202     }
1203
1204   Py_RETURN_NONE;
1205 }
1206
1207 /* Return non-zero if print-stack is not "none".  */
1208
1209 int
1210 gdbpy_print_python_errors_p (void)
1211 {
1212   return gdbpy_should_print_stack != python_excp_none;
1213 }
1214
1215 /* Print a python exception trace, print just a message, or print
1216    nothing and clear the python exception, depending on
1217    gdbpy_should_print_stack.  Only call this if a python exception is
1218    set.  */
1219 void
1220 gdbpy_print_stack (void)
1221 {
1222
1223   /* Print "none", just clear exception.  */
1224   if (gdbpy_should_print_stack == python_excp_none)
1225     {
1226       PyErr_Clear ();
1227     }
1228   /* Print "full" message and backtrace.  */
1229   else if (gdbpy_should_print_stack == python_excp_full)
1230     {
1231       PyErr_Print ();
1232       /* PyErr_Print doesn't necessarily end output with a newline.
1233          This works because Python's stdout/stderr is fed through
1234          printf_filtered.  */
1235       TRY
1236         {
1237           begin_line ();
1238         }
1239       CATCH (except, RETURN_MASK_ALL)
1240         {
1241         }
1242       END_CATCH
1243     }
1244   /* Print "message", just error print message.  */
1245   else
1246     {
1247       PyObject *ptype, *pvalue, *ptraceback;
1248
1249       PyErr_Fetch (&ptype, &pvalue, &ptraceback);
1250
1251       /* Fetch the error message contained within ptype, pvalue.  */
1252       gdb::unique_xmalloc_ptr<char>
1253         msg (gdbpy_exception_to_string (ptype, pvalue));
1254       gdb::unique_xmalloc_ptr<char> type (gdbpy_obj_to_string (ptype));
1255
1256       TRY
1257         {
1258           if (msg == NULL)
1259             {
1260               /* An error occurred computing the string representation of the
1261                  error message.  */
1262               fprintf_filtered (gdb_stderr,
1263                                 _("Error occurred computing Python error" \
1264                                   "message.\n"));
1265             }
1266           else
1267             fprintf_filtered (gdb_stderr, "Python Exception %s %s: \n",
1268                               type.get (), msg.get ());
1269         }
1270       CATCH (except, RETURN_MASK_ALL)
1271         {
1272         }
1273       END_CATCH
1274
1275       Py_XDECREF (ptype);
1276       Py_XDECREF (pvalue);
1277       Py_XDECREF (ptraceback);
1278     }
1279 }
1280
1281 \f
1282
1283 /* Return a sequence holding all the Progspaces.  */
1284
1285 static PyObject *
1286 gdbpy_progspaces (PyObject *unused1, PyObject *unused2)
1287 {
1288   struct program_space *ps;
1289
1290   gdbpy_ref<> list (PyList_New (0));
1291   if (list == NULL)
1292     return NULL;
1293
1294   ALL_PSPACES (ps)
1295   {
1296     PyObject *item = pspace_to_pspace_object (ps);
1297
1298     if (!item || PyList_Append (list.get (), item) == -1)
1299       return NULL;
1300   }
1301
1302   return list.release ();
1303 }
1304
1305 \f
1306
1307 /* The "current" objfile.  This is set when gdb detects that a new
1308    objfile has been loaded.  It is only set for the duration of a call to
1309    gdbpy_source_objfile_script and gdbpy_execute_objfile_script; it is NULL
1310    at other times.  */
1311 static struct objfile *gdbpy_current_objfile;
1312
1313 /* Set the current objfile to OBJFILE and then read FILE named FILENAME
1314    as Python code.  This does not throw any errors.  If an exception
1315    occurs python will print the traceback and clear the error indicator.
1316    This is the extension_language_script_ops.objfile_script_sourcer
1317    "method".  */
1318
1319 static void
1320 gdbpy_source_objfile_script (const struct extension_language_defn *extlang,
1321                              struct objfile *objfile, FILE *file,
1322                              const char *filename)
1323 {
1324   if (!gdb_python_initialized)
1325     return;
1326
1327   gdbpy_enter enter_py (get_objfile_arch (objfile), current_language);
1328   gdbpy_current_objfile = objfile;
1329
1330   python_run_simple_file (file, filename);
1331
1332   gdbpy_current_objfile = NULL;
1333 }
1334
1335 /* Set the current objfile to OBJFILE and then execute SCRIPT
1336    as Python code.  This does not throw any errors.  If an exception
1337    occurs python will print the traceback and clear the error indicator.
1338    This is the extension_language_script_ops.objfile_script_executor
1339    "method".  */
1340
1341 static void
1342 gdbpy_execute_objfile_script (const struct extension_language_defn *extlang,
1343                               struct objfile *objfile, const char *name,
1344                               const char *script)
1345 {
1346   if (!gdb_python_initialized)
1347     return;
1348
1349   gdbpy_enter enter_py (get_objfile_arch (objfile), current_language);
1350   gdbpy_current_objfile = objfile;
1351
1352   PyRun_SimpleString (script);
1353
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 /* Compute the list of active python type printers and store them in
1374    EXT_PRINTERS->py_type_printers.  The product of this function is used by
1375    gdbpy_apply_type_printers, and freed by gdbpy_free_type_printers.
1376    This is the extension_language_ops.start_type_printers "method".  */
1377
1378 static void
1379 gdbpy_start_type_printers (const struct extension_language_defn *extlang,
1380                            struct ext_lang_type_printers *ext_printers)
1381 {
1382   PyObject *printers_obj = NULL;
1383
1384   if (!gdb_python_initialized)
1385     return;
1386
1387   gdbpy_enter enter_py (get_current_arch (), current_language);
1388
1389   gdbpy_ref<> type_module (PyImport_ImportModule ("gdb.types"));
1390   if (type_module == NULL)
1391     {
1392       gdbpy_print_stack ();
1393       return;
1394     }
1395
1396   gdbpy_ref<> func (PyObject_GetAttrString (type_module.get (),
1397                                             "get_type_recognizers"));
1398   if (func == NULL)
1399     {
1400       gdbpy_print_stack ();
1401       return;
1402     }
1403
1404   printers_obj = PyObject_CallFunctionObjArgs (func.get (), (char *) NULL);
1405   if (printers_obj == NULL)
1406     gdbpy_print_stack ();
1407   else
1408     ext_printers->py_type_printers = printers_obj;
1409 }
1410
1411 /* If TYPE is recognized by some type printer, store in *PRETTIED_TYPE
1412    a newly allocated string holding the type's replacement name, and return
1413    EXT_LANG_RC_OK.  The caller is responsible for freeing the string.
1414    If there's a Python error return EXT_LANG_RC_ERROR.
1415    Otherwise, return EXT_LANG_RC_NOP.
1416    This is the extension_language_ops.apply_type_printers "method".  */
1417
1418 static enum ext_lang_rc
1419 gdbpy_apply_type_printers (const struct extension_language_defn *extlang,
1420                            const struct ext_lang_type_printers *ext_printers,
1421                            struct type *type, char **prettied_type)
1422 {
1423   PyObject *printers_obj = (PyObject *) ext_printers->py_type_printers;
1424   gdb::unique_xmalloc_ptr<char> result;
1425
1426   if (printers_obj == NULL)
1427     return EXT_LANG_RC_NOP;
1428
1429   if (!gdb_python_initialized)
1430     return EXT_LANG_RC_NOP;
1431
1432   gdbpy_enter enter_py (get_current_arch (), current_language);
1433
1434   gdbpy_ref<> type_obj (type_to_type_object (type));
1435   if (type_obj == NULL)
1436     {
1437       gdbpy_print_stack ();
1438       return EXT_LANG_RC_ERROR;
1439     }
1440
1441   gdbpy_ref<> type_module (PyImport_ImportModule ("gdb.types"));
1442   if (type_module == NULL)
1443     {
1444       gdbpy_print_stack ();
1445       return EXT_LANG_RC_ERROR;
1446     }
1447
1448   gdbpy_ref<> func (PyObject_GetAttrString (type_module.get (),
1449                                             "apply_type_recognizers"));
1450   if (func == NULL)
1451     {
1452       gdbpy_print_stack ();
1453       return EXT_LANG_RC_ERROR;
1454     }
1455
1456   gdbpy_ref<> result_obj (PyObject_CallFunctionObjArgs (func.get (),
1457                                                         printers_obj,
1458                                                         type_obj.get (),
1459                                                         (char *) NULL));
1460   if (result_obj == NULL)
1461     {
1462       gdbpy_print_stack ();
1463       return EXT_LANG_RC_ERROR;
1464     }
1465
1466   if (result_obj == Py_None)
1467     return EXT_LANG_RC_NOP;
1468
1469   result = python_string_to_host_string (result_obj.get ());
1470   if (result == NULL)
1471     {
1472       gdbpy_print_stack ();
1473       return EXT_LANG_RC_ERROR;
1474     }
1475
1476   *prettied_type = result.release ();
1477   return EXT_LANG_RC_OK;
1478 }
1479
1480 /* Free the result of start_type_printers.
1481    This is the extension_language_ops.free_type_printers "method".  */
1482
1483 static void
1484 gdbpy_free_type_printers (const struct extension_language_defn *extlang,
1485                           struct ext_lang_type_printers *ext_printers)
1486 {
1487   PyObject *printers = (PyObject *) ext_printers->py_type_printers;
1488
1489   if (printers == NULL)
1490     return;
1491
1492   if (!gdb_python_initialized)
1493     return;
1494
1495   gdbpy_enter enter_py (get_current_arch (), current_language);
1496   Py_DECREF (printers);
1497 }
1498
1499 #else /* HAVE_PYTHON */
1500
1501 /* Dummy implementation of the gdb "python-interactive" and "python"
1502    command. */
1503
1504 static void
1505 python_interactive_command (const char *arg, int from_tty)
1506 {
1507   arg = skip_spaces (arg);
1508   if (arg && *arg)
1509     error (_("Python scripting is not supported in this copy of GDB."));
1510   else
1511     {
1512       counted_command_line l = get_command_line (python_control, "");
1513
1514       execute_control_command_untraced (l.get ());
1515     }
1516 }
1517
1518 static void
1519 python_command (const char *arg, int from_tty)
1520 {
1521   python_interactive_command (arg, from_tty);
1522 }
1523
1524 #endif /* HAVE_PYTHON */
1525
1526 \f
1527
1528 /* Lists for 'set python' commands.  */
1529
1530 static struct cmd_list_element *user_set_python_list;
1531 static struct cmd_list_element *user_show_python_list;
1532
1533 /* Function for use by 'set python' prefix command.  */
1534
1535 static void
1536 user_set_python (const char *args, int from_tty)
1537 {
1538   help_list (user_set_python_list, "set python ", all_commands,
1539              gdb_stdout);
1540 }
1541
1542 /* Function for use by 'show python' prefix command.  */
1543
1544 static void
1545 user_show_python (const char *args, int from_tty)
1546 {
1547   cmd_show_list (user_show_python_list, from_tty, "");
1548 }
1549
1550 /* Initialize the Python code.  */
1551
1552 #ifdef HAVE_PYTHON
1553
1554 /* This is installed as a final cleanup and cleans up the
1555    interpreter.  This lets Python's 'atexit' work.  */
1556
1557 static void
1558 finalize_python (void *ignore)
1559 {
1560   struct active_ext_lang_state *previous_active;
1561
1562   /* We don't use ensure_python_env here because if we ever ran the
1563      cleanup, gdb would crash -- because the cleanup calls into the
1564      Python interpreter, which we are about to destroy.  It seems
1565      clearer to make the needed calls explicitly here than to create a
1566      cleanup and then mysteriously discard it.  */
1567
1568   /* This is only called as a final cleanup so we can assume the active
1569      SIGINT handler is gdb's.  We still need to tell it to notify Python.  */
1570   previous_active = set_active_ext_lang (&extension_language_python);
1571
1572   (void) PyGILState_Ensure ();
1573   python_gdbarch = target_gdbarch ();
1574   python_language = current_language;
1575
1576   Py_Finalize ();
1577
1578   restore_active_ext_lang (previous_active);
1579 }
1580
1581 #ifdef IS_PY3K
1582 /* This is called via the PyImport_AppendInittab mechanism called
1583    during initialization, to make the built-in _gdb module known to
1584    Python.  */
1585 PyMODINIT_FUNC
1586 init__gdb_module (void)
1587 {
1588   return PyModule_Create (&python_GdbModuleDef);
1589 }
1590 #endif
1591
1592 static bool
1593 do_start_initialization ()
1594 {
1595 #ifdef IS_PY3K
1596   size_t progsize, count;
1597   wchar_t *progname_copy;
1598 #endif
1599
1600 #ifdef WITH_PYTHON_PATH
1601   /* Work around problem where python gets confused about where it is,
1602      and then can't find its libraries, etc.
1603      NOTE: Python assumes the following layout:
1604      /foo/bin/python
1605      /foo/lib/pythonX.Y/...
1606      This must be done before calling Py_Initialize.  */
1607   gdb::unique_xmalloc_ptr<char> progname
1608     (concat (ldirname (python_libdir).c_str (), SLASH_STRING, "bin",
1609               SLASH_STRING, "python", (char *) NULL));
1610 #ifdef IS_PY3K
1611   std::string oldloc = setlocale (LC_ALL, NULL);
1612   setlocale (LC_ALL, "");
1613   progsize = strlen (progname.get ());
1614   progname_copy = (wchar_t *) PyMem_Malloc ((progsize + 1) * sizeof (wchar_t));
1615   if (!progname_copy)
1616     {
1617       fprintf (stderr, "out of memory\n");
1618       return false;
1619     }
1620   count = mbstowcs (progname_copy, progname.get (), progsize + 1);
1621   if (count == (size_t) -1)
1622     {
1623       fprintf (stderr, "Could not convert python path to string\n");
1624       return false;
1625     }
1626   setlocale (LC_ALL, oldloc.c_str ());
1627
1628   /* Note that Py_SetProgramName expects the string it is passed to
1629      remain alive for the duration of the program's execution, so
1630      it is not freed after this call.  */
1631   Py_SetProgramName (progname_copy);
1632
1633   /* Define _gdb as a built-in module.  */
1634   PyImport_AppendInittab ("_gdb", init__gdb_module);
1635 #else
1636   Py_SetProgramName (progname.release ());
1637 #endif
1638 #endif
1639
1640   Py_Initialize ();
1641   PyEval_InitThreads ();
1642
1643 #ifdef IS_PY3K
1644   gdb_module = PyImport_ImportModule ("_gdb");
1645 #else
1646   gdb_module = Py_InitModule ("_gdb", python_GdbMethods);
1647 #endif
1648   if (gdb_module == NULL)
1649     return false;
1650
1651   /* The casts to (char*) are for python 2.4.  */
1652   if (PyModule_AddStringConstant (gdb_module, "VERSION", (char*) version) < 0
1653       || PyModule_AddStringConstant (gdb_module, "HOST_CONFIG",
1654                                      (char*) host_name) < 0
1655       || PyModule_AddStringConstant (gdb_module, "TARGET_CONFIG",
1656                                      (char*) target_name) < 0)
1657     return false;
1658
1659   /* Add stream constants.  */
1660   if (PyModule_AddIntConstant (gdb_module, "STDOUT", 0) < 0
1661       || PyModule_AddIntConstant (gdb_module, "STDERR", 1) < 0
1662       || PyModule_AddIntConstant (gdb_module, "STDLOG", 2) < 0)
1663     return false;
1664
1665   gdbpy_gdb_error = PyErr_NewException ("gdb.error", PyExc_RuntimeError, NULL);
1666   if (gdbpy_gdb_error == NULL
1667       || gdb_pymodule_addobject (gdb_module, "error", gdbpy_gdb_error) < 0)
1668     return false;
1669
1670   gdbpy_gdb_memory_error = PyErr_NewException ("gdb.MemoryError",
1671                                                gdbpy_gdb_error, NULL);
1672   if (gdbpy_gdb_memory_error == NULL
1673       || gdb_pymodule_addobject (gdb_module, "MemoryError",
1674                                  gdbpy_gdb_memory_error) < 0)
1675     return false;
1676
1677   gdbpy_gdberror_exc = PyErr_NewException ("gdb.GdbError", NULL, NULL);
1678   if (gdbpy_gdberror_exc == NULL
1679       || gdb_pymodule_addobject (gdb_module, "GdbError",
1680                                  gdbpy_gdberror_exc) < 0)
1681     return false;
1682
1683   gdbpy_initialize_gdb_readline ();
1684
1685   if (gdbpy_initialize_auto_load () < 0
1686       || gdbpy_initialize_values () < 0
1687       || gdbpy_initialize_frames () < 0
1688       || gdbpy_initialize_commands () < 0
1689       || gdbpy_initialize_instruction () < 0
1690       || gdbpy_initialize_record () < 0
1691       || gdbpy_initialize_btrace () < 0
1692       || gdbpy_initialize_symbols () < 0
1693       || gdbpy_initialize_symtabs () < 0
1694       || gdbpy_initialize_blocks () < 0
1695       || gdbpy_initialize_functions () < 0
1696       || gdbpy_initialize_parameters () < 0
1697       || gdbpy_initialize_types () < 0
1698       || gdbpy_initialize_pspace () < 0
1699       || gdbpy_initialize_objfile () < 0
1700       || gdbpy_initialize_breakpoints () < 0
1701       || gdbpy_initialize_finishbreakpoints () < 0
1702       || gdbpy_initialize_lazy_string () < 0
1703       || gdbpy_initialize_linetable () < 0
1704       || gdbpy_initialize_thread () < 0
1705       || gdbpy_initialize_inferior () < 0
1706       || gdbpy_initialize_events () < 0
1707       || gdbpy_initialize_eventregistry () < 0
1708       || gdbpy_initialize_py_events () < 0
1709       || gdbpy_initialize_event () < 0
1710       || gdbpy_initialize_arch () < 0
1711       || gdbpy_initialize_xmethods () < 0
1712       || gdbpy_initialize_unwind () < 0)
1713     return false;
1714
1715 #define GDB_PY_DEFINE_EVENT_TYPE(name, py_name, doc, base)      \
1716   if (gdbpy_initialize_event_generic (&name##_event_object_type, py_name) < 0) \
1717     return false;
1718 #include "py-event-types.def"
1719 #undef GDB_PY_DEFINE_EVENT_TYPE
1720
1721   gdbpy_to_string_cst = PyString_FromString ("to_string");
1722   if (gdbpy_to_string_cst == NULL)
1723     return false;
1724   gdbpy_children_cst = PyString_FromString ("children");
1725   if (gdbpy_children_cst == NULL)
1726     return false;
1727   gdbpy_display_hint_cst = PyString_FromString ("display_hint");
1728   if (gdbpy_display_hint_cst == NULL)
1729     return false;
1730   gdbpy_doc_cst = PyString_FromString ("__doc__");
1731   if (gdbpy_doc_cst == NULL)
1732     return false;
1733   gdbpy_enabled_cst = PyString_FromString ("enabled");
1734   if (gdbpy_enabled_cst == NULL)
1735     return false;
1736   gdbpy_value_cst = PyString_FromString ("value");
1737   if (gdbpy_value_cst == NULL)
1738     return false;
1739
1740   /* Release the GIL while gdb runs.  */
1741   PyThreadState_Swap (NULL);
1742   PyEval_ReleaseLock ();
1743
1744   make_final_cleanup (finalize_python, NULL);
1745
1746   /* Only set this when initialization has succeeded.  */
1747   gdb_python_initialized = 1;
1748   return true;
1749 }
1750
1751 #endif /* HAVE_PYTHON */
1752
1753 void
1754 _initialize_python (void)
1755 {
1756   add_com ("python-interactive", class_obscure,
1757            python_interactive_command,
1758 #ifdef HAVE_PYTHON
1759            _("\
1760 Start an interactive Python prompt.\n\
1761 \n\
1762 To return to GDB, type the EOF character (e.g., Ctrl-D on an empty\n\
1763 prompt).\n\
1764 \n\
1765 Alternatively, a single-line Python command can be given as an\n\
1766 argument, and if the command is an expression, the result will be\n\
1767 printed.  For example:\n\
1768 \n\
1769     (gdb) python-interactive 2 + 3\n\
1770     5\n\
1771 ")
1772 #else /* HAVE_PYTHON */
1773            _("\
1774 Start a Python interactive prompt.\n\
1775 \n\
1776 Python scripting is not supported in this copy of GDB.\n\
1777 This command is only a placeholder.")
1778 #endif /* HAVE_PYTHON */
1779            );
1780   add_com_alias ("pi", "python-interactive", class_obscure, 1);
1781
1782   add_com ("python", class_obscure, python_command,
1783 #ifdef HAVE_PYTHON
1784            _("\
1785 Evaluate a Python command.\n\
1786 \n\
1787 The command can be given as an argument, for instance:\n\
1788 \n\
1789     python print (23)\n\
1790 \n\
1791 If no argument is given, the following lines are read and used\n\
1792 as the Python commands.  Type a line containing \"end\" to indicate\n\
1793 the end of the command.")
1794 #else /* HAVE_PYTHON */
1795            _("\
1796 Evaluate a Python command.\n\
1797 \n\
1798 Python scripting is not supported in this copy of GDB.\n\
1799 This command is only a placeholder.")
1800 #endif /* HAVE_PYTHON */
1801            );
1802   add_com_alias ("py", "python", class_obscure, 1);
1803
1804   /* Add set/show python print-stack.  */
1805   add_prefix_cmd ("python", no_class, user_show_python,
1806                   _("Prefix command for python preference settings."),
1807                   &user_show_python_list, "show python ", 0,
1808                   &showlist);
1809
1810   add_prefix_cmd ("python", no_class, user_set_python,
1811                   _("Prefix command for python preference settings."),
1812                   &user_set_python_list, "set python ", 0,
1813                   &setlist);
1814
1815   add_setshow_enum_cmd ("print-stack", no_class, python_excp_enums,
1816                         &gdbpy_should_print_stack, _("\
1817 Set mode for Python stack dump on error."), _("\
1818 Show the mode of Python stack printing on error."), _("\
1819 none  == no stack or message will be printed.\n\
1820 full == a message and a stack will be printed.\n\
1821 message == an error message without a stack will be printed."),
1822                         NULL, NULL,
1823                         &user_set_python_list,
1824                         &user_show_python_list);
1825
1826 #ifdef HAVE_PYTHON
1827   if (!do_start_initialization () && PyErr_Occurred ())
1828     gdbpy_print_stack ();
1829 #endif /* HAVE_PYTHON */
1830 }
1831
1832 #ifdef HAVE_PYTHON
1833
1834 /* Helper function for gdbpy_finish_initialization.  This does the
1835    work and then returns false if an error has occurred and must be
1836    displayed, or true on success.  */
1837
1838 static bool
1839 do_finish_initialization (const struct extension_language_defn *extlang)
1840 {
1841   PyObject *m;
1842   PyObject *sys_path;
1843
1844   /* Add the initial data-directory to sys.path.  */
1845
1846   std::string gdb_pythondir = (std::string (gdb_datadir) + SLASH_STRING
1847                                + "python");
1848
1849   sys_path = PySys_GetObject ("path");
1850
1851   /* If sys.path is not defined yet, define it first.  */
1852   if (!(sys_path && PyList_Check (sys_path)))
1853     {
1854 #ifdef IS_PY3K
1855       PySys_SetPath (L"");
1856 #else
1857       PySys_SetPath ("");
1858 #endif
1859       sys_path = PySys_GetObject ("path");
1860     }
1861   if (sys_path && PyList_Check (sys_path))
1862     {
1863       gdbpy_ref<> pythondir (PyString_FromString (gdb_pythondir.c_str ()));
1864       if (pythondir == NULL || PyList_Insert (sys_path, 0, pythondir.get ()))
1865         return false;
1866     }
1867   else
1868     return false;
1869
1870   /* Import the gdb module to finish the initialization, and
1871      add it to __main__ for convenience.  */
1872   m = PyImport_AddModule ("__main__");
1873   if (m == NULL)
1874     return false;
1875
1876   /* Keep the reference to gdb_python_module since it is in a global
1877      variable.  */
1878   gdb_python_module = PyImport_ImportModule ("gdb");
1879   if (gdb_python_module == NULL)
1880     {
1881       gdbpy_print_stack ();
1882       /* This is passed in one call to warning so that blank lines aren't
1883          inserted between each line of text.  */
1884       warning (_("\n"
1885                  "Could not load the Python gdb module from `%s'.\n"
1886                  "Limited Python support is available from the _gdb module.\n"
1887                  "Suggest passing --data-directory=/path/to/gdb/data-directory.\n"),
1888                gdb_pythondir.c_str ());
1889       /* We return "success" here as we've already emitted the
1890          warning.  */
1891       return true;
1892     }
1893
1894   return gdb_pymodule_addobject (m, "gdb", gdb_python_module) >= 0;
1895 }
1896
1897 /* Perform the remaining python initializations.
1898    These must be done after GDB is at least mostly initialized.
1899    E.g., The "info pretty-printer" command needs the "info" prefix
1900    command installed.
1901    This is the extension_language_ops.finish_initialization "method".  */
1902
1903 static void
1904 gdbpy_finish_initialization (const struct extension_language_defn *extlang)
1905 {
1906   gdbpy_enter enter_py (get_current_arch (), current_language);
1907
1908   if (!do_finish_initialization (extlang))
1909     {
1910       gdbpy_print_stack ();
1911       warning (_("internal error: Unhandled Python exception"));
1912     }
1913 }
1914
1915 /* Return non-zero if Python has successfully initialized.
1916    This is the extension_languages_ops.initialized "method".  */
1917
1918 static int
1919 gdbpy_initialized (const struct extension_language_defn *extlang)
1920 {
1921   return gdb_python_initialized;
1922 }
1923
1924 #endif /* HAVE_PYTHON */
1925
1926 \f
1927
1928 #ifdef HAVE_PYTHON
1929
1930 PyMethodDef python_GdbMethods[] =
1931 {
1932   { "history", gdbpy_history, METH_VARARGS,
1933     "Get a value from history" },
1934   { "execute", (PyCFunction) execute_gdb_command, METH_VARARGS | METH_KEYWORDS,
1935     "execute (command [, from_tty] [, to_string]) -> [String]\n\
1936 Evaluate command, a string, as a gdb CLI command.  Optionally returns\n\
1937 a Python String containing the output of the command if to_string is\n\
1938 set to True." },
1939   { "parameter", gdbpy_parameter, METH_VARARGS,
1940     "Return a gdb parameter's value" },
1941
1942   { "breakpoints", gdbpy_breakpoints, METH_NOARGS,
1943     "Return a tuple of all breakpoint objects" },
1944
1945   { "default_visualizer", gdbpy_default_visualizer, METH_VARARGS,
1946     "Find the default visualizer for a Value." },
1947
1948   { "progspaces", gdbpy_progspaces, METH_NOARGS,
1949     "Return a sequence of all progspaces." },
1950
1951   { "current_objfile", gdbpy_get_current_objfile, METH_NOARGS,
1952     "Return the current Objfile being loaded, or None." },
1953
1954   { "newest_frame", gdbpy_newest_frame, METH_NOARGS,
1955     "newest_frame () -> gdb.Frame.\n\
1956 Return the newest frame object." },
1957   { "selected_frame", gdbpy_selected_frame, METH_NOARGS,
1958     "selected_frame () -> gdb.Frame.\n\
1959 Return the selected frame object." },
1960   { "frame_stop_reason_string", gdbpy_frame_stop_reason_string, METH_VARARGS,
1961     "stop_reason_string (Integer) -> String.\n\
1962 Return a string explaining unwind stop reason." },
1963
1964   { "start_recording", gdbpy_start_recording, METH_VARARGS,
1965     "start_recording ([method] [, format]) -> gdb.Record.\n\
1966 Start recording with the given method.  If no method is given, will fall back\n\
1967 to the system default method.  If no format is given, will fall back to the\n\
1968 default format for the given method."},
1969   { "current_recording", gdbpy_current_recording, METH_NOARGS,
1970     "current_recording () -> gdb.Record.\n\
1971 Return current recording object." },
1972   { "stop_recording", gdbpy_stop_recording, METH_NOARGS,
1973     "stop_recording () -> None.\n\
1974 Stop current recording." },
1975
1976   { "lookup_type", (PyCFunction) gdbpy_lookup_type,
1977     METH_VARARGS | METH_KEYWORDS,
1978     "lookup_type (name [, block]) -> type\n\
1979 Return a Type corresponding to the given name." },
1980   { "lookup_symbol", (PyCFunction) gdbpy_lookup_symbol,
1981     METH_VARARGS | METH_KEYWORDS,
1982     "lookup_symbol (name [, block] [, domain]) -> (symbol, is_field_of_this)\n\
1983 Return a tuple with the symbol corresponding to the given name (or None) and\n\
1984 a boolean indicating if name is a field of the current implied argument\n\
1985 `this' (when the current language is object-oriented)." },
1986   { "lookup_global_symbol", (PyCFunction) gdbpy_lookup_global_symbol,
1987     METH_VARARGS | METH_KEYWORDS,
1988     "lookup_global_symbol (name [, domain]) -> symbol\n\
1989 Return the symbol corresponding to the given name (or None)." },
1990
1991   { "lookup_objfile", (PyCFunction) gdbpy_lookup_objfile,
1992     METH_VARARGS | METH_KEYWORDS,
1993     "lookup_objfile (name, [by_build_id]) -> objfile\n\
1994 Look up the specified objfile.\n\
1995 If by_build_id is True, the objfile is looked up by using name\n\
1996 as its build id." },
1997
1998   { "decode_line", gdbpy_decode_line, METH_VARARGS,
1999     "decode_line (String) -> Tuple.  Decode a string argument the way\n\
2000 that 'break' or 'edit' does.  Return a tuple containing two elements.\n\
2001 The first element contains any unparsed portion of the String parameter\n\
2002 (or None if the string was fully parsed).  The second element contains\n\
2003 a tuple that contains all the locations that match, represented as\n\
2004 gdb.Symtab_and_line objects (or None)."},
2005   { "parse_and_eval", gdbpy_parse_and_eval, METH_VARARGS,
2006     "parse_and_eval (String) -> Value.\n\
2007 Parse String as an expression, evaluate it, and return the result as a Value."
2008   },
2009
2010   { "post_event", gdbpy_post_event, METH_VARARGS,
2011     "Post an event into gdb's event loop." },
2012
2013   { "target_charset", gdbpy_target_charset, METH_NOARGS,
2014     "target_charset () -> string.\n\
2015 Return the name of the current target charset." },
2016   { "target_wide_charset", gdbpy_target_wide_charset, METH_NOARGS,
2017     "target_wide_charset () -> string.\n\
2018 Return the name of the current target wide charset." },
2019   { "rbreak", (PyCFunction) gdbpy_rbreak, METH_VARARGS | METH_KEYWORDS,
2020     "rbreak (Regex) -> List.\n\
2021 Return a Tuple containing gdb.Breakpoint objects that match the given Regex." },
2022   { "string_to_argv", gdbpy_string_to_argv, METH_VARARGS,
2023     "string_to_argv (String) -> Array.\n\
2024 Parse String and return an argv-like array.\n\
2025 Arguments are separate by spaces and may be quoted."
2026   },
2027   { "write", (PyCFunction)gdbpy_write, METH_VARARGS | METH_KEYWORDS,
2028     "Write a string using gdb's filtered stream." },
2029   { "flush", (PyCFunction)gdbpy_flush, METH_VARARGS | METH_KEYWORDS,
2030     "Flush gdb's filtered stdout stream." },
2031   { "selected_thread", gdbpy_selected_thread, METH_NOARGS,
2032     "selected_thread () -> gdb.InferiorThread.\n\
2033 Return the selected thread object." },
2034   { "selected_inferior", gdbpy_selected_inferior, METH_NOARGS,
2035     "selected_inferior () -> gdb.Inferior.\n\
2036 Return the selected inferior object." },
2037   { "inferiors", gdbpy_inferiors, METH_NOARGS,
2038     "inferiors () -> (gdb.Inferior, ...).\n\
2039 Return a tuple containing all inferiors." },
2040
2041   { "invalidate_cached_frames", gdbpy_invalidate_cached_frames, METH_NOARGS,
2042     "invalidate_cached_frames () -> None.\n\
2043 Invalidate any cached frame objects in gdb.\n\
2044 Intended for internal use only." },
2045
2046   { "convenience_variable", gdbpy_convenience_variable, METH_VARARGS,
2047     "convenience_variable (NAME) -> value.\n\
2048 Return the value of the convenience variable $NAME,\n\
2049 or None if not set." },
2050   { "set_convenience_variable", gdbpy_set_convenience_variable, METH_VARARGS,
2051     "convenience_variable (NAME, VALUE) -> None.\n\
2052 Set the value of the convenience variable $NAME." },
2053
2054   {NULL, NULL, 0, NULL}
2055 };
2056
2057 #ifdef IS_PY3K
2058 struct PyModuleDef python_GdbModuleDef =
2059 {
2060   PyModuleDef_HEAD_INIT,
2061   "_gdb",
2062   NULL,
2063   -1,
2064   python_GdbMethods,
2065   NULL,
2066   NULL,
2067   NULL,
2068   NULL
2069 };
2070 #endif
2071
2072 /* Define all the event objects.  */
2073 #define GDB_PY_DEFINE_EVENT_TYPE(name, py_name, doc, base) \
2074   PyTypeObject name##_event_object_type             \
2075         CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("event_object") \
2076     = { \
2077       PyVarObject_HEAD_INIT (NULL, 0)                           \
2078       "gdb." py_name,                             /* tp_name */ \
2079       sizeof (event_object),                      /* tp_basicsize */ \
2080       0,                                          /* tp_itemsize */ \
2081       evpy_dealloc,                               /* tp_dealloc */ \
2082       0,                                          /* tp_print */ \
2083       0,                                          /* tp_getattr */ \
2084       0,                                          /* tp_setattr */ \
2085       0,                                          /* tp_compare */ \
2086       0,                                          /* tp_repr */ \
2087       0,                                          /* tp_as_number */ \
2088       0,                                          /* tp_as_sequence */ \
2089       0,                                          /* tp_as_mapping */ \
2090       0,                                          /* tp_hash  */ \
2091       0,                                          /* tp_call */ \
2092       0,                                          /* tp_str */ \
2093       0,                                          /* tp_getattro */ \
2094       0,                                          /* tp_setattro */ \
2095       0,                                          /* tp_as_buffer */ \
2096       Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,   /* tp_flags */ \
2097       doc,                                        /* tp_doc */ \
2098       0,                                          /* tp_traverse */ \
2099       0,                                          /* tp_clear */ \
2100       0,                                          /* tp_richcompare */ \
2101       0,                                          /* tp_weaklistoffset */ \
2102       0,                                          /* tp_iter */ \
2103       0,                                          /* tp_iternext */ \
2104       0,                                          /* tp_methods */ \
2105       0,                                          /* tp_members */ \
2106       0,                                          /* tp_getset */ \
2107       &base,                                      /* tp_base */ \
2108       0,                                          /* tp_dict */ \
2109       0,                                          /* tp_descr_get */ \
2110       0,                                          /* tp_descr_set */ \
2111       0,                                          /* tp_dictoffset */ \
2112       0,                                          /* tp_init */ \
2113       0                                           /* tp_alloc */ \
2114     };
2115 #include "py-event-types.def"
2116 #undef GDB_PY_DEFINE_EVENT_TYPE
2117
2118 #endif /* HAVE_PYTHON */
This page took 0.213301 seconds and 4 git commands to generate.