This is the mail archive of the gdb@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: gdbserver error (getprotobyname)


On Tue, Feb 12, 2002 at 11:09:34PM -0800, Martin M. Hunt wrote:
> David,
> 
> I don't know what causes this; perhaps a problem with the getprotobyname() 
> function on your board.
> 
> You could try bypassing that function call.  In this context it has no useful
> function anyway. I don't know which sources you have, but try this patch 
> or something similar.

This patch should -absolutely- be applied.  Calling getprotobyname()
loads NSS on Linux; trying to debug dynamic linking with it, which I've
had to do four times now, is quite frustrating.  Thanks for reminding
me :)


> 
> Index: remote-utils.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/gdbserver/remote-utils.c,v
> retrieving revision 1.7
> diff -u -p -r1.7 remote-utils.c
> --- remote-utils.c	2001/07/12 21:04:35	1.7
> +++ remote-utils.c	2002/02/13 06:59:20
> @@ -106,7 +106,6 @@ remote_open (char *name)
>        int port;
>        struct sockaddr_in sockaddr;
>        int tmp;
> -      struct protoent *protoent;
>        int tmp_desc;
>  
>        port_str = strchr (name, ':');
> @@ -135,10 +134,6 @@ remote_open (char *name)
>        if (remote_desc == -1)
>  	perror_with_name ("Accept failed");
>  
> -      protoent = getprotobyname ("tcp");
> -      if (!protoent)
> -	perror_with_name ("getprotobyname");
> -
>        /* Enable TCP keep alive process. */
>        tmp = 1;
>        setsockopt (tmp_desc, SOL_SOCKET, SO_KEEPALIVE, (char *) &tmp, sizeof (tmp));
> @@ -146,7 +141,7 @@ remote_open (char *name)
>        /* Tell TCP not to delay small packets.  This greatly speeds up
>           interactive response. */
>        tmp = 1;
> -      setsockopt (remote_desc, protoent->p_proto, TCP_NODELAY,
> +      setsockopt (remote_desc, IPPROTO_TCP, TCP_NODELAY,
>  		  (char *) &tmp, sizeof (tmp));
>  
>        close (tmp_desc);		/* No longer need this */
> 
> -- 
> Martin Hunt
> GDB Engineer
> Red Hat, Inc.
> 
> On Tuesday 12 February 2002 10:40 pm, David Jones wrote:
> > Hi,
> >   I am using gdbserver on a StrongArm board compiled
> > for arm-linux.  On my Linux x86 host I am running
> > gdb compiled to debug an arm-linux target.  Thanks
> > to Bill Gatliff for helping me out with this.
> >
> > I can successfully debug a program if I use the serial
> > port between the host and the target.  This is great!
> >
> > However when I try to use a network connection I get
> > the following error:  (below is a trace of my commands)
> >
> > (target output)
> > ----------------------------------------------------
> > # ./arm-linux-gdbserver davesplace:90 hello
> > Process hello created; pid = 180
> > getprotobyname: No such file or directory.
> > Exiting
> >
> > (host output)
> > (gdb) target remote tuxscreen:90
> > Remote debugging using tuxscreen:90
> > Couldn't establish connection to remote target
> > Remote communication error: Connection reset by peer.
> > (gdb)
> > #
> > ----------------------------------------------------
> >
> > Has anyone seen this type of error (i.e. getprotobyname)?
> >
> >
> > I start the gdbserver first as recommended by the GDB documentation.
> >
> > man getprotobyname shows:
> > The getprotobyname() function returns a protoent structure for the  line 
> > from /etc/protocols that matches the protocol name name.
> >
> > The /etc/protocols file is present on my StrongArm target.
> >
> > # more /etc/protocols
> > # /etc/protocols:
> > # $Id: protocols,v 1.1.1.1 2001/09/12 19:03:24 andersee Exp $
> > #
> > # Internet (IP) protocols
> > #
> > #       from: @(#)protocols     5.1 (Berkeley) 4/17/89
> > #
> > # Updated for NetBSD based on RFC 1340, Assigned Numbers (July 1992).
> >
> > ip      0       IP              # internet protocol, pseudo protocol number
> > icmp    1       ICMP            # internet control message protocol
> > igmp    2       IGMP            # Internet Group Management
> > ggp     3       GGP             # gateway-gateway protocol
> > ipencap 4       IP-ENCAP        # IP encapsulated in IP (officially ``IP'')
> > st      5       ST              # ST datagram mode
> > tcp     6       TCP             # transmission control protocol
> > egp     8       EGP             # exterior gateway protocol
> > pup     12      PUP             # PARC universal packet protocol
> > udp     17      UDP             # user datagram protocol
> > hmp     20      HMP             # host monitoring protocol
> > xns-idp 22      XNS-IDP         # Xerox NS IDP
> > rdp     27      RDP             # "reliable datagram" protocol
> > iso-tp4 29      ISO-TP4         # ISO Transport Protocol class 4
> > xtp     36      XTP             # Xpress Tranfer Protocol
> > ddp     37      DDP             # Datagram Delivery Protocol
> > idpr-cmtp       39      IDPR-CMTP       # IDPR Control Message Transport
> > rspf    73      RSPF            #Radio Shortest Path First.
> > vmtp    81      VMTP            # Versatile Message Transport
> > ospf    89      OSPFIGP         # Open Shortest Path First IGP
> > ipip    94      IPIP            # Yet Another IP encapsulation
> > encap   98      ENCAP           # Yet Another IP encapsulation
> > #
> >
> >
> > By the way my StrongArm is a tuxscreen. (see www.tuxscreen.net)
> >
> > David
> 

-- 
Daniel Jacobowitz                           Carnegie Mellon University
MontaVista Software                         Debian GNU/Linux Developer


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]