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