[Bug analyzer/107396] [13 regression] new test case gcc.dg/analyzer/pipe-glibc.c in r13-3466-g792f039fc37faa fails with excess errors
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107396 Jakub Jelinek changed: What|Removed |Added Resolution|--- |FIXED Status|ASSIGNED|RESOLVED --- Comment #7 from Jakub Jelinek --- Fixed.
[Bug analyzer/107396] [13 regression] new test case gcc.dg/analyzer/pipe-glibc.c in r13-3466-g792f039fc37faa fails with excess errors
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107396 --- Comment #6 from CVS Commits --- The master branch has been updated by Jakub Jelinek : https://gcc.gnu.org/g:92f02e754ca2fbcd56dbd7b3949147d50bab99a0 commit r13-6961-g92f02e754ca2fbcd56dbd7b3949147d50bab99a0 Author: Jakub Jelinek 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 : 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 PR analyzer/107396 * gcc.dg/analyzer/pipe-glibc.c (read_from_pie, write_to_pipe): Exit if fdopen returns NULL.
[Bug analyzer/107396] [13 regression] new test case gcc.dg/analyzer/pipe-glibc.c in r13-3466-g792f039fc37faa fails with excess errors
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107396 Jakub Jelinek changed: What|Removed |Added CC||jakub at gcc dot gnu.org --- Comment #5 from Jakub Jelinek --- I think the difference is https://sourceware.org/git/?p=glibc.git;a=commit;h=c1760eaf3b575ad174fd88b252fd16bd525fa818 which added __attribute__((malloc)) to fdopen among other things. It is strange that it is reported just for fwrite and not for fgetc in the other function though, both access potentially NULL stream. Probably because {fwrite,putc,fputc,fputs}{,_unlocked} and printf family are builtins and have nonnull attribute for the FILE * argument, but fgetc or fread is not and glibc doesn't use nonnull for those. Shall we than use 2023-03-29 Jakub Jelinek PR analyzer/107396 * gcc.dg/analyzer/pipe-glibc.c (read_from_pie, write_to_pipe): Exit if fdopen returns NULL. --- gcc/testsuite/gcc.dg/analyzer/pipe-glibc.c.jj 2022-10-25 10:37:28.106531709 +0200 +++ gcc/testsuite/gcc.dg/analyzer/pipe-glibc.c 2023-03-29 19:14:48.789766475 +0200 @@ -13,6 +13,8 @@ read_from_pipe (int file) FILE *stream; int c; stream = fdopen (file, "r"); + if (stream == NULL) +exit (EXIT_FAILURE); while ((c = fgetc (stream)) != EOF) putchar (c); fclose (stream); @@ -25,6 +27,8 @@ write_to_pipe (int file) { FILE *stream; stream = fdopen (file, "w"); + if (stream == NULL) +exit (EXIT_FAILURE); fprintf (stream, "hello, world!\n"); fprintf (stream, "goodbye, world!\n"); fclose (stream); because this warning is not what the test wants to verify?
[Bug analyzer/107396] [13 regression] new test case gcc.dg/analyzer/pipe-glibc.c in r13-3466-g792f039fc37faa fails with excess errors
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107396 --- Comment #4 from dave.anglin at bell dot net --- I currently have 2.36.
[Bug analyzer/107396] [13 regression] new test case gcc.dg/analyzer/pipe-glibc.c in r13-3466-g792f039fc37faa fails with excess errors
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107396 --- Comment #3 from Richard Biener --- The diagnostic is correct I think - I wonder why I do not see it on x86_64-linux. It probably depends on the glibc version (I have 2.31)
[Bug analyzer/107396] [13 regression] new test case gcc.dg/analyzer/pipe-glibc.c in r13-3466-g792f039fc37faa fails with excess errors
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107396 --- Comment #2 from Kewen Lin --- *** Bug 108726 has been marked as a duplicate of this bug. ***
[Bug analyzer/107396] [13 regression] new test case gcc.dg/analyzer/pipe-glibc.c in r13-3466-g792f039fc37faa fails with excess errors
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107396 Richard Biener changed: What|Removed |Added Priority|P3 |P1
[Bug analyzer/107396] [13 regression] new test case gcc.dg/analyzer/pipe-glibc.c in r13-3466-g792f039fc37faa fails with excess errors
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107396 Martin Liška changed: What|Removed |Added Last reconfirmed||2022-12-02 Status|UNCONFIRMED |ASSIGNED Build|powerpc64le-linux-gnu |powerpc64le-linux-gnu, ||x86_64-linux-gnu Ever confirmed|0 |1 CC||marxin at gcc dot gnu.org Target|powerpc64le-linux-gnu |powerpc64le-linux-gnu, ||x86_64-linux-gnu Host|powerpc64le-linux-gnu |powerpc64le-linux-gnu, ||x86_64-linux-gnu
[Bug analyzer/107396] [13 regression] new test case gcc.dg/analyzer/pipe-glibc.c in r13-3466-g792f039fc37faa fails with excess errors
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107396 Richard Biener changed: What|Removed |Added Target Milestone|--- |13.0
[Bug analyzer/107396] [13 regression] new test case gcc.dg/analyzer/pipe-glibc.c in r13-3466-g792f039fc37faa fails with excess errors
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107396 --- Comment #1 from Andrew Pinski --- *** Bug 107446 has been marked as a duplicate of this bug. ***