Date: Sun, 8 Sep 2002 23:50:17 -0400 (EDT) From: Garrett Wollman <wollman@lcs.mit.edu> To: current@FreeBSD.org Cc: kan@FreeBSD.org Subject: No way to tell when `long long' is or is not supported? Message-ID: <200209090350.g893oHMs062192@khavrinen.lcs.mit.edu>
next in thread | raw e-mail | index | archive | help
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.)
-GAWollman
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. */
#define FBSD_CPP_PREDEFINES \
- "-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}\
%{posix:-D_POSIX_SOURCE}"
/* Provide a STARTFILE_SPEC appropriate for FreeBSD. Here we add
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200209090350.g893oHMs062192>
