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