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