Issue #6592 has been updated by Joel VanderWerf.


Fails with gcc-4.8.2 also.

~~~
$ make check
  CC = gcc
  LD = ld
  LDSHARED = gcc -shared
  CFLAGS = -O3 -fno-fast-math -ggdb3 -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wunused-variable -Werror=pointer-arith -Werror=write-strings -Werror=declaration-after-statement -Werror=implicit-function-declaration -Werror=deprecated-declarations -Wno-packed-bitfield-compat -std=iso9899:1999 
  XCFLAGS = -D_FORTIFY_SOURCE=2 -fstack-protector -fno-strict-overflow -fvisibility=hidden -DRUBY_EXPORT -fPIE
  CPPFLAGS =   -I. -I.ext/include/armv7l-linux-eabihf -I./include -I.
  DLDFLAGS = -fstack-protector -pie  
  SOLIBS = 
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-linux-gnueabihf/4.8/lto-wrapper
Target: arm-linux-gnueabihf
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.8.2-19ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.8 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-libmudflap --disable-libitm --disable-libquadmath --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.8-armhf/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-armhf --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-armhf --with-arch-directory=arm --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-
 gc --enable-multiarch --enable-multilib --disable-sjlj-exceptions --with-arch=armv7-a --with-fpu=vfpv3-d16 --with-float=hard --with-mode=thumb --disable-werror --enable-checking=release --build=arm-linux-gnueabihf --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf
Thread model: posix
gcc version 4.8.2 (Ubuntu/Linaro 4.8.2-19ubuntu1) 
~~~

...

~~~
test succeeded
PASS all 1008 tests             
./miniruby -I./lib -I. -I.ext/common  ./tool/runruby.rb --extout=.ext  -- --disable-gems "./bootstraptest/runner.rb" --ruby="ruby --disable-gems"   ./KNOWNBUGS.rb
2014-09-01 10:34:38 -0700
Driver is ruby 2.2.0dev (2014-08-31 trunk 47341) [armv7l-linux-eabihf]
Target is ruby 2.2.0dev (2014-08-31 trunk 47341) [armv7l-linux-eabihf]

KNOWNBUGS.rb  PASS 0
No tests, no problem
./miniruby -I./lib -I. -I.ext/common  ./tool/runruby.rb --extout=.ext  -- --disable-gems "./test/runner.rb" --ruby="./miniruby -I./lib -I. -I.ext/common  ./tool/runruby.rb --extout=.ext  -- --disable-gems"  
Run options: "--ruby=./miniruby -I./lib -I. -I.ext/common  ./tool/runruby.rb --extout=.ext  -- --disable-gems"

# Running tests:

[  181/15519] DL::TestDL#test_call_double = 0.15 s                                          
  1) Failure:
DL::TestDL#test_call_double [/home/tmp/snapshot/test/dl/test_dl2.rb:63]:
Expected |0.1 - 2.1638938557735e-311| (0.1) to be <= 0.001.

[  834/15519] OpenSSL::TestPKeyRSA#test_sign_verify_memory_leak = 10.04 s                              
  2) Error:
OpenSSL::TestPKeyRSA#test_sign_verify_memory_leak:
Timeout::Error: execution of assert_no_memory_leak expired
    /home/tmp/snapshot/test/openssl/test_pkey_rsa.rb:80:in `test_sign_verify_memory_leak'

~~~

----------------------------------------
Bug #6592: test_call_double(DL::TestDL) fails on ARM HardFP
https://bugs.ruby-lang.org/issues/6592#change-48604

* Author: Vit Ondruch
* Status: Assigned
* Priority: Normal
* Assignee: Aaron Patterson
* Category: ext
* Target version: next minor
* ruby -v: ruby 2.0.0dev (2012-06-05 trunk 35922) [armv7hl-linux]
* Backport: 
----------------------------------------
Hi,

I am observing following test suite error on armv7hl Fedora 17 [1] (but it seems that Debian suffers the same issues [3]):

  2) Failure:
test_call_double(DL::TestDL) [/builddir/build/BUILD/ruby-2.0.0-r35922/test/dl/test_dl2.rb:90]:
Expected |0.1 - 2.1638932342073e-311| (0.1) to be < 0.001.

I was digging a bit deeper and I identified issue in this part of code [2]. I tried a bit to unfold the macros and found, that the issue is because of variadic arguments. If the function prototype is declared without them (novar.disasm), the test passes, if they are in use (variadic.disasm), the test fails. The attached files shows the code with partially unfolded marcos and their disassembly. The atof.disasm contains the disassembly of the atof call if it might be of help.

I am not sure if it might be compiler bug (GCC 4.7) or if it should be fixed in Ruby. Any help appreciated


[1] http://arm.koji.fedoraproject.org/koji/getfile?taskID=904523&name=build.log
[2] https://github.com/ruby/ruby/blob/v1_9_3_195/ext/dl/cfunc.c#L464
[3] https://buildd.debian.org/status/fetch.php?pkg=ruby1.9.1&arch=armhf&ver=1.9.3.194-1&stamp=1338887114

---Files--------------------------------
novar.disasm (659 Bytes)
variadic.disasm (699 Bytes)
atof.disasm (695 Bytes)
noname (500 Bytes)
noname (500 Bytes)


-- 
https://bugs.ruby-lang.org/