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