Mismatch between newlib and glibc regarding fileno

Corinna Vinschen vinschen@redhat.com
Mon Feb 12 16:40:10 GMT 2024


On Feb 12 17:33, Corinna Vinschen wrote:
> On Feb 12 16:36, Torbjorn SVENSSON wrote:
> > Okay, so newlib is more restrictive than glibc on this topic.
> > I will prepare a patch for test cases in GCC with defining _POSIX_SOURCE  so
> > that the test cases succeed for newlib.
> 
> It looks like it.  But I do wonder if that's really intended by glibc.
> I ran a quick test, first under newlibL
> 
>   $ g++ -std=c++98 -E -dM /usr/include/features.h | grep VISIBLE
>   #define __LARGEFILE_VISIBLE 0
>   #define __ISO_C_VISIBLE 1999
>   #define __XSI_VISIBLE 0
>   #define __GNU_VISIBLE 0
>   #define __BSD_VISIBLE 0
>   #define __POSIX_VISIBLE 0
>   #define __SVID_VISIBLE 0
>   #define __ATFILE_VISIBLE 0
>   #define __MISC_VISIBLE 0
> 
> then under glibc:
> 
>   $ g++ -std=c++98 -E -dM x.cc | grep '#define __USE'
>   #define __USE_UNIX98 1
>   #define __USE_FORTIFY_LEVEL 0
>   #define __USE_ISOC11 1
>   #define __USE_ISOC95 1
>   #define __USE_ISOC99 1
>   #define __USE_XOPEN 1
>   #define __USE_XOPEN2K 1
>   #define __USE_POSIX199506 1
>   #define __USE_GNU 1
>   #define __USE_XOPEN2KXSI 1
>   #define __USE_XOPEN2K8 1
>   #define __USE_POSIX 1
>   #define __USER_LABEL_PREFIX__ 
>   #define __USE_MISC 1
>   #define __USE_POSIX2 1
>   #define __USE_LARGEFILE64 1
>   #define __USE_POSIX199309 1
>   #define __USE_XOPEN2K8XSI 1
>   #define __USE_LARGEFILE 1
>   #define __USE_XOPEN_EXTENDED 1
>   #define __USE_DYNAMIC_STACK_SIZE 1
>   #define __USE_ATFILE 1
> 
> How is it possible that with -std=c++98, everything and the kitchen sink
> is enabled?  Is that really correct?!?

...especially since __STRICT_ANSI__ is defined to 1 in this scenario.


Corinna



More information about the Newlib mailing list