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