[patch] Include some c99 functions in __STRICT_ANSI__ for cygwin c99.

Jeff Johnston jjohnstn@redhat.com
Fri Oct 16 18:31:00 GMT 2009


Yes, I should of thought of that.  I'll add the setting of the flag 
under Cygwin's portion of sys/config.h.

Does the __STDC_VERSION__ level need to be checked as you've implied 
below or as I would expect, should it just be set all the time for Cygwin?

-- Jeff J.

On 16/10/09 01:16 PM, Corinna Vinschen wrote:
> On Oct 16 12:55, Jeff Johnston wrote:
>> I think the better solution is to emulate glibc which uses the flag
>> __USE_XOPEN2K to determine if fseeko and ftello are to be used.
>>
>> So I made the following patch which sets the __USE_XOPEN2K flag for Cygwin
>> and uses to check for fseeko, ftello when __STRICT_ANSI__ is set.
>>
>> The remainder of the I/O functions in that chunk are included if C99.
>>
>> A patch is attached.  Let me know if you have any concerns, otherwise I'll
>> check it in.
>
> I don't think this patch is correct.  It sets the __USE_XOPEN2K
> flag only when building newlib.  However, this is a header file
> and we need the right definition at compile time of any subsequent
> application, not only when building newlib.
>
> So, I assume what we need is a definition in config.h, similar to
> what Dave suggested:
>
>    #if __STDC_VERSION__>= 199901L
>    #define __USE_XOPEN2K 1
>    #endif
>
>
> Corinna
>
>
>> Index: configure.host
>> ===================================================================
>> RCS file: /cvs/src/src/newlib/configure.host,v
>> retrieving revision 1.110
>> diff -u -p -r1.110 configure.host
>> --- configure.host	8 Oct 2009 16:44:09 -0000	1.110
>> +++ configure.host	16 Oct 2009 16:50:08 -0000
>> @@ -536,7 +536,7 @@ case "${host}" in
>>   	default_newlib_io_long_double="yes"
>>   	default_newlib_io_pos_args="yes"
>>   	CC="${CC} -I${cygwin_srcdir}/include"
>> -	newlib_cflags="${newlib_cflags} -DHAVE_OPENDIR -DHAVE_RENAME -DSIGNAL_PROVIDED -D_COMPILING_NEWLIB -DHAVE_BLKSIZE -DHAVE_FCNTL -DMALLOC_PROVIDED"
>> +	newlib_cflags="${newlib_cflags} -DHAVE_OPENDIR -DHAVE_RENAME -DSIGNAL_PROVIDED -D_COMPILING_NEWLIB -DHAVE_BLKSIZE -DHAVE_FCNTL -DMALLOC_PROVIDED -D__USE_XOPEN2K"
>>   	syscall_dir=syscalls
>>   	;;
>>   # RTEMS supplies its own versions of some routines:
>> Index: libc/include/stdio.h
>> ===================================================================
>> RCS file: /cvs/src/src/newlib/libc/include/stdio.h,v
>> retrieving revision 1.58
>> diff -u -p -r1.58 stdio.h
>> --- libc/include/stdio.h	3 Jul 2009 11:58:04 -0000	1.58
>> +++ libc/include/stdio.h	16 Oct 2009 16:50:08 -0000
>> @@ -232,7 +232,7 @@ int	_EXFUN(sprintf, (char *, const char
>>   int	_EXFUN(remove, (const char *));
>>   int	_EXFUN(rename, (const char *, const char *));
>>   #endif
>> -#ifndef __STRICT_ANSI__
>> +#if !defined(__STRICT_ANSI__) || defined(__USE_XOPEN2K)
>>   #ifdef _COMPILING_NEWLIB
>>   int	_EXFUN(fseeko, (FILE *, _off_t, int));
>>   _off_t	_EXFUN(ftello, ( FILE *));
>> @@ -240,6 +240,7 @@ _off_t	_EXFUN(ftello, ( FILE *));
>>   int	_EXFUN(fseeko, (FILE *, off_t, int));
>>   off_t	_EXFUN(ftello, ( FILE *));
>>   #endif
>> +#if !defined(__STRICT_ANSI__) || __STDC_VERSION__>= 199901L)
>>   #ifndef _REENT_ONLY
>>   int	_EXFUN(asiprintf, (char **, const char *, ...)
>>                  _ATTRIBUTE ((__format__ (__printf__, 2, 3))));
>
>



More information about the Newlib mailing list