| xf.li | bdd93d5 | 2023-05-12 07:10:14 -0700 | [diff] [blame] | 1 | /* Copyright (C) 1992-2016 Free Software Foundation, Inc. | 
|  | 2 | This file is part of the GNU C Library. | 
|  | 3 |  | 
|  | 4 | The GNU C Library is free software; you can redistribute it and/or | 
|  | 5 | modify it under the terms of the GNU Lesser General Public | 
|  | 6 | License as published by the Free Software Foundation; either | 
|  | 7 | version 2.1 of the License, or (at your option) any later version. | 
|  | 8 |  | 
|  | 9 | The GNU C Library is distributed in the hope that it will be useful, | 
|  | 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|  | 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
|  | 12 | Lesser General Public License for more details. | 
|  | 13 |  | 
|  | 14 | You should have received a copy of the GNU Lesser General Public | 
|  | 15 | License along with the GNU C Library; if not, see | 
|  | 16 | <http://www.gnu.org/licenses/>.  */ | 
|  | 17 |  | 
|  | 18 | #ifndef	_SYS_CDEFS_H | 
|  | 19 | #define	_SYS_CDEFS_H	1 | 
|  | 20 |  | 
|  | 21 | /* We are almost always included from features.h. */ | 
|  | 22 | #ifndef _FEATURES_H | 
|  | 23 | # include <features.h> | 
|  | 24 | #endif | 
|  | 25 |  | 
|  | 26 | /* The GNU libc does not support any K&R compilers or the traditional mode | 
|  | 27 | of ISO C compilers anymore.  Check for some of the combinations not | 
|  | 28 | anymore supported.  */ | 
|  | 29 | #if defined __GNUC__ && !defined __STDC__ | 
|  | 30 | # error "You need a ISO C conforming compiler to use the glibc headers" | 
|  | 31 | #endif | 
|  | 32 |  | 
|  | 33 | /* Some user header file might have defined this before.  */ | 
|  | 34 | #undef	__P | 
|  | 35 | #undef	__PMT | 
|  | 36 |  | 
|  | 37 | #ifdef __GNUC__ | 
|  | 38 |  | 
|  | 39 | /* All functions, except those with callbacks or those that | 
|  | 40 | synchronize memory, are leaf functions.  */ | 
|  | 41 | # if __GNUC_PREREQ (4, 6) && !defined _LIBC | 
|  | 42 | #  define __LEAF , __leaf__ | 
|  | 43 | #  define __LEAF_ATTR __attribute__ ((__leaf__)) | 
|  | 44 | # else | 
|  | 45 | #  define __LEAF | 
|  | 46 | #  define __LEAF_ATTR | 
|  | 47 | # endif | 
|  | 48 |  | 
|  | 49 | /* GCC can always grok prototypes.  For C++ programs we add throw() | 
|  | 50 | to help it optimize the function calls.  But this works only with | 
|  | 51 | gcc 2.8.x and egcs.  For gcc 3.2 and up we even mark C functions | 
|  | 52 | as non-throwing using a function attribute since programs can use | 
|  | 53 | the -fexceptions options for C code as well.  */ | 
|  | 54 | # if !defined __cplusplus && __GNUC_PREREQ (3, 3) | 
|  | 55 | #  define __THROW	__attribute__ ((__nothrow__ __LEAF)) | 
|  | 56 | #  define __THROWNL	__attribute__ ((__nothrow__)) | 
|  | 57 | #  define __NTH(fct)	__attribute__ ((__nothrow__ __LEAF)) fct | 
|  | 58 | # else | 
|  | 59 | #  if defined __cplusplus && __GNUC_PREREQ (2,8) | 
|  | 60 | #   define __THROW	throw () | 
|  | 61 | #   define __THROWNL	throw () | 
|  | 62 | #   define __NTH(fct)	__LEAF_ATTR fct throw () | 
|  | 63 | #  else | 
|  | 64 | #   define __THROW | 
|  | 65 | #   define __THROWNL | 
|  | 66 | #   define __NTH(fct)	fct | 
|  | 67 | #  endif | 
|  | 68 | # endif | 
|  | 69 |  | 
|  | 70 | #else	/* Not GCC.  */ | 
|  | 71 |  | 
|  | 72 | # define __inline		/* No inline functions.  */ | 
|  | 73 |  | 
|  | 74 | # define __THROW | 
|  | 75 | # define __THROWNL | 
|  | 76 | # define __NTH(fct)	fct | 
|  | 77 |  | 
|  | 78 | #endif	/* GCC.  */ | 
|  | 79 |  | 
|  | 80 | /* These two macros are not used in glibc anymore.  They are kept here | 
|  | 81 | only because some other projects expect the macros to be defined.  */ | 
|  | 82 | #define __P(args)	args | 
|  | 83 | #define __PMT(args)	args | 
|  | 84 |  | 
|  | 85 | /* For these things, GCC behaves the ANSI way normally, | 
|  | 86 | and the non-ANSI way under -traditional.  */ | 
|  | 87 |  | 
|  | 88 | #define __CONCAT(x,y)	x ## y | 
|  | 89 | #define __STRING(x)	#x | 
|  | 90 |  | 
|  | 91 | /* This is not a typedef so `const __ptr_t' does the right thing.  */ | 
|  | 92 | #define __ptr_t void * | 
|  | 93 | #define __long_double_t  long double | 
|  | 94 |  | 
|  | 95 |  | 
|  | 96 | /* C++ needs to know that types and declarations are C, not C++.  */ | 
|  | 97 | #ifdef	__cplusplus | 
|  | 98 | # define __BEGIN_DECLS	extern "C" { | 
|  | 99 | # define __END_DECLS	} | 
|  | 100 | #else | 
|  | 101 | # define __BEGIN_DECLS | 
|  | 102 | # define __END_DECLS | 
|  | 103 | #endif | 
|  | 104 |  | 
|  | 105 |  | 
|  | 106 | /* The standard library needs the functions from the ISO C90 standard | 
|  | 107 | in the std namespace.  At the same time we want to be safe for | 
|  | 108 | future changes and we include the ISO C99 code in the non-standard | 
|  | 109 | namespace __c99.  The C++ wrapper header take case of adding the | 
|  | 110 | definitions to the global namespace.  */ | 
|  | 111 | #if defined __cplusplus && defined _GLIBCPP_USE_NAMESPACES | 
|  | 112 | # define __BEGIN_NAMESPACE_STD	namespace std { | 
|  | 113 | # define __END_NAMESPACE_STD	} | 
|  | 114 | # define __USING_NAMESPACE_STD(name) using std::name; | 
|  | 115 | # define __BEGIN_NAMESPACE_C99	namespace __c99 { | 
|  | 116 | # define __END_NAMESPACE_C99	} | 
|  | 117 | # define __USING_NAMESPACE_C99(name) using __c99::name; | 
|  | 118 | #else | 
|  | 119 | /* For compatibility we do not add the declarations into any | 
|  | 120 | namespace.  They will end up in the global namespace which is what | 
|  | 121 | old code expects.  */ | 
|  | 122 | # define __BEGIN_NAMESPACE_STD | 
|  | 123 | # define __END_NAMESPACE_STD | 
|  | 124 | # define __USING_NAMESPACE_STD(name) | 
|  | 125 | # define __BEGIN_NAMESPACE_C99 | 
|  | 126 | # define __END_NAMESPACE_C99 | 
|  | 127 | # define __USING_NAMESPACE_C99(name) | 
|  | 128 | #endif | 
|  | 129 |  | 
|  | 130 |  | 
|  | 131 | /* Fortify support.  */ | 
|  | 132 | #define __bos(ptr) __builtin_object_size (ptr, __USE_FORTIFY_LEVEL > 1) | 
|  | 133 | #define __bos0(ptr) __builtin_object_size (ptr, 0) | 
|  | 134 |  | 
|  | 135 | #if __GNUC_PREREQ (4,3) | 
|  | 136 | # define __warndecl(name, msg) \ | 
|  | 137 | extern void name (void) __attribute__((__warning__ (msg))) | 
|  | 138 | # define __warnattr(msg) __attribute__((__warning__ (msg))) | 
|  | 139 | # define __errordecl(name, msg) \ | 
|  | 140 | extern void name (void) __attribute__((__error__ (msg))) | 
|  | 141 | #else | 
|  | 142 | # define __warndecl(name, msg) extern void name (void) | 
|  | 143 | # define __warnattr(msg) | 
|  | 144 | # define __errordecl(name, msg) extern void name (void) | 
|  | 145 | #endif | 
|  | 146 |  | 
|  | 147 | /* Support for flexible arrays.  */ | 
|  | 148 | #if __GNUC_PREREQ (2,97) | 
|  | 149 | /* GCC 2.97 supports C99 flexible array members.  */ | 
|  | 150 | # define __flexarr	[] | 
|  | 151 | #else | 
|  | 152 | # ifdef __GNUC__ | 
|  | 153 | #  define __flexarr	[0] | 
|  | 154 | # else | 
|  | 155 | #  if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L | 
|  | 156 | #   define __flexarr	[] | 
|  | 157 | #  else | 
|  | 158 | /* Some other non-C99 compiler.  Approximate with [1].  */ | 
|  | 159 | #   define __flexarr	[1] | 
|  | 160 | #  endif | 
|  | 161 | # endif | 
|  | 162 | #endif | 
|  | 163 |  | 
|  | 164 |  | 
|  | 165 | /* __asm__ ("xyz") is used throughout the headers to rename functions | 
|  | 166 | at the assembly language level.  This is wrapped by the __REDIRECT | 
|  | 167 | macro, in order to support compilers that can do this some other | 
|  | 168 | way.  When compilers don't support asm-names at all, we have to do | 
|  | 169 | preprocessor tricks instead (which don't have exactly the right | 
|  | 170 | semantics, but it's the best we can do). | 
|  | 171 |  | 
|  | 172 | Example: | 
|  | 173 | int __REDIRECT(setpgrp, (__pid_t pid, __pid_t pgrp), setpgid); */ | 
|  | 174 |  | 
|  | 175 | #if defined __GNUC__ && __GNUC__ >= 2 | 
|  | 176 |  | 
|  | 177 | # define __REDIRECT(name, proto, alias) name proto __asm__ (__ASMNAME (#alias)) | 
|  | 178 | # ifdef __cplusplus | 
|  | 179 | #  define __REDIRECT_NTH(name, proto, alias) \ | 
|  | 180 | name proto __THROW __asm__ (__ASMNAME (#alias)) | 
|  | 181 | #  define __REDIRECT_NTHNL(name, proto, alias) \ | 
|  | 182 | name proto __THROWNL __asm__ (__ASMNAME (#alias)) | 
|  | 183 | # else | 
|  | 184 | #  define __REDIRECT_NTH(name, proto, alias) \ | 
|  | 185 | name proto __asm__ (__ASMNAME (#alias)) __THROW | 
|  | 186 | #  define __REDIRECT_NTHNL(name, proto, alias) \ | 
|  | 187 | name proto __asm__ (__ASMNAME (#alias)) __THROWNL | 
|  | 188 | # endif | 
|  | 189 | # define __ASMNAME(cname)  __ASMNAME2 (__USER_LABEL_PREFIX__, cname) | 
|  | 190 | # define __ASMNAME2(prefix, cname) __STRING (prefix) cname | 
|  | 191 |  | 
|  | 192 | /* | 
|  | 193 | #elif __SOME_OTHER_COMPILER__ | 
|  | 194 |  | 
|  | 195 | # define __REDIRECT(name, proto, alias) name proto; \ | 
|  | 196 | _Pragma("let " #name " = " #alias) | 
|  | 197 | */ | 
|  | 198 | #endif | 
|  | 199 |  | 
|  | 200 | /* GCC has various useful declarations that can be made with the | 
|  | 201 | `__attribute__' syntax.  All of the ways we use this do fine if | 
|  | 202 | they are omitted for compilers that don't understand it. */ | 
|  | 203 | #if !defined __GNUC__ || __GNUC__ < 2 | 
|  | 204 | # define __attribute__(xyz)	/* Ignore */ | 
|  | 205 | #endif | 
|  | 206 |  | 
|  | 207 | /* At some point during the gcc 2.96 development the `malloc' attribute | 
|  | 208 | for functions was introduced.  We don't want to use it unconditionally | 
|  | 209 | (although this would be possible) since it generates warnings.  */ | 
|  | 210 | #if __GNUC_PREREQ (2,96) | 
|  | 211 | # define __attribute_malloc__ __attribute__ ((__malloc__)) | 
|  | 212 | #else | 
|  | 213 | # define __attribute_malloc__ /* Ignore */ | 
|  | 214 | #endif | 
|  | 215 |  | 
|  | 216 | /* Tell the compiler which arguments to an allocation function | 
|  | 217 | indicate the size of the allocation.  */ | 
|  | 218 | #if __GNUC_PREREQ (4, 3) | 
|  | 219 | # define __attribute_alloc_size__(params) \ | 
|  | 220 | __attribute__ ((__alloc_size__ params)) | 
|  | 221 | #else | 
|  | 222 | # define __attribute_alloc_size__(params) /* Ignore.  */ | 
|  | 223 | #endif | 
|  | 224 |  | 
|  | 225 | /* At some point during the gcc 2.96 development the `pure' attribute | 
|  | 226 | for functions was introduced.  We don't want to use it unconditionally | 
|  | 227 | (although this would be possible) since it generates warnings.  */ | 
|  | 228 | #if __GNUC_PREREQ (2,96) | 
|  | 229 | # define __attribute_pure__ __attribute__ ((__pure__)) | 
|  | 230 | #else | 
|  | 231 | # define __attribute_pure__ /* Ignore */ | 
|  | 232 | #endif | 
|  | 233 |  | 
|  | 234 | /* This declaration tells the compiler that the value is constant.  */ | 
|  | 235 | #if __GNUC_PREREQ (2,5) | 
|  | 236 | # define __attribute_const__ __attribute__ ((__const__)) | 
|  | 237 | #else | 
|  | 238 | # define __attribute_const__ /* Ignore */ | 
|  | 239 | #endif | 
|  | 240 |  | 
|  | 241 | /* At some point during the gcc 3.1 development the `used' attribute | 
|  | 242 | for functions was introduced.  We don't want to use it unconditionally | 
|  | 243 | (although this would be possible) since it generates warnings.  */ | 
|  | 244 | #if __GNUC_PREREQ (3,1) | 
|  | 245 | # define __attribute_used__ __attribute__ ((__used__)) | 
|  | 246 | # define __attribute_noinline__ __attribute__ ((__noinline__)) | 
|  | 247 | #else | 
|  | 248 | # define __attribute_used__ __attribute__ ((__unused__)) | 
|  | 249 | # define __attribute_noinline__ /* Ignore */ | 
|  | 250 | #endif | 
|  | 251 |  | 
|  | 252 | /* gcc allows marking deprecated functions.  */ | 
|  | 253 | #if __GNUC_PREREQ (3,2) | 
|  | 254 | # define __attribute_deprecated__ __attribute__ ((__deprecated__)) | 
|  | 255 | #else | 
|  | 256 | # define __attribute_deprecated__ /* Ignore */ | 
|  | 257 | #endif | 
|  | 258 |  | 
|  | 259 | /* At some point during the gcc 2.8 development the `format_arg' attribute | 
|  | 260 | for functions was introduced.  We don't want to use it unconditionally | 
|  | 261 | (although this would be possible) since it generates warnings. | 
|  | 262 | If several `format_arg' attributes are given for the same function, in | 
|  | 263 | gcc-3.0 and older, all but the last one are ignored.  In newer gccs, | 
|  | 264 | all designated arguments are considered.  */ | 
|  | 265 | #if __GNUC_PREREQ (2,8) | 
|  | 266 | # define __attribute_format_arg__(x) __attribute__ ((__format_arg__ (x))) | 
|  | 267 | #else | 
|  | 268 | # define __attribute_format_arg__(x) /* Ignore */ | 
|  | 269 | #endif | 
|  | 270 |  | 
|  | 271 | /* At some point during the gcc 2.97 development the `strfmon' format | 
|  | 272 | attribute for functions was introduced.  We don't want to use it | 
|  | 273 | unconditionally (although this would be possible) since it | 
|  | 274 | generates warnings.  */ | 
|  | 275 | #if __GNUC_PREREQ (2,97) | 
|  | 276 | # define __attribute_format_strfmon__(a,b) \ | 
|  | 277 | __attribute__ ((__format__ (__strfmon__, a, b))) | 
|  | 278 | #else | 
|  | 279 | # define __attribute_format_strfmon__(a,b) /* Ignore */ | 
|  | 280 | #endif | 
|  | 281 |  | 
|  | 282 | /* The nonull function attribute allows to mark pointer parameters which | 
|  | 283 | must not be NULL.  */ | 
|  | 284 | #if __GNUC_PREREQ (3,3) | 
|  | 285 | # define __nonnull(params) __attribute__ ((__nonnull__ params)) | 
|  | 286 | #else | 
|  | 287 | # define __nonnull(params) | 
|  | 288 | #endif | 
|  | 289 |  | 
|  | 290 | /* If fortification mode, we warn about unused results of certain | 
|  | 291 | function calls which can lead to problems.  */ | 
|  | 292 | #if __GNUC_PREREQ (3,4) | 
|  | 293 | # define __attribute_warn_unused_result__ \ | 
|  | 294 | __attribute__ ((__warn_unused_result__)) | 
|  | 295 | # if __USE_FORTIFY_LEVEL > 0 | 
|  | 296 | #  define __wur __attribute_warn_unused_result__ | 
|  | 297 | # endif | 
|  | 298 | #else | 
|  | 299 | # define __attribute_warn_unused_result__ /* empty */ | 
|  | 300 | #endif | 
|  | 301 | #ifndef __wur | 
|  | 302 | # define __wur /* Ignore */ | 
|  | 303 | #endif | 
|  | 304 |  | 
|  | 305 | /* Forces a function to be always inlined.  */ | 
|  | 306 | #if __GNUC_PREREQ (3,2) | 
|  | 307 | # define __always_inline __inline __attribute__ ((__always_inline__)) | 
|  | 308 | #else | 
|  | 309 | # define __always_inline __inline | 
|  | 310 | #endif | 
|  | 311 |  | 
|  | 312 | /* Associate error messages with the source location of the call site rather | 
|  | 313 | than with the source location inside the function.  */ | 
|  | 314 | #if __GNUC_PREREQ (4,3) | 
|  | 315 | # define __attribute_artificial__ __attribute__ ((__artificial__)) | 
|  | 316 | #else | 
|  | 317 | # define __attribute_artificial__ /* Ignore */ | 
|  | 318 | #endif | 
|  | 319 |  | 
|  | 320 | /* GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99 | 
|  | 321 | inline semantics, unless -fgnu89-inline is used.  Using __GNUC_STDC_INLINE__ | 
|  | 322 | or __GNUC_GNU_INLINE is not a good enough check for gcc because gcc versions | 
|  | 323 | older than 4.3 may define these macros and still not guarantee GNU inlining | 
|  | 324 | semantics. | 
|  | 325 |  | 
|  | 326 | clang++ identifies itself as gcc-4.2, but has support for GNU inlining | 
|  | 327 | semantics, that can be checked fot by using the __GNUC_STDC_INLINE_ and | 
|  | 328 | __GNUC_GNU_INLINE__ macro definitions.  */ | 
|  | 329 | #if (!defined __cplusplus || __GNUC_PREREQ (4,3) \ | 
|  | 330 | || (defined __clang__ && (defined __GNUC_STDC_INLINE__ \ | 
|  | 331 | || defined __GNUC_GNU_INLINE__))) | 
|  | 332 | # if defined __GNUC_STDC_INLINE__ || defined __cplusplus | 
|  | 333 | #  define __extern_inline extern __inline __attribute__ ((__gnu_inline__)) | 
|  | 334 | #  define __extern_always_inline \ | 
|  | 335 | extern __always_inline __attribute__ ((__gnu_inline__)) | 
|  | 336 | # else | 
|  | 337 | #  define __extern_inline extern __inline | 
|  | 338 | #  define __extern_always_inline extern __always_inline | 
|  | 339 | # endif | 
|  | 340 | #endif | 
|  | 341 |  | 
|  | 342 | #ifdef __extern_always_inline | 
|  | 343 | # define __fortify_function __extern_always_inline __attribute_artificial__ | 
|  | 344 | #endif | 
|  | 345 |  | 
|  | 346 | /* GCC 4.3 and above allow passing all anonymous arguments of an | 
|  | 347 | __extern_always_inline function to some other vararg function.  */ | 
|  | 348 | #if __GNUC_PREREQ (4,3) | 
|  | 349 | # define __va_arg_pack() __builtin_va_arg_pack () | 
|  | 350 | # define __va_arg_pack_len() __builtin_va_arg_pack_len () | 
|  | 351 | #endif | 
|  | 352 |  | 
|  | 353 | /* It is possible to compile containing GCC extensions even if GCC is | 
|  | 354 | run in pedantic mode if the uses are carefully marked using the | 
|  | 355 | `__extension__' keyword.  But this is not generally available before | 
|  | 356 | version 2.8.  */ | 
|  | 357 | #if !__GNUC_PREREQ (2,8) | 
|  | 358 | # define __extension__		/* Ignore */ | 
|  | 359 | #endif | 
|  | 360 |  | 
|  | 361 | /* __restrict is known in EGCS 1.2 and above. */ | 
|  | 362 | #if !__GNUC_PREREQ (2,92) | 
|  | 363 | # define __restrict	/* Ignore */ | 
|  | 364 | #endif | 
|  | 365 |  | 
|  | 366 | /* ISO C99 also allows to declare arrays as non-overlapping.  The syntax is | 
|  | 367 | array_name[restrict] | 
|  | 368 | GCC 3.1 supports this.  */ | 
|  | 369 | #if __GNUC_PREREQ (3,1) && !defined __GNUG__ | 
|  | 370 | # define __restrict_arr	__restrict | 
|  | 371 | #else | 
|  | 372 | # ifdef __GNUC__ | 
|  | 373 | #  define __restrict_arr	/* Not supported in old GCC.  */ | 
|  | 374 | # else | 
|  | 375 | #  if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L | 
|  | 376 | #   define __restrict_arr	restrict | 
|  | 377 | #  else | 
|  | 378 | /* Some other non-C99 compiler.  */ | 
|  | 379 | #   define __restrict_arr	/* Not supported.  */ | 
|  | 380 | #  endif | 
|  | 381 | # endif | 
|  | 382 | #endif | 
|  | 383 |  | 
|  | 384 | #if __GNUC__ >= 3 | 
|  | 385 | # define __glibc_unlikely(cond)	__builtin_expect ((cond), 0) | 
|  | 386 | # define __glibc_likely(cond)	__builtin_expect ((cond), 1) | 
|  | 387 | #else | 
|  | 388 | # define __glibc_unlikely(cond)	(cond) | 
|  | 389 | # define __glibc_likely(cond)	(cond) | 
|  | 390 | #endif | 
|  | 391 |  | 
|  | 392 | #if (!defined _Noreturn \ | 
|  | 393 | && (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) < 201112 \ | 
|  | 394 | &&  !__GNUC_PREREQ (4,7)) | 
|  | 395 | # if __GNUC_PREREQ (2,8) | 
|  | 396 | #  define _Noreturn __attribute__ ((__noreturn__)) | 
|  | 397 | # else | 
|  | 398 | #  define _Noreturn | 
|  | 399 | # endif | 
|  | 400 | #endif | 
|  | 401 |  | 
|  | 402 | #if (!defined _Static_assert && !defined __cplusplus \ | 
|  | 403 | && (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) < 201112 \ | 
|  | 404 | && (!__GNUC_PREREQ (4, 6) || defined __STRICT_ANSI__)) | 
|  | 405 | # define _Static_assert(expr, diagnostic) \ | 
|  | 406 | extern int (*__Static_assert_function (void)) \ | 
|  | 407 | [!!sizeof (struct { int __error_if_negative: (expr) ? 2 : -1; })] | 
|  | 408 | #endif | 
|  | 409 |  | 
|  | 410 | #include <bits/wordsize.h> | 
|  | 411 |  | 
|  | 412 | #if defined __LONG_DOUBLE_MATH_OPTIONAL && defined __NO_LONG_DOUBLE_MATH | 
|  | 413 | # define __LDBL_COMPAT 1 | 
|  | 414 | # ifdef __REDIRECT | 
|  | 415 | #  define __LDBL_REDIR1(name, proto, alias) __REDIRECT (name, proto, alias) | 
|  | 416 | #  define __LDBL_REDIR(name, proto) \ | 
|  | 417 | __LDBL_REDIR1 (name, proto, __nldbl_##name) | 
|  | 418 | #  define __LDBL_REDIR1_NTH(name, proto, alias) __REDIRECT_NTH (name, proto, alias) | 
|  | 419 | #  define __LDBL_REDIR_NTH(name, proto) \ | 
|  | 420 | __LDBL_REDIR1_NTH (name, proto, __nldbl_##name) | 
|  | 421 | #  define __LDBL_REDIR1_DECL(name, alias) \ | 
|  | 422 | extern __typeof (name) name __asm (__ASMNAME (#alias)); | 
|  | 423 | #  define __LDBL_REDIR_DECL(name) \ | 
|  | 424 | extern __typeof (name) name __asm (__ASMNAME ("__nldbl_" #name)); | 
|  | 425 | #  define __REDIRECT_LDBL(name, proto, alias) \ | 
|  | 426 | __LDBL_REDIR1 (name, proto, __nldbl_##alias) | 
|  | 427 | #  define __REDIRECT_NTH_LDBL(name, proto, alias) \ | 
|  | 428 | __LDBL_REDIR1_NTH (name, proto, __nldbl_##alias) | 
|  | 429 | # endif | 
|  | 430 | #endif | 
|  | 431 | #if !defined __LDBL_COMPAT || !defined __REDIRECT | 
|  | 432 | # define __LDBL_REDIR1(name, proto, alias) name proto | 
|  | 433 | # define __LDBL_REDIR(name, proto) name proto | 
|  | 434 | # define __LDBL_REDIR1_NTH(name, proto, alias) name proto __THROW | 
|  | 435 | # define __LDBL_REDIR_NTH(name, proto) name proto __THROW | 
|  | 436 | # define __LDBL_REDIR_DECL(name) | 
|  | 437 | # ifdef __REDIRECT | 
|  | 438 | #  define __REDIRECT_LDBL(name, proto, alias) __REDIRECT (name, proto, alias) | 
|  | 439 | #  define __REDIRECT_NTH_LDBL(name, proto, alias) \ | 
|  | 440 | __REDIRECT_NTH (name, proto, alias) | 
|  | 441 | # endif | 
|  | 442 | #endif | 
|  | 443 |  | 
|  | 444 | #endif	 /* sys/cdefs.h */ |