Browse Source

Sync w/ glibc, disabling *at interfaces

Peter S. Mazinger 18 years ago
parent
commit
d55e6dd199
1 changed files with 77 additions and 43 deletions
  1. 77 43
      include/features.h

+ 77 - 43
include/features.h

@@ -19,6 +19,23 @@
 #ifndef	_FEATURES_H
 #define	_FEATURES_H	1
 
+/* This macro indicates that the installed library is uClibc.  Use
+ * __UCLIBC_MAJOR__ and __UCLIBC_MINOR__ to test for the features in
+ * specific releases.  */
+#define	__UCLIBC__		1
+
+/* Load up the current set of uClibc supported features along
+ * with the current uClibc major and minor version numbers.
+ * For uClibc release 0.9.26, these numbers would be:
+ *	#define	__UCLIBC_MAJOR__	0
+ *	#define	__UCLIBC_MINOR__	9
+ *	#define	__UCLIBC_SUBLEVEL__	26
+ */
+#define __need_uClibc_config_h
+#include <bits/uClibc_config.h>
+#undef __need_uClibc_config_h
+#include <bits/uClibc_arch_features.h>
+
 /* For uClibc, always optimize for size -- this should disable
  * a lot of expensive inlining... */
 #define __OPTIMIZE_SIZE__   1
@@ -42,6 +59,7 @@
    _FILE_OFFSET_BITS=N	Select default filesystem interface.
    _BSD_SOURCE		ISO C, POSIX, and 4.3BSD things.
    _SVID_SOURCE		ISO C, POSIX, and SVID things.
+   _ATFILE_SOURCE	Additional *at interfaces.
    _GNU_SOURCE		All of the above, plus GNU extensions.
    _REENTRANT		Select additionally reentrant object.
    _THREAD_SAFE		Same as _REENTRANT, often used by other systems.
@@ -73,6 +91,7 @@
    __USE_BSD		Define 4.3BSD things.
    __USE_SVID		Define SVID things.
    __USE_MISC		Define things common to BSD and System V Unix.
+   __USE_ATFILE		Define *at interfaces and AT_* constants for them.
    __USE_GNU		Define GNU extensions.
    __USE_REENTRANT	Define reentrant/thread-safe *_r functions.
    __USE_FORTIFY_LEVEL	Additional security measures used, according to level.
@@ -106,6 +125,7 @@
 #undef	__USE_BSD
 #undef	__USE_SVID
 #undef	__USE_MISC
+#undef	__USE_ATFILE
 #undef	__USE_GNU
 #undef	__USE_REENTRANT
 #undef	__USE_FORTIFY_LEVEL
@@ -162,6 +182,8 @@
 # define _BSD_SOURCE	1
 # undef  _SVID_SOURCE
 # define _SVID_SOURCE	1
+# undef  _ATFILE_SOURCE
+# define _ATFILE_SOURCE	1
 #endif
 
 /* If nothing (other than _GNU_SOURCE) is defined,
@@ -258,6 +280,10 @@
 # define __USE_SVID	1
 #endif
 
+#ifdef	_ATFILE_SOURCE
+# define __USE_ATFILE	1
+#endif
+
 #ifdef	_GNU_SOURCE
 # define __USE_GNU	1
 #endif
@@ -266,37 +292,23 @@
 # define __USE_REENTRANT	1
 #endif
 
-#if _FORTIFY_SOURCE > 0 && __GNUC_PREREQ (4, 1) && defined(__OPTIMIZE__)
-# if _FORTIFY_SOURCE == 1
-#  define __USE_FORTIFY_LEVEL 1
-# elif _FORTIFY_SOURCE > 1
+#if defined _FORTIFY_SOURCE && _FORTIFY_SOURCE > 0 \
+    && __GNUC_PREREQ (4, 1) && defined __OPTIMIZE__ && __OPTIMIZE__ > 0
+# if _FORTIFY_SOURCE > 1
 #  define __USE_FORTIFY_LEVEL 2
+# else
+#  define __USE_FORTIFY_LEVEL 1
 # endif
+#else
+# define __USE_FORTIFY_LEVEL 0
 #endif
 
 /* We do support the IEC 559 math functionality, real and complex.  */
 #define __STDC_IEC_559__		1
 #define __STDC_IEC_559_COMPLEX__	1
 
-/* This macro indicates that the installed library is uClibc.  Use
- * __UCLIBC_MAJOR__ and __UCLIBC_MINOR__ to test for the features in
- * specific releases.  */
-#define	__UCLIBC__		1
-
-/* Load up the current set of uClibc supported features along
- * with the current uClibc major and minor version numbers.
- * For uClibc release 0.9.26, these numbers would be:
- *	#define	__UCLIBC_MAJOR__	0
- *	#define	__UCLIBC_MINOR__	9
- *	#define	__UCLIBC_SUBLEVEL__	26
- */
-#define __need_uClibc_config_h
-#include <bits/uClibc_config.h>
-#undef __need_uClibc_config_h
-#include <bits/uClibc_arch_features.h>
-
 #ifdef __UCLIBC_HAS_WCHAR__
