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