From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 25146 invoked by alias); 6 Nov 2002 19:16:05 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 25093 invoked from network); 6 Nov 2002 19:16:01 -0000 Received: from unknown (HELO mx1.redhat.com) (66.187.233.31) by sources.redhat.com with SMTP; 6 Nov 2002 19:16:01 -0000 Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.11.6/8.11.6) with ESMTP id gA6IrOw28890 for ; Wed, 6 Nov 2002 13:53:24 -0500 Received: from pobox.corp.redhat.com (pobox.corp.redhat.com [172.16.52.156]) by int-mx1.corp.redhat.com (8.11.6/8.11.6) with ESMTP id gA6JG0f21405; Wed, 6 Nov 2002 14:16:00 -0500 Received: from localhost.redhat.com (romulus-int.sfbay.redhat.com [172.16.27.46]) by pobox.corp.redhat.com (8.11.6/8.11.6) with ESMTP id gA6JEZT06609; Wed, 6 Nov 2002 14:14:36 -0500 Received: by localhost.redhat.com (Postfix, from userid 469) id F2E0CFF7A; Wed, 6 Nov 2002 14:09:07 -0500 (EST) From: Elena Zannoni MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <15817.26835.444106.438405@localhost.redhat.com> Date: Wed, 06 Nov 2002 11:16:00 -0000 To: gdb-patches@sources.redhat.com Cc: Pierre Muller , Daniel Jacobowitz , Andrew Cagney , fnasser@redhat.com Subject: Re: [RFA] cli-out.c new function In-Reply-To: <15817.23234.419911.464165@localhost.redhat.com> References: <15816.21181.748534.54828@localhost.redhat.com> <5.0.2.1.2.20021106094824.02b66088@ics.u-strasbg.fr> <15817.23234.419911.464165@localhost.redhat.com> X-SW-Source: 2002-11/txt/msg00111.txt.bz2 Elena Zannoni writes: > > > > See the following threads: > > [RFC/RFA] avoid spurious Watchpoint X output on cygwin native target. > > http://sources.redhat.com/ml/gdb-patches/2002-07/msg00323.html > > > > and > > RFA: Make cli-out follow gdb_stdout > > http://sources.redhat.com/ml/gdb-patches/2002-07/msg00366.html > > as well as > > (which is a different thread, probably because I didn't use Relpy...) > > http://sources.redhat.com/ml/gdb-patches/2002-08/msg00549.html > > > > But honestly, I don't know if the this new function solves the > > problem... > > Ulgh, we seem to have hit a wall. I see that the same concerns about > your solutions apply to this one. I guess that in my case using > catch_exception should work, because the current code does this: > > old_stream = cli_out_set_stream (cli_uiout, gdb_stdout); > result = safe_execute_command (cli_uiout, command_str, 1); > cli_out_set_stream (cli_uiout, old_stream); > > I could change that into a catch_exceptions call. In fact, > safe_execute_command *IS* a wrapper around catch_exceptions already. > > The general problem is not solved, however. > > Elena OK, I think I figured out how to solve the problem in my case. BTW, is there a cli_out_free kind of function? Elena Index: cli-interp.c =================================================================== RCS file: /cvs/src/src/gdb/cli/Attic/cli-interp.c,v retrieving revision 1.1.2.10 diff -u -p -r1.1.2.10 cli-interp.c --- cli-interp.c 4 Nov 2002 23:27:31 -0000 1.1.2.10 +++ cli-interp.c 6 Nov 2002 19:10:31 -0000 @@ -39,8 +39,7 @@ static struct gdb_interpreter *cli_inter /* Longjmp-safe wrapper for "execute_command" */ static int do_captured_execute_command (struct ui_out *uiout, void *data); -static enum gdb_rc safe_execute_command (struct ui_out *uiout, char *command, - int from_tty); +static enum gdb_rc safe_execute_command (char *command, int from_tty); struct captured_execute_command_args { char *command; @@ -83,19 +82,7 @@ cli_interpreter_display_prompt_p (void) static int cli_interpreter_exec (void *data, char *command_str) { - int result; - struct ui_file *old_stream; - - /* gdb_stdout could change between the time cli_uiout was initialized - and now. Since we're probably using a different interpreter which has - a new ui_file for gdb_stdout, use that one instead of the default. - - It is important that it gets reset everytime, since the user could - set gdb to use a different interpreter. */ - old_stream = cli_out_set_stream (cli_uiout, gdb_stdout); - result = safe_execute_command (cli_uiout, command_str, 1); - cli_out_set_stream (cli_uiout, old_stream); - return result; + return safe_execute_command (command_str, 1); } static int @@ -108,12 +95,20 @@ do_captured_execute_command (struct ui_o } static enum gdb_rc -safe_execute_command (struct ui_out *uiout, char *command, int from_tty) +safe_execute_command (char *command, int from_tty) { + /* gdb_stdout could change between the time cli_uiout was + initialized and now. Since we're probably using a different + interpreter which has a new ui_file for gdb_stdout, use that one + instead of the default. Catch exception will execute with + command_uiout as output stream. It is important that it gets + reset everytime, since the user could set gdb to use a different + interpreter. */ + struct ui_out *command_uiout = cli_out_new (gdb_stdout); struct captured_execute_command_args args; args.command = command; args.from_tty = from_tty; - return catch_exceptions (uiout, do_captured_execute_command, &args, + return catch_exceptions (command_uiout, do_captured_execute_command, &args, NULL, RETURN_MASK_ALL); }