HomeFreeBSD

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

Description

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

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, despite the documented workaround. 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
doubles.

[1] https://github.com/riscv/riscv-gcc/commit/54b21fc5ae83cefec44bc2caed4a8c664c274ba0

PR: 242067
Reported by: Dennis Clarke <dclarke@blastwave.org>
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D25420

Details

Provenance
mhorneAuthored on Jun 29 2020, 7:30 PM
Parents
rG70448a5414ad: mailwrapper: switch mailer.conf to CONFS
Branches
Unknown
Tags
Unknown

Event Timeline