Use console uiout when executing breakpoint commands
authorSimon Marchi <simon.marchi@polymtl.ca>
Wed, 1 Nov 2017 01:30:24 +0000 (21:30 -0400)
committerSimon Marchi <simon.marchi@polymtl.ca>
Wed, 1 Nov 2017 01:34:24 +0000 (21:34 -0400)
commit3a87ae656c283e4f46ddf7d92c06ecb8992c2bf6
tree1ab653b3f661835fb7e1be97739d58fb038ba44e
parent4d01dee4804d39c1671bc220caf32a327e7e4b10
Use console uiout when executing breakpoint commands

As reported here

  https://sourceware.org/ml/gdb/2017-10/msg00020.html

the output of certain commands, like backtrace, doesn't appear anywhere
when it is run as a breakpoint command and when using MI.

The reason is that the current_uiout is set to the mi_ui_out while these
commands run, whereas we want the output as CLI output.  Some commands
like "print" work, because they use printf_filtered (gdb_stdout, ...)
directly, bypassing the current ui_out.

The fix I did is to force setting the cli_uiout as the current_uiout
when calling execute_control_command.  I am not sure if this is the
right way to fix the problem, comments about the approach would be
appreciated.

I enhanced gdb.mi/mi-break.exp to test the backtrace command.

Regtested on the buildbot.

gdb/ChangeLog:

* cli/cli-script.c (execute_control_command): Rename to ...
(execute_control_command_1): ... this.
(execute_control_command): New function.

gdb/testsuite/ChangeLog:

* gdb.mi/mi-break.exp (test_breakpoint_commands): Test backtrace
as a breakpoint command.
gdb/ChangeLog
gdb/cli/cli-script.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.mi/mi-break.exp