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.