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