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