test-ibm128-llround fails on ppc64el when built with gcc-12 and -O2 or higher
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
GLibC |
Fix Released
|
Medium
|
|||
The Ubuntu-power-systems project |
Fix Released
|
Undecided
|
bugproxy | ||
glibc (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
root@kinetic:
testing long double (without inline functions)
Failure: llround (0x7fffffffffff
Failure: llround_downward (0x7fffffffffff
Failure: llround_towardzero (0x7fffffffffff
Failure: llround_upward (0x7fffffffffff
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:/
A potential fix is here:
https:/
For more details and discussions have a look at the attached upstream bug.
description: | updated |
tags: | added: architecture-ppc64le bugnameltc-199621 severity-medium targetmilestone-inin--- |
Changed in glibc: | |
importance: | Unknown → Medium |
status: | Unknown → New |
Changed in glibc: | |
status: | New → Fix Released |
Changed in ubuntu-power-systems: | |
status: | New → Fix Released |
tags: |
added: targetmilestone-inin2210 removed: targetmilestone-inin--- |
root@kinetic: ~/build# ./elf/ld.so --library-path .:math ./math/ test-ibm128- llround ffff.8p0) : Exception "Invalid operation" not set ffff.8p0) : Exception "Invalid operation" not set ffff.8p0) : Exception "Invalid operation" not set ffff.8p0) : Exception "Invalid operation" not set
testing long double (without inline functions)
Failure: llround (0x7fffffffffff
Failure: llround_downward (0x7fffffffffff
Failure: llround_towardzero (0x7fffffffffff
Failure: llround_upward (0x7fffffffffff
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!