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