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