github.com/afumu/libc@v0.0.6/signal/signal_linux_386.go (about)

     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: */