[Bug 242067] libc: r354823 riscv64 has a fault in printf() where IEEE754-2008 fp128 data is output wrong

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Mon Jun 29 19:31:24 UTC 2020


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=242067

--- Comment #9 from commit-hook at freebsd.org ---
A commit references this bug:

Author: mhorne
Date: Mon Jun 29 19:30:35 UTC 2020
New revision: 362788
URL: https://svnweb.freebsd.org/changeset/base/362788

Log:
  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 at blastwave.org>
  MFC after:    1 week
  Differential Revision:        https://reviews.freebsd.org/D25420

Changes:
  head/lib/libc/riscv/_fpmath.h

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-bugs mailing list