Rtems Networking

Ralf Corsepius ralf.corsepius at rtems.org
Thu Nov 16 13:11:26 UTC 2006


On Thu, 2006-11-16 at 06:32 -0600, Joel Sherrill wrote:
> Ralf Corsepius wrote:
> > On Wed, 2006-11-15 at 16:57 -0600, Joel Sherrill wrote:
> >   
> >> Luca Germano wrote:
> >>     
> >>> Hi
> >>> I try to use network under RTEMS. I look the RTEMS netdemos examples.
> >>> Compling my application I have the following warning message:
> >>> /opt/rtems-4.6/lib/gcc-lib/sparc-rtems/3.2.3/../../../../sparc-rtems/bin/ld: 
> >>> Warning: size of symbol `timeout' changed from 4 to 244 in 
> >>> /opt/rtems-4.6/sparc-rtems/leon3/lib/librtemscpu.a(rtems_glue.o)
> >>> /opt/rtems-4.6/lib/gcc-lib/sparc-rtems/3.2.3/../../../../sparc-rtems/bin/ld: 
> >>> Warning: type of symbol `timeout' changed from 1 to 2 in 
> >>> /opt/rtems-4.6/sparc-rtems/leon3/lib/librtemscpu.a(rtems_glue.o)
> >>> Someone have had this warning message or can explain me how to solve?
> >>>   
> >>>       
> >> This usually indicates that the symbol is defined in two different 
> >> object files.
> >>
> >> Can you poke around with nm and grep on the libraries and see if it is 
> >> duplicately defined?
> >> timeout is such a common word, it wouldn't surprise me to find it in two 
> >> places.
> >>     
> >
> > As others already pointed out, RTEMS is partially guilty for not being
> > "namespace clean".
> >
> > To avoid this particular clash, I'd like to propose the patch (against
> > CVS-HEAD/rtems-4.8) below.
> >   
> 
> I'm all for making the namespace cleaner and my personal goal is to fix 
> a few
> other places on the CVS head that I think the names stink.  :)
> 
> Are there places where timeout() is actually used that need to change?
Yes, several (leon3 w/ my patch applied):

# sparc-rtems4.8-nm -og wrapup/librtemscpu.a | grep rtems_bsdnet_timeout
wrapup/librtemscpu.a:libnetworking_a-if_ether.o:         U rtems_bsdnet_timeout
wrapup/librtemscpu.a:libnetworking_a-if.o:         U rtems_bsdnet_timeout
wrapup/librtemscpu.a:libnetworking_a-in_rmx.o:         U rtems_bsdnet_timeout
wrapup/librtemscpu.a:libnetworking_a-rtems_glue.o:000002a0 T rtems_bsdnet_timeout
wrapup/librtemscpu.a:libnetworking_a-uipc_domain.o:         U rtems_bsdnet_timeout

> Did you mean to mix in the argument type change to BSD malloc?
Yes, the current implementation is error prone, because it mixes up the
3-argument bsd-kernel malloc with the 1-argument user-space malloc.

>   It seems
> unrelated to timeout. 
Basically yes, except that it's essentially the same issue:
BSD kernel functions vs. flat RTEMS memory model.

>  I don't mind that change either just wonder if it is
> related and I don't see it.
> 
> And let this be a lesson to us all to use good function and variable 
> names. :)

Ralf





More information about the users mailing list