diff options
author | Daniel Jacobowitz <drow@false.org> | 2006-07-23 03:52:15 +0000 |
---|---|---|
committer | Daniel Jacobowitz <drow@false.org> | 2006-07-23 03:52:15 +0000 |
commit | b80864fbe54e0280d6cd040b0ede0568dd66d90f (patch) | |
tree | cd09718cd52c0dd8bdfe7e6cf2bfad8217dfa674 /gdb/gdbserver/gdbreplay.c | |
parent | 66a79c16a65742d14f5991b596541276245d24ba (diff) | |
download | gdb-b80864fbe54e0280d6cd040b0ede0568dd66d90f.zip gdb-b80864fbe54e0280d6cd040b0ede0568dd66d90f.tar.gz gdb-b80864fbe54e0280d6cd040b0ede0568dd66d90f.tar.bz2 |
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 <winsock.h> 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 <sys/wait.h> 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 <winsock.h> for mingw32.
(remote_close, remote_open): Adjust for Winsock support.
* configure, config.in: Regenerated.
Diffstat (limited to 'gdb/gdbserver/gdbreplay.c')
-rw-r--r-- | gdb/gdbserver/gdbreplay.c | 47 |
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); |