From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 12550 invoked by alias); 17 Apr 2007 15:42:31 -0000 Received: (qmail 12542 invoked by uid 22791); 17 Apr 2007 15:42:30 -0000 X-Spam-Check-By: sourceware.org Received: from lon-del-01.spheriq.net (HELO lon-del-01.spheriq.net) (195.46.50.97) by sourceware.org (qpsmtpd/0.31) with ESMTP; Tue, 17 Apr 2007 16:42:26 +0100 Received: from lon-out-01.spheriq.net ([195.46.50.129]) by lon-del-01.spheriq.net with ESMTP id l3HFgNjV014633 for ; Tue, 17 Apr 2007 15:42:23 GMT Received: from lon-cus-02.spheriq.net (lon-cus-02.spheriq.net [195.46.50.38]) by lon-out-01.spheriq.net with ESMTP id l3HFgNsg019030 for ; Tue, 17 Apr 2007 15:42:23 GMT Received: from beta.dmz-eu.st.com (beta.dmz-eu.st.com [164.129.1.35]) by lon-cus-02.spheriq.net with ESMTP id l3HFgMcS031950 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 17 Apr 2007 15:42:22 GMT Received: from zeta.dmz-eu.st.com (ns2.st.com [164.129.230.9]) by beta.dmz-eu.st.com (STMicroelectronics) with ESMTP id 2070EDA41 for ; Tue, 17 Apr 2007 15:42:22 +0000 (GMT) Received: from mail1.cro.st.com (mail1.cro.st.com [164.129.40.131]) by zeta.dmz-eu.st.com (STMicroelectronics) with ESMTP id E704F4758E for ; Tue, 17 Apr 2007 15:42:21 +0000 (GMT) Received: from [164.129.44.95] (crx595.cro.st.com [164.129.44.95]) by mail1.cro.st.com (MOS 3.7.5a-GA) with ESMTP id CKG40606 (AUTH "denis pilat"); Tue, 17 Apr 2007 17:42:21 +0200 (CEST) Message-ID: <4624EADC.806@st.com> Date: Tue, 17 Apr 2007 15:48:00 -0000 From: Denis PILAT User-Agent: Thunderbird 1.5.0.10 (X11/20070221) MIME-Version: 1.0 To: gdb-patches@sourceware.org Subject: [RFA] TUI is broken under Solaris References: <45FDECB3.5000002@portugalmail.pt> <20070319021145.GA25872@caradoc.them.org> <45FEB31F.6040503@st.com> <20070327200906.GO28164@caradoc.them.org> In-Reply-To: <20070327200906.GO28164@caradoc.them.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2007-04/txt/msg00258.txt.bz2 Daniel Jacobowitz wrote: > On Mon, Mar 19, 2007 at 04:58:23PM +0100, Denis PILAT wrote: > >> Daniel Jacobowitz wrote: >> >>> Thanks for all your detective work on this. I'm sorry I apparently >>> broke TUI so badly - I wish we had test coverage. >>> >> About TUI for Solaris, Fred and I have found where the problem comes from, but >> we are not sure about the fix. >> A "new" call to solib_add in solib-svr4.c has been added 2006-10-18 (yes 5 >> months ago!). >> This call leads to a problem about the owner of the target_terminal, it seems >> that the TUI tries to write in the terminal without beein owner. >> > > >> We tried just to add a call to "target_terminal_ours ()" at the beginning of >> infcmd.c (post_create_inferior), that fixes the problem. >> But I guess it's not the good place to do that. >> > > I don't know. Maybe? It should happen somewhere central, either > central to TUI or central to GDB, so that we have the terminal before > TUI ever attempts to refresh. > > post_create_inferior might be the right place. > > Here is the proposed patch: It fixes the tui problem under Solaris. TUI hosted under Solaris has been broken for monthes. No way to break on main and run a simple program. Here we avoid any written to the terminal without beeing owner of it. Don't know if it the best solution but it works No testsuite regression for Solaris and Linux native debuggers. -- Denis 2007-04-17 Denis Pilat * infcmd.c (post_create_inferior): Start with a call to target_terminal_ours(). Index: infcmd.c =================================================================== RCS file: /cvs/src/src/gdb/infcmd.c,v retrieving revision 1.151 diff -u -p -r1.151 infcmd.c --- infcmd.c 27 Mar 2007 23:01:00 -0000 1.151 +++ infcmd.c 17 Apr 2007 15:04:03 -0000 @@ -406,6 +406,9 @@ tty_command (char *file, int from_tty) void post_create_inferior (struct target_ops *target, int from_tty) { + /* Be sure we own the terminal in case write operations are performed. */ + target_terminal_ours (); + /* If the target hasn't taken care of this already, do it now. Targets which need to access registers during to_open, to_create_inferior, or to_attach should do it earlier; but many