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