aboutsummaryrefslogtreecommitdiff
path: root/gdb/gdbserver/gdbreplay.c
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/gdbserver/gdbreplay.c')
-rw-r--r--gdb/gdbserver/gdbreplay.c47
1 files changed, 42 insertions, 5 deletions
diff --git a/gdb/gdbserver/gdbreplay.c b/gdb/gdbserver/gdbreplay.c
index 7b3a7e9..34d55bf 100644
--- a/gdb/gdbserver/gdbreplay.c
+++ b/gdb/gdbserver/gdbreplay.c
@@ -1,5 +1,5 @@
/* Replay a remote debug session logfile for GDB.
- Copyright (C) 1996, 1998, 1999, 2000, 2002, 2003, 2005
+ Copyright (C) 1996, 1998, 1999, 2000, 2002, 2003, 2005, 2006
Free Software Foundation, Inc.
Written by Fred Fish (fnf@cygnus.com) from pieces of gdbserver.
@@ -23,10 +23,6 @@
#include "config.h"
#include <stdio.h>
#include <sys/file.h>
-#include <netinet/in.h>
-#include <sys/socket.h>
-#include <netdb.h>
-#include <netinet/tcp.h>
#include <signal.h>
#include <ctype.h>
#include <fcntl.h>
@@ -41,6 +37,22 @@
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
+#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#if HAVE_NETDB_H
+#include <netdb.h>
+#endif
+#if HAVE_NETINET_TCP_H
+#include <netinet/tcp.h>
+#endif
+
+#if USE_WIN32API
+#include <winsock.h>
+#endif
#ifndef HAVE_SOCKLEN_T
typedef int socklen_t;
@@ -90,7 +102,11 @@ sync_error (FILE *fp, char *desc, int expect, int got)
static void
remote_close (void)
{
+#ifdef USE_WIN32API
+ closesocket (remote_desc);
+#else
close (remote_desc);
+#endif
}
/* Open a connection to a remote debugger.
@@ -107,6 +123,9 @@ remote_open (char *name)
}
else
{
+#ifdef USE_WIN32API
+ static int winsock_initialized;
+#endif
char *port_str;
int port;
struct sockaddr_in sockaddr;
@@ -117,6 +136,16 @@ remote_open (char *name)
port = atoi (port_str + 1);
+#ifdef USE_WIN32API
+ if (!winsock_initialized)
+ {
+ WSADATA wsad;
+
+ WSAStartup (MAKEWORD (1, 0), &wsad);
+ winsock_initialized = 1;
+ }
+#endif
+
tmp_desc = socket (PF_INET, SOCK_STREAM, 0);
if (tmp_desc < 0)
perror_with_name ("Can't open socket");
@@ -151,11 +180,19 @@ remote_open (char *name)
close (tmp_desc); /* No longer need this */
+#ifndef USE_WIN32API
+ close (tmp_desc); /* No longer need this */
+
signal (SIGPIPE, SIG_IGN); /* If we don't do this, then gdbreplay simply
exits when the remote side dies. */
+#else
+ closesocket (tmp_desc); /* No longer need this */
+#endif
}
+#if defined(F_SETFL) && defined (FASYNC)
fcntl (remote_desc, F_SETFL, FASYNC);
+#endif
fprintf (stderr, "Replay logfile using %s\n", name);
fflush (stderr);