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