Mismatch between newlib and glibc regarding fileno
Torbjorn SVENSSON
torbjorn.svensson@foss.st.com
Mon Feb 12 17:11:42 GMT 2024
On 2024-02-12 17:40, Corinna Vinschen wrote:
> 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.
Do you know any way to identify if this is the intended behavior or if
it's an overlook in the glibc end?
Regardless if glibc is doing this deliberately or not, I suppose the
correct thing is to manually define _POSIX_VISIBLE in the test case, right?
More information about the Newlib
mailing list