diff options
-rw-r--r-- | configure.ac | 6 | ||||
-rwxr-xr-x | tests/misc/od-float.sh | 20 |
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 |