summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configure.ac6
-rwxr-xr-xtests/misc/od-float.sh20
2 files changed, 23 insertions, 3 deletions
diff --git a/configure.ac b/configure.ac
index 0744964c3..f07803481 100644
--- a/configure.ac
+++ b/configure.ac
@@ -67,6 +67,12 @@ cu_have_perl=yes
case $PERL in *"/missing "*) cu_have_perl=no;; esac
AM_CONDITIONAL([HAVE_PERL], [test $cu_have_perl = yes])
+# Disable the checks for handling certain invalid long double values
+# since this results in always replacing the printf() implementation
+# (see https://sourceware.org/bugzilla/show_bug.cgi?id=17661) and
+# od (ftoastr) doesn't use the replacement anyway.
+m4_divert_text([INIT_PREPARE], [gl_printf_safe=''])
+
# gl_GCC_VERSION_IFELSE([major], [minor], [run-if-found], [run-if-not-found])
# ------------------------------------------------
# If $CPP is gcc-MAJOR.MINOR or newer, then run RUN-IF-FOUND.
diff --git a/tests/misc/od-float.sh b/tests/misc/od-float.sh
index 8a8e29b27..10ffc84cf 100755
--- a/tests/misc/od-float.sh
+++ b/tests/misc/od-float.sh
@@ -29,7 +29,7 @@ export LC_ALL=C
# on x86: sometimes there was no space between the columns.
set x $(echo aaaabaaa | tr ab '\376\377' | od -t fF) ||
- framework_failure_
+ fail=1
case "$*" in
*0-*) fail=1;;
esac
@@ -38,7 +38,7 @@ case $3,$4 in
esac
set x $(echo aaaaaaaabaaaaaaa | tr ab '\376\377' | od -t fD) ||
- framework_failure_
+ fail=1
case "$*" in
*0-*) fail=1;;
esac
@@ -47,7 +47,7 @@ case $3,$4 in
esac
set x $(echo aaaaaaaaaaaaaaaabaaaaaaaaaaaaaaa | tr ab '\376\377' | od -t fL) ||
- framework_failure_
+ fail=1
case "$*" in
*0-*) fail=1;;
esac
@@ -55,4 +55,18 @@ case $3,$4 in
-1.023442870282055988e+4855,-1.023442870282055988e+4855) fail=1;;
esac
+# Ensure od doesn't crash as it did on glibc <= 2.5:
+# https://sourceware.org/bugzilla/show_bug.cgi?id=4586
+set x $(printf 00000000ff000000 | tr 0f '\000\377' | od -t fL) || fail=1
+# With coreutils <= 8.7 we used to print "nan" for the above invalid value.
+# However since v8.7-22-ga71c22f we deferred to the system printf routines
+# through the use of the ftoastr module. So the following check would only
+# be valid on x86_64 if we again handle the conversion internally or
+# if this glibc bug is resolved:
+# https://sourceware.org/bugzilla/show_bug.cgi?id=17661
+#case "$*" in
+#*nan*) ;;
+#*) fail=1;;
+#esac
+
Exit $fail