python: Use console format for output of gdb.execute command

When gdb is started in MI mode, the output of gdb.execute
command is in MI-format in case when it is executed from python stop
handler while for all other cases the output is in console-format.

To assure consistent output format, this is fixed by using the console
format for all python gdb command executions.

PR python/19743

gdb/ChangeLog:
2016-03-31  Catalin Udma  <catalin.udma@freescale.com>

	PR python/19743
	* python/python.c (execute_gdb_command): Use console uiout
	when executing gdb command.
	* utils.c (restore_ui_out_closure): New structure.
	(do_restore_ui_out): New function.
	(make_cleanup_restore_ui_out): Likewise.
	* utils.h (make_cleanup_restore_ui_out): Declare.

gdb/testsuite/ChangeLog:
2016-03-31  Catalin Udma  <catalin.udma@freescale.com>

	PR python/19743
	* gdb.python/py-mi-events-gdb.py: New file.
	* gdb.python/py-mi-events.c: New file.
	* gdb.python/py-mi-events.exp: New file.

Signed-off-by: Catalin Udma <catalin.udma@freescale.com>
This commit is contained in:
Catalin Udma
2016-02-29 16:16:19 +02:00
parent f7c382926d
commit e7ea3ec7c6
8 changed files with 214 additions and 0 deletions

View File

@ -658,10 +658,17 @@ execute_gdb_command (PyObject *self, PyObject *args, PyObject *kw)
/* Copy the argument text in case the command modifies it. */
char *copy = xstrdup (arg);
struct cleanup *cleanup = make_cleanup (xfree, copy);
struct interp *interp;
make_cleanup_restore_integer (&interpreter_async);
interpreter_async = 0;
make_cleanup_restore_ui_out (&current_uiout);
/* Use the console interpreter uiout to have the same print format
for console or MI. */
interp = interp_lookup ("console");
current_uiout = interp_ui_out (interp);
prevent_dont_repeat ();
if (to_string)
result = execute_command_to_string (copy, from_tty);