GCC used to define a macro __STRICT_ANSI__ when `-ansi' was given on
the command line.  The current version does not do this, which breaks
detection of whether `long long' is allowed.  (For some reason this is
not hit in -current builds, but I have made some fixes to <stdlib.h>
which trigger it in every program which sets WARNS.)

Rather than trying to deduce whether `long long' is supported from
other macros, I simply modified the compiler driver to tell us.  (BTW,
the `-posix' flag is utterly useless and should go.)  If anyone has a
better way to accomplish this, I'm all ears.

(I suspect that the removal of __STRICT_ANSI__ was intentional, since
it's not clear what that should mean in the face of multiple C
language standards.  The trouble is that C89 (implied by `-ansi') is
otherwise indistinguishable from C89+GCC-extensions (implied by the
absence of `-ansi'), and we need to make both cases work properly.)


Index: freebsd-spec.h
RCS file: /home/ncvs/src/contrib/gcc/config/freebsd-spec.h,v
retrieving revision 1.2
diff -u -r1.2 freebsd-spec.h
--- freebsd-spec.h      10 May 2002 19:05:07 -0000      1.2
+++ freebsd-spec.h      8 Sep 2002 18:34:29 -0000
@@ -85,12 +85,13 @@
    the final CPP_PREDEFINES value.  */
-  "-D__FreeBSD__=5 -D__FreeBSD_cc_version=500003 -Dunix -D__KPRINTF_ATTRIBUTE__ 
-Asystem=unix -Asystem=bsd -Asystem=FreeBSD"
+  "-D__FreeBSD__=5 -D__FreeBSD_cc_version=500004 -Dunix -D__KPRINTF_ATTRIBUTE__ 
+-Asystem=unix -Asystem=bsd -Asystem=FreeBSD"
 #endif /* ! FREEBSD_NATIVE */
 /* Provide a CPP_SPEC appropriate for FreeBSD.  We just deal with the GCC 
-   option `-posix', and PIC issues.  */
+   option `-posix', and PIC issues.  Also deal with the problem of
+   detecting support for the `long long' type. */
 #define FBSD_CPP_SPEC "                                                        \
   %(cpp_cpu)                                                           \
@@ -98,6 +99,8 @@
   %{munderscores: -D__UNDERSCORES__}                                   \
   %{maout: %{!mno-underscores: -D__UNDERSCORES__}}                     \
   %{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__}              \
+  %{!ansi:%{!std=*:-D__LONG_LONG_SUPPORTED}%{std=gnu*:-D__LONG_LONG_SUPPORTED}}\
+  %{std=c99:-D__LONG_LONG_SUPPORTED}\
 /* Provide a STARTFILE_SPEC appropriate for FreeBSD.  Here we add

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to