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