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 */
next prev parent 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