Fix build failure in xcoffread.c
[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
cd94f6d5
SM
657 make_cleanup_restore_current_uiout ();
658
e7ea3ec7
CU
659 /* Use the console interpreter uiout to have the same print format
660 for console or MI. */
8322445e 661 interp = interp_lookup (current_ui, "console");
e7ea3ec7
CU
662 current_uiout = interp_ui_out (interp);
663
47a80e90 664 prevent_dont_repeat ();
bc9f0842 665 if (to_string)
5da1313b
JK
666 result = execute_command_to_string (copy, from_tty);
667 else
bc9f0842 668 {
5da1313b
JK
669 result = NULL;
670 execute_command (copy, from_tty);
bc9f0842 671 }
d59b6f6c 672
86c6265d 673 do_cleanups (cleanup);
d57a3c85 674 }
492d29ea
PA
675 CATCH (except, RETURN_MASK_ALL)
676 {
677 GDB_PY_HANDLE_EXCEPTION (except);
678 }
679 END_CATCH
d57a3c85 680
347bddb7
PA
681 /* Do any commands attached to breakpoint we stopped at. */
682 bpstat_do_actions ();
d57a3c85 683
bc9f0842
TT
684 if (result)
685 {
686 PyObject *r = PyString_FromString (result);
687 xfree (result);
688 return r;
689 }
d57a3c85
TJB
690 Py_RETURN_NONE;
691}
692
cb2e07a6
PM
693/* Implementation of gdb.solib_name (Long) -> String.
694 Returns the name of the shared library holding a given address, or None. */
695
696static PyObject *
697gdbpy_solib_name (PyObject *self, PyObject *args)
698{
699 char *soname;
700 PyObject *str_obj;
1b40ec05 701 gdb_py_ulongest pc;
74aedc46 702
1b40ec05 703 if (!PyArg_ParseTuple (args, GDB_PY_LLU_ARG, &pc))
cb2e07a6
PM
704 return NULL;
705
706 soname = solib_name_from_address (current_program_space, pc);
707 if (soname)
4ae6cc19 708 str_obj = host_string_to_python_string (soname);
cb2e07a6
PM
709 else
710 {
711 str_obj = Py_None;
712 Py_INCREF (Py_None);
713 }
714
715 return str_obj;
716}
717
718/* A Python function which is a wrapper for decode_line_1. */
719
720static PyObject *
721gdbpy_decode_line (PyObject *self, PyObject *args)
722{
492d29ea 723 struct gdb_exception except = exception_none;
9a2b4c1b
MS
724 struct symtabs_and_lines sals = { NULL, 0 }; /* Initialize to
725 appease gcc. */
cb2e07a6 726 struct symtab_and_line sal;
f00aae0f 727 char *arg = NULL;
cb2e07a6
PM
728 struct cleanup *cleanups;
729 PyObject *result = NULL;
730 PyObject *return_result = NULL;
731 PyObject *unparsed = NULL;
59ecaff3 732 struct event_location *location = NULL;
cb2e07a6
PM
733
734 if (! PyArg_ParseTuple (args, "|s", &arg))
735 return NULL;
736
5d9c5995 737 cleanups = make_cleanup (null_cleanup, NULL);
cb2e07a6 738
9bc3523d 739 sals.sals = NULL;
492d29ea 740
f00aae0f
KS
741 if (arg != NULL)
742 {
68dadef5 743 location = string_to_event_location_basic (&arg, python_language);
f00aae0f
KS
744 make_cleanup_delete_event_location (location);
745 }
746
492d29ea 747 TRY
cb2e07a6 748 {
59ecaff3 749 if (location != NULL)
c2f4122d 750 sals = decode_line_1 (location, 0, NULL, NULL, 0);
cb2e07a6
PM
751 else
752 {
753 set_default_source_symtab_and_line ();
754 sal = get_current_source_symtab_and_line ();
755 sals.sals = &sal;
756 sals.nelts = 1;
757 }
758 }
492d29ea
PA
759 CATCH (ex, RETURN_MASK_ALL)
760 {
761 except = ex;
762 }
763 END_CATCH
9bc3523d
TT
764
765 if (sals.sals != NULL && sals.sals != &sal)
f00aae0f 766 make_cleanup (xfree, sals.sals);
9bc3523d 767
cb2e07a6
PM
768 if (except.reason < 0)
769 {
770 do_cleanups (cleanups);
771 /* We know this will always throw. */
f3300387
TT
772 gdbpy_convert_exception (except);
773 return NULL;
cb2e07a6
PM
774 }
775
776 if (sals.nelts)
777 {
778 int i;
779
780 result = PyTuple_New (sals.nelts);
781 if (! result)
782 goto error;
783 for (i = 0; i < sals.nelts; ++i)
784 {
785 PyObject *obj;
cb2e07a6
PM
786
787 obj = symtab_and_line_to_sal_object (sals.sals[i]);
788 if (! obj)
789 {
790 Py_DECREF (result);
791 goto error;
792 }
793
794 PyTuple_SetItem (result, i, obj);
795 }
796 }
797 else
798 {
799 result = Py_None;
800 Py_INCREF (Py_None);
801 }
802
803 return_result = PyTuple_New (2);
804 if (! return_result)
805 {
806 Py_DECREF (result);
807 goto error;
808 }
809
f00aae0f 810 if (arg != NULL && strlen (arg) > 0)
9bc3523d 811 {
f00aae0f 812 unparsed = PyString_FromString (arg);
9bc3523d
TT
813 if (unparsed == NULL)
814 {
815 Py_DECREF (result);
816 Py_DECREF (return_result);
817 return_result = NULL;
818 goto error;
819 }
820 }
cb2e07a6
PM
821 else
822 {
823 unparsed = Py_None;
824 Py_INCREF (Py_None);
825 }
826
827 PyTuple_SetItem (return_result, 0, unparsed);
828 PyTuple_SetItem (return_result, 1, result);
829
9bc3523d 830 error:
cb2e07a6
PM
831 do_cleanups (cleanups);
832
833 return return_result;
cb2e07a6
PM
834}
835
57a1d736
TT
836/* Parse a string and evaluate it as an expression. */
837static PyObject *
838gdbpy_parse_and_eval (PyObject *self, PyObject *args)
839{
ddd49eee 840 const char *expr_str;
57a1d736 841 struct value *result = NULL;
57a1d736
TT
842
843 if (!PyArg_ParseTuple (args, "s", &expr_str))
844 return NULL;
845
492d29ea 846 TRY
57a1d736 847 {
bbc13ae3 848 result = parse_and_eval (expr_str);
57a1d736 849 }
492d29ea
PA
850 CATCH (except, RETURN_MASK_ALL)
851 {
852 GDB_PY_HANDLE_EXCEPTION (except);
853 }
854 END_CATCH
57a1d736
TT
855
856 return value_to_value_object (result);
857}
858
7efc75aa
SCR
859/* Implementation of gdb.find_pc_line function.
860 Returns the gdb.Symtab_and_line object corresponding to a PC value. */
861
862static PyObject *
863gdbpy_find_pc_line (PyObject *self, PyObject *args)
864{
29ca12b3 865 gdb_py_ulongest pc_llu;
62d7fb51 866 PyObject *result = NULL; /* init for gcc -Wall */
7efc75aa
SCR
867
868 if (!PyArg_ParseTuple (args, GDB_PY_LLU_ARG, &pc_llu))
869 return NULL;
870
492d29ea 871 TRY
9e974e55
TT
872 {
873 struct symtab_and_line sal;
874 CORE_ADDR pc;
875
876 pc = (CORE_ADDR) pc_llu;
877 sal = find_pc_line (pc, 0);
878 result = symtab_and_line_to_sal_object (sal);
879 }
492d29ea
PA
880 CATCH (except, RETURN_MASK_ALL)
881 {
882 GDB_PY_HANDLE_EXCEPTION (except);
883 }
884 END_CATCH
9e974e55
TT
885
886 return result;
7efc75aa
SCR
887}
888
e0f3fd7c
TT
889/* Implementation of gdb.invalidate_cached_frames. */
890
891static PyObject *
892gdbpy_invalidate_cached_frames (PyObject *self, PyObject *args)
893{
894 reinit_frame_cache ();
895 Py_RETURN_NONE;
896}
897
d234ef5c 898/* Read a file as Python code.
6dddc817
DE
899 This is the extension_language_script_ops.script_sourcer "method".
900 FILE is the file to load. FILENAME is name of the file FILE.
d234ef5c
DE
901 This does not throw any errors. If an exception occurs python will print
902 the traceback and clear the error indicator. */
973817a3 903
6dddc817
DE
904static void
905gdbpy_source_script (const struct extension_language_defn *extlang,
906 FILE *file, const char *filename)
973817a3 907{
eb5cda86 908 struct cleanup *cleanup;
973817a3 909
eb5cda86 910 cleanup = ensure_python_env (get_current_arch (), current_language);
4c63965b 911 python_run_simple_file (file, filename);
eb5cda86 912 do_cleanups (cleanup);
973817a3
JB
913}
914
d57a3c85
TJB
915\f
916
ca5c20b6
PM
917/* Posting and handling events. */
918
919/* A single event. */
920struct gdbpy_event
921{
922 /* The Python event. This is just a callable object. */
923 PyObject *event;
924 /* The next event. */
925 struct gdbpy_event *next;
926};
927
928/* All pending events. */
929static struct gdbpy_event *gdbpy_event_list;
930/* The final link of the event list. */
931static struct gdbpy_event **gdbpy_event_list_end;
932
6eddd09a
PA
933/* So that we can wake up the main thread even when it is blocked in
934 poll(). */
935static struct serial_event *gdbpy_serial_event;
ca5c20b6
PM
936
937/* The file handler callback. This reads from the internal pipe, and
938 then processes the Python event queue. This will always be run in
939 the main gdb thread. */
4a532131 940
ca5c20b6 941static void
6eddd09a 942gdbpy_run_events (int error, gdb_client_data client_data)
ca5c20b6
PM
943{
944 struct cleanup *cleanup;
ca5c20b6
PM
945
946 cleanup = ensure_python_env (get_current_arch (), current_language);
947
6eddd09a
PA
948 /* Clear the event fd. Do this before flushing the events list, so
949 that any new event post afterwards is sure to re-awake the event
4a532131 950 loop. */
6eddd09a 951 serial_event_clear (gdbpy_serial_event);
ca5c20b6
PM
952
953 while (gdbpy_event_list)
954 {
02146ba5
TT
955 PyObject *call_result;
956
ca5c20b6
PM
957 /* Dispatching the event might push a new element onto the event
958 loop, so we update here "atomically enough". */
959 struct gdbpy_event *item = gdbpy_event_list;
960 gdbpy_event_list = gdbpy_event_list->next;
961 if (gdbpy_event_list == NULL)
962 gdbpy_event_list_end = &gdbpy_event_list;
963
964 /* Ignore errors. */
02146ba5
TT
965 call_result = PyObject_CallObject (item->event, NULL);
966 if (call_result == NULL)
ca5c20b6
PM
967 PyErr_Clear ();
968
02146ba5 969 Py_XDECREF (call_result);
ca5c20b6
PM
970 Py_DECREF (item->event);
971 xfree (item);
972 }
973
974 do_cleanups (cleanup);
975}
976
977/* Submit an event to the gdb thread. */
978static PyObject *
979gdbpy_post_event (PyObject *self, PyObject *args)
980{
981 struct gdbpy_event *event;
982 PyObject *func;
983 int wakeup;
984
985 if (!PyArg_ParseTuple (args, "O", &func))
986 return NULL;
987
988 if (!PyCallable_Check (func))
989 {
256458bc 990 PyErr_SetString (PyExc_RuntimeError,
ca5c20b6
PM
991 _("Posted event is not callable"));
992 return NULL;
993 }
994
995 Py_INCREF (func);
996
997 /* From here until the end of the function, we have the GIL, so we
998 can operate on our global data structures without worrying. */
999 wakeup = gdbpy_event_list == NULL;
1000
1001 event = XNEW (struct gdbpy_event);
1002 event->event = func;
1003 event->next = NULL;
1004 *gdbpy_event_list_end = event;
1005 gdbpy_event_list_end = &event->next;
1006
1007 /* Wake up gdb when needed. */
1008 if (wakeup)
6eddd09a 1009 serial_event_set (gdbpy_serial_event);
ca5c20b6
PM
1010
1011 Py_RETURN_NONE;
1012}
1013
1014/* Initialize the Python event handler. */
999633ed 1015static int
ca5c20b6
PM
1016gdbpy_initialize_events (void)
1017{
6eddd09a
PA
1018 gdbpy_event_list_end = &gdbpy_event_list;
1019
1020 gdbpy_serial_event = make_serial_event ();
1021 add_file_handler (serial_event_fd (gdbpy_serial_event),
1022 gdbpy_run_events, NULL);
999633ed
TT
1023
1024 return 0;
ca5c20b6
PM
1025}
1026
d17b6f81
PM
1027\f
1028
6dddc817
DE
1029/* This is the extension_language_ops.before_prompt "method". */
1030
1031static enum ext_lang_rc
1032gdbpy_before_prompt_hook (const struct extension_language_defn *extlang,
1033 const char *current_gdb_prompt)
d17b6f81
PM
1034{
1035 struct cleanup *cleanup;
1036 char *prompt = NULL;
1037
0646da15 1038 if (!gdb_python_initialized)
6dddc817 1039 return EXT_LANG_RC_NOP;
0646da15 1040
d17b6f81
PM
1041 cleanup = ensure_python_env (get_current_arch (), current_language);
1042
b9516fa1
YPK
1043 if (gdb_python_module
1044 && PyObject_HasAttrString (gdb_python_module, "prompt_hook"))
d17b6f81
PM
1045 {
1046 PyObject *hook;
1047
b9516fa1 1048 hook = PyObject_GetAttrString (gdb_python_module, "prompt_hook");
d17b6f81
PM
1049 if (hook == NULL)
1050 goto fail;
1051
0430e8cb
TT
1052 make_cleanup_py_decref (hook);
1053
d17b6f81
PM
1054 if (PyCallable_Check (hook))
1055 {
1056 PyObject *result;
1057 PyObject *current_prompt;
1058
1059 current_prompt = PyString_FromString (current_gdb_prompt);
1060 if (current_prompt == NULL)
1061 goto fail;
1062
1063 result = PyObject_CallFunctionObjArgs (hook, current_prompt, NULL);
1064
1065 Py_DECREF (current_prompt);
1066
1067 if (result == NULL)
1068 goto fail;
1069
1070 make_cleanup_py_decref (result);
1071
1072 /* Return type should be None, or a String. If it is None,
1073 fall through, we will not set a prompt. If it is a
1074 string, set PROMPT. Anything else, set an exception. */
1075 if (result != Py_None && ! PyString_Check (result))
1076 {
1077 PyErr_Format (PyExc_RuntimeError,
1078 _("Return from prompt_hook must " \
1079 "be either a Python string, or None"));
1080 goto fail;
1081 }
1082
1083 if (result != Py_None)
1084 {
1085 prompt = python_string_to_host_string (result);
1086
1087 if (prompt == NULL)
1088 goto fail;
1089 else
1090 make_cleanup (xfree, prompt);
1091 }
1092 }
1093 }
1094
1095 /* If a prompt has been set, PROMPT will not be NULL. If it is
1096 NULL, do not set the prompt. */
1097 if (prompt != NULL)
ab821bc6 1098 set_prompt (prompt);
d17b6f81
PM
1099
1100 do_cleanups (cleanup);
6dddc817 1101 return prompt != NULL ? EXT_LANG_RC_OK : EXT_LANG_RC_NOP;
d17b6f81
PM
1102
1103 fail:
1104 gdbpy_print_stack ();
1105 do_cleanups (cleanup);
6dddc817 1106 return EXT_LANG_RC_ERROR;
d17b6f81
PM
1107}
1108
1109\f
1110
d57a3c85
TJB
1111/* Printing. */
1112
1113/* A python function to write a single string using gdb's filtered
99c3dc11
PM
1114 output stream . The optional keyword STREAM can be used to write
1115 to a particular stream. The default stream is to gdb_stdout. */
1116
d57a3c85 1117static PyObject *
99c3dc11 1118gdbpy_write (PyObject *self, PyObject *args, PyObject *kw)
d57a3c85 1119{
ddd49eee 1120 const char *arg;
99c3dc11
PM
1121 static char *keywords[] = {"text", "stream", NULL };
1122 int stream_type = 0;
256458bc 1123
99c3dc11
PM
1124 if (! PyArg_ParseTupleAndKeywords (args, kw, "s|i", keywords, &arg,
1125 &stream_type))
d57a3c85 1126 return NULL;
99c3dc11 1127
492d29ea 1128 TRY
99c3dc11 1129 {
adb4fe3b
ME
1130 switch (stream_type)
1131 {
1132 case 1:
1133 {
1134 fprintf_filtered (gdb_stderr, "%s", arg);
1135 break;
1136 }
1137 case 2:
1138 {
1139 fprintf_filtered (gdb_stdlog, "%s", arg);
1140 break;
1141 }
1142 default:
1143 fprintf_filtered (gdb_stdout, "%s", arg);
1144 }
99c3dc11 1145 }
492d29ea
PA
1146 CATCH (except, RETURN_MASK_ALL)
1147 {
1148 GDB_PY_HANDLE_EXCEPTION (except);
1149 }
1150 END_CATCH
256458bc 1151
d57a3c85
TJB
1152 Py_RETURN_NONE;
1153}
1154
99c3dc11
PM
1155/* A python function to flush a gdb stream. The optional keyword
1156 STREAM can be used to flush a particular stream. The default stream
1157 is gdb_stdout. */
1158
d57a3c85 1159static PyObject *
99c3dc11 1160gdbpy_flush (PyObject *self, PyObject *args, PyObject *kw)
d57a3c85 1161{
99c3dc11
PM
1162 static char *keywords[] = {"stream", NULL };
1163 int stream_type = 0;
256458bc 1164
99c3dc11
PM
1165 if (! PyArg_ParseTupleAndKeywords (args, kw, "|i", keywords,
1166 &stream_type))
1167 return NULL;
1168
1169 switch (stream_type)
1170 {
1171 case 1:
1172 {
1173 gdb_flush (gdb_stderr);
1174 break;
1175 }
1176 case 2:
1177 {
1178 gdb_flush (gdb_stdlog);
1179 break;
1180 }
1181 default:
1182 gdb_flush (gdb_stdout);
1183 }
256458bc 1184
d57a3c85
TJB
1185 Py_RETURN_NONE;
1186}
1187
69b4374a
DE
1188/* Return non-zero if print-stack is not "none". */
1189
1190int
1191gdbpy_print_python_errors_p (void)
1192{
1193 return gdbpy_should_print_stack != python_excp_none;
1194}
1195
80b6e756
PM
1196/* Print a python exception trace, print just a message, or print
1197 nothing and clear the python exception, depending on
1198 gdbpy_should_print_stack. Only call this if a python exception is
1199 set. */
d57a3c85
TJB
1200void
1201gdbpy_print_stack (void)
1202{
7f6a5dde 1203
80b6e756
PM
1204 /* Print "none", just clear exception. */
1205 if (gdbpy_should_print_stack == python_excp_none)
1206 {
1207 PyErr_Clear ();
1208 }
1209 /* Print "full" message and backtrace. */
1210 else if (gdbpy_should_print_stack == python_excp_full)
0bf0f8c4
DE
1211 {
1212 PyErr_Print ();
1213 /* PyErr_Print doesn't necessarily end output with a newline.
1214 This works because Python's stdout/stderr is fed through
1215 printf_filtered. */
492d29ea 1216 TRY
7f6a5dde
TT
1217 {
1218 begin_line ();
1219 }
492d29ea
PA
1220 CATCH (except, RETURN_MASK_ALL)
1221 {
1222 }
1223 END_CATCH
0bf0f8c4 1224 }
80b6e756 1225 /* Print "message", just error print message. */
d57a3c85 1226 else
80b6e756
PM
1227 {
1228 PyObject *ptype, *pvalue, *ptraceback;
1229 char *msg = NULL, *type = NULL;
1230
1231 PyErr_Fetch (&ptype, &pvalue, &ptraceback);
1232
1233 /* Fetch the error message contained within ptype, pvalue. */
1234 msg = gdbpy_exception_to_string (ptype, pvalue);
1235 type = gdbpy_obj_to_string (ptype);
7f6a5dde 1236
492d29ea 1237 TRY
80b6e756 1238 {
7f6a5dde
TT
1239 if (msg == NULL)
1240 {
1241 /* An error occurred computing the string representation of the
1242 error message. */
1243 fprintf_filtered (gdb_stderr,
1244 _("Error occurred computing Python error" \
1245 "message.\n"));
1246 }
1247 else
1248 fprintf_filtered (gdb_stderr, "Python Exception %s %s: \n",
1249 type, msg);
80b6e756 1250 }
492d29ea
PA
1251 CATCH (except, RETURN_MASK_ALL)
1252 {
1253 }
1254 END_CATCH
80b6e756
PM
1255
1256 Py_XDECREF (ptype);
1257 Py_XDECREF (pvalue);
1258 Py_XDECREF (ptraceback);
1259 xfree (msg);
1260 }
d57a3c85
TJB
1261}
1262
89c73ade
TT
1263\f
1264
fa33c3cd
DE
1265/* Return the current Progspace.
1266 There always is one. */
1267
1268static PyObject *
1269gdbpy_get_current_progspace (PyObject *unused1, PyObject *unused2)
1270{
1271 PyObject *result;
1272
1273 result = pspace_to_pspace_object (current_program_space);
1274 if (result)
1275 Py_INCREF (result);
1276 return result;
1277}
1278
1279/* Return a sequence holding all the Progspaces. */
1280
1281static PyObject *
1282gdbpy_progspaces (PyObject *unused1, PyObject *unused2)
1283{
1284 struct program_space *ps;
1285 PyObject *list;
1286
1287 list = PyList_New (0);
1288 if (!list)
1289 return NULL;
1290
1291 ALL_PSPACES (ps)
1292 {
1293 PyObject *item = pspace_to_pspace_object (ps);
d59b6f6c 1294
fa33c3cd
DE
1295 if (!item || PyList_Append (list, item) == -1)
1296 {
1297 Py_DECREF (list);
1298 return NULL;
1299 }
1300 }
1301
1302 return list;
1303}
1304
1305\f
1306
89c73ade 1307/* The "current" objfile. This is set when gdb detects that a new
8a1ea21f 1308 objfile has been loaded. It is only set for the duration of a call to
9f050062
DE
1309 gdbpy_source_objfile_script and gdbpy_execute_objfile_script; it is NULL
1310 at other times. */
89c73ade
TT
1311static struct objfile *gdbpy_current_objfile;
1312
4c63965b
JK
1313/* Set the current objfile to OBJFILE and then read FILE named FILENAME
1314 as Python code. This does not throw any errors. If an exception
6dddc817
DE
1315 occurs python will print the traceback and clear the error indicator.
1316 This is the extension_language_script_ops.objfile_script_sourcer
1317 "method". */
89c73ade 1318
6dddc817
DE
1319static void
1320gdbpy_source_objfile_script (const struct extension_language_defn *extlang,
1321 struct objfile *objfile, FILE *file,
1322 const char *filename)
89c73ade 1323{
89c73ade
TT
1324 struct cleanup *cleanups;
1325
0646da15
TT
1326 if (!gdb_python_initialized)
1327 return;
1328
d452c4bc 1329 cleanups = ensure_python_env (get_objfile_arch (objfile), current_language);
89c73ade
TT
1330 gdbpy_current_objfile = objfile;
1331
4c63965b 1332 python_run_simple_file (file, filename);
89c73ade
TT
1333
1334 do_cleanups (cleanups);
1335 gdbpy_current_objfile = NULL;
89c73ade
TT
1336}
1337
9f050062
DE
1338/* Set the current objfile to OBJFILE and then execute SCRIPT
1339 as Python code. This does not throw any errors. If an exception
1340 occurs python will print the traceback and clear the error indicator.
1341 This is the extension_language_script_ops.objfile_script_executor
1342 "method". */
1343
1344static void
1345gdbpy_execute_objfile_script (const struct extension_language_defn *extlang,
1346 struct objfile *objfile, const char *name,
1347 const char *script)
1348{
1349 struct cleanup *cleanups;
1350
1351 if (!gdb_python_initialized)
1352 return;
1353
1354 cleanups = ensure_python_env (get_objfile_arch (objfile), current_language);
1355 gdbpy_current_objfile = objfile;
1356
1357 PyRun_SimpleString (script);
1358
1359 do_cleanups (cleanups);
1360 gdbpy_current_objfile = NULL;
1361}
1362
89c73ade 1363/* Return the current Objfile, or None if there isn't one. */
8a1ea21f 1364
89c73ade
TT
1365static PyObject *
1366gdbpy_get_current_objfile (PyObject *unused1, PyObject *unused2)
1367{
1368 PyObject *result;
1369
1370 if (! gdbpy_current_objfile)
1371 Py_RETURN_NONE;
1372
1373 result = objfile_to_objfile_object (gdbpy_current_objfile);
1374 if (result)
1375 Py_INCREF (result);
1376 return result;
1377}
1378
1379/* Return a sequence holding all the Objfiles. */
fa33c3cd 1380
89c73ade
TT
1381static PyObject *
1382gdbpy_objfiles (PyObject *unused1, PyObject *unused2)
1383{
1384 struct objfile *objf;
1385 PyObject *list;
1386
1387 list = PyList_New (0);
1388 if (!list)
1389 return NULL;
1390
1391 ALL_OBJFILES (objf)
1392 {
1393 PyObject *item = objfile_to_objfile_object (objf);
d59b6f6c 1394
89c73ade
TT
1395 if (!item || PyList_Append (list, item) == -1)
1396 {
1397 Py_DECREF (list);
1398 return NULL;
1399 }
1400 }
1401
1402 return list;
1403}
1404
6dddc817
DE
1405/* Compute the list of active python type printers and store them in
1406 EXT_PRINTERS->py_type_printers. The product of this function is used by
1407 gdbpy_apply_type_printers, and freed by gdbpy_free_type_printers.
1408 This is the extension_language_ops.start_type_printers "method". */
18a9fc12 1409
6dddc817
DE
1410static void
1411gdbpy_start_type_printers (const struct extension_language_defn *extlang,
1412 struct ext_lang_type_printers *ext_printers)
18a9fc12
TT
1413{
1414 struct cleanup *cleanups;
6dddc817 1415 PyObject *type_module, *func = NULL, *printers_obj = NULL;
18a9fc12 1416
0646da15 1417 if (!gdb_python_initialized)
6dddc817 1418 return;
0646da15 1419
18a9fc12
TT
1420 cleanups = ensure_python_env (get_current_arch (), current_language);
1421
1422 type_module = PyImport_ImportModule ("gdb.types");
1423 if (type_module == NULL)
1424 {
1425 gdbpy_print_stack ();
1426 goto done;
1427 }
18a9fc12
TT
1428
1429 func = PyObject_GetAttrString (type_module, "get_type_recognizers");
1430 if (func == NULL)
1431 {
1432 gdbpy_print_stack ();
1433 goto done;
1434 }
18a9fc12 1435
6dddc817
DE
1436 printers_obj = PyObject_CallFunctionObjArgs (func, (char *) NULL);
1437 if (printers_obj == NULL)
18a9fc12 1438 gdbpy_print_stack ();
6dddc817
DE
1439 else
1440 ext_printers->py_type_printers = printers_obj;
18a9fc12
TT
1441
1442 done:
3d4a3c3e
TT
1443 Py_XDECREF (type_module);
1444 Py_XDECREF (func);
18a9fc12 1445 do_cleanups (cleanups);
18a9fc12
TT
1446}
1447
6dddc817
DE
1448/* If TYPE is recognized by some type printer, store in *PRETTIED_TYPE
1449 a newly allocated string holding the type's replacement name, and return
1450 EXT_LANG_RC_OK. The caller is responsible for freeing the string.
1451 If there's a Python error return EXT_LANG_RC_ERROR.
1452 Otherwise, return EXT_LANG_RC_NOP.
1453 This is the extension_language_ops.apply_type_printers "method". */
1454
1455static enum ext_lang_rc
1456gdbpy_apply_type_printers (const struct extension_language_defn *extlang,
1457 const struct ext_lang_type_printers *ext_printers,
1458 struct type *type, char **prettied_type)
18a9fc12
TT
1459{
1460 struct cleanup *cleanups;
3d4a3c3e
TT
1461 PyObject *type_obj, *type_module = NULL, *func = NULL;
1462 PyObject *result_obj = NULL;
19ba03f4 1463 PyObject *printers_obj = (PyObject *) ext_printers->py_type_printers;
18a9fc12
TT
1464 char *result = NULL;
1465
1466 if (printers_obj == NULL)
6dddc817 1467 return EXT_LANG_RC_NOP;
18a9fc12 1468
0646da15 1469 if (!gdb_python_initialized)
6dddc817 1470 return EXT_LANG_RC_NOP;
0646da15 1471
18a9fc12
TT
1472 cleanups = ensure_python_env (get_current_arch (), current_language);
1473
1474 type_obj = type_to_type_object (type);
1475 if (type_obj == NULL)
1476 {
1477 gdbpy_print_stack ();
1478 goto done;
1479 }
18a9fc12
TT
1480
1481 type_module = PyImport_ImportModule ("gdb.types");
1482 if (type_module == NULL)
1483 {
1484 gdbpy_print_stack ();
1485 goto done;
1486 }
18a9fc12
TT
1487
1488 func = PyObject_GetAttrString (type_module, "apply_type_recognizers");
1489 if (func == NULL)
1490 {
1491 gdbpy_print_stack ();
1492 goto done;
1493 }
18a9fc12
TT
1494
1495 result_obj = PyObject_CallFunctionObjArgs (func, printers_obj,
1496 type_obj, (char *) NULL);
1497 if (result_obj == NULL)
1498 {
1499 gdbpy_print_stack ();
1500 goto done;
1501 }
18a9fc12
TT
1502
1503 if (result_obj != Py_None)
1504 {
1505 result = python_string_to_host_string (result_obj);
1506 if (result == NULL)
1507 gdbpy_print_stack ();
1508 }
1509
1510 done:
3d4a3c3e
TT
1511 Py_XDECREF (type_obj);
1512 Py_XDECREF (type_module);
1513 Py_XDECREF (func);
1514 Py_XDECREF (result_obj);
18a9fc12 1515 do_cleanups (cleanups);
6dddc817
DE
1516 if (result != NULL)
1517 *prettied_type = result;
1518 return result != NULL ? EXT_LANG_RC_OK : EXT_LANG_RC_ERROR;
18a9fc12
TT
1519}
1520
6dddc817
DE
1521/* Free the result of start_type_printers.
1522 This is the extension_language_ops.free_type_printers "method". */
18a9fc12 1523
6dddc817
DE
1524static void
1525gdbpy_free_type_printers (const struct extension_language_defn *extlang,
1526 struct ext_lang_type_printers *ext_printers)
18a9fc12
TT
1527{
1528 struct cleanup *cleanups;
19ba03f4 1529 PyObject *printers = (PyObject *) ext_printers->py_type_printers;
18a9fc12
TT
1530
1531 if (printers == NULL)
1532 return;
1533
0646da15
TT
1534 if (!gdb_python_initialized)
1535 return;
1536
18a9fc12
TT
1537 cleanups = ensure_python_env (get_current_arch (), current_language);
1538 Py_DECREF (printers);
1539 do_cleanups (cleanups);
1540}
1541
d57a3c85
TJB
1542#else /* HAVE_PYTHON */
1543
8315665e
YPK
1544/* Dummy implementation of the gdb "python-interactive" and "python"
1545 command. */
d57a3c85
TJB
1546
1547static void
8315665e 1548python_interactive_command (char *arg, int from_tty)
d57a3c85 1549{
529480d0 1550 arg = skip_spaces (arg);
d57a3c85
TJB
1551 if (arg && *arg)
1552 error (_("Python scripting is not supported in this copy of GDB."));
1553 else
1554 {
1555 struct command_line *l = get_command_line (python_control, "");
1556 struct cleanup *cleanups = make_cleanup_free_command_lines (&l);
d59b6f6c 1557
d57a3c85
TJB
1558 execute_control_command_untraced (l);
1559 do_cleanups (cleanups);
1560 }
1561}
1562
8315665e
YPK
1563static void
1564python_command (char *arg, int from_tty)
1565{
1566 python_interactive_command (arg, from_tty);
1567}
1568
d57a3c85
TJB
1569#endif /* HAVE_PYTHON */
1570
1571\f
1572
713389e0
PM
1573/* Lists for 'set python' commands. */
1574
1575static struct cmd_list_element *user_set_python_list;
1576static struct cmd_list_element *user_show_python_list;
d57a3c85 1577
713389e0
PM
1578/* Function for use by 'set python' prefix command. */
1579
1580static void
1581user_set_python (char *args, int from_tty)
1582{
1583 help_list (user_set_python_list, "set python ", all_commands,
1584 gdb_stdout);
1585}
1586
1587/* Function for use by 'show python' prefix command. */
1588
1589static void
1590user_show_python (char *args, int from_tty)
d57a3c85 1591{
713389e0 1592 cmd_show_list (user_show_python_list, from_tty, "");
d57a3c85
TJB
1593}
1594
1595/* Initialize the Python code. */
1596
810849a3
AS
1597#ifdef HAVE_PYTHON
1598
d7de8e3c
TT
1599/* This is installed as a final cleanup and cleans up the
1600 interpreter. This lets Python's 'atexit' work. */
1601
1602static void
1603finalize_python (void *ignore)
1604{
6dddc817
DE
1605 struct active_ext_lang_state *previous_active;
1606
d7de8e3c
TT
1607 /* We don't use ensure_python_env here because if we ever ran the
1608 cleanup, gdb would crash -- because the cleanup calls into the
1609 Python interpreter, which we are about to destroy. It seems
1610 clearer to make the needed calls explicitly here than to create a
1611 cleanup and then mysteriously discard it. */
6dddc817
DE
1612
1613 /* This is only called as a final cleanup so we can assume the active
1614 SIGINT handler is gdb's. We still need to tell it to notify Python. */
1615 previous_active = set_active_ext_lang (&extension_language_python);
1616
b1209b03 1617 (void) PyGILState_Ensure ();
f5656ead 1618 python_gdbarch = target_gdbarch ();
d7de8e3c
TT
1619 python_language = current_language;
1620
1621 Py_Finalize ();
6dddc817
DE
1622
1623 restore_active_ext_lang (previous_active);
d7de8e3c 1624}
810849a3 1625#endif
d7de8e3c 1626
2c0b251b
PA
1627/* Provide a prototype to silence -Wmissing-prototypes. */
1628extern initialize_file_ftype _initialize_python;
1629
d57a3c85
TJB
1630void
1631_initialize_python (void)
1632{
9a27f2c6
PK
1633 char *progname;
1634#ifdef IS_PY3K
1635 int i;
1636 size_t progsize, count;
1637 char *oldloc;
1638 wchar_t *progname_copy;
1639#endif
713389e0 1640
8315665e
YPK
1641 add_com ("python-interactive", class_obscure,
1642 python_interactive_command,
1643#ifdef HAVE_PYTHON
1644 _("\
e3480f4a
YPK
1645Start an interactive Python prompt.\n\
1646\n\
1647To return to GDB, type the EOF character (e.g., Ctrl-D on an empty\n\
1648prompt).\n\
8315665e
YPK
1649\n\
1650Alternatively, a single-line Python command can be given as an\n\
1651argument, and if the command is an expression, the result will be\n\
1652printed. For example:\n\
1653\n\
1654 (gdb) python-interactive 2 + 3\n\
1655 5\n\
1656")
1657#else /* HAVE_PYTHON */
1658 _("\
1659Start a Python interactive prompt.\n\
1660\n\
1661Python scripting is not supported in this copy of GDB.\n\
1662This command is only a placeholder.")
1663#endif /* HAVE_PYTHON */
1664 );
1665 add_com_alias ("pi", "python-interactive", class_obscure, 1);
1666
d57a3c85
TJB
1667 add_com ("python", class_obscure, python_command,
1668#ifdef HAVE_PYTHON
1669 _("\
1670Evaluate a Python command.\n\
1671\n\
1672The command can be given as an argument, for instance:\n\
1673\n\
1674 python print 23\n\
1675\n\
1676If no argument is given, the following lines are read and used\n\
1677as the Python commands. Type a line containing \"end\" to indicate\n\
1678the end of the command.")
1679#else /* HAVE_PYTHON */
1680 _("\
1681Evaluate a Python command.\n\
1682\n\
1683Python scripting is not supported in this copy of GDB.\n\
1684This command is only a placeholder.")
1685#endif /* HAVE_PYTHON */
1686 );
8315665e 1687 add_com_alias ("py", "python", class_obscure, 1);
d57a3c85 1688
713389e0
PM
1689 /* Add set/show python print-stack. */
1690 add_prefix_cmd ("python", no_class, user_show_python,
1691 _("Prefix command for python preference settings."),
1692 &user_show_python_list, "show python ", 0,
1693 &showlist);
1694
1695 add_prefix_cmd ("python", no_class, user_set_python,
1696 _("Prefix command for python preference settings."),
1697 &user_set_python_list, "set python ", 0,
1698 &setlist);
1699
80b6e756
PM
1700 add_setshow_enum_cmd ("print-stack", no_class, python_excp_enums,
1701 &gdbpy_should_print_stack, _("\
1702Set mode for Python stack dump on error."), _("\
1703Show the mode of Python stack printing on error."), _("\
1704none == no stack or message will be printed.\n\
1705full == a message and a stack will be printed.\n\
1706message == an error message without a stack will be printed."),
1707 NULL, NULL,
1708 &user_set_python_list,
1709 &user_show_python_list);
d57a3c85
TJB
1710
1711#ifdef HAVE_PYTHON
0c4a4063
DE
1712#ifdef WITH_PYTHON_PATH
1713 /* Work around problem where python gets confused about where it is,
1714 and then can't find its libraries, etc.
1715 NOTE: Python assumes the following layout:
1716 /foo/bin/python
1717 /foo/lib/pythonX.Y/...
1718 This must be done before calling Py_Initialize. */
9a27f2c6 1719 progname = concat (ldirname (python_libdir), SLASH_STRING, "bin",
b36cec19 1720 SLASH_STRING, "python", (char *) NULL);
9a27f2c6 1721#ifdef IS_PY3K
86f1abec 1722 oldloc = xstrdup (setlocale (LC_ALL, NULL));
9a27f2c6
PK
1723 setlocale (LC_ALL, "");
1724 progsize = strlen (progname);
db0f0d0c 1725 progname_copy = (wchar_t *) PyMem_Malloc ((progsize + 1) * sizeof (wchar_t));
9a27f2c6
PK
1726 if (!progname_copy)
1727 {
86f1abec 1728 xfree (oldloc);
9a27f2c6
PK
1729 fprintf (stderr, "out of memory\n");
1730 return;
1731 }
1732 count = mbstowcs (progname_copy, progname, progsize + 1);
1733 if (count == (size_t) -1)
1734 {
86f1abec 1735 xfree (oldloc);
9a27f2c6
PK
1736 fprintf (stderr, "Could not convert python path to string\n");
1737 return;
1738 }
1739 setlocale (LC_ALL, oldloc);
86f1abec 1740 xfree (oldloc);
9a27f2c6
PK
1741
1742 /* Note that Py_SetProgramName expects the string it is passed to
1743 remain alive for the duration of the program's execution, so
1744 it is not freed after this call. */
1745 Py_SetProgramName (progname_copy);
1746#else
1747 Py_SetProgramName (progname);
1748#endif
0c4a4063
DE
1749#endif
1750
d57a3c85 1751 Py_Initialize ();
ca30a762 1752 PyEval_InitThreads ();
d57a3c85 1753
9a27f2c6 1754#ifdef IS_PY3K
bcabf420 1755 gdb_module = PyModule_Create (&python_GdbModuleDef);
9a27f2c6
PK
1756 /* Add _gdb module to the list of known built-in modules. */
1757 _PyImport_FixupBuiltin (gdb_module, "_gdb");
1758#else
bcabf420 1759 gdb_module = Py_InitModule ("_gdb", python_GdbMethods);
9a27f2c6 1760#endif
999633ed
TT
1761 if (gdb_module == NULL)
1762 goto fail;
d57a3c85
TJB
1763
1764 /* The casts to (char*) are for python 2.4. */
999633ed
TT
1765 if (PyModule_AddStringConstant (gdb_module, "VERSION", (char*) version) < 0
1766 || PyModule_AddStringConstant (gdb_module, "HOST_CONFIG",
1767 (char*) host_name) < 0
1768 || PyModule_AddStringConstant (gdb_module, "TARGET_CONFIG",
1769 (char*) target_name) < 0)
1770 goto fail;
f17618ea 1771
99c3dc11 1772 /* Add stream constants. */
999633ed
TT
1773 if (PyModule_AddIntConstant (gdb_module, "STDOUT", 0) < 0
1774 || PyModule_AddIntConstant (gdb_module, "STDERR", 1) < 0
1775 || PyModule_AddIntConstant (gdb_module, "STDLOG", 2) < 0)
1776 goto fail;
d57a3c85 1777
621c8364 1778 gdbpy_gdb_error = PyErr_NewException ("gdb.error", PyExc_RuntimeError, NULL);
999633ed 1779 if (gdbpy_gdb_error == NULL
aa36459a 1780 || gdb_pymodule_addobject (gdb_module, "error", gdbpy_gdb_error) < 0)
999633ed 1781 goto fail;
621c8364
TT
1782
1783 gdbpy_gdb_memory_error = PyErr_NewException ("gdb.MemoryError",
1784 gdbpy_gdb_error, NULL);
999633ed 1785 if (gdbpy_gdb_memory_error == NULL
aa36459a
TT
1786 || gdb_pymodule_addobject (gdb_module, "MemoryError",
1787 gdbpy_gdb_memory_error) < 0)
999633ed 1788 goto fail;
621c8364 1789
07ca107c 1790 gdbpy_gdberror_exc = PyErr_NewException ("gdb.GdbError", NULL, NULL);
999633ed 1791 if (gdbpy_gdberror_exc == NULL
aa36459a
TT
1792 || gdb_pymodule_addobject (gdb_module, "GdbError",
1793 gdbpy_gdberror_exc) < 0)
999633ed 1794 goto fail;
07ca107c 1795
037bbc8e 1796 gdbpy_initialize_gdb_readline ();
999633ed
TT
1797
1798 if (gdbpy_initialize_auto_load () < 0
1799 || gdbpy_initialize_values () < 0
1800 || gdbpy_initialize_frames () < 0
1801 || gdbpy_initialize_commands () < 0
1802 || gdbpy_initialize_symbols () < 0
1803 || gdbpy_initialize_symtabs () < 0
1804 || gdbpy_initialize_blocks () < 0
1805 || gdbpy_initialize_functions () < 0
1806 || gdbpy_initialize_parameters () < 0
1807 || gdbpy_initialize_types () < 0
1808 || gdbpy_initialize_pspace () < 0
1809 || gdbpy_initialize_objfile () < 0
1810 || gdbpy_initialize_breakpoints () < 0
1811 || gdbpy_initialize_finishbreakpoints () < 0
1812 || gdbpy_initialize_lazy_string () < 0
bc79de95 1813 || gdbpy_initialize_linetable () < 0
999633ed
TT
1814 || gdbpy_initialize_thread () < 0
1815 || gdbpy_initialize_inferior () < 0
1816 || gdbpy_initialize_events () < 0
1817 || gdbpy_initialize_eventregistry () < 0
1818 || gdbpy_initialize_py_events () < 0
1819 || gdbpy_initialize_event () < 0
1820 || gdbpy_initialize_stop_event () < 0
1821 || gdbpy_initialize_signal_event () < 0
1822 || gdbpy_initialize_breakpoint_event () < 0
1823 || gdbpy_initialize_continue_event () < 0
162078c8
NB
1824 || gdbpy_initialize_inferior_call_pre_event () < 0
1825 || gdbpy_initialize_inferior_call_post_event () < 0
1826 || gdbpy_initialize_register_changed_event () < 0
1827 || gdbpy_initialize_memory_changed_event () < 0
999633ed
TT
1828 || gdbpy_initialize_exited_event () < 0
1829 || gdbpy_initialize_thread_event () < 0
1830 || gdbpy_initialize_new_objfile_event () < 0
4ffbba72 1831 || gdbpy_initialize_clear_objfiles_event () < 0
883964a7 1832 || gdbpy_initialize_arch () < 0
d11916aa
SS
1833 || gdbpy_initialize_xmethods () < 0
1834 || gdbpy_initialize_unwind () < 0)
999633ed 1835 goto fail;
505500db 1836
a6bac58e 1837 gdbpy_to_string_cst = PyString_FromString ("to_string");
999633ed
TT
1838 if (gdbpy_to_string_cst == NULL)
1839 goto fail;
a6bac58e 1840 gdbpy_children_cst = PyString_FromString ("children");
999633ed
TT
1841 if (gdbpy_children_cst == NULL)
1842 goto fail;
a6bac58e 1843 gdbpy_display_hint_cst = PyString_FromString ("display_hint");
999633ed
TT
1844 if (gdbpy_display_hint_cst == NULL)
1845 goto fail;
d8906c6f 1846 gdbpy_doc_cst = PyString_FromString ("__doc__");
999633ed
TT
1847 if (gdbpy_doc_cst == NULL)
1848 goto fail;
967cf477 1849 gdbpy_enabled_cst = PyString_FromString ("enabled");
999633ed
TT
1850 if (gdbpy_enabled_cst == NULL)
1851 goto fail;
fb6a3ed3 1852 gdbpy_value_cst = PyString_FromString ("value");
999633ed
TT
1853 if (gdbpy_value_cst == NULL)
1854 goto fail;
d8906c6f 1855
9dea9163
DE
1856 /* Release the GIL while gdb runs. */
1857 PyThreadState_Swap (NULL);
1858 PyEval_ReleaseLock ();
1859
d7de8e3c 1860 make_final_cleanup (finalize_python, NULL);
999633ed
TT
1861
1862 gdb_python_initialized = 1;
1863 return;
1864
1865 fail:
1866 gdbpy_print_stack ();
1867 /* Do not set 'gdb_python_initialized'. */
1868 return;
1869
9dea9163
DE
1870#endif /* HAVE_PYTHON */
1871}
1872
1873#ifdef HAVE_PYTHON
1874
1875/* Perform the remaining python initializations.
1876 These must be done after GDB is at least mostly initialized.
1877 E.g., The "info pretty-printer" command needs the "info" prefix
6dddc817
DE
1878 command installed.
1879 This is the extension_language_ops.finish_initialization "method". */
9dea9163 1880
6dddc817
DE
1881static void
1882gdbpy_finish_initialization (const struct extension_language_defn *extlang)
9dea9163 1883{
b9516fa1
YPK
1884 PyObject *m;
1885 char *gdb_pythondir;
1886 PyObject *sys_path;
9dea9163
DE
1887 struct cleanup *cleanup;
1888
1889 cleanup = ensure_python_env (get_current_arch (), current_language);
f17618ea 1890
b9516fa1
YPK
1891 /* Add the initial data-directory to sys.path. */
1892
b36cec19 1893 gdb_pythondir = concat (gdb_datadir, SLASH_STRING, "python", (char *) NULL);
b9516fa1
YPK
1894 make_cleanup (xfree, gdb_pythondir);
1895
1896 sys_path = PySys_GetObject ("path");
ca30a762 1897
9a27f2c6
PK
1898 /* If sys.path is not defined yet, define it first. */
1899 if (!(sys_path && PyList_Check (sys_path)))
1900 {
1901#ifdef IS_PY3K
1902 PySys_SetPath (L"");
1903#else
1904 PySys_SetPath ("");
1905#endif
1906 sys_path = PySys_GetObject ("path");
1907 }
256458bc 1908 if (sys_path && PyList_Check (sys_path))
b9516fa1
YPK
1909 {
1910 PyObject *pythondir;
1911 int err;
1912
1913 pythondir = PyString_FromString (gdb_pythondir);
1914 if (pythondir == NULL)
1915 goto fail;
1916
1917 err = PyList_Insert (sys_path, 0, pythondir);
ac475191 1918 Py_DECREF (pythondir);
b9516fa1
YPK
1919 if (err)
1920 goto fail;
b9516fa1
YPK
1921 }
1922 else
9a27f2c6 1923 goto fail;
b9516fa1
YPK
1924
1925 /* Import the gdb module to finish the initialization, and
1926 add it to __main__ for convenience. */
1927 m = PyImport_AddModule ("__main__");
1928 if (m == NULL)
1929 goto fail;
1930
1931 gdb_python_module = PyImport_ImportModule ("gdb");
1932 if (gdb_python_module == NULL)
1933 {
1934 gdbpy_print_stack ();
41245087
DE
1935 /* This is passed in one call to warning so that blank lines aren't
1936 inserted between each line of text. */
1937 warning (_("\n"
1938 "Could not load the Python gdb module from `%s'.\n"
1939 "Limited Python support is available from the _gdb module.\n"
1940 "Suggest passing --data-directory=/path/to/gdb/data-directory.\n"),
b9516fa1 1941 gdb_pythondir);
b9516fa1
YPK
1942 do_cleanups (cleanup);
1943 return;
1944 }
1945
aa36459a 1946 if (gdb_pymodule_addobject (m, "gdb", gdb_python_module) < 0)
b9516fa1
YPK
1947 goto fail;
1948
1949 /* Keep the reference to gdb_python_module since it is in a global
1950 variable. */
1951
1952 do_cleanups (cleanup);
1953 return;
1954
1955 fail:
1956 gdbpy_print_stack ();
1957 warning (_("internal error: Unhandled Python exception"));
9dea9163
DE
1958 do_cleanups (cleanup);
1959}
ca30a762 1960
6dddc817
DE
1961/* Return non-zero if Python has successfully initialized.
1962 This is the extension_languages_ops.initialized "method". */
1963
1964static int
1965gdbpy_initialized (const struct extension_language_defn *extlang)
1966{
1967 return gdb_python_initialized;
1968}
1969
d57a3c85 1970#endif /* HAVE_PYTHON */
12453b93
TJB
1971
1972\f
1973
9dea9163 1974#ifdef HAVE_PYTHON
12453b93 1975
bcabf420 1976PyMethodDef python_GdbMethods[] =
12453b93
TJB
1977{
1978 { "history", gdbpy_history, METH_VARARGS,
1979 "Get a value from history" },
bc9f0842 1980 { "execute", (PyCFunction) execute_gdb_command, METH_VARARGS | METH_KEYWORDS,
751e7549
PM
1981 "execute (command [, from_tty] [, to_string]) -> [String]\n\
1982Evaluate command, a string, as a gdb CLI command. Optionally returns\n\
1983a Python String containing the output of the command if to_string is\n\
1984set to True." },
8f500870 1985 { "parameter", gdbpy_parameter, METH_VARARGS,
12453b93
TJB
1986 "Return a gdb parameter's value" },
1987
adc36818
PM
1988 { "breakpoints", gdbpy_breakpoints, METH_NOARGS,
1989 "Return a tuple of all breakpoint objects" },
1990
b6313243
TT
1991 { "default_visualizer", gdbpy_default_visualizer, METH_VARARGS,
1992 "Find the default visualizer for a Value." },
1993
fa33c3cd
DE
1994 { "current_progspace", gdbpy_get_current_progspace, METH_NOARGS,
1995 "Return the current Progspace." },
1996 { "progspaces", gdbpy_progspaces, METH_NOARGS,
1997 "Return a sequence of all progspaces." },
1998
89c73ade
TT
1999 { "current_objfile", gdbpy_get_current_objfile, METH_NOARGS,
2000 "Return the current Objfile being loaded, or None." },
2001 { "objfiles", gdbpy_objfiles, METH_NOARGS,
2002 "Return a sequence of all loaded objfiles." },
2003
d8e22779
TT
2004 { "newest_frame", gdbpy_newest_frame, METH_NOARGS,
2005 "newest_frame () -> gdb.Frame.\n\
2006Return the newest frame object." },
f8f6f20b
TJB
2007 { "selected_frame", gdbpy_selected_frame, METH_NOARGS,
2008 "selected_frame () -> gdb.Frame.\n\
2009Return the selected frame object." },
2010 { "frame_stop_reason_string", gdbpy_frame_stop_reason_string, METH_VARARGS,
2011 "stop_reason_string (Integer) -> String.\n\
2012Return a string explaining unwind stop reason." },
2013
2c74e833
TT
2014 { "lookup_type", (PyCFunction) gdbpy_lookup_type,
2015 METH_VARARGS | METH_KEYWORDS,
2016 "lookup_type (name [, block]) -> type\n\
2017Return a Type corresponding to the given name." },
f3e9a817
PM
2018 { "lookup_symbol", (PyCFunction) gdbpy_lookup_symbol,
2019 METH_VARARGS | METH_KEYWORDS,
2020 "lookup_symbol (name [, block] [, domain]) -> (symbol, is_field_of_this)\n\
2021Return a tuple with the symbol corresponding to the given name (or None) and\n\
2022a boolean indicating if name is a field of the current implied argument\n\
2023`this' (when the current language is object-oriented)." },
6e6fbe60
DE
2024 { "lookup_global_symbol", (PyCFunction) gdbpy_lookup_global_symbol,
2025 METH_VARARGS | METH_KEYWORDS,
2026 "lookup_global_symbol (name [, domain]) -> symbol\n\
2027Return the symbol corresponding to the given name (or None)." },
6dddd6a5
DE
2028
2029 { "lookup_objfile", (PyCFunction) gdbpy_lookup_objfile,
2030 METH_VARARGS | METH_KEYWORDS,
2031 "lookup_objfile (name, [by_build_id]) -> objfile\n\
2032Look up the specified objfile.\n\
2033If by_build_id is True, the objfile is looked up by using name\n\
2034as its build id." },
2035
f3e9a817
PM
2036 { "block_for_pc", gdbpy_block_for_pc, METH_VARARGS,
2037 "Return the block containing the given pc value, or None." },
cb2e07a6
PM
2038 { "solib_name", gdbpy_solib_name, METH_VARARGS,
2039 "solib_name (Long) -> String.\n\
2040Return the name of the shared library holding a given address, or None." },
2041 { "decode_line", gdbpy_decode_line, METH_VARARGS,
2042 "decode_line (String) -> Tuple. Decode a string argument the way\n\
2043that 'break' or 'edit' does. Return a tuple containing two elements.\n\
2044The first element contains any unparsed portion of the String parameter\n\
2045(or None if the string was fully parsed). The second element contains\n\
2046a tuple that contains all the locations that match, represented as\n\
2047gdb.Symtab_and_line objects (or None)."},
57a1d736
TT
2048 { "parse_and_eval", gdbpy_parse_and_eval, METH_VARARGS,
2049 "parse_and_eval (String) -> Value.\n\
2050Parse String as an expression, evaluate it, and return the result as a Value."
2051 },
7efc75aa
SCR
2052 { "find_pc_line", gdbpy_find_pc_line, METH_VARARGS,
2053 "find_pc_line (pc) -> Symtab_and_line.\n\
2054Return the gdb.Symtab_and_line object corresponding to the pc value." },
57a1d736 2055
ca5c20b6
PM
2056 { "post_event", gdbpy_post_event, METH_VARARGS,
2057 "Post an event into gdb's event loop." },
2058
f870a310
TT
2059 { "target_charset", gdbpy_target_charset, METH_NOARGS,
2060 "target_charset () -> string.\n\
2061Return the name of the current target charset." },
2062 { "target_wide_charset", gdbpy_target_wide_charset, METH_NOARGS,
2063 "target_wide_charset () -> string.\n\
2064Return the name of the current target wide charset." },
2065
07ca107c
DE
2066 { "string_to_argv", gdbpy_string_to_argv, METH_VARARGS,
2067 "string_to_argv (String) -> Array.\n\
2068Parse String and return an argv-like array.\n\
2069Arguments are separate by spaces and may be quoted."
2070 },
99c3dc11 2071 { "write", (PyCFunction)gdbpy_write, METH_VARARGS | METH_KEYWORDS,
12453b93 2072 "Write a string using gdb's filtered stream." },
99c3dc11 2073 { "flush", (PyCFunction)gdbpy_flush, METH_VARARGS | METH_KEYWORDS,
12453b93 2074 "Flush gdb's filtered stdout stream." },
595939de
PM
2075 { "selected_thread", gdbpy_selected_thread, METH_NOARGS,
2076 "selected_thread () -> gdb.InferiorThread.\n\
2077Return the selected thread object." },
2aa48337
KP
2078 { "selected_inferior", gdbpy_selected_inferior, METH_NOARGS,
2079 "selected_inferior () -> gdb.Inferior.\n\
2080Return the selected inferior object." },
595939de
PM
2081 { "inferiors", gdbpy_inferiors, METH_NOARGS,
2082 "inferiors () -> (gdb.Inferior, ...).\n\
2083Return a tuple containing all inferiors." },
e0f3fd7c
TT
2084
2085 { "invalidate_cached_frames", gdbpy_invalidate_cached_frames, METH_NOARGS,
2086 "invalidate_cached_frames () -> None.\n\
2087Invalidate any cached frame objects in gdb.\n\
2088Intended for internal use only." },
2089
12453b93
TJB
2090 {NULL, NULL, 0, NULL}
2091};
2092
9a27f2c6 2093#ifdef IS_PY3K
bcabf420 2094struct PyModuleDef python_GdbModuleDef =
9a27f2c6
PK
2095{
2096 PyModuleDef_HEAD_INIT,
2097 "_gdb",
2098 NULL,
256458bc 2099 -1,
02e62830 2100 python_GdbMethods,
9a27f2c6
PK
2101 NULL,
2102 NULL,
2103 NULL,
2104 NULL
2105};
2106#endif
12453b93 2107#endif /* HAVE_PYTHON */
This page took 0.936789 seconds and 4 git commands to generate.