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