Page MenuHomeFreeBSD

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

Authored by mhorne on Tue, Jun 23, 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
Automatic diff as part of commit; lint not applicable.
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

mhorne requested review of this revision.Tue, Jun 23, 8:33 PM
mhorne created this revision.
This revision was not accepted when it landed; it landed in state Needs Review.Mon, Jun 29, 7:30 PM
This revision was automatically updated to reflect the committed changes.