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