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