summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruno Haible <bruno@clisp.org>2011-10-09 13:06:52 +0200
committerBruno Haible <bruno@clisp.org>2011-10-09 13:07:02 +0200
commit74fa641469043b5eafcc038cc6050ec0a332fbf1 (patch)
treeaa0020ea781bc63f5fa94c46d19892edc44381c3
parent1b42459c6b378bdcca609417e2ae4b686556be1a (diff)
downloadgnulib-74fa641469043b5eafcc038cc6050ec0a332fbf1.tar.gz
*printf: Fix for platforms where 'long double' == 'double'.
* m4/printf.m4 (gl_PRINTF_INFINITE_LONG_DOUBLE): Require gl_LONG_DOUBLE_VS_DOUBLE. Don't blindly assume 80-bit 'long double'. * modules/dprintf-posix (Files): Add m4/math_h.m4. * modules/fprintf-posix (Files): Likewise. * modules/obstack-printf-posix (Files): Likewise. * modules/snprintf-posix (Files): Likewise. * modules/sprintf-posix (Files): Likewise. * modules/vasnprintf (Files): Likewise. * modules/vasnprintf-posix (Files): Likewise. * modules/vasprintf-posix (Files): Likewise. * modules/vdprintf-posix (Files): Likewise. * modules/vfprintf-posix (Files): Likewise. * modules/vsnprintf-posix (Files): Likewise. * modules/vsprintf-posix (Files): Likewise. * modules/unistdio/u8-vasnprintf (Files): Likewise. * modules/unistdio/u8-u8-vasnprintf (Files): Likewise. * modules/unistdio/u16-vasnprintf (Files): Likewise. * modules/unistdio/u16-u16-vasnprintf (Files): Likewise. * modules/unistdio/u32-vasnprintf (Files): Likewise. * modules/unistdio/u32-u32-vasnprintf (Files): Likewise. * modules/unistdio/ulc-vasnprintf (Files): Likewise.
-rw-r--r--ChangeLog23
-rw-r--r--m4/printf.m45
-rw-r--r--modules/dprintf-posix1
-rw-r--r--modules/fprintf-posix1
-rw-r--r--modules/obstack-printf-posix1
-rw-r--r--modules/snprintf-posix1
-rw-r--r--modules/sprintf-posix1
-rw-r--r--modules/unistdio/u16-u16-vasnprintf1
-rw-r--r--modules/unistdio/u16-vasnprintf1
-rw-r--r--modules/unistdio/u32-u32-vasnprintf1
-rw-r--r--modules/unistdio/u32-vasnprintf1
-rw-r--r--modules/unistdio/u8-u8-vasnprintf1
-rw-r--r--modules/unistdio/u8-vasnprintf1
-rw-r--r--modules/unistdio/ulc-vasnprintf1
-rw-r--r--modules/vasnprintf1
-rw-r--r--modules/vasnprintf-posix1
-rw-r--r--modules/vasprintf-posix1
-rw-r--r--modules/vdprintf-posix1
-rw-r--r--modules/vfprintf-posix1
-rw-r--r--modules/vsnprintf-posix1
-rw-r--r--modules/vsprintf-posix1
21 files changed, 45 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 52c523c5cf..200a877154 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,28 @@
2011-10-09 Bruno Haible <bruno@clisp.org>
+ *printf: Fix for platforms where 'long double' == 'double'.
+ * m4/printf.m4 (gl_PRINTF_INFINITE_LONG_DOUBLE): Require
+ gl_LONG_DOUBLE_VS_DOUBLE. Don't blindly assume 80-bit 'long double'.
+ * modules/dprintf-posix (Files): Add m4/math_h.m4.
+ * modules/fprintf-posix (Files): Likewise.
+ * modules/obstack-printf-posix (Files): Likewise.
+ * modules/snprintf-posix (Files): Likewise.
+ * modules/sprintf-posix (Files): Likewise.
+ * modules/vasnprintf (Files): Likewise.
+ * modules/vasnprintf-posix (Files): Likewise.
+ * modules/vasprintf-posix (Files): Likewise.
+ * modules/vdprintf-posix (Files): Likewise.
+ * modules/vfprintf-posix (Files): Likewise.
+ * modules/vsnprintf-posix (Files): Likewise.
+ * modules/vsprintf-posix (Files): Likewise.
+ * modules/unistdio/u8-vasnprintf (Files): Likewise.
+ * modules/unistdio/u8-u8-vasnprintf (Files): Likewise.
+ * modules/unistdio/u16-vasnprintf (Files): Likewise.
+ * modules/unistdio/u16-u16-vasnprintf (Files): Likewise.
+ * modules/unistdio/u32-vasnprintf (Files): Likewise.
+ * modules/unistdio/u32-u32-vasnprintf (Files): Likewise.
+ * modules/unistdio/ulc-vasnprintf (Files): Likewise.
+
isnanl[-nolibm]: Fix for platforms where 'long double' == 'double'.
* lib/isnan.c (rpl_isnanl): Don't blindly assume 80-bit 'long double'.
* m4/isnanl.m4 (gl_PREREQ_ISNANL): Require gl_LONG_DOUBLE_VS_DOUBLE.
diff --git a/m4/printf.m4 b/m4/printf.m4
index d046c11123..0814c91fec 100644
--- a/m4/printf.m4
+++ b/m4/printf.m4
@@ -1,4 +1,4 @@
-# printf.m4 serial 45
+# printf.m4 serial 46
dnl Copyright (C) 2003, 2007-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -251,6 +251,7 @@ AC_DEFUN([gl_PRINTF_INFINITE_LONG_DOUBLE],
AC_REQUIRE([gl_PRINTF_LONG_DOUBLE])
AC_REQUIRE([AC_PROG_CC])
AC_REQUIRE([gl_BIGENDIAN])
+ AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
dnl The user can set or unset the variable gl_printf_safe to indicate
dnl that he wishes a safe handling of non-IEEE-754 'long double' values.
@@ -321,7 +322,7 @@ int main ()
if (sprintf (buf, "%Lg", zeroL / zeroL) < 0
|| !strisnan (buf, 0, strlen (buf)))
result |= 1;
-#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_))
+#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
/* Representation of an 80-bit 'long double' as an initializer for a sequence
of 'unsigned int' words. */
# ifdef WORDS_BIGENDIAN
diff --git a/modules/dprintf-posix b/modules/dprintf-posix
index 2423d61628..c3b257b11a 100644
--- a/modules/dprintf-posix
+++ b/modules/dprintf-posix
@@ -11,6 +11,7 @@ that module occurs among the main modules in lib/.
Files:
m4/dprintf-posix.m4
m4/printf.m4
+m4/math_h.m4
Depends-on:
dprintf
diff --git a/modules/fprintf-posix b/modules/fprintf-posix
index 47e76c5c50..e7bb211e29 100644
--- a/modules/fprintf-posix
+++ b/modules/fprintf-posix
@@ -11,6 +11,7 @@ Files:
lib/fprintf.c
m4/fprintf-posix.m4
m4/printf.m4
+m4/math_h.m4
Depends-on:
stdio
diff --git a/modules/obstack-printf-posix b/modules/obstack-printf-posix
index df56087771..c2036a8479 100644
--- a/modules/obstack-printf-posix
+++ b/modules/obstack-printf-posix
@@ -10,6 +10,7 @@ that module occurs among the main modules in lib/.
Files:
m4/obstack-printf.m4
m4/obstack-printf-posix.m4
+m4/math_h.m4
lib/obstack_printf.c
Depends-on:
diff --git a/modules/snprintf-posix b/modules/snprintf-posix
index 874ba5a46f..78c12a3bfc 100644
--- a/modules/snprintf-posix
+++ b/modules/snprintf-posix
@@ -11,6 +11,7 @@ that module occurs among the main modules in lib/.
Files:
m4/snprintf-posix.m4
m4/printf.m4
+m4/math_h.m4
Depends-on:
snprintf
diff --git a/modules/sprintf-posix b/modules/sprintf-posix
index cdcc8aa510..c8bc2a3c2d 100644
--- a/modules/sprintf-posix
+++ b/modules/sprintf-posix
@@ -11,6 +11,7 @@ Files:
lib/sprintf.c
m4/sprintf-posix.m4
m4/printf.m4
+m4/math_h.m4
Depends-on:
stdio
diff --git a/modules/unistdio/u16-u16-vasnprintf b/modules/unistdio/u16-u16-vasnprintf
index c32166961d..d9e37e23ad 100644
--- a/modules/unistdio/u16-u16-vasnprintf
+++ b/modules/unistdio/u16-u16-vasnprintf
@@ -6,6 +6,7 @@ lib/unistdio/u16-u16-vasnprintf.c
lib/vasnprintf.c
m4/vasnprintf.m4
m4/printf.m4
+m4/math_h.m4
m4/wchar_t.m4
m4/wint_t.m4
m4/longlong.m4
diff --git a/modules/unistdio/u16-vasnprintf b/modules/unistdio/u16-vasnprintf
index a382ce47b5..21d19bd0ff 100644
--- a/modules/unistdio/u16-vasnprintf
+++ b/modules/unistdio/u16-vasnprintf
@@ -6,6 +6,7 @@ lib/unistdio/u16-vasnprintf.c
lib/vasnprintf.c
m4/vasnprintf.m4
m4/printf.m4
+m4/math_h.m4
m4/wchar_t.m4
m4/wint_t.m4
m4/longlong.m4
diff --git a/modules/unistdio/u32-u32-vasnprintf b/modules/unistdio/u32-u32-vasnprintf
index 800c61e6f2..c239248ad7 100644
--- a/modules/unistdio/u32-u32-vasnprintf
+++ b/modules/unistdio/u32-u32-vasnprintf
@@ -6,6 +6,7 @@ lib/unistdio/u32-u32-vasnprintf.c
lib/vasnprintf.c
m4/vasnprintf.m4
m4/printf.m4
+m4/math_h.m4
m4/wchar_t.m4
m4/wint_t.m4
m4/longlong.m4
diff --git a/modules/unistdio/u32-vasnprintf b/modules/unistdio/u32-vasnprintf
index fe71cb2b72..d73ddc8c30 100644
--- a/modules/unistdio/u32-vasnprintf
+++ b/modules/unistdio/u32-vasnprintf
@@ -6,6 +6,7 @@ lib/unistdio/u32-vasnprintf.c
lib/vasnprintf.c
m4/vasnprintf.m4
m4/printf.m4
+m4/math_h.m4
m4/wchar_t.m4
m4/wint_t.m4
m4/longlong.m4
diff --git a/modules/unistdio/u8-u8-vasnprintf b/modules/unistdio/u8-u8-vasnprintf
index 5e9552169d..5cc91503e1 100644
--- a/modules/unistdio/u8-u8-vasnprintf
+++ b/modules/unistdio/u8-u8-vasnprintf
@@ -6,6 +6,7 @@ lib/unistdio/u8-u8-vasnprintf.c
lib/vasnprintf.c
m4/vasnprintf.m4
m4/printf.m4
+m4/math_h.m4
m4/wchar_t.m4
m4/wint_t.m4
m4/longlong.m4
diff --git a/modules/unistdio/u8-vasnprintf b/modules/unistdio/u8-vasnprintf
index 3aaf935c8a..049e5c1f8e 100644
--- a/modules/unistdio/u8-vasnprintf
+++ b/modules/unistdio/u8-vasnprintf
@@ -6,6 +6,7 @@ lib/unistdio/u8-vasnprintf.c
lib/vasnprintf.c
m4/vasnprintf.m4
m4/printf.m4
+m4/math_h.m4
m4/wchar_t.m4
m4/wint_t.m4
m4/longlong.m4
diff --git a/modules/unistdio/ulc-vasnprintf b/modules/unistdio/ulc-vasnprintf
index 8228a0678e..c3563c5e32 100644
--- a/modules/unistdio/ulc-vasnprintf
+++ b/modules/unistdio/ulc-vasnprintf
@@ -6,6 +6,7 @@ lib/unistdio/ulc-vasnprintf.c
lib/vasnprintf.c
m4/vasnprintf.m4
m4/printf.m4
+m4/math_h.m4
m4/wchar_t.m4
m4/wint_t.m4
m4/longlong.m4
diff --git a/modules/vasnprintf b/modules/vasnprintf
index 35f5f3a307..da6b28056c 100644
--- a/modules/vasnprintf
+++ b/modules/vasnprintf
@@ -18,6 +18,7 @@ m4/stdint_h.m4
m4/inttypes_h.m4
m4/vasnprintf.m4
m4/printf.m4
+m4/math_h.m4
Depends-on:
alloca-opt
diff --git a/modules/vasnprintf-posix b/modules/vasnprintf-posix
index 6a6177abb9..090b1d2441 100644
--- a/modules/vasnprintf-posix
+++ b/modules/vasnprintf-posix
@@ -11,6 +11,7 @@ that module occurs among the main modules in lib/.
Files:
m4/vasnprintf-posix.m4
m4/printf.m4
+m4/math_h.m4
Depends-on:
vasnprintf
diff --git a/modules/vasprintf-posix b/modules/vasprintf-posix
index 5e9050689a..9665b76c72 100644
--- a/modules/vasprintf-posix
+++ b/modules/vasprintf-posix
@@ -10,6 +10,7 @@ that module occurs among the main modules in lib/.
Files:
m4/vasprintf-posix.m4
m4/printf.m4
+m4/math_h.m4
Depends-on:
vasprintf
diff --git a/modules/vdprintf-posix b/modules/vdprintf-posix
index 518ecde526..c994a4f2c9 100644
--- a/modules/vdprintf-posix
+++ b/modules/vdprintf-posix
@@ -11,6 +11,7 @@ that module occurs among the main modules in lib/.
Files:
m4/vdprintf-posix.m4
m4/printf.m4
+m4/math_h.m4
Depends-on:
vdprintf
diff --git a/modules/vfprintf-posix b/modules/vfprintf-posix
index 69b6608e09..aba18b57c8 100644
--- a/modules/vfprintf-posix
+++ b/modules/vfprintf-posix
@@ -11,6 +11,7 @@ Files:
lib/vfprintf.c
m4/vfprintf-posix.m4
m4/printf.m4
+m4/math_h.m4
Depends-on:
stdio
diff --git a/modules/vsnprintf-posix b/modules/vsnprintf-posix
index 198beeb58a..e3456fbc86 100644
--- a/modules/vsnprintf-posix
+++ b/modules/vsnprintf-posix
@@ -11,6 +11,7 @@ that module occurs among the main modules in lib/.
Files:
m4/vsnprintf-posix.m4
m4/printf.m4
+m4/math_h.m4
Depends-on:
vsnprintf
diff --git a/modules/vsprintf-posix b/modules/vsprintf-posix
index 10e5385612..99c80f14f5 100644
--- a/modules/vsprintf-posix
+++ b/modules/vsprintf-posix
@@ -11,6 +11,7 @@ Files:
lib/vsprintf.c
m4/vsprintf-posix.m4
m4/printf.m4
+m4/math_h.m4
Depends-on:
stdio