Comment 1 for bug 1987266

Revision history for this message
In , Michael Hudson-Doyle (mwhudson) wrote :

root@kinetic:~/build# ./elf/ld.so --library-path .:math ./math/test-ibm128-llround
testing long double (without inline functions)
Failure: llround (0x7fffffffffffffff.8p0): Exception "Invalid operation" not set
Failure: llround_downward (0x7fffffffffffffff.8p0): Exception "Invalid operation" not set
Failure: llround_towardzero (0x7fffffffffffffff.8p0): Exception "Invalid operation" not set
Failure: llround_upward (0x7fffffffffffffff.8p0): Exception "Invalid operation" not set

Test suite completed:
  1156 test cases plus 656 tests for exception flags and
    656 tests for errno executed.
  4 errors occurred.

Recompiling math/s_llroundl.os with gcc-11 or with gcc-12 -O1 is enough to fix this. Looking at the disassembly though I'm completely confused, feraiseexcept (FE_INVALID); is still getting called in the failing case and the code that runs after that looks the same (I've spent far too long trying to debug this). I've uploaded the .o files to https://people.canonical.com/~mwh/good.o and https://people.canonical.com/~mwh/bad.o -- good luck to the next person!