testsuite: Fix false FAIL in gdb.cp/casts.exp
[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{
f38d3ad1 321 struct ui *ui = current_ui;
8315665e
YPK
322 struct cleanup *cleanup;
323 int err;
324
cb814510
PA
325 cleanup = make_cleanup_restore_integer (&current_ui->async);
326 current_ui->async = 0;
8315665e 327
529480d0 328 arg = skip_spaces (arg);
8315665e
YPK
329
330 ensure_python_env (get_current_arch (), current_language);
331
332 if (arg && *arg)
333 {
334 int len = strlen (arg);
224c3ddb 335 char *script = (char *) xmalloc (len + 2);
8315665e
YPK
336
337 strcpy (script, arg);
338 script[len] = '\n';
339 script[len + 1] = '\0';
340 err = eval_python_command (script);
341 xfree (script);
342 }
343 else
344 {
f38d3ad1 345 err = PyRun_InteractiveLoop (ui->instream, "<stdin>");
8315665e
YPK
346 dont_repeat ();
347 }
348
349 if (err)
350 {
351 gdbpy_print_stack ();
352 error (_("Error while executing Python code."));
353 }
354
355 do_cleanups (cleanup);
356}
357
4c63965b
JK
358/* A wrapper around PyRun_SimpleFile. FILE is the Python script to run
359 named FILENAME.
360
361 On Windows hosts few users would build Python themselves (this is no
362 trivial task on this platform), and thus use binaries built by
363 someone else instead. There may happen situation where the Python
364 library and GDB are using two different versions of the C runtime
365 library. Python, being built with VC, would use one version of the
366 msvcr DLL (Eg. msvcr100.dll), while MinGW uses msvcrt.dll.
367 A FILE * from one runtime does not necessarily operate correctly in
7ed7d719
JB
368 the other runtime.
369
4c63965b
JK
370 To work around this potential issue, we create on Windows hosts the
371 FILE object using Python routines, thus making sure that it is
372 compatible with the Python library. */
7ed7d719
JB
373
374static void
4c63965b 375python_run_simple_file (FILE *file, const char *filename)
7ed7d719 376{
4c63965b
JK
377#ifndef _WIN32
378
379 PyRun_SimpleFile (file, filename);
380
381#else /* _WIN32 */
382
3ab1ec27 383 char *full_path;
7ed7d719
JB
384 PyObject *python_file;
385 struct cleanup *cleanup;
386
3ab1ec27
PM
387 /* Because we have a string for a filename, and are using Python to
388 open the file, we need to expand any tilde in the path first. */
389 full_path = tilde_expand (filename);
390 cleanup = make_cleanup (xfree, full_path);
391 python_file = PyFile_FromString (full_path, "r");
392 if (! python_file)
393 {
394 do_cleanups (cleanup);
395 gdbpy_print_stack ();
396 error (_("Error while opening file: %s"), full_path);
397 }
256458bc 398
7ed7d719
JB
399 make_cleanup_py_decref (python_file);
400 PyRun_SimpleFile (PyFile_AsFile (python_file), filename);
401 do_cleanups (cleanup);
4c63965b
JK
402
403#endif /* _WIN32 */
7ed7d719 404}
d452c4bc 405
d57a3c85
TJB
406/* Given a command_line, return a command string suitable for passing
407 to Python. Lines in the string are separated by newlines. The
408 return value is allocated using xmalloc and the caller is
409 responsible for freeing it. */
410
411static char *
412compute_python_string (struct command_line *l)
413{
414 struct command_line *iter;
415 char *script = NULL;
416 int size = 0;
417 int here;
418
419 for (iter = l; iter; iter = iter->next)
420 size += strlen (iter->line) + 1;
421
224c3ddb 422 script = (char *) xmalloc (size + 1);
d57a3c85
TJB
423 here = 0;
424 for (iter = l; iter; iter = iter->next)
425 {
426 int len = strlen (iter->line);
d59b6f6c 427
d57a3c85
TJB
428 strcpy (&script[here], iter->line);
429 here += len;
430 script[here++] = '\n';
431 }
432 script[here] = '\0';
433 return script;
434}
435
436/* Take a command line structure representing a 'python' command, and
437 evaluate its body using the Python interpreter. */
438
6dddc817
DE
439static void
440gdbpy_eval_from_control_command (const struct extension_language_defn *extlang,
441 struct command_line *cmd)
d57a3c85 442{
12453b93 443 int ret;
d57a3c85 444 char *script;
ca30a762 445 struct cleanup *cleanup;
d57a3c85
TJB
446
447 if (cmd->body_count != 1)
448 error (_("Invalid \"python\" block structure."));
449
d452c4bc 450 cleanup = ensure_python_env (get_current_arch (), current_language);
ca30a762 451
d57a3c85 452 script = compute_python_string (cmd->body_list[0]);
12453b93 453 ret = PyRun_SimpleString (script);
d57a3c85 454 xfree (script);
12453b93 455 if (ret)
80b6e756 456 error (_("Error while executing Python code."));
ca30a762
TT
457
458 do_cleanups (cleanup);
d57a3c85
TJB
459}
460
461/* Implementation of the gdb "python" command. */
462
463static void
464python_command (char *arg, int from_tty)
465{
ca30a762 466 struct cleanup *cleanup;
ca30a762 467
d59b6f6c 468 cleanup = ensure_python_env (get_current_arch (), current_language);
b4a14fd0 469
cb814510
PA
470 make_cleanup_restore_integer (&current_ui->async);
471 current_ui->async = 0;
b4a14fd0 472
529480d0 473 arg = skip_spaces (arg);
d57a3c85
TJB
474 if (arg && *arg)
475 {
12453b93 476 if (PyRun_SimpleString (arg))
80b6e756 477 error (_("Error while executing Python code."));
d57a3c85
TJB
478 }
479 else
480 {
481 struct command_line *l = get_command_line (python_control, "");
d59b6f6c 482
ca30a762 483 make_cleanup_free_command_lines (&l);
d57a3c85 484 execute_control_command_untraced (l);
d57a3c85 485 }
ca30a762
TT
486
487 do_cleanups (cleanup);
d57a3c85
TJB
488}
489
490\f
491
492/* Transform a gdb parameters's value into a Python value. May return
493 NULL (and set a Python exception) on error. Helper function for
494 get_parameter. */
d7b32ed3
PM
495PyObject *
496gdbpy_parameter_value (enum var_types type, void *var)
d57a3c85 497{
d7b32ed3 498 switch (type)
d57a3c85
TJB
499 {
500 case var_string:
501 case var_string_noescape:
502 case var_optional_filename:
503 case var_filename:
504 case var_enum:
505 {
d7b32ed3 506 char *str = * (char **) var;
d59b6f6c 507
d57a3c85
TJB
508 if (! str)
509 str = "";
4ae6cc19 510 return host_string_to_python_string (str);
d57a3c85
TJB
511 }
512
513 case var_boolean:
514 {
d7b32ed3 515 if (* (int *) var)
d57a3c85
TJB
516 Py_RETURN_TRUE;
517 else
518 Py_RETURN_FALSE;
519 }
520
521 case var_auto_boolean:
522 {
d7b32ed3 523 enum auto_boolean ab = * (enum auto_boolean *) var;
d59b6f6c 524
d57a3c85
TJB
525 if (ab == AUTO_BOOLEAN_TRUE)
526 Py_RETURN_TRUE;
527 else if (ab == AUTO_BOOLEAN_FALSE)
528 Py_RETURN_FALSE;
529 else
530 Py_RETURN_NONE;
531 }
532
533 case var_integer:
d7b32ed3 534 if ((* (int *) var) == INT_MAX)
d57a3c85
TJB
535 Py_RETURN_NONE;
536 /* Fall through. */
537 case var_zinteger:
d7b32ed3 538 return PyLong_FromLong (* (int *) var);
d57a3c85
TJB
539
540 case var_uinteger:
541 {
d7b32ed3 542 unsigned int val = * (unsigned int *) var;
d59b6f6c 543
d57a3c85
TJB
544 if (val == UINT_MAX)
545 Py_RETURN_NONE;
546 return PyLong_FromUnsignedLong (val);
547 }
548 }
549
256458bc 550 return PyErr_Format (PyExc_RuntimeError,
044c0f87 551 _("Programmer error: unhandled type."));
d57a3c85
TJB
552}
553
554/* A Python function which returns a gdb parameter's value as a Python
555 value. */
556
0c72ed4c 557static PyObject *
8f500870 558gdbpy_parameter (PyObject *self, PyObject *args)
d57a3c85 559{
492d29ea 560 struct gdb_exception except = exception_none;
d57a3c85 561 struct cmd_list_element *alias, *prefix, *cmd;
ddd49eee
TT
562 const char *arg;
563 char *newarg;
cc924cad 564 int found = -1;
d57a3c85
TJB
565
566 if (! PyArg_ParseTuple (args, "s", &arg))
567 return NULL;
568
569 newarg = concat ("show ", arg, (char *) NULL);
570
492d29ea 571 TRY
d57a3c85 572 {
cc924cad 573 found = lookup_cmd_composition (newarg, &alias, &prefix, &cmd);
d57a3c85 574 }
492d29ea
PA
575 CATCH (ex, RETURN_MASK_ALL)
576 {
577 except = ex;
578 }
579 END_CATCH
580
d57a3c85
TJB
581 xfree (newarg);
582 GDB_PY_HANDLE_EXCEPTION (except);
cc924cad
TJB
583 if (!found)
584 return PyErr_Format (PyExc_RuntimeError,
044c0f87 585 _("Could not find parameter `%s'."), arg);
d57a3c85
TJB
586
587 if (! cmd->var)
256458bc 588 return PyErr_Format (PyExc_RuntimeError,
044c0f87 589 _("`%s' is not a parameter."), arg);
d7b32ed3 590 return gdbpy_parameter_value (cmd->var_type, cmd->var);
d57a3c85
TJB
591}
592
f870a310
TT
593/* Wrapper for target_charset. */
594
595static PyObject *
596gdbpy_target_charset (PyObject *self, PyObject *args)
597{
598 const char *cset = target_charset (python_gdbarch);
d59b6f6c 599
f870a310
TT
600 return PyUnicode_Decode (cset, strlen (cset), host_charset (), NULL);
601}
602
603/* Wrapper for target_wide_charset. */
604
605static PyObject *
606gdbpy_target_wide_charset (PyObject *self, PyObject *args)
607{
608 const char *cset = target_wide_charset (python_gdbarch);
d59b6f6c 609
f870a310
TT
610 return PyUnicode_Decode (cset, strlen (cset), host_charset (), NULL);
611}
612
d57a3c85
TJB
613/* A Python function which evaluates a string using the gdb CLI. */
614
615static PyObject *
bc9f0842 616execute_gdb_command (PyObject *self, PyObject *args, PyObject *kw)
d57a3c85 617{
ddd49eee 618 const char *arg;
bc9f0842
TT
619 PyObject *from_tty_obj = NULL, *to_string_obj = NULL;
620 int from_tty, to_string;
bc9f0842
TT
621 static char *keywords[] = {"command", "from_tty", "to_string", NULL };
622 char *result = NULL;
d57a3c85 623
bc9f0842
TT
624 if (! PyArg_ParseTupleAndKeywords (args, kw, "s|O!O!", keywords, &arg,
625 &PyBool_Type, &from_tty_obj,
626 &PyBool_Type, &to_string_obj))
d57a3c85
TJB
627 return NULL;
628
12453b93
TJB
629 from_tty = 0;
630 if (from_tty_obj)
631 {
bc9f0842 632 int cmp = PyObject_IsTrue (from_tty_obj);
12453b93 633 if (cmp < 0)
bc9f0842 634 return NULL;
12453b93
TJB
635 from_tty = cmp;
636 }
637
bc9f0842
TT
638 to_string = 0;
639 if (to_string_obj)
640 {
641 int cmp = PyObject_IsTrue (to_string_obj);
642 if (cmp < 0)
643 return NULL;
644 to_string = cmp;
645 }
646
492d29ea 647 TRY
d57a3c85 648 {
86c6265d
TT
649 /* Copy the argument text in case the command modifies it. */
650 char *copy = xstrdup (arg);
651 struct cleanup *cleanup = make_cleanup (xfree, copy);
e7ea3ec7 652 struct interp *interp;
bc9f0842 653
cb814510
PA
654 make_cleanup_restore_integer (&current_ui->async);
655 current_ui->async = 0;
b4a14fd0 656
e7ea3ec7
CU
657 make_cleanup_restore_ui_out (&current_uiout);
658 /* Use the console interpreter uiout to have the same print format
659 for console or MI. */
8322445e 660 interp = interp_lookup (current_ui, "console");
e7ea3ec7
CU
661 current_uiout = interp_ui_out (interp);
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;
1b40ec05 700 gdb_py_ulongest pc;
74aedc46 701
1b40ec05 702 if (!PyArg_ParseTuple (args, GDB_PY_LLU_ARG, &pc))
cb2e07a6
PM
703 return NULL;
704
705 soname = solib_name_from_address (current_program_space, pc);
706 if (soname)
4ae6cc19 707 str_obj = host_string_to_python_string (soname);
cb2e07a6
PM
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;
f00aae0f 726 char *arg = NULL;
cb2e07a6
PM
727 struct cleanup *cleanups;
728 PyObject *result = NULL;
729 PyObject *return_result = NULL;
730 PyObject *unparsed = NULL;
59ecaff3 731 struct event_location *location = 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 739
f00aae0f
KS
740 if (arg != NULL)
741 {
742 location = new_linespec_location (&arg);
743 make_cleanup_delete_event_location (location);
744 }
745
492d29ea 746 TRY
cb2e07a6 747 {
59ecaff3 748 if (location != NULL)
c2f4122d 749 sals = decode_line_1 (location, 0, NULL, NULL, 0);
cb2e07a6
PM
750 else
751 {
752 set_default_source_symtab_and_line ();
753 sal = get_current_source_symtab_and_line ();
754 sals.sals = &sal;
755 sals.nelts = 1;
756 }
757 }
492d29ea
PA
758 CATCH (ex, RETURN_MASK_ALL)
759 {
760 except = ex;
761 }
762 END_CATCH
9bc3523d
TT
763
764 if (sals.sals != NULL && sals.sals != &sal)
f00aae0f 765 make_cleanup (xfree, sals.sals);
9bc3523d 766
cb2e07a6
PM
767 if (except.reason < 0)
768 {
769 do_cleanups (cleanups);
770 /* We know this will always throw. */
f3300387
TT
771 gdbpy_convert_exception (except);
772 return NULL;
cb2e07a6
PM
773 }
774
775 if (sals.nelts)
776 {
777 int i;
778
779 result = PyTuple_New (sals.nelts);
780 if (! result)
781 goto error;
782 for (i = 0; i < sals.nelts; ++i)
783 {
784 PyObject *obj;
cb2e07a6
PM
785
786 obj = symtab_and_line_to_sal_object (sals.sals[i]);
787 if (! obj)
788 {
789 Py_DECREF (result);
790 goto error;
791 }
792
793 PyTuple_SetItem (result, i, obj);
794 }
795 }
796 else
797 {
798 result = Py_None;
799 Py_INCREF (Py_None);
800 }
801
802 return_result = PyTuple_New (2);
803 if (! return_result)
804 {
805 Py_DECREF (result);
806 goto error;
807 }
808
f00aae0f 809 if (arg != NULL && strlen (arg) > 0)
9bc3523d 810 {
f00aae0f 811 unparsed = PyString_FromString (arg);
9bc3523d
TT
812 if (unparsed == NULL)
813 {
814 Py_DECREF (result);
815 Py_DECREF (return_result);
816 return_result = NULL;
817 goto error;
818 }
819 }
cb2e07a6
PM
820 else
821 {
822 unparsed = Py_None;
823 Py_INCREF (Py_None);
824 }
825
826 PyTuple_SetItem (return_result, 0, unparsed);
827 PyTuple_SetItem (return_result, 1, result);
828
9bc3523d 829 error:
cb2e07a6
PM
830 do_cleanups (cleanups);
831
832 return return_result;
cb2e07a6
PM
833}
834
57a1d736
TT
835/* Parse a string and evaluate it as an expression. */
836static PyObject *
837gdbpy_parse_and_eval (PyObject *self, PyObject *args)
838{
ddd49eee 839 const char *expr_str;
57a1d736 840 struct value *result = NULL;
57a1d736
TT
841
842 if (!PyArg_ParseTuple (args, "s", &expr_str))
843 return NULL;
844
492d29ea 845 TRY
57a1d736 846 {
bbc13ae3 847 result = parse_and_eval (expr_str);
57a1d736 848 }
492d29ea
PA
849 CATCH (except, RETURN_MASK_ALL)
850 {
851 GDB_PY_HANDLE_EXCEPTION (except);
852 }
853 END_CATCH
57a1d736
TT
854
855 return value_to_value_object (result);
856}
857
7efc75aa
SCR
858/* Implementation of gdb.find_pc_line function.
859 Returns the gdb.Symtab_and_line object corresponding to a PC value. */
860
861static PyObject *
862gdbpy_find_pc_line (PyObject *self, PyObject *args)
863{
29ca12b3 864 gdb_py_ulongest pc_llu;
62d7fb51 865 PyObject *result = NULL; /* init for gcc -Wall */
7efc75aa
SCR
866
867 if (!PyArg_ParseTuple (args, GDB_PY_LLU_ARG, &pc_llu))
868 return NULL;
869
492d29ea 870 TRY
9e974e55
TT
871 {
872 struct symtab_and_line sal;
873 CORE_ADDR pc;
874
875 pc = (CORE_ADDR) pc_llu;
876 sal = find_pc_line (pc, 0);
877 result = symtab_and_line_to_sal_object (sal);
878 }
492d29ea
PA
879 CATCH (except, RETURN_MASK_ALL)
880 {
881 GDB_PY_HANDLE_EXCEPTION (except);
882 }
883 END_CATCH
9e974e55
TT
884
885 return result;
7efc75aa
SCR
886}
887
e0f3fd7c
TT
888/* Implementation of gdb.invalidate_cached_frames. */
889
890static PyObject *
891gdbpy_invalidate_cached_frames (PyObject *self, PyObject *args)
892{
893 reinit_frame_cache ();
894 Py_RETURN_NONE;
895}
896
d234ef5c 897/* Read a file as Python code.
6dddc817
DE
898 This is the extension_language_script_ops.script_sourcer "method".
899 FILE is the file to load. FILENAME is name of the file FILE.
d234ef5c
DE
900 This does not throw any errors. If an exception occurs python will print
901 the traceback and clear the error indicator. */
973817a3 902
6dddc817
DE
903static void
904gdbpy_source_script (const struct extension_language_defn *extlang,
905 FILE *file, const char *filename)
973817a3 906{
eb5cda86 907 struct cleanup *cleanup;
973817a3 908
eb5cda86 909 cleanup = ensure_python_env (get_current_arch (), current_language);
4c63965b 910 python_run_simple_file (file, filename);
eb5cda86 911 do_cleanups (cleanup);
973817a3
JB
912}
913
d57a3c85
TJB
914\f
915
ca5c20b6
PM
916/* Posting and handling events. */
917
918/* A single event. */
919struct gdbpy_event
920{
921 /* The Python event. This is just a callable object. */
922 PyObject *event;
923 /* The next event. */
924 struct gdbpy_event *next;
925};
926
927/* All pending events. */
928static struct gdbpy_event *gdbpy_event_list;
929/* The final link of the event list. */
930static struct gdbpy_event **gdbpy_event_list_end;
931
6eddd09a
PA
932/* So that we can wake up the main thread even when it is blocked in
933 poll(). */
934static struct serial_event *gdbpy_serial_event;
ca5c20b6
PM
935
936/* The file handler callback. This reads from the internal pipe, and
937 then processes the Python event queue. This will always be run in
938 the main gdb thread. */
4a532131 939
ca5c20b6 940static void
6eddd09a 941gdbpy_run_events (int error, gdb_client_data client_data)
ca5c20b6
PM
942{
943 struct cleanup *cleanup;
ca5c20b6
PM
944
945 cleanup = ensure_python_env (get_current_arch (), current_language);
946
6eddd09a
PA
947 /* Clear the event fd. Do this before flushing the events list, so
948 that any new event post afterwards is sure to re-awake the event
4a532131 949 loop. */
6eddd09a 950 serial_event_clear (gdbpy_serial_event);
ca5c20b6
PM
951
952 while (gdbpy_event_list)
953 {
02146ba5
TT
954 PyObject *call_result;
955
ca5c20b6
PM
956 /* Dispatching the event might push a new element onto the event
957 loop, so we update here "atomically enough". */
958 struct gdbpy_event *item = gdbpy_event_list;
959 gdbpy_event_list = gdbpy_event_list->next;
960 if (gdbpy_event_list == NULL)
961 gdbpy_event_list_end = &gdbpy_event_list;
962
963 /* Ignore errors. */
02146ba5
TT
964 call_result = PyObject_CallObject (item->event, NULL);
965 if (call_result == NULL)
ca5c20b6
PM
966 PyErr_Clear ();
967
02146ba5 968 Py_XDECREF (call_result);
ca5c20b6
PM
969 Py_DECREF (item->event);
970 xfree (item);
971 }
972
973 do_cleanups (cleanup);
974}
975
976/* Submit an event to the gdb thread. */
977static PyObject *
978gdbpy_post_event (PyObject *self, PyObject *args)
979{
980 struct gdbpy_event *event;
981 PyObject *func;
982 int wakeup;
983
984 if (!PyArg_ParseTuple (args, "O", &func))
985 return NULL;
986
987 if (!PyCallable_Check (func))
988 {
256458bc 989 PyErr_SetString (PyExc_RuntimeError,
ca5c20b6
PM
990 _("Posted event is not callable"));
991 return NULL;
992 }
993
994 Py_INCREF (func);
995
996 /* From here until the end of the function, we have the GIL, so we
997 can operate on our global data structures without worrying. */
998 wakeup = gdbpy_event_list == NULL;
999
1000 event = XNEW (struct gdbpy_event);
1001 event->event = func;
1002 event->next = NULL;
1003 *gdbpy_event_list_end = event;
1004 gdbpy_event_list_end = &event->next;
1005
1006 /* Wake up gdb when needed. */
1007 if (wakeup)
6eddd09a 1008 serial_event_set (gdbpy_serial_event);
ca5c20b6
PM
1009
1010 Py_RETURN_NONE;
1011}
1012
1013/* Initialize the Python event handler. */
999633ed 1014static int
ca5c20b6
PM
1015gdbpy_initialize_events (void)
1016{
6eddd09a
PA
1017 gdbpy_event_list_end = &gdbpy_event_list;
1018
1019 gdbpy_serial_event = make_serial_event ();
1020 add_file_handler (serial_event_fd (gdbpy_serial_event),
1021 gdbpy_run_events, NULL);
999633ed
TT
1022
1023 return 0;
ca5c20b6
PM
1024}
1025
d17b6f81
PM
1026\f
1027
6dddc817
DE
1028/* This is the extension_language_ops.before_prompt "method". */
1029
1030static enum ext_lang_rc
1031gdbpy_before_prompt_hook (const struct extension_language_defn *extlang,
1032 const char *current_gdb_prompt)
d17b6f81
PM
1033{
1034 struct cleanup *cleanup;
1035 char *prompt = NULL;
1036
0646da15 1037 if (!gdb_python_initialized)
6dddc817 1038 return EXT_LANG_RC_NOP;
0646da15 1039
d17b6f81
PM
1040 cleanup = ensure_python_env (get_current_arch (), current_language);
1041
b9516fa1
YPK
1042 if (gdb_python_module
1043 && PyObject_HasAttrString (gdb_python_module, "prompt_hook"))
d17b6f81
PM
1044 {
1045 PyObject *hook;
1046
b9516fa1 1047 hook = PyObject_GetAttrString (gdb_python_module, "prompt_hook");
d17b6f81
PM
1048 if (hook == NULL)
1049 goto fail;
1050
0430e8cb
TT
1051 make_cleanup_py_decref (hook);
1052
d17b6f81
PM
1053 if (PyCallable_Check (hook))
1054 {
1055 PyObject *result;
1056 PyObject *current_prompt;
1057
1058 current_prompt = PyString_FromString (current_gdb_prompt);
1059 if (current_prompt == NULL)
1060 goto fail;
1061
1062 result = PyObject_CallFunctionObjArgs (hook, current_prompt, NULL);
1063
1064 Py_DECREF (current_prompt);
1065
1066 if (result == NULL)
1067 goto fail;
1068
1069 make_cleanup_py_decref (result);
1070
1071 /* Return type should be None, or a String. If it is None,
1072 fall through, we will not set a prompt. If it is a
1073 string, set PROMPT. Anything else, set an exception. */
1074 if (result != Py_None && ! PyString_Check (result))
1075 {
1076 PyErr_Format (PyExc_RuntimeError,
1077 _("Return from prompt_hook must " \
1078 "be either a Python string, or None"));
1079 goto fail;
1080 }
1081
1082 if (result != Py_None)
1083 {
1084 prompt = python_string_to_host_string (result);
1085
1086 if (prompt == NULL)
1087 goto fail;
1088 else
1089 make_cleanup (xfree, prompt);
1090 }
1091 }
1092 }
1093
1094 /* If a prompt has been set, PROMPT will not be NULL. If it is
1095 NULL, do not set the prompt. */
1096 if (prompt != NULL)
ab821bc6 1097 set_prompt (prompt);
d17b6f81
PM
1098
1099 do_cleanups (cleanup);
6dddc817 1100 return prompt != NULL ? EXT_LANG_RC_OK : EXT_LANG_RC_NOP;
d17b6f81
PM
1101
1102 fail:
1103 gdbpy_print_stack ();
1104 do_cleanups (cleanup);
6dddc817 1105 return EXT_LANG_RC_ERROR;
d17b6f81
PM
1106}
1107
1108\f
1109
d57a3c85
TJB
1110/* Printing. */
1111
1112/* A python function to write a single string using gdb's filtered
99c3dc11
PM
1113 output stream . The optional keyword STREAM can be used to write
1114 to a particular stream. The default stream is to gdb_stdout. */
1115
d57a3c85 1116static PyObject *
99c3dc11 1117gdbpy_write (PyObject *self, PyObject *args, PyObject *kw)
d57a3c85 1118{
ddd49eee 1119 const char *arg;
99c3dc11
PM
1120 static char *keywords[] = {"text", "stream", NULL };
1121 int stream_type = 0;
256458bc 1122
99c3dc11
PM
1123 if (! PyArg_ParseTupleAndKeywords (args, kw, "s|i", keywords, &arg,
1124 &stream_type))
d57a3c85 1125 return NULL;
99c3dc11 1126
492d29ea 1127 TRY
99c3dc11 1128 {
adb4fe3b
ME
1129 switch (stream_type)
1130 {
1131 case 1:
1132 {
1133 fprintf_filtered (gdb_stderr, "%s", arg);
1134 break;
1135 }
1136 case 2:
1137 {
1138 fprintf_filtered (gdb_stdlog, "%s", arg);
1139 break;
1140 }
1141 default:
1142 fprintf_filtered (gdb_stdout, "%s", arg);
1143 }
99c3dc11 1144 }
492d29ea
PA
1145 CATCH (except, RETURN_MASK_ALL)
1146 {
1147 GDB_PY_HANDLE_EXCEPTION (except);
1148 }
1149 END_CATCH
256458bc 1150
d57a3c85
TJB
1151 Py_RETURN_NONE;
1152}
1153
99c3dc11
PM
1154/* A python function to flush a gdb stream. The optional keyword
1155 STREAM can be used to flush a particular stream. The default stream
1156 is gdb_stdout. */
1157
d57a3c85 1158static PyObject *
99c3dc11 1159gdbpy_flush (PyObject *self, PyObject *args, PyObject *kw)
d57a3c85 1160{
99c3dc11
PM
1161 static char *keywords[] = {"stream", NULL };
1162 int stream_type = 0;
256458bc 1163
99c3dc11
PM
1164 if (! PyArg_ParseTupleAndKeywords (args, kw, "|i", keywords,
1165 &stream_type))
1166 return NULL;
1167
1168 switch (stream_type)
1169 {
1170 case 1:
1171 {
1172 gdb_flush (gdb_stderr);
1173 break;
1174 }
1175 case 2:
1176 {
1177 gdb_flush (gdb_stdlog);
1178 break;
1179 }
1180 default:
1181 gdb_flush (gdb_stdout);
1182 }
256458bc 1183
d57a3c85
TJB
1184 Py_RETURN_NONE;
1185}
1186
69b4374a
DE
1187/* Return non-zero if print-stack is not "none". */
1188
1189int
1190gdbpy_print_python_errors_p (void)
1191{
1192 return gdbpy_should_print_stack != python_excp_none;
1193}
1194
80b6e756
PM
1195/* Print a python exception trace, print just a message, or print
1196 nothing and clear the python exception, depending on
1197 gdbpy_should_print_stack. Only call this if a python exception is
1198 set. */
d57a3c85
TJB
1199void
1200gdbpy_print_stack (void)
1201{
7f6a5dde 1202
80b6e756
PM
1203 /* Print "none", just clear exception. */
1204 if (gdbpy_should_print_stack == python_excp_none)
1205 {
1206 PyErr_Clear ();
1207 }
1208 /* Print "full" message and backtrace. */
1209 else if (gdbpy_should_print_stack == python_excp_full)
0bf0f8c4
DE
1210 {
1211 PyErr_Print ();
1212 /* PyErr_Print doesn't necessarily end output with a newline.
1213 This works because Python's stdout/stderr is fed through
1214 printf_filtered. */
492d29ea 1215 TRY
7f6a5dde
TT
1216 {
1217 begin_line ();
1218 }
492d29ea
PA
1219 CATCH (except, RETURN_MASK_ALL)
1220 {
1221 }
1222 END_CATCH
0bf0f8c4 1223 }
80b6e756 1224 /* Print "message", just error print message. */
d57a3c85 1225 else
80b6e756
PM
1226 {
1227 PyObject *ptype, *pvalue, *ptraceback;
1228 char *msg = NULL, *type = NULL;
1229
1230 PyErr_Fetch (&ptype, &pvalue, &ptraceback);
1231
1232 /* Fetch the error message contained within ptype, pvalue. */
1233 msg = gdbpy_exception_to_string (ptype, pvalue);
1234 type = gdbpy_obj_to_string (ptype);
7f6a5dde 1235
492d29ea 1236 TRY
80b6e756 1237 {
7f6a5dde
TT
1238 if (msg == NULL)
1239 {
1240 /* An error occurred computing the string representation of the
1241 error message. */
1242 fprintf_filtered (gdb_stderr,
1243 _("Error occurred computing Python error" \
1244 "message.\n"));
1245 }
1246 else
1247 fprintf_filtered (gdb_stderr, "Python Exception %s %s: \n",
1248 type, msg);
80b6e756 1249 }
492d29ea
PA
1250 CATCH (except, RETURN_MASK_ALL)
1251 {
1252 }
1253 END_CATCH
80b6e756
PM
1254
1255 Py_XDECREF (ptype);
1256 Py_XDECREF (pvalue);
1257 Py_XDECREF (ptraceback);
1258 xfree (msg);
1259 }
d57a3c85
TJB
1260}
1261
89c73ade
TT
1262\f
1263
fa33c3cd
DE
1264/* Return the current Progspace.
1265 There always is one. */
1266
1267static PyObject *
1268gdbpy_get_current_progspace (PyObject *unused1, PyObject *unused2)
1269{
1270 PyObject *result;
1271
1272 result = pspace_to_pspace_object (current_program_space);
1273 if (result)
1274 Py_INCREF (result);
1275 return result;
1276}
1277
1278/* Return a sequence holding all the Progspaces. */
1279
1280static PyObject *
1281gdbpy_progspaces (PyObject *unused1, PyObject *unused2)
1282{
1283 struct program_space *ps;
1284 PyObject *list;
1285
1286 list = PyList_New (0);
1287 if (!list)
1288 return NULL;
1289
1290 ALL_PSPACES (ps)
1291 {
1292 PyObject *item = pspace_to_pspace_object (ps);
d59b6f6c 1293
fa33c3cd
DE
1294 if (!item || PyList_Append (list, item) == -1)
1295 {
1296 Py_DECREF (list);
1297 return NULL;
1298 }
1299 }
1300
1301 return list;
1302}
1303
1304\f
1305
89c73ade 1306/* The "current" objfile. This is set when gdb detects that a new
8a1ea21f 1307 objfile has been loaded. It is only set for the duration of a call to
9f050062
DE
1308 gdbpy_source_objfile_script and gdbpy_execute_objfile_script; it is NULL
1309 at other times. */
89c73ade
TT
1310static struct objfile *gdbpy_current_objfile;
1311
4c63965b
JK
1312/* Set the current objfile to OBJFILE and then read FILE named FILENAME
1313 as Python code. This does not throw any errors. If an exception
6dddc817
DE
1314 occurs python will print the traceback and clear the error indicator.
1315 This is the extension_language_script_ops.objfile_script_sourcer
1316 "method". */
89c73ade 1317
6dddc817
DE
1318static void
1319gdbpy_source_objfile_script (const struct extension_language_defn *extlang,
1320 struct objfile *objfile, FILE *file,
1321 const char *filename)
89c73ade 1322{
89c73ade
TT
1323 struct cleanup *cleanups;
1324
0646da15
TT
1325 if (!gdb_python_initialized)
1326 return;
1327
d452c4bc 1328 cleanups = ensure_python_env (get_objfile_arch (objfile), current_language);
89c73ade
TT
1329 gdbpy_current_objfile = objfile;
1330
4c63965b 1331 python_run_simple_file (file, filename);
89c73ade
TT
1332
1333 do_cleanups (cleanups);
1334 gdbpy_current_objfile = NULL;
89c73ade
TT
1335}
1336
9f050062
DE
1337/* Set the current objfile to OBJFILE and then execute SCRIPT
1338 as Python code. This does not throw any errors. If an exception
1339 occurs python will print the traceback and clear the error indicator.
1340 This is the extension_language_script_ops.objfile_script_executor
1341 "method". */
1342
1343static void
1344gdbpy_execute_objfile_script (const struct extension_language_defn *extlang,
1345 struct objfile *objfile, const char *name,
1346 const char *script)
1347{
1348 struct cleanup *cleanups;
1349
1350 if (!gdb_python_initialized)
1351 return;
1352
1353 cleanups = ensure_python_env (get_objfile_arch (objfile), current_language);
1354 gdbpy_current_objfile = objfile;
1355
1356 PyRun_SimpleString (script);
1357
1358 do_cleanups (cleanups);
1359 gdbpy_current_objfile = NULL;
1360}
1361
89c73ade 1362/* Return the current Objfile, or None if there isn't one. */
8a1ea21f 1363
89c73ade
TT
1364static PyObject *
1365gdbpy_get_current_objfile (PyObject *unused1, PyObject *unused2)
1366{
1367 PyObject *result;
1368
1369 if (! gdbpy_current_objfile)
1370 Py_RETURN_NONE;
1371
1372 result = objfile_to_objfile_object (gdbpy_current_objfile);
1373 if (result)
1374 Py_INCREF (result);
1375 return result;
1376}
1377
1378/* Return a sequence holding all the Objfiles. */
fa33c3cd 1379
89c73ade
TT
1380static PyObject *
1381gdbpy_objfiles (PyObject *unused1, PyObject *unused2)
1382{
1383 struct objfile *objf;
1384 PyObject *list;
1385
1386 list = PyList_New (0);
1387 if (!list)
1388 return NULL;
1389
1390 ALL_OBJFILES (objf)
1391 {
1392 PyObject *item = objfile_to_objfile_object (objf);
d59b6f6c 1393
89c73ade
TT
1394 if (!item || PyList_Append (list, item) == -1)
1395 {
1396 Py_DECREF (list);
1397 return NULL;
1398 }
1399 }
1400
1401 return list;
1402}
1403
6dddc817
DE
1404/* Compute the list of active python type printers and store them in
1405 EXT_PRINTERS->py_type_printers. The product of this function is used by
1406 gdbpy_apply_type_printers, and freed by gdbpy_free_type_printers.
1407 This is the extension_language_ops.start_type_printers "method". */
18a9fc12 1408
6dddc817
DE
1409static void
1410gdbpy_start_type_printers (const struct extension_language_defn *extlang,
1411 struct ext_lang_type_printers *ext_printers)
18a9fc12
TT
1412{
1413 struct cleanup *cleanups;
6dddc817 1414 PyObject *type_module, *func = NULL, *printers_obj = NULL;
18a9fc12 1415
0646da15 1416 if (!gdb_python_initialized)
6dddc817 1417 return;
0646da15 1418
18a9fc12
TT
1419 cleanups = ensure_python_env (get_current_arch (), current_language);
1420
1421 type_module = PyImport_ImportModule ("gdb.types");
1422 if (type_module == NULL)
1423 {
1424 gdbpy_print_stack ();
1425 goto done;
1426 }
18a9fc12
TT
1427
1428 func = PyObject_GetAttrString (type_module, "get_type_recognizers");
1429 if (func == NULL)
1430 {
1431 gdbpy_print_stack ();
1432 goto done;
1433 }
18a9fc12 1434
6dddc817
DE
1435 printers_obj = PyObject_CallFunctionObjArgs (func, (char *) NULL);
1436 if (printers_obj == NULL)
18a9fc12 1437 gdbpy_print_stack ();
6dddc817
DE
1438 else
1439 ext_printers->py_type_printers = printers_obj;
18a9fc12
TT
1440
1441 done:
3d4a3c3e
TT
1442 Py_XDECREF (type_module);
1443 Py_XDECREF (func);
18a9fc12 1444 do_cleanups (cleanups);
18a9fc12
TT
1445}
1446
6dddc817
DE
1447/* If TYPE is recognized by some type printer, store in *PRETTIED_TYPE
1448 a newly allocated string holding the type's replacement name, and return
1449 EXT_LANG_RC_OK. The caller is responsible for freeing the string.
1450 If there's a Python error return EXT_LANG_RC_ERROR.
1451 Otherwise, return EXT_LANG_RC_NOP.
1452 This is the extension_language_ops.apply_type_printers "method". */
1453
1454static enum ext_lang_rc
1455gdbpy_apply_type_printers (const struct extension_language_defn *extlang,
1456 const struct ext_lang_type_printers *ext_printers,
1457 struct type *type, char **prettied_type)
18a9fc12
TT
1458{
1459 struct cleanup *cleanups;
3d4a3c3e
TT
1460 PyObject *type_obj, *type_module = NULL, *func = NULL;
1461 PyObject *result_obj = NULL;
19ba03f4 1462 PyObject *printers_obj = (PyObject *) ext_printers->py_type_printers;
18a9fc12
TT
1463 char *result = NULL;
1464
1465 if (printers_obj == NULL)
6dddc817 1466 return EXT_LANG_RC_NOP;
18a9fc12 1467
0646da15 1468 if (!gdb_python_initialized)
6dddc817 1469 return EXT_LANG_RC_NOP;
0646da15 1470
18a9fc12
TT
1471 cleanups = ensure_python_env (get_current_arch (), current_language);
1472
1473 type_obj = type_to_type_object (type);
1474 if (type_obj == NULL)
1475 {
1476 gdbpy_print_stack ();
1477 goto done;
1478 }
18a9fc12
TT
1479
1480 type_module = PyImport_ImportModule ("gdb.types");
1481 if (type_module == NULL)
1482 {
1483 gdbpy_print_stack ();
1484 goto done;
1485 }
18a9fc12
TT
1486
1487 func = PyObject_GetAttrString (type_module, "apply_type_recognizers");
1488 if (func == NULL)
1489 {
1490 gdbpy_print_stack ();
1491 goto done;
1492 }
18a9fc12
TT
1493
1494 result_obj = PyObject_CallFunctionObjArgs (func, printers_obj,
1495 type_obj, (char *) NULL);
1496 if (result_obj == NULL)
1497 {
1498 gdbpy_print_stack ();
1499 goto done;
1500 }
18a9fc12
TT
1501
1502 if (result_obj != Py_None)
1503 {
1504 result = python_string_to_host_string (result_obj);
1505 if (result == NULL)
1506 gdbpy_print_stack ();
1507 }
1508
1509 done:
3d4a3c3e
TT
1510 Py_XDECREF (type_obj);
1511 Py_XDECREF (type_module);
1512 Py_XDECREF (func);
1513 Py_XDECREF (result_obj);
18a9fc12 1514 do_cleanups (cleanups);
6dddc817
DE
1515 if (result != NULL)
1516 *prettied_type = result;
1517 return result != NULL ? EXT_LANG_RC_OK : EXT_LANG_RC_ERROR;
18a9fc12
TT
1518}
1519
6dddc817
DE
1520/* Free the result of start_type_printers.
1521 This is the extension_language_ops.free_type_printers "method". */
18a9fc12 1522
6dddc817
DE
1523static void
1524gdbpy_free_type_printers (const struct extension_language_defn *extlang,
1525 struct ext_lang_type_printers *ext_printers)
18a9fc12
TT
1526{
1527 struct cleanup *cleanups;
19ba03f4 1528 PyObject *printers = (PyObject *) ext_printers->py_type_printers;
18a9fc12
TT
1529
1530 if (printers == NULL)
1531 return;
1532
0646da15
TT
1533 if (!gdb_python_initialized)
1534 return;
1535
18a9fc12
TT
1536 cleanups = ensure_python_env (get_current_arch (), current_language);
1537 Py_DECREF (printers);
1538 do_cleanups (cleanups);
1539}
1540
d57a3c85
TJB
1541#else /* HAVE_PYTHON */
1542
8315665e
YPK
1543/* Dummy implementation of the gdb "python-interactive" and "python"
1544 command. */
d57a3c85
TJB
1545
1546static void
8315665e 1547python_interactive_command (char *arg, int from_tty)
d57a3c85 1548{
529480d0 1549 arg = skip_spaces (arg);
d57a3c85
TJB
1550 if (arg && *arg)
1551 error (_("Python scripting is not supported in this copy of GDB."));
1552 else
1553 {
1554 struct command_line *l = get_command_line (python_control, "");
1555 struct cleanup *cleanups = make_cleanup_free_command_lines (&l);
d59b6f6c 1556
d57a3c85
TJB
1557 execute_control_command_untraced (l);
1558 do_cleanups (cleanups);
1559 }
1560}
1561
8315665e
YPK
1562static void
1563python_command (char *arg, int from_tty)
1564{
1565 python_interactive_command (arg, from_tty);
1566}
1567
d57a3c85
TJB
1568#endif /* HAVE_PYTHON */
1569
1570\f
1571
713389e0
PM
1572/* Lists for 'set python' commands. */
1573
1574static struct cmd_list_element *user_set_python_list;
1575static struct cmd_list_element *user_show_python_list;
d57a3c85 1576
713389e0
PM
1577/* Function for use by 'set python' prefix command. */
1578
1579static void
1580user_set_python (char *args, int from_tty)
1581{
1582 help_list (user_set_python_list, "set python ", all_commands,
1583 gdb_stdout);
1584}
1585
1586/* Function for use by 'show python' prefix command. */
1587
1588static void
1589user_show_python (char *args, int from_tty)
d57a3c85 1590{
713389e0 1591 cmd_show_list (user_show_python_list, from_tty, "");
d57a3c85
TJB
1592}
1593
1594/* Initialize the Python code. */
1595
810849a3
AS
1596#ifdef HAVE_PYTHON
1597
d7de8e3c
TT
1598/* This is installed as a final cleanup and cleans up the
1599 interpreter. This lets Python's 'atexit' work. */
1600
1601static void
1602finalize_python (void *ignore)
1603{
6dddc817
DE
1604 struct active_ext_lang_state *previous_active;
1605
d7de8e3c
TT
1606 /* We don't use ensure_python_env here because if we ever ran the
1607 cleanup, gdb would crash -- because the cleanup calls into the
1608 Python interpreter, which we are about to destroy. It seems
1609 clearer to make the needed calls explicitly here than to create a
1610 cleanup and then mysteriously discard it. */
6dddc817
DE
1611
1612 /* This is only called as a final cleanup so we can assume the active
1613 SIGINT handler is gdb's. We still need to tell it to notify Python. */
1614 previous_active = set_active_ext_lang (&extension_language_python);
1615
b1209b03 1616 (void) PyGILState_Ensure ();
f5656ead 1617 python_gdbarch = target_gdbarch ();
d7de8e3c
TT
1618 python_language = current_language;
1619
1620 Py_Finalize ();
6dddc817
DE
1621
1622 restore_active_ext_lang (previous_active);
d7de8e3c 1623}
810849a3 1624#endif
d7de8e3c 1625
2c0b251b
PA
1626/* Provide a prototype to silence -Wmissing-prototypes. */
1627extern initialize_file_ftype _initialize_python;
1628
d57a3c85
TJB
1629void
1630_initialize_python (void)
1631{
9a27f2c6
PK
1632 char *progname;
1633#ifdef IS_PY3K
1634 int i;
1635 size_t progsize, count;
1636 char *oldloc;
1637 wchar_t *progname_copy;
1638#endif
713389e0 1639
8315665e
YPK
1640 add_com ("python-interactive", class_obscure,
1641 python_interactive_command,
1642#ifdef HAVE_PYTHON
1643 _("\
e3480f4a
YPK
1644Start an interactive Python prompt.\n\
1645\n\
1646To return to GDB, type the EOF character (e.g., Ctrl-D on an empty\n\
1647prompt).\n\
8315665e
YPK
1648\n\
1649Alternatively, a single-line Python command can be given as an\n\
1650argument, and if the command is an expression, the result will be\n\
1651printed. For example:\n\
1652\n\
1653 (gdb) python-interactive 2 + 3\n\
1654 5\n\
1655")
1656#else /* HAVE_PYTHON */
1657 _("\
1658Start a Python interactive prompt.\n\
1659\n\
1660Python scripting is not supported in this copy of GDB.\n\
1661This command is only a placeholder.")
1662#endif /* HAVE_PYTHON */
1663 );
1664 add_com_alias ("pi", "python-interactive", class_obscure, 1);
1665
d57a3c85
TJB
1666 add_com ("python", class_obscure, python_command,
1667#ifdef HAVE_PYTHON
1668 _("\
1669Evaluate a Python command.\n\
1670\n\
1671The command can be given as an argument, for instance:\n\
1672\n\
1673 python print 23\n\
1674\n\
1675If no argument is given, the following lines are read and used\n\
1676as the Python commands. Type a line containing \"end\" to indicate\n\
1677the end of the command.")
1678#else /* HAVE_PYTHON */
1679 _("\
1680Evaluate a Python command.\n\
1681\n\
1682Python scripting is not supported in this copy of GDB.\n\
1683This command is only a placeholder.")
1684#endif /* HAVE_PYTHON */
1685 );
8315665e 1686 add_com_alias ("py", "python", class_obscure, 1);
d57a3c85 1687
713389e0
PM
1688 /* Add set/show python print-stack. */
1689 add_prefix_cmd ("python", no_class, user_show_python,
1690 _("Prefix command for python preference settings."),
1691 &user_show_python_list, "show python ", 0,
1692 &showlist);
1693
1694 add_prefix_cmd ("python", no_class, user_set_python,
1695 _("Prefix command for python preference settings."),
1696 &user_set_python_list, "set python ", 0,
1697 &setlist);
1698
80b6e756
PM
1699 add_setshow_enum_cmd ("print-stack", no_class, python_excp_enums,
1700 &gdbpy_should_print_stack, _("\
1701Set mode for Python stack dump on error."), _("\
1702Show the mode of Python stack printing on error."), _("\
1703none == no stack or message will be printed.\n\
1704full == a message and a stack will be printed.\n\
1705message == an error message without a stack will be printed."),
1706 NULL, NULL,
1707 &user_set_python_list,
1708 &user_show_python_list);
d57a3c85
TJB
1709
1710#ifdef HAVE_PYTHON
0c4a4063
DE
1711#ifdef WITH_PYTHON_PATH
1712 /* Work around problem where python gets confused about where it is,
1713 and then can't find its libraries, etc.
1714 NOTE: Python assumes the following layout:
1715 /foo/bin/python
1716 /foo/lib/pythonX.Y/...
1717 This must be done before calling Py_Initialize. */
9a27f2c6 1718 progname = concat (ldirname (python_libdir), SLASH_STRING, "bin",
b36cec19 1719 SLASH_STRING, "python", (char *) NULL);
9a27f2c6 1720#ifdef IS_PY3K
86f1abec 1721 oldloc = xstrdup (setlocale (LC_ALL, NULL));
9a27f2c6
PK
1722 setlocale (LC_ALL, "");
1723 progsize = strlen (progname);
db0f0d0c 1724 progname_copy = (wchar_t *) PyMem_Malloc ((progsize + 1) * sizeof (wchar_t));
9a27f2c6
PK
1725 if (!progname_copy)
1726 {
86f1abec 1727 xfree (oldloc);
9a27f2c6
PK
1728 fprintf (stderr, "out of memory\n");
1729 return;
1730 }
1731 count = mbstowcs (progname_copy, progname, progsize + 1);
1732 if (count == (size_t) -1)
1733 {
86f1abec 1734 xfree (oldloc);
9a27f2c6
PK
1735 fprintf (stderr, "Could not convert python path to string\n");
1736 return;
1737 }
1738 setlocale (LC_ALL, oldloc);
86f1abec 1739 xfree (oldloc);
9a27f2c6
PK
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
b36cec19 1892 gdb_pythondir = concat (gdb_datadir, SLASH_STRING, "python", (char *) NULL);
b9516fa1
YPK
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." },
e0f3fd7c
TT
2083
2084 { "invalidate_cached_frames", gdbpy_invalidate_cached_frames, METH_NOARGS,
2085 "invalidate_cached_frames () -> None.\n\
2086Invalidate any cached frame objects in gdb.\n\
2087Intended for internal use only." },
2088
12453b93
TJB
2089 {NULL, NULL, 0, NULL}
2090};
2091
9a27f2c6 2092#ifdef IS_PY3K
bcabf420 2093struct PyModuleDef python_GdbModuleDef =
9a27f2c6
PK
2094{
2095 PyModuleDef_HEAD_INIT,
2096 "_gdb",
2097 NULL,
256458bc 2098 -1,
02e62830 2099 python_GdbMethods,
9a27f2c6
PK
2100 NULL,
2101 NULL,
2102 NULL,
2103 NULL
2104};
2105#endif
12453b93 2106#endif /* HAVE_PYTHON */
This page took 0.982181 seconds and 4 git commands to generate.