Page MenuHomeFreeBSD

Fix printf(3) output of long doubles on RISC-V

Authored by mhorne on Jun 23 2020, 8:33 PM.



When the RISC-V port was initially committed to FreeBSD, GCC would
generate 64-bit long doubles, and the definitions in _fpmath.h reflected
that. This was changed to 128-bit in GCC later that year [1], but the
definitions were never updated. This causes printf(3) and friends to
interpret only the low 64-bits of a long double in ldtoa, thereby
printing incorrect values.

Update the definitions now that both clang and GCC generate 128-bit long

PR: 242067


Test Plan

Verify that the test program from the PR gives the expected output for libc built with clang and gcc.

Diff Detail

rS FreeBSD src repository - subversion
Automatic diff as part of commit; lint not applicable.
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

mhorne created this revision.
This revision was not accepted when it landed; it landed in state Needs Review.Jun 29 2020, 7:30 PM
This revision was automatically updated to reflect the committed changes.