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