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