From b80864fbe54e0280d6cd040b0ede0568dd66d90f Mon Sep 17 00:00:00 2001 From: Daniel Jacobowitz Date: Sun, 23 Jul 2006 03:52:15 +0000 Subject: gdb/ * configure.tgt: Build gdbserver for Cygwin and mingw32. gdb/gdbserver/ * configure.ac: Check for more headers which are missing on Windows. Automatically supply -lwsock32 and USE_WIN32API. * configure.srv: Add Cygwin and mingw32. * remote-utils.c: Don't include headers unconditionally which are missing on mingw32. Include for mingw32. (remote_open): Adjust for mingw32 support. Flush standard error after writing to it. (remote_close, putpkt_binary, input_interrupt, block_async_io) (unblock_async_io, enable_async_io, disable_async_io) (readchar, getpkt): Update for Winsock support. (prepare_resume_reply): Expect a protocol signal number. * server.c: Disable on mingw32. (start_inferior): Adjust for mingw32 support. Flush standard error after writing to it. (attach_inferior): Likewise. Use protocol signal numbers. (main): Skip 'D' packet on mingw32. Use protocol signal numbers and names. * win32-i386-low.c: New file. * Makefile.in (XM_CLIBS): Set. (gdbserver, gdbreplay): Use $(INTERNAL_CFLAGS). (win32-i386-low.o): New dependency rule. * linux-low.c (linux_wait): Use target signal numbers. * target.h (struct target_ops): Doc fix. * server.h (target_signal_to_name): New prototype. * gdbreplay.c: Don't include headers unconditionally which are missing on mingw32. Include for mingw32. (remote_close, remote_open): Adjust for Winsock support. * configure, config.in: Regenerated. --- gdb/gdbserver/gdbreplay.c | 47 ++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 42 insertions(+), 5 deletions(-) (limited to 'gdb/gdbserver/gdbreplay.c') 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 #include -#include -#include -#include -#include #include #include #include @@ -41,6 +37,22 @@ #ifdef HAVE_UNISTD_H #include #endif +#ifdef HAVE_NETINET_IN_H +#include +#endif +#ifdef HAVE_SYS_SOCKET_H +#include +#endif +#if HAVE_NETDB_H +#include +#endif +#if HAVE_NETINET_TCP_H +#include +#endif + +#if USE_WIN32API +#include +#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); -- cgit v1.1