Commit 12967872 by Jakub Jelinek Committed by Jakub Jelinek

re PR bootstrap/47736 (libquadmath build broken with pre-2.10 glibc)

	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
parent ce2ab24c
2011-02-14 Jakub Jelinek <jakub@redhat.com> 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. * configure.ac (HAVE_HIDDEN_VISIBILITY): Test with -Werror in CFLAGS.
* printf/printf_fp.c: Don't include <alloca.h>. * printf/printf_fp.c: Don't include <alloca.h>.
* printf/quadmath-printf.h (_itoa): Redefine to __quadmath_itoa. * printf/quadmath-printf.h (_itoa): Redefine to __quadmath_itoa.
......
...@@ -12555,6 +12555,7 @@ main () ...@@ -12555,6 +12555,7 @@ main ()
int pa_flt128 = register_printf_type (flt128_va); int pa_flt128 = register_printf_type (flt128_va);
int mod_Q = register_printf_modifier (L"Q"); int mod_Q = register_printf_modifier (L"Q");
int res = register_printf_specifier ('f', flt128_printf_fp, flt128_ais); int res = register_printf_specifier ('f', flt128_printf_fp, flt128_ais);
struct printf_info info = { .user = -1 };
; ;
return 0; return 0;
......
...@@ -241,6 +241,7 @@ extern int flt128_printf_fp (FILE *, const struct printf_info *, const void *con ...@@ -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 pa_flt128 = register_printf_type (flt128_va);
int mod_Q = register_printf_modifier (L"Q"); int mod_Q = register_printf_modifier (L"Q");
int res = register_printf_specifier ('f', flt128_printf_fp, flt128_ais); 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]) [quadmath_printf_hooks=yes],[quadmath_printf_hooks=no])
AC_MSG_RESULT($quadmath_printf_hooks) AC_MSG_RESULT($quadmath_printf_hooks)
......
...@@ -121,15 +121,16 @@ quadmath_snprintf (char *str, size_t size, const char *format, ...) ...@@ -121,15 +121,16 @@ quadmath_snprintf (char *str, size_t size, const char *format, ...)
return -1; return -1;
/* Clear information structure. */ /* Clear information structure. */
info.alt = 0; memset (&info, '\0', sizeof info);
/* info.alt = 0;
info.space = 0; info.space = 0;
info.left = 0; info.left = 0;
info.showsign = 0; info.showsign = 0;
info.group = 0; info.group = 0;
info.i18n = 0; info.i18n = 0;
info.extra = 0; info.extra = 0; */
info.pad = ' '; info.pad = ' ';
info.wide = 0; /* info.wide = 0; */
/* Check for spec modifiers. */ /* Check for spec modifiers. */
do do
...@@ -180,7 +181,7 @@ quadmath_snprintf (char *str, size_t size, const char *format, ...) ...@@ -180,7 +181,7 @@ quadmath_snprintf (char *str, size_t size, const char *format, ...)
va_start (ap, format); va_start (ap, format);
/* Get the field width. */ /* Get the field width. */
info.width = 0; /* info.width = 0; */
if (*format == '*') if (*format == '*')
{ {
/* The field width is given in an argument. /* The field width is given in an argument.
...@@ -213,11 +214,11 @@ quadmath_snprintf (char *str, size_t size, const char *format, ...) ...@@ -213,11 +214,11 @@ quadmath_snprintf (char *str, size_t size, const char *format, ...)
} }
/* Check for type modifiers. */ /* Check for type modifiers. */
info.is_long_double = 0; /* info.is_long_double = 0;
info.is_short = 0; info.is_short = 0;
info.is_long = 0; info.is_long = 0;
info.is_char = 0; info.is_char = 0;
info.user = -1; info.user = 0; */
/* We require Q modifier. */ /* We require Q modifier. */
if (*format++ != 'Q') if (*format++ != 'Q')
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment