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