diff options
author | Catalin Udma <catalin.udma@freescale.com> | 2016-02-29 16:16:19 +0200 |
---|---|---|
committer | Catalin Udma <catalin.udma@freescale.com> | 2016-03-31 15:32:38 +0300 |
commit | e7ea3ec7c623be0b9be1eaf4929794652a84be11 (patch) | |
tree | 4b8fca9e668f79d3e4239c1204a61672b5c11fb7 /gdb/utils.c | |
parent | f7c382926d78b2d6d96b02275e6e16797b132d71 (diff) | |
download | gdb-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.c | 29 |
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; |