--- gcc/ada/env.c.orig	2006-05-22 02:05:53.000000000 -0400
+++ gcc/ada/env.c	2008-04-07 19:56:12.000000000 -0400
@@ -166,7 +166,7 @@
       LIB$SIGNAL (status);
   }
 
-#elif defined (__vxworks) && defined (__RTP__)
+#elif defined (__FreeBSD__) || (defined (__vxworks) && defined (__RTP__))
   setenv (name, value, 1);
 
 #else
@@ -177,7 +177,7 @@
 
   sprintf (expression, "%s=%s", name, value);
   putenv (expression);
-#if defined (__FreeBSD__) || defined (__APPLE__) || defined (__MINGW32__) \
+#if defined (__APPLE__) || defined (__MINGW32__) \
    ||(defined (__vxworks) && ! defined (__RTP__))
   /* On some systems like FreeBSD, MacOS X and Windows, putenv is making
      a copy of the expression string so we can free it after the call to
