diff options
| -rw-r--r-- | include/features.h | 54 | 
1 files changed, 36 insertions, 18 deletions
diff --git a/include/features.h b/include/features.h index 27e827172..07680a09e 100644 --- a/include/features.h +++ b/include/features.h @@ -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 @@ -103,6 +108,7 @@  #undef	__USE_MISC  #undef	__USE_GNU  #undef	__USE_REENTRANT +#undef	__USE_FORTIFY_LEVEL  #undef	__FAVOR_BSD  #undef	__KERNEL_STRICT_NAMES @@ -115,6 +121,20 @@  /* 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 && \ @@ -165,8 +185,8 @@  /* 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 @@ -191,6 +211,10 @@  # 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 @@ -242,6 +266,14 @@  # 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 @@ -280,20 +312,6 @@  #   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))  | 
