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