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