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