strnlen, strict ansi, newlib vs glibc

Corinna Vinschen vinschen@redhat.com
Thu Aug 14 16:17:00 GMT 2014


On Aug 14 10:57, Joel Sherrill wrote:
> 
> 
> On August 14, 2014 10:30:55 AM CDT, Luca Barbato <lu_zero@gentoo.org> wrote:
> >On 14/08/14 17:27, Joel Sherrill wrote:
> >> Hi
> >> 
> >> I have some native C++ code that I developed on CentOS and it
> >> has no warnings. Someone moved it to Cygwin and reported warnings
> >> for strnlen() not being prototyped. I investigated and the program
> >did
> >> include string.h. I tried RTEMS tools and got the same as Cygwin
> >> since we have the same string.h from newlib.
> >> 
> >> Investigating this, it appears that strnlen() is protected by
> >> __STRICT_ANSI__ on newlib and  __USE_XOPEN2K8 on Linux.
> >> 
> >> Command: g++ -Wall -std=c++0x -c strtest.cc
> >> 
> >> This program is enough to reproduce the issue:
> >> 
> >>     #include <string.h>
> >> 
> >>     // size_t strnlen( const char *, size_t );
> >> 
> >>     size_t f( const char *str )
> >>     {
> >>       return strnlen( str, 1000 );
> >>     }
> >> 
> >> 
> >> What do you all think?
> >> 
> >
> >It is a known issue with newlib headers.
> >
> >They mistakenly assume __STRICT_ANSI__ as nothing but old-C.
> >
> >using -std=c99 triggers the same kind of issues.
> >
> >The common way to solve it is adding -U__STRICT_ANSI__
> 
> Thanks for the quick reply. 
> 
> How about I try to fix this based on what glibc and FreeBSD do?

I, for one, would be glad to get patches for newlib :}


Corinna

-- 
Corinna Vinschen
Cygwin Maintainer
Red Hat
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://sourceware.org/pipermail/newlib/attachments/20140814/aaf4f57b/attachment.sig>


More information about the Newlib mailing list