This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Clean up localedata tests printf formats, don't use -Wno-format


The format checking errors Richard saw in
<https://sourceware.org/ml/libc-alpha/2014-12/msg00282.html> pointed
out a genuine problem with formats in some localedata tests, although
-Wno-format should have stopped those errors from appearing.

I don't know why the -Wno-format was ineffective, but the claim "gcc
does not know all the format specifiers we are using here." is long
out of date (since around 2000, at least).  This patch fixes the
localedata tests to use formats and types that match, and removes the
use of -Wno-format.  %Zd is changed to %zu for size_t arguments (not
strictly necessary, but it seems cleanest to use the C99 format unless
specifically testing the old GNU %Z extension), %td is used where
necessary for ptrdiff_t arguments (some tests already used it), %lc
for wint_t and arguments are cast to size_t where needed (when the
macro callers are passing an int constant to say what value is
expected).

Tested for x86_64 and x86.

2014-12-10  Joseph Myers  <joseph@codesourcery.com>

	* tst-mbswcs1.c (show): Use %zu format instead of %Zd.  Cast
	corresponding format argument to size_t.
	* tst-mbswcs2.c (show): Likewise.  Use %td format for ptrdiff_t
	arguments.
	* tst-mbswcs3.c (show): Use %zu format instead of %Zd.  Cast
	corresponding format argument to size_t.
	* tst-mbswcs4.c (show): Likewise.  Use %td format for ptrdiff_t
	arguments.
	* tst-mbswcs5.c (show): Use %zu format instead of %Zd.  Cast
	corresponding format argument to size_t.
	* tst-trans.c (do_test): Use %lc format for wint_t arguments.
	* Makefile (CFLAGS-tst-mbswcs1.c): Remove variable.
	(CFLAGS-tst-mbswcs2.c): Likewise.
	(CFLAGS-tst-mbswcs3.c): Likewise.
	(CFLAGS-tst-mbswcs4.c): Likewise.
	(CFLAGS-tst-mbswcs5.c): Likewise.
	(CFLAGS-tst-trans.c): Likewise

diff --git a/localedata/Makefile b/localedata/Makefile
index c2c62a2..0826b36 100644
--- a/localedata/Makefile
+++ b/localedata/Makefile
@@ -126,14 +126,6 @@ $(inst_i18ndir)/charmaps/%.gz: charmaps/% $(+force)
 # Install the locale source files in the appropriate directory.
 $(inst_i18ndir)/locales/%: locales/% $(+force); $(do-install)
 
-# gcc does not know all the format specifiers we are using here.
-CFLAGS-tst-mbswcs1.c = -Wno-format
-CFLAGS-tst-mbswcs2.c = -Wno-format
-CFLAGS-tst-mbswcs3.c = -Wno-format
-CFLAGS-tst-mbswcs4.c = -Wno-format
-CFLAGS-tst-mbswcs5.c = -Wno-format
-CFLAGS-tst-trans.c = -Wno-format
-
 
 ifeq ($(run-built-tests),yes)
 generated-dirs += $(LOCALES)
diff --git a/localedata/tst-mbswcs1.c b/localedata/tst-mbswcs1.c
index 1404829..15691db 100644
--- a/localedata/tst-mbswcs1.c
+++ b/localedata/tst-mbswcs1.c
@@ -24,11 +24,12 @@
 
 #define show(expr, nexp, wcexp) \
   n = expr;								  \
