|
@@ -1,6 +1,10 @@
|
|
|
/* config.h. Generated from config.h.in by configure. */
|
|
|
/* config.h.in. Generated from configure.ac by autoheader. */
|
|
|
|
|
|
+/* Witness that <config.h> has been included. */
|
|
|
+#define _GL_CONFIG_H_INCLUDED 1
|
|
|
+
|
|
|
+
|
|
|
/* Define to the number of bits in type 'ptrdiff_t'. */
|
|
|
/* #undef BITSIZEOF_PTRDIFF_T */
|
|
|
|
|
@@ -115,6 +119,9 @@
|
|
|
/* Define to 1 when the gnulib module getopt-posix should be tested. */
|
|
|
#define GNULIB_TEST_GETOPT_POSIX 1
|
|
|
|
|
|
+/* Define to 1 when the gnulib module getprogname should be tested. */
|
|
|
+#define GNULIB_TEST_GETPROGNAME 1
|
|
|
+
|
|
|
/* Define to 1 when the gnulib module open should be tested. */
|
|
|
#define GNULIB_TEST_OPEN 1
|
|
|
|
|
@@ -174,6 +181,12 @@
|
|
|
/* Define to 1 if you have the <crtdefs.h> header file. */
|
|
|
/* #undef HAVE_CRTDEFS_H */
|
|
|
|
|
|
+/* Define to 1 if bool, true and false work as per C2023. */
|
|
|
+/* #undef HAVE_C_BOOL */
|
|
|
+
|
|
|
+/* Define to 1 if the static_assert keyword works. */
|
|
|
+/* #undef HAVE_C_STATIC_ASSERT */
|
|
|
+
|
|
|
/* Define to 1 if C supports variable-length arrays. */
|
|
|
#define HAVE_C_VARARRAYS 1
|
|
|
|
|
@@ -217,6 +230,10 @@
|
|
|
don't. */
|
|
|
#define HAVE_DECL_GETLINE 1
|
|
|
|
|
|
+/* Define to 1 if you have the declaration of `getw', and to 0 if you don't.
|
|
|
+ */
|
|
|
+#define HAVE_DECL_GETW 1
|
|
|
+
|
|
|
/* Define to 1 if you have the declaration of `program_invocation_name', and
|
|
|
to 0 if you don't. */
|
|
|
#define HAVE_DECL_PROGRAM_INVOCATION_NAME 1
|
|
@@ -225,6 +242,10 @@
|
|
|
and to 0 if you don't. */
|
|
|
#define HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME 1
|
|
|
|
|
|
+/* Define to 1 if you have the declaration of `putw', and to 0 if you don't.
|
|
|
+ */
|
|
|
+#define HAVE_DECL_PUTW 1
|
|
|
+
|
|
|
/* Define to 1 if you have the declaration of `strerror_r', and to 0 if you
|
|
|
don't. */
|
|
|
#define HAVE_DECL_STRERROR_R 1
|
|
@@ -240,6 +261,12 @@
|
|
|
/* Define to 1 if you have the <dlfcn.h> header file. */
|
|
|
#define HAVE_DLFCN_H 1
|
|
|
|
|
|
+/* Define to 1 if you have the `error' function. */
|
|
|
+#define HAVE_ERROR 1
|
|
|
+
|
|
|
+/* Define to 1 if you have the <error.h> header file. */
|
|
|
+#define HAVE_ERROR_H 1
|
|
|
+
|
|
|
/* Define to 1 if you have the `fcntl' function. */
|
|
|
#define HAVE_FCNTL 1
|
|
|
|
|
@@ -264,6 +291,9 @@
|
|
|
/* Define to 1 if you have the `getexecname' function. */
|
|
|
/* #undef HAVE_GETEXECNAME */
|
|
|
|
|
|
+/* Define to 1 if you have the `getline' function. */
|
|
|
+#define HAVE_GETLINE 1
|
|
|
+
|
|
|
/* Define to 1 if you have the <getopt.h> header file. */
|
|
|
#define HAVE_GETOPT_H 1
|
|
|
|
|
@@ -327,6 +357,12 @@
|
|
|
/* Define to 1 if 'wint_t' is a signed integer type. */
|
|
|
/* #undef HAVE_SIGNED_WINT_T */
|
|
|
|
|
|
+/* Define to 1 if you have the <stdbool.h> header file. */
|
|
|
+#define HAVE_STDBOOL_H 1
|
|
|
+
|
|
|
+/* Define to 1 if you have the <stdckdint.h> header file. */
|
|
|
+/* #undef HAVE_STDCKDINT_H */
|
|
|
+
|
|
|
/* Define to 1 if you have the <stdint.h> header file. */
|
|
|
#define HAVE_STDINT_H 1
|
|
|
|
|
@@ -399,6 +435,9 @@
|
|
|
/* Define to 1 if you have the <unistd.h> header file. */
|
|
|
#define HAVE_UNISTD_H 1
|
|
|
|
|
|
+/* Define to 1 if you have the <unistring/woe32dll.h> header file. */
|
|
|
+/* #undef HAVE_UNISTRING_WOE32DLL_H */
|
|
|
+
|
|
|
/* Define to 1 if the system has the type 'unsigned long long int'. */
|
|
|
#define HAVE_UNSIGNED_LONG_LONG_INT 1
|
|
|
|
|
@@ -427,9 +466,6 @@
|
|
|
/* Define to 1 if O_NOFOLLOW works. */
|
|
|
#define HAVE_WORKING_O_NOFOLLOW 1
|
|
|
|
|
|
-/* Define to 1 if the system has the type `_Bool'. */
|
|
|
-#define HAVE__BOOL 1
|
|
|
-
|
|
|
/* Define to 1 if you have the `_set_invalid_parameter_handler' function. */
|
|
|
/* #undef HAVE__SET_INVALID_PARAMETER_HANDLER */
|
|
|
|
|
@@ -492,7 +528,8 @@
|
|
|
# define _GL_EXTERN_INLINE_STDHEADER_BUG
|
|
|
#endif
|
|
|
#if ((__GNUC__ \
|
|
|
- ? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \
|
|
|
+ ? (defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \
|
|
|
+ && !defined __PCC__) \
|
|
|
: (199901L <= __STDC_VERSION__ \
|
|
|
&& !defined __HP_cc \
|
|
|
&& !defined __PGI \
|
|
@@ -502,6 +539,7 @@
|
|
|
# define _GL_EXTERN_INLINE extern inline
|
|
|
# define _GL_EXTERN_INLINE_IN_USE
|
|
|
#elif (2 < __GNUC__ + (7 <= __GNUC_MINOR__) && !defined __STRICT_ANSI__ \
|
|
|
+ && !defined __PCC__ \
|
|
|
&& !defined _GL_EXTERN_INLINE_STDHEADER_BUG)
|
|
|
# if defined __GNUC_GNU_INLINE__ && __GNUC_GNU_INLINE__
|
|
|
/* __gnu_inline__ suppresses a GCC 4.2 diagnostic. */
|
|
@@ -563,6 +601,9 @@
|
|
|
#endif
|
|
|
|
|
|
|
|
|
+/* Define to 1 on musl libc. */
|
|
|
+/* #undef MUSL_LIBC */
|
|
|
+
|
|
|
/* Define to 1 if open() fails to recognize a trailing slash. */
|
|
|
/* #undef OPEN_TRAILING_SLASH_BUG */
|
|
|
|
|
@@ -585,7 +626,7 @@
|
|
|
/* #undef PACKAGE_PACKAGER_VERSION */
|
|
|
|
|
|
/* Define to the full name and version of this package. */
|
|
|
-#define PACKAGE_STRING "GNU Libidn 1.41"
|
|
|
+#define PACKAGE_STRING "GNU Libidn 1.42"
|
|
|
|
|
|
/* Define to the one symbol short name of this package. */
|
|
|
#define PACKAGE_TARNAME "libidn"
|
|
@@ -594,7 +635,7 @@
|
|
|
#define PACKAGE_URL "https://www.gnu.org/software/libidn/"
|
|
|
|
|
|
/* Define to the version of this package. */
|
|
|
-#define PACKAGE_VERSION "1.41"
|
|
|
+#define PACKAGE_VERSION "1.42"
|
|
|
|
|
|
/* Define to the type that is the result of default argument promotions of
|
|
|
type mode_t. */
|
|
@@ -703,11 +744,15 @@
|
|
|
#ifndef __STDC_WANT_IEC_60559_DFP_EXT__
|
|
|
# define __STDC_WANT_IEC_60559_DFP_EXT__ 1
|
|
|
#endif
|
|
|
+/* Enable extensions specified by C23 Annex F. */
|
|
|
+#ifndef __STDC_WANT_IEC_60559_EXT__
|
|
|
+# define __STDC_WANT_IEC_60559_EXT__ 1
|
|
|
+#endif
|
|
|
/* Enable extensions specified by ISO/IEC TS 18661-4:2015. */
|
|
|
#ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__
|
|
|
# define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1
|
|
|
#endif
|
|
|
-/* Enable extensions specified by ISO/IEC TS 18661-3:2015. */
|
|
|
+/* Enable extensions specified by C23 Annex H and ISO/IEC TS 18661-3:2015. */
|
|
|
#ifndef __STDC_WANT_IEC_60559_TYPES_EXT__
|
|
|
# define __STDC_WANT_IEC_60559_TYPES_EXT__ 1
|
|
|
#endif
|
|
@@ -731,7 +776,7 @@
|
|
|
|
|
|
|
|
|
/* Version number of package */
|
|
|
-#define VERSION "1.41"
|
|
|
+#define VERSION "1.42"
|
|
|
|
|
|
/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
|
|
|
'wchar_t'. */
|
|
@@ -759,7 +804,7 @@
|
|
|
/* Define to enable the declarations of ISO C 11 types and functions. */
|
|
|
/* #undef _ISOC11_SOURCE */
|
|
|
|
|
|
-/* Define for large files, on AIX-style hosts. */
|
|
|
+/* Define to 1 on platforms where this makes off_t a 64-bit type. */
|
|
|
/* #undef _LARGE_FILES */
|
|
|
|
|
|
/* The _Noreturn keyword of C11. */
|
|
@@ -775,6 +820,11 @@
|
|
|
AIX system header files and several gnulib header files use precisely
|
|
|
this syntax with 'extern'. */
|
|
|
# define _Noreturn [[noreturn]]
|
|
|
+# elif (defined __clang__ && __clang_major__ < 16 \
|
|
|
+ && defined _GL_WORK_AROUND_LLVM_BUG_59792)
|
|
|
+ /* Compile with -D_GL_WORK_AROUND_LLVM_BUG_59792 to work around
|
|
|
+ that rare LLVM bug, though you may get many false-alarm warnings. */
|
|
|
+# define _Noreturn
|
|
|
# elif ((!defined __cplusplus || defined __clang__) \
|
|
|
&& (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) \
|
|
|
|| (!defined __STRICT_ANSI__ \
|
|
@@ -793,7 +843,7 @@
|
|
|
#endif
|
|
|
|
|
|
|
|
|
-/* Number of bits in a timestamp, on hosts where this is settable. */
|
|
|
+/* Number of bits in time_t, on hosts where this is settable. */
|
|
|
/* #undef _TIME_BITS */
|
|
|
|
|
|
/* For standard stat data types on VMS. */
|
|
@@ -803,7 +853,7 @@
|
|
|
used. */
|
|
|
/* #undef __GETOPT_PREFIX */
|
|
|
|
|
|
-/* For 64-bit time_t on 32-bit mingw. */
|
|
|
+/* Define to 1 on platforms where this makes time_t a 64-bit type. */
|
|
|
/* #undef __MINGW_USE_VC2005_COMPAT */
|
|
|
|
|
|
/* Define to 1 if the system <stdint.h> predates C++11. */
|
|
@@ -848,7 +898,7 @@
|
|
|
&& (!defined __clang_minor__ \
|
|
|
|| (defined __apple_build_version__ \
|
|
|
? 6000000 <= __apple_build_version__ \
|
|
|
- : 3 < __clang_major__ + (5 <= __clang_minor__))))
|
|
|
+ : 5 <= __clang_major__)))
|
|
|
# define _GL_HAS_ATTRIBUTE(attr) __has_attribute (__##attr##__)
|
|
|
#else
|
|
|
# define _GL_HAS_ATTRIBUTE(attr) _GL_ATTR_##attr
|
|
@@ -882,16 +932,30 @@
|
|
|
# define _GL_ATTR_warn_unused_result _GL_GNUC_PREREQ (3, 4)
|
|
|
#endif
|
|
|
|
|
|
-#ifdef __has_c_attribute
|
|
|
-# if ((defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) <= 201710 \
|
|
|
- && _GL_GNUC_PREREQ (4, 6))
|
|
|
-# pragma GCC diagnostic ignored "-Wpedantic"
|
|
|
-# endif
|
|
|
-# define _GL_HAS_C_ATTRIBUTE(attr) __has_c_attribute (__##attr##__)
|
|
|
+/* Use __has_c_attribute if available. However, do not use with
|
|
|
+ pre-C23 GCC, which can issue false positives if -Wpedantic. */
|
|
|
+#if (defined __has_c_attribute \
|
|
|
+ && ! (_GL_GNUC_PREREQ (4, 6) \
|
|
|
+ && (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) <= 201710))
|
|
|
+# define _GL_HAVE___HAS_C_ATTRIBUTE 1
|
|
|
#else
|
|
|
-# define _GL_HAS_C_ATTRIBUTE(attr) 0
|
|
|
+# define _GL_HAVE___HAS_C_ATTRIBUTE 0
|
|
|
#endif
|
|
|
|
|
|
+/* Define if, in a function declaration, the attributes in bracket syntax
|
|
|
+ [[...]] must come before the attributes in __attribute__((...)) syntax.
|
|
|
+ If this is defined, it is best to avoid the bracket syntax, so that the
|
|
|
+ various _GL_ATTRIBUTE_* can be cumulated on the same declaration in any
|
|
|
+ order. */
|
|
|
+#ifdef __cplusplus
|
|
|
+# if defined __clang__
|
|
|
+# define _GL_BRACKET_BEFORE_ATTRIBUTE 1
|
|
|
+# endif
|
|
|
+#else
|
|
|
+# if defined __GNUC__ && !defined __clang__
|
|
|
+# define _GL_BRACKET_BEFORE_ATTRIBUTE 1
|
|
|
+# endif
|
|
|
+#endif
|
|
|
|
|
|
/* _GL_ATTRIBUTE_ALLOC_SIZE ((N)) declares that the Nth argument of the function
|
|
|
is the size of the returned memory block.
|
|
@@ -899,29 +963,35 @@
|
|
|
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)
|
|
|
+#ifndef _GL_ATTRIBUTE_ALLOC_SIZE
|
|
|
+# if _GL_HAS_ATTRIBUTE (alloc_size)
|
|
|
+# define _GL_ATTRIBUTE_ALLOC_SIZE(args) __attribute__ ((__alloc_size__ args))
|
|
|
+# else
|
|
|
+# define _GL_ATTRIBUTE_ALLOC_SIZE(args)
|
|
|
+# endif
|
|
|
#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
|
|
|
+#ifndef _GL_ATTRIBUTE_ALWAYS_INLINE
|
|
|
+# if _GL_HAS_ATTRIBUTE (always_inline)
|
|
|
+# define _GL_ATTRIBUTE_ALWAYS_INLINE __attribute__ ((__always_inline__))
|
|
|
+# else
|
|
|
+# define _GL_ATTRIBUTE_ALWAYS_INLINE
|
|
|
+# endif
|
|
|
#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
|
|
|
+#ifndef _GL_ATTRIBUTE_ARTIFICIAL
|
|
|
+# if _GL_HAS_ATTRIBUTE (artificial)
|
|
|
+# define _GL_ATTRIBUTE_ARTIFICIAL __attribute__ ((__artificial__))
|
|
|
+# else
|
|
|
+# define _GL_ATTRIBUTE_ARTIFICIAL
|
|
|
+# endif
|
|
|
#endif
|
|
|
|
|
|
/* _GL_ATTRIBUTE_COLD declares that the function is rarely executed. */
|
|
@@ -929,14 +999,16 @@
|
|
|
/* 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__))
|
|
|
+#ifndef _GL_ATTRIBUTE_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 __attribute__ ((cold))
|
|
|
+# define _GL_ATTRIBUTE_COLD
|
|
|
# endif
|
|
|
-#else
|
|
|
-# define _GL_ATTRIBUTE_COLD
|
|
|
#endif
|
|
|
|
|
|
/* _GL_ATTRIBUTE_CONST declares that it is OK for a compiler to omit duplicate
|
|
@@ -946,10 +1018,12 @@
|
|
|
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
|
|
|
+#ifndef _GL_ATTRIBUTE_CONST
|
|
|
+# if _GL_HAS_ATTRIBUTE (const)
|
|
|
+# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__))
|
|
|
+# else
|
|
|
+# define _GL_ATTRIBUTE_CONST
|
|
|
+# endif
|
|
|
#endif
|
|
|
|
|
|
/* _GL_ATTRIBUTE_DEALLOC (F, I) declares that the function returns pointers
|
|
@@ -958,16 +1032,25 @@
|
|
|
_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)
|
|
|
+#ifndef _GL_ATTRIBUTE_DEALLOC
|
|
|
+# if _GL_GNUC_PREREQ (11, 0)
|
|
|
+# define _GL_ATTRIBUTE_DEALLOC(f, i) __attribute__ ((__malloc__ (f, i)))
|
|
|
+# else
|
|
|
+# define _GL_ATTRIBUTE_DEALLOC(f, i)
|
|
|
+# endif
|
|
|
#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)
|
|
|
+# if defined __cplusplus && defined __GNUC__ && !defined __clang__
|
|
|
+/* Work around GCC bug <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108231> */
|
|
|
+# define _GL_ATTRIBUTE_DEALLOC_FREE \
|
|
|
+ _GL_ATTRIBUTE_DEALLOC ((void (*) (void *)) free, 1)
|
|
|
+# else
|
|
|
+# define _GL_ATTRIBUTE_DEALLOC_FREE \
|
|
|
+ _GL_ATTRIBUTE_DEALLOC (free, 1)
|
|
|
+# endif
|
|
|
#endif
|
|
|
|
|
|
/* _GL_ATTRIBUTE_DEPRECATED: Declares that an entity is deprecated.
|
|
@@ -978,12 +1061,20 @@
|
|
|
- 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
|
|
|
+#ifndef _GL_ATTRIBUTE_DEPRECATED
|
|
|
+# ifndef _GL_BRACKET_BEFORE_ATTRIBUTE
|
|
|
+# if _GL_HAVE___HAS_C_ATTRIBUTE
|
|
|
+# if __has_c_attribute (__deprecated__)
|
|
|
+# define _GL_ATTRIBUTE_DEPRECATED [[__deprecated__]]
|
|
|
+# endif
|
|
|
+# endif
|
|
|
+# endif
|
|
|
+# if !defined _GL_ATTRIBUTE_DEPRECATED && _GL_HAS_ATTRIBUTE (deprecated)
|
|
|
+# define _GL_ATTRIBUTE_DEPRECATED __attribute__ ((__deprecated__))
|
|
|
+# endif
|
|
|
+# ifndef _GL_ATTRIBUTE_DEPRECATED
|
|
|
+# define _GL_ATTRIBUTE_DEPRECATED
|
|
|
+# endif
|
|
|
#endif
|
|
|
|
|
|
/* _GL_ATTRIBUTE_ERROR(msg) requests an error if a function is called and
|
|
@@ -991,24 +1082,28 @@
|
|
|
_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)
|
|
|
+#if !(defined _GL_ATTRIBUTE_ERROR && defined _GL_ATTRIBUTE_WARNING)
|
|
|
+# 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
|
|
|
#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
|
|
|
+#ifndef _GL_ATTRIBUTE_EXTERNALLY_VISIBLE
|
|
|
+# if _GL_HAS_ATTRIBUTE (externally_visible)
|
|
|
+# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE __attribute__ ((externally_visible))
|
|
|
+# else
|
|
|
+# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE
|
|
|
+# endif
|
|
|
#endif
|
|
|
|
|
|
/* _GL_ATTRIBUTE_FALLTHROUGH declares that it is not a programming mistake if
|
|
@@ -1016,12 +1111,18 @@
|
|
|
'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)
|
|
|
+#ifndef _GL_ATTRIBUTE_FALLTHROUGH
|
|
|
+# if _GL_HAVE___HAS_C_ATTRIBUTE
|
|
|
+# if __has_c_attribute (__fallthrough__)
|
|
|
+# define _GL_ATTRIBUTE_FALLTHROUGH [[__fallthrough__]]
|
|
|
+# endif
|
|
|
+# endif
|
|
|
+# if !defined _GL_ATTRIBUTE_FALLTHROUGH && _GL_HAS_ATTRIBUTE (fallthrough)
|
|
|
+# define _GL_ATTRIBUTE_FALLTHROUGH __attribute__ ((__fallthrough__))
|
|
|
+# endif
|
|
|
+# ifndef _GL_ATTRIBUTE_FALLTHROUGH
|
|
|
+# define _GL_ATTRIBUTE_FALLTHROUGH ((void) 0)
|
|
|
+# endif
|
|
|
#endif
|
|
|
|
|
|
/* _GL_ATTRIBUTE_FORMAT ((ARCHETYPE, STRING-INDEX, FIRST-TO-CHECK))
|
|
@@ -1035,10 +1136,12 @@
|
|
|
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)
|
|
|
+#ifndef _GL_ATTRIBUTE_FORMAT
|
|
|
+# if _GL_HAS_ATTRIBUTE (format)
|
|
|
+# define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec))
|
|
|
+# else
|
|
|
+# define _GL_ATTRIBUTE_FORMAT(spec)
|
|
|
+# endif
|
|
|
#endif
|
|
|
|
|
|
/* _GL_ATTRIBUTE_LEAF declares that if the function is called from some other
|
|
@@ -1046,19 +1149,23 @@
|
|
|
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
|
|
|
+#ifndef _GL_ATTRIBUTE_LEAF
|
|
|
+# if _GL_HAS_ATTRIBUTE (leaf)
|
|
|
+# define _GL_ATTRIBUTE_LEAF __attribute__ ((__leaf__))
|
|
|
+# else
|
|
|
+# define _GL_ATTRIBUTE_LEAF
|
|
|
+# endif
|
|
|
#endif
|
|
|
|
|
|
/* _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
|
|
|
+#ifndef _GL_ATTRIBUTE_MALLOC
|
|
|
+# if _GL_HAS_ATTRIBUTE (malloc)
|
|
|
+# define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__))
|
|
|
+# else
|
|
|
+# define _GL_ATTRIBUTE_MALLOC
|
|
|
+# endif
|
|
|
#endif
|
|
|
|
|
|
/* _GL_ATTRIBUTE_MAY_ALIAS declares that pointers to the type may point to the
|
|
@@ -1066,10 +1173,12 @@
|
|
|
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
|
|
|
+#ifndef _GL_ATTRIBUTE_MAY_ALIAS
|
|
|
+# if _GL_HAS_ATTRIBUTE (may_alias) && !defined __SUNPRO_C
|
|
|
+# define _GL_ATTRIBUTE_MAY_ALIAS __attribute__ ((__may_alias__))
|
|
|
+# else
|
|
|
+# define _GL_ATTRIBUTE_MAY_ALIAS
|
|
|
+# endif
|
|
|
#endif
|
|
|
|
|
|
/* _GL_ATTRIBUTE_MAYBE_UNUSED declares that it is not a programming mistake if
|
|
@@ -1081,15 +1190,29 @@
|
|
|
- enumeration, enumeration item,
|
|
|
- typedef,
|
|
|
in C++ also: class. */
|
|
|
-/* In C++ and C2x, this is spelled [[__maybe_unused__]].
|
|
|
+/* In C++ and C23, 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
|
|
|
+ clang supports both syntaxes. Except that with clang ≥ 6, < 10, in C++ mode,
|
|
|
+ __has_c_attribute (__maybe_unused__) yields true but the use of
|
|
|
+ [[__maybe_unused__]] nevertheless produces a warning. */
|
|
|
+#ifndef _GL_ATTRIBUTE_MAYBE_UNUSED
|
|
|
+# ifndef _GL_BRACKET_BEFORE_ATTRIBUTE
|
|
|
+# if defined __clang__ && defined __cplusplus
|
|
|
+# if !defined __apple_build_version__ && __clang_major__ >= 10
|
|
|
+# define _GL_ATTRIBUTE_MAYBE_UNUSED [[__maybe_unused__]]
|
|
|
+# endif
|
|
|
+# elif _GL_HAVE___HAS_C_ATTRIBUTE
|
|
|
+# if __has_c_attribute (__maybe_unused__)
|
|
|
+# define _GL_ATTRIBUTE_MAYBE_UNUSED [[__maybe_unused__]]
|
|
|
+# endif
|
|
|
+# endif
|
|
|
+# endif
|
|
|
+# ifndef _GL_ATTRIBUTE_MAYBE_UNUSED
|
|
|
+# define _GL_ATTRIBUTE_MAYBE_UNUSED _GL_ATTRIBUTE_UNUSED
|
|
|
+# endif
|
|
|
#endif
|
|
|
-/* Alternative spelling of this macro, for convenience. */
|
|
|
+/* Alternative spelling of this macro, for convenience and for
|
|
|
+ compatibility with glibc/include/libc-symbols.h. */
|
|
|
#define _GL_UNUSED _GL_ATTRIBUTE_MAYBE_UNUSED
|
|
|
/* Earlier spellings of this macro. */
|
|
|
#define _UNUSED_PARAMETER_ _GL_ATTRIBUTE_MAYBE_UNUSED
|
|
@@ -1098,21 +1221,40 @@
|
|
|
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
|
|
|
+#ifndef _GL_ATTRIBUTE_NODISCARD
|
|
|
+# ifndef _GL_BRACKET_BEFORE_ATTRIBUTE
|
|
|
+# if defined __clang__ && defined __cplusplus
|
|
|
+ /* With clang up to 15.0.6 (at least), in C++ mode, [[__nodiscard__]] produces
|
|
|
+ a warning.
|
|
|
+ The 1000 below means a yet unknown threshold. When clang++ version X
|
|
|
+ starts supporting [[__nodiscard__]] without warning about it, you can
|
|
|
+ replace the 1000 with X. */
|
|
|
+# if __clang_major__ >= 1000
|
|
|
+# define _GL_ATTRIBUTE_NODISCARD [[__nodiscard__]]
|
|
|
+# endif
|
|
|
+# elif _GL_HAVE___HAS_C_ATTRIBUTE
|
|
|
+# if __has_c_attribute (__nodiscard__)
|
|
|
+# define _GL_ATTRIBUTE_NODISCARD [[__nodiscard__]]
|
|
|
+# endif
|
|
|
+# endif
|
|
|
+# endif
|
|
|
+# if !defined _GL_ATTRIBUTE_NODISCARD && _GL_HAS_ATTRIBUTE (warn_unused_result)
|
|
|
+# define _GL_ATTRIBUTE_NODISCARD __attribute__ ((__warn_unused_result__))
|
|
|
+# endif
|
|
|
+# ifndef _GL_ATTRIBUTE_NODISCARD
|
|
|
+# define _GL_ATTRIBUTE_NODISCARD
|
|
|
+# endif
|
|
|
#endif
|
|
|
|
|
|
/* _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
|
|
|
+#ifndef _GL_ATTRIBUTE_NOINLINE
|
|
|
+# if _GL_HAS_ATTRIBUTE (noinline)
|
|
|
+# define _GL_ATTRIBUTE_NOINLINE __attribute__ ((__noinline__))
|
|
|
+# else
|
|
|
+# define _GL_ATTRIBUTE_NOINLINE
|
|
|
+# endif
|
|
|
#endif
|
|
|
|
|
|
/* _GL_ATTRIBUTE_NONNULL ((N1, N2,...)) declares that the arguments N1, N2,...
|
|
@@ -1120,20 +1262,24 @@
|
|
|
_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)
|
|
|
+#ifndef _GL_ATTRIBUTE_NONNULL
|
|
|
+# if _GL_HAS_ATTRIBUTE (nonnull)
|
|
|
+# define _GL_ATTRIBUTE_NONNULL(args) __attribute__ ((__nonnull__ args))
|
|
|
+# else
|
|
|
+# define _GL_ATTRIBUTE_NONNULL(args)
|
|
|
+# endif
|
|
|
#endif
|
|
|
|
|
|
/* _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
|
|
|
+#ifndef _GL_ATTRIBUTE_NONSTRING
|
|
|
+# if _GL_HAS_ATTRIBUTE (nonstring)
|
|
|
+# define _GL_ATTRIBUTE_NONSTRING __attribute__ ((__nonstring__))
|
|
|
+# else
|
|
|
+# define _GL_ATTRIBUTE_NONSTRING
|
|
|
+# endif
|
|
|
#endif
|
|
|
|
|
|
/* There is no _GL_ATTRIBUTE_NORETURN; use _Noreturn instead. */
|
|
@@ -1141,10 +1287,26 @@
|
|
|
/* _GL_ATTRIBUTE_NOTHROW declares that the function does not throw exceptions.
|
|
|
*/
|
|
|
/* Applies to: functions. */
|
|
|
-#if _GL_HAS_ATTRIBUTE (nothrow) && !defined __cplusplus
|
|
|
-# define _GL_ATTRIBUTE_NOTHROW __attribute__ ((__nothrow__))
|
|
|
-#else
|
|
|
-# define _GL_ATTRIBUTE_NOTHROW
|
|
|
+/* After a function's parameter list, this attribute must come first, before
|
|
|
+ other attributes. */
|
|
|
+#ifndef _GL_ATTRIBUTE_NOTHROW
|
|
|
+# if defined __cplusplus
|
|
|
+# if _GL_GNUC_PREREQ (2, 8) || __clang_major >= 4
|
|
|
+# if __cplusplus >= 201103L
|
|
|
+# define _GL_ATTRIBUTE_NOTHROW noexcept (true)
|
|
|
+# else
|
|
|
+# define _GL_ATTRIBUTE_NOTHROW throw ()
|
|
|
+# endif
|
|
|
+# else
|
|
|
+# define _GL_ATTRIBUTE_NOTHROW
|
|
|
+# endif
|
|
|
+# else
|
|
|
+# if _GL_HAS_ATTRIBUTE (nothrow)
|
|
|
+# define _GL_ATTRIBUTE_NOTHROW __attribute__ ((__nothrow__))
|
|
|
+# else
|
|
|
+# define _GL_ATTRIBUTE_NOTHROW
|
|
|
+# endif
|
|
|
+# endif
|
|
|
#endif
|
|
|
|
|
|
/* _GL_ATTRIBUTE_PACKED declares:
|
|
@@ -1153,10 +1315,12 @@
|
|
|
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
|
|
|
+#ifndef _GL_ATTRIBUTE_PACKED
|
|
|
+# if _GL_HAS_ATTRIBUTE (packed)
|
|
|
+# define _GL_ATTRIBUTE_PACKED __attribute__ ((__packed__))
|
|
|
+# else
|
|
|
+# define _GL_ATTRIBUTE_PACKED
|
|
|
+# endif
|
|
|
#endif
|
|
|
|
|
|
/* _GL_ATTRIBUTE_PURE declares that It is OK for a compiler to omit duplicate
|
|
@@ -1166,19 +1330,23 @@
|
|
|
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
|
|
|
+#ifndef _GL_ATTRIBUTE_PURE
|
|
|
+# if _GL_HAS_ATTRIBUTE (pure)
|
|
|
+# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
|
|
|
+# else
|
|
|
+# define _GL_ATTRIBUTE_PURE
|
|
|
+# endif
|
|
|
#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
|
|
|
+#ifndef _GL_ATTRIBUTE_RETURNS_NONNULL
|
|
|
+# if _GL_HAS_ATTRIBUTE (returns_nonnull)
|
|
|
+# define _GL_ATTRIBUTE_RETURNS_NONNULL __attribute__ ((__returns_nonnull__))
|
|
|
+# else
|
|
|
+# define _GL_ATTRIBUTE_RETURNS_NONNULL
|
|
|
+# endif
|
|
|
#endif
|
|
|
|
|
|
/* _GL_ATTRIBUTE_SENTINEL(pos) declares that the variadic function expects a
|
|
@@ -1186,17 +1354,21 @@
|
|
|
_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)
|
|
|
+#ifndef _GL_ATTRIBUTE_SENTINEL
|
|
|
+# if _GL_HAS_ATTRIBUTE (sentinel)
|
|
|
+# define _GL_ATTRIBUTE_SENTINEL(pos) __attribute__ ((__sentinel__ pos))
|
|
|
+# else
|
|
|
+# define _GL_ATTRIBUTE_SENTINEL(pos)
|
|
|
+# endif
|
|
|
#endif
|
|
|
|
|
|
/* A helper macro. Don't use it directly. */
|
|
|
-#if _GL_HAS_ATTRIBUTE (unused)
|
|
|
-# define _GL_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
|
|
|
-#else
|
|
|
-# define _GL_ATTRIBUTE_UNUSED
|
|
|
+#ifndef _GL_ATTRIBUTE_UNUSED
|
|
|
+# if _GL_HAS_ATTRIBUTE (unused)
|
|
|
+# define _GL_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
|
|
|
+# else
|
|
|
+# define _GL_ATTRIBUTE_UNUSED
|
|
|
+# endif
|
|
|
#endif
|
|
|
|
|
|
|
|
@@ -1206,10 +1378,24 @@
|
|
|
/* 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
|
|
|
+#ifndef _GL_UNUSED_LABEL
|
|
|
+# if !(defined __cplusplus && !_GL_GNUC_PREREQ (4, 5)) || defined __clang__
|
|
|
+# define _GL_UNUSED_LABEL _GL_ATTRIBUTE_UNUSED
|
|
|
+# else
|
|
|
+# define _GL_UNUSED_LABEL
|
|
|
+# endif
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+/* In C++, there is the concept of "language linkage", that encompasses
|
|
|
+ name mangling and function calling conventions.
|
|
|
+ The following macros start and end a block of "C" linkage. */
|
|
|
+#ifdef __cplusplus
|
|
|
+# define _GL_BEGIN_C_LINKAGE extern "C" {
|
|
|
+# define _GL_END_C_LINKAGE }
|
|
|
#else
|
|
|
-# define _GL_UNUSED_LABEL
|
|
|
+# define _GL_BEGIN_C_LINKAGE
|
|
|
+# define _GL_END_C_LINKAGE
|
|
|
#endif
|
|
|
|
|
|
|
|
@@ -1292,3 +1478,37 @@
|
|
|
|
|
|
/* Define as a macro for copying va_list variables. */
|
|
|
/* #undef va_copy */
|
|
|
+
|
|
|
+#ifndef HAVE_C_BOOL
|
|
|
+# if !defined __cplusplus && !defined __bool_true_false_are_defined
|
|
|
+# if HAVE_STDBOOL_H
|
|
|
+# include <stdbool.h>
|
|
|
+# else
|
|
|
+# if defined __SUNPRO_C
|
|
|
+# error "<stdbool.h> is not usable with this configuration. To make it usable, add -D_STDC_C99= to $CC."
|
|
|
+# else
|
|
|
+# error "<stdbool.h> does not exist on this platform. Use gnulib module 'stdbool-c99' instead of gnulib module 'stdbool'."
|
|
|
+# endif
|
|
|
+# endif
|
|
|
+# endif
|
|
|
+# if !true
|
|
|
+# define true (!false)
|
|
|
+# endif
|
|
|
+#endif
|
|
|
+
|
|
|
+#if (!defined HAVE_C_STATIC_ASSERT && !defined assert \
|
|
|
+ && (!defined __cplusplus \
|
|
|
+ || (__cpp_static_assert < 201411 \
|
|
|
+ && __GNUG__ < 6 && __clang_major__ < 6)))
|
|
|
+ #include <assert.h>
|
|
|
+ #undef/**/assert
|
|
|
+ #ifdef __sgi
|
|
|
+ #undef/**/__ASSERT_H__
|
|
|
+ #endif
|
|
|
+ /* Solaris 11.4 <assert.h> defines static_assert as a macro with 2 arguments.
|
|
|
+ We need it also to be invocable with a single argument. */
|
|
|
+ #if defined __sun && (__STDC_VERSION__ - 0 >= 201112L) && !defined __cplusplus
|
|
|
+ #undef/**/static_assert
|
|
|
+ #define static_assert _Static_assert
|
|
|
+ #endif
|
|
|
+#endif
|