[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