Use gdbpy_convert_exception in a few more spots
[deliverable/binutils-gdb.git] / gdb / python / python.c
CommitLineData
d57a3c85
TJB
1/* General python/gdb code
2
e2882c85 3 Copyright (C) 2008-2018 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
89c73ade
TT
1271\f
1272
fa33c3cd
DE
1273/* Return a sequence holding all the Progspaces. */
1274
1275static PyObject *
1276gdbpy_progspaces (PyObject *unused1, PyObject *unused2)
1277{
1278 struct program_space *ps;
fa33c3cd 1279
7780f186 1280 gdbpy_ref<> list (PyList_New (0));
ff3724f5 1281 if (list == NULL)
fa33c3cd
DE
1282 return NULL;
1283
1284 ALL_PSPACES (ps)
1285 {
3c7aa307 1286 gdbpy_ref<> item = pspace_to_pspace_object (ps);
d59b6f6c 1287
3c7aa307 1288 if (item == NULL || PyList_Append (list.get (), item.get ()) == -1)
ff3724f5 1289 return NULL;
fa33c3cd
DE
1290 }
1291
ff3724f5 1292 return list.release ();
fa33c3cd
DE
1293}
1294
1295\f
1296
89c73ade 1297/* The "current" objfile. This is set when gdb detects that a new
8a1ea21f 1298 objfile has been loaded. It is only set for the duration of a call to
9f050062
DE
1299 gdbpy_source_objfile_script and gdbpy_execute_objfile_script; it is NULL
1300 at other times. */
89c73ade
TT
1301static struct objfile *gdbpy_current_objfile;
1302
4c63965b
JK
1303/* Set the current objfile to OBJFILE and then read FILE named FILENAME
1304 as Python code. This does not throw any errors. If an exception
6dddc817
DE
1305 occurs python will print the traceback and clear the error indicator.
1306 This is the extension_language_script_ops.objfile_script_sourcer
1307 "method". */
89c73ade 1308
6dddc817
DE
1309static void
1310gdbpy_source_objfile_script (const struct extension_language_defn *extlang,
1311 struct objfile *objfile, FILE *file,
1312 const char *filename)
89c73ade 1313{
0646da15
TT
1314 if (!gdb_python_initialized)
1315 return;
1316
60e600ec 1317 gdbpy_enter enter_py (get_objfile_arch (objfile), current_language);
89c73ade
TT
1318 gdbpy_current_objfile = objfile;
1319
4c63965b 1320 python_run_simple_file (file, filename);
89c73ade 1321
89c73ade 1322 gdbpy_current_objfile = NULL;
89c73ade
TT
1323}
1324
9f050062
DE
1325/* Set the current objfile to OBJFILE and then execute SCRIPT
1326 as Python code. This does not throw any errors. If an exception
1327 occurs python will print the traceback and clear the error indicator.
1328 This is the extension_language_script_ops.objfile_script_executor
1329 "method". */
1330
1331static void
1332gdbpy_execute_objfile_script (const struct extension_language_defn *extlang,
1333 struct objfile *objfile, const char *name,
1334 const char *script)
1335{
9f050062
DE
1336 if (!gdb_python_initialized)
1337 return;
1338
60e600ec 1339 gdbpy_enter enter_py (get_objfile_arch (objfile), current_language);
9f050062
DE
1340 gdbpy_current_objfile = objfile;
1341
1342 PyRun_SimpleString (script);
1343
9f050062
DE
1344 gdbpy_current_objfile = NULL;
1345}
1346
89c73ade 1347/* Return the current Objfile, or None if there isn't one. */
8a1ea21f 1348
89c73ade
TT
1349static PyObject *
1350gdbpy_get_current_objfile (PyObject *unused1, PyObject *unused2)
1351{
89c73ade
TT
1352 if (! gdbpy_current_objfile)
1353 Py_RETURN_NONE;
1354
0a9db5ad 1355 return objfile_to_objfile_object (gdbpy_current_objfile).release ();
89c73ade
TT
1356}
1357
6dddc817
DE
1358/* Compute the list of active python type printers and store them in
1359 EXT_PRINTERS->py_type_printers. The product of this function is used by
1360 gdbpy_apply_type_printers, and freed by gdbpy_free_type_printers.
1361 This is the extension_language_ops.start_type_printers "method". */
18a9fc12 1362
6dddc817
DE
1363static void
1364gdbpy_start_type_printers (const struct extension_language_defn *extlang,
1365 struct ext_lang_type_printers *ext_printers)
18a9fc12 1366{
59876f8f 1367 PyObject *printers_obj = NULL;
18a9fc12 1368
0646da15 1369 if (!gdb_python_initialized)
6dddc817 1370 return;
0646da15 1371
60e600ec 1372 gdbpy_enter enter_py (get_current_arch (), current_language);
18a9fc12 1373
7780f186 1374 gdbpy_ref<> type_module (PyImport_ImportModule ("gdb.types"));
18a9fc12
TT
1375 if (type_module == NULL)
1376 {
1377 gdbpy_print_stack ();
59876f8f 1378 return;
18a9fc12 1379 }
18a9fc12 1380
7780f186
TT
1381 gdbpy_ref<> func (PyObject_GetAttrString (type_module.get (),
1382 "get_type_recognizers"));
18a9fc12
TT
1383 if (func == NULL)
1384 {
1385 gdbpy_print_stack ();
59876f8f 1386 return;
18a9fc12 1387 }
18a9fc12 1388
59876f8f 1389 printers_obj = PyObject_CallFunctionObjArgs (func.get (), (char *) NULL);
6dddc817 1390 if (printers_obj == NULL)
18a9fc12 1391 gdbpy_print_stack ();
6dddc817
DE
1392 else
1393 ext_printers->py_type_printers = printers_obj;
18a9fc12
TT
1394}
1395
6dddc817
DE
1396/* If TYPE is recognized by some type printer, store in *PRETTIED_TYPE
1397 a newly allocated string holding the type's replacement name, and return
1398 EXT_LANG_RC_OK. The caller is responsible for freeing the string.
1399 If there's a Python error return EXT_LANG_RC_ERROR.
1400 Otherwise, return EXT_LANG_RC_NOP.
1401 This is the extension_language_ops.apply_type_printers "method". */
1402
1403static enum ext_lang_rc
1404gdbpy_apply_type_printers (const struct extension_language_defn *extlang,
1405 const struct ext_lang_type_printers *ext_printers,
1406 struct type *type, char **prettied_type)
18a9fc12 1407{
19ba03f4 1408 PyObject *printers_obj = (PyObject *) ext_printers->py_type_printers;
9b972014 1409 gdb::unique_xmalloc_ptr<char> result;
18a9fc12
TT
1410
1411 if (printers_obj == NULL)
6dddc817 1412 return EXT_LANG_RC_NOP;
18a9fc12 1413
0646da15 1414 if (!gdb_python_initialized)
6dddc817 1415 return EXT_LANG_RC_NOP;
0646da15 1416
60e600ec 1417 gdbpy_enter enter_py (get_current_arch (), current_language);
18a9fc12 1418
7780f186 1419 gdbpy_ref<> type_obj (type_to_type_object (type));
18a9fc12
TT
1420 if (type_obj == NULL)
1421 {
1422 gdbpy_print_stack ();
59876f8f 1423 return EXT_LANG_RC_ERROR;
18a9fc12 1424 }
18a9fc12 1425
7780f186 1426 gdbpy_ref<> type_module (PyImport_ImportModule ("gdb.types"));
18a9fc12
TT
1427 if (type_module == NULL)
1428 {
1429 gdbpy_print_stack ();
59876f8f 1430 return EXT_LANG_RC_ERROR;
18a9fc12 1431 }
18a9fc12 1432
7780f186
TT
1433 gdbpy_ref<> func (PyObject_GetAttrString (type_module.get (),
1434 "apply_type_recognizers"));
18a9fc12
TT
1435 if (func == NULL)
1436 {
1437 gdbpy_print_stack ();
59876f8f 1438 return EXT_LANG_RC_ERROR;
18a9fc12 1439 }
18a9fc12 1440
7780f186
TT
1441 gdbpy_ref<> result_obj (PyObject_CallFunctionObjArgs (func.get (),
1442 printers_obj,
1443 type_obj.get (),
1444 (char *) NULL));
18a9fc12
TT
1445 if (result_obj == NULL)
1446 {
1447 gdbpy_print_stack ();
59876f8f 1448 return EXT_LANG_RC_ERROR;
18a9fc12 1449 }
18a9fc12 1450
59876f8f
TT
1451 if (result_obj == Py_None)
1452 return EXT_LANG_RC_NOP;
18a9fc12 1453
59876f8f
TT
1454 result = python_string_to_host_string (result_obj.get ());
1455 if (result == NULL)
9b972014 1456 {
59876f8f
TT
1457 gdbpy_print_stack ();
1458 return EXT_LANG_RC_ERROR;
9b972014 1459 }
59876f8f
TT
1460
1461 *prettied_type = result.release ();
1462 return EXT_LANG_RC_OK;
18a9fc12
TT
1463}
1464
6dddc817
DE
1465/* Free the result of start_type_printers.
1466 This is the extension_language_ops.free_type_printers "method". */
18a9fc12 1467
6dddc817
DE
1468static void
1469gdbpy_free_type_printers (const struct extension_language_defn *extlang,
1470 struct ext_lang_type_printers *ext_printers)
18a9fc12 1471{
19ba03f4 1472 PyObject *printers = (PyObject *) ext_printers->py_type_printers;
18a9fc12
TT
1473
1474 if (printers == NULL)
1475 return;
1476
0646da15
TT
1477 if (!gdb_python_initialized)
1478 return;
1479
60e600ec 1480 gdbpy_enter enter_py (get_current_arch (), current_language);
18a9fc12 1481 Py_DECREF (printers);
18a9fc12
TT
1482}
1483
d57a3c85
TJB
1484#else /* HAVE_PYTHON */
1485
8315665e
YPK
1486/* Dummy implementation of the gdb "python-interactive" and "python"
1487 command. */
d57a3c85
TJB
1488
1489static void
0b39b52e 1490python_interactive_command (const char *arg, int from_tty)
d57a3c85 1491{
529480d0 1492 arg = skip_spaces (arg);
d57a3c85
TJB
1493 if (arg && *arg)
1494 error (_("Python scripting is not supported in this copy of GDB."));
1495 else
1496 {
12973681 1497 counted_command_line l = get_command_line (python_control, "");
d59b6f6c 1498
93921405 1499 execute_control_command_untraced (l.get ());
d57a3c85
TJB
1500 }
1501}
1502
8315665e 1503static void
0b39b52e 1504python_command (const char *arg, int from_tty)
8315665e
YPK
1505{
1506 python_interactive_command (arg, from_tty);
1507}
1508
d57a3c85
TJB
1509#endif /* HAVE_PYTHON */
1510
1511\f
1512
713389e0
PM
1513/* Lists for 'set python' commands. */
1514
1515static struct cmd_list_element *user_set_python_list;
1516static struct cmd_list_element *user_show_python_list;
d57a3c85 1517
713389e0
PM
1518/* Function for use by 'set python' prefix command. */
1519
1520static void
981a3fb3 1521user_set_python (const char *args, int from_tty)
713389e0
PM
1522{
1523 help_list (user_set_python_list, "set python ", all_commands,
1524 gdb_stdout);
1525}
1526
1527/* Function for use by 'show python' prefix command. */
1528
1529static void
981a3fb3 1530user_show_python (const char *args, int from_tty)
d57a3c85 1531{
713389e0 1532 cmd_show_list (user_show_python_list, from_tty, "");
d57a3c85
TJB
1533}
1534
1535/* Initialize the Python code. */
1536
810849a3
AS
1537#ifdef HAVE_PYTHON
1538
d7de8e3c
TT
1539/* This is installed as a final cleanup and cleans up the
1540 interpreter. This lets Python's 'atexit' work. */
1541
1542static void
1543finalize_python (void *ignore)
1544{
6dddc817
DE
1545 struct active_ext_lang_state *previous_active;
1546
d7de8e3c
TT
1547 /* We don't use ensure_python_env here because if we ever ran the
1548 cleanup, gdb would crash -- because the cleanup calls into the
1549 Python interpreter, which we are about to destroy. It seems
1550 clearer to make the needed calls explicitly here than to create a
1551 cleanup and then mysteriously discard it. */
6dddc817
DE
1552
1553 /* This is only called as a final cleanup so we can assume the active
1554 SIGINT handler is gdb's. We still need to tell it to notify Python. */
1555 previous_active = set_active_ext_lang (&extension_language_python);
1556
b1209b03 1557 (void) PyGILState_Ensure ();
f5656ead 1558 python_gdbarch = target_gdbarch ();
d7de8e3c
TT
1559 python_language = current_language;
1560
1561 Py_Finalize ();
6dddc817
DE
1562
1563 restore_active_ext_lang (previous_active);
d7de8e3c 1564}
2bb8f231 1565
aeab5128
PK
1566#ifdef IS_PY3K
1567/* This is called via the PyImport_AppendInittab mechanism called
1568 during initialization, to make the built-in _gdb module known to
1569 Python. */
1570PyMODINIT_FUNC
1571init__gdb_module (void)
1572{
1573 return PyModule_Create (&python_GdbModuleDef);
1574}
1575#endif
1576
2bb8f231
TT
1577static bool
1578do_start_initialization ()
d57a3c85 1579{
9a27f2c6 1580#ifdef IS_PY3K
9a27f2c6 1581 size_t progsize, count;
9a27f2c6
PK
1582 wchar_t *progname_copy;
1583#endif
713389e0 1584
0c4a4063
DE
1585#ifdef WITH_PYTHON_PATH
1586 /* Work around problem where python gets confused about where it is,
1587 and then can't find its libraries, etc.
1588 NOTE: Python assumes the following layout:
1589 /foo/bin/python
1590 /foo/lib/pythonX.Y/...
1591 This must be done before calling Py_Initialize. */
e8e7d10c
SM
1592 gdb::unique_xmalloc_ptr<char> progname
1593 (concat (ldirname (python_libdir).c_str (), SLASH_STRING, "bin",
1594 SLASH_STRING, "python", (char *) NULL));
9a27f2c6 1595#ifdef IS_PY3K
7f968c89 1596 std::string oldloc = setlocale (LC_ALL, NULL);
9a27f2c6 1597 setlocale (LC_ALL, "");
e8e7d10c 1598 progsize = strlen (progname.get ());
db0f0d0c 1599 progname_copy = (wchar_t *) PyMem_Malloc ((progsize + 1) * sizeof (wchar_t));
9a27f2c6
PK
1600 if (!progname_copy)
1601 {
1602 fprintf (stderr, "out of memory\n");
2bb8f231 1603 return false;
9a27f2c6 1604 }
e8e7d10c 1605 count = mbstowcs (progname_copy, progname.get (), progsize + 1);
9a27f2c6
PK
1606 if (count == (size_t) -1)
1607 {
1608 fprintf (stderr, "Could not convert python path to string\n");
2bb8f231 1609 return false;
9a27f2c6 1610 }
7f968c89 1611 setlocale (LC_ALL, oldloc.c_str ());
9a27f2c6
PK
1612
1613 /* Note that Py_SetProgramName expects the string it is passed to
1614 remain alive for the duration of the program's execution, so
1615 it is not freed after this call. */
1616 Py_SetProgramName (progname_copy);
aeab5128
PK
1617
1618 /* Define _gdb as a built-in module. */
1619 PyImport_AppendInittab ("_gdb", init__gdb_module);
9a27f2c6 1620#else
e8e7d10c 1621 Py_SetProgramName (progname.release ());
9a27f2c6 1622#endif
0c4a4063
DE
1623#endif
1624
d57a3c85 1625 Py_Initialize ();
ca30a762 1626 PyEval_InitThreads ();
d57a3c85 1627
9a27f2c6 1628#ifdef IS_PY3K
aeab5128 1629 gdb_module = PyImport_ImportModule ("_gdb");
9a27f2c6 1630#else
bcabf420 1631 gdb_module = Py_InitModule ("_gdb", python_GdbMethods);
9a27f2c6 1632#endif
999633ed 1633 if (gdb_module == NULL)
2bb8f231 1634 return false;
d57a3c85
TJB
1635
1636 /* The casts to (char*) are for python 2.4. */
999633ed
TT
1637 if (PyModule_AddStringConstant (gdb_module, "VERSION", (char*) version) < 0
1638 || PyModule_AddStringConstant (gdb_module, "HOST_CONFIG",
1639 (char*) host_name) < 0
1640 || PyModule_AddStringConstant (gdb_module, "TARGET_CONFIG",
1641 (char*) target_name) < 0)
2bb8f231 1642 return false;
f17618ea 1643
99c3dc11 1644 /* Add stream constants. */
999633ed
TT
1645 if (PyModule_AddIntConstant (gdb_module, "STDOUT", 0) < 0
1646 || PyModule_AddIntConstant (gdb_module, "STDERR", 1) < 0
1647 || PyModule_AddIntConstant (gdb_module, "STDLOG", 2) < 0)
2bb8f231 1648 return false;
d57a3c85 1649
621c8364 1650 gdbpy_gdb_error = PyErr_NewException ("gdb.error", PyExc_RuntimeError, NULL);
999633ed 1651 if (gdbpy_gdb_error == NULL
aa36459a 1652 || gdb_pymodule_addobject (gdb_module, "error", gdbpy_gdb_error) < 0)
2bb8f231 1653 return false;
621c8364
TT
1654
1655 gdbpy_gdb_memory_error = PyErr_NewException ("gdb.MemoryError",
1656 gdbpy_gdb_error, NULL);
999633ed 1657 if (gdbpy_gdb_memory_error == NULL
aa36459a
TT
1658 || gdb_pymodule_addobject (gdb_module, "MemoryError",
1659 gdbpy_gdb_memory_error) < 0)
2bb8f231 1660 return false;
621c8364 1661
07ca107c 1662 gdbpy_gdberror_exc = PyErr_NewException ("gdb.GdbError", NULL, NULL);
999633ed 1663 if (gdbpy_gdberror_exc == NULL
aa36459a
TT
1664 || gdb_pymodule_addobject (gdb_module, "GdbError",
1665 gdbpy_gdberror_exc) < 0)
2bb8f231 1666 return false;
07ca107c 1667
037bbc8e 1668 gdbpy_initialize_gdb_readline ();
999633ed
TT
1669
1670 if (gdbpy_initialize_auto_load () < 0
1671 || gdbpy_initialize_values () < 0
1672 || gdbpy_initialize_frames () < 0
1673 || gdbpy_initialize_commands () < 0
d050f7d7 1674 || gdbpy_initialize_instruction () < 0
4726b2d8 1675 || gdbpy_initialize_record () < 0
75c0bdf4 1676 || gdbpy_initialize_btrace () < 0
999633ed
TT
1677 || gdbpy_initialize_symbols () < 0
1678 || gdbpy_initialize_symtabs () < 0
1679 || gdbpy_initialize_blocks () < 0
1680 || gdbpy_initialize_functions () < 0
1681 || gdbpy_initialize_parameters () < 0
1682 || gdbpy_initialize_types () < 0
1683 || gdbpy_initialize_pspace () < 0
1684 || gdbpy_initialize_objfile () < 0
1685 || gdbpy_initialize_breakpoints () < 0
1686 || gdbpy_initialize_finishbreakpoints () < 0
1687 || gdbpy_initialize_lazy_string () < 0
bc79de95 1688 || gdbpy_initialize_linetable () < 0
999633ed
TT
1689 || gdbpy_initialize_thread () < 0
1690 || gdbpy_initialize_inferior () < 0
1691 || gdbpy_initialize_events () < 0
1692 || gdbpy_initialize_eventregistry () < 0
1693 || gdbpy_initialize_py_events () < 0
1694 || gdbpy_initialize_event () < 0
883964a7 1695 || gdbpy_initialize_arch () < 0
d11916aa
SS
1696 || gdbpy_initialize_xmethods () < 0
1697 || gdbpy_initialize_unwind () < 0)
2bb8f231 1698 return false;
505500db 1699
7d221d74
TT
1700#define GDB_PY_DEFINE_EVENT_TYPE(name, py_name, doc, base) \
1701 if (gdbpy_initialize_event_generic (&name##_event_object_type, py_name) < 0) \
1702 return false;
1703#include "py-event-types.def"
1704#undef GDB_PY_DEFINE_EVENT_TYPE
1705
a6bac58e 1706 gdbpy_to_string_cst = PyString_FromString ("to_string");
999633ed 1707 if (gdbpy_to_string_cst == NULL)
2bb8f231 1708 return false;
a6bac58e 1709 gdbpy_children_cst = PyString_FromString ("children");
999633ed 1710 if (gdbpy_children_cst == NULL)
2bb8f231 1711 return false;
a6bac58e 1712 gdbpy_display_hint_cst = PyString_FromString ("display_hint");
999633ed 1713 if (gdbpy_display_hint_cst == NULL)
2bb8f231 1714 return false;
d8906c6f 1715 gdbpy_doc_cst = PyString_FromString ("__doc__");
999633ed 1716 if (gdbpy_doc_cst == NULL)
2bb8f231 1717 return false;
967cf477 1718 gdbpy_enabled_cst = PyString_FromString ("enabled");
999633ed 1719 if (gdbpy_enabled_cst == NULL)
2bb8f231 1720 return false;
fb6a3ed3 1721 gdbpy_value_cst = PyString_FromString ("value");
999633ed 1722 if (gdbpy_value_cst == NULL)
2bb8f231 1723 return false;
d8906c6f 1724
9dea9163
DE
1725 /* Release the GIL while gdb runs. */
1726 PyThreadState_Swap (NULL);
1727 PyEval_ReleaseLock ();
1728
d7de8e3c 1729 make_final_cleanup (finalize_python, NULL);
999633ed 1730
2bb8f231 1731 /* Only set this when initialization has succeeded. */
999633ed 1732 gdb_python_initialized = 1;
2bb8f231
TT
1733 return true;
1734}
999633ed 1735
2bb8f231 1736#endif /* HAVE_PYTHON */
999633ed 1737
8588b356
SM
1738/* See python.h. */
1739cmd_list_element *python_cmd_element = nullptr;
1740
2bb8f231
TT
1741void
1742_initialize_python (void)
1743{
1744 add_com ("python-interactive", class_obscure,
1745 python_interactive_command,
1746#ifdef HAVE_PYTHON
1747 _("\
1748Start an interactive Python prompt.\n\
1749\n\
1750To return to GDB, type the EOF character (e.g., Ctrl-D on an empty\n\
1751prompt).\n\
1752\n\
1753Alternatively, a single-line Python command can be given as an\n\
1754argument, and if the command is an expression, the result will be\n\
1755printed. For example:\n\
1756\n\
1757 (gdb) python-interactive 2 + 3\n\
1758 5\n\
1759")
1760#else /* HAVE_PYTHON */
1761 _("\
1762Start a Python interactive prompt.\n\
1763\n\
1764Python scripting is not supported in this copy of GDB.\n\
1765This command is only a placeholder.")
1766#endif /* HAVE_PYTHON */
1767 );
1768 add_com_alias ("pi", "python-interactive", class_obscure, 1);
1769
8588b356 1770 python_cmd_element = add_com ("python", class_obscure, python_command,
2bb8f231
TT
1771#ifdef HAVE_PYTHON
1772 _("\
1773Evaluate a Python command.\n\
1774\n\
1775The command can be given as an argument, for instance:\n\
1776\n\
a154931e 1777 python print (23)\n\
2bb8f231
TT
1778\n\
1779If no argument is given, the following lines are read and used\n\
1780as the Python commands. Type a line containing \"end\" to indicate\n\
1781the end of the command.")
1782#else /* HAVE_PYTHON */
1783 _("\
1784Evaluate a Python command.\n\
1785\n\
1786Python scripting is not supported in this copy of GDB.\n\
1787This command is only a placeholder.")
1788#endif /* HAVE_PYTHON */
1789 );
1790 add_com_alias ("py", "python", class_obscure, 1);
1791
1792 /* Add set/show python print-stack. */
1793 add_prefix_cmd ("python", no_class, user_show_python,
1794 _("Prefix command for python preference settings."),
1795 &user_show_python_list, "show python ", 0,
1796 &showlist);
1797
1798 add_prefix_cmd ("python", no_class, user_set_python,
1799 _("Prefix command for python preference settings."),
1800 &user_set_python_list, "set python ", 0,
1801 &setlist);
1802
1803 add_setshow_enum_cmd ("print-stack", no_class, python_excp_enums,
1804 &gdbpy_should_print_stack, _("\
1805Set mode for Python stack dump on error."), _("\
1806Show the mode of Python stack printing on error."), _("\
1807none == no stack or message will be printed.\n\
1808full == a message and a stack will be printed.\n\
1809message == an error message without a stack will be printed."),
1810 NULL, NULL,
1811 &user_set_python_list,
1812 &user_show_python_list);
1813
1814#ifdef HAVE_PYTHON
1815 if (!do_start_initialization () && PyErr_Occurred ())
1816 gdbpy_print_stack ();
9dea9163
DE
1817#endif /* HAVE_PYTHON */
1818}
1819
1820#ifdef HAVE_PYTHON
1821
a7785f8c
TT
1822/* Helper function for gdbpy_finish_initialization. This does the
1823 work and then returns false if an error has occurred and must be
1824 displayed, or true on success. */
9dea9163 1825
a7785f8c
TT
1826static bool
1827do_finish_initialization (const struct extension_language_defn *extlang)
9dea9163 1828{
b9516fa1 1829 PyObject *m;
b9516fa1 1830 PyObject *sys_path;
f17618ea 1831
b9516fa1
YPK
1832 /* Add the initial data-directory to sys.path. */
1833
a7785f8c
TT
1834 std::string gdb_pythondir = (std::string (gdb_datadir) + SLASH_STRING
1835 + "python");
b9516fa1
YPK
1836
1837 sys_path = PySys_GetObject ("path");
ca30a762 1838
9a27f2c6
PK
1839 /* If sys.path is not defined yet, define it first. */
1840 if (!(sys_path && PyList_Check (sys_path)))
1841 {
1842#ifdef IS_PY3K
1843 PySys_SetPath (L"");
1844#else
1845 PySys_SetPath ("");
1846#endif
1847 sys_path = PySys_GetObject ("path");
1848 }
256458bc 1849 if (sys_path && PyList_Check (sys_path))
b9516fa1 1850 {
7780f186 1851 gdbpy_ref<> pythondir (PyString_FromString (gdb_pythondir.c_str ()));
a7785f8c
TT
1852 if (pythondir == NULL || PyList_Insert (sys_path, 0, pythondir.get ()))
1853 return false;
b9516fa1
YPK
1854 }
1855 else
a7785f8c 1856 return false;
b9516fa1
YPK
1857
1858 /* Import the gdb module to finish the initialization, and
1859 add it to __main__ for convenience. */
1860 m = PyImport_AddModule ("__main__");
1861 if (m == NULL)
a7785f8c 1862 return false;
b9516fa1 1863
a7785f8c
TT
1864 /* Keep the reference to gdb_python_module since it is in a global
1865 variable. */
b9516fa1
YPK
1866 gdb_python_module = PyImport_ImportModule ("gdb");
1867 if (gdb_python_module == NULL)
1868 {
1869 gdbpy_print_stack ();
41245087
DE
1870 /* This is passed in one call to warning so that blank lines aren't
1871 inserted between each line of text. */
1872 warning (_("\n"
1873 "Could not load the Python gdb module from `%s'.\n"
1874 "Limited Python support is available from the _gdb module.\n"
1875 "Suggest passing --data-directory=/path/to/gdb/data-directory.\n"),
a7785f8c
TT
1876 gdb_pythondir.c_str ());
1877 /* We return "success" here as we've already emitted the
1878 warning. */
1879 return true;
b9516fa1
YPK
1880 }
1881
a7785f8c
TT
1882 return gdb_pymodule_addobject (m, "gdb", gdb_python_module) >= 0;
1883}
b9516fa1 1884
a7785f8c
TT
1885/* Perform the remaining python initializations.
1886 These must be done after GDB is at least mostly initialized.
1887 E.g., The "info pretty-printer" command needs the "info" prefix
1888 command installed.
1889 This is the extension_language_ops.finish_initialization "method". */
b9516fa1 1890
a7785f8c
TT
1891static void
1892gdbpy_finish_initialization (const struct extension_language_defn *extlang)
1893{
1894 gdbpy_enter enter_py (get_current_arch (), current_language);
b9516fa1 1895
a7785f8c
TT
1896 if (!do_finish_initialization (extlang))
1897 {
1898 gdbpy_print_stack ();
1899 warning (_("internal error: Unhandled Python exception"));
1900 }
9dea9163 1901}
ca30a762 1902
6dddc817
DE
1903/* Return non-zero if Python has successfully initialized.
1904 This is the extension_languages_ops.initialized "method". */
1905
1906static int
1907gdbpy_initialized (const struct extension_language_defn *extlang)
1908{
1909 return gdb_python_initialized;
1910}
1911
d57a3c85 1912#endif /* HAVE_PYTHON */
12453b93
TJB
1913
1914\f
1915
9dea9163 1916#ifdef HAVE_PYTHON
12453b93 1917
bcabf420 1918PyMethodDef python_GdbMethods[] =
12453b93
TJB
1919{
1920 { "history", gdbpy_history, METH_VARARGS,
1921 "Get a value from history" },
bc9f0842 1922 { "execute", (PyCFunction) execute_gdb_command, METH_VARARGS | METH_KEYWORDS,
751e7549
PM
1923 "execute (command [, from_tty] [, to_string]) -> [String]\n\
1924Evaluate command, a string, as a gdb CLI command. Optionally returns\n\
1925a Python String containing the output of the command if to_string is\n\
1926set to True." },
8f500870 1927 { "parameter", gdbpy_parameter, METH_VARARGS,
12453b93
TJB
1928 "Return a gdb parameter's value" },
1929
adc36818
PM
1930 { "breakpoints", gdbpy_breakpoints, METH_NOARGS,
1931 "Return a tuple of all breakpoint objects" },
1932
b6313243
TT
1933 { "default_visualizer", gdbpy_default_visualizer, METH_VARARGS,
1934 "Find the default visualizer for a Value." },
1935
fa33c3cd
DE
1936 { "progspaces", gdbpy_progspaces, METH_NOARGS,
1937 "Return a sequence of all progspaces." },
1938
89c73ade
TT
1939 { "current_objfile", gdbpy_get_current_objfile, METH_NOARGS,
1940 "Return the current Objfile being loaded, or None." },
89c73ade 1941
d8e22779
TT
1942 { "newest_frame", gdbpy_newest_frame, METH_NOARGS,
1943 "newest_frame () -> gdb.Frame.\n\
1944Return the newest frame object." },
f8f6f20b
TJB
1945 { "selected_frame", gdbpy_selected_frame, METH_NOARGS,
1946 "selected_frame () -> gdb.Frame.\n\
1947Return the selected frame object." },
1948 { "frame_stop_reason_string", gdbpy_frame_stop_reason_string, METH_VARARGS,
1949 "stop_reason_string (Integer) -> String.\n\
1950Return a string explaining unwind stop reason." },
1951
4726b2d8
TW
1952 { "start_recording", gdbpy_start_recording, METH_VARARGS,
1953 "start_recording ([method] [, format]) -> gdb.Record.\n\
1954Start recording with the given method. If no method is given, will fall back\n\
1955to the system default method. If no format is given, will fall back to the\n\
1956default format for the given method."},
1957 { "current_recording", gdbpy_current_recording, METH_NOARGS,
1958 "current_recording () -> gdb.Record.\n\
1959Return current recording object." },
1960 { "stop_recording", gdbpy_stop_recording, METH_NOARGS,
1961 "stop_recording () -> None.\n\
1962Stop current recording." },
1963
2c74e833
TT
1964 { "lookup_type", (PyCFunction) gdbpy_lookup_type,
1965 METH_VARARGS | METH_KEYWORDS,
1966 "lookup_type (name [, block]) -> type\n\
1967Return a Type corresponding to the given name." },
f3e9a817
PM
1968 { "lookup_symbol", (PyCFunction) gdbpy_lookup_symbol,
1969 METH_VARARGS | METH_KEYWORDS,
1970 "lookup_symbol (name [, block] [, domain]) -> (symbol, is_field_of_this)\n\
1971Return a tuple with the symbol corresponding to the given name (or None) and\n\
1972a boolean indicating if name is a field of the current implied argument\n\
1973`this' (when the current language is object-oriented)." },
6e6fbe60
DE
1974 { "lookup_global_symbol", (PyCFunction) gdbpy_lookup_global_symbol,
1975 METH_VARARGS | METH_KEYWORDS,
1976 "lookup_global_symbol (name [, domain]) -> symbol\n\
1977Return the symbol corresponding to the given name (or None)." },
6dddd6a5
DE
1978
1979 { "lookup_objfile", (PyCFunction) gdbpy_lookup_objfile,
1980 METH_VARARGS | METH_KEYWORDS,
1981 "lookup_objfile (name, [by_build_id]) -> objfile\n\
1982Look up the specified objfile.\n\
1983If by_build_id is True, the objfile is looked up by using name\n\
1984as its build id." },
1985
cb2e07a6
PM
1986 { "decode_line", gdbpy_decode_line, METH_VARARGS,
1987 "decode_line (String) -> Tuple. Decode a string argument the way\n\
1988that 'break' or 'edit' does. Return a tuple containing two elements.\n\
1989The first element contains any unparsed portion of the String parameter\n\
1990(or None if the string was fully parsed). The second element contains\n\
1991a tuple that contains all the locations that match, represented as\n\
1992gdb.Symtab_and_line objects (or None)."},
57a1d736
TT
1993 { "parse_and_eval", gdbpy_parse_and_eval, METH_VARARGS,
1994 "parse_and_eval (String) -> Value.\n\
1995Parse String as an expression, evaluate it, and return the result as a Value."
1996 },
1997
ca5c20b6
PM
1998 { "post_event", gdbpy_post_event, METH_VARARGS,
1999 "Post an event into gdb's event loop." },
2000
f870a310
TT
2001 { "target_charset", gdbpy_target_charset, METH_NOARGS,
2002 "target_charset () -> string.\n\
2003Return the name of the current target charset." },
2004 { "target_wide_charset", gdbpy_target_wide_charset, METH_NOARGS,
2005 "target_wide_charset () -> string.\n\
2006Return the name of the current target wide charset." },
d8ae99a7
PM
2007 { "rbreak", (PyCFunction) gdbpy_rbreak, METH_VARARGS | METH_KEYWORDS,
2008 "rbreak (Regex) -> List.\n\
2009Return a Tuple containing gdb.Breakpoint objects that match the given Regex." },
07ca107c
DE
2010 { "string_to_argv", gdbpy_string_to_argv, METH_VARARGS,
2011 "string_to_argv (String) -> Array.\n\
2012Parse String and return an argv-like array.\n\
2013Arguments are separate by spaces and may be quoted."
2014 },
99c3dc11 2015 { "write", (PyCFunction)gdbpy_write, METH_VARARGS | METH_KEYWORDS,
12453b93 2016 "Write a string using gdb's filtered stream." },
99c3dc11 2017 { "flush", (PyCFunction)gdbpy_flush, METH_VARARGS | METH_KEYWORDS,
12453b93 2018 "Flush gdb's filtered stdout stream." },
595939de
PM
2019 { "selected_thread", gdbpy_selected_thread, METH_NOARGS,
2020 "selected_thread () -> gdb.InferiorThread.\n\
2021Return the selected thread object." },
2aa48337
KP
2022 { "selected_inferior", gdbpy_selected_inferior, METH_NOARGS,
2023 "selected_inferior () -> gdb.Inferior.\n\
2024Return the selected inferior object." },
595939de
PM
2025 { "inferiors", gdbpy_inferiors, METH_NOARGS,
2026 "inferiors () -> (gdb.Inferior, ...).\n\
2027Return a tuple containing all inferiors." },
e0f3fd7c
TT
2028
2029 { "invalidate_cached_frames", gdbpy_invalidate_cached_frames, METH_NOARGS,
2030 "invalidate_cached_frames () -> None.\n\
2031Invalidate any cached frame objects in gdb.\n\
2032Intended for internal use only." },
2033
7729052b
TT
2034 { "convenience_variable", gdbpy_convenience_variable, METH_VARARGS,
2035 "convenience_variable (NAME) -> value.\n\
2036Return the value of the convenience variable $NAME,\n\
2037or None if not set." },
2038 { "set_convenience_variable", gdbpy_set_convenience_variable, METH_VARARGS,
2039 "convenience_variable (NAME, VALUE) -> None.\n\
2040Set the value of the convenience variable $NAME." },
2041
12453b93
TJB
2042 {NULL, NULL, 0, NULL}
2043};
2044
9a27f2c6 2045#ifdef IS_PY3K
bcabf420 2046struct PyModuleDef python_GdbModuleDef =
9a27f2c6
PK
2047{
2048 PyModuleDef_HEAD_INIT,
2049 "_gdb",
2050 NULL,
256458bc 2051 -1,
02e62830 2052 python_GdbMethods,
9a27f2c6
PK
2053 NULL,
2054 NULL,
2055 NULL,
2056 NULL
2057};
2058#endif
7d221d74
TT
2059
2060/* Define all the event objects. */
2061#define GDB_PY_DEFINE_EVENT_TYPE(name, py_name, doc, base) \
2062 PyTypeObject name##_event_object_type \
2063 CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("event_object") \
2064 = { \
2065 PyVarObject_HEAD_INIT (NULL, 0) \
2066 "gdb." py_name, /* tp_name */ \
2067 sizeof (event_object), /* tp_basicsize */ \
2068 0, /* tp_itemsize */ \
2069 evpy_dealloc, /* tp_dealloc */ \
2070 0, /* tp_print */ \
2071 0, /* tp_getattr */ \
2072 0, /* tp_setattr */ \
2073 0, /* tp_compare */ \
2074 0, /* tp_repr */ \
2075 0, /* tp_as_number */ \
2076 0, /* tp_as_sequence */ \
2077 0, /* tp_as_mapping */ \
2078 0, /* tp_hash */ \
2079 0, /* tp_call */ \
2080 0, /* tp_str */ \
2081 0, /* tp_getattro */ \
2082 0, /* tp_setattro */ \
2083 0, /* tp_as_buffer */ \
2084 Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */ \
2085 doc, /* tp_doc */ \
2086 0, /* tp_traverse */ \
2087 0, /* tp_clear */ \
2088 0, /* tp_richcompare */ \
2089 0, /* tp_weaklistoffset */ \
2090 0, /* tp_iter */ \
2091 0, /* tp_iternext */ \
2092 0, /* tp_methods */ \
2093 0, /* tp_members */ \
2094 0, /* tp_getset */ \
2095 &base, /* tp_base */ \
2096 0, /* tp_dict */ \
2097 0, /* tp_descr_get */ \
2098 0, /* tp_descr_set */ \
2099 0, /* tp_dictoffset */ \
2100 0, /* tp_init */ \
2101 0 /* tp_alloc */ \
2102 };
2103#include "py-event-types.def"
2104#undef GDB_PY_DEFINE_EVENT_TYPE
2105
12453b93 2106#endif /* HAVE_PYTHON */
This page took 1.160538 seconds and 4 git commands to generate.