https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107396

--- Comment #6 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jakub Jelinek <ja...@gcc.gnu.org>:

https://gcc.gnu.org/g:92f02e754ca2fbcd56dbd7b3949147d50bab99a0

commit r13-6961-g92f02e754ca2fbcd56dbd7b3949147d50bab99a0
Author: Jakub Jelinek <ja...@redhat.com>
Date:   Fri Mar 31 22:48:44 2023 +0200

    testsuite, analyzer: Fix up pipe-glibc.c testcase [PR107396]

    The gcc.dg/analyzer/pipe-glibc.c test FAILs when using recent glibc headers
    and succeeds with older headers.
    The important change is that
   
https://sourceware.org/git/?p=glibc.git;a=commit;h=c1760eaf3b575ad174fd88b252fd16bd525fa818
    in 2021 added __attribute__ ((__malloc__ (fclose, 1))) attribute to fdopen,
    so in write_to_pipe there is an excess warning:
    .../gcc/testsuite/gcc.dg/analyzer/pipe-glibc.c: In function
'write_to_pipe':
    .../gcc/testsuite/gcc.dg/analyzer/pipe-glibc.c:28:3: warning: use of
possibly-NULL 'stream' where non-null expected [CWE-690]
[-Wanalyzer-possible-null-argument]
    .../gcc/testsuite/gcc.dg/analyzer/pipe-glibc.c:27:12: note: (1) this call
could return NULL
    .../gcc/testsuite/gcc.dg/analyzer/pipe-glibc.c:28:3: note: (2) argument 4
('stream') from (1) could be NULL where non-null expected
    <built-in>: note: argument 4 of '__builtin_fwrite' must be non-null
    Strangely, nothing is reported on the read_from_pipe function, seems
    fwrite/fprintf/fputc etc. are builtins in GCC and we mark the FILE *
    arguments as nonnull there on the builtin declarations, while fgetc/fread
    etc. aren't builtins and glibc doesn't mark any of those using nonnull.
    Shall we change that on the glibc side?

    Anyway, because this differs based on glibc version and I think the
    above warning is not the primary intention of the test, I think it is
    best to tweak it so that this warning isn't reported.
    Another option would be avoid using glibc headers and use our own
    declarations, or make sure we add the malloc with fclose attribute
ourselves
    (but fdopen in the libc headers could be a macro, so not sure
    __typeof (fdopen) fdopen __attribute__ ((__malloc__, __malloc__ (fclose,
1)));
    would work).  Or use -Wno-analyzer-possible-null-arguments in
    dg-additional-options?

    2023-03-31  Jakub Jelinek  <ja...@redhat.com>

            PR analyzer/107396
            * gcc.dg/analyzer/pipe-glibc.c (read_from_pie, write_to_pipe): Exit
            if fdopen returns NULL.

Reply via email to