This is the mail archive of the
newlib@sourceware.org
mailing list for the newlib project.
Re: newlib ieeefp.h again
- From: Sebastian Huber <sebastian dot huber at embedded-brains dot de>
- To: Andrew Johnson <anj at aps dot anl dot gov>, Joel Sherrill <joel dot sherrill at oarcorp dot com>, howland at LGSInnovations dot com
- Cc: newlib at sourceware dot org
- Date: Thu, 23 Mar 2017 07:58:49 +0100
- Subject: Re: newlib ieeefp.h again
- Authentication-results: sourceware.org; auth=none
- References: <854be012-0f1f-b0bf-b7a8-bc615452fa0e@aps.anl.gov>
On 23/03/17 00:17, Andrew Johnson wrote:
Hi Joel & Craig,
Hopefully you remember this email conversation from November:
https://sourceware.org/ml/newlib/2016/msg01117.html
I just built the RTEMS master branch for the uC5282 BSP, and found the
same problem with the ieeefp.h header when building EPICS Base using the
result. I think I can explain what's happening.
Newlib's setting for _LDBL_EQ_DBL (in newlib.h) needs to change based on
the particular CPU being compiled for. Here's some evidence:
Yes, this definition of _LDBL_EQ_DBL is wrong, since it depends on the
multilib. For example we have in the GCC build tree:
grep _LDBL_EQ_DBL `find -name newlib.h`
./m68k-rtems4.12/m68040/softfp/newlib/newlib.h:/* #undef _LDBL_EQ_DBL */
./m68k-rtems4.12/m68040/newlib/newlib.h:/* #undef _LDBL_EQ_DBL */
./m68k-rtems4.12/m5208/newlib/newlib.h:#define _LDBL_EQ_DBL 1
./m68k-rtems4.12/m5329/newlib/newlib.h:#define _LDBL_EQ_DBL 1
./m68k-rtems4.12/m5206/newlib/newlib.h:#define _LDBL_EQ_DBL 1
./m68k-rtems4.12/m5407/newlib/newlib.h:#define _LDBL_EQ_DBL 1
./m68k-rtems4.12/softfp/newlib/newlib.h:/* #undef _LDBL_EQ_DBL */
./m68k-rtems4.12/m68000/newlib/targ-include/newlib.h:/* #undef
_LDBL_EQ_DBL */
./m68k-rtems4.12/m68000/newlib/newlib.h:/* #undef _LDBL_EQ_DBL */
./m68k-rtems4.12/newlib/targ-include/newlib.h:/* #undef _LDBL_EQ_DBL */
./m68k-rtems4.12/newlib/newlib.h:/* #undef _LDBL_EQ_DBL */
./m68k-rtems4.12/m5475/softfp/newlib/newlib.h:#define _LDBL_EQ_DBL 1
./m68k-rtems4.12/m5475/newlib/newlib.h:#define _LDBL_EQ_DBL 1
./m68k-rtems4.12/m68060/softfp/newlib/newlib.h:/* #undef _LDBL_EQ_DBL */
./m68k-rtems4.12/m68060/newlib/newlib.h:/* #undef _LDBL_EQ_DBL */
./m68k-rtems4.12/mcpu32/newlib/newlib.h:/* #undef _LDBL_EQ_DBL */
./m68k-rtems4.12/m5307/newlib/newlib.h:#define _LDBL_EQ_DBL 1
In the installation tree:
grep _LDBL_EQ_DBL `find -name newlib.h`
./m68k-rtems4.12/include/newlib.h:/* #undef _LDBL_EQ_DBL */
So, only one random newlib.h is copied to the installation tree,
therefore all newlib.h of the build tree must be identical.
I would move the _LDBL_EQ_DBL definition to <ieeefp.h> based on compiler
provided defines.
--
Sebastian Huber, embedded brains GmbH
Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone : +49 89 189 47 41-16
Fax : +49 89 189 47 41-09
E-Mail : sebastian.huber@embedded-brains.de
PGP : Public key available on request.
Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.