diff options
Diffstat (limited to 'config.h.in')
-rw-r--r-- | config.h.in | 942 |
1 files changed, 186 insertions, 756 deletions
diff --git a/config.h.in b/config.h.in index 8f5dc91..69632ac 100644 --- a/config.h.in +++ b/config.h.in @@ -81,11 +81,7 @@ #undef FUNC_MKDIR_DOT_BUG /* Define to 1 if realpath() can malloc memory, always gives an absolute path, - and handles a trailing slash correctly. */ -#undef FUNC_REALPATH_NEARLY_WORKS - -/* Define to 1 if realpath() can malloc memory, always gives an absolute path, - and handles leading slashes and a trailing slash correctly. */ + and handles trailing slash correctly. */ #undef FUNC_REALPATH_WORKS /* Define to 1 if futimesat mishandles a NULL file name. */ @@ -99,6 +95,9 @@ */ #undef GETGROUPS_ZERO_BUG +/* Define if gettimeofday clobbers the localtime buffer. */ +#undef GETTIMEOFDAY_CLOBBERS_LOCALTIME + /* Define this to 'void' or 'struct timezone' to match the system's declaration of the second argument to gettimeofday. */ #undef GETTIMEOFDAY_TIMEZONE @@ -136,10 +135,6 @@ #undef GNULIB_PRINTF_ATTRIBUTE_FLAVOR_GNU /* Define to a C preprocessor expression that evaluates to 1 or 0, depending - whether the gnulib module reallocarray shall be considered present. */ -#undef GNULIB_REALLOCARRAY - -/* Define to a C preprocessor expression that evaluates to 1 or 0, depending whether the gnulib module scanf shall be considered present. */ #undef GNULIB_SCANF @@ -151,12 +146,6 @@ whether the gnulib module strerror shall be considered present. */ #undef GNULIB_STRERROR -/* Define to 1 when the gnulib module calloc-gnu should be tested. */ -#undef GNULIB_TEST_CALLOC_GNU - -/* Define to 1 when the gnulib module calloc-posix should be tested. */ -#undef GNULIB_TEST_CALLOC_POSIX - /* Define to 1 when the gnulib module canonicalize_file_name should be tested. */ #undef GNULIB_TEST_CANONICALIZE_FILE_NAME @@ -197,36 +186,12 @@ /* Define to 1 when the gnulib module fdopendir should be tested. */ #undef GNULIB_TEST_FDOPENDIR -/* Define to 1 when the gnulib module fgetc should be tested. */ -#undef GNULIB_TEST_FGETC - -/* Define to 1 when the gnulib module fgets should be tested. */ -#undef GNULIB_TEST_FGETS - -/* Define to 1 when the gnulib module fprintf should be tested. */ -#undef GNULIB_TEST_FPRINTF - -/* Define to 1 when the gnulib module fputc should be tested. */ -#undef GNULIB_TEST_FPUTC - -/* Define to 1 when the gnulib module fputs should be tested. */ -#undef GNULIB_TEST_FPUTS - -/* Define to 1 when the gnulib module fread should be tested. */ -#undef GNULIB_TEST_FREAD - -/* Define to 1 when the gnulib module free-posix should be tested. */ -#undef GNULIB_TEST_FREE_POSIX - /* Define to 1 when the gnulib module frexp should be tested. */ #undef GNULIB_TEST_FREXP /* Define to 1 when the gnulib module frexpl should be tested. */ #undef GNULIB_TEST_FREXPL -/* Define to 1 when the gnulib module fscanf should be tested. */ -#undef GNULIB_TEST_FSCANF - /* Define to 1 when the gnulib module fstat should be tested. */ #undef GNULIB_TEST_FSTAT @@ -236,15 +201,6 @@ /* Define to 1 when the gnulib module futimens should be tested. */ #undef GNULIB_TEST_FUTIMENS -/* Define to 1 when the gnulib module fwrite should be tested. */ -#undef GNULIB_TEST_FWRITE - -/* Define to 1 when the gnulib module getc should be tested. */ -#undef GNULIB_TEST_GETC - -/* Define to 1 when the gnulib module getchar should be tested. */ -#undef GNULIB_TEST_GETCHAR - /* Define to 1 when the gnulib module getcwd should be tested. */ #undef GNULIB_TEST_GETCWD @@ -260,9 +216,6 @@ /* Define to 1 when the gnulib module getline should be tested. */ #undef GNULIB_TEST_GETLINE -/* Define to 1 when the gnulib module getopt-posix should be tested. */ -#undef GNULIB_TEST_GETOPT_POSIX - /* Define to 1 when the gnulib module gettimeofday should be tested. */ #undef GNULIB_TEST_GETTIMEOFDAY @@ -272,9 +225,6 @@ /* Define to 1 when the gnulib module lstat should be tested. */ #undef GNULIB_TEST_LSTAT -/* Define to 1 when the gnulib module malloc-gnu should be tested. */ -#undef GNULIB_TEST_MALLOC_GNU - /* Define to 1 when the gnulib module malloc-posix should be tested. */ #undef GNULIB_TEST_MALLOC_POSIX @@ -287,9 +237,6 @@ /* Define to 1 when the gnulib module memrchr should be tested. */ #undef GNULIB_TEST_MEMRCHR -/* Define to 1 when the gnulib module mkdir should be tested. */ -#undef GNULIB_TEST_MKDIR - /* Define to 1 when the gnulib module mkdirat should be tested. */ #undef GNULIB_TEST_MKDIRAT @@ -302,36 +249,12 @@ /* Define to 1 when the gnulib module opendir should be tested. */ #undef GNULIB_TEST_OPENDIR -/* Define to 1 when the gnulib module pipe should be tested. */ -#undef GNULIB_TEST_PIPE - -/* Define to 1 when the gnulib module printf should be tested. */ -#undef GNULIB_TEST_PRINTF - -/* Define to 1 when the gnulib module putc should be tested. */ -#undef GNULIB_TEST_PUTC - -/* Define to 1 when the gnulib module putchar should be tested. */ -#undef GNULIB_TEST_PUTCHAR - -/* Define to 1 when the gnulib module puts should be tested. */ -#undef GNULIB_TEST_PUTS - -/* Define to 1 when the gnulib module rawmemchr should be tested. */ -#undef GNULIB_TEST_RAWMEMCHR - /* Define to 1 when the gnulib module readlink should be tested. */ #undef GNULIB_TEST_READLINK /* Define to 1 when the gnulib module readlinkat should be tested. */ #undef GNULIB_TEST_READLINKAT -/* Define to 1 when the gnulib module reallocarray should be tested. */ -#undef GNULIB_TEST_REALLOCARRAY - -/* Define to 1 when the gnulib module realloc-gnu should be tested. */ -#undef GNULIB_TEST_REALLOC_GNU - /* Define to 1 when the gnulib module realloc-posix should be tested. */ #undef GNULIB_TEST_REALLOC_POSIX @@ -347,9 +270,6 @@ /* Define to 1 when the gnulib module rmdir should be tested. */ #undef GNULIB_TEST_RMDIR -/* Define to 1 when the gnulib module scanf should be tested. */ -#undef GNULIB_TEST_SCANF - /* Define to 1 when the gnulib module signbit should be tested. */ #undef GNULIB_TEST_SIGNBIT @@ -389,20 +309,6 @@ /* Define to 1 when the gnulib module vasprintf should be tested. */ #undef GNULIB_TEST_VASPRINTF -/* Define to 1 when the gnulib module vfprintf should be tested. */ -#undef GNULIB_TEST_VFPRINTF - -/* Define to 1 when the gnulib module vprintf should be tested. */ -#undef GNULIB_TEST_VPRINTF - -/* Define to a C preprocessor expression that evaluates to 1 or 0, depending - whether the gnulib module xalloc shall be considered present. */ -#undef GNULIB_XALLOC - -/* Define to a C preprocessor expression that evaluates to 1 or 0, depending - whether the gnulib module xalloc-die shall be considered present. */ -#undef GNULIB_XALLOC_DIE - /* Define to 1 if you have the `access' function. */ #undef HAVE_ACCESS @@ -425,9 +331,6 @@ /* Define to 1 if you have the `canonicalize_file_name' function. */ #undef HAVE_CANONICALIZE_FILE_NAME -/* Define to 1 if you have the `clock_getres' function. */ -#undef HAVE_CLOCK_GETRES - /* Define to 1 if you have the `clock_gettime' function. */ #undef HAVE_CLOCK_GETTIME @@ -452,9 +355,6 @@ /* Define to 1 if you have the <crtdefs.h> header file. */ #undef HAVE_CRTDEFS_H -/* Define to 1 if C supports variable-length arrays. */ -#undef HAVE_C_VARARRAYS - /* Define to 1 if you have the declaration of `alarm', and to 0 if you don't. */ #undef HAVE_DECL_ALARM @@ -475,34 +375,14 @@ */ #undef HAVE_DECL_DIRFD -/* Define to 1 if you have the declaration of `ecvt', and to 0 if you don't. - */ -#undef HAVE_DECL_ECVT - -/* Define to 1 if you have the declaration of `execvpe', and to 0 if you - don't. */ -#undef HAVE_DECL_EXECVPE - /* Define to 1 if you have the declaration of `fchdir', and to 0 if you don't. */ #undef HAVE_DECL_FCHDIR -/* Define to 1 if you have the declaration of `fcloseall', and to 0 if you - don't. */ -#undef HAVE_DECL_FCLOSEALL - -/* Define to 1 if you have the declaration of `fcvt', and to 0 if you don't. - */ -#undef HAVE_DECL_FCVT - /* Define to 1 if you have the declaration of `fdopendir', and to 0 if you don't. */ #undef HAVE_DECL_FDOPENDIR -/* Define to 1 if you have the declaration of `gcvt', and to 0 if you don't. - */ -#undef HAVE_DECL_GCVT - /* Define to 1 if you have the declaration of `getc_unlocked', and to 0 if you don't. */ #undef HAVE_DECL_GETC_UNLOCKED @@ -543,10 +423,6 @@ don't. */ #undef HAVE_DECL_STRNCASECMP -/* Define to 1 if you have the declaration of `wcsdup', and to 0 if you don't. - */ -#undef HAVE_DECL_WCSDUP - /* Define to 1 if you have the declaration of `_snprintf', and to 0 if you don't. */ #undef HAVE_DECL__SNPRINTF @@ -564,6 +440,9 @@ /* Define to 1 if you have the <dlfcn.h> header file. */ #undef HAVE_DLFCN_H +/* Define to 1 if you have the 'dup2' function. */ +#undef HAVE_DUP2 + /* Define to 1 if you have the `eaccess' function. */ #undef HAVE_EACCESS @@ -591,9 +470,6 @@ /* Define to 1 if you have the `fmemopen' function. */ #undef HAVE_FMEMOPEN -/* Define if the 'free' function is guaranteed to preserve errno. */ -#undef HAVE_FREE_POSIX - /* Define if the frexpl function is available in libc. */ #undef HAVE_FREXPL_IN_LIBC @@ -691,7 +567,7 @@ /* Define to 1 if you have the `lutimes' function. */ #undef HAVE_LUTIMES -/* Define if malloc, realloc, and calloc set errno on allocation failure. */ +/* Define if the 'malloc' function is POSIX compliant. */ #undef HAVE_MALLOC_POSIX /* Define to 1 if mmap()'s MAP_ANONYMOUS flag is available after including @@ -710,15 +586,6 @@ /* Define to 1 if you have the `memrchr' function. */ #undef HAVE_MEMRCHR -/* Define to 1 if you have the <minix/config.h> header file. */ -#undef HAVE_MINIX_CONFIG_H - -/* Define to 1 if <limits.h> defines the MIN and MAX macros. */ -#undef HAVE_MINMAX_IN_LIMITS_H - -/* Define to 1 if <sys/param.h> defines the MIN and MAX macros. */ -#undef HAVE_MINMAX_IN_SYS_PARAM_H - /* Define to 1 if you have the `mkdirat' function. */ #undef HAVE_MKDIRAT @@ -729,9 +596,6 @@ concept. */ #undef HAVE_MSVC_INVALID_PARAMETER_HANDLER -/* Define to 1 if utimensat works, except for the trailing slash handling. */ -#undef HAVE_NEARLY_WORKING_UTIMENSAT - /* Define to 1 if you have the `nl_langinfo' function. */ #undef HAVE_NL_LANGINFO @@ -750,17 +614,14 @@ /* Define to 1 if you have the `pipe' function. */ #undef HAVE_PIPE -/* Define to 1 if you have the `rawmemchr' function. */ -#undef HAVE_RAWMEMCHR - /* Define to 1 if you have the `readlink' function. */ #undef HAVE_READLINK /* Define to 1 if you have the `readlinkat' function. */ #undef HAVE_READLINKAT -/* Define to 1 if you have the `reallocarray' function. */ -#undef HAVE_REALLOCARRAY +/* Define if the 'realloc' function is POSIX compliant. */ +#undef HAVE_REALLOC_POSIX /* Define to 1 if you have the `realpath' function. */ #undef HAVE_REALPATH @@ -777,9 +638,6 @@ /* Define to 1 if you have the `scandirat' function. */ #undef HAVE_SCANDIRAT -/* Define to 1 if you have the <sdkddkver.h> header file. */ -#undef HAVE_SDKDDKVER_H - /* Define this if Linux/Solaris sendfile() is supported */ #undef HAVE_SENDFILE4_SUPPORT @@ -809,10 +667,6 @@ buffer had been large enough. */ #undef HAVE_SNPRINTF_RETVAL_C99 -/* Define if the string produced by the snprintf function is always NUL - terminated. */ -#undef HAVE_SNPRINTF_TRUNCATION_C99 - /* Define if you have ssl */ #undef HAVE_SSL @@ -838,6 +692,9 @@ /* Define to 1 if you have the `strcasestr' function. */ #undef HAVE_STRCASESTR +/* Define to 1 if you have the `strdup' function. */ +#undef HAVE_STRDUP + /* Define if you have `strerror_r'. */ #undef HAVE_STRERROR_R @@ -907,9 +764,6 @@ /* Define to 1 if you have the <sys/types.h> header file. */ #undef HAVE_SYS_TYPES_H -/* Define to 1 if you have the `timespec_get' function. */ -#undef HAVE_TIMESPEC_GET - /* Define to 1 if you have the <unistd.h> header file. */ #undef HAVE_UNISTD_H @@ -980,127 +834,6 @@ /* Define to 1 if you have the `_set_invalid_parameter_handler' function. */ #undef HAVE__SET_INVALID_PARAMETER_HANDLER -/* Define to 1 if the compiler supports __builtin_expect, - and to 2 if <builtins.h> does. */ -#undef HAVE___BUILTIN_EXPECT -#ifndef HAVE___BUILTIN_EXPECT -# define __builtin_expect(e, c) (e) -#elif HAVE___BUILTIN_EXPECT == 2 -# include <builtins.h> -#endif - - -/* Define to 1 if ctype.h defines __header_inline. */ -#undef HAVE___HEADER_INLINE - -/* Please see the Gnulib manual for how to use these macros. - - Suppress extern inline with HP-UX cc, as it appears to be broken; see - <https://lists.gnu.org/r/bug-texinfo/2013-02/msg00030.html>. - - Suppress extern inline with Sun C in standards-conformance mode, as it - mishandles inline functions that call each other. E.g., for 'inline void f - (void) { } inline void g (void) { f (); }', c99 incorrectly complains - 'reference to static identifier "f" in extern inline function'. - This bug was observed with Oracle Developer Studio 12.6 - (Sun C 5.15 SunOS_sparc 2017/05/30). - - Suppress extern inline (with or without __attribute__ ((__gnu_inline__))) - on configurations that mistakenly use 'static inline' to implement - functions or macros in standard C headers like <ctype.h>. For example, - if isdigit is mistakenly implemented via a static inline function, - a program containing an extern inline function that calls isdigit - may not work since the C standard prohibits extern inline functions - from calling static functions (ISO C 99 section 6.7.4.(3). - This bug is known to occur on: - - OS X 10.8 and earlier; see: - https://lists.gnu.org/r/bug-gnulib/2012-12/msg00023.html - - DragonFly; see - http://muscles.dragonflybsd.org/bulk/clang-master-potential/20141111_102002/logs/ah-tty-0.3.12.log - - FreeBSD; see: - https://lists.gnu.org/r/bug-gnulib/2014-07/msg00104.html - - OS X 10.9 has a macro __header_inline indicating the bug is fixed for C and - for clang but remains for g++; see <https://trac.macports.org/ticket/41033>. - Assume DragonFly and FreeBSD will be similar. - - GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99 - inline semantics, unless -fgnu89-inline is used. It defines a macro - __GNUC_STDC_INLINE__ to indicate this situation or a macro - __GNUC_GNU_INLINE__ to indicate the opposite situation. - GCC 4.2 with -std=c99 or -std=gnu99 implements the GNU C inline - semantics but warns, unless -fgnu89-inline is used: - warning: C99 inline functions are not supported; using GNU89 - warning: to disable this warning use -fgnu89-inline or the gnu_inline function attribute - It defines a macro __GNUC_GNU_INLINE__ to indicate this situation. - */ -#if (((defined __APPLE__ && defined __MACH__) \ - || defined __DragonFly__ || defined __FreeBSD__) \ - && (defined HAVE___HEADER_INLINE \ - ? (defined __cplusplus && defined __GNUC_STDC_INLINE__ \ - && ! defined __clang__) \ - : ((! defined _DONT_USE_CTYPE_INLINE_ \ - && (defined __GNUC__ || defined __cplusplus)) \ - || (defined _FORTIFY_SOURCE && 0 < _FORTIFY_SOURCE \ - && defined __GNUC__ && ! defined __cplusplus)))) -# define _GL_EXTERN_INLINE_STDHEADER_BUG -#endif -#if ((__GNUC__ \ - ? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \ - : (199901L <= __STDC_VERSION__ \ - && !defined __HP_cc \ - && !defined __PGI \ - && !(defined __SUNPRO_C && __STDC__))) \ - && !defined _GL_EXTERN_INLINE_STDHEADER_BUG) -# define _GL_INLINE inline -# define _GL_EXTERN_INLINE extern inline -# define _GL_EXTERN_INLINE_IN_USE -#elif (2 < __GNUC__ + (7 <= __GNUC_MINOR__) && !defined __STRICT_ANSI__ \ - && !defined _GL_EXTERN_INLINE_STDHEADER_BUG) -# if defined __GNUC_GNU_INLINE__ && __GNUC_GNU_INLINE__ - /* __gnu_inline__ suppresses a GCC 4.2 diagnostic. */ -# define _GL_INLINE extern inline __attribute__ ((__gnu_inline__)) -# else -# define _GL_INLINE extern inline -# endif -# define _GL_EXTERN_INLINE extern -# define _GL_EXTERN_INLINE_IN_USE -#else -# define _GL_INLINE _GL_UNUSED static -# define _GL_EXTERN_INLINE _GL_UNUSED static -#endif - -/* In GCC 4.6 (inclusive) to 5.1 (exclusive), - suppress bogus "no previous prototype for 'FOO'" - and "no previous declaration for 'FOO'" diagnostics, - when FOO is an inline function in the header; see - <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54113> and - <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63877>. */ -#if __GNUC__ == 4 && 6 <= __GNUC_MINOR__ -# if defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ -# define _GL_INLINE_HEADER_CONST_PRAGMA -# else -# define _GL_INLINE_HEADER_CONST_PRAGMA \ - _Pragma ("GCC diagnostic ignored \"-Wsuggest-attribute=const\"") -# endif -# define _GL_INLINE_HEADER_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wmissing-prototypes\"") \ - _Pragma ("GCC diagnostic ignored \"-Wmissing-declarations\"") \ - _GL_INLINE_HEADER_CONST_PRAGMA -# define _GL_INLINE_HEADER_END \ - _Pragma ("GCC diagnostic pop") -#else -# define _GL_INLINE_HEADER_BEGIN -# define _GL_INLINE_HEADER_END -#endif - -/* Define to 1 if the compiler supports the keyword '__inline'. */ -#undef HAVE___INLINE - /* Define as the bit index in the word where to find bit 0 of the exponent of 'long double'. */ #undef LDBL_EXPBIT0_BIT @@ -1206,6 +939,9 @@ /* Define to the version of this package. */ #undef PACKAGE_VERSION +/* Define if <inttypes.h> exists and defines unusable PRI* macros. */ +#undef PRI_MACROS_BROKEN + /* Define to the type that is the result of default argument promotions of type mode_t. */ #undef PROMOTED_MODE_T @@ -1217,10 +953,6 @@ /* Define to 1 if readlink fails to recognize a trailing slash. */ #undef READLINK_TRAILING_SLASH_BUG -/* Define to 1 if readlink sets errno instead of truncating a too-long link. - */ -#undef READLINK_TRUNCATE_BUG - /* Define if rename does not work when the destination file exists, as on Cygwin 1.5 or Windows. */ #undef RENAME_DEST_EXISTS_BUG @@ -1247,10 +979,6 @@ slash */ #undef REPLACE_FUNC_STAT_FILE -/* Define to 1 if utime needs help when passed a file name with a trailing - slash */ -#undef REPLACE_FUNC_UTIME_FILE - /* Define to 1 if open() should work around the inability to open a directory. */ #undef REPLACE_OPEN_DIRECTORY @@ -1312,44 +1040,19 @@ #ifndef _DARWIN_C_SOURCE # undef _DARWIN_C_SOURCE #endif -/* Enable general extensions on Solaris. */ -#ifndef __EXTENSIONS__ -# undef __EXTENSIONS__ -#endif /* Enable GNU extensions on systems that have them. */ #ifndef _GNU_SOURCE # undef _GNU_SOURCE #endif -/* Enable X/Open compliant socket functions that do not require linking - with -lxnet on HP-UX 11.11. */ -#ifndef _HPUX_ALT_XOPEN_SOCKET_API -# undef _HPUX_ALT_XOPEN_SOCKET_API -#endif -/* Identify the host operating system as Minix. - This macro does not affect the system headers' behavior. - A future release of Autoconf may stop defining this macro. */ -#ifndef _MINIX -# undef _MINIX -#endif -/* Enable general extensions on NetBSD. - Enable NetBSD compatibility extensions on Minix. */ +/* Enable NetBSD extensions on NetBSD. */ #ifndef _NETBSD_SOURCE # undef _NETBSD_SOURCE #endif -/* Enable OpenBSD compatibility extensions on NetBSD. - Oddly enough, this does nothing on OpenBSD. */ +/* Enable OpenBSD extensions on NetBSD. */ #ifndef _OPENBSD_SOURCE # undef _OPENBSD_SOURCE #endif -/* Define to 1 if needed for POSIX-compatible behavior. */ -#ifndef _POSIX_SOURCE -# undef _POSIX_SOURCE -#endif -/* Define to 2 if needed for POSIX-compatible behavior. */ -#ifndef _POSIX_1_SOURCE -# undef _POSIX_1_SOURCE -#endif -/* Enable POSIX-compatible threading on Solaris. */ +/* Enable threading extensions on Solaris. */ #ifndef _POSIX_PTHREAD_SEMANTICS # undef _POSIX_PTHREAD_SEMANTICS #endif @@ -1385,11 +1088,21 @@ #ifndef _TANDEM_SOURCE # undef _TANDEM_SOURCE #endif -/* Enable X/Open extensions. Define to 500 only if necessary - to make mbstate_t available. */ +/* Enable X/Open extensions if necessary. HP-UX 11.11 defines + mbstate_t only if _XOPEN_SOURCE is defined to 500, regardless of + whether compiling with -Ae or -D_HPUX_SOURCE=1. */ #ifndef _XOPEN_SOURCE # undef _XOPEN_SOURCE #endif +/* Enable X/Open compliant socket functions that do not require linking + with -lxnet on HP-UX 11.11. */ +#ifndef _HPUX_ALT_XOPEN_SOCKET_API +# undef _HPUX_ALT_XOPEN_SOCKET_API +#endif +/* Enable general extensions on Solaris. */ +#ifndef __EXTENSIONS__ +# undef __EXTENSIONS__ +#endif /* Version number of package */ @@ -1418,43 +1131,23 @@ /* Number of bits in a file offset, on hosts where this is settable. */ #undef _FILE_OFFSET_BITS -/* True if the compiler says it groks GNU C version MAJOR.MINOR. */ -#if defined __GNUC__ && defined __GNUC_MINOR__ -# define _GL_GNUC_PREREQ(major, minor) \ - ((major) < __GNUC__ + ((minor) <= __GNUC_MINOR__)) -#else -# define _GL_GNUC_PREREQ(major, minor) 0 -#endif - - -/* Define to enable the declarations of ISO C 11 types and functions. */ -#undef _ISOC11_SOURCE - /* Define for large files, on AIX-style hosts. */ #undef _LARGE_FILES +/* Define to 1 if on MINIX. */ +#undef _MINIX + +/* Define to 1 to make NetBSD features available. MINIX 3 needs this. */ +#undef _NETBSD_SOURCE + /* The _Noreturn keyword of C11. */ #ifndef _Noreturn -# if (defined __cplusplus \ - && ((201103 <= __cplusplus && !(__GNUC__ == 4 && __GNUC_MINOR__ == 7)) \ - || (defined _MSC_VER && 1900 <= _MSC_VER)) \ - && 0) - /* [[noreturn]] is not practically usable, because with it the syntax - extern _Noreturn void func (...); - would not be valid; such a declaration would only be valid with 'extern' - and '_Noreturn' swapped, or without the 'extern' keyword. However, some - AIX system header files and several gnulib header files use precisely - this syntax with 'extern'. */ +# if 201103 <= (defined __cplusplus ? __cplusplus : 0) # define _Noreturn [[noreturn]] -# elif ((!defined __cplusplus || defined __clang__) \ - && (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) \ - || (!defined __STRICT_ANSI__ \ - && (_GL_GNUC_PREREQ (4, 7) \ - || (defined __apple_build_version__ \ - ? 6000000 <= __apple_build_version__ \ - : 3 < __clang_major__ + (5 <= __clang_minor__)))))) +# elif (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) \ + || 4 < __GNUC__ + (7 <= __GNUC_MINOR__)) /* _Noreturn works as-is. */ -# elif _GL_GNUC_PREREQ (2, 8) || defined __clang__ || 0x5110 <= __SUNPRO_C +# elif 2 < __GNUC__ + (8 <= __GNUC_MINOR__) || 0x5110 <= __SUNPRO_C # define _Noreturn __attribute__ ((__noreturn__)) # elif 1200 <= (defined _MSC_VER ? _MSC_VER : 0) # define _Noreturn __declspec (noreturn) @@ -1464,8 +1157,12 @@ #endif -/* Number of bits in a timestamp, on hosts where this is settable. */ -#undef _TIME_BITS +/* Define to 2 if the system does not provide POSIX.1 features except with + this defined. */ +#undef _POSIX_1_SOURCE + +/* Define to 1 if you need to in order for 'stat' and other things to work. */ +#undef _POSIX_SOURCE /* For standard stat data types on VMS. */ #undef _USE_STD_STAT @@ -1474,410 +1171,116 @@ used. */ #undef __GETOPT_PREFIX -/* For 64-bit time_t on 32-bit mingw. */ -#undef __MINGW_USE_VC2005_COMPAT - /* Define to 1 if the system <stdint.h> predates C++11. */ #undef __STDC_CONSTANT_MACROS /* Define to 1 if the system <stdint.h> predates C++11. */ #undef __STDC_LIMIT_MACROS -/* Define to 1 if C does not support variable-length arrays, and if the - compiler does not already define this. */ -#undef __STDC_NO_VLA__ - -/* The _GL_ASYNC_SAFE marker should be attached to functions that are - signal handlers (for signals other than SIGABRT, SIGPIPE) or can be - invoked from such signal handlers. Such functions have some restrictions: - * All functions that it calls should be marked _GL_ASYNC_SAFE as well, - or should be listed as async-signal-safe in POSIX - <https://pubs.opengroup.org/onlinepubs/9699919799/functions/V2_chap02.html#tag_15_04> - section 2.4.3. Note that malloc(), sprintf(), and fwrite(), in - particular, are NOT async-signal-safe. - * All memory locations (variables and struct fields) that these functions - access must be marked 'volatile'. This holds for both read and write - accesses. Otherwise the compiler might optimize away stores to and - reads from such locations that occur in the program, depending on its - data flow analysis. For example, when the program contains a loop - that is intended to inspect a variable set from within a signal handler - while (!signal_occurred) - ; - the compiler is allowed to transform this into an endless loop if the - variable 'signal_occurred' is not declared 'volatile'. - Additionally, recall that: - * A signal handler should not modify errno (except if it is a handler - for a fatal signal and ends by raising the same signal again, thus - provoking the termination of the process). If it invokes a function - that may clobber errno, it needs to save and restore the value of - errno. */ -#define _GL_ASYNC_SAFE - - -/* Attributes. */ -#if (defined __has_attribute \ - && (!defined __clang_minor__ \ - || 3 < __clang_major__ + (5 <= __clang_minor__))) -# define _GL_HAS_ATTRIBUTE(attr) __has_attribute (__##attr##__) -#else -# define _GL_HAS_ATTRIBUTE(attr) _GL_ATTR_##attr -# define _GL_ATTR_alloc_size _GL_GNUC_PREREQ (4, 3) -# define _GL_ATTR_always_inline _GL_GNUC_PREREQ (3, 2) -# define _GL_ATTR_artificial _GL_GNUC_PREREQ (4, 3) -# define _GL_ATTR_cold _GL_GNUC_PREREQ (4, 3) -# define _GL_ATTR_const _GL_GNUC_PREREQ (2, 95) -# define _GL_ATTR_deprecated _GL_GNUC_PREREQ (3, 1) -# define _GL_ATTR_diagnose_if 0 -# define _GL_ATTR_error _GL_GNUC_PREREQ (4, 3) -# define _GL_ATTR_externally_visible _GL_GNUC_PREREQ (4, 1) -# define _GL_ATTR_fallthrough _GL_GNUC_PREREQ (7, 0) -# define _GL_ATTR_format _GL_GNUC_PREREQ (2, 7) -# define _GL_ATTR_leaf _GL_GNUC_PREREQ (4, 6) -# define _GL_ATTR_malloc _GL_GNUC_PREREQ (3, 0) -# ifdef _ICC -# define _GL_ATTR_may_alias 0 -# else -# define _GL_ATTR_may_alias _GL_GNUC_PREREQ (3, 3) -# endif -# define _GL_ATTR_noinline _GL_GNUC_PREREQ (3, 1) -# define _GL_ATTR_nonnull _GL_GNUC_PREREQ (3, 3) -# define _GL_ATTR_nonstring _GL_GNUC_PREREQ (8, 0) -# define _GL_ATTR_nothrow _GL_GNUC_PREREQ (3, 3) -# define _GL_ATTR_packed _GL_GNUC_PREREQ (2, 7) -# define _GL_ATTR_pure _GL_GNUC_PREREQ (2, 96) -# define _GL_ATTR_returns_nonnull _GL_GNUC_PREREQ (4, 9) -# define _GL_ATTR_sentinel _GL_GNUC_PREREQ (4, 0) -# define _GL_ATTR_unused _GL_GNUC_PREREQ (2, 7) -# define _GL_ATTR_warn_unused_result _GL_GNUC_PREREQ (3, 4) -#endif - -#ifdef __has_c_attribute -# define _GL_HAS_C_ATTRIBUTE(attr) __has_c_attribute (__##attr##__) -#else -# define _GL_HAS_C_ATTRIBUTE(attr) 0 -#endif - - -/* _GL_ATTRIBUTE_ALLOC_SIZE ((N)) declares that the Nth argument of the function - is the size of the returned memory block. - _GL_ATTRIBUTE_ALLOC_SIZE ((M, N)) declares that the Mth argument multiplied - by the Nth argument of the function is the size of the returned memory block. - */ -/* Applies to: function, pointer to function, function types. */ -#if _GL_HAS_ATTRIBUTE (alloc_size) -# define _GL_ATTRIBUTE_ALLOC_SIZE(args) __attribute__ ((__alloc_size__ args)) -#else -# define _GL_ATTRIBUTE_ALLOC_SIZE(args) -#endif - -/* _GL_ATTRIBUTE_ALWAYS_INLINE tells that the compiler should always inline the - function and report an error if it cannot do so. */ -/* Applies to: function. */ -#if _GL_HAS_ATTRIBUTE (always_inline) -# define _GL_ATTRIBUTE_ALWAYS_INLINE __attribute__ ((__always_inline__)) -#else -# define _GL_ATTRIBUTE_ALWAYS_INLINE -#endif - -/* _GL_ATTRIBUTE_ARTIFICIAL declares that the function is not important to show - in stack traces when debugging. The compiler should omit the function from - stack traces. */ -/* Applies to: function. */ -#if _GL_HAS_ATTRIBUTE (artificial) -# define _GL_ATTRIBUTE_ARTIFICIAL __attribute__ ((__artificial__)) -#else -# define _GL_ATTRIBUTE_ARTIFICIAL -#endif - -/* _GL_ATTRIBUTE_COLD declares that the function is rarely executed. */ -/* Applies to: functions. */ -/* Avoid __attribute__ ((cold)) on MinGW; see thread starting at - <https://lists.gnu.org/r/emacs-devel/2019-04/msg01152.html>. - Also, Oracle Studio 12.6 requires 'cold' not '__cold__'. */ -#if _GL_HAS_ATTRIBUTE (cold) && !defined __MINGW32__ -# ifndef __SUNPRO_C -# define _GL_ATTRIBUTE_COLD __attribute__ ((__cold__)) -# else -# define _GL_ATTRIBUTE_COLD __attribute__ ((cold)) -# endif -#else -# define _GL_ATTRIBUTE_COLD -#endif - -/* _GL_ATTRIBUTE_CONST declares that it is OK for a compiler to omit duplicate - calls to the function with the same arguments. - This attribute is safe for a function that neither depends on nor affects - observable state, and always returns exactly once - e.g., does not loop - forever, and does not call longjmp. - (This attribute is stricter than _GL_ATTRIBUTE_PURE.) */ -/* Applies to: functions. */ -#if _GL_HAS_ATTRIBUTE (const) -# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__)) -#else -# define _GL_ATTRIBUTE_CONST -#endif - -/* _GL_ATTRIBUTE_DEALLOC (F, I) declares that the function returns pointers - that can be freed by passing them as the Ith argument to the - function F. - _GL_ATTRIBUTE_DEALLOC_FREE declares that the function returns pointers that - can be freed via 'free'; it can be used only after declaring 'free'. */ -/* Applies to: functions. Cannot be used on inline functions. */ -#if _GL_GNUC_PREREQ (11, 0) -# define _GL_ATTRIBUTE_DEALLOC(f, i) __attribute__ ((__malloc__ (f, i))) -#else -# define _GL_ATTRIBUTE_DEALLOC(f, i) -#endif -/* If gnulib's <string.h> or <wchar.h> has already defined this macro, continue - to use this earlier definition, since <stdlib.h> may not have been included - yet. */ -#ifndef _GL_ATTRIBUTE_DEALLOC_FREE -# define _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_DEALLOC (free, 1) -#endif - -/* _GL_ATTRIBUTE_DEPRECATED: Declares that an entity is deprecated. - The compiler may warn if the entity is used. */ -/* Applies to: - - function, variable, - - struct, union, struct/union member, - - enumeration, enumeration item, - - typedef, - in C++ also: namespace, class, template specialization. */ -#if _GL_HAS_C_ATTRIBUTE (deprecated) -# define _GL_ATTRIBUTE_DEPRECATED [[__deprecated__]] -#elif _GL_HAS_ATTRIBUTE (deprecated) -# define _GL_ATTRIBUTE_DEPRECATED __attribute__ ((__deprecated__)) -#else -# define _GL_ATTRIBUTE_DEPRECATED -#endif - -/* _GL_ATTRIBUTE_ERROR(msg) requests an error if a function is called and - the function call is not optimized away. - _GL_ATTRIBUTE_WARNING(msg) requests a warning if a function is called and - the function call is not optimized away. */ -/* Applies to: functions. */ -#if _GL_HAS_ATTRIBUTE (error) -# define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__error__ (msg))) -# define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__warning__ (msg))) -#elif _GL_HAS_ATTRIBUTE (diagnose_if) -# define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__diagnose_if__ (1, msg, "error"))) -# define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__diagnose_if__ (1, msg, "warning"))) -#else -# define _GL_ATTRIBUTE_ERROR(msg) -# define _GL_ATTRIBUTE_WARNING(msg) -#endif - -/* _GL_ATTRIBUTE_EXTERNALLY_VISIBLE declares that the entity should remain - visible to debuggers etc., even with '-fwhole-program'. */ -/* Applies to: functions, variables. */ -#if _GL_HAS_ATTRIBUTE (externally_visible) -# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE __attribute__ ((externally_visible)) -#else -# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE -#endif - -/* _GL_ATTRIBUTE_FALLTHROUGH declares that it is not a programming mistake if - the control flow falls through to the immediately following 'case' or - 'default' label. The compiler should not warn in this case. */ -/* Applies to: Empty statement (;), inside a 'switch' statement. */ -/* Always expands to something. */ -#if _GL_HAS_C_ATTRIBUTE (fallthrough) -# define _GL_ATTRIBUTE_FALLTHROUGH [[__fallthrough__]] -#elif _GL_HAS_ATTRIBUTE (fallthrough) -# define _GL_ATTRIBUTE_FALLTHROUGH __attribute__ ((__fallthrough__)) -#else -# define _GL_ATTRIBUTE_FALLTHROUGH ((void) 0) -#endif - -/* _GL_ATTRIBUTE_FORMAT ((ARCHETYPE, STRING-INDEX, FIRST-TO-CHECK)) - declares that the STRING-INDEXth function argument is a format string of - style ARCHETYPE, which is one of: - printf, gnu_printf - scanf, gnu_scanf, - strftime, gnu_strftime, - strfmon, - or the same thing prefixed and suffixed with '__'. - If FIRST-TO-CHECK is not 0, arguments starting at FIRST-TO_CHECK - are suitable for the format string. */ -/* Applies to: functions. */ -#if _GL_HAS_ATTRIBUTE (format) -# define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec)) -#else -# define _GL_ATTRIBUTE_FORMAT(spec) -#endif - -/* _GL_ATTRIBUTE_LEAF declares that if the function is called from some other - compilation unit, it executes code from that unit only by return or by - exception handling. This declaration lets the compiler optimize that unit - more aggressively. */ -/* Applies to: functions. */ -#if _GL_HAS_ATTRIBUTE (leaf) -# define _GL_ATTRIBUTE_LEAF __attribute__ ((__leaf__)) -#else -# define _GL_ATTRIBUTE_LEAF -#endif +/* Please see the Gnulib manual for how to use these macros. -/* _GL_ATTRIBUTE_MALLOC declares that the function returns a pointer to freshly - allocated memory. */ -/* Applies to: functions. */ -#if _GL_HAS_ATTRIBUTE (malloc) -# define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__)) -#else -# define _GL_ATTRIBUTE_MALLOC -#endif + Suppress extern inline with HP-UX cc, as it appears to be broken; see + <https://lists.gnu.org/r/bug-texinfo/2013-02/msg00030.html>. -/* _GL_ATTRIBUTE_MAY_ALIAS declares that pointers to the type may point to the - same storage as pointers to other types. Thus this declaration disables - strict aliasing optimization. */ -/* Applies to: types. */ -/* Oracle Studio 12.6 mishandles may_alias despite __has_attribute OK. */ -#if _GL_HAS_ATTRIBUTE (may_alias) && !defined __SUNPRO_C -# define _GL_ATTRIBUTE_MAY_ALIAS __attribute__ ((__may_alias__)) -#else -# define _GL_ATTRIBUTE_MAY_ALIAS -#endif + Suppress extern inline with Sun C in standards-conformance mode, as it + mishandles inline functions that call each other. E.g., for 'inline void f + (void) { } inline void g (void) { f (); }', c99 incorrectly complains + 'reference to static identifier "f" in extern inline function'. + This bug was observed with Sun C 5.12 SunOS_i386 2011/11/16. -/* _GL_ATTRIBUTE_MAYBE_UNUSED declares that it is not a programming mistake if - the entity is not used. The compiler should not warn if the entity is not - used. */ -/* Applies to: - - function, variable, - - struct, union, struct/union member, - - enumeration, enumeration item, - - typedef, - in C++ also: class. */ -/* In C++ and C2x, this is spelled [[__maybe_unused__]]. - GCC's syntax is __attribute__ ((__unused__)). - clang supports both syntaxes. */ -#if _GL_HAS_C_ATTRIBUTE (maybe_unused) -# define _GL_ATTRIBUTE_MAYBE_UNUSED [[__maybe_unused__]] -#else -# define _GL_ATTRIBUTE_MAYBE_UNUSED _GL_ATTRIBUTE_UNUSED -#endif -/* Alternative spelling of this macro, for convenience. */ -#define _GL_UNUSED _GL_ATTRIBUTE_MAYBE_UNUSED -/* Earlier spellings of this macro. */ -#define _UNUSED_PARAMETER_ _GL_ATTRIBUTE_MAYBE_UNUSED - -/* _GL_ATTRIBUTE_NODISCARD declares that the caller of the function should not - discard the return value. The compiler may warn if the caller does not use - the return value, unless the caller uses something like ignore_value. */ -/* Applies to: function, enumeration, class. */ -#if _GL_HAS_C_ATTRIBUTE (nodiscard) -# define _GL_ATTRIBUTE_NODISCARD [[__nodiscard__]] -#elif _GL_HAS_ATTRIBUTE (warn_unused_result) -# define _GL_ATTRIBUTE_NODISCARD __attribute__ ((__warn_unused_result__)) -#else -# define _GL_ATTRIBUTE_NODISCARD -#endif + Suppress extern inline (with or without __attribute__ ((__gnu_inline__))) + on configurations that mistakenly use 'static inline' to implement + functions or macros in standard C headers like <ctype.h>. For example, + if isdigit is mistakenly implemented via a static inline function, + a program containing an extern inline function that calls isdigit + may not work since the C standard prohibits extern inline functions + from calling static functions (ISO C 99 section 6.7.4.(3). + This bug is known to occur on: -/* _GL_ATTRIBUTE_NOINLINE tells that the compiler should not inline the - function. */ -/* Applies to: functions. */ -#if _GL_HAS_ATTRIBUTE (noinline) -# define _GL_ATTRIBUTE_NOINLINE __attribute__ ((__noinline__)) -#else -# define _GL_ATTRIBUTE_NOINLINE -#endif + OS X 10.8 and earlier; see: + https://lists.gnu.org/r/bug-gnulib/2012-12/msg00023.html -/* _GL_ATTRIBUTE_NONNULL ((N1, N2,...)) declares that the arguments N1, N2,... - must not be NULL. - _GL_ATTRIBUTE_NONNULL () declares that all pointer arguments must not be - null. */ -/* Applies to: functions. */ -#if _GL_HAS_ATTRIBUTE (nonnull) -# define _GL_ATTRIBUTE_NONNULL(args) __attribute__ ((__nonnull__ args)) -#else -# define _GL_ATTRIBUTE_NONNULL(args) -#endif + DragonFly; see + http://muscles.dragonflybsd.org/bulk/bleeding-edge-potential/latest-per-pkg/ah-tty-0.3.12.log -/* _GL_ATTRIBUTE_NONSTRING declares that the contents of a character array is - not meant to be NUL-terminated. */ -/* Applies to: struct/union members and variables that are arrays of element - type '[[un]signed] char'. */ -#if _GL_HAS_ATTRIBUTE (nonstring) -# define _GL_ATTRIBUTE_NONSTRING __attribute__ ((__nonstring__)) -#else -# define _GL_ATTRIBUTE_NONSTRING -#endif + FreeBSD; see: + https://lists.gnu.org/r/bug-gnulib/2014-07/msg00104.html -/* There is no _GL_ATTRIBUTE_NORETURN; use _Noreturn instead. */ + OS X 10.9 has a macro __header_inline indicating the bug is fixed for C and + for clang but remains for g++; see <https://trac.macports.org/ticket/41033>. + Assume DragonFly and FreeBSD will be similar. -/* _GL_ATTRIBUTE_NOTHROW declares that the function does not throw exceptions. + GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99 + inline semantics, unless -fgnu89-inline is used. It defines a macro + __GNUC_STDC_INLINE__ to indicate this situation or a macro + __GNUC_GNU_INLINE__ to indicate the opposite situation. + GCC 4.2 with -std=c99 or -std=gnu99 implements the GNU C inline + semantics but warns, unless -fgnu89-inline is used: + warning: C99 inline functions are not supported; using GNU89 + warning: to disable this warning use -fgnu89-inline or the gnu_inline function attribute + It defines a macro __GNUC_GNU_INLINE__ to indicate this situation. */ -/* Applies to: functions. */ -#if _GL_HAS_ATTRIBUTE (nothrow) && !defined __cplusplus -# define _GL_ATTRIBUTE_NOTHROW __attribute__ ((__nothrow__)) -#else -# define _GL_ATTRIBUTE_NOTHROW -#endif - -/* _GL_ATTRIBUTE_PACKED declares: - For struct members: The member has the smallest possible alignment. - For struct, union, class: All members have the smallest possible alignment, - minimizing the memory required. */ -/* Applies to: struct members, struct, union, - in C++ also: class. */ -#if _GL_HAS_ATTRIBUTE (packed) -# define _GL_ATTRIBUTE_PACKED __attribute__ ((__packed__)) -#else -# define _GL_ATTRIBUTE_PACKED -#endif - -/* _GL_ATTRIBUTE_PURE declares that It is OK for a compiler to omit duplicate - calls to the function with the same arguments if observable state is not - changed between calls. - This attribute is safe for a function that does not affect - observable state, and always returns exactly once. - (This attribute is looser than _GL_ATTRIBUTE_CONST.) */ -/* Applies to: functions. */ -#if _GL_HAS_ATTRIBUTE (pure) -# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) -#else -# define _GL_ATTRIBUTE_PURE -#endif - -/* _GL_ATTRIBUTE_RETURNS_NONNULL declares that the function's return value is - a non-NULL pointer. */ -/* Applies to: functions. */ -#if _GL_HAS_ATTRIBUTE (returns_nonnull) -# define _GL_ATTRIBUTE_RETURNS_NONNULL __attribute__ ((__returns_nonnull__)) -#else -# define _GL_ATTRIBUTE_RETURNS_NONNULL -#endif - -/* _GL_ATTRIBUTE_SENTINEL(pos) declares that the variadic function expects a - trailing NULL argument. - _GL_ATTRIBUTE_SENTINEL () - The last argument is NULL (requires C99). - _GL_ATTRIBUTE_SENTINEL ((N)) - The (N+1)st argument from the end is NULL. */ -/* Applies to: functions. */ -#if _GL_HAS_ATTRIBUTE (sentinel) -# define _GL_ATTRIBUTE_SENTINEL(pos) __attribute__ ((__sentinel__ pos)) -#else -# define _GL_ATTRIBUTE_SENTINEL(pos) +#if (((defined __APPLE__ && defined __MACH__) \ + || defined __DragonFly__ || defined __FreeBSD__) \ + && (defined __header_inline \ + ? (defined __cplusplus && defined __GNUC_STDC_INLINE__ \ + && ! defined __clang__) \ + : ((! defined _DONT_USE_CTYPE_INLINE_ \ + && (defined __GNUC__ || defined __cplusplus)) \ + || (defined _FORTIFY_SOURCE && 0 < _FORTIFY_SOURCE \ + && defined __GNUC__ && ! defined __cplusplus)))) +# define _GL_EXTERN_INLINE_STDHEADER_BUG #endif - -/* A helper macro. Don't use it directly. */ -#if _GL_HAS_ATTRIBUTE (unused) -# define _GL_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) +#if ((__GNUC__ \ + ? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \ + : (199901L <= __STDC_VERSION__ \ + && !defined __HP_cc \ + && !defined __PGI \ + && !(defined __SUNPRO_C && __STDC__))) \ + && !defined _GL_EXTERN_INLINE_STDHEADER_BUG) +# define _GL_INLINE inline +# define _GL_EXTERN_INLINE extern inline +# define _GL_EXTERN_INLINE_IN_USE +#elif (2 < __GNUC__ + (7 <= __GNUC_MINOR__) && !defined __STRICT_ANSI__ \ + && !defined _GL_EXTERN_INLINE_STDHEADER_BUG) +# if defined __GNUC_GNU_INLINE__ && __GNUC_GNU_INLINE__ + /* __gnu_inline__ suppresses a GCC 4.2 diagnostic. */ +# define _GL_INLINE extern inline __attribute__ ((__gnu_inline__)) +# else +# define _GL_INLINE extern inline +# endif +# define _GL_EXTERN_INLINE extern +# define _GL_EXTERN_INLINE_IN_USE #else -# define _GL_ATTRIBUTE_UNUSED +# define _GL_INLINE static _GL_UNUSED +# define _GL_EXTERN_INLINE static _GL_UNUSED #endif - -/* _GL_UNUSED_LABEL; declares that it is not a programming mistake if the - immediately preceding label is not used. The compiler should not warn - if the label is not used. */ -/* Applies to: label (both in C and C++). */ -/* Note that g++ < 4.5 does not support the '__attribute__ ((__unused__)) ;' - syntax. But clang does. */ -#if !(defined __cplusplus && !_GL_GNUC_PREREQ (4, 5)) || defined __clang__ -# define _GL_UNUSED_LABEL _GL_ATTRIBUTE_UNUSED +/* In GCC 4.6 (inclusive) to 5.1 (exclusive), + suppress bogus "no previous prototype for 'FOO'" + and "no previous declaration for 'FOO'" diagnostics, + when FOO is an inline function in the header; see + <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54113> and + <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63877>. */ +#if __GNUC__ == 4 && 6 <= __GNUC_MINOR__ +# if defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ +# define _GL_INLINE_HEADER_CONST_PRAGMA +# else +# define _GL_INLINE_HEADER_CONST_PRAGMA \ + _Pragma ("GCC diagnostic ignored \"-Wsuggest-attribute=const\"") +# endif +# define _GL_INLINE_HEADER_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wmissing-prototypes\"") \ + _Pragma ("GCC diagnostic ignored \"-Wmissing-declarations\"") \ + _GL_INLINE_HEADER_CONST_PRAGMA +# define _GL_INLINE_HEADER_END \ + _Pragma ("GCC diagnostic pop") #else -# define _GL_UNUSED_LABEL +# define _GL_INLINE_HEADER_BEGIN +# define _GL_INLINE_HEADER_END #endif - /* Define to `int' if <sys/types.h> doesn't define. */ #undef gid_t @@ -1894,22 +1297,6 @@ # define __GNUC_STDC_INLINE__ 1 #endif -/* _GL_CMP (n1, n2) performs a three-valued comparison on n1 vs. n2, where - n1 and n2 are expressions without side effects, that evaluate to real - numbers (excluding NaN). - It returns - 1 if n1 > n2 - 0 if n1 == n2 - -1 if n1 < n2 - The naïve code (n1 > n2 ? 1 : n1 < n2 ? -1 : 0) produces a conditional - jump with nearly all GCC versions up to GCC 10. - This variant (n1 < n2 ? -1 : n1 > n2) produces a conditional with many - GCC versions up to GCC 9. - The better code (n1 > n2) - (n1 < n2) from Hacker's Delight § 2-9 - avoids conditional jumps in all GCC versions >= 3.4. */ -#define _GL_CMP(n1, n2) (((n1) > (n2)) - ((n1) < (n2))) - - /* Define to `int' if <sys/types.h> does not define. */ #undef mode_t @@ -1925,15 +1312,14 @@ /* Define to the equivalent of the C99 'restrict' keyword, or to nothing if this is not supported. Do not define if restrict is - supported only directly. */ + supported directly. */ #undef restrict -/* Work around a bug in older versions of Sun C++, which did not - #define __restrict__ or support _Restrict or __restrict__ - even though the corresponding Sun C compiler ended up with - "#define restrict _Restrict" or "#define restrict __restrict__" - in the previous line. This workaround can be removed once - we assume Oracle Developer Studio 12.5 (2016) or later. */ -#if defined __SUNPRO_CC && !defined __RESTRICT && !defined __restrict__ +/* Work around a bug in Sun C++: it does not support _Restrict or + __restrict__, even though the corresponding Sun C compiler ends up with + "#define restrict _Restrict" or "#define restrict __restrict__" in the + previous line. Perhaps some future version of Sun C++ will work with + restrict; if so, hopefully it defines __RESTRICT like Sun C does. */ +#if defined __SUNPRO_CC && !defined __RESTRICT # define _Restrict # define __restrict__ #endif @@ -1946,3 +1332,47 @@ /* Define to `int' if <sys/types.h> doesn't define. */ #undef uid_t + +/* Define as a marker that can be attached to declarations that might not + be used. This helps to reduce warnings, such as from + GCC -Wunused-parameter. */ +#if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) +# define _GL_UNUSED __attribute__ ((__unused__)) +#else +# define _GL_UNUSED +#endif +/* The name _UNUSED_PARAMETER_ is an earlier spelling, although the name + is a misnomer outside of parameter lists. */ +#define _UNUSED_PARAMETER_ _GL_UNUSED + +/* gcc supports the "unused" attribute on possibly unused labels, and + g++ has since version 4.5. Note to support C++ as well as C, + _GL_UNUSED_LABEL should be used with a trailing ; */ +#if !defined __cplusplus || __GNUC__ > 4 \ + || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) +# define _GL_UNUSED_LABEL _GL_UNUSED +#else +# define _GL_UNUSED_LABEL +#endif + +/* The __pure__ attribute was added in gcc 2.96. */ +#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) +# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) +#else +# define _GL_ATTRIBUTE_PURE /* empty */ +#endif + +/* The __const__ attribute was added in gcc 2.95. */ +#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) +# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__)) +#else +# define _GL_ATTRIBUTE_CONST /* empty */ +#endif + +/* The __malloc__ attribute was added in gcc 3. */ +#if 3 <= __GNUC__ +# define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__)) +#else +# define _GL_ATTRIBUTE_MALLOC /* empty */ +#endif + |