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