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