[Bug 272229] printf produces bogus output when printing double 0x00000000000000ff with %g
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 26 Jun 2023 19:09:38 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=272229 Bug ID: 272229 Summary: printf produces bogus output when printing double 0x00000000000000ff with %g Product: Base System Version: 13.1-RELEASE Hardware: Any OS: Any Status: New Severity: Affects Many People Priority: --- Component: arm Assignee: freebsd-arm@FreeBSD.org Reporter: fuz@FreeBSD.org CC: diizzy@FreeBSD.org Consider this test program: #include <stdio.h> int main() { union intfloat { int i; double f; } intf; intf.i = 255; printf("%g\n", intf.f); } This should print (e.g. on aarch64): $ cc -o bug bug.c $ ./bug 1.25987e-32 But on armv7 we get instead: $ ./bug e-309 Furthermore, there is an embedded NUL byte in the output: $ ./bug | od -c 0000000 \0 e - 3 0 9 \n 0000007 Preliminary debugging suggests that this could be because dtoa() returns an empty string when vfprintf attempts the conversion. Further debugging is hindered as gdb cannot find debug symbols for dtoa (it seems to expect a source file of different name than the actual file). Among other things, this error causes devel/orc to fail during build. -- You are receiving this mail because: You are the assignee for the bug.