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
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.