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