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