Message ID | 20241222000509.2205895-31-hjl.tools@gmail.com |
---|---|
State | New |
Headers | show |
Series | [01/39] conform: Use -dD instead of -dN on compiler invocation | expand |
"H.J. Lu" <hjl.tools@gmail.com> writes: > From: Adhemerval Zanella <adhemerval.zanella@linaro.org> > > --- > stdio-common/scanf13.c | 15 +++++++++++++++ > 1 file changed, 15 insertions(+) > > diff --git a/stdio-common/scanf13.c b/stdio-common/scanf13.c > index 60aa62a26f..6f3ddfa1e0 100644 > --- a/stdio-common/scanf13.c > +++ b/stdio-common/scanf13.c > @@ -3,6 +3,7 @@ > #include <stdlib.h> > #include <string.h> > #include <wchar.h> > +#include <libc-diag.h> > > int > main (void) > @@ -20,6 +21,11 @@ main (void) > } while (0) > > setlocale (LC_ALL, "de_DE.UTF-8"); > + /* TODO: explain why clang need these. */ > + DIAG_PUSH_NEEDS_COMMENT_CLANG; > + DIAG_IGNORE_NEEDS_COMMENT_CLANG (13, "-Wformat-invalid-specifier"); > + DIAG_IGNORE_NEEDS_COMMENT_CLANG (13, "-Wformat-extra-args"); > + DIAG_IGNORE_NEEDS_COMMENT_CLANG (13, "-Wfortify-source"); > if (sscanf ("A \xc3\x84-\t\t\xc3\x84-abcdefbcd\t\xc3\x84-B", > "A%ms%10ms%4m[bcd]%4mcB", &sp1, &sp2, &sp3, &sp4) != 4) > FAIL (); > @@ -57,6 +63,7 @@ main (void) > FAIL (); > free (lsp4); > } > + DIAG_POP_NEEDS_COMMENT_CLANG; > > memset (buf, '/', sizeof (buf)); > buf[0] = '\t'; > @@ -86,6 +93,9 @@ main (void) > FAIL (); > free (sp2); > } > + /* TODO: explain why clang need these. */ > + DIAG_PUSH_NEEDS_COMMENT_CLANG; > + DIAG_IGNORE_NEEDS_COMMENT_CLANG (13, "-Wfortify-source"); > if (sscanf (buf, "%2048ms%mc", &sp3, &sp4) != 2) > FAIL (); > else > @@ -126,6 +136,7 @@ main (void) > FAIL (); > free (sp4); > } > + DIAG_POP_NEEDS_COMMENT_CLANG; > if (sscanf (buf, "%mS%mC", &lsp1, &lsp2) != 2) > FAIL (); > else > @@ -142,6 +153,9 @@ main (void) > FAIL (); > free (lsp2); > } > + DIAG_PUSH_NEEDS_COMMENT_CLANG; > + DIAG_IGNORE_NEEDS_COMMENT_CLANG (13, "-Wformat-invalid-specifier"); > + DIAG_IGNORE_NEEDS_COMMENT_CLANG (13, "-Wformat-extra-args"); > if (sscanf (buf, "%2048mls%mlc", &lsp3, &lsp4) != 2) > FAIL (); > else > @@ -182,6 +196,7 @@ main (void) > FAIL (); > free (lsp4); > } > + DIAG_POP_NEEDS_COMMENT_CLANG; > > return result; > } For -Wfortify-source, I'd really prefer suppressing this in the Makefile because there's a strong chance GCC will end up warning in future (or that we're already suppressing it and we're duplicating it for each compiler). (Arguably, if it isn't warning, it's a GCC bug, and if it is warning and it shouldn't be, it's a Clang bug, too.) But you left a TODO and I think it's fine as long as we don't push it with doing these too much. Reviewed-by: Sam James <sam@gentoo.org>
On Sun, Dec 22, 2024 at 12:52 PM Sam James <sam@gentoo.org> wrote: > > "H.J. Lu" <hjl.tools@gmail.com> writes: > > > From: Adhemerval Zanella <adhemerval.zanella@linaro.org> > > > > --- > > stdio-common/scanf13.c | 15 +++++++++++++++ > > 1 file changed, 15 insertions(+) > > > > diff --git a/stdio-common/scanf13.c b/stdio-common/scanf13.c > > index 60aa62a26f..6f3ddfa1e0 100644 > > --- a/stdio-common/scanf13.c > > +++ b/stdio-common/scanf13.c > > @@ -3,6 +3,7 @@ > > #include <stdlib.h> > > #include <string.h> > > #include <wchar.h> > > +#include <libc-diag.h> > > > > int > > main (void) > > @@ -20,6 +21,11 @@ main (void) > > } while (0) > > > > setlocale (LC_ALL, "de_DE.UTF-8"); > > + /* TODO: explain why clang need these. */ > > + DIAG_PUSH_NEEDS_COMMENT_CLANG; > > + DIAG_IGNORE_NEEDS_COMMENT_CLANG (13, "-Wformat-invalid-specifier"); > > + DIAG_IGNORE_NEEDS_COMMENT_CLANG (13, "-Wformat-extra-args"); > > + DIAG_IGNORE_NEEDS_COMMENT_CLANG (13, "-Wfortify-source"); > > if (sscanf ("A \xc3\x84-\t\t\xc3\x84-abcdefbcd\t\xc3\x84-B", > > "A%ms%10ms%4m[bcd]%4mcB", &sp1, &sp2, &sp3, &sp4) != 4) > > FAIL (); > > @@ -57,6 +63,7 @@ main (void) > > FAIL (); > > free (lsp4); > > } > > + DIAG_POP_NEEDS_COMMENT_CLANG; > > > > memset (buf, '/', sizeof (buf)); > > buf[0] = '\t'; > > @@ -86,6 +93,9 @@ main (void) > > FAIL (); > > free (sp2); > > } > > + /* TODO: explain why clang need these. */ > > + DIAG_PUSH_NEEDS_COMMENT_CLANG; > > + DIAG_IGNORE_NEEDS_COMMENT_CLANG (13, "-Wfortify-source"); > > if (sscanf (buf, "%2048ms%mc", &sp3, &sp4) != 2) > > FAIL (); > > else > > @@ -126,6 +136,7 @@ main (void) > > FAIL (); > > free (sp4); > > } > > + DIAG_POP_NEEDS_COMMENT_CLANG; > > if (sscanf (buf, "%mS%mC", &lsp1, &lsp2) != 2) > > FAIL (); > > else > > @@ -142,6 +153,9 @@ main (void) > > FAIL (); > > free (lsp2); > > } > > + DIAG_PUSH_NEEDS_COMMENT_CLANG; > > + DIAG_IGNORE_NEEDS_COMMENT_CLANG (13, "-Wformat-invalid-specifier"); > > + DIAG_IGNORE_NEEDS_COMMENT_CLANG (13, "-Wformat-extra-args"); > > if (sscanf (buf, "%2048mls%mlc", &lsp3, &lsp4) != 2) > > FAIL (); > > else > > @@ -182,6 +196,7 @@ main (void) > > FAIL (); > > free (lsp4); > > } > > + DIAG_POP_NEEDS_COMMENT_CLANG; > > > > return result; > > } > > For -Wfortify-source, I'd really prefer suppressing this in the Makefile > because there's a strong chance GCC will end up warning in future (or > that we're already suppressing it and we're duplicating it for each > compiler). Will send out the v2 with -Wno-fortify-source in Makefile. > (Arguably, if it isn't warning, it's a GCC bug, and if it is warning and > it shouldn't be, it's a Clang bug, too.) > > But you left a TODO and I think it's fine as long as we don't push it > with doing these too much. > > Reviewed-by: Sam James <sam@gentoo.org>
diff --git a/stdio-common/scanf13.c b/stdio-common/scanf13.c index 60aa62a26f..6f3ddfa1e0 100644 --- a/stdio-common/scanf13.c +++ b/stdio-common/scanf13.c @@ -3,6 +3,7 @@ #include <stdlib.h> #include <string.h> #include <wchar.h> +#include <libc-diag.h> int main (void) @@ -20,6 +21,11 @@ main (void) } while (0) setlocale (LC_ALL, "de_DE.UTF-8"); + /* TODO: explain why clang need these. */ + DIAG_PUSH_NEEDS_COMMENT_CLANG; + DIAG_IGNORE_NEEDS_COMMENT_CLANG (13, "-Wformat-invalid-specifier"); + DIAG_IGNORE_NEEDS_COMMENT_CLANG (13, "-Wformat-extra-args"); + DIAG_IGNORE_NEEDS_COMMENT_CLANG (13, "-Wfortify-source"); if (sscanf ("A \xc3\x84-\t\t\xc3\x84-abcdefbcd\t\xc3\x84-B", "A%ms%10ms%4m[bcd]%4mcB", &sp1, &sp2, &sp3, &sp4) != 4) FAIL (); @@ -57,6 +63,7 @@ main (void) FAIL (); free (lsp4); } + DIAG_POP_NEEDS_COMMENT_CLANG; memset (buf, '/', sizeof (buf)); buf[0] = '\t'; @@ -86,6 +93,9 @@ main (void) FAIL (); free (sp2); } + /* TODO: explain why clang need these. */ + DIAG_PUSH_NEEDS_COMMENT_CLANG; + DIAG_IGNORE_NEEDS_COMMENT_CLANG (13, "-Wfortify-source"); if (sscanf (buf, "%2048ms%mc", &sp3, &sp4) != 2) FAIL (); else @@ -126,6 +136,7 @@ main (void) FAIL (); free (sp4); } + DIAG_POP_NEEDS_COMMENT_CLANG; if (sscanf (buf, "%mS%mC", &lsp1, &lsp2) != 2) FAIL (); else @@ -142,6 +153,9 @@ main (void) FAIL (); free (lsp2); } + DIAG_PUSH_NEEDS_COMMENT_CLANG; + DIAG_IGNORE_NEEDS_COMMENT_CLANG (13, "-Wformat-invalid-specifier"); + DIAG_IGNORE_NEEDS_COMMENT_CLANG (13, "-Wformat-extra-args"); if (sscanf (buf, "%2048mls%mlc", &lsp3, &lsp4) != 2) FAIL (); else @@ -182,6 +196,7 @@ main (void) FAIL (); free (lsp4); } + DIAG_POP_NEEDS_COMMENT_CLANG; return result; }
From: Adhemerval Zanella <adhemerval.zanella@linaro.org> --- stdio-common/scanf13.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+)