aboutsummaryrefslogtreecommitdiff
path: root/gdb/utils.c
diff options
context:
space:
mode:
authorCatalin Udma <catalin.udma@freescale.com>2016-02-29 16:16:19 +0200
committerCatalin Udma <catalin.udma@freescale.com>2016-03-31 15:32:38 +0300
commite7ea3ec7c623be0b9be1eaf4929794652a84be11 (patch)
tree4b8fca9e668f79d3e4239c1204a61672b5c11fb7 /gdb/utils.c
parentf7c382926d78b2d6d96b02275e6e16797b132d71 (diff)
downloadgdb-e7ea3ec7c623be0b9be1eaf4929794652a84be11.zip
gdb-e7ea3ec7c623be0b9be1eaf4929794652a84be11.tar.gz
gdb-e7ea3ec7c623be0b9be1eaf4929794652a84be11.tar.bz2
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>
Diffstat (limited to 'gdb/utils.c')
-rw-r--r--gdb/utils.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/gdb/utils.c b/gdb/utils.c
index 97e5133..62e169a 100644
--- a/gdb/utils.c
+++ b/gdb/utils.c
@@ -345,6 +345,35 @@ make_cleanup_htab_delete (htab_t htab)
return make_cleanup (do_htab_delete_cleanup, htab);
}
+struct restore_ui_out_closure
+{
+ struct ui_out **variable;
+ struct ui_out *value;
+};
+
+static void
+do_restore_ui_out (void *p)
+{
+ struct restore_ui_out_closure *closure
+ = (struct restore_ui_out_closure *) p;
+
+ *(closure->variable) = closure->value;
+}
+
+/* Remember the current value of *VARIABLE and make it restored when
+ the cleanup is run. */
+
+struct cleanup *
+make_cleanup_restore_ui_out (struct ui_out **variable)
+{
+ struct restore_ui_out_closure *c = XNEW (struct restore_ui_out_closure);
+
+ c->variable = variable;
+ c->value = *variable;
+
+ return make_cleanup_dtor (do_restore_ui_out, (void *) c, xfree);
+}
+
struct restore_ui_file_closure
{
struct ui_file **variable;