--- gcc/config/freebsd.h.orig	Wed May 30 16:05:30 2001
+++ gcc/config/freebsd.h	Mon Jun 18 18:46:50 2001
@@ -50,29 +50,32 @@
 #undef WORD_SWITCH_TAKES_ARG
 #define WORD_SWITCH_TAKES_ARG(STR) (FBSD_WORD_SWITCH_TAKES_ARG(STR))
 
+/* Place spaces around this string.  We depend on string splicing to produce
+   the final CPP_PREDEFINES value.  */
+
 #if FBSD_MAJOR == 6
 #define FBSD_CPP_PREDEFINES \
-  "-D__FreeBSD__=6 -Dunix -D__ELF__ -Asystem=unix -Asystem=bsd -Asystem=FreeBSD"
+  " -D__FreeBSD__=6 -Dunix -Asystem=unix -Asystem=bsd -Asystem=FreeBSD "
 #endif
 
 #if FBSD_MAJOR == 5
 #define FBSD_CPP_PREDEFINES \
-  "-D__FreeBSD__=5 -Dunix -D__ELF__ -Asystem=unix -Asystem=bsd -Asystem=FreeBSD"
+  " -D__FreeBSD__=5 -Dunix -Asystem=unix -Asystem=bsd -Asystem=FreeBSD "
 #endif
 
 #if FBSD_MAJOR == 4
 #define FBSD_CPP_PREDEFINES \
-  "-D__FreeBSD__=4 -Dunix -D__ELF__ -Asystem=unix -Asystem=bsd -Asystem=FreeBSD"
+  " -D__FreeBSD__=4 -Dunix -Asystem=unix -Asystem=bsd -Asystem=FreeBSD "
 #endif
 
 #if FBSD_MAJOR == 3
 #define FBSD_CPP_PREDEFINES \
-  "-D__FreeBSD__=3 -Dunix -D__ELF__ -Asystem=unix -Asystem=bsd -Asystem=FreeBSD"
+  " -D__FreeBSD__=3 -Dunix -Asystem=unix -Asystem=bsd -Asystem=FreeBSD "
 #endif
 
 #ifndef FBSD_CPP_PREDEFINES
 #define FBSD_CPP_PREDEFINES \
-  "-D__FreeBSD__   -Dunix -D__ELF__ -Asystem=unix -Asystem=bsd -Asystem=FreeBSD"
+  " -D__FreeBSD__   -Dunix -Asystem=unix -Asystem=bsd -Asystem=FreeBSD "
 #endif
 
 #undef  CPP_PREDEFINES
@@ -81,10 +84,16 @@
 /* Provide a CPP_SPEC appropriate for FreeBSD.  We just deal with the GCC 
    option `-posix', and PIC issues.  */
 
-#undef CPP_SPEC
-#define CPP_SPEC "%(cpp_cpu)						\
+#define FBSD_CPP_SPEC "							\
+  %(cpp_cpu)								\
   %{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__}		\
-  %{posix:-D_POSIX_SOURCE}"
+  %{posix:-D_POSIX_SOURCE}						\
+  %{!maout: -D__ELF__}							\
+  %{munderscores: -D__UNDERSCORES__}					\
+  %{maout: %{!mno-underscores: -D__UNDERSCORES__}}"
+
+#undef CPP_SPEC
+#define CPP_SPEC FBSD_CPP_SPEC
 
 /* Provide a LIB_SPEC appropriate for FreeBSD as configured and as
    required by the user-land thread model.  Before __FreeBSD_version
