This is the mail archive of the
mailing list for the newlib project.
Re: Possible Issue in ieeefp.h
On 11/21/2016 03:12 PM, Joel Sherrill wrote:
No, LDBL_EQ_DBL is supposed to be defined by configure. That check is also
rigorous, not only requiring the mantissa length, but also the exponent range.
As a guess, one of the latter two is perhaps missing from your float.h.
On 11/21/2016 12:03 PM, Joel Sherrill wrote:
On 11/21/2016 10:52 AM, Craig Howland wrote:
Hmm.. my C/C++ toolset has this in float.h which looks correct:
/* Number of base-FLT_RADIX digits in the significand, p. */
#define FLT_MANT_DIG __FLT_MANT_DIG__
#define DBL_MANT_DIG __DBL_MANT_DIG__
#define LDBL_MANT_DIG __LDBL_MANT_DIG__
I will ask the user what the one in their build tree looks like.
If that looks OK, maybe the source file that isn't compiling
isn't including float.h. The user report doesn't go back far enough
to have a file -- only errors in ieeefp.h.
I have a thread to pull on. Thanks.
And I have something more concrete. :)
So far multiple RTEMS targets have built FORTRAN OK. But
the i386 (which is the one the user was trying) fails
error: #error "double and long double are the same size but LDBL_EQ_DBL is not
#error "double and long double are the same size but LDBL_EQ_DBL is not defined"
The versions of gcc and newlib are in this version string
sparc-rtems4.12-gcc (GCC) 6.2.1 20161110 (RTEMS 4.12, RSB
1c68dbb293922863d5f48ec05559b0fc4b4ea893, Newlib 184.108.40.20661025)
It is nice to see ieeefp.h being defensive. Is the bug
in machine/ieeefp.h which should define this?
#if DBL_MANT_DIG == LDBL_MANT_DIG && LDBL_MIN_EXP == DBL_MIN_EXP && \
LDBL_MAX_EXP == DBL_MAX_EXP
#error "LDBL != DBL"