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