Don't define _FORTIFY_SOURCE on MinGW
[deliverable/binutils-gdb.git] / gdb / python / python.c
1 /* General python/gdb code
2
3 Copyright (C) 2008-2020 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 char *regex = NULL;
648 std::vector<symbol_search> symbols;
649 unsigned long count = 0;
650 PyObject *symtab_list = NULL;
651 PyObject *minsyms_p_obj = NULL;
652 int minsyms_p = 0;
653 unsigned int throttle = 0;
654 static const char *keywords[] = {"regex","minsyms", "throttle",
655 "symtabs", NULL};
656
657 if (!gdb_PyArg_ParseTupleAndKeywords (args, kw, "s|O!IO", keywords,
658 &regex, &PyBool_Type,
659 &minsyms_p_obj, &throttle,
660 &symtab_list))
661 return NULL;
662
663 /* Parse minsyms keyword. */
664 if (minsyms_p_obj != NULL)
665 {
666 int cmp = PyObject_IsTrue (minsyms_p_obj);
667 if (cmp < 0)
668 return NULL;
669 minsyms_p = cmp;
670 }
671
672 global_symbol_searcher spec (FUNCTIONS_DOMAIN, regex);
673 SCOPE_EXIT {
674 for (const char *elem : spec.filenames)
675 xfree ((void *) elem);
676 };
677
678 /* The "symtabs" keyword is any Python iterable object that returns
679 a gdb.Symtab on each iteration. If specified, iterate through
680 the provided gdb.Symtabs and extract their full path. As
681 python_string_to_target_string returns a
682 gdb::unique_xmalloc_ptr<char> and a vector containing these types
683 cannot be coerced to a const char **p[] via the vector.data call,
684 release the value from the unique_xmalloc_ptr and place it in a
685 simple type symtab_list_type (which holds the vector and a
686 destructor that frees the contents of the allocated strings. */
687 if (symtab_list != NULL)
688 {
689 gdbpy_ref<> iter (PyObject_GetIter (symtab_list));
690
691 if (iter == NULL)
692 return NULL;
693
694 while (true)
695 {
696 gdbpy_ref<> next (PyIter_Next (iter.get ()));
697
698 if (next == NULL)
699 {
700 if (PyErr_Occurred ())
701 return NULL;
702 break;
703 }
704
705 gdbpy_ref<> obj_name (PyObject_GetAttrString (next.get (),
706 "filename"));
707
708 if (obj_name == NULL)
709 return NULL;
710
711 /* Is the object file still valid? */
712 if (obj_name == Py_None)
713 continue;
714
715 gdb::unique_xmalloc_ptr<char> filename =
716 python_string_to_target_string (obj_name.get ());
717
718 if (filename == NULL)
719 return NULL;
720
721 /* Make sure there is a definite place to store the value of
722 filename before it is released. */
723 spec.filenames.push_back (nullptr);
724 spec.filenames.back () = filename.release ();
725 }
726 }
727
728 /* The search spec. */
729 symbols = spec.search ();
730
731 /* Count the number of symbols (both symbols and optionally minimal
732 symbols) so we can correctly check the throttle limit. */
733 for (const symbol_search &p : symbols)
734 {
735 /* Minimal symbols included? */
736 if (minsyms_p)
737 {
738 if (p.msymbol.minsym != NULL)
739 count++;
740 }
741
742 if (p.symbol != NULL)
743 count++;
744 }
745
746 /* Check throttle bounds and exit if in excess. */
747 if (throttle != 0 && count > throttle)
748 {
749 PyErr_SetString (PyExc_RuntimeError,
750 _("Number of breakpoints exceeds throttled maximum."));
751 return NULL;
752 }
753
754 gdbpy_ref<> return_list (PyList_New (0));
755
756 if (return_list == NULL)
757 return NULL;
758
759 /* Construct full path names for symbols and call the Python
760 breakpoint constructor on the resulting names. Be tolerant of
761 individual breakpoint failures. */
762 for (const symbol_search &p : symbols)
763 {
764 std::string symbol_name;
765
766 /* Skipping minimal symbols? */
767 if (minsyms_p == 0)
768 if (p.msymbol.minsym != NULL)
769 continue;
770
771 if (p.msymbol.minsym == NULL)
772 {
773 struct symtab *symtab = symbol_symtab (p.symbol);
774 const char *fullname = symtab_to_fullname (symtab);
775
776 symbol_name = fullname;
777 symbol_name += ":";
778 symbol_name += p.symbol->linkage_name ();
779 }
780 else
781 symbol_name = p.msymbol.minsym->linkage_name ();
782
783 gdbpy_ref<> argList (Py_BuildValue("(s)", symbol_name.c_str ()));
784 gdbpy_ref<> obj (PyObject_CallObject ((PyObject *)
785 &breakpoint_object_type,
786 argList.get ()));
787
788 /* Tolerate individual breakpoint failures. */
789 if (obj == NULL)
790 gdbpy_print_stack ();
791 else
792 {
793 if (PyList_Append (return_list.get (), obj.get ()) == -1)
794 return NULL;
795 }
796 }
797 return return_list.release ();
798 }
799
800 /* A Python function which is a wrapper for decode_line_1. */
801
802 static PyObject *
803 gdbpy_decode_line (PyObject *self, PyObject *args)
804 {
805 const char *arg = NULL;
806 gdbpy_ref<> result;
807 gdbpy_ref<> unparsed;
808 event_location_up location;
809
810 if (! PyArg_ParseTuple (args, "|s", &arg))
811 return NULL;
812
813 if (arg != NULL)
814 location = string_to_event_location_basic (&arg, python_language,
815 symbol_name_match_type::WILD);
816
817 std::vector<symtab_and_line> decoded_sals;
818 symtab_and_line def_sal;
819 gdb::array_view<symtab_and_line> sals;
820 try
821 {
822 if (location != NULL)
823 {
824 decoded_sals = decode_line_1 (location.get (), 0, NULL, NULL, 0);
825 sals = decoded_sals;
826 }
827 else
828 {
829 set_default_source_symtab_and_line ();
830 def_sal = get_current_source_symtab_and_line ();
831 sals = def_sal;
832 }
833 }
834 catch (const gdb_exception &ex)
835 {
836 /* We know this will always throw. */
837 gdbpy_convert_exception (ex);
838 return NULL;
839 }
840
841 if (!sals.empty ())
842 {
843 result.reset (PyTuple_New (sals.size ()));
844 if (result == NULL)
845 return NULL;
846 for (size_t i = 0; i < sals.size (); ++i)
847 {
848 PyObject *obj = symtab_and_line_to_sal_object (sals[i]);
849 if (obj == NULL)
850 return NULL;
851
852 PyTuple_SetItem (result.get (), i, obj);
853 }
854 }
855 else
856 result = gdbpy_ref<>::new_reference (Py_None);
857
858 gdbpy_ref<> return_result (PyTuple_New (2));
859 if (return_result == NULL)
860 return NULL;
861
862 if (arg != NULL && strlen (arg) > 0)
863 {
864 unparsed.reset (PyString_FromString (arg));
865 if (unparsed == NULL)
866 return NULL;
867 }
868 else
869 unparsed = gdbpy_ref<>::new_reference (Py_None);
870
871 PyTuple_SetItem (return_result.get (), 0, unparsed.release ());
872 PyTuple_SetItem (return_result.get (), 1, result.release ());
873
874 return return_result.release ();
875 }
876
877 /* Parse a string and evaluate it as an expression. */
878 static PyObject *
879 gdbpy_parse_and_eval (PyObject *self, PyObject *args)
880 {
881 const char *expr_str;
882 struct value *result = NULL;
883
884 if (!PyArg_ParseTuple (args, "s", &expr_str))
885 return NULL;
886
887 try
888 {
889 gdbpy_allow_threads allow_threads;
890 result = parse_and_eval (expr_str);
891 }
892 catch (const gdb_exception &except)
893 {
894 GDB_PY_HANDLE_EXCEPTION (except);
895 }
896
897 return value_to_value_object (result);
898 }
899
900 /* Implementation of gdb.invalidate_cached_frames. */
901
902 static PyObject *
903 gdbpy_invalidate_cached_frames (PyObject *self, PyObject *args)
904 {
905 reinit_frame_cache ();
906 Py_RETURN_NONE;
907 }
908
909 /* Read a file as Python code.
910 This is the extension_language_script_ops.script_sourcer "method".
911 FILE is the file to load. FILENAME is name of the file FILE.
912 This does not throw any errors. If an exception occurs python will print
913 the traceback and clear the error indicator. */
914
915 static void
916 gdbpy_source_script (const struct extension_language_defn *extlang,
917 FILE *file, const char *filename)
918 {
919 gdbpy_enter enter_py (get_current_arch (), current_language);
920 python_run_simple_file (file, filename);
921 }
922
923 \f
924
925 /* Posting and handling events. */
926
927 /* A helper class to save and restore the GIL, but without touching
928 the other globals that are handled by gdbpy_enter. */
929
930 class gdbpy_gil
931 {
932 public:
933
934 gdbpy_gil ()
935 : m_state (PyGILState_Ensure ())
936 {
937 }
938
939 ~gdbpy_gil ()
940 {
941 PyGILState_Release (m_state);
942 }
943
944 DISABLE_COPY_AND_ASSIGN (gdbpy_gil);
945
946 private:
947
948 PyGILState_STATE m_state;
949 };
950
951 /* A single event. */
952 struct gdbpy_event
953 {
954 gdbpy_event (gdbpy_ref<> &&func)
955 : m_func (func.release ())
956 {
957 }
958
959 gdbpy_event (gdbpy_event &&other)
960 : m_func (other.m_func)
961 {
962 other.m_func = nullptr;
963 }
964
965 gdbpy_event (const gdbpy_event &other)
966 : m_func (other.m_func)
967 {
968 gdbpy_gil gil;
969 Py_XINCREF (m_func);
970 }
971
972 ~gdbpy_event ()
973 {
974 gdbpy_gil gil;
975 Py_XDECREF (m_func);
976 }
977
978 gdbpy_event &operator= (const gdbpy_event &other) = delete;
979
980 void operator() ()
981 {
982 gdbpy_enter enter_py (get_current_arch (), current_language);
983
984 gdbpy_ref<> call_result (PyObject_CallObject (m_func, NULL));
985 if (call_result == NULL)
986 gdbpy_print_stack ();
987 }
988
989 private:
990
991 /* The Python event. This is just a callable object. Note that
992 this is not a gdbpy_ref<>, because we have to take particular
993 care to only destroy the reference when holding the GIL. */
994 PyObject *m_func;
995 };
996
997 /* Submit an event to the gdb thread. */
998 static PyObject *
999 gdbpy_post_event (PyObject *self, PyObject *args)
1000 {
1001 PyObject *func;
1002
1003 if (!PyArg_ParseTuple (args, "O", &func))
1004 return NULL;
1005
1006 if (!PyCallable_Check (func))
1007 {
1008 PyErr_SetString (PyExc_RuntimeError,
1009 _("Posted event is not callable"));
1010 return NULL;
1011 }
1012
1013 gdbpy_ref<> func_ref = gdbpy_ref<>::new_reference (func);
1014 gdbpy_event event (std::move (func_ref));
1015 run_on_main_thread (event);
1016
1017 Py_RETURN_NONE;
1018 }
1019
1020 \f
1021
1022 /* This is the extension_language_ops.before_prompt "method". */
1023
1024 static enum ext_lang_rc
1025 gdbpy_before_prompt_hook (const struct extension_language_defn *extlang,
1026 const char *current_gdb_prompt)
1027 {
1028 if (!gdb_python_initialized)
1029 return EXT_LANG_RC_NOP;
1030
1031 gdbpy_enter enter_py (get_current_arch (), current_language);
1032
1033 if (!evregpy_no_listeners_p (gdb_py_events.before_prompt)
1034 && evpy_emit_event (NULL, gdb_py_events.before_prompt) < 0)
1035 return EXT_LANG_RC_ERROR;
1036
1037 if (gdb_python_module
1038 && PyObject_HasAttrString (gdb_python_module, "prompt_hook"))
1039 {
1040 gdbpy_ref<> hook (PyObject_GetAttrString (gdb_python_module,
1041 "prompt_hook"));
1042 if (hook == NULL)
1043 {
1044 gdbpy_print_stack ();
1045 return EXT_LANG_RC_ERROR;
1046 }
1047
1048 if (PyCallable_Check (hook.get ()))
1049 {
1050 gdbpy_ref<> current_prompt (PyString_FromString (current_gdb_prompt));
1051 if (current_prompt == NULL)
1052 {
1053 gdbpy_print_stack ();
1054 return EXT_LANG_RC_ERROR;
1055 }
1056
1057 gdbpy_ref<> result
1058 (PyObject_CallFunctionObjArgs (hook.get (), current_prompt.get (),
1059 NULL));
1060 if (result == NULL)
1061 {
1062 gdbpy_print_stack ();
1063 return EXT_LANG_RC_ERROR;
1064 }
1065
1066 /* Return type should be None, or a String. If it is None,
1067 fall through, we will not set a prompt. If it is a
1068 string, set PROMPT. Anything else, set an exception. */
1069 if (result != Py_None && ! PyString_Check (result.get ()))
1070 {
1071 PyErr_Format (PyExc_RuntimeError,
1072 _("Return from prompt_hook must " \
1073 "be either a Python string, or None"));
1074 gdbpy_print_stack ();
1075 return EXT_LANG_RC_ERROR;
1076 }
1077
1078 if (result != Py_None)
1079 {
1080 gdb::unique_xmalloc_ptr<char>
1081 prompt (python_string_to_host_string (result.get ()));
1082
1083 if (prompt == NULL)
1084 {
1085 gdbpy_print_stack ();
1086 return EXT_LANG_RC_ERROR;
1087 }
1088
1089 set_prompt (prompt.get ());
1090 return EXT_LANG_RC_OK;
1091 }
1092 }
1093 }
1094
1095 return EXT_LANG_RC_NOP;
1096 }
1097
1098 \f
1099
1100 /* Printing. */
1101
1102 /* A python function to write a single string using gdb's filtered
1103 output stream . The optional keyword STREAM can be used to write
1104 to a particular stream. The default stream is to gdb_stdout. */
1105
1106 static PyObject *
1107 gdbpy_write (PyObject *self, PyObject *args, PyObject *kw)
1108 {
1109 const char *arg;
1110 static const char *keywords[] = { "text", "stream", NULL };
1111 int stream_type = 0;
1112
1113 if (!gdb_PyArg_ParseTupleAndKeywords (args, kw, "s|i", keywords, &arg,
1114 &stream_type))
1115 return NULL;
1116
1117 try
1118 {
1119 switch (stream_type)
1120 {
1121 case 1:
1122 {
1123 fprintf_filtered (gdb_stderr, "%s", arg);
1124 break;
1125 }
1126 case 2:
1127 {
1128 fprintf_filtered (gdb_stdlog, "%s", arg);
1129 break;
1130 }
1131 default:
1132 fprintf_filtered (gdb_stdout, "%s", arg);
1133 }
1134 }
1135 catch (const gdb_exception &except)
1136 {
1137 GDB_PY_HANDLE_EXCEPTION (except);
1138 }
1139
1140 Py_RETURN_NONE;
1141 }
1142
1143 /* A python function to flush a gdb stream. The optional keyword
1144 STREAM can be used to flush a particular stream. The default stream
1145 is gdb_stdout. */
1146
1147 static PyObject *
1148 gdbpy_flush (PyObject *self, PyObject *args, PyObject *kw)
1149 {
1150 static const char *keywords[] = { "stream", NULL };
1151 int stream_type = 0;
1152
1153 if (!gdb_PyArg_ParseTupleAndKeywords (args, kw, "|i", keywords,
1154 &stream_type))
1155 return NULL;
1156
1157 switch (stream_type)
1158 {
1159 case 1:
1160 {
1161 gdb_flush (gdb_stderr);
1162 break;
1163 }
1164 case 2:
1165 {
1166 gdb_flush (gdb_stdlog);
1167 break;
1168 }
1169 default:
1170 gdb_flush (gdb_stdout);
1171 }
1172
1173 Py_RETURN_NONE;
1174 }
1175
1176 /* Return non-zero if print-stack is not "none". */
1177
1178 int
1179 gdbpy_print_python_errors_p (void)
1180 {
1181 return gdbpy_should_print_stack != python_excp_none;
1182 }
1183
1184 /* Print a python exception trace, print just a message, or print
1185 nothing and clear the python exception, depending on
1186 gdbpy_should_print_stack. Only call this if a python exception is
1187 set. */
1188 void
1189 gdbpy_print_stack (void)
1190 {
1191
1192 /* Print "none", just clear exception. */
1193 if (gdbpy_should_print_stack == python_excp_none)
1194 {
1195 PyErr_Clear ();
1196 }
1197 /* Print "full" message and backtrace. */
1198 else if (gdbpy_should_print_stack == python_excp_full)
1199 {
1200 PyErr_Print ();
1201 /* PyErr_Print doesn't necessarily end output with a newline.
1202 This works because Python's stdout/stderr is fed through
1203 printf_filtered. */
1204 try
1205 {
1206 begin_line ();
1207 }
1208 catch (const gdb_exception &except)
1209 {
1210 }
1211 }
1212 /* Print "message", just error print message. */
1213 else
1214 {
1215 gdbpy_err_fetch fetched_error;
1216
1217 gdb::unique_xmalloc_ptr<char> msg = fetched_error.to_string ();
1218 gdb::unique_xmalloc_ptr<char> type;
1219 /* Don't compute TYPE if MSG already indicates that there is an
1220 error. */
1221 if (msg != NULL)
1222 type = fetched_error.type_to_string ();
1223
1224 try
1225 {
1226 if (msg == NULL || type == NULL)
1227 {
1228 /* An error occurred computing the string representation of the
1229 error message. */
1230 fprintf_filtered (gdb_stderr,
1231 _("Error occurred computing Python error" \
1232 "message.\n"));
1233 PyErr_Clear ();
1234 }
1235 else
1236 fprintf_filtered (gdb_stderr, "Python Exception %s %s: \n",
1237 type.get (), msg.get ());
1238 }
1239 catch (const gdb_exception &except)
1240 {
1241 }
1242 }
1243 }
1244
1245 /* Like gdbpy_print_stack, but if the exception is a
1246 KeyboardException, throw a gdb "quit" instead. */
1247
1248 void
1249 gdbpy_print_stack_or_quit ()
1250 {
1251 if (PyErr_ExceptionMatches (PyExc_KeyboardInterrupt))
1252 {
1253 PyErr_Clear ();
1254 throw_quit ("Quit");
1255 }
1256 gdbpy_print_stack ();
1257 }
1258
1259 \f
1260
1261 /* Return a sequence holding all the Progspaces. */
1262
1263 static PyObject *
1264 gdbpy_progspaces (PyObject *unused1, PyObject *unused2)
1265 {
1266 struct program_space *ps;
1267
1268 gdbpy_ref<> list (PyList_New (0));
1269 if (list == NULL)
1270 return NULL;
1271
1272 ALL_PSPACES (ps)
1273 {
1274 gdbpy_ref<> item = pspace_to_pspace_object (ps);
1275
1276 if (item == NULL || PyList_Append (list.get (), item.get ()) == -1)
1277 return NULL;
1278 }
1279
1280 return list.release ();
1281 }
1282
1283 \f
1284
1285 /* The "current" objfile. This is set when gdb detects that a new
1286 objfile has been loaded. It is only set for the duration of a call to
1287 gdbpy_source_objfile_script and gdbpy_execute_objfile_script; it is NULL
1288 at other times. */
1289 static struct objfile *gdbpy_current_objfile;
1290
1291 /* Set the current objfile to OBJFILE and then read FILE named FILENAME
1292 as Python code. This does not throw any errors. If an exception
1293 occurs python will print the traceback and clear the error indicator.
1294 This is the extension_language_script_ops.objfile_script_sourcer
1295 "method". */
1296
1297 static void
1298 gdbpy_source_objfile_script (const struct extension_language_defn *extlang,
1299 struct objfile *objfile, FILE *file,
1300 const char *filename)
1301 {
1302 if (!gdb_python_initialized)
1303 return;
1304
1305 gdbpy_enter enter_py (get_objfile_arch (objfile), current_language);
1306 gdbpy_current_objfile = objfile;
1307
1308 python_run_simple_file (file, filename);
1309
1310 gdbpy_current_objfile = NULL;
1311 }
1312
1313 /* Set the current objfile to OBJFILE and then execute SCRIPT
1314 as Python code. This does not throw any errors. If an exception
1315 occurs python will print the traceback and clear the error indicator.
1316 This is the extension_language_script_ops.objfile_script_executor
1317 "method". */
1318
1319 static void
1320 gdbpy_execute_objfile_script (const struct extension_language_defn *extlang,
1321 struct objfile *objfile, const char *name,
1322 const char *script)
1323 {
1324 if (!gdb_python_initialized)
1325 return;
1326
1327 gdbpy_enter enter_py (get_objfile_arch (objfile), current_language);
1328 gdbpy_current_objfile = objfile;
1329
1330 PyRun_SimpleString (script);
1331
1332 gdbpy_current_objfile = NULL;
1333 }
1334
1335 /* Return the current Objfile, or None if there isn't one. */
1336
1337 static PyObject *
1338 gdbpy_get_current_objfile (PyObject *unused1, PyObject *unused2)
1339 {
1340 if (! gdbpy_current_objfile)
1341 Py_RETURN_NONE;
1342
1343 return objfile_to_objfile_object (gdbpy_current_objfile).release ();
1344 }
1345
1346 /* Compute the list of active python type printers and store them in
1347 EXT_PRINTERS->py_type_printers. The product of this function is used by
1348 gdbpy_apply_type_printers, and freed by gdbpy_free_type_printers.
1349 This is the extension_language_ops.start_type_printers "method". */
1350
1351 static void
1352 gdbpy_start_type_printers (const struct extension_language_defn *extlang,
1353 struct ext_lang_type_printers *ext_printers)
1354 {
1355 PyObject *printers_obj = NULL;
1356
1357 if (!gdb_python_initialized)
1358 return;
1359
1360 gdbpy_enter enter_py (get_current_arch (), current_language);
1361
1362 gdbpy_ref<> type_module (PyImport_ImportModule ("gdb.types"));
1363 if (type_module == NULL)
1364 {
1365 gdbpy_print_stack ();
1366 return;
1367 }
1368
1369 gdbpy_ref<> func (PyObject_GetAttrString (type_module.get (),
1370 "get_type_recognizers"));
1371 if (func == NULL)
1372 {
1373 gdbpy_print_stack ();
1374 return;
1375 }
1376
1377 printers_obj = PyObject_CallFunctionObjArgs (func.get (), (char *) NULL);
1378 if (printers_obj == NULL)
1379 gdbpy_print_stack ();
1380 else
1381 ext_printers->py_type_printers = printers_obj;
1382 }
1383
1384 /* If TYPE is recognized by some type printer, store in *PRETTIED_TYPE
1385 a newly allocated string holding the type's replacement name, and return
1386 EXT_LANG_RC_OK. The caller is responsible for freeing the string.
1387 If there's a Python error return EXT_LANG_RC_ERROR.
1388 Otherwise, return EXT_LANG_RC_NOP.
1389 This is the extension_language_ops.apply_type_printers "method". */
1390
1391 static enum ext_lang_rc
1392 gdbpy_apply_type_printers (const struct extension_language_defn *extlang,
1393 const struct ext_lang_type_printers *ext_printers,
1394 struct type *type, char **prettied_type)
1395 {
1396 PyObject *printers_obj = (PyObject *) ext_printers->py_type_printers;
1397 gdb::unique_xmalloc_ptr<char> result;
1398
1399 if (printers_obj == NULL)
1400 return EXT_LANG_RC_NOP;
1401
1402 if (!gdb_python_initialized)
1403 return EXT_LANG_RC_NOP;
1404
1405 gdbpy_enter enter_py (get_current_arch (), current_language);
1406
1407 gdbpy_ref<> type_obj (type_to_type_object (type));
1408 if (type_obj == NULL)
1409 {
1410 gdbpy_print_stack ();
1411 return EXT_LANG_RC_ERROR;
1412 }
1413
1414 gdbpy_ref<> type_module (PyImport_ImportModule ("gdb.types"));
1415 if (type_module == NULL)
1416 {
1417 gdbpy_print_stack ();
1418 return EXT_LANG_RC_ERROR;
1419 }
1420
1421 gdbpy_ref<> func (PyObject_GetAttrString (type_module.get (),
1422 "apply_type_recognizers"));
1423 if (func == NULL)
1424 {
1425 gdbpy_print_stack ();
1426 return EXT_LANG_RC_ERROR;
1427 }
1428
1429 gdbpy_ref<> result_obj (PyObject_CallFunctionObjArgs (func.get (),
1430 printers_obj,
1431 type_obj.get (),
1432 (char *) NULL));
1433 if (result_obj == NULL)
1434 {
1435 gdbpy_print_stack ();
1436 return EXT_LANG_RC_ERROR;
1437 }
1438
1439 if (result_obj == Py_None)
1440 return EXT_LANG_RC_NOP;
1441
1442 result = python_string_to_host_string (result_obj.get ());
1443 if (result == NULL)
1444 {
1445 gdbpy_print_stack ();
1446 return EXT_LANG_RC_ERROR;
1447 }
1448
1449 *prettied_type = result.release ();
1450 return EXT_LANG_RC_OK;
1451 }
1452
1453 /* Free the result of start_type_printers.
1454 This is the extension_language_ops.free_type_printers "method". */
1455
1456 static void
1457 gdbpy_free_type_printers (const struct extension_language_defn *extlang,
1458 struct ext_lang_type_printers *ext_printers)
1459 {
1460 PyObject *printers = (PyObject *) ext_printers->py_type_printers;
1461
1462 if (printers == NULL)
1463 return;
1464
1465 if (!gdb_python_initialized)
1466 return;
1467
1468 gdbpy_enter enter_py (get_current_arch (), current_language);
1469 Py_DECREF (printers);
1470 }
1471
1472 #else /* HAVE_PYTHON */
1473
1474 /* Dummy implementation of the gdb "python-interactive" and "python"
1475 command. */
1476
1477 static void
1478 python_interactive_command (const char *arg, int from_tty)
1479 {
1480 arg = skip_spaces (arg);
1481 if (arg && *arg)
1482 error (_("Python scripting is not supported in this copy of GDB."));
1483 else
1484 {
1485 counted_command_line l = get_command_line (python_control, "");
1486
1487 execute_control_command_untraced (l.get ());
1488 }
1489 }
1490
1491 static void
1492 python_command (const char *arg, int from_tty)
1493 {
1494 python_interactive_command (arg, from_tty);
1495 }
1496
1497 #endif /* HAVE_PYTHON */
1498
1499 \f
1500
1501 /* Lists for 'set python' commands. */
1502
1503 static struct cmd_list_element *user_set_python_list;
1504 static struct cmd_list_element *user_show_python_list;
1505
1506 /* Function for use by 'set python' prefix command. */
1507
1508 static void
1509 user_set_python (const char *args, int from_tty)
1510 {
1511 help_list (user_set_python_list, "set python ", all_commands,
1512 gdb_stdout);
1513 }
1514
1515 /* Function for use by 'show python' prefix command. */
1516
1517 static void
1518 user_show_python (const char *args, int from_tty)
1519 {
1520 cmd_show_list (user_show_python_list, from_tty, "");
1521 }
1522
1523 /* Initialize the Python code. */
1524
1525 #ifdef HAVE_PYTHON
1526
1527 /* This is installed as a final cleanup and cleans up the
1528 interpreter. This lets Python's 'atexit' work. */
1529
1530 static void
1531 finalize_python (void *ignore)
1532 {
1533 struct active_ext_lang_state *previous_active;
1534
1535 /* We don't use ensure_python_env here because if we ever ran the
1536 cleanup, gdb would crash -- because the cleanup calls into the
1537 Python interpreter, which we are about to destroy. It seems
1538 clearer to make the needed calls explicitly here than to create a
1539 cleanup and then mysteriously discard it. */
1540
1541 /* This is only called as a final cleanup so we can assume the active
1542 SIGINT handler is gdb's. We still need to tell it to notify Python. */
1543 previous_active = set_active_ext_lang (&extension_language_python);
1544
1545 (void) PyGILState_Ensure ();
1546 python_gdbarch = target_gdbarch ();
1547 python_language = current_language;
1548
1549 Py_Finalize ();
1550
1551 restore_active_ext_lang (previous_active);
1552 }
1553
1554 #ifdef IS_PY3K
1555 /* This is called via the PyImport_AppendInittab mechanism called
1556 during initialization, to make the built-in _gdb module known to
1557 Python. */
1558 PyMODINIT_FUNC
1559 init__gdb_module (void)
1560 {
1561 return PyModule_Create (&python_GdbModuleDef);
1562 }
1563 #endif
1564
1565 static bool
1566 do_start_initialization ()
1567 {
1568 #ifdef IS_PY3K
1569 size_t progsize, count;
1570 /* Python documentation indicates that the memory given
1571 to Py_SetProgramName cannot be freed. However, it seems that
1572 at least Python 3.7.4 Py_SetProgramName takes a copy of the
1573 given program_name. Making progname_copy static and not release
1574 the memory avoids a leak report for Python versions that duplicate
1575 program_name, and respect the requirement of Py_SetProgramName
1576 for Python versions that do not duplicate program_name. */
1577 static wchar_t *progname_copy;
1578 #endif
1579
1580 #ifdef WITH_PYTHON_PATH
1581 /* Work around problem where python gets confused about where it is,
1582 and then can't find its libraries, etc.
1583 NOTE: Python assumes the following layout:
1584 /foo/bin/python
1585 /foo/lib/pythonX.Y/...
1586 This must be done before calling Py_Initialize. */
1587 gdb::unique_xmalloc_ptr<char> progname
1588 (concat (ldirname (python_libdir.c_str ()).c_str (), SLASH_STRING, "bin",
1589 SLASH_STRING, "python", (char *) NULL));
1590 #ifdef IS_PY3K
1591 std::string oldloc = setlocale (LC_ALL, NULL);
1592 setlocale (LC_ALL, "");
1593 progsize = strlen (progname.get ());
1594 progname_copy = (wchar_t *) xmalloc ((progsize + 1) * sizeof (wchar_t));
1595 if (!progname_copy)
1596 {
1597 fprintf (stderr, "out of memory\n");
1598 return false;
1599 }
1600 count = mbstowcs (progname_copy, progname.get (), progsize + 1);
1601 if (count == (size_t) -1)
1602 {
1603 fprintf (stderr, "Could not convert python path to string\n");
1604 return false;
1605 }
1606 setlocale (LC_ALL, oldloc.c_str ());
1607
1608 /* Note that Py_SetProgramName expects the string it is passed to
1609 remain alive for the duration of the program's execution, so
1610 it is not freed after this call. */
1611 Py_SetProgramName (progname_copy);
1612
1613 /* Define _gdb as a built-in module. */
1614 PyImport_AppendInittab ("_gdb", init__gdb_module);
1615 #else
1616 Py_SetProgramName (progname.release ());
1617 #endif
1618 #endif
1619
1620 Py_Initialize ();
1621 PyEval_InitThreads ();
1622
1623 #ifdef IS_PY3K
1624 gdb_module = PyImport_ImportModule ("_gdb");
1625 #else
1626 gdb_module = Py_InitModule ("_gdb", python_GdbMethods);
1627 #endif
1628 if (gdb_module == NULL)
1629 return false;
1630
1631 if (PyModule_AddStringConstant (gdb_module, "VERSION", version) < 0
1632 || PyModule_AddStringConstant (gdb_module, "HOST_CONFIG", host_name) < 0
1633 || PyModule_AddStringConstant (gdb_module, "TARGET_CONFIG",
1634 target_name) < 0)
1635 return false;
1636
1637 /* Add stream constants. */
1638 if (PyModule_AddIntConstant (gdb_module, "STDOUT", 0) < 0
1639 || PyModule_AddIntConstant (gdb_module, "STDERR", 1) < 0
1640 || PyModule_AddIntConstant (gdb_module, "STDLOG", 2) < 0)
1641 return false;
1642
1643 gdbpy_gdb_error = PyErr_NewException ("gdb.error", PyExc_RuntimeError, NULL);
1644 if (gdbpy_gdb_error == NULL
1645 || gdb_pymodule_addobject (gdb_module, "error", gdbpy_gdb_error) < 0)
1646 return false;
1647
1648 gdbpy_gdb_memory_error = PyErr_NewException ("gdb.MemoryError",
1649 gdbpy_gdb_error, NULL);
1650 if (gdbpy_gdb_memory_error == NULL
1651 || gdb_pymodule_addobject (gdb_module, "MemoryError",
1652 gdbpy_gdb_memory_error) < 0)
1653 return false;
1654
1655 gdbpy_gdberror_exc = PyErr_NewException ("gdb.GdbError", NULL, NULL);
1656 if (gdbpy_gdberror_exc == NULL
1657 || gdb_pymodule_addobject (gdb_module, "GdbError",
1658 gdbpy_gdberror_exc) < 0)
1659 return false;
1660
1661 gdbpy_initialize_gdb_readline ();
1662
1663 if (gdbpy_initialize_auto_load () < 0
1664 || gdbpy_initialize_values () < 0
1665 || gdbpy_initialize_frames () < 0
1666 || gdbpy_initialize_commands () < 0
1667 || gdbpy_initialize_instruction () < 0
1668 || gdbpy_initialize_record () < 0
1669 || gdbpy_initialize_btrace () < 0
1670 || gdbpy_initialize_symbols () < 0
1671 || gdbpy_initialize_symtabs () < 0
1672 || gdbpy_initialize_blocks () < 0
1673 || gdbpy_initialize_functions () < 0
1674 || gdbpy_initialize_parameters () < 0
1675 || gdbpy_initialize_types () < 0
1676 || gdbpy_initialize_pspace () < 0
1677 || gdbpy_initialize_objfile () < 0
1678 || gdbpy_initialize_breakpoints () < 0
1679 || gdbpy_initialize_finishbreakpoints () < 0
1680 || gdbpy_initialize_lazy_string () < 0
1681 || gdbpy_initialize_linetable () < 0
1682 || gdbpy_initialize_thread () < 0
1683 || gdbpy_initialize_inferior () < 0
1684 || gdbpy_initialize_eventregistry () < 0
1685 || gdbpy_initialize_py_events () < 0
1686 || gdbpy_initialize_event () < 0
1687 || gdbpy_initialize_arch () < 0
1688 || gdbpy_initialize_xmethods () < 0
1689 || gdbpy_initialize_unwind () < 0)
1690 return false;
1691
1692 #define GDB_PY_DEFINE_EVENT_TYPE(name, py_name, doc, base) \
1693 if (gdbpy_initialize_event_generic (&name##_event_object_type, py_name) < 0) \
1694 return false;
1695 #include "py-event-types.def"
1696 #undef GDB_PY_DEFINE_EVENT_TYPE
1697
1698 gdbpy_to_string_cst = PyString_FromString ("to_string");
1699 if (gdbpy_to_string_cst == NULL)
1700 return false;
1701 gdbpy_children_cst = PyString_FromString ("children");
1702 if (gdbpy_children_cst == NULL)
1703 return false;
1704 gdbpy_display_hint_cst = PyString_FromString ("display_hint");
1705 if (gdbpy_display_hint_cst == NULL)
1706 return false;
1707 gdbpy_doc_cst = PyString_FromString ("__doc__");
1708 if (gdbpy_doc_cst == NULL)
1709 return false;
1710 gdbpy_enabled_cst = PyString_FromString ("enabled");
1711 if (gdbpy_enabled_cst == NULL)
1712 return false;
1713 gdbpy_value_cst = PyString_FromString ("value");
1714 if (gdbpy_value_cst == NULL)
1715 return false;
1716
1717 /* Release the GIL while gdb runs. */
1718 PyThreadState_Swap (NULL);
1719 PyEval_ReleaseLock ();
1720
1721 make_final_cleanup (finalize_python, NULL);
1722
1723 /* Only set this when initialization has succeeded. */
1724 gdb_python_initialized = 1;
1725 return true;
1726 }
1727
1728 #endif /* HAVE_PYTHON */
1729
1730 /* See python.h. */
1731 cmd_list_element *python_cmd_element = nullptr;
1732
1733 void
1734 _initialize_python (void)
1735 {
1736 add_com ("python-interactive", class_obscure,
1737 python_interactive_command,
1738 #ifdef HAVE_PYTHON
1739 _("\
1740 Start an interactive Python prompt.\n\
1741 \n\
1742 To return to GDB, type the EOF character (e.g., Ctrl-D on an empty\n\
1743 prompt).\n\
1744 \n\
1745 Alternatively, a single-line Python command can be given as an\n\
1746 argument, and if the command is an expression, the result will be\n\
1747 printed. For example:\n\
1748 \n\
1749 (gdb) python-interactive 2 + 3\n\
1750 5")
1751 #else /* HAVE_PYTHON */
1752 _("\
1753 Start a Python interactive prompt.\n\
1754 \n\
1755 Python scripting is not supported in this copy of GDB.\n\
1756 This command is only a placeholder.")
1757 #endif /* HAVE_PYTHON */
1758 );
1759 add_com_alias ("pi", "python-interactive", class_obscure, 1);
1760
1761 python_cmd_element = add_com ("python", class_obscure, python_command,
1762 #ifdef HAVE_PYTHON
1763 _("\
1764 Evaluate a Python command.\n\
1765 \n\
1766 The command can be given as an argument, for instance:\n\
1767 \n\
1768 python print (23)\n\
1769 \n\
1770 If no argument is given, the following lines are read and used\n\
1771 as the Python commands. Type a line containing \"end\" to indicate\n\
1772 the end of the command.")
1773 #else /* HAVE_PYTHON */
1774 _("\
1775 Evaluate a Python command.\n\
1776 \n\
1777 Python scripting is not supported in this copy of GDB.\n\
1778 This command is only a placeholder.")
1779 #endif /* HAVE_PYTHON */
1780 );
1781 add_com_alias ("py", "python", class_obscure, 1);
1782
1783 /* Add set/show python print-stack. */
1784 add_prefix_cmd ("python", no_class, user_show_python,
1785 _("Prefix command for python preference settings."),
1786 &user_show_python_list, "show python ", 0,
1787 &showlist);
1788
1789 add_prefix_cmd ("python", no_class, user_set_python,
1790 _("Prefix command for python preference settings."),
1791 &user_set_python_list, "set python ", 0,
1792 &setlist);
1793
1794 add_setshow_enum_cmd ("print-stack", no_class, python_excp_enums,
1795 &gdbpy_should_print_stack, _("\
1796 Set mode for Python stack dump on error."), _("\
1797 Show the mode of Python stack printing on error."), _("\
1798 none == no stack or message will be printed.\n\
1799 full == a message and a stack will be printed.\n\
1800 message == an error message without a stack will be printed."),
1801 NULL, NULL,
1802 &user_set_python_list,
1803 &user_show_python_list);
1804
1805 #ifdef HAVE_PYTHON
1806 if (!do_start_initialization () && PyErr_Occurred ())
1807 gdbpy_print_stack ();
1808 #endif /* HAVE_PYTHON */
1809 }
1810
1811 #ifdef HAVE_PYTHON
1812
1813 /* Helper function for gdbpy_finish_initialization. This does the
1814 work and then returns false if an error has occurred and must be
1815 displayed, or true on success. */
1816
1817 static bool
1818 do_finish_initialization (const struct extension_language_defn *extlang)
1819 {
1820 PyObject *m;
1821 PyObject *sys_path;
1822
1823 /* Add the initial data-directory to sys.path. */
1824
1825 std::string gdb_pythondir = (std::string (gdb_datadir) + SLASH_STRING
1826 + "python");
1827
1828 sys_path = PySys_GetObject ("path");
1829
1830 /* If sys.path is not defined yet, define it first. */
1831 if (!(sys_path && PyList_Check (sys_path)))
1832 {
1833 #ifdef IS_PY3K
1834 PySys_SetPath (L"");
1835 #else
1836 PySys_SetPath ("");
1837 #endif
1838 sys_path = PySys_GetObject ("path");
1839 }
1840 if (sys_path && PyList_Check (sys_path))
1841 {
1842 gdbpy_ref<> pythondir (PyString_FromString (gdb_pythondir.c_str ()));
1843 if (pythondir == NULL || PyList_Insert (sys_path, 0, pythondir.get ()))
1844 return false;
1845 }
1846 else
1847 return false;
1848
1849 /* Import the gdb module to finish the initialization, and
1850 add it to __main__ for convenience. */
1851 m = PyImport_AddModule ("__main__");
1852 if (m == NULL)
1853 return false;
1854
1855 /* Keep the reference to gdb_python_module since it is in a global
1856 variable. */
1857 gdb_python_module = PyImport_ImportModule ("gdb");
1858 if (gdb_python_module == NULL)
1859 {
1860 gdbpy_print_stack ();
1861 /* This is passed in one call to warning so that blank lines aren't
1862 inserted between each line of text. */
1863 warning (_("\n"
1864 "Could not load the Python gdb module from `%s'.\n"
1865 "Limited Python support is available from the _gdb module.\n"
1866 "Suggest passing --data-directory=/path/to/gdb/data-directory."),
1867 gdb_pythondir.c_str ());
1868 /* We return "success" here as we've already emitted the
1869 warning. */
1870 return true;
1871 }
1872
1873 return gdb_pymodule_addobject (m, "gdb", gdb_python_module) >= 0;
1874 }
1875
1876 /* Perform the remaining python initializations.
1877 These must be done after GDB is at least mostly initialized.
1878 E.g., The "info pretty-printer" command needs the "info" prefix
1879 command installed.
1880 This is the extension_language_ops.finish_initialization "method". */
1881
1882 static void
1883 gdbpy_finish_initialization (const struct extension_language_defn *extlang)
1884 {
1885 gdbpy_enter enter_py (get_current_arch (), current_language);
1886
1887 if (!do_finish_initialization (extlang))
1888 {
1889 gdbpy_print_stack ();
1890 warning (_("internal error: Unhandled Python exception"));
1891 }
1892 }
1893
1894 /* Return non-zero if Python has successfully initialized.
1895 This is the extension_languages_ops.initialized "method". */
1896
1897 static int
1898 gdbpy_initialized (const struct extension_language_defn *extlang)
1899 {
1900 return gdb_python_initialized;
1901 }
1902
1903 #endif /* HAVE_PYTHON */
1904
1905 \f
1906
1907 #ifdef HAVE_PYTHON
1908
1909 PyMethodDef python_GdbMethods[] =
1910 {
1911 { "history", gdbpy_history, METH_VARARGS,
1912 "Get a value from history" },
1913 { "execute", (PyCFunction) execute_gdb_command, METH_VARARGS | METH_KEYWORDS,
1914 "execute (command [, from_tty] [, to_string]) -> [String]\n\
1915 Evaluate command, a string, as a gdb CLI command. Optionally returns\n\
1916 a Python String containing the output of the command if to_string is\n\
1917 set to True." },
1918 { "parameter", gdbpy_parameter, METH_VARARGS,
1919 "Return a gdb parameter's value" },
1920
1921 { "breakpoints", gdbpy_breakpoints, METH_NOARGS,
1922 "Return a tuple of all breakpoint objects" },
1923
1924 { "default_visualizer", gdbpy_default_visualizer, METH_VARARGS,
1925 "Find the default visualizer for a Value." },
1926
1927 { "progspaces", gdbpy_progspaces, METH_NOARGS,
1928 "Return a sequence of all progspaces." },
1929
1930 { "current_objfile", gdbpy_get_current_objfile, METH_NOARGS,
1931 "Return the current Objfile being loaded, or None." },
1932
1933 { "newest_frame", gdbpy_newest_frame, METH_NOARGS,
1934 "newest_frame () -> gdb.Frame.\n\
1935 Return the newest frame object." },
1936 { "selected_frame", gdbpy_selected_frame, METH_NOARGS,
1937 "selected_frame () -> gdb.Frame.\n\
1938 Return the selected frame object." },
1939 { "frame_stop_reason_string", gdbpy_frame_stop_reason_string, METH_VARARGS,
1940 "stop_reason_string (Integer) -> String.\n\
1941 Return a string explaining unwind stop reason." },
1942
1943 { "start_recording", gdbpy_start_recording, METH_VARARGS,
1944 "start_recording ([method] [, format]) -> gdb.Record.\n\
1945 Start recording with the given method. If no method is given, will fall back\n\
1946 to the system default method. If no format is given, will fall back to the\n\
1947 default format for the given method."},
1948 { "current_recording", gdbpy_current_recording, METH_NOARGS,
1949 "current_recording () -> gdb.Record.\n\
1950 Return current recording object." },
1951 { "stop_recording", gdbpy_stop_recording, METH_NOARGS,
1952 "stop_recording () -> None.\n\
1953 Stop current recording." },
1954
1955 { "lookup_type", (PyCFunction) gdbpy_lookup_type,
1956 METH_VARARGS | METH_KEYWORDS,
1957 "lookup_type (name [, block]) -> type\n\
1958 Return a Type corresponding to the given name." },
1959 { "lookup_symbol", (PyCFunction) gdbpy_lookup_symbol,
1960 METH_VARARGS | METH_KEYWORDS,
1961 "lookup_symbol (name [, block] [, domain]) -> (symbol, is_field_of_this)\n\
1962 Return a tuple with the symbol corresponding to the given name (or None) and\n\
1963 a boolean indicating if name is a field of the current implied argument\n\
1964 `this' (when the current language is object-oriented)." },
1965 { "lookup_global_symbol", (PyCFunction) gdbpy_lookup_global_symbol,
1966 METH_VARARGS | METH_KEYWORDS,
1967 "lookup_global_symbol (name [, domain]) -> symbol\n\
1968 Return the symbol corresponding to the given name (or None)." },
1969 { "lookup_static_symbol", (PyCFunction) gdbpy_lookup_static_symbol,
1970 METH_VARARGS | METH_KEYWORDS,
1971 "lookup_static_symbol (name [, domain]) -> symbol\n\
1972 Return the static-linkage symbol corresponding to the given name (or None)." },
1973 { "lookup_static_symbols", (PyCFunction) gdbpy_lookup_static_symbols,
1974 METH_VARARGS | METH_KEYWORDS,
1975 "lookup_static_symbols (name [, domain]) -> symbol\n\
1976 Return a list of all static-linkage symbols corresponding to the given name." },
1977
1978 { "lookup_objfile", (PyCFunction) gdbpy_lookup_objfile,
1979 METH_VARARGS | METH_KEYWORDS,
1980 "lookup_objfile (name, [by_build_id]) -> objfile\n\
1981 Look up the specified objfile.\n\
1982 If by_build_id is True, the objfile is looked up by using name\n\
1983 as its build id." },
1984
1985 { "decode_line", gdbpy_decode_line, METH_VARARGS,
1986 "decode_line (String) -> Tuple. Decode a string argument the way\n\
1987 that 'break' or 'edit' does. Return a tuple containing two elements.\n\
1988 The first element contains any unparsed portion of the String parameter\n\
1989 (or None if the string was fully parsed). The second element contains\n\
1990 a tuple that contains all the locations that match, represented as\n\
1991 gdb.Symtab_and_line objects (or None)."},
1992 { "parse_and_eval", gdbpy_parse_and_eval, METH_VARARGS,
1993 "parse_and_eval (String) -> Value.\n\
1994 Parse String as an expression, evaluate it, and return the result as a Value."
1995 },
1996
1997 { "post_event", gdbpy_post_event, METH_VARARGS,
1998 "Post an event into gdb's event loop." },
1999
2000 { "target_charset", gdbpy_target_charset, METH_NOARGS,
2001 "target_charset () -> string.\n\
2002 Return the name of the current target charset." },
2003 { "target_wide_charset", gdbpy_target_wide_charset, METH_NOARGS,
2004 "target_wide_charset () -> string.\n\
2005 Return the name of the current target wide charset." },
2006 { "rbreak", (PyCFunction) gdbpy_rbreak, METH_VARARGS | METH_KEYWORDS,
2007 "rbreak (Regex) -> List.\n\
2008 Return a Tuple containing gdb.Breakpoint objects that match the given Regex." },
2009 { "string_to_argv", gdbpy_string_to_argv, METH_VARARGS,
2010 "string_to_argv (String) -> Array.\n\
2011 Parse String and return an argv-like array.\n\
2012 Arguments are separate by spaces and may be quoted."
2013 },
2014 { "write", (PyCFunction)gdbpy_write, METH_VARARGS | METH_KEYWORDS,
2015 "Write a string using gdb's filtered stream." },
2016 { "flush", (PyCFunction)gdbpy_flush, METH_VARARGS | METH_KEYWORDS,
2017 "Flush gdb's filtered stdout stream." },
2018 { "selected_thread", gdbpy_selected_thread, METH_NOARGS,
2019 "selected_thread () -> gdb.InferiorThread.\n\
2020 Return the selected thread object." },
2021 { "selected_inferior", gdbpy_selected_inferior, METH_NOARGS,
2022 "selected_inferior () -> gdb.Inferior.\n\
2023 Return the selected inferior object." },
2024 { "inferiors", gdbpy_inferiors, METH_NOARGS,
2025 "inferiors () -> (gdb.Inferior, ...).\n\
2026 Return a tuple containing all inferiors." },
2027
2028 { "invalidate_cached_frames", gdbpy_invalidate_cached_frames, METH_NOARGS,
2029 "invalidate_cached_frames () -> None.\n\
2030 Invalidate any cached frame objects in gdb.\n\
2031 Intended for internal use only." },
2032
2033 { "convenience_variable", gdbpy_convenience_variable, METH_VARARGS,
2034 "convenience_variable (NAME) -> value.\n\
2035 Return the value of the convenience variable $NAME,\n\
2036 or None if not set." },
2037 { "set_convenience_variable", gdbpy_set_convenience_variable, METH_VARARGS,
2038 "convenience_variable (NAME, VALUE) -> None.\n\
2039 Set the value of the convenience variable $NAME." },
2040
2041 {NULL, NULL, 0, NULL}
2042 };
2043
2044 #ifdef IS_PY3K
2045 struct PyModuleDef python_GdbModuleDef =
2046 {
2047 PyModuleDef_HEAD_INIT,
2048 "_gdb",
2049 NULL,
2050 -1,
2051 python_GdbMethods,
2052 NULL,
2053 NULL,
2054 NULL,
2055 NULL
2056 };
2057 #endif
2058
2059 /* Define all the event objects. */
2060 #define GDB_PY_DEFINE_EVENT_TYPE(name, py_name, doc, base) \
2061 PyTypeObject name##_event_object_type \
2062 CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("event_object") \
2063 = { \
2064 PyVarObject_HEAD_INIT (NULL, 0) \
2065 "gdb." py_name, /* tp_name */ \
2066 sizeof (event_object), /* tp_basicsize */ \
2067 0, /* tp_itemsize */ \
2068 evpy_dealloc, /* tp_dealloc */ \
2069 0, /* tp_print */ \
2070 0, /* tp_getattr */ \
2071 0, /* tp_setattr */ \
2072 0, /* tp_compare */ \
2073 0, /* tp_repr */ \
2074 0, /* tp_as_number */ \
2075 0, /* tp_as_sequence */ \
2076 0, /* tp_as_mapping */ \
2077 0, /* tp_hash */ \
2078 0, /* tp_call */ \
2079 0, /* tp_str */ \
2080 0, /* tp_getattro */ \
2081 0, /* tp_setattro */ \
2082 0, /* tp_as_buffer */ \
2083 Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */ \
2084 doc, /* tp_doc */ \
2085 0, /* tp_traverse */ \
2086 0, /* tp_clear */ \
2087 0, /* tp_richcompare */ \
2088 0, /* tp_weaklistoffset */ \
2089 0, /* tp_iter */ \
2090 0, /* tp_iternext */ \
2091 0, /* tp_methods */ \
2092 0, /* tp_members */ \
2093 0, /* tp_getset */ \
2094 &base, /* tp_base */ \
2095 0, /* tp_dict */ \
2096 0, /* tp_descr_get */ \
2097 0, /* tp_descr_set */ \
2098 0, /* tp_dictoffset */ \
2099 0, /* tp_init */ \
2100 0 /* tp_alloc */ \
2101 };
2102 #include "py-event-types.def"
2103 #undef GDB_PY_DEFINE_EVENT_TYPE
2104
2105 #endif /* HAVE_PYTHON */
This page took 0.085836 seconds and 4 git commands to generate.