On Saturday 07 February 2009 00:11:27 Tom Tromey wrote: > >>>>> "Vladimir" == Vladimir Prus writes: > > Vladimir> This patch fixes this by making MI observer print frame > Vladimir> again, into MI uiout, if necessary. It passes all MI tests > Vladimir> in (sync,async)x(native,gdbserver) combinations. How does > Vladimir> this look, and are non-MI changes OK? If approved, I'll add > Vladimir> a test that CLI commands result in proper *stopped. > > I don't understand all the implications of the core change, but I do > like how it moves some MI logic out of the core and into MI. > > Vladimir> -@deftypefun void normal_stop (struct bpstats *@var{bs}) > Vladimir> +@deftypefun void normal_stop (struct bpstats *@var{bs}, int @var{print_frame}) > Vladimir> The inferior has stopped for real. > Vladimir> @end deftypefun > > I would like to ask for documentation describing the meaning of the > new argument. The attached patch does so. Eli, can you see if the doc change is fine? I've also added testcase, as promised. One detail I forgot to say in the original email is that this patch does not make *stopped emitted for CLI identical to *stopped for the corresponding MI commands. In particular, output for CLI does not include 'reason' field sometimes, and for 'finish' it will not include the return value. I think this is fine -- CLI commands are meant to be issued by the user in the console, and therefore user will see the CLI output from such commands. The only purpose of MI *stopped is to let MI frontend know that the program is not stopped in a different place. - Volodya