]> Git Repo - binutils.git/blob - gdb/python/python.c
Change thread_to_thread_object to return a new reference
[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     gdbpy_ref<> item = pspace_to_pspace_object (ps);
1297
1298     if (item == NULL || PyList_Append (list.get (), item.get ()) == -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   if (! gdbpy_current_objfile)
1363     Py_RETURN_NONE;
1364
1365   return objfile_to_objfile_object (gdbpy_current_objfile).release ();
1366 }
1367
1368 /* Compute the list of active python type printers and store them in
1369    EXT_PRINTERS->py_type_printers.  The product of this function is used by
1370    gdbpy_apply_type_printers, and freed by gdbpy_free_type_printers.
1371    This is the extension_language_ops.start_type_printers "method".  */
1372
1373 static void
1374 gdbpy_start_type_printers (const struct extension_language_defn *extlang,
1375                            struct ext_lang_type_printers *ext_printers)
1376 {
1377   PyObject *printers_obj = NULL;
1378
1379   if (!gdb_python_initialized)
1380     return;
1381
1382   gdbpy_enter enter_py (get_current_arch (), current_language);
1383
1384   gdbpy_ref<> type_module (PyImport_ImportModule ("gdb.types"));
1385   if (type_module == NULL)
1386     {
1387       gdbpy_print_stack ();
1388       return;
1389     }
1390
1391   gdbpy_ref<> func (PyObject_GetAttrString (type_module.get (),
1392                                             "get_type_recognizers"));
1393   if (func == NULL)
1394     {
1395       gdbpy_print_stack ();
1396       return;
1397     }
1398
1399   printers_obj = PyObject_CallFunctionObjArgs (func.get (), (char *) NULL);
1400   if (printers_obj == NULL)
1401     gdbpy_print_stack ();
1402   else
1403     ext_printers->py_type_printers = printers_obj;
1404 }
1405
1406 /* If TYPE is recognized by some type printer, store in *PRETTIED_TYPE
1407    a newly allocated string holding the type's replacement name, and return
1408    EXT_LANG_RC_OK.  The caller is responsible for freeing the string.
1409    If there's a Python error return EXT_LANG_RC_ERROR.
1410    Otherwise, return EXT_LANG_RC_NOP.
1411    This is the extension_language_ops.apply_type_printers "method".  */
1412
1413 static enum ext_lang_rc
1414 gdbpy_apply_type_printers (const struct extension_language_defn *extlang,
1415                            const struct ext_lang_type_printers *ext_printers,
1416                            struct type *type, char **prettied_type)
1417 {
1418   PyObject *printers_obj = (PyObject *) ext_printers->py_type_printers;
1419   gdb::unique_xmalloc_ptr<char> result;
1420
1421   if (printers_obj == NULL)
1422     return EXT_LANG_RC_NOP;
1423
1424   if (!gdb_python_initialized)
1425     return EXT_LANG_RC_NOP;
1426
1427   gdbpy_enter enter_py (get_current_arch (), current_language);
1428
1429   gdbpy_ref<> type_obj (type_to_type_object (type));
1430   if (type_obj == NULL)
1431     {
1432       gdbpy_print_stack ();
1433       return EXT_LANG_RC_ERROR;
1434     }
1435
1436   gdbpy_ref<> type_module (PyImport_ImportModule ("gdb.types"));
1437   if (type_module == NULL)
1438     {
1439       gdbpy_print_stack ();
1440       return EXT_LANG_RC_ERROR;
1441     }
1442
1443   gdbpy_ref<> func (PyObject_GetAttrString (type_module.get (),
1444                                             "apply_type_recognizers"));
1445   if (func == NULL)
1446     {
1447       gdbpy_print_stack ();
1448       return EXT_LANG_RC_ERROR;
1449     }
1450
1451   gdbpy_ref<> result_obj (PyObject_CallFunctionObjArgs (func.get (),
1452                                                         printers_obj,
1453                                                         type_obj.get (),
1454                                                         (char *) NULL));
1455   if (result_obj == NULL)
1456     {
1457       gdbpy_print_stack ();
1458       return EXT_LANG_RC_ERROR;
1459     }
1460
1461   if (result_obj == Py_None)
1462     return EXT_LANG_RC_NOP;
1463
1464   result = python_string_to_host_string (result_obj.get ());
1465   if (result == NULL)
1466     {
1467       gdbpy_print_stack ();
1468       return EXT_LANG_RC_ERROR;
1469     }
1470
1471   *prettied_type = result.release ();
1472   return EXT_LANG_RC_OK;
1473 }
1474
1475 /* Free the result of start_type_printers.
1476    This is the extension_language_ops.free_type_printers "method".  */
1477
1478 static void
1479 gdbpy_free_type_printers (const struct extension_language_defn *extlang,
1480                           struct ext_lang_type_printers *ext_printers)
1481 {
1482   PyObject *printers = (PyObject *) ext_printers->py_type_printers;
1483
1484   if (printers == NULL)
1485     return;
1486
1487   if (!gdb_python_initialized)
1488     return;
1489
1490   gdbpy_enter enter_py (get_current_arch (), current_language);
1491   Py_DECREF (printers);
1492 }
1493
1494 #else /* HAVE_PYTHON */
1495
1496 /* Dummy implementation of the gdb "python-interactive" and "python"
1497    command. */
1498
1499 static void
1500 python_interactive_command (const char *arg, int from_tty)
1501 {
1502   arg = skip_spaces (arg);
1503   if (arg && *arg)
1504     error (_("Python scripting is not supported in this copy of GDB."));
1505   else
1506     {
1507       counted_command_line l = get_command_line (python_control, "");
1508
1509       execute_control_command_untraced (l.get ());
1510     }
1511 }
1512
1513 static void
1514 python_command (const char *arg, int from_tty)
1515 {
1516   python_interactive_command (arg, from_tty);
1517 }
1518
1519 #endif /* HAVE_PYTHON */
1520
1521 \f
1522
1523 /* Lists for 'set python' commands.  */
1524
1525 static struct cmd_list_element *user_set_python_list;
1526 static struct cmd_list_element *user_show_python_list;
1527
1528 /* Function for use by 'set python' prefix command.  */
1529
1530 static void
1531 user_set_python (const char *args, int from_tty)
1532 {
1533   help_list (user_set_python_list, "set python ", all_commands,
1534              gdb_stdout);
1535 }
1536
1537 /* Function for use by 'show python' prefix command.  */
1538
1539 static void
1540 user_show_python (const char *args, int from_tty)
1541 {
1542   cmd_show_list (user_show_python_list, from_tty, "");
1543 }
1544
1545 /* Initialize the Python code.  */
1546
1547 #ifdef HAVE_PYTHON
1548
1549 /* This is installed as a final cleanup and cleans up the
1550    interpreter.  This lets Python's 'atexit' work.  */
1551
1552 static void
1553 finalize_python (void *ignore)
1554 {
1555   struct active_ext_lang_state *previous_active;
1556
1557   /* We don't use ensure_python_env here because if we ever ran the
1558      cleanup, gdb would crash -- because the cleanup calls into the
1559      Python interpreter, which we are about to destroy.  It seems
1560      clearer to make the needed calls explicitly here than to create a
1561      cleanup and then mysteriously discard it.  */
1562
1563   /* This is only called as a final cleanup so we can assume the active
1564      SIGINT handler is gdb's.  We still need to tell it to notify Python.  */
1565   previous_active = set_active_ext_lang (&extension_language_python);
1566
1567   (void) PyGILState_Ensure ();
1568   python_gdbarch = target_gdbarch ();
1569   python_language = current_language;
1570
1571   Py_Finalize ();
1572
1573   restore_active_ext_lang (previous_active);
1574 }
1575
1576 #ifdef IS_PY3K
1577 /* This is called via the PyImport_AppendInittab mechanism called
1578    during initialization, to make the built-in _gdb module known to
1579    Python.  */
1580 PyMODINIT_FUNC
1581 init__gdb_module (void)
1582 {
1583   return PyModule_Create (&python_GdbModuleDef);
1584 }
1585 #endif
1586
1587 static bool
1588 do_start_initialization ()
1589 {
1590 #ifdef IS_PY3K
1591   size_t progsize, count;
1592   wchar_t *progname_copy;
1593 #endif
1594
1595 #ifdef WITH_PYTHON_PATH
1596   /* Work around problem where python gets confused about where it is,
1597      and then can't find its libraries, etc.
1598      NOTE: Python assumes the following layout:
1599      /foo/bin/python
1600      /foo/lib/pythonX.Y/...
1601      This must be done before calling Py_Initialize.  */
1602   gdb::unique_xmalloc_ptr<char> progname
1603     (concat (ldirname (python_libdir).c_str (), SLASH_STRING, "bin",
1604               SLASH_STRING, "python", (char *) NULL));
1605 #ifdef IS_PY3K
1606   std::string oldloc = setlocale (LC_ALL, NULL);
1607   setlocale (LC_ALL, "");
1608   progsize = strlen (progname.get ());
1609   progname_copy = (wchar_t *) PyMem_Malloc ((progsize + 1) * sizeof (wchar_t));
1610   if (!progname_copy)
1611     {
1612       fprintf (stderr, "out of memory\n");
1613       return false;
1614     }
1615   count = mbstowcs (progname_copy, progname.get (), progsize + 1);
1616   if (count == (size_t) -1)
1617     {
1618       fprintf (stderr, "Could not convert python path to string\n");
1619       return false;
1620     }
1621   setlocale (LC_ALL, oldloc.c_str ());
1622
1623   /* Note that Py_SetProgramName expects the string it is passed to
1624      remain alive for the duration of the program's execution, so
1625      it is not freed after this call.  */
1626   Py_SetProgramName (progname_copy);
1627
1628   /* Define _gdb as a built-in module.  */
1629   PyImport_AppendInittab ("_gdb", init__gdb_module);
1630 #else
1631   Py_SetProgramName (progname.release ());
1632 #endif
1633 #endif
1634
1635   Py_Initialize ();
1636   PyEval_InitThreads ();
1637
1638 #ifdef IS_PY3K
1639   gdb_module = PyImport_ImportModule ("_gdb");
1640 #else
1641   gdb_module = Py_InitModule ("_gdb", python_GdbMethods);
1642 #endif
1643   if (gdb_module == NULL)
1644     return false;
1645
1646   /* The casts to (char*) are for python 2.4.  */
1647   if (PyModule_AddStringConstant (gdb_module, "VERSION", (char*) version) < 0
1648       || PyModule_AddStringConstant (gdb_module, "HOST_CONFIG",
1649                                      (char*) host_name) < 0
1650       || PyModule_AddStringConstant (gdb_module, "TARGET_CONFIG",
1651                                      (char*) target_name) < 0)
1652     return false;
1653
1654   /* Add stream constants.  */
1655   if (PyModule_AddIntConstant (gdb_module, "STDOUT", 0) < 0
1656       || PyModule_AddIntConstant (gdb_module, "STDERR", 1) < 0
1657       || PyModule_AddIntConstant (gdb_module, "STDLOG", 2) < 0)
1658     return false;
1659
1660   gdbpy_gdb_error = PyErr_NewException ("gdb.error", PyExc_RuntimeError, NULL);
1661   if (gdbpy_gdb_error == NULL
1662       || gdb_pymodule_addobject (gdb_module, "error", gdbpy_gdb_error) < 0)
1663     return false;
1664
1665   gdbpy_gdb_memory_error = PyErr_NewException ("gdb.MemoryError",
1666                                                gdbpy_gdb_error, NULL);
1667   if (gdbpy_gdb_memory_error == NULL
1668       || gdb_pymodule_addobject (gdb_module, "MemoryError",
1669                                  gdbpy_gdb_memory_error) < 0)
1670     return false;
1671
1672   gdbpy_gdberror_exc = PyErr_NewException ("gdb.GdbError", NULL, NULL);
1673   if (gdbpy_gdberror_exc == NULL
1674       || gdb_pymodule_addobject (gdb_module, "GdbError",
1675                                  gdbpy_gdberror_exc) < 0)
1676     return false;
1677
1678   gdbpy_initialize_gdb_readline ();
1679
1680   if (gdbpy_initialize_auto_load () < 0
1681       || gdbpy_initialize_values () < 0
1682       || gdbpy_initialize_frames () < 0
1683       || gdbpy_initialize_commands () < 0
1684       || gdbpy_initialize_instruction () < 0
1685       || gdbpy_initialize_record () < 0
1686       || gdbpy_initialize_btrace () < 0
1687       || gdbpy_initialize_symbols () < 0
1688       || gdbpy_initialize_symtabs () < 0
1689       || gdbpy_initialize_blocks () < 0
1690       || gdbpy_initialize_functions () < 0
1691       || gdbpy_initialize_parameters () < 0
1692       || gdbpy_initialize_types () < 0
1693       || gdbpy_initialize_pspace () < 0
1694       || gdbpy_initialize_objfile () < 0
1695       || gdbpy_initialize_breakpoints () < 0
1696       || gdbpy_initialize_finishbreakpoints () < 0
1697       || gdbpy_initialize_lazy_string () < 0
1698       || gdbpy_initialize_linetable () < 0
1699       || gdbpy_initialize_thread () < 0
1700       || gdbpy_initialize_inferior () < 0
1701       || gdbpy_initialize_events () < 0
1702       || gdbpy_initialize_eventregistry () < 0
1703       || gdbpy_initialize_py_events () < 0
1704       || gdbpy_initialize_event () < 0
1705       || gdbpy_initialize_arch () < 0
1706       || gdbpy_initialize_xmethods () < 0
1707       || gdbpy_initialize_unwind () < 0)
1708     return false;
1709
1710 #define GDB_PY_DEFINE_EVENT_TYPE(name, py_name, doc, base)      \
1711   if (gdbpy_initialize_event_generic (&name##_event_object_type, py_name) < 0) \
1712     return false;
1713 #include "py-event-types.def"
1714 #undef GDB_PY_DEFINE_EVENT_TYPE
1715
1716   gdbpy_to_string_cst = PyString_FromString ("to_string");
1717   if (gdbpy_to_string_cst == NULL)
1718     return false;
1719   gdbpy_children_cst = PyString_FromString ("children");
1720   if (gdbpy_children_cst == NULL)
1721     return false;
1722   gdbpy_display_hint_cst = PyString_FromString ("display_hint");
1723   if (gdbpy_display_hint_cst == NULL)
1724     return false;
1725   gdbpy_doc_cst = PyString_FromString ("__doc__");
1726   if (gdbpy_doc_cst == NULL)
1727     return false;
1728   gdbpy_enabled_cst = PyString_FromString ("enabled");
1729   if (gdbpy_enabled_cst == NULL)
1730     return false;
1731   gdbpy_value_cst = PyString_FromString ("value");
1732   if (gdbpy_value_cst == NULL)
1733     return false;
1734
1735   /* Release the GIL while gdb runs.  */
1736   PyThreadState_Swap (NULL);
1737   PyEval_ReleaseLock ();
1738
1739   make_final_cleanup (finalize_python, NULL);
1740
1741   /* Only set this when initialization has succeeded.  */
1742   gdb_python_initialized = 1;
1743   return true;
1744 }
1745
1746 #endif /* HAVE_PYTHON */
1747
1748 void
1749 _initialize_python (void)
1750 {
1751   add_com ("python-interactive", class_obscure,
1752            python_interactive_command,
1753 #ifdef HAVE_PYTHON
1754            _("\
1755 Start an interactive Python prompt.\n\
1756 \n\
1757 To return to GDB, type the EOF character (e.g., Ctrl-D on an empty\n\
1758 prompt).\n\
1759 \n\
1760 Alternatively, a single-line Python command can be given as an\n\
1761 argument, and if the command is an expression, the result will be\n\
1762 printed.  For example:\n\
1763 \n\
1764     (gdb) python-interactive 2 + 3\n\
1765     5\n\
1766 ")
1767 #else /* HAVE_PYTHON */
1768            _("\
1769 Start a Python interactive prompt.\n\
1770 \n\
1771 Python scripting is not supported in this copy of GDB.\n\
1772 This command is only a placeholder.")
1773 #endif /* HAVE_PYTHON */
1774            );
1775   add_com_alias ("pi", "python-interactive", class_obscure, 1);
1776
1777   add_com ("python", class_obscure, python_command,
1778 #ifdef HAVE_PYTHON
1779            _("\
1780 Evaluate a Python command.\n\
1781 \n\
1782 The command can be given as an argument, for instance:\n\
1783 \n\
1784     python print (23)\n\
1785 \n\
1786 If no argument is given, the following lines are read and used\n\
1787 as the Python commands.  Type a line containing \"end\" to indicate\n\
1788 the end of the command.")
1789 #else /* HAVE_PYTHON */
1790            _("\
1791 Evaluate a Python command.\n\
1792 \n\
1793 Python scripting is not supported in this copy of GDB.\n\
1794 This command is only a placeholder.")
1795 #endif /* HAVE_PYTHON */
1796            );
1797   add_com_alias ("py", "python", class_obscure, 1);
1798
1799   /* Add set/show python print-stack.  */
1800   add_prefix_cmd ("python", no_class, user_show_python,
1801                   _("Prefix command for python preference settings."),
1802                   &user_show_python_list, "show python ", 0,
1803                   &showlist);
1804
1805   add_prefix_cmd ("python", no_class, user_set_python,
1806                   _("Prefix command for python preference settings."),
1807                   &user_set_python_list, "set python ", 0,
1808                   &setlist);
1809
1810   add_setshow_enum_cmd ("print-stack", no_class, python_excp_enums,
1811                         &gdbpy_should_print_stack, _("\
1812 Set mode for Python stack dump on error."), _("\
1813 Show the mode of Python stack printing on error."), _("\
1814 none  == no stack or message will be printed.\n\
1815 full == a message and a stack will be printed.\n\
1816 message == an error message without a stack will be printed."),
1817                         NULL, NULL,
1818                         &user_set_python_list,
1819                         &user_show_python_list);
1820
1821 #ifdef HAVE_PYTHON
1822   if (!do_start_initialization () && PyErr_Occurred ())
1823     gdbpy_print_stack ();
1824 #endif /* HAVE_PYTHON */
1825 }
1826
1827 #ifdef HAVE_PYTHON
1828
1829 /* Helper function for gdbpy_finish_initialization.  This does the
1830    work and then returns false if an error has occurred and must be
1831    displayed, or true on success.  */
1832
1833 static bool
1834 do_finish_initialization (const struct extension_language_defn *extlang)
1835 {
1836   PyObject *m;
1837   PyObject *sys_path;
1838
1839   /* Add the initial data-directory to sys.path.  */
1840
1841   std::string gdb_pythondir = (std::string (gdb_datadir) + SLASH_STRING
1842                                + "python");
1843
1844   sys_path = PySys_GetObject ("path");
1845
1846   /* If sys.path is not defined yet, define it first.  */
1847   if (!(sys_path && PyList_Check (sys_path)))
1848     {
1849 #ifdef IS_PY3K
1850       PySys_SetPath (L"");
1851 #else
1852       PySys_SetPath ("");
1853 #endif
1854       sys_path = PySys_GetObject ("path");
1855     }
1856   if (sys_path && PyList_Check (sys_path))
1857     {
1858       gdbpy_ref<> pythondir (PyString_FromString (gdb_pythondir.c_str ()));
1859       if (pythondir == NULL || PyList_Insert (sys_path, 0, pythondir.get ()))
1860         return false;
1861     }
1862   else
1863     return false;
1864
1865   /* Import the gdb module to finish the initialization, and
1866      add it to __main__ for convenience.  */
1867   m = PyImport_AddModule ("__main__");
1868   if (m == NULL)
1869     return false;
1870
1871   /* Keep the reference to gdb_python_module since it is in a global
1872      variable.  */
1873   gdb_python_module = PyImport_ImportModule ("gdb");
1874   if (gdb_python_module == NULL)
1875     {
1876       gdbpy_print_stack ();
1877       /* This is passed in one call to warning so that blank lines aren't
1878          inserted between each line of text.  */
1879       warning (_("\n"
1880                  "Could not load the Python gdb module from `%s'.\n"
1881                  "Limited Python support is available from the _gdb module.\n"
1882                  "Suggest passing --data-directory=/path/to/gdb/data-directory.\n"),
1883                gdb_pythondir.c_str ());
1884       /* We return "success" here as we've already emitted the
1885          warning.  */
1886       return true;
1887     }
1888
1889   return gdb_pymodule_addobject (m, "gdb", gdb_python_module) >= 0;
1890 }
1891
1892 /* Perform the remaining python initializations.
1893    These must be done after GDB is at least mostly initialized.
1894    E.g., The "info pretty-printer" command needs the "info" prefix
1895    command installed.
1896    This is the extension_language_ops.finish_initialization "method".  */
1897
1898 static void
1899 gdbpy_finish_initialization (const struct extension_language_defn *extlang)
1900 {
1901   gdbpy_enter enter_py (get_current_arch (), current_language);
1902
1903   if (!do_finish_initialization (extlang))
1904     {
1905       gdbpy_print_stack ();
1906       warning (_("internal error: Unhandled Python exception"));
1907     }
1908 }
1909
1910 /* Return non-zero if Python has successfully initialized.
1911    This is the extension_languages_ops.initialized "method".  */
1912
1913 static int
1914 gdbpy_initialized (const struct extension_language_defn *extlang)
1915 {
1916   return gdb_python_initialized;
1917 }
1918
1919 #endif /* HAVE_PYTHON */
1920
1921 \f
1922
1923 #ifdef HAVE_PYTHON
1924
1925 PyMethodDef python_GdbMethods[] =
1926 {
1927   { "history", gdbpy_history, METH_VARARGS,
1928     "Get a value from history" },
1929   { "execute", (PyCFunction) execute_gdb_command, METH_VARARGS | METH_KEYWORDS,
1930     "execute (command [, from_tty] [, to_string]) -> [String]\n\
1931 Evaluate command, a string, as a gdb CLI command.  Optionally returns\n\
1932 a Python String containing the output of the command if to_string is\n\
1933 set to True." },
1934   { "parameter", gdbpy_parameter, METH_VARARGS,
1935     "Return a gdb parameter's value" },
1936
1937   { "breakpoints", gdbpy_breakpoints, METH_NOARGS,
1938     "Return a tuple of all breakpoint objects" },
1939
1940   { "default_visualizer", gdbpy_default_visualizer, METH_VARARGS,
1941     "Find the default visualizer for a Value." },
1942
1943   { "progspaces", gdbpy_progspaces, METH_NOARGS,
1944     "Return a sequence of all progspaces." },
1945
1946   { "current_objfile", gdbpy_get_current_objfile, METH_NOARGS,
1947     "Return the current Objfile being loaded, or None." },
1948
1949   { "newest_frame", gdbpy_newest_frame, METH_NOARGS,
1950     "newest_frame () -> gdb.Frame.\n\
1951 Return the newest frame object." },
1952   { "selected_frame", gdbpy_selected_frame, METH_NOARGS,
1953     "selected_frame () -> gdb.Frame.\n\
1954 Return the selected frame object." },
1955   { "frame_stop_reason_string", gdbpy_frame_stop_reason_string, METH_VARARGS,
1956     "stop_reason_string (Integer) -> String.\n\
1957 Return a string explaining unwind stop reason." },
1958
1959   { "start_recording", gdbpy_start_recording, METH_VARARGS,
1960     "start_recording ([method] [, format]) -> gdb.Record.\n\
1961 Start recording with the given method.  If no method is given, will fall back\n\
1962 to the system default method.  If no format is given, will fall back to the\n\
1963 default format for the given method."},
1964   { "current_recording", gdbpy_current_recording, METH_NOARGS,
1965     "current_recording () -> gdb.Record.\n\
1966 Return current recording object." },
1967   { "stop_recording", gdbpy_stop_recording, METH_NOARGS,
1968     "stop_recording () -> None.\n\
1969 Stop current recording." },
1970
1971   { "lookup_type", (PyCFunction) gdbpy_lookup_type,
1972     METH_VARARGS | METH_KEYWORDS,
1973     "lookup_type (name [, block]) -> type\n\
1974 Return a Type corresponding to the given name." },
1975   { "lookup_symbol", (PyCFunction) gdbpy_lookup_symbol,
1976     METH_VARARGS | METH_KEYWORDS,
1977     "lookup_symbol (name [, block] [, domain]) -> (symbol, is_field_of_this)\n\
1978 Return a tuple with the symbol corresponding to the given name (or None) and\n\
1979 a boolean indicating if name is a field of the current implied argument\n\
1980 `this' (when the current language is object-oriented)." },
1981   { "lookup_global_symbol", (PyCFunction) gdbpy_lookup_global_symbol,
1982     METH_VARARGS | METH_KEYWORDS,
1983     "lookup_global_symbol (name [, domain]) -> symbol\n\
1984 Return the symbol corresponding to the given name (or None)." },
1985
1986   { "lookup_objfile", (PyCFunction) gdbpy_lookup_objfile,
1987     METH_VARARGS | METH_KEYWORDS,
1988     "lookup_objfile (name, [by_build_id]) -> objfile\n\
1989 Look up the specified objfile.\n\
1990 If by_build_id is True, the objfile is looked up by using name\n\
1991 as its build id." },
1992
1993   { "decode_line", gdbpy_decode_line, METH_VARARGS,
1994     "decode_line (String) -> Tuple.  Decode a string argument the way\n\
1995 that 'break' or 'edit' does.  Return a tuple containing two elements.\n\
1996 The first element contains any unparsed portion of the String parameter\n\
1997 (or None if the string was fully parsed).  The second element contains\n\
1998 a tuple that contains all the locations that match, represented as\n\
1999 gdb.Symtab_and_line objects (or None)."},
2000   { "parse_and_eval", gdbpy_parse_and_eval, METH_VARARGS,
2001     "parse_and_eval (String) -> Value.\n\
2002 Parse String as an expression, evaluate it, and return the result as a Value."
2003   },
2004
2005   { "post_event", gdbpy_post_event, METH_VARARGS,
2006     "Post an event into gdb's event loop." },
2007
2008   { "target_charset", gdbpy_target_charset, METH_NOARGS,
2009     "target_charset () -> string.\n\
2010 Return the name of the current target charset." },
2011   { "target_wide_charset", gdbpy_target_wide_charset, METH_NOARGS,
2012     "target_wide_charset () -> string.\n\
2013 Return the name of the current target wide charset." },
2014   { "rbreak", (PyCFunction) gdbpy_rbreak, METH_VARARGS | METH_KEYWORDS,
2015     "rbreak (Regex) -> List.\n\
2016 Return a Tuple containing gdb.Breakpoint objects that match the given Regex." },
2017   { "string_to_argv", gdbpy_string_to_argv, METH_VARARGS,
2018     "string_to_argv (String) -> Array.\n\
2019 Parse String and return an argv-like array.\n\
2020 Arguments are separate by spaces and may be quoted."
2021   },
2022   { "write", (PyCFunction)gdbpy_write, METH_VARARGS | METH_KEYWORDS,
2023     "Write a string using gdb's filtered stream." },
2024   { "flush", (PyCFunction)gdbpy_flush, METH_VARARGS | METH_KEYWORDS,
2025     "Flush gdb's filtered stdout stream." },
2026   { "selected_thread", gdbpy_selected_thread, METH_NOARGS,
2027     "selected_thread () -> gdb.InferiorThread.\n\
2028 Return the selected thread object." },
2029   { "selected_inferior", gdbpy_selected_inferior, METH_NOARGS,
2030     "selected_inferior () -> gdb.Inferior.\n\
2031 Return the selected inferior object." },
2032   { "inferiors", gdbpy_inferiors, METH_NOARGS,
2033     "inferiors () -> (gdb.Inferior, ...).\n\
2034 Return a tuple containing all inferiors." },
2035
2036   { "invalidate_cached_frames", gdbpy_invalidate_cached_frames, METH_NOARGS,
2037     "invalidate_cached_frames () -> None.\n\
2038 Invalidate any cached frame objects in gdb.\n\
2039 Intended for internal use only." },
2040
2041   { "convenience_variable", gdbpy_convenience_variable, METH_VARARGS,
2042     "convenience_variable (NAME) -> value.\n\
2043 Return the value of the convenience variable $NAME,\n\
2044 or None if not set." },
2045   { "set_convenience_variable", gdbpy_set_convenience_variable, METH_VARARGS,
2046     "convenience_variable (NAME, VALUE) -> None.\n\
2047 Set the value of the convenience variable $NAME." },
2048
2049   {NULL, NULL, 0, NULL}
2050 };
2051
2052 #ifdef IS_PY3K
2053 struct PyModuleDef python_GdbModuleDef =
2054 {
2055   PyModuleDef_HEAD_INIT,
2056   "_gdb",
2057   NULL,
2058   -1,
2059   python_GdbMethods,
2060   NULL,
2061   NULL,
2062   NULL,
2063   NULL
2064 };
2065 #endif
2066
2067 /* Define all the event objects.  */
2068 #define GDB_PY_DEFINE_EVENT_TYPE(name, py_name, doc, base) \
2069   PyTypeObject name##_event_object_type             \
2070         CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("event_object") \
2071     = { \
2072       PyVarObject_HEAD_INIT (NULL, 0)                           \
2073       "gdb." py_name,                             /* tp_name */ \
2074       sizeof (event_object),                      /* tp_basicsize */ \
2075       0,                                          /* tp_itemsize */ \
2076       evpy_dealloc,                               /* tp_dealloc */ \
2077       0,                                          /* tp_print */ \
2078       0,                                          /* tp_getattr */ \
2079       0,                                          /* tp_setattr */ \
2080       0,                                          /* tp_compare */ \
2081       0,                                          /* tp_repr */ \
2082       0,                                          /* tp_as_number */ \
2083       0,                                          /* tp_as_sequence */ \
2084       0,                                          /* tp_as_mapping */ \
2085       0,                                          /* tp_hash  */ \
2086       0,                                          /* tp_call */ \
2087       0,                                          /* tp_str */ \
2088       0,                                          /* tp_getattro */ \
2089       0,                                          /* tp_setattro */ \
2090       0,                                          /* tp_as_buffer */ \
2091       Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,   /* tp_flags */ \
2092       doc,                                        /* tp_doc */ \
2093       0,                                          /* tp_traverse */ \
2094       0,                                          /* tp_clear */ \
2095       0,                                          /* tp_richcompare */ \
2096       0,                                          /* tp_weaklistoffset */ \
2097       0,                                          /* tp_iter */ \
2098       0,                                          /* tp_iternext */ \
2099       0,                                          /* tp_methods */ \
2100       0,                                          /* tp_members */ \
2101       0,                                          /* tp_getset */ \
2102       &base,                                      /* tp_base */ \
2103       0,                                          /* tp_dict */ \
2104       0,                                          /* tp_descr_get */ \
2105       0,                                          /* tp_descr_set */ \
2106       0,                                          /* tp_dictoffset */ \
2107       0,                                          /* tp_init */ \
2108       0                                           /* tp_alloc */ \
2109     };
2110 #include "py-event-types.def"
2111 #undef GDB_PY_DEFINE_EVENT_TYPE
2112
2113 #endif /* HAVE_PYTHON */
This page took 0.14597 seconds and 4 git commands to generate.