OSDN Git Service

merge some misc stuff from glibc
authorMike Frysinger <vapier@gentoo.org>
Wed, 21 Sep 2005 03:55:21 +0000 (03:55 -0000)
committerMike Frysinger <vapier@gentoo.org>
Wed, 21 Sep 2005 03:55:21 +0000 (03:55 -0000)
include/features.h

index 27e8271..07680a0 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991,92,93,95,96,97,98,99,2000,2001 Free Software Foundation, Inc.
+/* Copyright (C) 1991-1993,1995-2003,2004,2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -31,7 +31,8 @@
    _POSIX_SOURCE       IEEE Std 1003.1.
    _POSIX_C_SOURCE     If ==1, like _POSIX_SOURCE; if >=2 add IEEE Std 1003.2;
                        if >=199309L, add IEEE Std 1003.1b-1993;
-                       if >=199506L, add IEEE Std 1003.1c-1995
+                       if >=199506L, add IEEE Std 1003.1c-1995;
+                       if >=200112L, all of IEEE 1003.1-2004
    _XOPEN_SOURCE       Includes POSIX and XPG things.  Set to 500 if
                        Single Unix conformance is wanted, to 600 for the
                        upcoming sixth revision.
@@ -44,6 +45,8 @@
    _GNU_SOURCE         All of the above, plus GNU extensions.
    _REENTRANT          Select additionally reentrant object.
    _THREAD_SAFE                Same as _REENTRANT, often used by other systems.
+   _FORTIFY_SOURCE     If set to numeric value > 0 additional security
+                       measures are defined, according to level.
 
    The `-ansi' switch to the GNU C compiler defines __STRICT_ANSI__.
    If none of these are defined, the default is to have _SVID_SOURCE,
@@ -72,6 +75,7 @@
    __USE_MISC          Define things common to BSD and System V Unix.
    __USE_GNU           Define GNU extensions.
    __USE_REENTRANT     Define reentrant/thread-safe *_r functions.
+   __USE_FORTIFY_LEVEL Additional security measures used, according to level.
    __FAVOR_BSD         Favor 4.3BSD things in cases of conflict.
 
    The macros `__GNU_LIBRARY__', `__GLIBC__', and `__GLIBC_MINOR__' are
@@ -85,6 +89,7 @@
    but are implied by the other feature-test macros defined (or by the
    lack of any definitions) are defined by the file.  */
 
+
 /* Undefine everything, so we get a clean slate.  */
 #undef __USE_ISOC99
 #undef __USE_POSIX
 #undef __USE_MISC
 #undef __USE_GNU
 #undef __USE_REENTRANT
+#undef __USE_FORTIFY_LEVEL
 #undef __FAVOR_BSD
 #undef __KERNEL_STRICT_NAMES
 
 /* Always use ISO C things.  */
 #define        __USE_ANSI      1
 
+/* Convenience macros to test the versions of glibc and gcc.
+   Use them like this:
+   #if __GNUC_PREREQ (2,8)
+   ... code requiring gcc 2.8 or later ...
+   #endif
+   Note - they won't work for gcc1 or glibc1, since the _MINOR macros
+   were not defined then.  */
+#if defined __GNUC__ && defined __GNUC_MINOR__
+# define __GNUC_PREREQ(maj, min) \
+       ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
+#else
+# define __GNUC_PREREQ(maj, min) 0
+#endif
+
 
 /* If _BSD_SOURCE was defined by the user, favor BSD over POSIX.  */
 #if defined _BSD_SOURCE && \
 
 /* If none of the ANSI/POSIX macros are defined, use POSIX.1 and POSIX.2
    (and IEEE Std 1003.1b-1993 unless _XOPEN_SOURCE is defined).  */
-#if (!defined __STRICT_ANSI__ && !defined _POSIX_SOURCE && \
-     !defined _POSIX_C_SOURCE)
+#if ((!defined __STRICT_ANSI__ || (_XOPEN_SOURCE - 0) >= 500) && \
+     !defined _POSIX_SOURCE && !defined _POSIX_C_SOURCE)
 # define _POSIX_SOURCE 1
 # if defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) < 500
 #  define _POSIX_C_SOURCE      2
 # define __USE_POSIX199506     1
 #endif
 
+#if (_POSIX_C_SOURCE - 0) >= 200112L
+# define __USE_XOPEN2K         1
+#endif
+
 #ifdef _XOPEN_SOURCE
 # define __USE_XOPEN   1
 # if (_XOPEN_SOURCE - 0) >= 500
 # define __USE_REENTRANT       1
 #endif
 
+#if _FORTIFY_SOURCE > 0 && __GNUC_PREREQ (4, 1) && __OPTIMIZE__ > 0
+# if _FORTIFY_SOURCE == 1
+#  define __USE_FORTIFY_LEVEL 1
+# elif _FORTIFY_SOURCE > 1
+#  define __USE_FORTIFY_LEVEL 2
+# endif
+#endif
+
 /* We do support the IEC 559 math functionality, real and complex.  */
 #define __STDC_IEC_559__               1
 #define __STDC_IEC_559_COMPLEX__       1
 #   define __GLIBC_MINOR__ 2
 #endif
 
-/* Convenience macros to test the versions of glibc and gcc.
-   Use them like this:
-   #if __GNUC_PREREQ (2,8)
-   ... code requiring gcc 2.8 or later ...
-   #endif
-   Note - they won't work for gcc1 or glibc1, since the _MINOR macros
-   were not defined then.  */
-#if defined __GNUC__ && defined __GNUC_MINOR__
-# define __GNUC_PREREQ(maj, min) \
-       ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
-#else
-# define __GNUC_PREREQ(maj, min) 0
-#endif
-
 #define __GLIBC_PREREQ(maj, min) \
        ((__GLIBC__ << 16) + __GLIBC_MINOR__ >= ((maj) << 16) + (min))