Re: Mismatch between newlib and glibc regarding fileno
Andrew Pinski <[email protected]>
| Newsgroups | gmane.comp.lib.newlib |
|---|---|
| Message-ID | <CA+=Sn1n+B6shWE8viXguWdSj=CsVOuEGfv0YASCpb-4NAem=0w@mail.gmail.com> |
On Fri, Feb 9, 2024 at 8:30 AM Torbjorn SVENSSON <[email protected]> wrote: > > 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. Note the testcase failure is recorded as https://gcc.gnu.org/PR113278 . > > 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. That is also due to _GNU_SOURCE being defined for C++ for Linux/g++. I think this is just a GCC testcase issue rather than something needing to be fixed in newlib even. Thanks, Andrew > > > 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