-/* wchar_t uses ISO 10646-1 (2nd ed., published 2000-09-15) / Unicode 3.0.  */
+/* wchar_t uses ISO 10646-1 (2nd ed., published 2000-09-15) / Unicode 3.1.  */
 # define __STDC_ISO_10646__		200009L
 #endif
 
@@ -308,14 +320,32 @@
  *  are not really intended to check for the presence of a particular library,
  *  but rather are used to define an _interface_.  */
 #if !defined __FORCE_NOGLIBC && (!defined _LIBC || defined __FORCE_GLIBC)
-#   define __GNU_LIBRARY__ 6
-#   define __GLIBC__       2
-#   define __GLIBC_MINOR__ 2
+/* This macro indicates that the installed library is the GNU C Library.
+   For historic reasons the value now is 6 and this will stay from now
+   on.  The use of this variable is deprecated.  */
+# undef  __GNU_LIBRARY__
+# define __GNU_LIBRARY__ 6
+
+/* Major and minor version number of the GNU C library package.  Use
+   these macros to test for features in specific releases.  */
+/* Don't do it, if you want to keep uClibc happy.  */
+# define	__GLIBC__	2
+# define	__GLIBC_MINOR__	2
 #endif
 
 #define __GLIBC_PREREQ(maj, min) \
 	((__GLIBC__ << 16) + __GLIBC_MINOR__ >= ((maj) << 16) + (min))
 
+#ifndef __UCLIBC__
+/* Decide whether a compiler supports the long long datatypes.  */
+#if defined __GNUC__ \
+    || (defined __PGI && defined __i386__ ) \
+    || (defined __INTEL_COMPILER && (defined __i386__ || defined __ia64__)) \
+    || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L)
+# define __GLIBC_HAVE_LONG_LONG	1
+#endif
+#endif
+
 /* This is here only because every header file already includes this one.  */
 #ifndef __ASSEMBLER__
 # ifndef _SYS_CDEFS_H
@@ -344,33 +374,37 @@
 /* If uClibc was built without large file support, output an error if
  * and 64-bit file offsets were requested, output an error.
  * NOTE: This is probably incorrect on a 64-bit arch... */
-#ifdef __USE_FILE_OFFSET64
-#error It appears you have defined _FILE_OFFSET_BITS=64.  Unfortunately, \
+# ifdef __USE_FILE_OFFSET64
+#  error It appears you have defined _FILE_OFFSET_BITS=64.  Unfortunately, \
 uClibc was built without large file support enabled.
-#endif
+# endif
 
 /* If uClibc was built without large file support and _LARGEFILE64_SOURCE
  * is defined, undefine it. */
-#if defined(_LARGEFILE64_SOURCE)
-#undef _LARGEFILE64_SOURCE
-#undef __USE_LARGEFILE64
-#endif
+# ifdef _LARGEFILE64_SOURCE
+#  undef _LARGEFILE64_SOURCE
+#  undef __USE_LARGEFILE64
+# endif
 
 /* If we're actually building uClibc with large file support,
  * define __USE_LARGEFILE64 and __USE_LARGEFILE. */
-#elif defined(_LIBC)
-#undef _LARGEFILE_SOURCE
-#undef _LARGEFILE64_SOURCE
-#undef _FILE_OFFSET_BITS
-#undef __USE_LARGEFILE
-#undef __USE_LARGEFILE64
-#undef __USE_FILE_OFFSET64
-#define _LARGEFILE_SOURCE       1
-#define _LARGEFILE64_SOURCE     1
-#define __USE_LARGEFILE         1
-#define __USE_LARGEFILE64       1
+#elif defined _LIBC
+# undef _LARGEFILE_SOURCE
+# undef _LARGEFILE64_SOURCE
+# undef _FILE_OFFSET_BITS
+# undef __USE_LARGEFILE
+# undef __USE_LARGEFILE64
+# undef __USE_FILE_OFFSET64
+# define _LARGEFILE_SOURCE       1
+# define _LARGEFILE64_SOURCE     1
+# define __USE_LARGEFILE         1
+# define __USE_LARGEFILE64       1
 #endif
 
+/* uClibc does not support *at interfaces. */
+#undef _ATFILE_SOURCE
+#undef __USE_ATFILE
+
 #ifdef _LIBC
 # include <libc-internal.h>
 #endif