diff options
author | Thiago Jung Bauermann <bauerman@br.ibm.com> | 2009-02-05 16:40:34 +0000 |
---|---|---|
committer | Thiago Jung Bauermann <bauerman@br.ibm.com> | 2009-02-05 16:40:34 +0000 |
commit | 12453b93bd8de559235835300eac68118c4ade70 (patch) | |
tree | 89f3a0ec37a1034675e604a12d6b7afafb20e25d /gdb/python/python.c | |
parent | 314b2e66793e9a59676f72ce191bcc2937c2e695 (diff) | |
download | gdb-12453b93bd8de559235835300eac68118c4ade70.zip gdb-12453b93bd8de559235835300eac68118c4ade70.tar.gz gdb-12453b93bd8de559235835300eac68118c4ade70.tar.bz2 |
gdb/
2009-02-05 Tom Tromey <tromey@redhat.com>
Thiago Jung Bauermann <bauerman@br.ibm.com>
* python/python.c (GdbMethods): Move to bottom of file.
(get_parameter, execute_gdb_command, gdbpy_write,
gdbpy_flush): Remove forward declarations.
(eval_python_from_control_command): Fix error checking of function
PyRun_SimpleString. Fix error string.
(python_command): Likewise.
(execute_gdb_command): Added from_tty argument.
gdb/doc/
2009-02-05 Tom Tromey <tromey@redhat.com>
* gdb.texinfo (Basic Python): Document execute's from_tty
argument.
Diffstat (limited to 'gdb/python/python.c')
-rw-r--r-- | gdb/python/python.c | 74 |
1 files changed, 44 insertions, 30 deletions
diff --git a/gdb/python/python.c b/gdb/python/python.c index 991321f..96bb5f5 100644 --- a/gdb/python/python.c +++ b/gdb/python/python.c @@ -42,31 +42,10 @@ static int gdbpy_should_print_stack = 1; #include "target.h" #include "gdbthread.h" +static PyMethodDef GdbMethods[]; PyObject *gdb_module; -static PyObject *get_parameter (PyObject *, PyObject *); -static PyObject *execute_gdb_command (PyObject *, PyObject *); -static PyObject *gdbpy_write (PyObject *, PyObject *); -static PyObject *gdbpy_flush (PyObject *, PyObject *); - -static PyMethodDef GdbMethods[] = -{ - { "history", gdbpy_history, METH_VARARGS, - "Get a value from history" }, - { "execute", execute_gdb_command, METH_VARARGS, - "Execute a gdb command" }, - { "get_parameter", get_parameter, METH_VARARGS, - "Return a gdb parameter's value" }, - - { "write", gdbpy_write, METH_VARARGS, - "Write a string using gdb's filtered stream." }, - { "flush", gdbpy_flush, METH_NOARGS, - "Flush gdb's filtered stdout stream." }, - - {NULL, NULL, 0, NULL} -}; - /* Given a command_line, return a command string suitable for passing to Python. Lines in the string are separated by newlines. The return value is allocated using xmalloc and the caller is @@ -102,6 +81,7 @@ compute_python_string (struct command_line *l) void eval_python_from_control_command (struct command_line *cmd) { + int ret; char *script; struct cleanup *cleanup; PyGILState_STATE state; @@ -113,12 +93,12 @@ eval_python_from_control_command (struct command_line *cmd) cleanup = make_cleanup_py_restore_gil (&state); script = compute_python_string (cmd->body_list[0]); - PyRun_SimpleString (script); + ret = PyRun_SimpleString (script); xfree (script); - if (PyErr_Occurred ()) + if (ret) { gdbpy_print_stack (); - error (_("error while executing Python code")); + error (_("Error while executing Python code.")); } do_cleanups (cleanup); @@ -139,11 +119,10 @@ python_command (char *arg, int from_tty) ++arg; if (arg && *arg) { - PyRun_SimpleString (arg); - if (PyErr_Occurred ()) + if (PyRun_SimpleString (arg)) { gdbpy_print_stack (); - error (_("error while executing Python code")); + error (_("Error while executing Python code.")); } } else @@ -256,14 +235,26 @@ execute_gdb_command (PyObject *self, PyObject *args) { struct cmd_list_element *alias, *prefix, *cmd; char *arg, *newarg; + PyObject *from_tty_obj = NULL; + int from_tty; + int cmp; volatile struct gdb_exception except; - if (! PyArg_ParseTuple (args, "s", &arg)) + if (! PyArg_ParseTuple (args, "s|O!", &arg, &PyBool_Type, &from_tty_obj)) return NULL; + from_tty = 0; + if (from_tty_obj) + { + cmp = PyObject_IsTrue (from_tty_obj); + if (cmp < 0) + return NULL; + from_tty = cmp; + } + TRY_CATCH (except, RETURN_MASK_ALL) { - execute_command (arg, 0); + execute_command (arg, from_tty); } GDB_PY_HANDLE_EXCEPTION (except); @@ -451,3 +442,26 @@ sys.stdout = GdbOutputFile()\n\ #endif /* HAVE_PYTHON */ } + + + +#if HAVE_PYTHON + +static PyMethodDef GdbMethods[] = +{ + { "history", gdbpy_history, METH_VARARGS, + "Get a value from history" }, + { "execute", execute_gdb_command, METH_VARARGS, + "Execute a gdb command" }, + { "get_parameter", get_parameter, METH_VARARGS, + "Return a gdb parameter's value" }, + + { "write", gdbpy_write, METH_VARARGS, + "Write a string using gdb's filtered stream." }, + { "flush", gdbpy_flush, METH_NOARGS, + "Flush gdb's filtered stdout stream." }, + + {NULL, NULL, 0, NULL} +}; + +#endif /* HAVE_PYTHON */ |