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