When using software floating point, fesetround should return error on all but the default rounding mode. When VFP hardware happens to be present, fesetround will program the VFP to the rounding mode, and not return error. Unfortunately, software floating point rounding mode is not changed. This causes programs which would otherwise detect the failure to change rounding mode to fail later in subtle ways. How to fix this? Is there a way to detect if an application is not using the VFP? I see some ELF tags that might be relevant. Otherwise, could glibc implement the aeabi floating point helper functions instead of gcc? Then, it could choose to use the VFP when present in hardware, or use the assembly version when there is no VFP.
Discussion at <http://sourceware.org/ml/libc-ports/2009-04/subjects.html#00019>; I don't think there's any ideal solution for all cases, and both GCC and glibc will probably be involved in any improvement here.
Suspending, given the likely tricky interactions with other toolchain components.