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