aboutsummaryrefslogtreecommitdiff
path: root/gdb/python
diff options
context:
space:
mode:
authorJoel Brobecker <brobecker@gnat.com>2010-01-18 06:25:22 +0000
committerJoel Brobecker <brobecker@gnat.com>2010-01-18 06:25:22 +0000
commit973817a31359035221fb443a623830cdaab31de5 (patch)
tree0814db4b2c00155035ab6fd6c4a39bff660576b8 /gdb/python
parent23db03a6052d85eb4a66bf31331ca8d611174af4 (diff)
downloadgdb-973817a31359035221fb443a623830cdaab31de5.zip
gdb-973817a31359035221fb443a623830cdaab31de5.tar.gz
gdb-973817a31359035221fb443a623830cdaab31de5.tar.bz2
Allow "source" to load python scripts.
* exceptions.h (enum errors): Add UNSUPPORTED_ERROR. * python/python.c (source_python_script): New function. * python/python.h (source_python_script): Add declaration. * cli/cli-cmds.c: #include exceptions.h and python/python.h. (script_ext_off, script_ext_soft, script_ext_strict) (script_ext_enums, script_ext_mode): New static constants. (show_script_ext_mode, find_and_open_script): New functions. (source_script): Enhance to handle Python scripts. (init_cli_cmds): Add set/show script-extension commands.
Diffstat (limited to 'gdb/python')
-rw-r--r--gdb/python/python.c24
-rw-r--r--gdb/python/python.h2
2 files changed, 26 insertions, 0 deletions
diff --git a/gdb/python/python.c b/gdb/python/python.c
index 827372c..1f1ae72 100644
--- a/gdb/python/python.c
+++ b/gdb/python/python.c
@@ -343,6 +343,22 @@ gdbpy_parse_and_eval (PyObject *self, PyObject *args)
return value_to_value_object (result);
}
+/* Read a file as Python code. STREAM is the input file; FILE is the
+ name of the file. */
+
+void
+source_python_script (FILE *stream, char *file)
+{
+ PyGILState_STATE state;
+
+ state = PyGILState_Ensure ();
+
+ PyRun_SimpleFile (stream, file);
+
+ fclose (stream);
+ PyGILState_Release (state);
+}
+
/* Printing. */
@@ -525,6 +541,14 @@ eval_python_from_control_command (struct command_line *cmd)
error (_("Python scripting is not supported in this copy of GDB."));
}
+void
+source_python_script (FILE *stream, char *file)
+{
+ fclose (stream);
+ throw_error (UNSUPPORTED_ERROR,
+ _("Python scripting is not supported in this copy of GDB."));
+}
+
#endif /* HAVE_PYTHON */
diff --git a/gdb/python/python.h b/gdb/python/python.h
index f35827b..5d93f67 100644
--- a/gdb/python/python.h
+++ b/gdb/python/python.h
@@ -24,6 +24,8 @@
void eval_python_from_control_command (struct command_line *);
+void source_python_script (FILE *stream, char *file);
+
int apply_val_pretty_printer (struct type *type, const gdb_byte *valaddr,
int embedded_offset, CORE_ADDR address,
struct ui_file *stream, int recurse,