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