From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 1190 invoked by alias); 27 Aug 2010 14:45:56 -0000 Received: (qmail 1177 invoked by uid 22791); 27 Aug 2010 14:45:55 -0000 X-SWARE-Spam-Status: No, hits=-2.0 required=5.0 tests=AWL,BAYES_00,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mail.codesourcery.com (HELO mail.codesourcery.com) (38.113.113.100) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 27 Aug 2010 14:45:50 +0000 Received: (qmail 25095 invoked from network); 27 Aug 2010 14:45:48 -0000 Received: from unknown (HELO orlando.localnet) (pedro@127.0.0.2) by mail.codesourcery.com with ESMTPA; 27 Aug 2010 14:45:48 -0000 From: Pedro Alves To: gdb-patches@sourceware.org Subject: Re: gdbserver with -Werror, win64 socket type Date: Fri, 27 Aug 2010 14:45:00 -0000 User-Agent: KMail/1.13.2 (Linux/2.6.33-29-realtime; KDE/4.4.2; x86_64; ; ) Cc: Ozkan Sezer References: In-Reply-To: MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <201008271545.47301.pedro@codesourcery.com> X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2010-08/txt/msg00461.txt.bz2 On Friday 27 August 2010 14:56:32, Ozkan Sezer wrote: > Hi: > > gdb assumes that the windows socket handles and file descriptors can be > used interchangeably as in unix, but it can not: s/gdb/gdbserver, and there is actually no such assumption. The mingw ports of gdbserver only support socket communications, and nothing else. see: void remote_open (char *name) { char *port_str; port_str = strchr (name, ':'); if (port_str == NULL) { #ifdef USE_WIN32API error ("Only : is supported on this platform."); #else > Ideas? Given the above, could you give this patch a try? -- Pedro Alves --- gdb/gdbserver/event-loop.c | 17 +++++++++-------- gdb/gdbserver/remote-utils.c | 4 ++-- gdb/gdbserver/server.h | 12 +++++++++--- 3 files changed, 20 insertions(+), 13 deletions(-) Index: src/gdb/gdbserver/event-loop.c =================================================================== --- src.orig/gdb/gdbserver/event-loop.c 2010-06-16 10:58:29.000000000 +0100 +++ src/gdb/gdbserver/event-loop.c 2010-08-27 15:39:25.000000000 +0100 @@ -64,7 +64,7 @@ struct gdb_event event_handler_func *proc; /* File descriptor that is ready. */ - int fd; + gdb_fildes_t fd; /* Next in list of events or NULL. */ struct gdb_event *next_event; @@ -76,7 +76,7 @@ struct gdb_event typedef struct file_handler { /* File descriptor. */ - int fd; + gdb_fildes_t fd; /* Events we want to monitor. */ int mask; @@ -202,7 +202,7 @@ process_event (void) { gdb_event *event_ptr, *prev_ptr; event_handler_func *proc; - int fd; + gdb_fildes_t fd; /* Look in the event queue to find an event that is ready to be processed. */ @@ -332,7 +332,7 @@ process_callback (void) occurs for FD. CLIENT_DATA is the argument to pass to PROC. */ static void -create_file_handler (int fd, int mask, handler_func *proc, +create_file_handler (gdb_fildes_t fd, int mask, handler_func *proc, gdb_client_data client_data) { file_handler *file_ptr; @@ -382,7 +382,8 @@ create_file_handler (int fd, int mask, h /* Wrapper function for create_file_handler. */ void -add_file_handler (int fd, handler_func *proc, gdb_client_data client_data) +add_file_handler (gdb_fildes_t fd, + handler_func *proc, gdb_client_data client_data) { create_file_handler (fd, GDB_READABLE | GDB_EXCEPTION, proc, client_data); } @@ -391,7 +392,7 @@ add_file_handler (int fd, handler_func * i.e. we don't care anymore about events on the FD. */ void -delete_file_handler (int fd) +delete_file_handler (gdb_fildes_t fd) { file_handler *file_ptr, *prev_ptr = NULL; int i; @@ -454,7 +455,7 @@ delete_file_handler (int fd) event in the front of the event queue. */ static int -handle_file_event (int event_file_desc) +handle_file_event (gdb_fildes_t event_file_desc) { file_handler *file_ptr; int mask; @@ -502,7 +503,7 @@ handle_file_event (int event_file_desc) associated to FD when it was registered with the event loop. */ static gdb_event * -create_file_event (int fd) +create_file_event (gdb_fildes_t fd) { gdb_event *file_event_ptr; Index: src/gdb/gdbserver/remote-utils.c =================================================================== --- src.orig/gdb/gdbserver/remote-utils.c 2010-08-26 19:32:03.000000000 +0100 +++ src/gdb/gdbserver/remote-utils.c 2010-08-27 15:37:02.000000000 +0100 @@ -107,8 +107,8 @@ struct sym_cache int remote_debug = 0; struct ui_file *gdb_stdlog; -static int remote_desc = INVALID_DESCRIPTOR; -static int listen_desc = INVALID_DESCRIPTOR; +static gdb_fildes_t remote_desc = INVALID_DESCRIPTOR; +static gdb_fildes_t listen_desc = INVALID_DESCRIPTOR; /* FIXME headerize? */ extern int using_threads; Index: src/gdb/gdbserver/server.h =================================================================== --- src.orig/gdb/gdbserver/server.h 2010-07-19 15:47:22.000000000 +0100 +++ src/gdb/gdbserver/server.h 2010-08-27 15:40:30.000000000 +0100 @@ -334,13 +334,19 @@ extern int disable_packet_qfThreadInfo; extern int multi_process; extern int non_stop; +#if USE_WIN32API +typedef SOCKET gdb_fildes_t; +#else +typedef int gdb_fildes_t; +#endif + /* Functions from event-loop.c. */ typedef void *gdb_client_data; -typedef int (handler_func) (int, gdb_client_data); +typedef int (handler_func) (gdb_fildes_t, gdb_client_data); typedef int (callback_handler_func) (gdb_client_data); -extern void delete_file_handler (int fd); -extern void add_file_handler (int fd, handler_func *proc, +extern void delete_file_handler (gdb_fildes_t fd); +extern void add_file_handler (gdb_fildes_t fd, handler_func *proc, gdb_client_data client_data); extern int append_callback_event (callback_handler_func *proc, gdb_client_data client_data);