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