]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/python/python.c
quit_force: Replace TRY_CATCH wrapper macros
[thirdparty/binutils-gdb.git] / gdb / python / python.c
CommitLineData
d57a3c85
TJB
1/* General python/gdb code
2
32d0add0 3 Copyright (C) 2008-2015 Free Software Foundation, Inc.
d57a3c85
TJB
4
5 This file is part of GDB.
6
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 3 of the License, or
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
19
20#include "defs.h"
d452c4bc 21#include "arch-utils.h"
d57a3c85
TJB
22#include "command.h"
23#include "ui-out.h"
24#include "cli/cli-script.h"
25#include "gdbcmd.h"
fa33c3cd 26#include "progspace.h"
89c73ade 27#include "objfiles.h"
d452c4bc
UW
28#include "value.h"
29#include "language.h"
ca5c20b6 30#include "event-loop.h"
4a532131 31#include "serial.h"
3ab1ec27 32#include "readline/tilde.h"
7371cf6d 33#include "python.h"
6dddc817 34#include "extension-priv.h"
529480d0 35#include "cli/cli-utils.h"
d57a3c85
TJB
36#include <ctype.h>
37
80b6e756
PM
38/* Declared constants and enum for python stack printing. */
39static const char python_excp_none[] = "none";
40static const char python_excp_full[] = "full";
41static const char python_excp_message[] = "message";
42
43/* "set python print-stack" choices. */
40478521 44static const char *const python_excp_enums[] =
80b6e756
PM
45 {
46 python_excp_none,
47 python_excp_full,
48 python_excp_message,
49 NULL
50 };
51
52/* The exception printing variable. 'full' if we want to print the
53 error message and stack, 'none' if we want to print nothing, and
54 'message' if we only want to print the error message. 'message' is
55 the default. */
56static const char *gdbpy_should_print_stack = python_excp_message;
d57a3c85 57
6dddc817
DE
58#ifdef HAVE_PYTHON
59/* Forward decls, these are defined later. */
e36122e9
TT
60extern const struct extension_language_script_ops python_extension_script_ops;
61extern const struct extension_language_ops python_extension_ops;
6dddc817
DE
62#endif
63
64/* The main struct describing GDB's interface to the Python
65 extension language. */
66const struct extension_language_defn extension_language_python =
67{
68 EXT_LANG_PYTHON,
69 "python",
70 "Python",
71
72 ".py",
73 "-gdb.py",
74
75 python_control,
76
77#ifdef HAVE_PYTHON
78 &python_extension_script_ops,
79 &python_extension_ops
80#else
81 NULL,
82 NULL
83#endif
84};
85\f
d57a3c85
TJB
86#ifdef HAVE_PYTHON
87
d57a3c85
TJB
88#include "cli/cli-decode.h"
89#include "charset.h"
90#include "top.h"
cb2e07a6 91#include "solib.h"
d57a3c85 92#include "python-internal.h"
cb2e07a6
PM
93#include "linespec.h"
94#include "source.h"
d57a3c85
TJB
95#include "version.h"
96#include "target.h"
97#include "gdbthread.h"
b4a14fd0 98#include "interps.h"
9a27f2c6 99#include "event-top.h"
d57a3c85 100
999633ed
TT
101/* True if Python has been successfully initialized, false
102 otherwise. */
103
104int gdb_python_initialized;
105
bcabf420 106extern PyMethodDef python_GdbMethods[];
d57a3c85 107
9a27f2c6 108#ifdef IS_PY3K
bcabf420 109extern struct PyModuleDef python_GdbModuleDef;
9a27f2c6
PK
110#endif
111
d57a3c85 112PyObject *gdb_module;
b9516fa1 113PyObject *gdb_python_module;
d57a3c85 114
a6bac58e
TT
115/* Some string constants we may wish to use. */
116PyObject *gdbpy_to_string_cst;
117PyObject *gdbpy_children_cst;
118PyObject *gdbpy_display_hint_cst;
d8906c6f 119PyObject *gdbpy_doc_cst;
967cf477 120PyObject *gdbpy_enabled_cst;
fb6a3ed3 121PyObject *gdbpy_value_cst;
d8906c6f 122
07ca107c
DE
123/* The GdbError exception. */
124PyObject *gdbpy_gdberror_exc;
d452c4bc 125
621c8364
TT
126/* The `gdb.error' base class. */
127PyObject *gdbpy_gdb_error;
128
129/* The `gdb.MemoryError' exception. */
130PyObject *gdbpy_gdb_memory_error;
131
6dddc817
DE
132static script_sourcer_func gdbpy_source_script;
133static objfile_script_sourcer_func gdbpy_source_objfile_script;
9f050062 134static objfile_script_executor_func gdbpy_execute_objfile_script;
6dddc817
DE
135static void gdbpy_finish_initialization
136 (const struct extension_language_defn *);
137static int gdbpy_initialized (const struct extension_language_defn *);
138static void gdbpy_eval_from_control_command
139 (const struct extension_language_defn *, struct command_line *cmd);
140static void gdbpy_start_type_printers (const struct extension_language_defn *,
141 struct ext_lang_type_printers *);
142static enum ext_lang_rc gdbpy_apply_type_printers
143 (const struct extension_language_defn *,
144 const struct ext_lang_type_printers *, struct type *, char **);
145static void gdbpy_free_type_printers (const struct extension_language_defn *,
146 struct ext_lang_type_printers *);
147static void gdbpy_clear_quit_flag (const struct extension_language_defn *);
148static void gdbpy_set_quit_flag (const struct extension_language_defn *);
149static int gdbpy_check_quit_flag (const struct extension_language_defn *);
150static enum ext_lang_rc gdbpy_before_prompt_hook
151 (const struct extension_language_defn *, const char *current_gdb_prompt);
152
153/* The interface between gdb proper and loading of python scripts. */
154
e36122e9 155const struct extension_language_script_ops python_extension_script_ops =
6dddc817
DE
156{
157 gdbpy_source_script,
158 gdbpy_source_objfile_script,
9f050062 159 gdbpy_execute_objfile_script,
6dddc817
DE
160 gdbpy_auto_load_enabled
161};
162
163/* The interface between gdb proper and python extensions. */
164
e36122e9 165const struct extension_language_ops python_extension_ops =
6dddc817
DE
166{
167 gdbpy_finish_initialization,
168 gdbpy_initialized,
169
170 gdbpy_eval_from_control_command,
171
172 gdbpy_start_type_printers,
173 gdbpy_apply_type_printers,
174 gdbpy_free_type_printers,
175
176 gdbpy_apply_val_pretty_printer,
177
178 gdbpy_apply_frame_filter,
179
180 gdbpy_preserve_values,
181
182 gdbpy_breakpoint_has_cond,
183 gdbpy_breakpoint_cond_says_stop,
184
185 gdbpy_clear_quit_flag,
186 gdbpy_set_quit_flag,
187 gdbpy_check_quit_flag,
188
883964a7
SC
189 gdbpy_before_prompt_hook,
190
191 gdbpy_clone_xmethod_worker_data,
192 gdbpy_free_xmethod_worker_data,
193 gdbpy_get_matching_xmethod_workers,
194 gdbpy_get_xmethod_arg_types,
195 gdbpy_invoke_xmethod
6dddc817
DE
196};
197
d452c4bc
UW
198/* Architecture and language to be used in callbacks from
199 the Python interpreter. */
200struct gdbarch *python_gdbarch;
201const struct language_defn *python_language;
202
203/* Restore global language and architecture and Python GIL state
204 when leaving the Python interpreter. */
205
206struct python_env
207{
6dddc817 208 struct active_ext_lang_state *previous_active;
d452c4bc
UW
209 PyGILState_STATE state;
210 struct gdbarch *gdbarch;
211 const struct language_defn *language;
8dc78533 212 PyObject *error_type, *error_value, *error_traceback;
d452c4bc
UW
213};
214
215static void
216restore_python_env (void *p)
217{
218 struct python_env *env = (struct python_env *)p;
d59b6f6c 219
8dc78533
JK
220 /* Leftover Python error is forbidden by Python Exception Handling. */
221 if (PyErr_Occurred ())
222 {
223 /* This order is similar to the one calling error afterwards. */
224 gdbpy_print_stack ();
225 warning (_("internal error: Unhandled Python exception"));
226 }
227
228 PyErr_Restore (env->error_type, env->error_value, env->error_traceback);
229
d452c4bc
UW
230 PyGILState_Release (env->state);
231 python_gdbarch = env->gdbarch;
232 python_language = env->language;
6dddc817
DE
233
234 restore_active_ext_lang (env->previous_active);
235
d452c4bc
UW
236 xfree (env);
237}
238
239/* Called before entering the Python interpreter to install the
6dddc817
DE
240 current language and architecture to be used for Python values.
241 Also set the active extension language for GDB so that SIGINT's
242 are directed our way, and if necessary install the right SIGINT
243 handler. */
d452c4bc
UW
244
245struct cleanup *
246ensure_python_env (struct gdbarch *gdbarch,
247 const struct language_defn *language)
248{
249 struct python_env *env = xmalloc (sizeof *env);
250
0646da15
TT
251 /* We should not ever enter Python unless initialized. */
252 if (!gdb_python_initialized)
253 error (_("Python not initialized"));
254
6dddc817
DE
255 env->previous_active = set_active_ext_lang (&extension_language_python);
256
d452c4bc
UW
257 env->state = PyGILState_Ensure ();
258 env->gdbarch = python_gdbarch;
259 env->language = python_language;
260
261 python_gdbarch = gdbarch;
262 python_language = language;
263
8dc78533
JK
264 /* Save it and ensure ! PyErr_Occurred () afterwards. */
265 PyErr_Fetch (&env->error_type, &env->error_value, &env->error_traceback);
256458bc 266
d452c4bc
UW
267 return make_cleanup (restore_python_env, env);
268}
269
522002f9
TT
270/* Clear the quit flag. */
271
6dddc817
DE
272static void
273gdbpy_clear_quit_flag (const struct extension_language_defn *extlang)
522002f9
TT
274{
275 /* This clears the flag as a side effect. */
276 PyOS_InterruptOccurred ();
277}
278
279/* Set the quit flag. */
280
6dddc817
DE
281static void
282gdbpy_set_quit_flag (const struct extension_language_defn *extlang)
522002f9
TT
283{
284 PyErr_SetInterrupt ();
285}
286
287/* Return true if the quit flag has been set, false otherwise. */
288
6dddc817
DE
289static int
290gdbpy_check_quit_flag (const struct extension_language_defn *extlang)
522002f9
TT
291{
292 return PyOS_InterruptOccurred ();
293}
294
8315665e
YPK
295/* Evaluate a Python command like PyRun_SimpleString, but uses
296 Py_single_input which prints the result of expressions, and does
297 not automatically print the stack on errors. */
298
299static int
300eval_python_command (const char *command)
301{
302 PyObject *m, *d, *v;
303
304 m = PyImport_AddModule ("__main__");
305 if (m == NULL)
306 return -1;
307
308 d = PyModule_GetDict (m);
309 if (d == NULL)
310 return -1;
311 v = PyRun_StringFlags (command, Py_single_input, d, d, NULL);
312 if (v == NULL)
313 return -1;
314
315 Py_DECREF (v);
9a27f2c6 316#ifndef IS_PY3K
8315665e
YPK
317 if (Py_FlushLine ())
318 PyErr_Clear ();
9a27f2c6 319#endif
8315665e
YPK
320
321 return 0;
322}
323
324/* Implementation of the gdb "python-interactive" command. */
325
326static void
327python_interactive_command (char *arg, int from_tty)
328{
329 struct cleanup *cleanup;
330 int err;
331
332 cleanup = make_cleanup_restore_integer (&interpreter_async);
333 interpreter_async = 0;
334
529480d0 335 arg = skip_spaces (arg);
8315665e
YPK
336
337 ensure_python_env (get_current_arch (), current_language);
338
339 if (arg && *arg)
340 {
341 int len = strlen (arg);
342 char *script = xmalloc (len + 2);
343
344 strcpy (script, arg);
345 script[len] = '\n';
346 script[len + 1] = '\0';
347 err = eval_python_command (script);
348 xfree (script);
349 }
350 else
351 {
352 err = PyRun_InteractiveLoop (instream, "<stdin>");
353 dont_repeat ();
354 }
355
356 if (err)
357 {
358 gdbpy_print_stack ();
359 error (_("Error while executing Python code."));
360 }
361
362 do_cleanups (cleanup);
363}
364
4c63965b
JK
365/* A wrapper around PyRun_SimpleFile. FILE is the Python script to run
366 named FILENAME.
367
368 On Windows hosts few users would build Python themselves (this is no
369 trivial task on this platform), and thus use binaries built by
370 someone else instead. There may happen situation where the Python
371 library and GDB are using two different versions of the C runtime
372 library. Python, being built with VC, would use one version of the
373 msvcr DLL (Eg. msvcr100.dll), while MinGW uses msvcrt.dll.
374 A FILE * from one runtime does not necessarily operate correctly in
7ed7d719
JB
375 the other runtime.
376
4c63965b
JK
377 To work around this potential issue, we create on Windows hosts the
378 FILE object using Python routines, thus making sure that it is
379 compatible with the Python library. */
7ed7d719
JB
380
381static void
4c63965b 382python_run_simple_file (FILE *file, const char *filename)
7ed7d719 383{
4c63965b
JK
384#ifndef _WIN32
385
386 PyRun_SimpleFile (file, filename);
387
388#else /* _WIN32 */
389
3ab1ec27 390 char *full_path;
7ed7d719
JB
391 PyObject *python_file;
392 struct cleanup *cleanup;
393
3ab1ec27
PM
394 /* Because we have a string for a filename, and are using Python to
395 open the file, we need to expand any tilde in the path first. */
396 full_path = tilde_expand (filename);
397 cleanup = make_cleanup (xfree, full_path);
398 python_file = PyFile_FromString (full_path, "r");
399 if (! python_file)
400 {
401 do_cleanups (cleanup);
402 gdbpy_print_stack ();
403 error (_("Error while opening file: %s"), full_path);
404 }
256458bc 405
7ed7d719
JB
406 make_cleanup_py_decref (python_file);
407 PyRun_SimpleFile (PyFile_AsFile (python_file), filename);
408 do_cleanups (cleanup);
4c63965b
JK
409
410#endif /* _WIN32 */
7ed7d719 411}
d452c4bc 412
d57a3c85
TJB
413/* Given a command_line, return a command string suitable for passing
414 to Python. Lines in the string are separated by newlines. The
415 return value is allocated using xmalloc and the caller is
416 responsible for freeing it. */
417
418static char *
419compute_python_string (struct command_line *l)
420{
421 struct command_line *iter;
422 char *script = NULL;
423 int size = 0;
424 int here;
425
426 for (iter = l; iter; iter = iter->next)
427 size += strlen (iter->line) + 1;
428
429 script = xmalloc (size + 1);
430 here = 0;
431 for (iter = l; iter; iter = iter->next)
432 {
433 int len = strlen (iter->line);
d59b6f6c 434
d57a3c85
TJB
435 strcpy (&script[here], iter->line);
436 here += len;
437 script[here++] = '\n';
438 }
439 script[here] = '\0';
440 return script;
441}
442
443/* Take a command line structure representing a 'python' command, and
444 evaluate its body using the Python interpreter. */
445
6dddc817
DE
446static void
447gdbpy_eval_from_control_command (const struct extension_language_defn *extlang,
448 struct command_line *cmd)
d57a3c85 449{
12453b93 450 int ret;
d57a3c85 451 char *script;
ca30a762 452 struct cleanup *cleanup;
d57a3c85
TJB
453
454 if (cmd->body_count != 1)
455 error (_("Invalid \"python\" block structure."));
456
d452c4bc 457 cleanup = ensure_python_env (get_current_arch (), current_language);
ca30a762 458
d57a3c85 459 script = compute_python_string (cmd->body_list[0]);
12453b93 460 ret = PyRun_SimpleString (script);
d57a3c85 461 xfree (script);
12453b93 462 if (ret)
80b6e756 463 error (_("Error while executing Python code."));
ca30a762
TT
464
465 do_cleanups (cleanup);
d57a3c85
TJB
466}
467
468/* Implementation of the gdb "python" command. */
469
470static void
471python_command (char *arg, int from_tty)
472{
ca30a762 473 struct cleanup *cleanup;
ca30a762 474
d59b6f6c 475 cleanup = ensure_python_env (get_current_arch (), current_language);
b4a14fd0
PA
476
477 make_cleanup_restore_integer (&interpreter_async);
478 interpreter_async = 0;
479
529480d0 480 arg = skip_spaces (arg);
d57a3c85
TJB
481 if (arg && *arg)
482 {
12453b93 483 if (PyRun_SimpleString (arg))
80b6e756 484 error (_("Error while executing Python code."));
d57a3c85
TJB
485 }
486 else
487 {
488 struct command_line *l = get_command_line (python_control, "");
d59b6f6c 489
ca30a762 490 make_cleanup_free_command_lines (&l);
d57a3c85 491 execute_control_command_untraced (l);
d57a3c85 492 }
ca30a762
TT
493
494 do_cleanups (cleanup);
d57a3c85
TJB
495}
496
497\f
498
499/* Transform a gdb parameters's value into a Python value. May return
500 NULL (and set a Python exception) on error. Helper function for
501 get_parameter. */
d7b32ed3
PM
502PyObject *
503gdbpy_parameter_value (enum var_types type, void *var)
d57a3c85 504{
d7b32ed3 505 switch (type)
d57a3c85
TJB
506 {
507 case var_string:
508 case var_string_noescape:
509 case var_optional_filename:
510 case var_filename:
511 case var_enum:
512 {
d7b32ed3 513 char *str = * (char **) var;
d59b6f6c 514
d57a3c85
TJB
515 if (! str)
516 str = "";
517 return PyString_Decode (str, strlen (str), host_charset (), NULL);
518 }
519
520 case var_boolean:
521 {
d7b32ed3 522 if (* (int *) var)
d57a3c85
TJB
523 Py_RETURN_TRUE;
524 else
525 Py_RETURN_FALSE;
526 }
527
528 case var_auto_boolean:
529 {
d7b32ed3 530 enum auto_boolean ab = * (enum auto_boolean *) var;
d59b6f6c 531
d57a3c85
TJB
532 if (ab == AUTO_BOOLEAN_TRUE)
533 Py_RETURN_TRUE;
534 else if (ab == AUTO_BOOLEAN_FALSE)
535 Py_RETURN_FALSE;
536 else
537 Py_RETURN_NONE;
538 }
539
540 case var_integer:
d7b32ed3 541 if ((* (int *) var) == INT_MAX)
d57a3c85
TJB
542 Py_RETURN_NONE;
543 /* Fall through. */
544 case var_zinteger:
d7b32ed3 545 return PyLong_FromLong (* (int *) var);
d57a3c85
TJB
546
547 case var_uinteger:
548 {
d7b32ed3 549 unsigned int val = * (unsigned int *) var;
d59b6f6c 550
d57a3c85
TJB
551 if (val == UINT_MAX)
552 Py_RETURN_NONE;
553 return PyLong_FromUnsignedLong (val);
554 }
555 }
556
256458bc 557 return PyErr_Format (PyExc_RuntimeError,
044c0f87 558 _("Programmer error: unhandled type."));
d57a3c85
TJB
559}
560
561/* A Python function which returns a gdb parameter's value as a Python
562 value. */
563
d7b32ed3 564PyObject *
8f500870 565gdbpy_parameter (PyObject *self, PyObject *args)
d57a3c85
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
9f050062
DE
1267 gdbpy_source_objfile_script and gdbpy_execute_objfile_script; it is NULL
1268 at other times. */
89c73ade
TT
1269static struct objfile *gdbpy_current_objfile;
1270
4c63965b
JK
1271/* Set the current objfile to OBJFILE and then read FILE named FILENAME
1272 as Python code. This does not throw any errors. If an exception
6dddc817
DE
1273 occurs python will print the traceback and clear the error indicator.
1274 This is the extension_language_script_ops.objfile_script_sourcer
1275 "method". */
89c73ade 1276
6dddc817
DE
1277static void
1278gdbpy_source_objfile_script (const struct extension_language_defn *extlang,
1279 struct objfile *objfile, FILE *file,
1280 const char *filename)
89c73ade 1281{
89c73ade
TT
1282 struct cleanup *cleanups;
1283
0646da15
TT
1284 if (!gdb_python_initialized)
1285 return;
1286
d452c4bc 1287 cleanups = ensure_python_env (get_objfile_arch (objfile), current_language);
89c73ade
TT
1288 gdbpy_current_objfile = objfile;
1289
4c63965b 1290 python_run_simple_file (file, filename);
89c73ade
TT
1291
1292 do_cleanups (cleanups);
1293 gdbpy_current_objfile = NULL;
89c73ade
TT
1294}
1295
9f050062
DE
1296/* Set the current objfile to OBJFILE and then execute SCRIPT
1297 as Python code. This does not throw any errors. If an exception
1298 occurs python will print the traceback and clear the error indicator.
1299 This is the extension_language_script_ops.objfile_script_executor
1300 "method". */
1301
1302static void
1303gdbpy_execute_objfile_script (const struct extension_language_defn *extlang,
1304 struct objfile *objfile, const char *name,
1305 const char *script)
1306{
1307 struct cleanup *cleanups;
1308
1309 if (!gdb_python_initialized)
1310 return;
1311
1312 cleanups = ensure_python_env (get_objfile_arch (objfile), current_language);
1313 gdbpy_current_objfile = objfile;
1314
1315 PyRun_SimpleString (script);
1316
1317 do_cleanups (cleanups);
1318 gdbpy_current_objfile = NULL;
1319}
1320
89c73ade 1321/* Return the current Objfile, or None if there isn't one. */
8a1ea21f 1322
89c73ade
TT
1323static PyObject *
1324gdbpy_get_current_objfile (PyObject *unused1, PyObject *unused2)
1325{
1326 PyObject *result;
1327
1328 if (! gdbpy_current_objfile)
1329 Py_RETURN_NONE;
1330
1331 result = objfile_to_objfile_object (gdbpy_current_objfile);
1332 if (result)
1333 Py_INCREF (result);
1334 return result;
1335}
1336
1337/* Return a sequence holding all the Objfiles. */
fa33c3cd 1338
89c73ade
TT
1339static PyObject *
1340gdbpy_objfiles (PyObject *unused1, PyObject *unused2)
1341{
1342 struct objfile *objf;
1343 PyObject *list;
1344
1345 list = PyList_New (0);
1346 if (!list)
1347 return NULL;
1348
1349 ALL_OBJFILES (objf)
1350 {
1351 PyObject *item = objfile_to_objfile_object (objf);
d59b6f6c 1352
89c73ade
TT
1353 if (!item || PyList_Append (list, item) == -1)
1354 {
1355 Py_DECREF (list);
1356 return NULL;
1357 }
1358 }
1359
1360 return list;
1361}
1362
6dddc817
DE
1363/* Compute the list of active python type printers and store them in
1364 EXT_PRINTERS->py_type_printers. The product of this function is used by
1365 gdbpy_apply_type_printers, and freed by gdbpy_free_type_printers.
1366 This is the extension_language_ops.start_type_printers "method". */
18a9fc12 1367
6dddc817
DE
1368static void
1369gdbpy_start_type_printers (const struct extension_language_defn *extlang,
1370 struct ext_lang_type_printers *ext_printers)
18a9fc12
TT
1371{
1372 struct cleanup *cleanups;
6dddc817 1373 PyObject *type_module, *func = NULL, *printers_obj = NULL;
18a9fc12 1374
0646da15 1375 if (!gdb_python_initialized)
6dddc817 1376 return;
0646da15 1377
18a9fc12
TT
1378 cleanups = ensure_python_env (get_current_arch (), current_language);
1379
1380 type_module = PyImport_ImportModule ("gdb.types");
1381 if (type_module == NULL)
1382 {
1383 gdbpy_print_stack ();
1384 goto done;
1385 }
18a9fc12
TT
1386
1387 func = PyObject_GetAttrString (type_module, "get_type_recognizers");
1388 if (func == NULL)
1389 {
1390 gdbpy_print_stack ();
1391 goto done;
1392 }
18a9fc12 1393
6dddc817
DE
1394 printers_obj = PyObject_CallFunctionObjArgs (func, (char *) NULL);
1395 if (printers_obj == NULL)
18a9fc12 1396 gdbpy_print_stack ();
6dddc817
DE
1397 else
1398 ext_printers->py_type_printers = printers_obj;
18a9fc12
TT
1399
1400 done:
3d4a3c3e
TT
1401 Py_XDECREF (type_module);
1402 Py_XDECREF (func);
18a9fc12 1403 do_cleanups (cleanups);
18a9fc12
TT
1404}
1405
6dddc817
DE
1406/* If TYPE is recognized by some type printer, store in *PRETTIED_TYPE
1407 a newly allocated string holding the type's replacement name, and return
1408 EXT_LANG_RC_OK. The caller is responsible for freeing the string.
1409 If there's a Python error return EXT_LANG_RC_ERROR.
1410 Otherwise, return EXT_LANG_RC_NOP.
1411 This is the extension_language_ops.apply_type_printers "method". */
1412
1413static enum ext_lang_rc
1414gdbpy_apply_type_printers (const struct extension_language_defn *extlang,
1415 const struct ext_lang_type_printers *ext_printers,
1416 struct type *type, char **prettied_type)
18a9fc12
TT
1417{
1418 struct cleanup *cleanups;
3d4a3c3e
TT
1419 PyObject *type_obj, *type_module = NULL, *func = NULL;
1420 PyObject *result_obj = NULL;
6dddc817 1421 PyObject *printers_obj = ext_printers->py_type_printers;
18a9fc12
TT
1422 char *result = NULL;
1423
1424 if (printers_obj == NULL)
6dddc817 1425 return EXT_LANG_RC_NOP;
18a9fc12 1426
0646da15 1427 if (!gdb_python_initialized)
6dddc817 1428 return EXT_LANG_RC_NOP;
0646da15 1429
18a9fc12
TT
1430 cleanups = ensure_python_env (get_current_arch (), current_language);
1431
1432 type_obj = type_to_type_object (type);
1433 if (type_obj == NULL)
1434 {
1435 gdbpy_print_stack ();
1436 goto done;
1437 }
18a9fc12
TT
1438
1439 type_module = PyImport_ImportModule ("gdb.types");
1440 if (type_module == NULL)
1441 {
1442 gdbpy_print_stack ();
1443 goto done;
1444 }
18a9fc12
TT
1445
1446 func = PyObject_GetAttrString (type_module, "apply_type_recognizers");
1447 if (func == NULL)
1448 {
1449 gdbpy_print_stack ();
1450 goto done;
1451 }
18a9fc12
TT
1452
1453 result_obj = PyObject_CallFunctionObjArgs (func, printers_obj,
1454 type_obj, (char *) NULL);
1455 if (result_obj == NULL)
1456 {
1457 gdbpy_print_stack ();
1458 goto done;
1459 }
18a9fc12
TT
1460
1461 if (result_obj != Py_None)
1462 {
1463 result = python_string_to_host_string (result_obj);
1464 if (result == NULL)
1465 gdbpy_print_stack ();
1466 }
1467
1468 done:
3d4a3c3e
TT
1469 Py_XDECREF (type_obj);
1470 Py_XDECREF (type_module);
1471 Py_XDECREF (func);
1472 Py_XDECREF (result_obj);
18a9fc12 1473 do_cleanups (cleanups);
6dddc817
DE
1474 if (result != NULL)
1475 *prettied_type = result;
1476 return result != NULL ? EXT_LANG_RC_OK : EXT_LANG_RC_ERROR;
18a9fc12
TT
1477}
1478
6dddc817
DE
1479/* Free the result of start_type_printers.
1480 This is the extension_language_ops.free_type_printers "method". */
18a9fc12 1481
6dddc817
DE
1482static void
1483gdbpy_free_type_printers (const struct extension_language_defn *extlang,
1484 struct ext_lang_type_printers *ext_printers)
18a9fc12
TT
1485{
1486 struct cleanup *cleanups;
6dddc817 1487 PyObject *printers = ext_printers->py_type_printers;
18a9fc12
TT
1488
1489 if (printers == NULL)
1490 return;
1491
0646da15
TT
1492 if (!gdb_python_initialized)
1493 return;
1494
18a9fc12
TT
1495 cleanups = ensure_python_env (get_current_arch (), current_language);
1496 Py_DECREF (printers);
1497 do_cleanups (cleanups);
1498}
1499
d57a3c85
TJB
1500#else /* HAVE_PYTHON */
1501
8315665e
YPK
1502/* Dummy implementation of the gdb "python-interactive" and "python"
1503 command. */
d57a3c85
TJB
1504
1505static void
8315665e 1506python_interactive_command (char *arg, int from_tty)
d57a3c85 1507{
529480d0 1508 arg = skip_spaces (arg);
d57a3c85
TJB
1509 if (arg && *arg)
1510 error (_("Python scripting is not supported in this copy of GDB."));
1511 else
1512 {
1513 struct command_line *l = get_command_line (python_control, "");
1514 struct cleanup *cleanups = make_cleanup_free_command_lines (&l);
d59b6f6c 1515
d57a3c85
TJB
1516 execute_control_command_untraced (l);
1517 do_cleanups (cleanups);
1518 }
1519}
1520
8315665e
YPK
1521static void
1522python_command (char *arg, int from_tty)
1523{
1524 python_interactive_command (arg, from_tty);
1525}
1526
d57a3c85
TJB
1527#endif /* HAVE_PYTHON */
1528
1529\f
1530
713389e0
PM
1531/* Lists for 'set python' commands. */
1532
1533static struct cmd_list_element *user_set_python_list;
1534static struct cmd_list_element *user_show_python_list;
d57a3c85 1535
713389e0
PM
1536/* Function for use by 'set python' prefix command. */
1537
1538static void
1539user_set_python (char *args, int from_tty)
1540{
1541 help_list (user_set_python_list, "set python ", all_commands,
1542 gdb_stdout);
1543}
1544
1545/* Function for use by 'show python' prefix command. */
1546
1547static void
1548user_show_python (char *args, int from_tty)
d57a3c85 1549{
713389e0 1550 cmd_show_list (user_show_python_list, from_tty, "");
d57a3c85
TJB
1551}
1552
1553/* Initialize the Python code. */
1554
810849a3
AS
1555#ifdef HAVE_PYTHON
1556
d7de8e3c
TT
1557/* This is installed as a final cleanup and cleans up the
1558 interpreter. This lets Python's 'atexit' work. */
1559
1560static void
1561finalize_python (void *ignore)
1562{
6dddc817
DE
1563 struct active_ext_lang_state *previous_active;
1564
d7de8e3c
TT
1565 /* We don't use ensure_python_env here because if we ever ran the
1566 cleanup, gdb would crash -- because the cleanup calls into the
1567 Python interpreter, which we are about to destroy. It seems
1568 clearer to make the needed calls explicitly here than to create a
1569 cleanup and then mysteriously discard it. */
6dddc817
DE
1570
1571 /* This is only called as a final cleanup so we can assume the active
1572 SIGINT handler is gdb's. We still need to tell it to notify Python. */
1573 previous_active = set_active_ext_lang (&extension_language_python);
1574
b1209b03 1575 (void) PyGILState_Ensure ();
f5656ead 1576 python_gdbarch = target_gdbarch ();
d7de8e3c
TT
1577 python_language = current_language;
1578
1579 Py_Finalize ();
6dddc817
DE
1580
1581 restore_active_ext_lang (previous_active);
d7de8e3c 1582}
810849a3 1583#endif
d7de8e3c 1584
2c0b251b
PA
1585/* Provide a prototype to silence -Wmissing-prototypes. */
1586extern initialize_file_ftype _initialize_python;
1587
d57a3c85
TJB
1588void
1589_initialize_python (void)
1590{
9a27f2c6
PK
1591 char *progname;
1592#ifdef IS_PY3K
1593 int i;
1594 size_t progsize, count;
1595 char *oldloc;
1596 wchar_t *progname_copy;
1597#endif
713389e0 1598
8315665e
YPK
1599 add_com ("python-interactive", class_obscure,
1600 python_interactive_command,
1601#ifdef HAVE_PYTHON
1602 _("\
e3480f4a
YPK
1603Start an interactive Python prompt.\n\
1604\n\
1605To return to GDB, type the EOF character (e.g., Ctrl-D on an empty\n\
1606prompt).\n\
8315665e
YPK
1607\n\
1608Alternatively, a single-line Python command can be given as an\n\
1609argument, and if the command is an expression, the result will be\n\
1610printed. For example:\n\
1611\n\
1612 (gdb) python-interactive 2 + 3\n\
1613 5\n\
1614")
1615#else /* HAVE_PYTHON */
1616 _("\
1617Start a Python interactive prompt.\n\
1618\n\
1619Python scripting is not supported in this copy of GDB.\n\
1620This command is only a placeholder.")
1621#endif /* HAVE_PYTHON */
1622 );
1623 add_com_alias ("pi", "python-interactive", class_obscure, 1);
1624
d57a3c85
TJB
1625 add_com ("python", class_obscure, python_command,
1626#ifdef HAVE_PYTHON
1627 _("\
1628Evaluate a Python command.\n\
1629\n\
1630The command can be given as an argument, for instance:\n\
1631\n\
1632 python print 23\n\
1633\n\
1634If no argument is given, the following lines are read and used\n\
1635as the Python commands. Type a line containing \"end\" to indicate\n\
1636the end of the command.")
1637#else /* HAVE_PYTHON */
1638 _("\
1639Evaluate a Python command.\n\
1640\n\
1641Python scripting is not supported in this copy of GDB.\n\
1642This command is only a placeholder.")
1643#endif /* HAVE_PYTHON */
1644 );
8315665e 1645 add_com_alias ("py", "python", class_obscure, 1);
d57a3c85 1646
713389e0
PM
1647 /* Add set/show python print-stack. */
1648 add_prefix_cmd ("python", no_class, user_show_python,
1649 _("Prefix command for python preference settings."),
1650 &user_show_python_list, "show python ", 0,
1651 &showlist);
1652
1653 add_prefix_cmd ("python", no_class, user_set_python,
1654 _("Prefix command for python preference settings."),
1655 &user_set_python_list, "set python ", 0,
1656 &setlist);
1657
80b6e756
PM
1658 add_setshow_enum_cmd ("print-stack", no_class, python_excp_enums,
1659 &gdbpy_should_print_stack, _("\
1660Set mode for Python stack dump on error."), _("\
1661Show the mode of Python stack printing on error."), _("\
1662none == no stack or message will be printed.\n\
1663full == a message and a stack will be printed.\n\
1664message == an error message without a stack will be printed."),
1665 NULL, NULL,
1666 &user_set_python_list,
1667 &user_show_python_list);
d57a3c85
TJB
1668
1669#ifdef HAVE_PYTHON
0c4a4063
DE
1670#ifdef WITH_PYTHON_PATH
1671 /* Work around problem where python gets confused about where it is,
1672 and then can't find its libraries, etc.
1673 NOTE: Python assumes the following layout:
1674 /foo/bin/python
1675 /foo/lib/pythonX.Y/...
1676 This must be done before calling Py_Initialize. */
9a27f2c6
PK
1677 progname = concat (ldirname (python_libdir), SLASH_STRING, "bin",
1678 SLASH_STRING, "python", NULL);
1679#ifdef IS_PY3K
1680 oldloc = setlocale (LC_ALL, NULL);
1681 setlocale (LC_ALL, "");
1682 progsize = strlen (progname);
1683 if (progsize == (size_t) -1)
1684 {
1685 fprintf (stderr, "Could not convert python path to string\n");
1686 return;
1687 }
1688 progname_copy = PyMem_Malloc ((progsize + 1) * sizeof (wchar_t));
1689 if (!progname_copy)
1690 {
1691 fprintf (stderr, "out of memory\n");
1692 return;
1693 }
1694 count = mbstowcs (progname_copy, progname, progsize + 1);
1695 if (count == (size_t) -1)
1696 {
1697 fprintf (stderr, "Could not convert python path to string\n");
1698 return;
1699 }
1700 setlocale (LC_ALL, oldloc);
1701
1702 /* Note that Py_SetProgramName expects the string it is passed to
1703 remain alive for the duration of the program's execution, so
1704 it is not freed after this call. */
1705 Py_SetProgramName (progname_copy);
1706#else
1707 Py_SetProgramName (progname);
1708#endif
0c4a4063
DE
1709#endif
1710
d57a3c85 1711 Py_Initialize ();
ca30a762 1712 PyEval_InitThreads ();
d57a3c85 1713
9a27f2c6 1714#ifdef IS_PY3K
bcabf420 1715 gdb_module = PyModule_Create (&python_GdbModuleDef);
9a27f2c6
PK
1716 /* Add _gdb module to the list of known built-in modules. */
1717 _PyImport_FixupBuiltin (gdb_module, "_gdb");
1718#else
bcabf420 1719 gdb_module = Py_InitModule ("_gdb", python_GdbMethods);
9a27f2c6 1720#endif
999633ed
TT
1721 if (gdb_module == NULL)
1722 goto fail;
d57a3c85
TJB
1723
1724 /* The casts to (char*) are for python 2.4. */
999633ed
TT
1725 if (PyModule_AddStringConstant (gdb_module, "VERSION", (char*) version) < 0
1726 || PyModule_AddStringConstant (gdb_module, "HOST_CONFIG",
1727 (char*) host_name) < 0
1728 || PyModule_AddStringConstant (gdb_module, "TARGET_CONFIG",
1729 (char*) target_name) < 0)
1730 goto fail;
f17618ea 1731
99c3dc11 1732 /* Add stream constants. */
999633ed
TT
1733 if (PyModule_AddIntConstant (gdb_module, "STDOUT", 0) < 0
1734 || PyModule_AddIntConstant (gdb_module, "STDERR", 1) < 0
1735 || PyModule_AddIntConstant (gdb_module, "STDLOG", 2) < 0)
1736 goto fail;
d57a3c85 1737
621c8364 1738 gdbpy_gdb_error = PyErr_NewException ("gdb.error", PyExc_RuntimeError, NULL);
999633ed 1739 if (gdbpy_gdb_error == NULL
aa36459a 1740 || gdb_pymodule_addobject (gdb_module, "error", gdbpy_gdb_error) < 0)
999633ed 1741 goto fail;
621c8364
TT
1742
1743 gdbpy_gdb_memory_error = PyErr_NewException ("gdb.MemoryError",
1744 gdbpy_gdb_error, NULL);
999633ed 1745 if (gdbpy_gdb_memory_error == NULL
aa36459a
TT
1746 || gdb_pymodule_addobject (gdb_module, "MemoryError",
1747 gdbpy_gdb_memory_error) < 0)
999633ed 1748 goto fail;
621c8364 1749
07ca107c 1750 gdbpy_gdberror_exc = PyErr_NewException ("gdb.GdbError", NULL, NULL);
999633ed 1751 if (gdbpy_gdberror_exc == NULL
aa36459a
TT
1752 || gdb_pymodule_addobject (gdb_module, "GdbError",
1753 gdbpy_gdberror_exc) < 0)
999633ed 1754 goto fail;
07ca107c 1755
037bbc8e 1756 gdbpy_initialize_gdb_readline ();
999633ed
TT
1757
1758 if (gdbpy_initialize_auto_load () < 0
1759 || gdbpy_initialize_values () < 0
1760 || gdbpy_initialize_frames () < 0
1761 || gdbpy_initialize_commands () < 0
1762 || gdbpy_initialize_symbols () < 0
1763 || gdbpy_initialize_symtabs () < 0
1764 || gdbpy_initialize_blocks () < 0
1765 || gdbpy_initialize_functions () < 0
1766 || gdbpy_initialize_parameters () < 0
1767 || gdbpy_initialize_types () < 0
1768 || gdbpy_initialize_pspace () < 0
1769 || gdbpy_initialize_objfile () < 0
1770 || gdbpy_initialize_breakpoints () < 0
1771 || gdbpy_initialize_finishbreakpoints () < 0
1772 || gdbpy_initialize_lazy_string () < 0
bc79de95 1773 || gdbpy_initialize_linetable () < 0
999633ed
TT
1774 || gdbpy_initialize_thread () < 0
1775 || gdbpy_initialize_inferior () < 0
1776 || gdbpy_initialize_events () < 0
1777 || gdbpy_initialize_eventregistry () < 0
1778 || gdbpy_initialize_py_events () < 0
1779 || gdbpy_initialize_event () < 0
1780 || gdbpy_initialize_stop_event () < 0
1781 || gdbpy_initialize_signal_event () < 0
1782 || gdbpy_initialize_breakpoint_event () < 0
1783 || gdbpy_initialize_continue_event () < 0
162078c8
NB
1784 || gdbpy_initialize_inferior_call_pre_event () < 0
1785 || gdbpy_initialize_inferior_call_post_event () < 0
1786 || gdbpy_initialize_register_changed_event () < 0
1787 || gdbpy_initialize_memory_changed_event () < 0
999633ed
TT
1788 || gdbpy_initialize_exited_event () < 0
1789 || gdbpy_initialize_thread_event () < 0
1790 || gdbpy_initialize_new_objfile_event () < 0
4ffbba72 1791 || gdbpy_initialize_clear_objfiles_event () < 0
883964a7
SC
1792 || gdbpy_initialize_arch () < 0
1793 || gdbpy_initialize_xmethods () < 0)
999633ed 1794 goto fail;
505500db 1795
a6bac58e 1796 gdbpy_to_string_cst = PyString_FromString ("to_string");
999633ed
TT
1797 if (gdbpy_to_string_cst == NULL)
1798 goto fail;
a6bac58e 1799 gdbpy_children_cst = PyString_FromString ("children");
999633ed
TT
1800 if (gdbpy_children_cst == NULL)
1801 goto fail;
a6bac58e 1802 gdbpy_display_hint_cst = PyString_FromString ("display_hint");
999633ed
TT
1803 if (gdbpy_display_hint_cst == NULL)
1804 goto fail;
d8906c6f 1805 gdbpy_doc_cst = PyString_FromString ("__doc__");
999633ed
TT
1806 if (gdbpy_doc_cst == NULL)
1807 goto fail;
967cf477 1808 gdbpy_enabled_cst = PyString_FromString ("enabled");
999633ed
TT
1809 if (gdbpy_enabled_cst == NULL)
1810 goto fail;
fb6a3ed3 1811 gdbpy_value_cst = PyString_FromString ("value");
999633ed
TT
1812 if (gdbpy_value_cst == NULL)
1813 goto fail;
d8906c6f 1814
9dea9163
DE
1815 /* Release the GIL while gdb runs. */
1816 PyThreadState_Swap (NULL);
1817 PyEval_ReleaseLock ();
1818
d7de8e3c 1819 make_final_cleanup (finalize_python, NULL);
999633ed
TT
1820
1821 gdb_python_initialized = 1;
1822 return;
1823
1824 fail:
1825 gdbpy_print_stack ();
1826 /* Do not set 'gdb_python_initialized'. */
1827 return;
1828
9dea9163
DE
1829#endif /* HAVE_PYTHON */
1830}
1831
1832#ifdef HAVE_PYTHON
1833
1834/* Perform the remaining python initializations.
1835 These must be done after GDB is at least mostly initialized.
1836 E.g., The "info pretty-printer" command needs the "info" prefix
6dddc817
DE
1837 command installed.
1838 This is the extension_language_ops.finish_initialization "method". */
9dea9163 1839
6dddc817
DE
1840static void
1841gdbpy_finish_initialization (const struct extension_language_defn *extlang)
9dea9163 1842{
b9516fa1
YPK
1843 PyObject *m;
1844 char *gdb_pythondir;
1845 PyObject *sys_path;
9dea9163
DE
1846 struct cleanup *cleanup;
1847
1848 cleanup = ensure_python_env (get_current_arch (), current_language);
f17618ea 1849
b9516fa1
YPK
1850 /* Add the initial data-directory to sys.path. */
1851
1852 gdb_pythondir = concat (gdb_datadir, SLASH_STRING, "python", NULL);
1853 make_cleanup (xfree, gdb_pythondir);
1854
1855 sys_path = PySys_GetObject ("path");
ca30a762 1856
9a27f2c6
PK
1857 /* If sys.path is not defined yet, define it first. */
1858 if (!(sys_path && PyList_Check (sys_path)))
1859 {
1860#ifdef IS_PY3K
1861 PySys_SetPath (L"");
1862#else
1863 PySys_SetPath ("");
1864#endif
1865 sys_path = PySys_GetObject ("path");
1866 }
256458bc 1867 if (sys_path && PyList_Check (sys_path))
b9516fa1
YPK
1868 {
1869 PyObject *pythondir;
1870 int err;
1871
1872 pythondir = PyString_FromString (gdb_pythondir);
1873 if (pythondir == NULL)
1874 goto fail;
1875
1876 err = PyList_Insert (sys_path, 0, pythondir);
ac475191 1877 Py_DECREF (pythondir);
b9516fa1
YPK
1878 if (err)
1879 goto fail;
b9516fa1
YPK
1880 }
1881 else
9a27f2c6 1882 goto fail;
b9516fa1
YPK
1883
1884 /* Import the gdb module to finish the initialization, and
1885 add it to __main__ for convenience. */
1886 m = PyImport_AddModule ("__main__");
1887 if (m == NULL)
1888 goto fail;
1889
1890 gdb_python_module = PyImport_ImportModule ("gdb");
1891 if (gdb_python_module == NULL)
1892 {
1893 gdbpy_print_stack ();
41245087
DE
1894 /* This is passed in one call to warning so that blank lines aren't
1895 inserted between each line of text. */
1896 warning (_("\n"
1897 "Could not load the Python gdb module from `%s'.\n"
1898 "Limited Python support is available from the _gdb module.\n"
1899 "Suggest passing --data-directory=/path/to/gdb/data-directory.\n"),
b9516fa1 1900 gdb_pythondir);
b9516fa1
YPK
1901 do_cleanups (cleanup);
1902 return;
1903 }
1904
aa36459a 1905 if (gdb_pymodule_addobject (m, "gdb", gdb_python_module) < 0)
b9516fa1
YPK
1906 goto fail;
1907
1908 /* Keep the reference to gdb_python_module since it is in a global
1909 variable. */
1910
1911 do_cleanups (cleanup);
1912 return;
1913
1914 fail:
1915 gdbpy_print_stack ();
1916 warning (_("internal error: Unhandled Python exception"));
9dea9163
DE
1917 do_cleanups (cleanup);
1918}
ca30a762 1919
6dddc817
DE
1920/* Return non-zero if Python has successfully initialized.
1921 This is the extension_languages_ops.initialized "method". */
1922
1923static int
1924gdbpy_initialized (const struct extension_language_defn *extlang)
1925{
1926 return gdb_python_initialized;
1927}
1928
d57a3c85 1929#endif /* HAVE_PYTHON */
12453b93
TJB
1930
1931\f
1932
9dea9163 1933#ifdef HAVE_PYTHON
12453b93 1934
bcabf420 1935PyMethodDef python_GdbMethods[] =
12453b93
TJB
1936{
1937 { "history", gdbpy_history, METH_VARARGS,
1938 "Get a value from history" },
bc9f0842 1939 { "execute", (PyCFunction) execute_gdb_command, METH_VARARGS | METH_KEYWORDS,
751e7549
PM
1940 "execute (command [, from_tty] [, to_string]) -> [String]\n\
1941Evaluate command, a string, as a gdb CLI command. Optionally returns\n\
1942a Python String containing the output of the command if to_string is\n\
1943set to True." },
8f500870 1944 { "parameter", gdbpy_parameter, METH_VARARGS,
12453b93
TJB
1945 "Return a gdb parameter's value" },
1946
adc36818
PM
1947 { "breakpoints", gdbpy_breakpoints, METH_NOARGS,
1948 "Return a tuple of all breakpoint objects" },
1949
b6313243
TT
1950 { "default_visualizer", gdbpy_default_visualizer, METH_VARARGS,
1951 "Find the default visualizer for a Value." },
1952
fa33c3cd
DE
1953 { "current_progspace", gdbpy_get_current_progspace, METH_NOARGS,
1954 "Return the current Progspace." },
1955 { "progspaces", gdbpy_progspaces, METH_NOARGS,
1956 "Return a sequence of all progspaces." },
1957
89c73ade
TT
1958 { "current_objfile", gdbpy_get_current_objfile, METH_NOARGS,
1959 "Return the current Objfile being loaded, or None." },
1960 { "objfiles", gdbpy_objfiles, METH_NOARGS,
1961 "Return a sequence of all loaded objfiles." },
1962
d8e22779
TT
1963 { "newest_frame", gdbpy_newest_frame, METH_NOARGS,
1964 "newest_frame () -> gdb.Frame.\n\
1965Return the newest frame object." },
f8f6f20b
TJB
1966 { "selected_frame", gdbpy_selected_frame, METH_NOARGS,
1967 "selected_frame () -> gdb.Frame.\n\
1968Return the selected frame object." },
1969 { "frame_stop_reason_string", gdbpy_frame_stop_reason_string, METH_VARARGS,
1970 "stop_reason_string (Integer) -> String.\n\
1971Return a string explaining unwind stop reason." },
1972
2c74e833
TT
1973 { "lookup_type", (PyCFunction) gdbpy_lookup_type,
1974 METH_VARARGS | METH_KEYWORDS,
1975 "lookup_type (name [, block]) -> type\n\
1976Return a Type corresponding to the given name." },
f3e9a817
PM
1977 { "lookup_symbol", (PyCFunction) gdbpy_lookup_symbol,
1978 METH_VARARGS | METH_KEYWORDS,
1979 "lookup_symbol (name [, block] [, domain]) -> (symbol, is_field_of_this)\n\
1980Return a tuple with the symbol corresponding to the given name (or None) and\n\
1981a boolean indicating if name is a field of the current implied argument\n\
1982`this' (when the current language is object-oriented)." },
6e6fbe60
DE
1983 { "lookup_global_symbol", (PyCFunction) gdbpy_lookup_global_symbol,
1984 METH_VARARGS | METH_KEYWORDS,
1985 "lookup_global_symbol (name [, domain]) -> symbol\n\
1986Return the symbol corresponding to the given name (or None)." },
6dddd6a5
DE
1987
1988 { "lookup_objfile", (PyCFunction) gdbpy_lookup_objfile,
1989 METH_VARARGS | METH_KEYWORDS,
1990 "lookup_objfile (name, [by_build_id]) -> objfile\n\
1991Look up the specified objfile.\n\
1992If by_build_id is True, the objfile is looked up by using name\n\
1993as its build id." },
1994
f3e9a817
PM
1995 { "block_for_pc", gdbpy_block_for_pc, METH_VARARGS,
1996 "Return the block containing the given pc value, or None." },
cb2e07a6
PM
1997 { "solib_name", gdbpy_solib_name, METH_VARARGS,
1998 "solib_name (Long) -> String.\n\
1999Return the name of the shared library holding a given address, or None." },
2000 { "decode_line", gdbpy_decode_line, METH_VARARGS,
2001 "decode_line (String) -> Tuple. Decode a string argument the way\n\
2002that 'break' or 'edit' does. Return a tuple containing two elements.\n\
2003The first element contains any unparsed portion of the String parameter\n\
2004(or None if the string was fully parsed). The second element contains\n\
2005a tuple that contains all the locations that match, represented as\n\
2006gdb.Symtab_and_line objects (or None)."},
57a1d736
TT
2007 { "parse_and_eval", gdbpy_parse_and_eval, METH_VARARGS,
2008 "parse_and_eval (String) -> Value.\n\
2009Parse String as an expression, evaluate it, and return the result as a Value."
2010 },
7efc75aa
SCR
2011 { "find_pc_line", gdbpy_find_pc_line, METH_VARARGS,
2012 "find_pc_line (pc) -> Symtab_and_line.\n\
2013Return the gdb.Symtab_and_line object corresponding to the pc value." },
57a1d736 2014
ca5c20b6
PM
2015 { "post_event", gdbpy_post_event, METH_VARARGS,
2016 "Post an event into gdb's event loop." },
2017
f870a310
TT
2018 { "target_charset", gdbpy_target_charset, METH_NOARGS,
2019 "target_charset () -> string.\n\
2020Return the name of the current target charset." },
2021 { "target_wide_charset", gdbpy_target_wide_charset, METH_NOARGS,
2022 "target_wide_charset () -> string.\n\
2023Return the name of the current target wide charset." },
2024
07ca107c
DE
2025 { "string_to_argv", gdbpy_string_to_argv, METH_VARARGS,
2026 "string_to_argv (String) -> Array.\n\
2027Parse String and return an argv-like array.\n\
2028Arguments are separate by spaces and may be quoted."
2029 },
99c3dc11 2030 { "write", (PyCFunction)gdbpy_write, METH_VARARGS | METH_KEYWORDS,
12453b93 2031 "Write a string using gdb's filtered stream." },
99c3dc11 2032 { "flush", (PyCFunction)gdbpy_flush, METH_VARARGS | METH_KEYWORDS,
12453b93 2033 "Flush gdb's filtered stdout stream." },
595939de
PM
2034 { "selected_thread", gdbpy_selected_thread, METH_NOARGS,
2035 "selected_thread () -> gdb.InferiorThread.\n\
2036Return the selected thread object." },
2aa48337
KP
2037 { "selected_inferior", gdbpy_selected_inferior, METH_NOARGS,
2038 "selected_inferior () -> gdb.Inferior.\n\
2039Return the selected inferior object." },
595939de
PM
2040 { "inferiors", gdbpy_inferiors, METH_NOARGS,
2041 "inferiors () -> (gdb.Inferior, ...).\n\
2042Return a tuple containing all inferiors." },
12453b93
TJB
2043 {NULL, NULL, 0, NULL}
2044};
2045
9a27f2c6 2046#ifdef IS_PY3K
bcabf420 2047struct PyModuleDef python_GdbModuleDef =
9a27f2c6
PK
2048{
2049 PyModuleDef_HEAD_INIT,
2050 "_gdb",
2051 NULL,
256458bc 2052 -1,
02e62830 2053 python_GdbMethods,
9a27f2c6
PK
2054 NULL,
2055 NULL,
2056 NULL,
2057 NULL
2058};
2059#endif
12453b93 2060#endif /* HAVE_PYTHON */