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