Mirror of the gdb mailing list
 help / color / mirror / Atom feed
From: Pedro Alves <palves@redhat.com>
To: asmwarrior <asmwarrior@gmail.com>
Cc: gdb@sourceware.org
Subject: Re: [mingw] build error of the latest CVS
Date: Wed, 13 Jun 2012 09:57:00 -0000	[thread overview]
Message-ID: <4FD863EA.6080806@redhat.com> (raw)
In-Reply-To: <4FD8636E.8050406@gmail.com>

On 06/13/2012 10:54 AM, asmwarrior wrote:

> On 2012-6-13 17:39, Pedro Alves wrote:

>> We can just restore the function.  I'm testing a patch.

>>
> I firstly tried to use a hacker local patch to workaround the build error, but finally I found a hang problem caused by my local patch.


You don't say how your patch looked like, but I'm hoping it's not
the same as mine, otherwise I'll need to go back to the drawing board  :-)

Could you try the patch below on top of current mainline?

> So, I revert you three commit about serial.c, and now gdb cvs Head build and works OK.


> see: http://sourceware.org/bugzilla/show_bug.cgi?id=14227


Thanks.

2012-06-13  Pedro Alves  <palves@redhat.com>

	Partial revert of previous change.

	* serial.c (scb_base): New global.
	(serial_for_fd): New.
	(serial_open, serial_fdopen_ops): Link new serial in open serials
	chain.
	(do_serial_close): Unlink serial from the open serials chain.
---

 gdb/serial.c |   35 +++++++++++++++++++++++++++++++++++
 gdb/serial.h |    1 +
 2 files changed, 36 insertions(+), 0 deletions(-)

diff --git a/gdb/serial.c b/gdb/serial.c
index 1140feb..df18b2f 100644
--- a/gdb/serial.c
+++ b/gdb/serial.c
@@ -33,6 +33,10 @@ static int global_serial_debug_p;

 static struct serial_ops *serial_ops_list = NULL;

+/* Pointer to list of scb's.  */
+
+static struct serial *scb_base;
+
 /* Non-NULL gives filename which contains a recording of the remote session,
    suitable for playback by gdbserver.  */

@@ -157,6 +161,21 @@ serial_add_interface (struct serial_ops *optable)
   serial_ops_list = optable;
 }

+/* Return the open serial device for FD, if found, or NULL if FD is
+   not already opened.  */
+
+struct serial *
+serial_for_fd (int fd)
+{
+  struct serial *scb;
+
+  for (scb = scb_base; scb; scb = scb->next)
+    if (scb->fd == fd)
+      return scb;
+
+  return NULL;
+}
+
 /* Open up a device or a network socket, depending upon the syntax of NAME.  */

 struct serial *
@@ -206,10 +225,12 @@ serial_open (const char *name)
     }

   scb->name = xstrdup (name);
+  scb->next = scb_base;
   scb->debug_p = 0;
   scb->async_state = 0;
   scb->async_handler = NULL;
   scb->async_context = NULL;
+  scb_base = scb;

   if (serial_logfile != NULL)
     {
@@ -249,10 +270,12 @@ serial_fdopen_ops (const int fd, struct serial_ops *ops)
   scb->refcnt = 1;

   scb->name = NULL;
+  scb->next = scb_base;
   scb->debug_p = 0;
   scb->async_state = 0;
   scb->async_handler = NULL;
   scb->async_context = NULL;
+  scb_base = scb;

   if ((ops->fdopen) != NULL)
     (*ops->fdopen) (scb, fd);
@@ -296,6 +319,18 @@ do_serial_close (struct serial *scb, int really_close)
   /* For serial_is_open.  */
   scb->bufp = NULL;

+  if (scb_base == scb)
+    scb_base = scb_base->next;
+  else
+    for (tmp_scb = scb_base; tmp_scb; tmp_scb = tmp_scb->next)
+      {
+	if (tmp_scb->next != scb)
+	  continue;
+
+	tmp_scb->next = tmp_scb->next->next;
+	break;
+      }
+
   serial_unref (scb);
 }

diff --git a/gdb/serial.h b/gdb/serial.h
index 187ed03..b164062 100644
--- a/gdb/serial.h
+++ b/gdb/serial.h
@@ -249,6 +249,7 @@ struct serial
 				   still need to wait for this many
 				   more seconds.  */
     char *name;			/* The name of the device or host */
+    struct serial *next;	/* Pointer to the next `struct serial *' */
     int debug_p;		/* Trace this serial devices operation.  */
     int async_state;		/* Async internal state.  */
     void *async_context;	/* Async event thread's context */


  reply	other threads:[~2012-06-13  9:57 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-06-13  0:17 asmwarrior
2012-06-13  0:19 ` asmwarrior
2012-06-13  9:23   ` Pedro Alves
2012-06-13  9:40     ` Pedro Alves
2012-06-13  9:52       ` asmwarrior
2012-06-13  9:57         ` Pedro Alves [this message]
2012-06-13 10:04           ` asmwarrior
2012-06-13 10:59             ` asmwarrior
2012-06-13 11:03               ` Pedro Alves

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4FD863EA.6080806@redhat.com \
    --to=palves@redhat.com \
    --cc=asmwarrior@gmail.com \
    --cc=gdb@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox