re PR bootstrap/47736 (libquadmath build broken with pre-2.10 glibc)
authorJakub Jelinek <jakub@redhat.com>
Mon, 14 Feb 2011 18:49:07 +0000 (19:49 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Mon, 14 Feb 2011 18:49:07 +0000 (19:49 +0100)
PR bootstrap/47736
* configure.ac (HAVE_PRINTF_HOOKS): Test if printf_info struct has
user field.
* printf/quadmath-printf.c (quadmath_snprintf): Clear whole info
field instead of setting individual fields to 0.  Don't set info.user
to -1.
* configure: Regenerated.

From-SVN: r170147

libquadmath/ChangeLog
libquadmath/configure
libquadmath/configure.ac
libquadmath/printf/quadmath-printf.c

index 45f382ddb0e8de5ab8239fe8e088d57521758912..c451c8fd86b79e9046fdabb781fefb698f5c2da3 100644 (file)
@@ -1,5 +1,13 @@
 2011-02-14  Jakub Jelinek  <jakub@redhat.com>
 
+       PR bootstrap/47736
+       * configure.ac (HAVE_PRINTF_HOOKS): Test if printf_info struct has
+       user field.
+       * printf/quadmath-printf.c (quadmath_snprintf): Clear whole info
+       field instead of setting individual fields to 0.  Don't set info.user
+       to -1.
+       * configure: Regenerated.
+
        * configure.ac (HAVE_HIDDEN_VISIBILITY): Test with -Werror in CFLAGS.
        * printf/printf_fp.c: Don't include <alloca.h>.
        * printf/quadmath-printf.h (_itoa): Redefine to __quadmath_itoa.
index fa209a6d254b23960b6cc93f15a34ef510645c82..47021ff49ec8caa99f1d8f095cf66a7c89330772 100755 (executable)
@@ -12555,6 +12555,7 @@ main ()
 int pa_flt128 = register_printf_type (flt128_va);
 int mod_Q = register_printf_modifier (L"Q");
 int res = register_printf_specifier ('f', flt128_printf_fp, flt128_ais);
+struct printf_info info = { .user = -1 };
 
   ;
   return 0;
index 9a0f4648ad5103e7ea40ce812f19ffb2caf3762f..04a6e4a3076b95ab9906dc9d08e4dddff045ceda 100644 (file)
@@ -241,6 +241,7 @@ extern int flt128_printf_fp (FILE *, const struct printf_info *, const void *con
 int pa_flt128 = register_printf_type (flt128_va);
 int mod_Q = register_printf_modifier (L"Q");
 int res = register_printf_specifier ('f', flt128_printf_fp, flt128_ais);
+struct printf_info info = { .user = -1 };
 ],
 [quadmath_printf_hooks=yes],[quadmath_printf_hooks=no])
 AC_MSG_RESULT($quadmath_printf_hooks)
index 6d17200e3ad9216f61d9440e23b1ca7bbd426204..4f5305edee4cedb2e3a18e74c4584ab43b32d9f0 100644 (file)
@@ -121,15 +121,16 @@ quadmath_snprintf (char *str, size_t size, const char *format, ...)
     return -1;
 
   /* Clear information structure.  */
-  info.alt = 0;
+  memset (&info, '\0', sizeof info);
+  /* info.alt = 0;
   info.space = 0;
   info.left = 0;
   info.showsign = 0;
   info.group = 0;
   info.i18n = 0;
-  info.extra = 0;
+  info.extra = 0; */
   info.pad = ' ';
-  info.wide = 0;
+  /* info.wide = 0; */
 
   /* Check for spec modifiers.  */
   do
@@ -180,7 +181,7 @@ quadmath_snprintf (char *str, size_t size, const char *format, ...)
   va_start (ap, format);
 
   /* Get the field width.  */
-  info.width = 0;
+  /* info.width = 0; */
   if (*format == '*')
     {
       /* The field width is given in an argument.
@@ -213,11 +214,11 @@ quadmath_snprintf (char *str, size_t size, const char *format, ...)
     }
 
   /* Check for type modifiers.  */
-  info.is_long_double = 0;
+  /* info.is_long_double = 0;
   info.is_short = 0;
   info.is_long = 0;
   info.is_char = 0;
-  info.user = -1;
+  info.user = 0; */
 
   /* We require Q modifier.  */
   if (*format++ != 'Q')