This is the mail archive of the
gdb-patches@sourceware.cygnus.com
mailing list for the GDB project.
Re: HAVE_POLL is not enough
- To: "Philippe De Muyter" <phdm at macqel dot be>
- Subject: Re: HAVE_POLL is not enough
- From: Elena Zannoni <ezannoni at cygnus dot com>
- Date: Mon, 21 Feb 2000 10:50:54 -0500 (EST)
- Cc: gdb-patches at sourceware dot cygnus dot com (gdb-patches at sourceware dot cygnus dot com)
- References: <200002211141.MAA05937@mail.macqel.be>
Philippe De Muyter writes:
> With the gdb cvs tree of 2000-02-19, on m68k-motorola-sys, configure
> correctly detect that we have `poll', but gdb incorrectly assumes that
> `poll' can be used to wait for `stdin'. On m68k-motorola-sysv, tty's
> are not stream-based and not `poll'able. Should the configure test
> be enhanced ? I don't think so if we need to run a target program to check
> that, because it would fail if we cross-compile gdb, but if it can be
> determined by other ways, like the presence of some constants in some
> header files then I would agree. We could also always compile in the `poll'
> version if HAVE_POLL, but switch to the the fall-back method at run time if
> poll fails with POLLNVAL.
>
Right now the decision on whether to run gdb with or without the event
loop is determined by the user as start up, and it is not detected
neither by configure or at run time. The easiest thing to do for now
is probably tell the user what happened and switch to
non-event-loop mode. Maybe some configury work could be done to
determine whether the tty's can be pollable, I am not familiar with
your system enough to know whether this is anything feasible. Sorry I
cannot be of more help here.
How about the 'target async' part, would that work?
> Meanwhile here is a small patch that at least tell the user what happened.
I'll apply this, thanks.
Elena
>
> Mon Feb 21 12:39:44 2000 Philippe De Muyter <phdm@macqel.be>
>
> * event-loop.c (handle_file_event): Issue an error message when
> poll fails.
>
> --- ./gdb/event-loop.c Mon Feb 21 12:35:54 2000
> +++ ./gdb/event-loop.c Sun Feb 20 19:04:50 2000
> @@ -697,12 +697,12 @@ handle_file_event (int event_file_desc)
> {
> /* Work in progress. We may need to tell somebody what
> kind of error we had. */
> - /*if (error_mask_returned & POLLHUP)
> - printf_unfiltered ("Hangup detected on fd %d\n", file_ptr->fd);
> - if (error_mask_returned & POLLERR)
> - printf_unfiltered ("Error detected on fd %d\n", file_ptr->fd);
> - if (error_mask_returned & POLLNVAL)
> - printf_unfiltered ("Invalid fd %d\n", file_ptr->fd); */
> + if (error_mask_returned & POLLHUP)
> + printf_unfiltered ("Hangup detected on fd %d\n", file_ptr->fd);
> + if (error_mask_returned & POLLERR)
> + printf_unfiltered ("Error detected on fd %d\n", file_ptr->fd);
> + if (error_mask_returned & POLLNVAL)
> + printf_unfiltered ("Invalid or non-`poll'able fd %d\n", file_ptr->fd);
> file_ptr->error = 1;
> }
> else