-  printf (#expr " -> %Zd", n);						  \
+  printf (#expr " -> %zu", n);						  \
   printf (", wc = %lu", (unsigned long int) wc);			  \
   if (n != (size_t) nexp || wc != wcexp)				  \
     {									  \
-      printf (", expected %Zd and %lu", nexp, (unsigned long int) wcexp); \
+      printf (", expected %zu and %lu", (size_t) nexp,			  \
+	      (unsigned long int) wcexp);				  \
       result = 1;							  \
     }									  \
   putc ('\n', stdout)
diff --git a/localedata/tst-mbswcs2.c b/localedata/tst-mbswcs2.c
index 9cd95d6..d0f502c 100644
--- a/localedata/tst-mbswcs2.c
+++ b/localedata/tst-mbswcs2.c
@@ -24,12 +24,12 @@
 
 #define show(expr, nexp, wcexp, end) \
   n = expr;								\
-  printf (#expr " -> %Zd", n);						\
-  printf (", wc = %lu, src = buf+%d", (unsigned long int) wc,		\
+  printf (#expr " -> %zu", n);						\
+  printf (", wc = %lu, src = buf+%td", (unsigned long int) wc,		\
 	  src - (const char *) buf);					\
   if (n != (size_t) nexp || wc != wcexp || src != (const char *) (end))	\
     {									\
-      printf (", expected %Zd and %lu and buf+%d", nexp,		\
+      printf (", expected %zu and %lu and buf+%td", (size_t) nexp,	\
 	      (unsigned long int) wcexp, (end) - buf);			\
       result = 1;							\
     }									\
diff --git a/localedata/tst-mbswcs3.c b/localedata/tst-mbswcs3.c
index a068541..ef18a98 100644
--- a/localedata/tst-mbswcs3.c
+++ b/localedata/tst-mbswcs3.c
@@ -25,13 +25,13 @@
 #define show(expr, nexp, srcexp, bufexp) \
   {									\
     size_t res = expr;							\
-    printf (#expr " -> %Zd", res);					\
+    printf (#expr " -> %zu", res);					\
     dst += res;								\
     printf (", src = srcbuf+%td, dst = buf+%td",			\
 	    src - srcbuf, dst - (char *) buf);				\
     if (res != nexp || src != (srcexp) || dst != (char *) (bufexp))	\
       {									\
-	printf (", expected %Zd and srcbuf+%td and buf+%td", nexp,	\
+	printf (", expected %zu and srcbuf+%td and buf+%td", (size_t) nexp, \
 		(srcexp) - srcbuf, (bufexp) - (unsigned char *) buf);	\
 	result = 1;							\
       }									\
diff --git a/localedata/tst-mbswcs4.c b/localedata/tst-mbswcs4.c
index a4fe60d..83c5eac 100644
--- a/localedata/tst-mbswcs4.c
+++ b/localedata/tst-mbswcs4.c
@@ -23,12 +23,12 @@
 
 #define show(expr, nexp, wcexp, end) \
   n = expr;								\
-  printf (#expr " -> %Zd", n);						\
-  printf (", wc = %lu, src = buf+%d", (unsigned long int) wc,		\
+  printf (#expr " -> %zu", n);						\
+  printf (", wc = %lu, src = buf+%td", (unsigned long int) wc,		\
 	  src - (const char *) buf);					\
   if (n != (size_t) nexp || wc != wcexp || src != (const char *) (end))	\
     {									\
-      printf (", expected %Zd and %lu and buf+%d", nexp,		\
+      printf (", expected %zu and %lu and buf+%td", (size_t) nexp,	\
 	      (unsigned long int) wcexp, (end) - buf);			\
       result = 1;							\
     }									\
diff --git a/localedata/tst-mbswcs5.c b/localedata/tst-mbswcs5.c
index c44f12a..1ff56f3 100644
--- a/localedata/tst-mbswcs5.c
+++ b/localedata/tst-mbswcs5.c
@@ -25,12 +25,12 @@
 #define show(expr, nexp, bufexp) \
   {									\
     size_t res = expr;							\
-    printf (#expr " -> %Zd", res);					\
+    printf (#expr " -> %zu", res);					\
     dst += res;								\
     printf (", dst = buf+%td", dst - (char *) buf);			\
     if (res != nexp || dst != (char *) (bufexp))			\
       {									\
-	printf (", expected %Zd and buf+%td", nexp,			\
+	printf (", expected %zu and buf+%td", (size_t) nexp,		\
 		(bufexp) - (unsigned char *) buf);			\
 	result = 1;							\
       }									\
diff --git a/localedata/tst-trans.c b/localedata/tst-trans.c
index 0b0be83..616c896 100644
--- a/localedata/tst-trans.c
+++ b/localedata/tst-trans.c
@@ -44,12 +44,12 @@ do_test (void)
     }
 
   wch = towctrans (L'A', t);
-  printf ("towctrans (L'A', t) = %c\n", wch);
+  printf ("towctrans (L'A', t) = %lc\n", wch);
   if (wch != L'B')
     errors = 1;
 
   wch = towctrans (L'B', t);
-  printf ("towctrans (L'B', t) = %c\n", wch);
+  printf ("towctrans (L'B', t) = %lc\n", wch);
   if (wch != L'C')
     errors = 1;
 

-- 
Joseph S. Myers
joseph@codesourcery.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]