diff mbox series

[30/39] stdio: Disable clang warning on scanf13 test

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

Commit Message

H.J. Lu Dec. 22, 2024, 12:04 a.m. UTC
From: Adhemerval Zanella <adhemerval.zanella@linaro.org>

---
 stdio-common/scanf13.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

Comments

Sam James Dec. 22, 2024, 4:52 a.m. UTC | #1
"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>
diff mbox series

Patch

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;
 }