gtsocial-umbx

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

signal_linux_386.go (90859B)


      1 // Code generated by 'ccgo signal/gen.c -crt-import-path "" -export-defines "" -export-enums "" -export-externs X -export-fields F -export-structs "" -export-typedefs "" -header -hide _OSSwapInt16,_OSSwapInt32,_OSSwapInt64 -o signal/signal_linux_386.go -pkgname signal', DO NOT EDIT.
      2 
      3 package signal
      4 
      5 import (
      6 	"math"
      7 	"reflect"
      8 	"sync/atomic"
      9 	"unsafe"
     10 )
     11 
     12 var _ = math.Pi
     13 var _ reflect.Kind
     14 var _ atomic.Value
     15 var _ unsafe.Pointer
     16 
     17 const (
     18 	FP_XSTATE_MAGIC1             = 0x46505853
     19 	FP_XSTATE_MAGIC2             = 0x46505845
     20 	MINSIGSTKSZ                  = 2048
     21 	NGREG                        = 19
     22 	NSIG                         = 65
     23 	SA_INTERRUPT                 = 0x20000000
     24 	SA_NOCLDSTOP                 = 1
     25 	SA_NOCLDWAIT                 = 2
     26 	SA_NODEFER                   = 0x40000000
     27 	SA_NOMASK                    = 1073741824
     28 	SA_ONESHOT                   = 2147483648
     29 	SA_ONSTACK                   = 0x08000000
     30 	SA_RESETHAND                 = 0x80000000
     31 	SA_RESTART                   = 0x10000000
     32 	SA_SIGINFO                   = 4
     33 	SA_STACK                     = 134217728
     34 	SIGABRT                      = 6
     35 	SIGALRM                      = 14
     36 	SIGBUS                       = 7
     37 	SIGCHLD                      = 17
     38 	SIGCLD                       = 17
     39 	SIGCONT                      = 18
     40 	SIGFPE                       = 8
     41 	SIGHUP                       = 1
     42 	SIGILL                       = 4
     43 	SIGINT                       = 2
     44 	SIGIO                        = 29
     45 	SIGIOT                       = 6
     46 	SIGKILL                      = 9
     47 	SIGPIPE                      = 13
     48 	SIGPOLL                      = 29
     49 	SIGPROF                      = 27
     50 	SIGPWR                       = 30
     51 	SIGQUIT                      = 3
     52 	SIGSEGV                      = 11
     53 	SIGSTKFLT                    = 16
     54 	SIGSTKSZ                     = 8192
     55 	SIGSTOP                      = 19
     56 	SIGSYS                       = 31
     57 	SIGTERM                      = 15
     58 	SIGTRAP                      = 5
     59 	SIGTSTP                      = 20
     60 	SIGTTIN                      = 21
     61 	SIGTTOU                      = 22
     62 	SIGURG                       = 23
     63 	SIGUSR1                      = 10
     64 	SIGUSR2                      = 12
     65 	SIGVTALRM                    = 26
     66 	SIGWINCH                     = 28
     67 	SIGXCPU                      = 24
     68 	SIGXFSZ                      = 25
     69 	SIG_BLOCK                    = 0
     70 	SIG_SETMASK                  = 2
     71 	SIG_UNBLOCK                  = 1
     72 	X86_FXSR_MAGIC               = 0x0000
     73 	X_ATFILE_SOURCE              = 1
     74 	X_BITS_ENDIANNESS_H          = 1
     75 	X_BITS_ENDIAN_H              = 1
     76 	X_BITS_PTHREADTYPES_ARCH_H   = 1
     77 	X_BITS_PTHREADTYPES_COMMON_H = 1
     78 	X_BITS_SIGACTION_H           = 1
     79 	X_BITS_SIGCONTEXT_H          = 1
     80 	X_BITS_SIGEVENT_CONSTS_H     = 1
     81 	X_BITS_SIGINFO_ARCH_H        = 1
     82 	X_BITS_SIGINFO_CONSTS_H      = 1
     83 	X_BITS_SIGNUM_GENERIC_H      = 1
     84 	X_BITS_SIGNUM_H              = 1
     85 	X_BITS_SIGSTACK_H            = 1
     86 	X_BITS_SIGTHREAD_H           = 1
     87 	X_BITS_SS_FLAGS_H            = 1
     88 	X_BITS_TIME64_H              = 1
     89 	X_BITS_TYPESIZES_H           = 1
     90 	X_BITS_TYPES_H               = 1
     91 	X_BSD_SIZE_T_                = 0
     92 	X_BSD_SIZE_T_DEFINED_        = 0
     93 	X_DEFAULT_SOURCE             = 1
     94 	X_FEATURES_H                 = 1
     95 	X_FILE_OFFSET_BITS           = 64
     96 	X_GCC_SIZE_T                 = 0
     97 	X_ILP32                      = 1
     98 	X_NSIG                       = 65
     99 	X_POSIX_C_SOURCE             = 200809
    100 	X_POSIX_SOURCE               = 1
    101 	X_RWLOCK_INTERNAL_H          = 0
    102 	X_SIGNAL_H                   = 0
    103 	X_SIZET_                     = 0
    104 	X_SIZE_T                     = 0
    105 	X_SIZE_T_                    = 0
    106 	X_SIZE_T_DECLARED            = 0
    107 	X_SIZE_T_DEFINED             = 0
    108 	X_SIZE_T_DEFINED_            = 0
    109 	X_STDC_PREDEF_H              = 1
    110 	X_STRUCT_TIMESPEC            = 1
    111 	X_SYS_CDEFS_H                = 1
    112 	X_SYS_SIZE_T_H               = 0
    113 	X_SYS_UCONTEXT_H             = 1
    114 	X_THREAD_MUTEX_INTERNAL_H    = 1
    115 	X_THREAD_SHARED_TYPES_H      = 1
    116 	X_T_SIZE                     = 0
    117 	X_T_SIZE_                    = 0
    118 	I386                         = 1
    119 	Linux                        = 1
    120 	Unix                         = 1
    121 )
    122 
    123 // POSIX names to access some of the members.
    124 
    125 // sigevent constants.  Linux version.
    126 //    Copyright (C) 1997-2020 Free Software Foundation, Inc.
    127 //    This file is part of the GNU C Library.
    128 //
    129 //    The GNU C Library is free software; you can redistribute it and/or
    130 //    modify it under the terms of the GNU Lesser General Public
    131 //    License as published by the Free Software Foundation; either
    132 //    version 2.1 of the License, or (at your option) any later version.
    133 //
    134 //    The GNU C Library is distributed in the hope that it will be useful,
    135 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
    136 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    137 //    Lesser General Public License for more details.
    138 //
    139 //    You should have received a copy of the GNU Lesser General Public
    140 //    License along with the GNU C Library; if not, see
    141 //    <https://www.gnu.org/licenses/>.
    142 
    143 // `sigev_notify' values.
    144 const ( /* sigevent-consts.h:27:1: */
    145 	SIGEV_SIGNAL = 0 // Notify via signal.
    146 	SIGEV_NONE   = 1 // Other notification: meaningless.
    147 	SIGEV_THREAD = 2 // Deliver via thread creation.
    148 
    149 	SIGEV_THREAD_ID = 4
    150 )
    151 
    152 // `si_code' values for SIGSEGV signal.
    153 const ( /* siginfo-consts.h:119:1: */
    154 	SEGV_MAPERR  = 1 // Address not mapped to object.
    155 	SEGV_ACCERR  = 2 // Invalid permissions for mapped object.
    156 	SEGV_BNDERR  = 3 // Bounds checking failure.
    157 	SEGV_PKUERR  = 4 // Protection key checking failure.
    158 	SEGV_ACCADI  = 5 // ADI not enabled for mapped object.
    159 	SEGV_ADIDERR = 6 // Disrupting MCD error.
    160 	SEGV_ADIPERR = 7
    161 )
    162 
    163 // `si_code' values for SIGBUS signal.
    164 const ( /* siginfo-consts.h:138:1: */
    165 	BUS_ADRALN    = 1 // Invalid address alignment.
    166 	BUS_ADRERR    = 2 // Non-existant physical address.
    167 	BUS_OBJERR    = 3 // Object specific hardware error.
    168 	BUS_MCEERR_AR = 4 // Hardware memory error: action required.
    169 	BUS_MCEERR_AO = 5
    170 )
    171 
    172 // `si_code' values for SIGCHLD signal.
    173 const ( /* siginfo-consts.h:172:1: */
    174 	CLD_EXITED    = 1 // Child has exited.
    175 	CLD_KILLED    = 2 // Child was killed.
    176 	CLD_DUMPED    = 3 // Child terminated abnormally.
    177 	CLD_TRAPPED   = 4 // Traced child has trapped.
    178 	CLD_STOPPED   = 5 // Child has stopped.
    179 	CLD_CONTINUED = 6
    180 )
    181 
    182 // `si_code' values for SIGPOLL signal.
    183 const ( /* siginfo-consts.h:189:1: */
    184 	POLL_IN  = 1 // Data input available.
    185 	POLL_OUT = 2 // Output buffers available.
    186 	POLL_MSG = 3 // Input message available.
    187 	POLL_ERR = 4 // I/O error.
    188 	POLL_PRI = 5 // High priority input available.
    189 	POLL_HUP = 6
    190 )
    191 
    192 // X/Open requires some more fields with fixed names.
    193 
    194 // siginfo constants.  Linux version.
    195 //    Copyright (C) 1997-2020 Free Software Foundation, Inc.
    196 //    This file is part of the GNU C Library.
    197 //
    198 //    The GNU C Library is free software; you can redistribute it and/or
    199 //    modify it under the terms of the GNU Lesser General Public
    200 //    License as published by the Free Software Foundation; either
    201 //    version 2.1 of the License, or (at your option) any later version.
    202 //
    203 //    The GNU C Library is distributed in the hope that it will be useful,
    204 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
    205 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    206 //    Lesser General Public License for more details.
    207 //
    208 //    You should have received a copy of the GNU Lesser General Public
    209 //    License along with the GNU C Library; if not, see
    210 //    <https://www.gnu.org/licenses/>.
    211 
    212 // Most of these constants are uniform across all architectures, but there
    213 //    is one exception.
    214 // Architecture-specific adjustments to siginfo_t.  x86 version.
    215 
    216 // Values for `si_code'.  Positive values are reserved for kernel-generated
    217 //
    218 //	signals.
    219 const ( /* siginfo-consts.h:35:1: */
    220 	SI_ASYNCNL  = -60 // Sent by asynch name lookup completion.
    221 	SI_DETHREAD = -7  // Sent by execve killing subsidiary
    222 	// 				   threads.
    223 	SI_TKILL   = -6 // Sent by tkill.
    224 	SI_SIGIO   = -5 // Sent by queued SIGIO.
    225 	SI_ASYNCIO = -4 // Sent by AIO completion.
    226 	SI_MESGQ   = -3 // Sent by real time mesq state change.
    227 	SI_TIMER   = -2 // Sent by timer expiration.
    228 	SI_QUEUE   = -1 // Sent by sigqueue.
    229 	SI_USER    = 0  // Sent by kill, sigsend.
    230 	SI_KERNEL  = 128
    231 )
    232 
    233 // `si_code' values for SIGILL signal.
    234 const ( /* siginfo-consts.h:71:1: */
    235 	ILL_ILLOPC   = 1 // Illegal opcode.
    236 	ILL_ILLOPN   = 2 // Illegal operand.
    237 	ILL_ILLADR   = 3 // Illegal addressing mode.
    238 	ILL_ILLTRP   = 4 // Illegal trap.
    239 	ILL_PRVOPC   = 5 // Privileged opcode.
    240 	ILL_PRVREG   = 6 // Privileged register.
    241 	ILL_COPROC   = 7 // Coprocessor error.
    242 	ILL_BADSTK   = 8 // Internal stack error.
    243 	ILL_BADIADDR = 9
    244 )
    245 
    246 // `si_code' values for SIGFPE signal.
    247 const ( /* siginfo-consts.h:94:1: */
    248 	FPE_INTDIV   = 1  // Integer divide by zero.
    249 	FPE_INTOVF   = 2  // Integer overflow.
    250 	FPE_FLTDIV   = 3  // Floating point divide by zero.
    251 	FPE_FLTOVF   = 4  // Floating point overflow.
    252 	FPE_FLTUND   = 5  // Floating point underflow.
    253 	FPE_FLTRES   = 6  // Floating point inexact result.
    254 	FPE_FLTINV   = 7  // Floating point invalid operation.
    255 	FPE_FLTSUB   = 8  // Subscript out of range.
    256 	FPE_FLTUNK   = 14 // Undiagnosed floating-point exception.
    257 	FPE_CONDTRAP = 15
    258 )
    259 
    260 // sigstack, sigaltstack definitions.
    261 //    Copyright (C) 1998-2020 Free Software Foundation, Inc.
    262 //    This file is part of the GNU C Library.
    263 //
    264 //    The GNU C Library is free software; you can redistribute it and/or
    265 //    modify it under the terms of the GNU Lesser General Public
    266 //    License as published by the Free Software Foundation; either
    267 //    version 2.1 of the License, or (at your option) any later version.
    268 //
    269 //    The GNU C Library is distributed in the hope that it will be useful,
    270 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
    271 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    272 //    Lesser General Public License for more details.
    273 //
    274 //    You should have received a copy of the GNU Lesser General Public
    275 //    License along with the GNU C Library; if not, see
    276 //    <https://www.gnu.org/licenses/>.
    277 
    278 // Minimum stack size for a signal handler.
    279 
    280 // System default stack size.
    281 
    282 // ss_flags values for stack_t.  Linux version.
    283 //    Copyright (C) 1998-2020 Free Software Foundation, Inc.
    284 //    This file is part of the GNU C Library.
    285 //
    286 //    The GNU C Library is free software; you can redistribute it and/or
    287 //    modify it under the terms of the GNU Lesser General Public
    288 //    License as published by the Free Software Foundation; either
    289 //    version 2.1 of the License, or (at your option) any later version.
    290 //
    291 //    The GNU C Library is distributed in the hope that it will be useful,
    292 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
    293 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    294 //    Lesser General Public License for more details.
    295 //
    296 //    You should have received a copy of the GNU Lesser General Public
    297 //    License along with the GNU C Library; if not, see
    298 //    <https://www.gnu.org/licenses/>.
    299 
    300 // Possible values for `ss_flags'.
    301 const ( /* ss_flags.h:27:1: */
    302 	SS_ONSTACK = 1
    303 	SS_DISABLE = 2
    304 )
    305 
    306 type Ptrdiff_t = int32 /* <builtin>:3:26 */
    307 
    308 type Size_t = uint32 /* <builtin>:9:23 */
    309 
    310 type Wchar_t = int32 /* <builtin>:15:24 */
    311 
    312 type X__builtin_va_list = uintptr /* <builtin>:46:14 */
    313 type X__float128 = float64        /* <builtin>:47:21 */
    314 
    315 // Copyright (C) 1991-2020 Free Software Foundation, Inc.
    316 //    This file is part of the GNU C Library.
    317 //
    318 //    The GNU C Library is free software; you can redistribute it and/or
    319 //    modify it under the terms of the GNU Lesser General Public
    320 //    License as published by the Free Software Foundation; either
    321 //    version 2.1 of the License, or (at your option) any later version.
    322 //
    323 //    The GNU C Library is distributed in the hope that it will be useful,
    324 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
    325 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    326 //    Lesser General Public License for more details.
    327 //
    328 //    You should have received a copy of the GNU Lesser General Public
    329 //    License along with the GNU C Library; if not, see
    330 //    <https://www.gnu.org/licenses/>.
    331 
    332 //	ISO C99 Standard: 7.14 Signal handling <signal.h>
    333 
    334 // Copyright (C) 1991-2020 Free Software Foundation, Inc.
    335 //    This file is part of the GNU C Library.
    336 //
    337 //    The GNU C Library is free software; you can redistribute it and/or
    338 //    modify it under the terms of the GNU Lesser General Public
    339 //    License as published by the Free Software Foundation; either
    340 //    version 2.1 of the License, or (at your option) any later version.
    341 //
    342 //    The GNU C Library is distributed in the hope that it will be useful,
    343 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
    344 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    345 //    Lesser General Public License for more details.
    346 //
    347 //    You should have received a copy of the GNU Lesser General Public
    348 //    License along with the GNU C Library; if not, see
    349 //    <https://www.gnu.org/licenses/>.
    350 
    351 // These are defined by the user (or the compiler)
    352 //    to specify the desired environment:
    353 //
    354 //    __STRICT_ANSI__	ISO Standard C.
    355 //    _ISOC99_SOURCE	Extensions to ISO C89 from ISO C99.
    356 //    _ISOC11_SOURCE	Extensions to ISO C99 from ISO C11.
    357 //    _ISOC2X_SOURCE	Extensions to ISO C99 from ISO C2X.
    358 //    __STDC_WANT_LIB_EXT2__
    359 // 			Extensions to ISO C99 from TR 27431-2:2010.
    360 //    __STDC_WANT_IEC_60559_BFP_EXT__
    361 // 			Extensions to ISO C11 from TS 18661-1:2014.
    362 //    __STDC_WANT_IEC_60559_FUNCS_EXT__
    363 // 			Extensions to ISO C11 from TS 18661-4:2015.
    364 //    __STDC_WANT_IEC_60559_TYPES_EXT__
    365 // 			Extensions to ISO C11 from TS 18661-3:2015.
    366 //
    367 //    _POSIX_SOURCE	IEEE Std 1003.1.
    368 //    _POSIX_C_SOURCE	If ==1, like _POSIX_SOURCE; if >=2 add IEEE Std 1003.2;
    369 // 			if >=199309L, add IEEE Std 1003.1b-1993;
    370 // 			if >=199506L, add IEEE Std 1003.1c-1995;
    371 // 			if >=200112L, all of IEEE 1003.1-2004
    372 // 			if >=200809L, all of IEEE 1003.1-2008
    373 //    _XOPEN_SOURCE	Includes POSIX and XPG things.  Set to 500 if
    374 // 			Single Unix conformance is wanted, to 600 for the
    375 // 			sixth revision, to 700 for the seventh revision.
    376 //    _XOPEN_SOURCE_EXTENDED XPG things and X/Open Unix extensions.
    377 //    _LARGEFILE_SOURCE	Some more functions for correct standard I/O.
    378 //    _LARGEFILE64_SOURCE	Additional functionality from LFS for large files.
    379 //    _FILE_OFFSET_BITS=N	Select default filesystem interface.
    380 //    _ATFILE_SOURCE	Additional *at interfaces.
    381 //    _GNU_SOURCE		All of the above, plus GNU extensions.
    382 //    _DEFAULT_SOURCE	The default set of features (taking precedence over
    383 // 			__STRICT_ANSI__).
    384 //
    385 //    _FORTIFY_SOURCE	Add security hardening to many library functions.
    386 // 			Set to 1 or 2; 2 performs stricter checks than 1.
    387 //
    388 //    _REENTRANT, _THREAD_SAFE
    389 // 			Obsolete; equivalent to _POSIX_C_SOURCE=199506L.
    390 //
    391 //    The `-ansi' switch to the GNU C compiler, and standards conformance
    392 //    options such as `-std=c99', define __STRICT_ANSI__.  If none of
    393 //    these are defined, or if _DEFAULT_SOURCE is defined, the default is
    394 //    to have _POSIX_SOURCE set to one and _POSIX_C_SOURCE set to
    395 //    200809L, as well as enabling miscellaneous functions from BSD and
    396 //    SVID.  If more than one of these are defined, they accumulate.  For
    397 //    example __STRICT_ANSI__, _POSIX_SOURCE and _POSIX_C_SOURCE together
    398 //    give you ISO C, 1003.1, and 1003.2, but nothing else.
    399 //
    400 //    These are defined by this file and are used by the
    401 //    header files to decide what to declare or define:
    402 //
    403 //    __GLIBC_USE (F)	Define things from feature set F.  This is defined
    404 // 			to 1 or 0; the subsequent macros are either defined
    405 // 			or undefined, and those tests should be moved to
    406 // 			__GLIBC_USE.
    407 //    __USE_ISOC11		Define ISO C11 things.
    408 //    __USE_ISOC99		Define ISO C99 things.
    409 //    __USE_ISOC95		Define ISO C90 AMD1 (C95) things.
    410 //    __USE_ISOCXX11	Define ISO C++11 things.
    411 //    __USE_POSIX		Define IEEE Std 1003.1 things.
    412 //    __USE_POSIX2		Define IEEE Std 1003.2 things.
    413 //    __USE_POSIX199309	Define IEEE Std 1003.1, and .1b things.
    414 //    __USE_POSIX199506	Define IEEE Std 1003.1, .1b, .1c and .1i things.
    415 //    __USE_XOPEN		Define XPG things.
    416 //    __USE_XOPEN_EXTENDED	Define X/Open Unix things.
    417 //    __USE_UNIX98		Define Single Unix V2 things.
    418 //    __USE_XOPEN2K        Define XPG6 things.
    419 //    __USE_XOPEN2KXSI     Define XPG6 XSI things.
    420 //    __USE_XOPEN2K8       Define XPG7 things.
    421 //    __USE_XOPEN2K8XSI    Define XPG7 XSI things.
    422 //    __USE_LARGEFILE	Define correct standard I/O things.
    423 //    __USE_LARGEFILE64	Define LFS things with separate names.
    424 //    __USE_FILE_OFFSET64	Define 64bit interface as default.
    425 //    __USE_MISC		Define things from 4.3BSD or System V Unix.
    426 //    __USE_ATFILE		Define *at interfaces and AT_* constants for them.
    427 //    __USE_GNU		Define GNU extensions.
    428 //    __USE_FORTIFY_LEVEL	Additional security measures used, according to level.
    429 //
    430 //    The macros `__GNU_LIBRARY__', `__GLIBC__', and `__GLIBC_MINOR__' are
    431 //    defined by this file unconditionally.  `__GNU_LIBRARY__' is provided
    432 //    only for compatibility.  All new code should use the other symbols
    433 //    to test for features.
    434 //
    435 //    All macros listed above as possibly being defined by this file are
    436 //    explicitly undefined if they are not explicitly defined.
    437 //    Feature-test macros that are not defined by the user or compiler
    438 //    but are implied by the other feature-test macros defined (or by the
    439 //    lack of any definitions) are defined by the file.
    440 //
    441 //    ISO C feature test macros depend on the definition of the macro
    442 //    when an affected header is included, not when the first system
    443 //    header is included, and so they are handled in
    444 //    <bits/libc-header-start.h>, which does not have a multiple include
    445 //    guard.  Feature test macros that can be handled from the first
    446 //    system header included are handled here.
    447 
    448 // Undefine everything, so we get a clean slate.
    449 
    450 // Suppress kernel-name space pollution unless user expressedly asks
    451 //    for it.
    452 
    453 // Convenience macro to test the version of gcc.
    454 //    Use like this:
    455 //    #if __GNUC_PREREQ (2,8)
    456 //    ... code requiring gcc 2.8 or later ...
    457 //    #endif
    458 //    Note: only works for GCC 2.0 and later, because __GNUC_MINOR__ was
    459 //    added in 2.0.
    460 
    461 // Similarly for clang.  Features added to GCC after version 4.2 may
    462 //    or may not also be available in clang, and clang's definitions of
    463 //    __GNUC(_MINOR)__ are fixed at 4 and 2 respectively.  Not all such
    464 //    features can be queried via __has_extension/__has_feature.
    465 
    466 // Whether to use feature set F.
    467 
    468 // _BSD_SOURCE and _SVID_SOURCE are deprecated aliases for
    469 //    _DEFAULT_SOURCE.  If _DEFAULT_SOURCE is present we do not
    470 //    issue a warning; the expectation is that the source is being
    471 //    transitioned to use the new macro.
    472 
    473 // If _GNU_SOURCE was defined by the user, turn on all the other features.
    474 
    475 // If nothing (other than _GNU_SOURCE and _DEFAULT_SOURCE) is defined,
    476 //    define _DEFAULT_SOURCE.
    477 
    478 // This is to enable the ISO C2X extension.
    479 
    480 // This is to enable the ISO C11 extension.
    481 
    482 // This is to enable the ISO C99 extension.
    483 
    484 // This is to enable the ISO C90 Amendment 1:1995 extension.
    485 
    486 // If none of the ANSI/POSIX macros are defined, or if _DEFAULT_SOURCE
    487 //    is defined, use POSIX.1-2008 (or another version depending on
    488 //    _XOPEN_SOURCE).
    489 
    490 // Some C libraries once required _REENTRANT and/or _THREAD_SAFE to be
    491 //    defined in all multithreaded code.  GNU libc has not required this
    492 //    for many years.  We now treat them as compatibility synonyms for
    493 //    _POSIX_C_SOURCE=199506L, which is the earliest level of POSIX with
    494 //    comprehensive support for multithreaded code.  Using them never
    495 //    lowers the selected level of POSIX conformance, only raises it.
    496 
    497 // The function 'gets' existed in C89, but is impossible to use
    498 //    safely.  It has been removed from ISO C11 and ISO C++14.  Note: for
    499 //    compatibility with various implementations of <cstdio>, this test
    500 //    must consider only the value of __cplusplus when compiling C++.
    501 
    502 // GNU formerly extended the scanf functions with modified format
    503 //    specifiers %as, %aS, and %a[...] that allocate a buffer for the
    504 //    input using malloc.  This extension conflicts with ISO C99, which
    505 //    defines %a as a standalone format specifier that reads a floating-
    506 //    point number; moreover, POSIX.1-2008 provides the same feature
    507 //    using the modifier letter 'm' instead (%ms, %mS, %m[...]).
    508 //
    509 //    We now follow C99 unless GNU extensions are active and the compiler
    510 //    is specifically in C89 or C++98 mode (strict or not).  For
    511 //    instance, with GCC, -std=gnu11 will have C99-compliant scanf with
    512 //    or without -D_GNU_SOURCE, but -std=c89 -D_GNU_SOURCE will have the
    513 //    old extension.
    514 
    515 // Get definitions of __STDC_* predefined macros, if the compiler has
    516 //    not preincluded this header automatically.
    517 // Copyright (C) 1991-2020 Free Software Foundation, Inc.
    518 //    This file is part of the GNU C Library.
    519 //
    520 //    The GNU C Library is free software; you can redistribute it and/or
    521 //    modify it under the terms of the GNU Lesser General Public
    522 //    License as published by the Free Software Foundation; either
    523 //    version 2.1 of the License, or (at your option) any later version.
    524 //
    525 //    The GNU C Library is distributed in the hope that it will be useful,
    526 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
    527 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    528 //    Lesser General Public License for more details.
    529 //
    530 //    You should have received a copy of the GNU Lesser General Public
    531 //    License along with the GNU C Library; if not, see
    532 //    <https://www.gnu.org/licenses/>.
    533 
    534 // This macro indicates that the installed library is the GNU C Library.
    535 //    For historic reasons the value now is 6 and this will stay from now
    536 //    on.  The use of this variable is deprecated.  Use __GLIBC__ and
    537 //    __GLIBC_MINOR__ now (see below) when you want to test for a specific
    538 //    GNU C library version and use the values in <gnu/lib-names.h> to get
    539 //    the sonames of the shared libraries.
    540 
    541 // Major and minor version number of the GNU C library package.  Use
    542 //    these macros to test for features in specific releases.
    543 
    544 // This is here only because every header file already includes this one.
    545 // Copyright (C) 1992-2020 Free Software Foundation, Inc.
    546 //    This file is part of the GNU C Library.
    547 //
    548 //    The GNU C Library is free software; you can redistribute it and/or
    549 //    modify it under the terms of the GNU Lesser General Public
    550 //    License as published by the Free Software Foundation; either
    551 //    version 2.1 of the License, or (at your option) any later version.
    552 //
    553 //    The GNU C Library is distributed in the hope that it will be useful,
    554 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
    555 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    556 //    Lesser General Public License for more details.
    557 //
    558 //    You should have received a copy of the GNU Lesser General Public
    559 //    License along with the GNU C Library; if not, see
    560 //    <https://www.gnu.org/licenses/>.
    561 
    562 // We are almost always included from features.h.
    563 
    564 // The GNU libc does not support any K&R compilers or the traditional mode
    565 //    of ISO C compilers anymore.  Check for some of the combinations not
    566 //    anymore supported.
    567 
    568 // Some user header file might have defined this before.
    569 
    570 // All functions, except those with callbacks or those that
    571 //    synchronize memory, are leaf functions.
    572 
    573 // GCC can always grok prototypes.  For C++ programs we add throw()
    574 //    to help it optimize the function calls.  But this works only with
    575 //    gcc 2.8.x and egcs.  For gcc 3.2 and up we even mark C functions
    576 //    as non-throwing using a function attribute since programs can use
    577 //    the -fexceptions options for C code as well.
    578 
    579 // Compilers that are not clang may object to
    580 //        #if defined __clang__ && __has_extension(...)
    581 //    even though they do not need to evaluate the right-hand side of the &&.
    582 
    583 // These two macros are not used in glibc anymore.  They are kept here
    584 //    only because some other projects expect the macros to be defined.
    585 
    586 // For these things, GCC behaves the ANSI way normally,
    587 //    and the non-ANSI way under -traditional.
    588 
    589 // This is not a typedef so `const __ptr_t' does the right thing.
    590 
    591 // C++ needs to know that types and declarations are C, not C++.
    592 
    593 // Fortify support.
    594 
    595 // Support for flexible arrays.
    596 //    Headers that should use flexible arrays only if they're "real"
    597 //    (e.g. only if they won't affect sizeof()) should test
    598 //    #if __glibc_c99_flexarr_available.
    599 
    600 // __asm__ ("xyz") is used throughout the headers to rename functions
    601 //    at the assembly language level.  This is wrapped by the __REDIRECT
    602 //    macro, in order to support compilers that can do this some other
    603 //    way.  When compilers don't support asm-names at all, we have to do
    604 //    preprocessor tricks instead (which don't have exactly the right
    605 //    semantics, but it's the best we can do).
    606 //
    607 //    Example:
    608 //    int __REDIRECT(setpgrp, (__pid_t pid, __pid_t pgrp), setpgid);
    609 
    610 //
    611 // #elif __SOME_OTHER_COMPILER__
    612 //
    613 // # define __REDIRECT(name, proto, alias) name proto; 	_Pragma("let " #name " = " #alias)
    614 
    615 // GCC has various useful declarations that can be made with the
    616 //    `__attribute__' syntax.  All of the ways we use this do fine if
    617 //    they are omitted for compilers that don't understand it.
    618 
    619 // At some point during the gcc 2.96 development the `malloc' attribute
    620 //    for functions was introduced.  We don't want to use it unconditionally
    621 //    (although this would be possible) since it generates warnings.
    622 
    623 // Tell the compiler which arguments to an allocation function
    624 //    indicate the size of the allocation.
    625 
    626 // At some point during the gcc 2.96 development the `pure' attribute
    627 //    for functions was introduced.  We don't want to use it unconditionally
    628 //    (although this would be possible) since it generates warnings.
    629 
    630 // This declaration tells the compiler that the value is constant.
    631 
    632 // At some point during the gcc 3.1 development the `used' attribute
    633 //    for functions was introduced.  We don't want to use it unconditionally
    634 //    (although this would be possible) since it generates warnings.
    635 
    636 // Since version 3.2, gcc allows marking deprecated functions.
    637 
    638 // Since version 4.5, gcc also allows one to specify the message printed
    639 //    when a deprecated function is used.  clang claims to be gcc 4.2, but
    640 //    may also support this feature.
    641 
    642 // At some point during the gcc 2.8 development the `format_arg' attribute
    643 //    for functions was introduced.  We don't want to use it unconditionally
    644 //    (although this would be possible) since it generates warnings.
    645 //    If several `format_arg' attributes are given for the same function, in
    646 //    gcc-3.0 and older, all but the last one are ignored.  In newer gccs,
    647 //    all designated arguments are considered.
    648 
    649 // At some point during the gcc 2.97 development the `strfmon' format
    650 //    attribute for functions was introduced.  We don't want to use it
    651 //    unconditionally (although this would be possible) since it
    652 //    generates warnings.
    653 
    654 // The nonull function attribute allows to mark pointer parameters which
    655 //    must not be NULL.
    656 
    657 // If fortification mode, we warn about unused results of certain
    658 //    function calls which can lead to problems.
    659 
    660 // Forces a function to be always inlined.
    661 // The Linux kernel defines __always_inline in stddef.h (283d7573), and
    662 //    it conflicts with this definition.  Therefore undefine it first to
    663 //    allow either header to be included first.
    664 
    665 // Associate error messages with the source location of the call site rather
    666 //    than with the source location inside the function.
    667 
    668 // GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
    669 //    inline semantics, unless -fgnu89-inline is used.  Using __GNUC_STDC_INLINE__
    670 //    or __GNUC_GNU_INLINE is not a good enough check for gcc because gcc versions
    671 //    older than 4.3 may define these macros and still not guarantee GNU inlining
    672 //    semantics.
    673 //
    674 //    clang++ identifies itself as gcc-4.2, but has support for GNU inlining
    675 //    semantics, that can be checked for by using the __GNUC_STDC_INLINE_ and
    676 //    __GNUC_GNU_INLINE__ macro definitions.
    677 
    678 // GCC 4.3 and above allow passing all anonymous arguments of an
    679 //    __extern_always_inline function to some other vararg function.
    680 
    681 // It is possible to compile containing GCC extensions even if GCC is
    682 //    run in pedantic mode if the uses are carefully marked using the
    683 //    `__extension__' keyword.  But this is not generally available before
    684 //    version 2.8.
    685 
    686 // __restrict is known in EGCS 1.2 and above.
    687 
    688 // ISO C99 also allows to declare arrays as non-overlapping.  The syntax is
    689 //      array_name[restrict]
    690 //    GCC 3.1 supports this.
    691 
    692 // Describes a char array whose address can safely be passed as the first
    693 //    argument to strncpy and strncat, as the char array is not necessarily
    694 //    a NUL-terminated string.
    695 
    696 // Undefine (also defined in libc-symbols.h).
    697 // Copies attributes from the declaration or type referenced by
    698 //    the argument.
    699 
    700 // Determine the wordsize from the preprocessor defines.
    701 
    702 // Properties of long double type.  ldbl-96 version.
    703 //    Copyright (C) 2016-2020 Free Software Foundation, Inc.
    704 //    This file is part of the GNU C Library.
    705 //
    706 //    The GNU C Library is free software; you can redistribute it and/or
    707 //    modify it under the terms of the GNU Lesser General Public
    708 //    License  published by the Free Software Foundation; either
    709 //    version 2.1 of the License, or (at your option) any later version.
    710 //
    711 //    The GNU C Library is distributed in the hope that it will be useful,
    712 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
    713 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    714 //    Lesser General Public License for more details.
    715 //
    716 //    You should have received a copy of the GNU Lesser General Public
    717 //    License along with the GNU C Library; if not, see
    718 //    <https://www.gnu.org/licenses/>.
    719 
    720 // long double is distinct from double, so there is nothing to
    721 //    define here.
    722 
    723 // __glibc_macro_warning (MESSAGE) issues warning MESSAGE.  This is
    724 //    intended for use in preprocessor macros.
    725 //
    726 //    Note: MESSAGE must be a _single_ string; concatenation of string
    727 //    literals is not supported.
    728 
    729 // Generic selection (ISO C11) is a C-only feature, available in GCC
    730 //    since version 4.9.  Previous versions do not provide generic
    731 //    selection, even though they might set __STDC_VERSION__ to 201112L,
    732 //    when in -std=c11 mode.  Thus, we must check for !defined __GNUC__
    733 //    when testing __STDC_VERSION__ for generic selection support.
    734 //    On the other hand, Clang also defines __GNUC__, so a clang-specific
    735 //    check is required to enable the use of generic selection.
    736 
    737 // If we don't have __REDIRECT, prototypes will be missing if
    738 //    __USE_FILE_OFFSET64 but not __USE_LARGEFILE[64].
    739 
    740 // Decide whether we can define 'extern inline' functions in headers.
    741 
    742 // This is here only because every header file already includes this one.
    743 //    Get the definitions of all the appropriate `__stub_FUNCTION' symbols.
    744 //    <gnu/stubs.h> contains `#define __stub_FUNCTION' when FUNCTION is a stub
    745 //    that will always return failure (and set errno to ENOSYS).
    746 // This file is automatically generated.
    747 //    This file selects the right generated file of `__stub_FUNCTION' macros
    748 //    based on the architecture being compiled for.
    749 
    750 // This file is automatically generated.
    751 //    It defines a symbol `__stub_FUNCTION' for each function
    752 //    in the C library which is a stub, meaning it will fail
    753 //    every time called, usually setting errno to ENOSYS.
    754 
    755 // bits/types.h -- definitions of __*_t types underlying *_t types.
    756 //    Copyright (C) 2002-2020 Free Software Foundation, Inc.
    757 //    This file is part of the GNU C Library.
    758 //
    759 //    The GNU C Library is free software; you can redistribute it and/or
    760 //    modify it under the terms of the GNU Lesser General Public
    761 //    License as published by the Free Software Foundation; either
    762 //    version 2.1 of the License, or (at your option) any later version.
    763 //
    764 //    The GNU C Library is distributed in the hope that it will be useful,
    765 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
    766 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    767 //    Lesser General Public License for more details.
    768 //
    769 //    You should have received a copy of the GNU Lesser General Public
    770 //    License along with the GNU C Library; if not, see
    771 //    <https://www.gnu.org/licenses/>.
    772 
    773 // Never include this file directly; use <sys/types.h> instead.
    774 
    775 // Copyright (C) 1991-2020 Free Software Foundation, Inc.
    776 //    This file is part of the GNU C Library.
    777 //
    778 //    The GNU C Library is free software; you can redistribute it and/or
    779 //    modify it under the terms of the GNU Lesser General Public
    780 //    License as published by the Free Software Foundation; either
    781 //    version 2.1 of the License, or (at your option) any later version.
    782 //
    783 //    The GNU C Library is distributed in the hope that it will be useful,
    784 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
    785 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    786 //    Lesser General Public License for more details.
    787 //
    788 //    You should have received a copy of the GNU Lesser General Public
    789 //    License along with the GNU C Library; if not, see
    790 //    <https://www.gnu.org/licenses/>.
    791 
    792 // Determine the wordsize from the preprocessor defines.
    793 
    794 // Bit size of the time_t type at glibc build time, x86-64 and x32 case.
    795 //    Copyright (C) 2018-2020 Free Software Foundation, Inc.
    796 //    This file is part of the GNU C Library.
    797 //
    798 //    The GNU C Library is free software; you can redistribute it and/or
    799 //    modify it under the terms of the GNU Lesser General Public
    800 //    License as published by the Free Software Foundation; either
    801 //    version 2.1 of the License, or (at your option) any later version.
    802 //
    803 //    The GNU C Library is distributed in the hope that it will be useful,
    804 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
    805 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    806 //    Lesser General Public License for more details.
    807 //
    808 //    You should have received a copy of the GNU Lesser General Public
    809 //    License along with the GNU C Library; if not, see
    810 //    <https://www.gnu.org/licenses/>.
    811 
    812 // For others, time size is word size.
    813 
    814 // Convenience types.
    815 type X__u_char = uint8   /* types.h:31:23 */
    816 type X__u_short = uint16 /* types.h:32:28 */
    817 type X__u_int = uint32   /* types.h:33:22 */
    818 type X__u_long = uint32  /* types.h:34:27 */
    819 
    820 // Fixed-size types, underlying types depend on word size and compiler.
    821 type X__int8_t = int8     /* types.h:37:21 */
    822 type X__uint8_t = uint8   /* types.h:38:23 */
    823 type X__int16_t = int16   /* types.h:39:26 */
    824 type X__uint16_t = uint16 /* types.h:40:28 */
    825 type X__int32_t = int32   /* types.h:41:20 */
    826 type X__uint32_t = uint32 /* types.h:42:22 */
    827 type X__int64_t = int64   /* types.h:47:44 */
    828 type X__uint64_t = uint64 /* types.h:48:46 */
    829 
    830 // Smallest types with at least a given width.
    831 type X__int_least8_t = X__int8_t     /* types.h:52:18 */
    832 type X__uint_least8_t = X__uint8_t   /* types.h:53:19 */
    833 type X__int_least16_t = X__int16_t   /* types.h:54:19 */
    834 type X__uint_least16_t = X__uint16_t /* types.h:55:20 */
    835 type X__int_least32_t = X__int32_t   /* types.h:56:19 */
    836 type X__uint_least32_t = X__uint32_t /* types.h:57:20 */
    837 type X__int_least64_t = X__int64_t   /* types.h:58:19 */
    838 type X__uint_least64_t = X__uint64_t /* types.h:59:20 */
    839 
    840 // quad_t is also 64 bits.
    841 type X__quad_t = int64    /* types.h:66:37 */
    842 type X__u_quad_t = uint64 /* types.h:67:46 */
    843 
    844 // Largest integral types.
    845 type X__intmax_t = int64   /* types.h:75:37 */
    846 type X__uintmax_t = uint64 /* types.h:76:46 */
    847 
    848 // The machine-dependent file <bits/typesizes.h> defines __*_T_TYPE
    849 //    macros for each of the OS types we define below.  The definitions
    850 //    of those macros must use the following macros for underlying types.
    851 //    We define __S<SIZE>_TYPE and __U<SIZE>_TYPE for the signed and unsigned
    852 //    variants of each of the following integer types on this machine.
    853 //
    854 // 	16		-- "natural" 16-bit type (always short)
    855 // 	32		-- "natural" 32-bit type (always int)
    856 // 	64		-- "natural" 64-bit type (long or long long)
    857 // 	LONG32		-- 32-bit type, traditionally long
    858 // 	QUAD		-- 64-bit type, traditionally long long
    859 // 	WORD		-- natural type of __WORDSIZE bits (int or long)
    860 // 	LONGWORD	-- type of __WORDSIZE bits, traditionally long
    861 //
    862 //    We distinguish WORD/LONGWORD, 32/LONG32, and 64/QUAD so that the
    863 //    conventional uses of `long' or `long long' type modifiers match the
    864 //    types we define, even when a less-adorned type would be the same size.
    865 //    This matters for (somewhat) portably writing printf/scanf formats for
    866 //    these types, where using the appropriate l or ll format modifiers can
    867 //    make the typedefs and the formats match up across all GNU platforms.  If
    868 //    we used `long' when it's 64 bits where `long long' is expected, then the
    869 //    compiler would warn about the formats not matching the argument types,
    870 //    and the programmer changing them to shut up the compiler would break the
    871 //    program's portability.
    872 //
    873 //    Here we assume what is presently the case in all the GCC configurations
    874 //    we support: long long is always 64 bits, long is always word/address size,
    875 //    and int is always 32 bits.
    876 
    877 // We want __extension__ before typedef's that use nonstandard base types
    878 //    such as `long long' in C89 mode.
    879 // bits/typesizes.h -- underlying types for *_t.  Linux/x86-64 version.
    880 //    Copyright (C) 2012-2020 Free Software Foundation, Inc.
    881 //    This file is part of the GNU C Library.
    882 //
    883 //    The GNU C Library is free software; you can redistribute it and/or
    884 //    modify it under the terms of the GNU Lesser General Public
    885 //    License as published by the Free Software Foundation; either
    886 //    version 2.1 of the License, or (at your option) any later version.
    887 //
    888 //    The GNU C Library is distributed in the hope that it will be useful,
    889 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
    890 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    891 //    Lesser General Public License for more details.
    892 //
    893 //    You should have received a copy of the GNU Lesser General Public
    894 //    License along with the GNU C Library; if not, see
    895 //    <https://www.gnu.org/licenses/>.
    896 
    897 // See <bits/types.h> for the meaning of these macros.  This file exists so
    898 //    that <bits/types.h> need not vary across different GNU platforms.
    899 
    900 // X32 kernel interface is 64-bit.
    901 
    902 // Number of descriptors that can fit in an `fd_set'.
    903 
    904 // bits/time64.h -- underlying types for __time64_t.  Generic version.
    905 //    Copyright (C) 2018-2020 Free Software Foundation, Inc.
    906 //    This file is part of the GNU C Library.
    907 //
    908 //    The GNU C Library is free software; you can redistribute it and/or
    909 //    modify it under the terms of the GNU Lesser General Public
    910 //    License as published by the Free Software Foundation; either
    911 //    version 2.1 of the License, or (at your option) any later version.
    912 //
    913 //    The GNU C Library is distributed in the hope that it will be useful,
    914 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
    915 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    916 //    Lesser General Public License for more details.
    917 //
    918 //    You should have received a copy of the GNU Lesser General Public
    919 //    License along with the GNU C Library; if not, see
    920 //    <https://www.gnu.org/licenses/>.
    921 
    922 // Define __TIME64_T_TYPE so that it is always a 64-bit type.
    923 
    924 // Define a 64-bit time type alongsize the 32-bit one.
    925 
    926 type X__dev_t = X__uint64_t                /* types.h:145:25 */ // Type of device numbers.
    927 type X__uid_t = uint32                     /* types.h:146:25 */ // Type of user identifications.
    928 type X__gid_t = uint32                     /* types.h:147:25 */ // Type of group identifications.
    929 type X__ino_t = uint32                     /* types.h:148:25 */ // Type of file serial numbers.
    930 type X__ino64_t = X__uint64_t              /* types.h:149:27 */ // Type of file serial numbers (LFS).
    931 type X__mode_t = uint32                    /* types.h:150:26 */ // Type of file attribute bitmasks.
    932 type X__nlink_t = uint32                   /* types.h:151:27 */ // Type of file link counts.
    933 type X__off_t = int32                      /* types.h:152:25 */ // Type of file sizes and offsets.
    934 type X__off64_t = X__int64_t               /* types.h:153:27 */ // Type of file sizes and offsets (LFS).
    935 type X__pid_t = int32                      /* types.h:154:25 */ // Type of process identifications.
    936 type X__fsid_t = struct{ F__val [2]int32 } /* types.h:155:26 */ // Type of file system IDs.
    937 type X__clock_t = int32                    /* types.h:156:27 */ // Type of CPU usage counts.
    938 type X__rlim_t = uint32                    /* types.h:157:26 */ // Type for resource measurement.
    939 type X__rlim64_t = X__uint64_t             /* types.h:158:28 */ // Type for resource measurement (LFS).
    940 type X__id_t = uint32                      /* types.h:159:24 */ // General type for IDs.
    941 type X__time_t = int32                     /* types.h:160:26 */ // Seconds since the Epoch.
    942 type X__useconds_t = uint32                /* types.h:161:30 */ // Count of microseconds.
    943 type X__suseconds_t = int32                /* types.h:162:31 */ // Signed count of microseconds.
    944 
    945 type X__daddr_t = int32 /* types.h:164:27 */ // The type of a disk address.
    946 type X__key_t = int32   /* types.h:165:25 */ // Type of an IPC key.
    947 
    948 // Clock ID used in clock and timer functions.
    949 type X__clockid_t = int32 /* types.h:168:29 */
    950 
    951 // Timer ID returned by `timer_create'.
    952 type X__timer_t = uintptr /* types.h:171:12 */
    953 
    954 // Type to represent block size.
    955 type X__blksize_t = int32 /* types.h:174:29 */
    956 
    957 // Types from the Large File Support interface.
    958 
    959 // Type to count number of disk blocks.
    960 type X__blkcnt_t = int32        /* types.h:179:28 */
    961 type X__blkcnt64_t = X__int64_t /* types.h:180:30 */
    962 
    963 // Type to count file system blocks.
    964 type X__fsblkcnt_t = uint32        /* types.h:183:30 */
    965 type X__fsblkcnt64_t = X__uint64_t /* types.h:184:32 */
    966 
    967 // Type to count file system nodes.
    968 type X__fsfilcnt_t = uint32        /* types.h:187:30 */
    969 type X__fsfilcnt64_t = X__uint64_t /* types.h:188:32 */
    970 
    971 // Type of miscellaneous file system fields.
    972 type X__fsword_t = int32 /* types.h:191:28 */
    973 
    974 type X__ssize_t = int32 /* types.h:193:27 */ // Type of a byte count, or error.
    975 
    976 // Signed long type used in system calls.
    977 type X__syscall_slong_t = int32 /* types.h:196:33 */
    978 // Unsigned long type used in system calls.
    979 type X__syscall_ulong_t = uint32 /* types.h:198:33 */
    980 
    981 // These few don't really vary by system, they always correspond
    982 //
    983 //	to one of the other defined types.
    984 type X__loff_t = X__off64_t /* types.h:202:19 */ // Type of file sizes and offsets (LFS).
    985 type X__caddr_t = uintptr   /* types.h:203:14 */
    986 
    987 // Duplicates info from stdint.h but this is used in unistd.h.
    988 type X__intptr_t = int32 /* types.h:206:25 */
    989 
    990 // Duplicate info from sys/socket.h.
    991 type X__socklen_t = uint32 /* types.h:209:23 */
    992 
    993 // C99: An integer type that can be accessed as an atomic entity,
    994 //
    995 //	even in the presence of asynchronous interrupts.
    996 //	It is not currently necessary for this to be machine-specific.
    997 type X__sig_atomic_t = int32 /* types.h:214:13 */
    998 
    999 // Seconds since the Epoch, visible to user code when time_t is too
   1000 //
   1001 //	narrow only for consistency with the old way of widening too-narrow
   1002 //	types.  User code should never use __time64_t.
   1003 type X__time64_t = X__int64_t /* types.h:222:28 */
   1004 
   1005 // Signal number definitions.  Linux version.
   1006 //    Copyright (C) 1995-2020 Free Software Foundation, Inc.
   1007 //    This file is part of the GNU C Library.
   1008 //
   1009 //    The GNU C Library is free software; you can redistribute it and/or
   1010 //    modify it under the terms of the GNU Lesser General Public
   1011 //    License as published by the Free Software Foundation; either
   1012 //    version 2.1 of the License, or (at your option) any later version.
   1013 //
   1014 //    The GNU C Library is distributed in the hope that it will be useful,
   1015 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
   1016 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   1017 //    Lesser General Public License for more details.
   1018 //
   1019 //    You should have received a copy of the GNU Lesser General Public
   1020 //    License along with the GNU C Library; if not, see
   1021 //    <https://www.gnu.org/licenses/>.
   1022 
   1023 // Signal number constants.  Generic template.
   1024 //    Copyright (C) 1991-2020 Free Software Foundation, Inc.
   1025 //    This file is part of the GNU C Library.
   1026 //
   1027 //    The GNU C Library is free software; you can redistribute it and/or
   1028 //    modify it under the terms of the GNU Lesser General Public
   1029 //    License as published by the Free Software Foundation; either
   1030 //    version 2.1 of the License, or (at your option) any later version.
   1031 //
   1032 //    The GNU C Library is distributed in the hope that it will be useful,
   1033 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
   1034 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   1035 //    Lesser General Public License for more details.
   1036 //
   1037 //    You should have received a copy of the GNU Lesser General Public
   1038 //    License along with the GNU C Library; if not, see
   1039 //    <https://www.gnu.org/licenses/>.
   1040 
   1041 // Fake signal functions.
   1042 
   1043 // We define here all the signal names listed in POSIX (1003.1-2008);
   1044 //    as of 1003.1-2013, no additional signals have been added by POSIX.
   1045 //    We also define here signal names that historically exist in every
   1046 //    real-world POSIX variant (e.g. SIGWINCH).
   1047 //
   1048 //    Signals in the 1-15 range are defined with their historical numbers.
   1049 //    For other signals, we use the BSD numbers.
   1050 //    There are two unallocated signal numbers in the 1-31 range: 7 and 29.
   1051 //    Signal number 0 is reserved for use as kill(pid, 0), to test whether
   1052 //    a process exists without sending it a signal.
   1053 
   1054 // ISO C99 signals.
   1055 
   1056 // Historical signals specified by POSIX.
   1057 
   1058 // New(er) POSIX signals (1003.1-2008, 1003.1-2013).
   1059 
   1060 // Nonstandard signals found in all modern POSIX systems
   1061 //    (including both BSD and Linux).
   1062 
   1063 // Archaic names for compatibility.
   1064 
   1065 // Not all systems support real-time signals.  bits/signum.h indicates
   1066 //    that they are supported by overriding __SIGRTMAX to a value greater
   1067 //    than __SIGRTMIN.  These constants give the kernel-level hard limits,
   1068 //    but some real-time signals may be used internally by glibc.  Do not
   1069 //    use these constants in application code; use SIGRTMIN and SIGRTMAX
   1070 //    (defined in signal.h) instead.
   1071 
   1072 // Biggest signal number + 1 (including real-time signals).
   1073 
   1074 // Adjustments and additions to the signal number constants for
   1075 //    most Linux systems.
   1076 
   1077 // bits/types.h -- definitions of __*_t types underlying *_t types.
   1078 //    Copyright (C) 2002-2020 Free Software Foundation, Inc.
   1079 //    This file is part of the GNU C Library.
   1080 //
   1081 //    The GNU C Library is free software; you can redistribute it and/or
   1082 //    modify it under the terms of the GNU Lesser General Public
   1083 //    License as published by the Free Software Foundation; either
   1084 //    version 2.1 of the License, or (at your option) any later version.
   1085 //
   1086 //    The GNU C Library is distributed in the hope that it will be useful,
   1087 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
   1088 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   1089 //    Lesser General Public License for more details.
   1090 //
   1091 //    You should have received a copy of the GNU Lesser General Public
   1092 //    License along with the GNU C Library; if not, see
   1093 //    <https://www.gnu.org/licenses/>.
   1094 
   1095 // Never include this file directly; use <sys/types.h> instead.
   1096 
   1097 // An integral type that can be modified atomically, without the
   1098 //
   1099 //	possibility of a signal arriving in the middle of the operation.
   1100 type Sig_atomic_t = X__sig_atomic_t /* sig_atomic_t.h:8:24 */
   1101 
   1102 type X__sigset_t = struct{ F__val [32]uint32 } /* __sigset_t.h:8:3 */
   1103 
   1104 // A set of signals to be blocked, unblocked, or waited for.
   1105 type Sigset_t = X__sigset_t /* sigset_t.h:7:20 */
   1106 
   1107 type Pid_t = X__pid_t /* signal.h:40:17 */
   1108 type Uid_t = X__uid_t /* signal.h:46:17 */
   1109 
   1110 // We need `struct timespec' later on.
   1111 // NB: Include guard matches what <linux/time.h> uses.
   1112 
   1113 // bits/types.h -- definitions of __*_t types underlying *_t types.
   1114 //    Copyright (C) 2002-2020 Free Software Foundation, Inc.
   1115 //    This file is part of the GNU C Library.
   1116 //
   1117 //    The GNU C Library is free software; you can redistribute it and/or
   1118 //    modify it under the terms of the GNU Lesser General Public
   1119 //    License as published by the Free Software Foundation; either
   1120 //    version 2.1 of the License, or (at your option) any later version.
   1121 //
   1122 //    The GNU C Library is distributed in the hope that it will be useful,
   1123 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
   1124 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   1125 //    Lesser General Public License for more details.
   1126 //
   1127 //    You should have received a copy of the GNU Lesser General Public
   1128 //    License along with the GNU C Library; if not, see
   1129 //    <https://www.gnu.org/licenses/>.
   1130 
   1131 // Never include this file directly; use <sys/types.h> instead.
   1132 
   1133 // Endian macros for string.h functions
   1134 //    Copyright (C) 1992-2020 Free Software Foundation, Inc.
   1135 //    This file is part of the GNU C Library.
   1136 //
   1137 //    The GNU C Library is free software; you can redistribute it and/or
   1138 //    modify it under the terms of the GNU Lesser General Public
   1139 //    License as published by the Free Software Foundation; either
   1140 //    version 2.1 of the License, or (at your option) any later version.
   1141 //
   1142 //    The GNU C Library is distributed in the hope that it will be useful,
   1143 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
   1144 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   1145 //    Lesser General Public License for more details.
   1146 //
   1147 //    You should have received a copy of the GNU Lesser General Public
   1148 //    License along with the GNU C Library; if not, see
   1149 //    <http://www.gnu.org/licenses/>.
   1150 
   1151 // Definitions for byte order, according to significance of bytes,
   1152 //    from low addresses to high addresses.  The value is what you get by
   1153 //    putting '4' in the most significant byte, '3' in the second most
   1154 //    significant byte, '2' in the second least significant byte, and '1'
   1155 //    in the least significant byte, and then writing down one digit for
   1156 //    each byte, starting with the byte at the lowest address at the left,
   1157 //    and proceeding to the byte with the highest address at the right.
   1158 
   1159 // This file defines `__BYTE_ORDER' for the particular machine.
   1160 
   1161 // i386/x86_64 are little-endian.
   1162 
   1163 // Some machines may need to use a different endianness for floating point
   1164 //    values.
   1165 
   1166 // POSIX.1b structure for a time value.  This is like a `struct timeval' but
   1167 //
   1168 //	has nanoseconds instead of microseconds.
   1169 type Timespec = struct {
   1170 	Ftv_sec  X__time_t
   1171 	Ftv_nsec X__syscall_slong_t
   1172 } /* struct_timespec.h:10:1 */
   1173 
   1174 // Determine the wordsize from the preprocessor defines.
   1175 
   1176 // bits/types.h -- definitions of __*_t types underlying *_t types.
   1177 //    Copyright (C) 2002-2020 Free Software Foundation, Inc.
   1178 //    This file is part of the GNU C Library.
   1179 //
   1180 //    The GNU C Library is free software; you can redistribute it and/or
   1181 //    modify it under the terms of the GNU Lesser General Public
   1182 //    License as published by the Free Software Foundation; either
   1183 //    version 2.1 of the License, or (at your option) any later version.
   1184 //
   1185 //    The GNU C Library is distributed in the hope that it will be useful,
   1186 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
   1187 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   1188 //    Lesser General Public License for more details.
   1189 //
   1190 //    You should have received a copy of the GNU Lesser General Public
   1191 //    License along with the GNU C Library; if not, see
   1192 //    <https://www.gnu.org/licenses/>.
   1193 
   1194 // Never include this file directly; use <sys/types.h> instead.
   1195 
   1196 // Define __sigval_t.
   1197 //    Copyright (C) 1997-2020 Free Software Foundation, Inc.
   1198 //    This file is part of the GNU C Library.
   1199 //
   1200 //    The GNU C Library is free software; you can redistribute it and/or
   1201 //    modify it under the terms of the GNU Lesser General Public
   1202 //    License as published by the Free Software Foundation; either
   1203 //    version 2.1 of the License, or (at your option) any later version.
   1204 //
   1205 //    The GNU C Library is distributed in the hope that it will be useful,
   1206 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
   1207 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   1208 //    Lesser General Public License for more details.
   1209 //
   1210 //    You should have received a copy of the GNU Lesser General Public
   1211 //    License along with the GNU C Library; if not, see
   1212 //    <https://www.gnu.org/licenses/>.
   1213 
   1214 // Type for data associated with a signal.
   1215 type Sigval = struct{ Fsival_int int32 } /* __sigval_t.h:24:1 */
   1216 
   1217 type X__sigval_t = Sigval /* __sigval_t.h:30:22 */
   1218 
   1219 // Some fields of siginfo_t have architecture-specific variations.
   1220 // Architecture-specific adjustments to siginfo_t.  x86 version.
   1221 
   1222 type Siginfo_t = struct {
   1223 	Fsi_signo  int32
   1224 	Fsi_errno  int32
   1225 	Fsi_code   int32
   1226 	F_sifields struct{ F_pad [29]int32 }
   1227 } /* siginfo_t.h:124:5 */
   1228 
   1229 // Architectures might also add architecture-specific constants.
   1230 //    These are all considered GNU extensions.
   1231 
   1232 // Define __sigval_t.
   1233 //    Copyright (C) 1997-2020 Free Software Foundation, Inc.
   1234 //    This file is part of the GNU C Library.
   1235 //
   1236 //    The GNU C Library is free software; you can redistribute it and/or
   1237 //    modify it under the terms of the GNU Lesser General Public
   1238 //    License as published by the Free Software Foundation; either
   1239 //    version 2.1 of the License, or (at your option) any later version.
   1240 //
   1241 //    The GNU C Library is distributed in the hope that it will be useful,
   1242 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
   1243 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   1244 //    Lesser General Public License for more details.
   1245 //
   1246 //    You should have received a copy of the GNU Lesser General Public
   1247 //    License along with the GNU C Library; if not, see
   1248 //    <https://www.gnu.org/licenses/>.
   1249 
   1250 // To avoid sigval_t (not a standard type name) having C++ name
   1251 //    mangling depending on whether the selected standard includes union
   1252 //    sigval, it should not be defined at all when using a standard for
   1253 //    which the sigval name is not reserved; in that case, headers should
   1254 //    not include <bits/types/sigval_t.h> and should use only the
   1255 //    internal __sigval_t name.
   1256 
   1257 type Sigval_t = X__sigval_t /* sigval_t.h:16:20 */
   1258 
   1259 // Determine the wordsize from the preprocessor defines.
   1260 
   1261 // bits/types.h -- definitions of __*_t types underlying *_t types.
   1262 //    Copyright (C) 2002-2020 Free Software Foundation, Inc.
   1263 //    This file is part of the GNU C Library.
   1264 //
   1265 //    The GNU C Library is free software; you can redistribute it and/or
   1266 //    modify it under the terms of the GNU Lesser General Public
   1267 //    License as published by the Free Software Foundation; either
   1268 //    version 2.1 of the License, or (at your option) any later version.
   1269 //
   1270 //    The GNU C Library is distributed in the hope that it will be useful,
   1271 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
   1272 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   1273 //    Lesser General Public License for more details.
   1274 //
   1275 //    You should have received a copy of the GNU Lesser General Public
   1276 //    License along with the GNU C Library; if not, see
   1277 //    <https://www.gnu.org/licenses/>.
   1278 
   1279 // Never include this file directly; use <sys/types.h> instead.
   1280 
   1281 // Define __sigval_t.
   1282 //    Copyright (C) 1997-2020 Free Software Foundation, Inc.
   1283 //    This file is part of the GNU C Library.
   1284 //
   1285 //    The GNU C Library is free software; you can redistribute it and/or
   1286 //    modify it under the terms of the GNU Lesser General Public
   1287 //    License as published by the Free Software Foundation; either
   1288 //    version 2.1 of the License, or (at your option) any later version.
   1289 //
   1290 //    The GNU C Library is distributed in the hope that it will be useful,
   1291 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
   1292 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   1293 //    Lesser General Public License for more details.
   1294 //
   1295 //    You should have received a copy of the GNU Lesser General Public
   1296 //    License along with the GNU C Library; if not, see
   1297 //    <https://www.gnu.org/licenses/>.
   1298 
   1299 // Forward declaration.
   1300 type Pthread_attr_t1 = struct {
   1301 	F__ccgo_pad1 [0]uint32
   1302 	F__size      [36]int8
   1303 } /* sigevent_t.h:17:9 */
   1304 
   1305 // Determine the wordsize from the preprocessor defines.
   1306 
   1307 // bits/types.h -- definitions of __*_t types underlying *_t types.
   1308 //    Copyright (C) 2002-2020 Free Software Foundation, Inc.
   1309 //    This file is part of the GNU C Library.
   1310 //
   1311 //    The GNU C Library is free software; you can redistribute it and/or
   1312 //    modify it under the terms of the GNU Lesser General Public
   1313 //    License as published by the Free Software Foundation; either
   1314 //    version 2.1 of the License, or (at your option) any later version.
   1315 //
   1316 //    The GNU C Library is distributed in the hope that it will be useful,
   1317 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
   1318 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   1319 //    Lesser General Public License for more details.
   1320 //
   1321 //    You should have received a copy of the GNU Lesser General Public
   1322 //    License along with the GNU C Library; if not, see
   1323 //    <https://www.gnu.org/licenses/>.
   1324 
   1325 // Never include this file directly; use <sys/types.h> instead.
   1326 
   1327 // Define __sigval_t.
   1328 //    Copyright (C) 1997-2020 Free Software Foundation, Inc.
   1329 //    This file is part of the GNU C Library.
   1330 //
   1331 //    The GNU C Library is free software; you can redistribute it and/or
   1332 //    modify it under the terms of the GNU Lesser General Public
   1333 //    License as published by the Free Software Foundation; either
   1334 //    version 2.1 of the License, or (at your option) any later version.
   1335 //
   1336 //    The GNU C Library is distributed in the hope that it will be useful,
   1337 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
   1338 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   1339 //    Lesser General Public License for more details.
   1340 //
   1341 //    You should have received a copy of the GNU Lesser General Public
   1342 //    License along with the GNU C Library; if not, see
   1343 //    <https://www.gnu.org/licenses/>.
   1344 
   1345 // Forward declaration.
   1346 type Pthread_attr_t = Pthread_attr_t1 /* sigevent_t.h:17:30 */
   1347 
   1348 // Structure to transport application-defined values with signals.
   1349 type Sigevent = struct {
   1350 	Fsigev_value  X__sigval_t
   1351 	Fsigev_signo  int32
   1352 	Fsigev_notify int32
   1353 	F_sigev_un    struct{ F_pad [13]int32 }
   1354 } /* sigevent_t.h:22:9 */
   1355 
   1356 // Structure to transport application-defined values with signals.
   1357 type Sigevent_t = Sigevent /* sigevent_t.h:42:5 */
   1358 
   1359 // Type of a signal handler.
   1360 type X__sighandler_t = uintptr /* signal.h:72:14 */
   1361 
   1362 // 4.4 BSD uses the name `sig_t' for this.
   1363 type Sig_t = X__sighandler_t /* signal.h:190:24 */
   1364 
   1365 // Get the system-specific definitions of `struct sigaction'
   1366 //    and the `SA_*' and `SIG_*'. constants.
   1367 // The proper definitions for Linux's sigaction.
   1368 //    Copyright (C) 1993-2020 Free Software Foundation, Inc.
   1369 //    This file is part of the GNU C Library.
   1370 //
   1371 //    The GNU C Library is free software; you can redistribute it and/or
   1372 //    modify it under the terms of the GNU Lesser General Public
   1373 //    License as published by the Free Software Foundation; either
   1374 //    version 2.1 of the License, or (at your option) any later version.
   1375 //
   1376 //    The GNU C Library is distributed in the hope that it will be useful,
   1377 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
   1378 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   1379 //    Lesser General Public License for more details.
   1380 //
   1381 //    You should have received a copy of the GNU Lesser General Public
   1382 //    License along with the GNU C Library; if not, see
   1383 //    <https://www.gnu.org/licenses/>.
   1384 
   1385 // Structure describing the action to be taken when a signal arrives.
   1386 type Sigaction = struct {
   1387 	F__sigaction_handler struct{ Fsa_handler X__sighandler_t }
   1388 	Fsa_mask             X__sigset_t
   1389 	Fsa_flags            int32
   1390 	Fsa_restorer         uintptr
   1391 } /* sigaction.h:27:1 */
   1392 
   1393 // Get machine-dependent `struct sigcontext' and signal subcodes.
   1394 // Copyright (C) 2002-2020 Free Software Foundation, Inc.
   1395 //    This file is part of the GNU C Library.
   1396 //
   1397 //    The GNU C Library is free software; you can redistribute it and/or
   1398 //    modify it under the terms of the GNU Lesser General Public
   1399 //    License as published by the Free Software Foundation; either
   1400 //    version 2.1 of the License, or (at your option) any later version.
   1401 //
   1402 //    The GNU C Library is distributed in the hope that it will be useful,
   1403 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
   1404 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the GNU
   1405 //    Lesser General Public License for more details.
   1406 //
   1407 //    You should have received a copy of the GNU Lesser General Public
   1408 //    License along with the GNU C Library; if not, see
   1409 //    <https://www.gnu.org/licenses/>.
   1410 
   1411 // bits/types.h -- definitions of __*_t types underlying *_t types.
   1412 //    Copyright (C) 2002-2020 Free Software Foundation, Inc.
   1413 //    This file is part of the GNU C Library.
   1414 //
   1415 //    The GNU C Library is free software; you can redistribute it and/or
   1416 //    modify it under the terms of the GNU Lesser General Public
   1417 //    License as published by the Free Software Foundation; either
   1418 //    version 2.1 of the License, or (at your option) any later version.
   1419 //
   1420 //    The GNU C Library is distributed in the hope that it will be useful,
   1421 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
   1422 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   1423 //    Lesser General Public License for more details.
   1424 //
   1425 //    You should have received a copy of the GNU Lesser General Public
   1426 //    License along with the GNU C Library; if not, see
   1427 //    <https://www.gnu.org/licenses/>.
   1428 
   1429 // Never include this file directly; use <sys/types.h> instead.
   1430 
   1431 type X_fpx_sw_bytes = struct {
   1432 	Fmagic1            X__uint32_t
   1433 	Fextended_size     X__uint32_t
   1434 	Fxstate_bv         X__uint64_t
   1435 	Fxstate_size       X__uint32_t
   1436 	F__glibc_reserved1 [7]X__uint32_t
   1437 } /* sigcontext.h:31:1 */
   1438 
   1439 type X_fpreg = struct {
   1440 	Fsignificand [4]uint16
   1441 	Fexponent    uint16
   1442 } /* sigcontext.h:40:1 */
   1443 
   1444 type X_fpxreg = struct {
   1445 	Fsignificand       [4]uint16
   1446 	Fexponent          uint16
   1447 	F__glibc_reserved1 [3]uint16
   1448 } /* sigcontext.h:46:1 */
   1449 
   1450 type X_xmmreg = struct{ Felement [4]X__uint32_t } /* sigcontext.h:53:1 */
   1451 
   1452 type X_fpstate = struct {
   1453 	Fcw      X__uint32_t
   1454 	Fsw      X__uint32_t
   1455 	Ftag     X__uint32_t
   1456 	Fipoff   X__uint32_t
   1457 	Fcssel   X__uint32_t
   1458 	Fdataoff X__uint32_t
   1459 	Fdatasel X__uint32_t
   1460 	F_st     [8]struct {
   1461 		Fsignificand [4]uint16
   1462 		Fexponent    uint16
   1463 	}
   1464 	Fstatus            uint16
   1465 	Fmagic             uint16
   1466 	F_fxsr_env         [6]X__uint32_t
   1467 	Fmxcsr             X__uint32_t
   1468 	F__glibc_reserved1 X__uint32_t
   1469 	F_fxsr_st          [8]struct {
   1470 		Fsignificand       [4]uint16
   1471 		Fexponent          uint16
   1472 		F__glibc_reserved1 [3]uint16
   1473 	}
   1474 	F_xmm              [8]struct{ Felement [4]X__uint32_t }
   1475 	F__glibc_reserved2 [56]X__uint32_t
   1476 } /* sigcontext.h:62:1 */
   1477 
   1478 // Kernel headers before 2.1.1 define a struct sigcontext_struct, but
   1479 //    we need sigcontext.  Some packages have come to rely on
   1480 //    sigcontext_struct being defined on 32-bit x86, so define this for
   1481 //    their benefit.
   1482 
   1483 type Sigcontext = struct {
   1484 	Fgs            uint16
   1485 	F__gsh         uint16
   1486 	Ffs            uint16
   1487 	F__fsh         uint16
   1488 	Fes            uint16
   1489 	F__esh         uint16
   1490 	Fds            uint16
   1491 	F__dsh         uint16
   1492 	Fedi           uint32
   1493 	Fesi           uint32
   1494 	Febp           uint32
   1495 	Fesp           uint32
   1496 	Febx           uint32
   1497 	Fedx           uint32
   1498 	Fecx           uint32
   1499 	Feax           uint32
   1500 	Ftrapno        uint32
   1501 	Ferr           uint32
   1502 	Feip           uint32
   1503 	Fcs            uint16
   1504 	F__csh         uint16
   1505 	Feflags        uint32
   1506 	Fesp_at_signal uint32
   1507 	Fss            uint16
   1508 	F__ssh         uint16
   1509 	Ffpstate       uintptr
   1510 	Foldmask       uint32
   1511 	Fcr2           uint32
   1512 } /* sigcontext.h:95:1 */
   1513 
   1514 type X_xsave_hdr = struct {
   1515 	Fxstate_bv         X__uint64_t
   1516 	F__glibc_reserved1 [2]X__uint64_t
   1517 	F__glibc_reserved2 [5]X__uint64_t
   1518 } /* sigcontext.h:177:1 */
   1519 
   1520 type X_ymmh_state = struct{ Fymmh_space [64]X__uint32_t } /* sigcontext.h:184:1 */
   1521 
   1522 type X_xstate = struct {
   1523 	Ffpstate struct {
   1524 		Fcw      X__uint32_t
   1525 		Fsw      X__uint32_t
   1526 		Ftag     X__uint32_t
   1527 		Fipoff   X__uint32_t
   1528 		Fcssel   X__uint32_t
   1529 		Fdataoff X__uint32_t
   1530 		Fdatasel X__uint32_t
   1531 		F_st     [8]struct {
   1532 			Fsignificand [4]uint16
   1533 			Fexponent    uint16
   1534 		}
   1535 		Fstatus            uint16
   1536 		Fmagic             uint16
   1537 		F_fxsr_env         [6]X__uint32_t
   1538 		Fmxcsr             X__uint32_t
   1539 		F__glibc_reserved1 X__uint32_t
   1540 		F_fxsr_st          [8]struct {
   1541 			Fsignificand       [4]uint16
   1542 			Fexponent          uint16
   1543 			F__glibc_reserved1 [3]uint16
   1544 		}
   1545 		F_xmm              [8]struct{ Felement [4]X__uint32_t }
   1546 		F__glibc_reserved2 [56]X__uint32_t
   1547 	}
   1548 	Fxstate_hdr struct {
   1549 		Fxstate_bv         X__uint64_t
   1550 		F__glibc_reserved1 [2]X__uint64_t
   1551 		F__glibc_reserved2 [5]X__uint64_t
   1552 	}
   1553 	Fymmh struct{ Fymmh_space [64]X__uint32_t }
   1554 } /* sigcontext.h:189:1 */
   1555 
   1556 // Wide character type.
   1557 //    Locale-writers should change this as necessary to
   1558 //    be big enough to hold unique values not between 0 and 127,
   1559 //    and not (wchar_t) -1, for each defined multibyte character.
   1560 
   1561 // Define this type if we are doing the whole job,
   1562 //    or if we want this type in particular.
   1563 
   1564 // A null pointer constant.
   1565 
   1566 // Define stack_t.  Linux version.
   1567 //    Copyright (C) 1998-2020 Free Software Foundation, Inc.
   1568 //    This file is part of the GNU C Library.
   1569 //
   1570 //    The GNU C Library is free software; you can redistribute it and/or
   1571 //    modify it under the terms of the GNU Lesser General Public
   1572 //    License as published by the Free Software Foundation; either
   1573 //    version 2.1 of the License, or (at your option) any later version.
   1574 //
   1575 //    The GNU C Library is distributed in the hope that it will be useful,
   1576 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
   1577 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   1578 //    Lesser General Public License for more details.
   1579 //
   1580 //    You should have received a copy of the GNU Lesser General Public
   1581 //    License along with the GNU C Library; if not, see
   1582 //    <https://www.gnu.org/licenses/>.
   1583 
   1584 // Copyright (C) 1989-2020 Free Software Foundation, Inc.
   1585 //
   1586 // This file is part of GCC.
   1587 //
   1588 // GCC is free software; you can redistribute it and/or modify
   1589 // it under the terms of the GNU General Public License as published by
   1590 // the Free Software Foundation; either version 3, or (at your option)
   1591 // any later version.
   1592 //
   1593 // GCC is distributed in the hope that it will be useful,
   1594 // but WITHOUT ANY WARRANTY; without even the implied warranty of
   1595 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   1596 // GNU General Public License for more details.
   1597 //
   1598 // Under Section 7 of GPL version 3, you are granted additional
   1599 // permissions described in the GCC Runtime Library Exception, version
   1600 // 3.1, as published by the Free Software Foundation.
   1601 //
   1602 // You should have received a copy of the GNU General Public License and
   1603 // a copy of the GCC Runtime Library Exception along with this program;
   1604 // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
   1605 // <http://www.gnu.org/licenses/>.
   1606 
   1607 // ISO C Standard:  7.17  Common definitions  <stddef.h>
   1608 
   1609 // Any one of these symbols __need_* means that GNU libc
   1610 //    wants us just to define one data type.  So don't define
   1611 //    the symbols that indicate this file's entire job has been done.
   1612 
   1613 // This avoids lossage on SunOS but only if stdtypes.h comes first.
   1614 //    There's no way to win with the other order!  Sun lossage.
   1615 
   1616 // Sequent's header files use _PTRDIFF_T_ in some conflicting way.
   1617 //    Just ignore it.
   1618 
   1619 // On VxWorks, <type/vxTypesBase.h> may have defined macros like
   1620 //    _TYPE_size_t which will typedef size_t.  fixincludes patched the
   1621 //    vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is
   1622 //    not defined, and so that defining this macro defines _GCC_SIZE_T.
   1623 //    If we find that the macros are still defined at this point, we must
   1624 //    invoke them so that the type is defined as expected.
   1625 
   1626 // In case nobody has defined these types, but we aren't running under
   1627 //    GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and
   1628 //    __WCHAR_TYPE__ have reasonable values.  This can happen if the
   1629 //    parts of GCC is compiled by an older compiler, that actually
   1630 //    include gstddef.h, such as collect2.
   1631 
   1632 // Signed type of difference of two pointers.
   1633 
   1634 // Define this type if we are doing the whole job,
   1635 //    or if we want this type in particular.
   1636 
   1637 // Unsigned type of `sizeof' something.
   1638 
   1639 // Define this type if we are doing the whole job,
   1640 //    or if we want this type in particular.
   1641 
   1642 // Wide character type.
   1643 //    Locale-writers should change this as necessary to
   1644 //    be big enough to hold unique values not between 0 and 127,
   1645 //    and not (wchar_t) -1, for each defined multibyte character.
   1646 
   1647 // Define this type if we are doing the whole job,
   1648 //    or if we want this type in particular.
   1649 
   1650 // A null pointer constant.
   1651 
   1652 // Structure describing a signal stack.
   1653 type Stack_t = struct {
   1654 	Fss_sp    uintptr
   1655 	Fss_flags int32
   1656 	Fss_size  Size_t
   1657 } /* stack_t.h:31:5 */
   1658 
   1659 // This will define `ucontext_t' and `mcontext_t'.
   1660 // Copyright (C) 2001-2020 Free Software Foundation, Inc.
   1661 //    This file is part of the GNU C Library.
   1662 //
   1663 //    The GNU C Library is free software; you can redistribute it and/or
   1664 //    modify it under the terms of the GNU Lesser General Public
   1665 //    License as published by the Free Software Foundation; either
   1666 //    version 2.1 of the License, or (at your option) any later version.
   1667 //
   1668 //    The GNU C Library is distributed in the hope that it will be useful,
   1669 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
   1670 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   1671 //    Lesser General Public License for more details.
   1672 //
   1673 //    You should have received a copy of the GNU Lesser General Public
   1674 //    License along with the GNU C Library; if not, see
   1675 //    <https://www.gnu.org/licenses/>.
   1676 
   1677 // Copyright (C) 1991-2020 Free Software Foundation, Inc.
   1678 //    This file is part of the GNU C Library.
   1679 //
   1680 //    The GNU C Library is free software; you can redistribute it and/or
   1681 //    modify it under the terms of the GNU Lesser General Public
   1682 //    License as published by the Free Software Foundation; either
   1683 //    version 2.1 of the License, or (at your option) any later version.
   1684 //
   1685 //    The GNU C Library is distributed in the hope that it will be useful,
   1686 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
   1687 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   1688 //    Lesser General Public License for more details.
   1689 //
   1690 //    You should have received a copy of the GNU Lesser General Public
   1691 //    License along with the GNU C Library; if not, see
   1692 //    <https://www.gnu.org/licenses/>.
   1693 
   1694 // bits/types.h -- definitions of __*_t types underlying *_t types.
   1695 //    Copyright (C) 2002-2020 Free Software Foundation, Inc.
   1696 //    This file is part of the GNU C Library.
   1697 //
   1698 //    The GNU C Library is free software; you can redistribute it and/or
   1699 //    modify it under the terms of the GNU Lesser General Public
   1700 //    License as published by the Free Software Foundation; either
   1701 //    version 2.1 of the License, or (at your option) any later version.
   1702 //
   1703 //    The GNU C Library is distributed in the hope that it will be useful,
   1704 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
   1705 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   1706 //    Lesser General Public License for more details.
   1707 //
   1708 //    You should have received a copy of the GNU Lesser General Public
   1709 //    License along with the GNU C Library; if not, see
   1710 //    <https://www.gnu.org/licenses/>.
   1711 
   1712 // Never include this file directly; use <sys/types.h> instead.
   1713 
   1714 // Define stack_t.  Linux version.
   1715 //    Copyright (C) 1998-2020 Free Software Foundation, Inc.
   1716 //    This file is part of the GNU C Library.
   1717 //
   1718 //    The GNU C Library is free software; you can redistribute it and/or
   1719 //    modify it under the terms of the GNU Lesser General Public
   1720 //    License as published by the Free Software Foundation; either
   1721 //    version 2.1 of the License, or (at your option) any later version.
   1722 //
   1723 //    The GNU C Library is distributed in the hope that it will be useful,
   1724 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
   1725 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   1726 //    Lesser General Public License for more details.
   1727 //
   1728 //    You should have received a copy of the GNU Lesser General Public
   1729 //    License along with the GNU C Library; if not, see
   1730 //    <https://www.gnu.org/licenses/>.
   1731 
   1732 // Type for general register.
   1733 type Greg_t = int32 /* ucontext.h:156:13 */
   1734 
   1735 // Number of general registers.
   1736 
   1737 // Container for all general registers.
   1738 type Gregset_t = [19]Greg_t /* ucontext.h:165:16 */
   1739 
   1740 // Definitions taken from the kernel headers.
   1741 type X_libc_fpreg = struct {
   1742 	Fsignificand [4]uint16
   1743 	Fexponent    uint16
   1744 } /* ucontext.h:213:1 */
   1745 
   1746 type X_libc_fpstate = struct {
   1747 	Fcw      uint32
   1748 	Fsw      uint32
   1749 	Ftag     uint32
   1750 	Fipoff   uint32
   1751 	Fcssel   uint32
   1752 	Fdataoff uint32
   1753 	Fdatasel uint32
   1754 	F_st     [8]struct {
   1755 		Fsignificand [4]uint16
   1756 		Fexponent    uint16
   1757 	}
   1758 	Fstatus uint32
   1759 } /* ucontext.h:219:1 */
   1760 
   1761 // Structure to describe FPU registers.
   1762 type Fpregset_t = uintptr /* ucontext.h:233:30 */
   1763 
   1764 // Context to describe whole processor state.
   1765 type Mcontext_t = struct {
   1766 	Fgregs   Gregset_t
   1767 	Ffpregs  Fpregset_t
   1768 	Foldmask uint32
   1769 	Fcr2     uint32
   1770 } /* ucontext.h:244:5 */
   1771 
   1772 // Userlevel context.
   1773 type Ucontext_t1 = struct {
   1774 	Fuc_flags     uint32
   1775 	Fuc_link      uintptr
   1776 	Fuc_stack     Stack_t
   1777 	Fuc_mcontext  Mcontext_t
   1778 	Fuc_sigmask   Sigset_t
   1779 	F__fpregs_mem struct {
   1780 		Fcw      uint32
   1781 		Fsw      uint32
   1782 		Ftag     uint32
   1783 		Fipoff   uint32
   1784 		Fcssel   uint32
   1785 		Fdataoff uint32
   1786 		Fdatasel uint32
   1787 		F_st     [8]struct {
   1788 			Fsignificand [4]uint16
   1789 			Fexponent    uint16
   1790 		}
   1791 		Fstatus uint32
   1792 	}
   1793 	F__ssp [4]uint32
   1794 } /* ucontext.h:247:9 */
   1795 
   1796 // Userlevel context.
   1797 type Ucontext_t = Ucontext_t1 /* ucontext.h:256:5 */
   1798 
   1799 // Define struct sigstack.
   1800 //    Copyright (C) 1998-2020 Free Software Foundation, Inc.
   1801 //    This file is part of the GNU C Library.
   1802 //
   1803 //    The GNU C Library is free software; you can redistribute it and/or
   1804 //    modify it under the terms of the GNU Lesser General Public
   1805 //    License as published by the Free Software Foundation; either
   1806 //    version 2.1 of the License, or (at your option) any later version.
   1807 //
   1808 //    The GNU C Library is distributed in the hope that it will be useful,
   1809 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
   1810 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   1811 //    Lesser General Public License for more details.
   1812 //
   1813 //    You should have received a copy of the GNU Lesser General Public
   1814 //    License along with the GNU C Library; if not, see
   1815 //    <https://www.gnu.org/licenses/>.
   1816 
   1817 // Structure describing a signal stack (obsolete).
   1818 type Sigstack = struct {
   1819 	Fss_sp      uintptr
   1820 	Fss_onstack int32
   1821 } /* struct_sigstack.h:23:1 */
   1822 
   1823 // Some of the functions for handling signals in threaded programs must
   1824 //    be defined here.
   1825 // Declaration of common pthread types for all architectures.
   1826 //    Copyright (C) 2017-2020 Free Software Foundation, Inc.
   1827 //    This file is part of the GNU C Library.
   1828 //
   1829 //    The GNU C Library is free software; you can redistribute it and/or
   1830 //    modify it under the terms of the GNU Lesser General Public
   1831 //    License as published by the Free Software Foundation; either
   1832 //    version 2.1 of the License, or (at your option) any later version.
   1833 //
   1834 //    The GNU C Library is distributed in the hope that it will be useful,
   1835 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
   1836 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   1837 //    Lesser General Public License for more details.
   1838 //
   1839 //    You should have received a copy of the GNU Lesser General Public
   1840 //    License along with the GNU C Library; if not, see
   1841 //    <https://www.gnu.org/licenses/>.
   1842 
   1843 // For internal mutex and condition variable definitions.
   1844 // Common threading primitives definitions for both POSIX and C11.
   1845 //    Copyright (C) 2017-2020 Free Software Foundation, Inc.
   1846 //    This file is part of the GNU C Library.
   1847 //
   1848 //    The GNU C Library is free software; you can redistribute it and/or
   1849 //    modify it under the terms of the GNU Lesser General Public
   1850 //    License as published by the Free Software Foundation; either
   1851 //    version 2.1 of the License, or (at your option) any later version.
   1852 //
   1853 //    The GNU C Library is distributed in the hope that it will be useful,
   1854 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
   1855 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   1856 //    Lesser General Public License for more details.
   1857 //
   1858 //    You should have received a copy of the GNU Lesser General Public
   1859 //    License along with the GNU C Library; if not, see
   1860 //    <https://www.gnu.org/licenses/>.
   1861 
   1862 // Arch-specific definitions.  Each architecture must define the following
   1863 //    macros to define the expected sizes of pthread data types:
   1864 //
   1865 //    __SIZEOF_PTHREAD_ATTR_T        - size of pthread_attr_t.
   1866 //    __SIZEOF_PTHREAD_MUTEX_T       - size of pthread_mutex_t.
   1867 //    __SIZEOF_PTHREAD_MUTEXATTR_T   - size of pthread_mutexattr_t.
   1868 //    __SIZEOF_PTHREAD_COND_T        - size of pthread_cond_t.
   1869 //    __SIZEOF_PTHREAD_CONDATTR_T    - size of pthread_condattr_t.
   1870 //    __SIZEOF_PTHREAD_RWLOCK_T      - size of pthread_rwlock_t.
   1871 //    __SIZEOF_PTHREAD_RWLOCKATTR_T  - size of pthread_rwlockattr_t.
   1872 //    __SIZEOF_PTHREAD_BARRIER_T     - size of pthread_barrier_t.
   1873 //    __SIZEOF_PTHREAD_BARRIERATTR_T - size of pthread_barrierattr_t.
   1874 //
   1875 //    The additional macro defines any constraint for the lock alignment
   1876 //    inside the thread structures:
   1877 //
   1878 //    __LOCK_ALIGNMENT - for internal lock/futex usage.
   1879 //
   1880 //    Same idea but for the once locking primitive:
   1881 //
   1882 //    __ONCE_ALIGNMENT - for pthread_once_t/once_flag definition.
   1883 
   1884 // Copyright (C) 2002-2020 Free Software Foundation, Inc.
   1885 //    This file is part of the GNU C Library.
   1886 //
   1887 //    The GNU C Library is free software; you can redistribute it and/or
   1888 //    modify it under the terms of the GNU Lesser General Public
   1889 //    License as published by the Free Software Foundation; either
   1890 //    version 2.1 of the License, or (at your option) any later version.
   1891 //
   1892 //    The GNU C Library is distributed in the hope that it will be useful,
   1893 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
   1894 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   1895 //    Lesser General Public License for more details.
   1896 //
   1897 //    You should have received a copy of the GNU Lesser General Public
   1898 //    License along with the GNU C Library; if not, see
   1899 //    <https://www.gnu.org/licenses/>.
   1900 
   1901 // Determine the wordsize from the preprocessor defines.
   1902 
   1903 // Extra attributes for the cleanup functions.
   1904 
   1905 // Common definition of pthread_mutex_t.
   1906 
   1907 type X__pthread_internal_list = struct {
   1908 	F__prev uintptr
   1909 	F__next uintptr
   1910 } /* thread-shared-types.h:49:9 */
   1911 
   1912 // Some of the functions for handling signals in threaded programs must
   1913 //    be defined here.
   1914 // Declaration of common pthread types for all architectures.
   1915 //    Copyright (C) 2017-2020 Free Software Foundation, Inc.
   1916 //    This file is part of the GNU C Library.
   1917 //
   1918 //    The GNU C Library is free software; you can redistribute it and/or
   1919 //    modify it under the terms of the GNU Lesser General Public
   1920 //    License as published by the Free Software Foundation; either
   1921 //    version 2.1 of the License, or (at your option) any later version.
   1922 //
   1923 //    The GNU C Library is distributed in the hope that it will be useful,
   1924 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
   1925 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   1926 //    Lesser General Public License for more details.
   1927 //
   1928 //    You should have received a copy of the GNU Lesser General Public
   1929 //    License along with the GNU C Library; if not, see
   1930 //    <https://www.gnu.org/licenses/>.
   1931 
   1932 // For internal mutex and condition variable definitions.
   1933 // Common threading primitives definitions for both POSIX and C11.
   1934 //    Copyright (C) 2017-2020 Free Software Foundation, Inc.
   1935 //    This file is part of the GNU C Library.
   1936 //
   1937 //    The GNU C Library is free software; you can redistribute it and/or
   1938 //    modify it under the terms of the GNU Lesser General Public
   1939 //    License as published by the Free Software Foundation; either
   1940 //    version 2.1 of the License, or (at your option) any later version.
   1941 //
   1942 //    The GNU C Library is distributed in the hope that it will be useful,
   1943 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
   1944 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   1945 //    Lesser General Public License for more details.
   1946 //
   1947 //    You should have received a copy of the GNU Lesser General Public
   1948 //    License along with the GNU C Library; if not, see
   1949 //    <https://www.gnu.org/licenses/>.
   1950 
   1951 // Arch-specific definitions.  Each architecture must define the following
   1952 //    macros to define the expected sizes of pthread data types:
   1953 //
   1954 //    __SIZEOF_PTHREAD_ATTR_T        - size of pthread_attr_t.
   1955 //    __SIZEOF_PTHREAD_MUTEX_T       - size of pthread_mutex_t.
   1956 //    __SIZEOF_PTHREAD_MUTEXATTR_T   - size of pthread_mutexattr_t.
   1957 //    __SIZEOF_PTHREAD_COND_T        - size of pthread_cond_t.
   1958 //    __SIZEOF_PTHREAD_CONDATTR_T    - size of pthread_condattr_t.
   1959 //    __SIZEOF_PTHREAD_RWLOCK_T      - size of pthread_rwlock_t.
   1960 //    __SIZEOF_PTHREAD_RWLOCKATTR_T  - size of pthread_rwlockattr_t.
   1961 //    __SIZEOF_PTHREAD_BARRIER_T     - size of pthread_barrier_t.
   1962 //    __SIZEOF_PTHREAD_BARRIERATTR_T - size of pthread_barrierattr_t.
   1963 //
   1964 //    The additional macro defines any constraint for the lock alignment
   1965 //    inside the thread structures:
   1966 //
   1967 //    __LOCK_ALIGNMENT - for internal lock/futex usage.
   1968 //
   1969 //    Same idea but for the once locking primitive:
   1970 //
   1971 //    __ONCE_ALIGNMENT - for pthread_once_t/once_flag definition.
   1972 
   1973 // Copyright (C) 2002-2020 Free Software Foundation, Inc.
   1974 //    This file is part of the GNU C Library.
   1975 //
   1976 //    The GNU C Library is free software; you can redistribute it and/or
   1977 //    modify it under the terms of the GNU Lesser General Public
   1978 //    License as published by the Free Software Foundation; either
   1979 //    version 2.1 of the License, or (at your option) any later version.
   1980 //
   1981 //    The GNU C Library is distributed in the hope that it will be useful,
   1982 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
   1983 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   1984 //    Lesser General Public License for more details.
   1985 //
   1986 //    You should have received a copy of the GNU Lesser General Public
   1987 //    License along with the GNU C Library; if not, see
   1988 //    <https://www.gnu.org/licenses/>.
   1989 
   1990 // Determine the wordsize from the preprocessor defines.
   1991 
   1992 // Extra attributes for the cleanup functions.
   1993 
   1994 // Common definition of pthread_mutex_t.
   1995 
   1996 type X__pthread_list_t = X__pthread_internal_list /* thread-shared-types.h:53:3 */
   1997 
   1998 type X__pthread_internal_slist = struct{ F__next uintptr } /* thread-shared-types.h:55:9 */
   1999 
   2000 type X__pthread_slist_t = X__pthread_internal_slist /* thread-shared-types.h:58:3 */
   2001 
   2002 // Arch-specific mutex definitions.  A generic implementation is provided
   2003 //    by sysdeps/nptl/bits/struct_mutex.h.  If required, an architecture
   2004 //    can override it by defining:
   2005 //
   2006 //    1. struct __pthread_mutex_s (used on both pthread_mutex_t and mtx_t
   2007 //       definition).  It should contains at least the internal members
   2008 //       defined in the generic version.
   2009 //
   2010 //    2. __LOCK_ALIGNMENT for any extra attribute for internal lock used with
   2011 //       atomic operations.
   2012 //
   2013 //    3. The macro __PTHREAD_MUTEX_INITIALIZER used for static initialization.
   2014 //       It should initialize the mutex internal flag.
   2015 
   2016 // x86 internal mutex struct definitions.
   2017 //    Copyright (C) 2019-2020 Free Software Foundation, Inc.
   2018 //    This file is part of the GNU C Library.
   2019 //
   2020 //    The GNU C Library is free software; you can redistribute it and/or
   2021 //    modify it under the terms of the GNU Lesser General Public
   2022 //    License as published by the Free Software Foundation; either
   2023 //    version 2.1 of the License, or (at your option) any later version.
   2024 //
   2025 //    The GNU C Library is distributed in the hope that it will be useful,
   2026 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
   2027 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   2028 //    Lesser General Public License for more details.
   2029 //
   2030 //    You should have received a copy of the GNU Lesser General Public
   2031 //    License along with the GNU C Library; if not, see
   2032 //    <http://www.gnu.org/licenses/>.
   2033 
   2034 type X__pthread_mutex_s = struct {
   2035 	F__lock   int32
   2036 	F__count  uint32
   2037 	F__owner  int32
   2038 	F__kind   int32
   2039 	F__nusers uint32
   2040 	F__20     struct {
   2041 		F__ccgo_pad1    [0]uint32
   2042 		F__elision_data struct {
   2043 			F__espins   int16
   2044 			F__eelision int16
   2045 		}
   2046 	}
   2047 } /* struct_mutex.h:22:1 */
   2048 
   2049 // Arch-sepecific read-write lock definitions.  A generic implementation is
   2050 //    provided by struct_rwlock.h.  If required, an architecture can override it
   2051 //    by defining:
   2052 //
   2053 //    1. struct __pthread_rwlock_arch_t (used on pthread_rwlock_t definition).
   2054 //       It should contain at least the internal members defined in the
   2055 //       generic version.
   2056 //
   2057 //    2. The macro __PTHREAD_RWLOCK_INITIALIZER used for static initialization.
   2058 //       It should initialize the rwlock internal type.
   2059 
   2060 // x86 internal rwlock struct definitions.
   2061 //    Copyright (C) 2019-2020 Free Software Foundation, Inc.
   2062 //
   2063 //    This file is part of the GNU C Library.
   2064 //
   2065 //    The GNU C Library is free software; you can redistribute it and/or
   2066 //    modify it under the terms of the GNU Lesser General Public
   2067 //    License as published by the Free Software Foundation; either
   2068 //    version 2.1 of the License, or (at your option) any later version.
   2069 //
   2070 //    The GNU C Library is distributed in the hope that it will be useful,
   2071 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
   2072 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   2073 //    Lesser General Public License for more details.
   2074 //
   2075 //    You should have received a copy of the GNU Lesser General Public
   2076 //    License along with the GNU C Library; if not, see
   2077 //    <http://www.gnu.org/licenses/>.
   2078 
   2079 type X__pthread_rwlock_arch_t = struct {
   2080 	F__readers       uint32
   2081 	F__writers       uint32
   2082 	F__wrphase_futex uint32
   2083 	F__writers_futex uint32
   2084 	F__pad3          uint32
   2085 	F__pad4          uint32
   2086 	F__flags         uint8
   2087 	F__shared        uint8
   2088 	F__rwelision     int8
   2089 	F__pad2          uint8
   2090 	F__cur_writer    int32
   2091 } /* struct_rwlock.h:23:1 */
   2092 
   2093 // Common definition of pthread_cond_t.
   2094 
   2095 type X__pthread_cond_s = struct {
   2096 	F__0            struct{ F__wseq uint64 }
   2097 	F__8            struct{ F__g1_start uint64 }
   2098 	F__g_refs       [2]uint32
   2099 	F__g_size       [2]uint32
   2100 	F__g1_orig_size uint32
   2101 	F__wrefs        uint32
   2102 	F__g_signals    [2]uint32
   2103 } /* thread-shared-types.h:92:1 */
   2104 
   2105 // Thread identifiers.  The structure of the attribute type is not
   2106 //
   2107 //	exposed on purpose.
   2108 type Pthread_t = uint32 /* pthreadtypes.h:27:27 */
   2109 
   2110 // Data structures for mutex handling.  The structure of the attribute
   2111 //
   2112 //	type is not exposed on purpose.
   2113 type Pthread_mutexattr_t = struct {
   2114 	F__ccgo_pad1 [0]uint32
   2115 	F__size      [4]int8
   2116 } /* pthreadtypes.h:36:3 */
   2117 
   2118 // Data structure for condition variable handling.  The structure of
   2119 //
   2120 //	the attribute type is not exposed on purpose.
   2121 type Pthread_condattr_t = struct {
   2122 	F__ccgo_pad1 [0]uint32
   2123 	F__size      [4]int8
   2124 } /* pthreadtypes.h:45:3 */
   2125 
   2126 // Keys for thread-specific data
   2127 type Pthread_key_t = uint32 /* pthreadtypes.h:49:22 */
   2128 
   2129 // Once-only execution
   2130 type Pthread_once_t = int32 /* pthreadtypes.h:53:30 */
   2131 
   2132 type Pthread_mutex_t = struct{ F__data X__pthread_mutex_s } /* pthreadtypes.h:72:3 */
   2133 
   2134 type Pthread_cond_t = struct{ F__data X__pthread_cond_s } /* pthreadtypes.h:80:3 */
   2135 
   2136 // Data structure for reader-writer lock variable handling.  The
   2137 //
   2138 //	structure of the attribute type is deliberately not exposed.
   2139 type Pthread_rwlock_t = struct{ F__data X__pthread_rwlock_arch_t } /* pthreadtypes.h:91:3 */
   2140 
   2141 type Pthread_rwlockattr_t = struct {
   2142 	F__ccgo_pad1 [0]uint32
   2143 	F__size      [8]int8
   2144 } /* pthreadtypes.h:97:3 */
   2145 
   2146 // POSIX spinlock data type.
   2147 type Pthread_spinlock_t = int32 /* pthreadtypes.h:103:22 */
   2148 
   2149 // POSIX barriers data type.  The structure of the type is
   2150 //
   2151 //	deliberately not exposed.
   2152 type Pthread_barrier_t = struct {
   2153 	F__ccgo_pad1 [0]uint32
   2154 	F__size      [20]int8
   2155 } /* pthreadtypes.h:112:3 */
   2156 
   2157 type Pthread_barrierattr_t = struct {
   2158 	F__ccgo_pad1 [0]uint32
   2159 	F__size      [4]int8
   2160 } /* pthreadtypes.h:118:3 */
   2161 
   2162 // System-specific extensions.
   2163 // System-specific extensions of <signal.h>, Linux version.
   2164 //    Copyright (C) 2019-2020 Free Software Foundation, Inc.
   2165 //    This file is part of the GNU C Library.
   2166 //
   2167 //    The GNU C Library is free software; you can redistribute it and/or
   2168 //    modify it under the terms of the GNU Lesser General Public
   2169 //    License as published by the Free Software Foundation; either
   2170 //    version 2.1 of the License, or (at your option) any later version.
   2171 //
   2172 //    The GNU C Library is distributed in the hope that it will be useful,
   2173 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
   2174 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   2175 //    Lesser General Public License for more details.
   2176 //
   2177 //    You should have received a copy of the GNU Lesser General Public
   2178 //    License along with the GNU C Library; if not, see
   2179 //    <https://www.gnu.org/licenses/>.
   2180 
   2181 var _ int8 /* gen.c:2:13: */