This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[RFA] TUI is broken under Solaris


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 <denis.pilat@st.com>

* 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





Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]