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