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