The "set tcp connect-timeout" variable is unsigned:
  /* Timeout period for connections, in seconds.  */
  static unsigned int tcp_retry_limit = 15;
And used like:
  /* Check for timeout.  */
  if (*polls > tcp_retry_limit * POLL_INTERVAL)
    {
      errno = ETIMEDOUT;
      return -1;
    }
Which made me stop and look over why is it that 'polls' is signed.
What I found is there's really no reason.
gdb/
2013-03-26  Pedro Alves  <palves@redhat.com>
	* ser-tcp.c (wait_for_connect): Make 'polls' parameter unsigned.
	(net_open): Make 'polls' local unsigned.
+2013-03-26  Pedro Alves  <palves@redhat.com>
+
+       * ser-tcp.c (wait_for_connect): Make 'polls' parameter unsigned.
+       (net_open): Make 'polls' local unsigned.
+
 2013-03-26  Pedro Alves  <palves@redhat.com>
 
        * remote.c (_initialize_remote): Make "set remoteaddresssize"
 
    Returns -1 on timeout or interrupt, otherwise the value of select.  */
 
 static int
-wait_for_connect (struct serial *scb, int *polls)
+wait_for_connect (struct serial *scb, unsigned int *polls)
 {
   struct timeval t;
   int n;
 #else
   int ioarg;
 #endif
-  int polls = 0;
+  unsigned int polls = 0;
 
   use_udp = 0;
   if (strncmp (name, "udp:", 4) == 0)