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