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