Mismatch between newlib and glibc regarding fileno

Torbjorn SVENSSON <[email protected]>
Newsgroups gmane.comp.lib.newlib
Message-ID <[email protected]>
Hi all,

I've been trying to run tests for arm-none-eabi on GCC14 tree.
What I've seen is that fileno() is not available. If you look though the 
header files, I see that this is guarded by __POSIX_VISIBLE and due to a 
recent change in the GCC testsuite (part of PR96395), they moved the 
test case to gcc/testsuite/c-c++-common/analyzer/fileno-1.c and then 
invoke it with g++ and -std=c++98. With this change, strict ANSI is 
defined, but not __POSIX_VISIBLE.

If I run the same test on the native g++ tool in Ubuntu, I instead get 
that __USE_POSIX is set (the guard for fileno() in glibc), so this 
differs from the behavior noticed with newlib.


Is it correct that newlib does not define __POSIX_VISIBLE when g++ is 
invoked with -std=c++98 (or any other standard that does not use the GNU 
extensions)?
It can also be seen using gcc with -std=c11 for example, so it's not 
strictly a C vs C++ issue.


The expression used in glibc: 
https://github.com/bminor/glibc/blob/master/include/features.h#L335

The expression used in newlib: 
https://sourceware.org/git/?p=newlib-cygwin.git;a=blob;f=newlib/libc/include/sys/features.h;h=6a925c87e9ec333fc51538201aa7b52d24b3ca5b;hb=refs/heads/main#l148


Kind regards,
Torbjörn
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.