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