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