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