http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46490

Eric Botcazou <ebotcazou at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2010.11.16 08:22:33
                 CC|                            |ebotcazou at gcc dot
                   |                            |gnu.org
     Ever Confirmed|0                           |1

--- Comment #4 from Eric Botcazou <ebotcazou at gcc dot gnu.org> 2010-11-16 
08:22:33 UTC ---
There is a known issue for FreeBSD.  GNAT requires 64-bit precision on the x87
so it resets it in ada/init.c:__gnat_init_float.  This runs afoul of:

/* FreeBSD sets the rounding precision of the FPU to 53 bits.  Let the
   compiler get the contents of <float.h> and std::numeric_limits correct.  */
#undef TARGET_96_ROUND_53_LONG_DOUBLE
#define TARGET_96_ROUND_53_LONG_DOUBLE (!TARGET_64BIT)

in config/i386/freebsd.h so you'd need to force it to 0 unconditionally for
GNAT.


For the stack checking, you should try to define:

/* Static stack checking is supported by means of probes.  */
#define STACK_CHECK_STATIC_BUILTIN 1

like in config/i386/freebsd.h.

Reply via email to