gtsocial-umbx

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

stdlib_linux_arm.go (68008B)


      1 // Code generated by 'ccgo stdlib/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 stdlib/stdlib_linux_arm.go -pkgname stdlib', DO NOT EDIT.
      2 
      3 package stdlib
      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 	BIG_ENDIAN                   = 4321
     19 	BYTE_ORDER                   = 1234
     20 	EXIT_FAILURE                 = 1
     21 	EXIT_SUCCESS                 = 0
     22 	FD_SETSIZE                   = 1024
     23 	LITTLE_ENDIAN                = 1234
     24 	PDP_ENDIAN                   = 3412
     25 	RAND_MAX                     = 2147483647
     26 	WCONTINUED                   = 8
     27 	WEXITED                      = 4
     28 	WNOHANG                      = 1
     29 	WNOWAIT                      = 0x01000000
     30 	WSTOPPED                     = 2
     31 	WUNTRACED                    = 2
     32 	X_ALLOCA_H                   = 1
     33 	X_ATFILE_SOURCE              = 1
     34 	X_BITS_BYTESWAP_H            = 1
     35 	X_BITS_ENDIANNESS_H          = 1
     36 	X_BITS_ENDIAN_H              = 1
     37 	X_BITS_FLOATN_COMMON_H       = 0
     38 	X_BITS_PTHREADTYPES_ARCH_H   = 1
     39 	X_BITS_PTHREADTYPES_COMMON_H = 1
     40 	X_BITS_STDINT_INTN_H         = 1
     41 	X_BITS_TIME64_H              = 1
     42 	X_BITS_TYPESIZES_H           = 1
     43 	X_BITS_TYPES_H               = 1
     44 	X_BITS_UINTN_IDENTITY_H      = 1
     45 	X_BSD_SIZE_T_                = 0
     46 	X_BSD_SIZE_T_DEFINED_        = 0
     47 	X_DEFAULT_SOURCE             = 1
     48 	X_ENDIAN_H                   = 1
     49 	X_FEATURES_H                 = 1
     50 	X_FILE_OFFSET_BITS           = 64
     51 	X_GCC_SIZE_T                 = 0
     52 	X_GCC_WCHAR_T                = 0
     53 	X_POSIX_C_SOURCE             = 200809
     54 	X_POSIX_SOURCE               = 1
     55 	X_SIZET_                     = 0
     56 	X_SIZE_T                     = 0
     57 	X_SIZE_T_                    = 0
     58 	X_SIZE_T_DECLARED            = 0
     59 	X_SIZE_T_DEFINED             = 0
     60 	X_SIZE_T_DEFINED_            = 0
     61 	X_STDC_PREDEF_H              = 1
     62 	X_STDLIB_H                   = 1
     63 	X_STRUCT_TIMESPEC            = 1
     64 	X_SYS_CDEFS_H                = 1
     65 	X_SYS_SELECT_H               = 1
     66 	X_SYS_SIZE_T_H               = 0
     67 	X_SYS_TYPES_H                = 1
     68 	X_THREAD_MUTEX_INTERNAL_H    = 1
     69 	X_THREAD_SHARED_TYPES_H      = 1
     70 	X_T_SIZE                     = 0
     71 	X_T_SIZE_                    = 0
     72 	X_T_WCHAR                    = 0
     73 	X_T_WCHAR_                   = 0
     74 	X_WCHAR_T                    = 0
     75 	X_WCHAR_T_                   = 0
     76 	X_WCHAR_T_DECLARED           = 0
     77 	X_WCHAR_T_DEFINED            = 0
     78 	X_WCHAR_T_DEFINED_           = 0
     79 	X_WCHAR_T_H                  = 0
     80 	Linux                        = 1
     81 	Unix                         = 1
     82 )
     83 
     84 // A null pointer constant.
     85 
     86 // XPG requires a few symbols from <sys/wait.h> being defined.
     87 // Definitions of flag bits for `waitpid' et al.
     88 //    Copyright (C) 1992-2020 Free Software Foundation, Inc.
     89 //    This file is part of the GNU C Library.
     90 //
     91 //    The GNU C Library is free software; you can redistribute it and/or
     92 //    modify it under the terms of the GNU Lesser General Public
     93 //    License as published by the Free Software Foundation; either
     94 //    version 2.1 of the License, or (at your option) any later version.
     95 //
     96 //    The GNU C Library is distributed in the hope that it will be useful,
     97 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
     98 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     99 //    Lesser General Public License for more details.
    100 //
    101 //    You should have received a copy of the GNU Lesser General Public
    102 //    License along with the GNU C Library; if not, see
    103 //    <https://www.gnu.org/licenses/>.
    104 
    105 // Bits in the third argument to `waitpid'.
    106 
    107 // Bits in the fourth argument to `waitid'.
    108 
    109 // The following values are used by the `waitid' function.
    110 
    111 // The Linux kernel defines these bare, rather than an enum,
    112 //    which causes a conflict if the include order is reversed.
    113 
    114 const ( /* waitflags.h:52:1: */
    115 	P_ALL  = 0 // Wait for any child.
    116 	P_PID  = 1 // Wait for specified process.
    117 	P_PGID = 2
    118 )
    119 
    120 type Ptrdiff_t = int32 /* <builtin>:3:26 */
    121 
    122 type Size_t = uint32 /* <builtin>:9:23 */
    123 
    124 type Wchar_t = uint32 /* <builtin>:15:24 */
    125 
    126 type X__builtin_va_list = uintptr /* <builtin>:46:14 */
    127 type X__float128 = float64        /* <builtin>:47:21 */
    128 
    129 // A null pointer constant.
    130 
    131 // XPG requires a few symbols from <sys/wait.h> being defined.
    132 // Definitions of flag bits for `waitpid' et al.
    133 //    Copyright (C) 1992-2020 Free Software Foundation, Inc.
    134 //    This file is part of the GNU C Library.
    135 //
    136 //    The GNU C Library is free software; you can redistribute it and/or
    137 //    modify it under the terms of the GNU Lesser General Public
    138 //    License as published by the Free Software Foundation; either
    139 //    version 2.1 of the License, or (at your option) any later version.
    140 //
    141 //    The GNU C Library is distributed in the hope that it will be useful,
    142 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
    143 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    144 //    Lesser General Public License for more details.
    145 //
    146 //    You should have received a copy of the GNU Lesser General Public
    147 //    License along with the GNU C Library; if not, see
    148 //    <https://www.gnu.org/licenses/>.
    149 
    150 // Bits in the third argument to `waitpid'.
    151 
    152 // Bits in the fourth argument to `waitid'.
    153 
    154 // The following values are used by the `waitid' function.
    155 
    156 // The Linux kernel defines these bare, rather than an enum,
    157 //    which causes a conflict if the include order is reversed.
    158 
    159 type Idtype_t = uint32 /* waitflags.h:57:3 */
    160 // Definitions of status bits for `wait' et al.
    161 //    Copyright (C) 1992-2020 Free Software Foundation, Inc.
    162 //    This file is part of the GNU C Library.
    163 //
    164 //    The GNU C Library is free software; you can redistribute it and/or
    165 //    modify it under the terms of the GNU Lesser General Public
    166 //    License as published by the Free Software Foundation; either
    167 //    version 2.1 of the License, or (at your option) any later version.
    168 //
    169 //    The GNU C Library is distributed in the hope that it will be useful,
    170 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
    171 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    172 //    Lesser General Public License for more details.
    173 //
    174 //    You should have received a copy of the GNU Lesser General Public
    175 //    License along with the GNU C Library; if not, see
    176 //    <https://www.gnu.org/licenses/>.
    177 
    178 // Everything extant so far uses these same bits.
    179 
    180 // If WIFEXITED(STATUS), the low-order 8 bits of the status.
    181 
    182 // If WIFSIGNALED(STATUS), the terminating signal.
    183 
    184 // If WIFSTOPPED(STATUS), the signal that stopped the child.
    185 
    186 // Nonzero if STATUS indicates normal termination.
    187 
    188 // Nonzero if STATUS indicates termination by a signal.
    189 
    190 // Nonzero if STATUS indicates the child is stopped.
    191 
    192 // Nonzero if STATUS indicates the child continued after a stop.  We only
    193 //    define this if <bits/waitflags.h> provides the WCONTINUED flag bit.
    194 
    195 // Nonzero if STATUS indicates the child dumped core.
    196 
    197 // Macros for constructing status values.
    198 
    199 // Define the macros <sys/wait.h> also would define this way.
    200 
    201 // _FloatN API tests for enablement.
    202 // Macros to control TS 18661-3 glibc features.
    203 //    Copyright (C) 2017-2020 Free Software Foundation, Inc.
    204 //    This file is part of the GNU C Library.
    205 //
    206 //    The GNU C Library is free software; you can redistribute it and/or
    207 //    modify it under the terms of the GNU Lesser General Public
    208 //    License as published by the Free Software Foundation; either
    209 //    version 2.1 of the License, or (at your option) any later version.
    210 //
    211 //    The GNU C Library is distributed in the hope that it will be useful,
    212 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
    213 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    214 //    Lesser General Public License for more details.
    215 //
    216 //    You should have received a copy of the GNU Lesser General Public
    217 //    License along with the GNU C Library; if not, see
    218 //    <https://www.gnu.org/licenses/>.
    219 
    220 // Defined to 1 if the current compiler invocation provides a
    221 //    floating-point type with the IEEE 754 binary128 format, and this glibc
    222 //    includes corresponding *f128 interfaces for it.
    223 
    224 // Defined to 1 if __HAVE_FLOAT128 is 1 and the type is ABI-distinct
    225 //    from the default float, double and long double types in this glibc.
    226 
    227 // Defined to 1 if the current compiler invocation provides a
    228 //    floating-point type with the right format for _Float64x, and this
    229 //    glibc includes corresponding *f64x interfaces for it.
    230 
    231 // Defined to 1 if __HAVE_FLOAT64X is 1 and _Float64x has the format
    232 //    of long double.  Otherwise, if __HAVE_FLOAT64X is 1, _Float64x has
    233 //    the format of _Float128, which must be different from that of long
    234 //    double.
    235 
    236 // Defined to concatenate the literal suffix to be used with _Float128
    237 //    types, if __HAVE_FLOAT128 is 1.
    238 //    E.g.: #define __f128(x) x##f128.
    239 
    240 // Defined to a complex binary128 type if __HAVE_FLOAT128 is 1.
    241 //    E.g.: #define __CFLOAT128 _Complex _Float128.
    242 
    243 // Macros to control TS 18661-3 glibc features where the same
    244 //    definitions are appropriate for all platforms.
    245 //    Copyright (C) 2017-2020 Free Software Foundation, Inc.
    246 //    This file is part of the GNU C Library.
    247 //
    248 //    The GNU C Library is free software; you can redistribute it and/or
    249 //    modify it under the terms of the GNU Lesser General Public
    250 //    License as published by the Free Software Foundation; either
    251 //    version 2.1 of the License, or (at your option) any later version.
    252 //
    253 //    The GNU C Library is distributed in the hope that it will be useful,
    254 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
    255 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    256 //    Lesser General Public License for more details.
    257 //
    258 //    You should have received a copy of the GNU Lesser General Public
    259 //    License along with the GNU C Library; if not, see
    260 //    <https://www.gnu.org/licenses/>.
    261 
    262 // Copyright (C) 1991-2020 Free Software Foundation, Inc.
    263 //    This file is part of the GNU C Library.
    264 //
    265 //    The GNU C Library is free software; you can redistribute it and/or
    266 //    modify it under the terms of the GNU Lesser General Public
    267 //    License as published by the Free Software Foundation; either
    268 //    version 2.1 of the License, or (at your option) any later version.
    269 //
    270 //    The GNU C Library is distributed in the hope that it will be useful,
    271 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
    272 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    273 //    Lesser General Public License for more details.
    274 //
    275 //    You should have received a copy of the GNU Lesser General Public
    276 //    License along with the GNU C Library; if not, see
    277 //    <https://www.gnu.org/licenses/>.
    278 
    279 // Properties of long double type.
    280 //    Copyright (C) 2016-2020 Free Software Foundation, Inc.
    281 //    This file is part of the GNU C Library.
    282 //
    283 //    The GNU C Library is free software; you can redistribute it and/or
    284 //    modify it under the terms of the GNU Lesser General Public
    285 //    License  published by the Free Software Foundation; either
    286 //    version 2.1 of the License, or (at your option) any later version.
    287 //
    288 //    The GNU C Library is distributed in the hope that it will be useful,
    289 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
    290 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    291 //    Lesser General Public License for more details.
    292 //
    293 //    You should have received a copy of the GNU Lesser General Public
    294 //    License along with the GNU C Library; if not, see
    295 //    <https://www.gnu.org/licenses/>.
    296 
    297 // This header is included by <sys/cdefs.h>.
    298 //
    299 //    If long double is ABI-compatible with double, it should define
    300 //    __NO_LONG_DOUBLE_MATH to 1; otherwise, it should leave
    301 //    __NO_LONG_DOUBLE_MATH undefined.
    302 //
    303 //    If this build of the GNU C Library supports both long double
    304 //    ABI-compatible with double and some other long double format not
    305 //    ABI-compatible with double, it should define
    306 //    __LONG_DOUBLE_MATH_OPTIONAL to 1; otherwise, it should leave
    307 //    __LONG_DOUBLE_MATH_OPTIONAL undefined.
    308 //
    309 //    If __NO_LONG_DOUBLE_MATH is already defined, this header must not
    310 //    define anything; this is needed to work with the definition of
    311 //    __NO_LONG_DOUBLE_MATH in nldbl-compat.h.
    312 
    313 // In the default version of this header, long double is
    314 //    ABI-compatible with double.
    315 
    316 // This header should be included at the bottom of each bits/floatn.h.
    317 //    It defines the following macros for each _FloatN and _FloatNx type,
    318 //    where the same definitions, or definitions based only on the macros
    319 //    in bits/floatn.h, are appropriate for all glibc configurations.
    320 
    321 // Defined to 1 if the current compiler invocation provides a
    322 //    floating-point type with the right format for this type, and this
    323 //    glibc includes corresponding *fN or *fNx interfaces for it.
    324 
    325 // Defined to 1 if the corresponding __HAVE_<type> macro is 1 and the
    326 //    type is the first with its format in the sequence of (the default
    327 //    choices for) float, double, long double, _Float16, _Float32,
    328 //    _Float64, _Float128, _Float32x, _Float64x, _Float128x for this
    329 //    glibc; that is, if functions present once per floating-point format
    330 //    rather than once per type are present for this type.
    331 //
    332 //    All configurations supported by glibc have _Float32 the same format
    333 //    as float, _Float64 and _Float32x the same format as double, the
    334 //    _Float64x the same format as either long double or _Float128.  No
    335 //    configurations support _Float128x or, as of GCC 7, have compiler
    336 //    support for a type meeting the requirements for _Float128x.
    337 
    338 // Defined to 1 if the corresponding _FloatN type is not binary compatible
    339 //    with the corresponding ISO C type in the current compilation unit as
    340 //    opposed to __HAVE_DISTINCT_FLOATN, which indicates the default types built
    341 //    in glibc.
    342 
    343 // Defined to 1 if any _FloatN or _FloatNx types that are not
    344 //    ABI-distinct are however distinct types at the C language level (so
    345 //    for the purposes of __builtin_types_compatible_p and _Generic).
    346 
    347 // Defined to concatenate the literal suffix to be used with _FloatN
    348 //    or _FloatNx types, if __HAVE_<type> is 1.  The corresponding
    349 //    literal suffixes exist since GCC 7, for C only.
    350 
    351 // Defined to a complex type if __HAVE_<type> is 1.
    352 
    353 // The remaining of this file provides support for older compilers.
    354 
    355 // If double, long double and _Float64 all have the same set of
    356 //    values, TS 18661-3 requires the usual arithmetic conversions on
    357 //    long double and _Float64 to produce _Float64.  For this to be the
    358 //    case when building with a compiler without a distinct _Float64
    359 //    type, _Float64 must be a typedef for long double, not for
    360 //    double.
    361 
    362 // Returned by `div'.
    363 type Div_t = struct {
    364 	Fquot int32
    365 	Frem  int32
    366 } /* stdlib.h:62:5 */
    367 
    368 // Returned by `ldiv'.
    369 type Ldiv_t = struct {
    370 	Fquot int32
    371 	Frem  int32
    372 } /* stdlib.h:70:5 */
    373 
    374 // Returned by `lldiv'.
    375 type Lldiv_t = struct {
    376 	Fquot int64
    377 	Frem  int64
    378 } /* stdlib.h:80:5 */
    379 
    380 // Copyright (C) 1991-2020 Free Software Foundation, Inc.
    381 //    This file is part of the GNU C Library.
    382 //
    383 //    The GNU C Library is free software; you can redistribute it and/or
    384 //    modify it under the terms of the GNU Lesser General Public
    385 //    License as published by the Free Software Foundation; either
    386 //    version 2.1 of the License, or (at your option) any later version.
    387 //
    388 //    The GNU C Library is distributed in the hope that it will be useful,
    389 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
    390 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    391 //    Lesser General Public License for more details.
    392 //
    393 //    You should have received a copy of the GNU Lesser General Public
    394 //    License along with the GNU C Library; if not, see
    395 //    <https://www.gnu.org/licenses/>.
    396 
    397 //	POSIX Standard: 2.6 Primitive System Data Types	<sys/types.h>
    398 
    399 // Copyright (C) 1991-2020 Free Software Foundation, Inc.
    400 //    This file is part of the GNU C Library.
    401 //
    402 //    The GNU C Library is free software; you can redistribute it and/or
    403 //    modify it under the terms of the GNU Lesser General Public
    404 //    License as published by the Free Software Foundation; either
    405 //    version 2.1 of the License, or (at your option) any later version.
    406 //
    407 //    The GNU C Library is distributed in the hope that it will be useful,
    408 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
    409 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    410 //    Lesser General Public License for more details.
    411 //
    412 //    You should have received a copy of the GNU Lesser General Public
    413 //    License along with the GNU C Library; if not, see
    414 //    <https://www.gnu.org/licenses/>.
    415 
    416 // bits/types.h -- definitions of __*_t types underlying *_t types.
    417 //    Copyright (C) 2002-2020 Free Software Foundation, Inc.
    418 //    This file is part of the GNU C Library.
    419 //
    420 //    The GNU C Library is free software; you can redistribute it and/or
    421 //    modify it under the terms of the GNU Lesser General Public
    422 //    License as published by the Free Software Foundation; either
    423 //    version 2.1 of the License, or (at your option) any later version.
    424 //
    425 //    The GNU C Library is distributed in the hope that it will be useful,
    426 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
    427 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    428 //    Lesser General Public License for more details.
    429 //
    430 //    You should have received a copy of the GNU Lesser General Public
    431 //    License along with the GNU C Library; if not, see
    432 //    <https://www.gnu.org/licenses/>.
    433 
    434 // Never include this file directly; use <sys/types.h> instead.
    435 
    436 // Copyright (C) 1991-2020 Free Software Foundation, Inc.
    437 //    This file is part of the GNU C Library.
    438 //
    439 //    The GNU C Library is free software; you can redistribute it and/or
    440 //    modify it under the terms of the GNU Lesser General Public
    441 //    License as published by the Free Software Foundation; either
    442 //    version 2.1 of the License, or (at your option) any later version.
    443 //
    444 //    The GNU C Library is distributed in the hope that it will be useful,
    445 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
    446 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    447 //    Lesser General Public License for more details.
    448 //
    449 //    You should have received a copy of the GNU Lesser General Public
    450 //    License along with the GNU C Library; if not, see
    451 //    <https://www.gnu.org/licenses/>.
    452 
    453 // Copyright (C) 1999-2020 Free Software Foundation, Inc.
    454 //    This file is part of the GNU C Library.
    455 //
    456 //    The GNU C Library is free software; you can redistribute it and/or
    457 //    modify it under the terms of the GNU Lesser General Public
    458 //    License as published by the Free Software Foundation; either
    459 //    version 2.1 of the License, or (at your option) any later version.
    460 //
    461 //    The GNU C Library is distributed in the hope that it will be useful,
    462 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
    463 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    464 //    Lesser General Public License for more details.
    465 //
    466 //    You should have received a copy of the GNU Lesser General Public
    467 //    License along with the GNU C Library; if not, see
    468 //    <https://www.gnu.org/licenses/>.
    469 
    470 // Bit size of the time_t type at glibc build time, general case.
    471 //    Copyright (C) 2018-2020 Free Software Foundation, Inc.
    472 //    This file is part of the GNU C Library.
    473 //
    474 //    The GNU C Library is free software; you can redistribute it and/or
    475 //    modify it under the terms of the GNU Lesser General Public
    476 //    License as published by the Free Software Foundation; either
    477 //    version 2.1 of the License, or (at your option) any later version.
    478 //
    479 //    The GNU C Library is distributed in the hope that it will be useful,
    480 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
    481 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    482 //    Lesser General Public License for more details.
    483 //
    484 //    You should have received a copy of the GNU Lesser General Public
    485 //    License along with the GNU C Library; if not, see
    486 //    <https://www.gnu.org/licenses/>.
    487 
    488 // Copyright (C) 1999-2020 Free Software Foundation, Inc.
    489 //    This file is part of the GNU C Library.
    490 //
    491 //    The GNU C Library is free software; you can redistribute it and/or
    492 //    modify it under the terms of the GNU Lesser General Public
    493 //    License as published by the Free Software Foundation; either
    494 //    version 2.1 of the License, or (at your option) any later version.
    495 //
    496 //    The GNU C Library is distributed in the hope that it will be useful,
    497 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
    498 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    499 //    Lesser General Public License for more details.
    500 //
    501 //    You should have received a copy of the GNU Lesser General Public
    502 //    License along with the GNU C Library; if not, see
    503 //    <https://www.gnu.org/licenses/>.
    504 
    505 // Size in bits of the 'time_t' type of the default ABI.
    506 
    507 // Convenience types.
    508 type X__u_char = uint8   /* types.h:31:23 */
    509 type X__u_short = uint16 /* types.h:32:28 */
    510 type X__u_int = uint32   /* types.h:33:22 */
    511 type X__u_long = uint32  /* types.h:34:27 */
    512 
    513 // Fixed-size types, underlying types depend on word size and compiler.
    514 type X__int8_t = int8     /* types.h:37:21 */
    515 type X__uint8_t = uint8   /* types.h:38:23 */
    516 type X__int16_t = int16   /* types.h:39:26 */
    517 type X__uint16_t = uint16 /* types.h:40:28 */
    518 type X__int32_t = int32   /* types.h:41:20 */
    519 type X__uint32_t = uint32 /* types.h:42:22 */
    520 type X__int64_t = int64   /* types.h:47:44 */
    521 type X__uint64_t = uint64 /* types.h:48:46 */
    522 
    523 // Smallest types with at least a given width.
    524 type X__int_least8_t = X__int8_t     /* types.h:52:18 */
    525 type X__uint_least8_t = X__uint8_t   /* types.h:53:19 */
    526 type X__int_least16_t = X__int16_t   /* types.h:54:19 */
    527 type X__uint_least16_t = X__uint16_t /* types.h:55:20 */
    528 type X__int_least32_t = X__int32_t   /* types.h:56:19 */
    529 type X__uint_least32_t = X__uint32_t /* types.h:57:20 */
    530 type X__int_least64_t = X__int64_t   /* types.h:58:19 */
    531 type X__uint_least64_t = X__uint64_t /* types.h:59:20 */
    532 
    533 // quad_t is also 64 bits.
    534 type X__quad_t = int64    /* types.h:66:37 */
    535 type X__u_quad_t = uint64 /* types.h:67:46 */
    536 
    537 // Largest integral types.
    538 type X__intmax_t = int64   /* types.h:75:37 */
    539 type X__uintmax_t = uint64 /* types.h:76:46 */
    540 
    541 // The machine-dependent file <bits/typesizes.h> defines __*_T_TYPE
    542 //    macros for each of the OS types we define below.  The definitions
    543 //    of those macros must use the following macros for underlying types.
    544 //    We define __S<SIZE>_TYPE and __U<SIZE>_TYPE for the signed and unsigned
    545 //    variants of each of the following integer types on this machine.
    546 //
    547 // 	16		-- "natural" 16-bit type (always short)
    548 // 	32		-- "natural" 32-bit type (always int)
    549 // 	64		-- "natural" 64-bit type (long or long long)
    550 // 	LONG32		-- 32-bit type, traditionally long
    551 // 	QUAD		-- 64-bit type, traditionally long long
    552 // 	WORD		-- natural type of __WORDSIZE bits (int or long)
    553 // 	LONGWORD	-- type of __WORDSIZE bits, traditionally long
    554 //
    555 //    We distinguish WORD/LONGWORD, 32/LONG32, and 64/QUAD so that the
    556 //    conventional uses of `long' or `long long' type modifiers match the
    557 //    types we define, even when a less-adorned type would be the same size.
    558 //    This matters for (somewhat) portably writing printf/scanf formats for
    559 //    these types, where using the appropriate l or ll format modifiers can
    560 //    make the typedefs and the formats match up across all GNU platforms.  If
    561 //    we used `long' when it's 64 bits where `long long' is expected, then the
    562 //    compiler would warn about the formats not matching the argument types,
    563 //    and the programmer changing them to shut up the compiler would break the
    564 //    program's portability.
    565 //
    566 //    Here we assume what is presently the case in all the GCC configurations
    567 //    we support: long long is always 64 bits, long is always word/address size,
    568 //    and int is always 32 bits.
    569 
    570 // We want __extension__ before typedef's that use nonstandard base types
    571 //    such as `long long' in C89 mode.
    572 // bits/typesizes.h -- underlying types for *_t.  Generic version.
    573 //    Copyright (C) 2002-2020 Free Software Foundation, Inc.
    574 //    This file is part of the GNU C Library.
    575 //
    576 //    The GNU C Library is free software; you can redistribute it and/or
    577 //    modify it under the terms of the GNU Lesser General Public
    578 //    License as published by the Free Software Foundation; either
    579 //    version 2.1 of the License, or (at your option) any later version.
    580 //
    581 //    The GNU C Library is distributed in the hope that it will be useful,
    582 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
    583 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    584 //    Lesser General Public License for more details.
    585 //
    586 //    You should have received a copy of the GNU Lesser General Public
    587 //    License along with the GNU C Library; if not, see
    588 //    <https://www.gnu.org/licenses/>.
    589 
    590 // See <bits/types.h> for the meaning of these macros.  This file exists so
    591 //    that <bits/types.h> need not vary across different GNU platforms.
    592 
    593 // Number of descriptors that can fit in an `fd_set'.
    594 
    595 // bits/time64.h -- underlying types for __time64_t.  Generic version.
    596 //    Copyright (C) 2018-2020 Free Software Foundation, Inc.
    597 //    This file is part of the GNU C Library.
    598 //
    599 //    The GNU C Library is free software; you can redistribute it and/or
    600 //    modify it under the terms of the GNU Lesser General Public
    601 //    License as published by the Free Software Foundation; either
    602 //    version 2.1 of the License, or (at your option) any later version.
    603 //
    604 //    The GNU C Library is distributed in the hope that it will be useful,
    605 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
    606 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    607 //    Lesser General Public License for more details.
    608 //
    609 //    You should have received a copy of the GNU Lesser General Public
    610 //    License along with the GNU C Library; if not, see
    611 //    <https://www.gnu.org/licenses/>.
    612 
    613 // Define __TIME64_T_TYPE so that it is always a 64-bit type.
    614 
    615 // Define a 64-bit time type alongsize the 32-bit one.
    616 
    617 type X__dev_t = X__uint64_t                /* types.h:145:25 */ // Type of device numbers.
    618 type X__uid_t = uint32                     /* types.h:146:25 */ // Type of user identifications.
    619 type X__gid_t = uint32                     /* types.h:147:25 */ // Type of group identifications.
    620 type X__ino_t = uint32                     /* types.h:148:25 */ // Type of file serial numbers.
    621 type X__ino64_t = X__uint64_t              /* types.h:149:27 */ // Type of file serial numbers (LFS).
    622 type X__mode_t = uint32                    /* types.h:150:26 */ // Type of file attribute bitmasks.
    623 type X__nlink_t = uint32                   /* types.h:151:27 */ // Type of file link counts.
    624 type X__off_t = int32                      /* types.h:152:25 */ // Type of file sizes and offsets.
    625 type X__off64_t = X__int64_t               /* types.h:153:27 */ // Type of file sizes and offsets (LFS).
    626 type X__pid_t = int32                      /* types.h:154:25 */ // Type of process identifications.
    627 type X__fsid_t = struct{ F__val [2]int32 } /* types.h:155:26 */ // Type of file system IDs.
    628 type X__clock_t = int32                    /* types.h:156:27 */ // Type of CPU usage counts.
    629 type X__rlim_t = uint32                    /* types.h:157:26 */ // Type for resource measurement.
    630 type X__rlim64_t = X__uint64_t             /* types.h:158:28 */ // Type for resource measurement (LFS).
    631 type X__id_t = uint32                      /* types.h:159:24 */ // General type for IDs.
    632 type X__time_t = int32                     /* types.h:160:26 */ // Seconds since the Epoch.
    633 type X__useconds_t = uint32                /* types.h:161:30 */ // Count of microseconds.
    634 type X__suseconds_t = int32                /* types.h:162:31 */ // Signed count of microseconds.
    635 
    636 type X__daddr_t = int32 /* types.h:164:27 */ // The type of a disk address.
    637 type X__key_t = int32   /* types.h:165:25 */ // Type of an IPC key.
    638 
    639 // Clock ID used in clock and timer functions.
    640 type X__clockid_t = int32 /* types.h:168:29 */
    641 
    642 // Timer ID returned by `timer_create'.
    643 type X__timer_t = uintptr /* types.h:171:12 */
    644 
    645 // Type to represent block size.
    646 type X__blksize_t = int32 /* types.h:174:29 */
    647 
    648 // Types from the Large File Support interface.
    649 
    650 // Type to count number of disk blocks.
    651 type X__blkcnt_t = int32        /* types.h:179:28 */
    652 type X__blkcnt64_t = X__int64_t /* types.h:180:30 */
    653 
    654 // Type to count file system blocks.
    655 type X__fsblkcnt_t = uint32        /* types.h:183:30 */
    656 type X__fsblkcnt64_t = X__uint64_t /* types.h:184:32 */
    657 
    658 // Type to count file system nodes.
    659 type X__fsfilcnt_t = uint32        /* types.h:187:30 */
    660 type X__fsfilcnt64_t = X__uint64_t /* types.h:188:32 */
    661 
    662 // Type of miscellaneous file system fields.
    663 type X__fsword_t = int32 /* types.h:191:28 */
    664 
    665 type X__ssize_t = int32 /* types.h:193:27 */ // Type of a byte count, or error.
    666 
    667 // Signed long type used in system calls.
    668 type X__syscall_slong_t = int32 /* types.h:196:33 */
    669 // Unsigned long type used in system calls.
    670 type X__syscall_ulong_t = uint32 /* types.h:198:33 */
    671 
    672 // These few don't really vary by system, they always correspond
    673 //
    674 //	to one of the other defined types.
    675 type X__loff_t = X__off64_t /* types.h:202:19 */ // Type of file sizes and offsets (LFS).
    676 type X__caddr_t = uintptr   /* types.h:203:14 */
    677 
    678 // Duplicates info from stdint.h but this is used in unistd.h.
    679 type X__intptr_t = int32 /* types.h:206:25 */
    680 
    681 // Duplicate info from sys/socket.h.
    682 type X__socklen_t = uint32 /* types.h:209:23 */
    683 
    684 // C99: An integer type that can be accessed as an atomic entity,
    685 //
    686 //	even in the presence of asynchronous interrupts.
    687 //	It is not currently necessary for this to be machine-specific.
    688 type X__sig_atomic_t = int32 /* types.h:214:13 */
    689 
    690 // Seconds since the Epoch, visible to user code when time_t is too
    691 //
    692 //	narrow only for consistency with the old way of widening too-narrow
    693 //	types.  User code should never use __time64_t.
    694 type X__time64_t = X__int64_t /* types.h:222:28 */
    695 
    696 type U_char = X__u_char     /* types.h:33:18 */
    697 type U_short = X__u_short   /* types.h:34:19 */
    698 type U_int = X__u_int       /* types.h:35:17 */
    699 type U_long = X__u_long     /* types.h:36:18 */
    700 type Quad_t = X__quad_t     /* types.h:37:18 */
    701 type U_quad_t = X__u_quad_t /* types.h:38:20 */
    702 type Fsid_t = X__fsid_t     /* types.h:39:18 */
    703 type Loff_t = X__loff_t     /* types.h:42:18 */
    704 
    705 type Ino_t = X__ino64_t /* types.h:49:19 */
    706 
    707 type Dev_t = X__dev_t /* types.h:59:17 */
    708 
    709 type Gid_t = X__gid_t /* types.h:64:17 */
    710 
    711 type Mode_t = X__mode_t /* types.h:69:18 */
    712 
    713 type Nlink_t = X__nlink_t /* types.h:74:19 */
    714 
    715 type Uid_t = X__uid_t /* types.h:79:17 */
    716 
    717 type Off_t = X__off64_t /* types.h:87:19 */
    718 
    719 type Pid_t = X__pid_t /* types.h:97:17 */
    720 
    721 type Id_t = X__id_t /* types.h:103:16 */
    722 
    723 type Ssize_t = X__ssize_t /* types.h:108:19 */
    724 
    725 type Daddr_t = X__daddr_t /* types.h:114:19 */
    726 type Caddr_t = X__caddr_t /* types.h:115:19 */
    727 
    728 type Key_t = X__key_t /* types.h:121:17 */
    729 
    730 // bits/types.h -- definitions of __*_t types underlying *_t types.
    731 //    Copyright (C) 2002-2020 Free Software Foundation, Inc.
    732 //    This file is part of the GNU C Library.
    733 //
    734 //    The GNU C Library is free software; you can redistribute it and/or
    735 //    modify it under the terms of the GNU Lesser General Public
    736 //    License as published by the Free Software Foundation; either
    737 //    version 2.1 of the License, or (at your option) any later version.
    738 //
    739 //    The GNU C Library is distributed in the hope that it will be useful,
    740 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
    741 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    742 //    Lesser General Public License for more details.
    743 //
    744 //    You should have received a copy of the GNU Lesser General Public
    745 //    License along with the GNU C Library; if not, see
    746 //    <https://www.gnu.org/licenses/>.
    747 
    748 // Never include this file directly; use <sys/types.h> instead.
    749 
    750 // Returned by `clock'.
    751 type Clock_t = X__clock_t /* clock_t.h:7:19 */
    752 
    753 // bits/types.h -- definitions of __*_t types underlying *_t types.
    754 //    Copyright (C) 2002-2020 Free Software Foundation, Inc.
    755 //    This file is part of the GNU C Library.
    756 //
    757 //    The GNU C Library is free software; you can redistribute it and/or
    758 //    modify it under the terms of the GNU Lesser General Public
    759 //    License as published by the Free Software Foundation; either
    760 //    version 2.1 of the License, or (at your option) any later version.
    761 //
    762 //    The GNU C Library is distributed in the hope that it will be useful,
    763 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
    764 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    765 //    Lesser General Public License for more details.
    766 //
    767 //    You should have received a copy of the GNU Lesser General Public
    768 //    License along with the GNU C Library; if not, see
    769 //    <https://www.gnu.org/licenses/>.
    770 
    771 // Never include this file directly; use <sys/types.h> instead.
    772 
    773 // Clock ID used in clock and timer functions.
    774 type Clockid_t = X__clockid_t /* clockid_t.h:7:21 */
    775 
    776 // bits/types.h -- definitions of __*_t types underlying *_t types.
    777 //    Copyright (C) 2002-2020 Free Software Foundation, Inc.
    778 //    This file is part of the GNU C Library.
    779 //
    780 //    The GNU C Library is free software; you can redistribute it and/or
    781 //    modify it under the terms of the GNU Lesser General Public
    782 //    License as published by the Free Software Foundation; either
    783 //    version 2.1 of the License, or (at your option) any later version.
    784 //
    785 //    The GNU C Library is distributed in the hope that it will be useful,
    786 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
    787 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    788 //    Lesser General Public License for more details.
    789 //
    790 //    You should have received a copy of the GNU Lesser General Public
    791 //    License along with the GNU C Library; if not, see
    792 //    <https://www.gnu.org/licenses/>.
    793 
    794 // Never include this file directly; use <sys/types.h> instead.
    795 
    796 // Returned by `time'.
    797 type Time_t = X__time_t /* time_t.h:7:18 */
    798 
    799 // bits/types.h -- definitions of __*_t types underlying *_t types.
    800 //    Copyright (C) 2002-2020 Free Software Foundation, Inc.
    801 //    This file is part of the GNU C Library.
    802 //
    803 //    The GNU C Library is free software; you can redistribute it and/or
    804 //    modify it under the terms of the GNU Lesser General Public
    805 //    License as published by the Free Software Foundation; either
    806 //    version 2.1 of the License, or (at your option) any later version.
    807 //
    808 //    The GNU C Library is distributed in the hope that it will be useful,
    809 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
    810 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    811 //    Lesser General Public License for more details.
    812 //
    813 //    You should have received a copy of the GNU Lesser General Public
    814 //    License along with the GNU C Library; if not, see
    815 //    <https://www.gnu.org/licenses/>.
    816 
    817 // Never include this file directly; use <sys/types.h> instead.
    818 
    819 // Timer ID returned by `timer_create'.
    820 type Timer_t = X__timer_t /* timer_t.h:7:19 */
    821 
    822 // Copyright (C) 1989-2020 Free Software Foundation, Inc.
    823 //
    824 // This file is part of GCC.
    825 //
    826 // GCC is free software; you can redistribute it and/or modify
    827 // it under the terms of the GNU General Public License as published by
    828 // the Free Software Foundation; either version 3, or (at your option)
    829 // any later version.
    830 //
    831 // GCC is distributed in the hope that it will be useful,
    832 // but WITHOUT ANY WARRANTY; without even the implied warranty of
    833 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    834 // GNU General Public License for more details.
    835 //
    836 // Under Section 7 of GPL version 3, you are granted additional
    837 // permissions described in the GCC Runtime Library Exception, version
    838 // 3.1, as published by the Free Software Foundation.
    839 //
    840 // You should have received a copy of the GNU General Public License and
    841 // a copy of the GCC Runtime Library Exception along with this program;
    842 // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
    843 // <http://www.gnu.org/licenses/>.
    844 
    845 // ISO C Standard:  7.17  Common definitions  <stddef.h>
    846 
    847 // Any one of these symbols __need_* means that GNU libc
    848 //    wants us just to define one data type.  So don't define
    849 //    the symbols that indicate this file's entire job has been done.
    850 
    851 // This avoids lossage on SunOS but only if stdtypes.h comes first.
    852 //    There's no way to win with the other order!  Sun lossage.
    853 
    854 // Sequent's header files use _PTRDIFF_T_ in some conflicting way.
    855 //    Just ignore it.
    856 
    857 // On VxWorks, <type/vxTypesBase.h> may have defined macros like
    858 //    _TYPE_size_t which will typedef size_t.  fixincludes patched the
    859 //    vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is
    860 //    not defined, and so that defining this macro defines _GCC_SIZE_T.
    861 //    If we find that the macros are still defined at this point, we must
    862 //    invoke them so that the type is defined as expected.
    863 
    864 // In case nobody has defined these types, but we aren't running under
    865 //    GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and
    866 //    __WCHAR_TYPE__ have reasonable values.  This can happen if the
    867 //    parts of GCC is compiled by an older compiler, that actually
    868 //    include gstddef.h, such as collect2.
    869 
    870 // Signed type of difference of two pointers.
    871 
    872 // Define this type if we are doing the whole job,
    873 //    or if we want this type in particular.
    874 
    875 // Unsigned type of `sizeof' something.
    876 
    877 // Define this type if we are doing the whole job,
    878 //    or if we want this type in particular.
    879 
    880 // Wide character type.
    881 //    Locale-writers should change this as necessary to
    882 //    be big enough to hold unique values not between 0 and 127,
    883 //    and not (wchar_t) -1, for each defined multibyte character.
    884 
    885 // Define this type if we are doing the whole job,
    886 //    or if we want this type in particular.
    887 
    888 // A null pointer constant.
    889 
    890 // Old compatibility names for C types.
    891 type Ulong = uint32  /* types.h:148:27 */
    892 type Ushort = uint16 /* types.h:149:28 */
    893 type Uint = uint32   /* types.h:150:22 */
    894 
    895 // These size-specific names are used by some of the inet code.
    896 
    897 // Define intN_t types.
    898 //    Copyright (C) 2017-2020 Free Software Foundation, Inc.
    899 //    This file is part of the GNU C Library.
    900 //
    901 //    The GNU C Library is free software; you can redistribute it and/or
    902 //    modify it under the terms of the GNU Lesser General Public
    903 //    License as published by the Free Software Foundation; either
    904 //    version 2.1 of the License, or (at your option) any later version.
    905 //
    906 //    The GNU C Library is distributed in the hope that it will be useful,
    907 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
    908 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    909 //    Lesser General Public License for more details.
    910 //
    911 //    You should have received a copy of the GNU Lesser General Public
    912 //    License along with the GNU C Library; if not, see
    913 //    <https://www.gnu.org/licenses/>.
    914 
    915 // bits/types.h -- definitions of __*_t types underlying *_t types.
    916 //    Copyright (C) 2002-2020 Free Software Foundation, Inc.
    917 //    This file is part of the GNU C Library.
    918 //
    919 //    The GNU C Library is free software; you can redistribute it and/or
    920 //    modify it under the terms of the GNU Lesser General Public
    921 //    License as published by the Free Software Foundation; either
    922 //    version 2.1 of the License, or (at your option) any later version.
    923 //
    924 //    The GNU C Library is distributed in the hope that it will be useful,
    925 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
    926 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    927 //    Lesser General Public License for more details.
    928 //
    929 //    You should have received a copy of the GNU Lesser General Public
    930 //    License along with the GNU C Library; if not, see
    931 //    <https://www.gnu.org/licenses/>.
    932 
    933 // Never include this file directly; use <sys/types.h> instead.
    934 
    935 type Int8_t = X__int8_t   /* stdint-intn.h:24:18 */
    936 type Int16_t = X__int16_t /* stdint-intn.h:25:19 */
    937 type Int32_t = X__int32_t /* stdint-intn.h:26:19 */
    938 type Int64_t = X__int64_t /* stdint-intn.h:27:19 */
    939 
    940 // These were defined by ISO C without the first `_'.
    941 type U_int8_t = X__uint8_t   /* types.h:158:19 */
    942 type U_int16_t = X__uint16_t /* types.h:159:20 */
    943 type U_int32_t = X__uint32_t /* types.h:160:20 */
    944 type U_int64_t = X__uint64_t /* types.h:161:20 */
    945 
    946 type Register_t = int32 /* types.h:164:13 */
    947 
    948 // It also defines `fd_set' and the FD_* macros for `select'.
    949 // `fd_set' type and related macros, and `select'/`pselect' declarations.
    950 //    Copyright (C) 1996-2020 Free Software Foundation, Inc.
    951 //    This file is part of the GNU C Library.
    952 //
    953 //    The GNU C Library is free software; you can redistribute it and/or
    954 //    modify it under the terms of the GNU Lesser General Public
    955 //    License as published by the Free Software Foundation; either
    956 //    version 2.1 of the License, or (at your option) any later version.
    957 //
    958 //    The GNU C Library is distributed in the hope that it will be useful,
    959 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
    960 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    961 //    Lesser General Public License for more details.
    962 //
    963 //    You should have received a copy of the GNU Lesser General Public
    964 //    License along with the GNU C Library; if not, see
    965 //    <https://www.gnu.org/licenses/>.
    966 
    967 //	POSIX 1003.1g: 6.2 Select from File Descriptor Sets <sys/select.h>
    968 
    969 // Copyright (C) 1991-2020 Free Software Foundation, Inc.
    970 //    This file is part of the GNU C Library.
    971 //
    972 //    The GNU C Library is free software; you can redistribute it and/or
    973 //    modify it under the terms of the GNU Lesser General Public
    974 //    License as published by the Free Software Foundation; either
    975 //    version 2.1 of the License, or (at your option) any later version.
    976 //
    977 //    The GNU C Library is distributed in the hope that it will be useful,
    978 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
    979 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    980 //    Lesser General Public License for more details.
    981 //
    982 //    You should have received a copy of the GNU Lesser General Public
    983 //    License along with the GNU C Library; if not, see
    984 //    <https://www.gnu.org/licenses/>.
    985 
    986 // Get definition of needed basic types.
    987 // bits/types.h -- definitions of __*_t types underlying *_t types.
    988 //    Copyright (C) 2002-2020 Free Software Foundation, Inc.
    989 //    This file is part of the GNU C Library.
    990 //
    991 //    The GNU C Library is free software; you can redistribute it and/or
    992 //    modify it under the terms of the GNU Lesser General Public
    993 //    License as published by the Free Software Foundation; either
    994 //    version 2.1 of the License, or (at your option) any later version.
    995 //
    996 //    The GNU C Library is distributed in the hope that it will be useful,
    997 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
    998 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    999 //    Lesser General Public License for more details.
   1000 //
   1001 //    You should have received a copy of the GNU Lesser General Public
   1002 //    License along with the GNU C Library; if not, see
   1003 //    <https://www.gnu.org/licenses/>.
   1004 
   1005 // Never include this file directly; use <sys/types.h> instead.
   1006 
   1007 // Get __FD_* definitions.
   1008 // Copyright (C) 1997-2020 Free Software Foundation, Inc.
   1009 //    This file is part of the GNU C Library.
   1010 //
   1011 //    The GNU C Library is free software; you can redistribute it and/or
   1012 //    modify it under the terms of the GNU Lesser General Public
   1013 //    License as published by the Free Software Foundation; either
   1014 //    version 2.1 of the License, or (at your option) any later version.
   1015 //
   1016 //    The GNU C Library is distributed in the hope that it will be useful,
   1017 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
   1018 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   1019 //    Lesser General Public License for more details.
   1020 //
   1021 //    You should have received a copy of the GNU Lesser General Public
   1022 //    License along with the GNU C Library; if not, see
   1023 //    <https://www.gnu.org/licenses/>.
   1024 
   1025 // We don't use `memset' because this would require a prototype and
   1026 //    the array isn't too big.
   1027 
   1028 // Get sigset_t.
   1029 
   1030 type X__sigset_t = struct{ F__val [32]uint32 } /* __sigset_t.h:8:3 */
   1031 
   1032 // A set of signals to be blocked, unblocked, or waited for.
   1033 type Sigset_t = X__sigset_t /* sigset_t.h:7:20 */
   1034 
   1035 // Get definition of timer specification structures.
   1036 
   1037 // bits/types.h -- definitions of __*_t types underlying *_t types.
   1038 //    Copyright (C) 2002-2020 Free Software Foundation, Inc.
   1039 //    This file is part of the GNU C Library.
   1040 //
   1041 //    The GNU C Library is free software; you can redistribute it and/or
   1042 //    modify it under the terms of the GNU Lesser General Public
   1043 //    License as published by the Free Software Foundation; either
   1044 //    version 2.1 of the License, or (at your option) any later version.
   1045 //
   1046 //    The GNU C Library is distributed in the hope that it will be useful,
   1047 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
   1048 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   1049 //    Lesser General Public License for more details.
   1050 //
   1051 //    You should have received a copy of the GNU Lesser General Public
   1052 //    License along with the GNU C Library; if not, see
   1053 //    <https://www.gnu.org/licenses/>.
   1054 
   1055 // Never include this file directly; use <sys/types.h> instead.
   1056 
   1057 // A time value that is accurate to the nearest
   1058 //
   1059 //	microsecond but also has a range of years.
   1060 type Timeval = struct {
   1061 	Ftv_sec  X__time_t
   1062 	Ftv_usec X__suseconds_t
   1063 } /* struct_timeval.h:8:1 */
   1064 
   1065 // NB: Include guard matches what <linux/time.h> uses.
   1066 
   1067 // bits/types.h -- definitions of __*_t types underlying *_t types.
   1068 //    Copyright (C) 2002-2020 Free Software Foundation, Inc.
   1069 //    This file is part of the GNU C Library.
   1070 //
   1071 //    The GNU C Library is free software; you can redistribute it and/or
   1072 //    modify it under the terms of the GNU Lesser General Public
   1073 //    License as published by the Free Software Foundation; either
   1074 //    version 2.1 of the License, or (at your option) any later version.
   1075 //
   1076 //    The GNU C Library is distributed in the hope that it will be useful,
   1077 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
   1078 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   1079 //    Lesser General Public License for more details.
   1080 //
   1081 //    You should have received a copy of the GNU Lesser General Public
   1082 //    License along with the GNU C Library; if not, see
   1083 //    <https://www.gnu.org/licenses/>.
   1084 
   1085 // Never include this file directly; use <sys/types.h> instead.
   1086 
   1087 // Endian macros for string.h functions
   1088 //    Copyright (C) 1992-2020 Free Software Foundation, Inc.
   1089 //    This file is part of the GNU C Library.
   1090 //
   1091 //    The GNU C Library is free software; you can redistribute it and/or
   1092 //    modify it under the terms of the GNU Lesser General Public
   1093 //    License as published by the Free Software Foundation; either
   1094 //    version 2.1 of the License, or (at your option) any later version.
   1095 //
   1096 //    The GNU C Library is distributed in the hope that it will be useful,
   1097 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
   1098 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   1099 //    Lesser General Public License for more details.
   1100 //
   1101 //    You should have received a copy of the GNU Lesser General Public
   1102 //    License along with the GNU C Library; if not, see
   1103 //    <http://www.gnu.org/licenses/>.
   1104 
   1105 // POSIX.1b structure for a time value.  This is like a `struct timeval' but
   1106 //
   1107 //	has nanoseconds instead of microseconds.
   1108 type Timespec = struct {
   1109 	Ftv_sec  X__time_t
   1110 	Ftv_nsec X__syscall_slong_t
   1111 } /* struct_timespec.h:10:1 */
   1112 
   1113 type Suseconds_t = X__suseconds_t /* select.h:43:23 */
   1114 
   1115 // The fd_set member is required to be an array of longs.
   1116 type X__fd_mask = int32 /* select.h:49:18 */
   1117 
   1118 // Some versions of <linux/posix_types.h> define this macros.
   1119 // It's easier to assume 8-bit bytes than to get CHAR_BIT.
   1120 
   1121 // fd_set for select and pselect.
   1122 type Fd_set = struct{ F__fds_bits [32]X__fd_mask } /* select.h:70:5 */
   1123 
   1124 // Maximum number of file descriptors in `fd_set'.
   1125 
   1126 // Sometimes the fd_set member is assumed to have this type.
   1127 type Fd_mask = X__fd_mask /* select.h:77:19 */
   1128 
   1129 // Define some inlines helping to catch common problems.
   1130 
   1131 type Blksize_t = X__blksize_t /* types.h:185:21 */
   1132 
   1133 // Types from the Large File Support interface.
   1134 type Blkcnt_t = X__blkcnt64_t     /* types.h:205:22 */ // Type to count number of disk blocks.
   1135 type Fsblkcnt_t = X__fsblkcnt64_t /* types.h:209:24 */ // Type to count file system blocks.
   1136 type Fsfilcnt_t = X__fsfilcnt64_t /* types.h:213:24 */ // Type to count file system inodes.
   1137 
   1138 // Now add the thread types.
   1139 // Declaration of common pthread types for all architectures.
   1140 //    Copyright (C) 2017-2020 Free Software Foundation, Inc.
   1141 //    This file is part of the GNU C Library.
   1142 //
   1143 //    The GNU C Library is free software; you can redistribute it and/or
   1144 //    modify it under the terms of the GNU Lesser General Public
   1145 //    License as published by the Free Software Foundation; either
   1146 //    version 2.1 of the License, or (at your option) any later version.
   1147 //
   1148 //    The GNU C Library is distributed in the hope that it will be useful,
   1149 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
   1150 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   1151 //    Lesser General Public License for more details.
   1152 //
   1153 //    You should have received a copy of the GNU Lesser General Public
   1154 //    License along with the GNU C Library; if not, see
   1155 //    <https://www.gnu.org/licenses/>.
   1156 
   1157 // For internal mutex and condition variable definitions.
   1158 // Common threading primitives definitions for both POSIX and C11.
   1159 //    Copyright (C) 2017-2020 Free Software Foundation, Inc.
   1160 //    This file is part of the GNU C Library.
   1161 //
   1162 //    The GNU C Library is free software; you can redistribute it and/or
   1163 //    modify it under the terms of the GNU Lesser General Public
   1164 //    License as published by the Free Software Foundation; either
   1165 //    version 2.1 of the License, or (at your option) any later version.
   1166 //
   1167 //    The GNU C Library is distributed in the hope that it will be useful,
   1168 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
   1169 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   1170 //    Lesser General Public License for more details.
   1171 //
   1172 //    You should have received a copy of the GNU Lesser General Public
   1173 //    License along with the GNU C Library; if not, see
   1174 //    <https://www.gnu.org/licenses/>.
   1175 
   1176 // Arch-specific definitions.  Each architecture must define the following
   1177 //    macros to define the expected sizes of pthread data types:
   1178 //
   1179 //    __SIZEOF_PTHREAD_ATTR_T        - size of pthread_attr_t.
   1180 //    __SIZEOF_PTHREAD_MUTEX_T       - size of pthread_mutex_t.
   1181 //    __SIZEOF_PTHREAD_MUTEXATTR_T   - size of pthread_mutexattr_t.
   1182 //    __SIZEOF_PTHREAD_COND_T        - size of pthread_cond_t.
   1183 //    __SIZEOF_PTHREAD_CONDATTR_T    - size of pthread_condattr_t.
   1184 //    __SIZEOF_PTHREAD_RWLOCK_T      - size of pthread_rwlock_t.
   1185 //    __SIZEOF_PTHREAD_RWLOCKATTR_T  - size of pthread_rwlockattr_t.
   1186 //    __SIZEOF_PTHREAD_BARRIER_T     - size of pthread_barrier_t.
   1187 //    __SIZEOF_PTHREAD_BARRIERATTR_T - size of pthread_barrierattr_t.
   1188 //
   1189 //    The additional macro defines any constraint for the lock alignment
   1190 //    inside the thread structures:
   1191 //
   1192 //    __LOCK_ALIGNMENT - for internal lock/futex usage.
   1193 //
   1194 //    Same idea but for the once locking primitive:
   1195 //
   1196 //    __ONCE_ALIGNMENT - for pthread_once_t/once_flag definition.
   1197 
   1198 // Machine-specific pthread type layouts.  Generic version.
   1199 //    Copyright (C) 2019-2020 Free Software Foundation, Inc.
   1200 //
   1201 //    This file is part of the GNU C Library.
   1202 //
   1203 //    The GNU C Library is free software; you can redistribute it and/or
   1204 //    modify it under the terms of the GNU Lesser General Public
   1205 //    License as published by the Free Software Foundation; either
   1206 //    version 2.1 of the License, or (at your option) any later version.
   1207 //
   1208 //    The GNU C Library is distributed in the hope that it will be useful,
   1209 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
   1210 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   1211 //    Lesser General Public License for more details.
   1212 //
   1213 //    You should have received a copy of the GNU Lesser General Public
   1214 //    License along with the GNU C Library; if not, see
   1215 //    <http://www.gnu.org/licenses/>.
   1216 
   1217 // Copyright (C) 1999-2020 Free Software Foundation, Inc.
   1218 //    This file is part of the GNU C Library.
   1219 //
   1220 //    The GNU C Library is free software; you can redistribute it and/or
   1221 //    modify it under the terms of the GNU Lesser General Public
   1222 //    License as published by the Free Software Foundation; either
   1223 //    version 2.1 of the License, or (at your option) any later version.
   1224 //
   1225 //    The GNU C Library is distributed in the hope that it will be useful,
   1226 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
   1227 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   1228 //    Lesser General Public License for more details.
   1229 //
   1230 //    You should have received a copy of the GNU Lesser General Public
   1231 //    License along with the GNU C Library; if not, see
   1232 //    <https://www.gnu.org/licenses/>.
   1233 
   1234 // Common definition of pthread_mutex_t.
   1235 
   1236 type X__pthread_internal_list = struct {
   1237 	F__prev uintptr
   1238 	F__next uintptr
   1239 } /* thread-shared-types.h:49:9 */
   1240 
   1241 // Type to count file system inodes.
   1242 
   1243 // Now add the thread types.
   1244 // Declaration of common pthread types for all architectures.
   1245 //    Copyright (C) 2017-2020 Free Software Foundation, Inc.
   1246 //    This file is part of the GNU C Library.
   1247 //
   1248 //    The GNU C Library is free software; you can redistribute it and/or
   1249 //    modify it under the terms of the GNU Lesser General Public
   1250 //    License as published by the Free Software Foundation; either
   1251 //    version 2.1 of the License, or (at your option) any later version.
   1252 //
   1253 //    The GNU C Library is distributed in the hope that it will be useful,
   1254 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
   1255 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   1256 //    Lesser General Public License for more details.
   1257 //
   1258 //    You should have received a copy of the GNU Lesser General Public
   1259 //    License along with the GNU C Library; if not, see
   1260 //    <https://www.gnu.org/licenses/>.
   1261 
   1262 // For internal mutex and condition variable definitions.
   1263 // Common threading primitives definitions for both POSIX and C11.
   1264 //    Copyright (C) 2017-2020 Free Software Foundation, Inc.
   1265 //    This file is part of the GNU C Library.
   1266 //
   1267 //    The GNU C Library is free software; you can redistribute it and/or
   1268 //    modify it under the terms of the GNU Lesser General Public
   1269 //    License as published by the Free Software Foundation; either
   1270 //    version 2.1 of the License, or (at your option) any later version.
   1271 //
   1272 //    The GNU C Library is distributed in the hope that it will be useful,
   1273 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
   1274 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   1275 //    Lesser General Public License for more details.
   1276 //
   1277 //    You should have received a copy of the GNU Lesser General Public
   1278 //    License along with the GNU C Library; if not, see
   1279 //    <https://www.gnu.org/licenses/>.
   1280 
   1281 // Arch-specific definitions.  Each architecture must define the following
   1282 //    macros to define the expected sizes of pthread data types:
   1283 //
   1284 //    __SIZEOF_PTHREAD_ATTR_T        - size of pthread_attr_t.
   1285 //    __SIZEOF_PTHREAD_MUTEX_T       - size of pthread_mutex_t.
   1286 //    __SIZEOF_PTHREAD_MUTEXATTR_T   - size of pthread_mutexattr_t.
   1287 //    __SIZEOF_PTHREAD_COND_T        - size of pthread_cond_t.
   1288 //    __SIZEOF_PTHREAD_CONDATTR_T    - size of pthread_condattr_t.
   1289 //    __SIZEOF_PTHREAD_RWLOCK_T      - size of pthread_rwlock_t.
   1290 //    __SIZEOF_PTHREAD_RWLOCKATTR_T  - size of pthread_rwlockattr_t.
   1291 //    __SIZEOF_PTHREAD_BARRIER_T     - size of pthread_barrier_t.
   1292 //    __SIZEOF_PTHREAD_BARRIERATTR_T - size of pthread_barrierattr_t.
   1293 //
   1294 //    The additional macro defines any constraint for the lock alignment
   1295 //    inside the thread structures:
   1296 //
   1297 //    __LOCK_ALIGNMENT - for internal lock/futex usage.
   1298 //
   1299 //    Same idea but for the once locking primitive:
   1300 //
   1301 //    __ONCE_ALIGNMENT - for pthread_once_t/once_flag definition.
   1302 
   1303 // Machine-specific pthread type layouts.  Generic version.
   1304 //    Copyright (C) 2019-2020 Free Software Foundation, Inc.
   1305 //
   1306 //    This file is part of the GNU C Library.
   1307 //
   1308 //    The GNU C Library is free software; you can redistribute it and/or
   1309 //    modify it under the terms of the GNU Lesser General Public
   1310 //    License as published by the Free Software Foundation; either
   1311 //    version 2.1 of the License, or (at your option) any later version.
   1312 //
   1313 //    The GNU C Library is distributed in the hope that it will be useful,
   1314 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
   1315 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   1316 //    Lesser General Public License for more details.
   1317 //
   1318 //    You should have received a copy of the GNU Lesser General Public
   1319 //    License along with the GNU C Library; if not, see
   1320 //    <http://www.gnu.org/licenses/>.
   1321 
   1322 // Copyright (C) 1999-2020 Free Software Foundation, Inc.
   1323 //    This file is part of the GNU C Library.
   1324 //
   1325 //    The GNU C Library is free software; you can redistribute it and/or
   1326 //    modify it under the terms of the GNU Lesser General Public
   1327 //    License as published by the Free Software Foundation; either
   1328 //    version 2.1 of the License, or (at your option) any later version.
   1329 //
   1330 //    The GNU C Library is distributed in the hope that it will be useful,
   1331 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
   1332 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   1333 //    Lesser General Public License for more details.
   1334 //
   1335 //    You should have received a copy of the GNU Lesser General Public
   1336 //    License along with the GNU C Library; if not, see
   1337 //    <https://www.gnu.org/licenses/>.
   1338 
   1339 // Common definition of pthread_mutex_t.
   1340 
   1341 type X__pthread_list_t = X__pthread_internal_list /* thread-shared-types.h:53:3 */
   1342 
   1343 type X__pthread_internal_slist = struct{ F__next uintptr } /* thread-shared-types.h:55:9 */
   1344 
   1345 type X__pthread_slist_t = X__pthread_internal_slist /* thread-shared-types.h:58:3 */
   1346 
   1347 // Arch-specific mutex definitions.  A generic implementation is provided
   1348 //    by sysdeps/nptl/bits/struct_mutex.h.  If required, an architecture
   1349 //    can override it by defining:
   1350 //
   1351 //    1. struct __pthread_mutex_s (used on both pthread_mutex_t and mtx_t
   1352 //       definition).  It should contains at least the internal members
   1353 //       defined in the generic version.
   1354 //
   1355 //    2. __LOCK_ALIGNMENT for any extra attribute for internal lock used with
   1356 //       atomic operations.
   1357 //
   1358 //    3. The macro __PTHREAD_MUTEX_INITIALIZER used for static initialization.
   1359 //       It should initialize the mutex internal flag.
   1360 
   1361 // Default mutex implementation struct definitions.
   1362 //    Copyright (C) 2019-2020 Free Software Foundation, Inc.
   1363 //    This file is part of the GNU C Library.
   1364 //
   1365 //    The GNU C Library is free software; you can redistribute it and/or
   1366 //    modify it under the terms of the GNU Lesser General Public
   1367 //    License as published by the Free Software Foundation; either
   1368 //    version 2.1 of the License, or (at your option) any later version.
   1369 //
   1370 //    The GNU C Library is distributed in the hope that it will be useful,
   1371 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
   1372 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   1373 //    Lesser General Public License for more details.
   1374 //
   1375 //    You should have received a copy of the GNU Lesser General Public
   1376 //    License along with the GNU C Library; if not, see
   1377 //    <http://www.gnu.org/licenses/>.
   1378 
   1379 // Generic struct for both POSIX and C11 mutexes.  New ports are expected
   1380 //    to use the default layout, however architecture can redefine it to
   1381 //    add arch-specific extension (such as lock-elision).  The struct have
   1382 //    a size of 32 bytes on LP32 and 40 bytes on LP64 architectures.
   1383 
   1384 type X__pthread_mutex_s = struct {
   1385 	F__lock   int32
   1386 	F__count  uint32
   1387 	F__owner  int32
   1388 	F__kind   int32
   1389 	F__nusers uint32
   1390 	F__20     struct{ F__spins int32 }
   1391 } /* struct_mutex.h:27:1 */
   1392 
   1393 // Arch-sepecific read-write lock definitions.  A generic implementation is
   1394 //    provided by struct_rwlock.h.  If required, an architecture can override it
   1395 //    by defining:
   1396 //
   1397 //    1. struct __pthread_rwlock_arch_t (used on pthread_rwlock_t definition).
   1398 //       It should contain at least the internal members defined in the
   1399 //       generic version.
   1400 //
   1401 //    2. The macro __PTHREAD_RWLOCK_INITIALIZER used for static initialization.
   1402 //       It should initialize the rwlock internal type.
   1403 
   1404 // Default read-write lock implementation struct definitions.
   1405 //    Copyright (C) 2019-2020 Free Software Foundation, Inc.
   1406 //    This file is part of the GNU C Library.
   1407 //
   1408 //    The GNU C Library is free software; you can redistribute it and/or
   1409 //    modify it under the terms of the GNU Lesser General Public
   1410 //    License as published by the Free Software Foundation; either
   1411 //    version 2.1 of the License, or (at your option) any later version.
   1412 //
   1413 //    The GNU C Library is distributed in the hope that it will be useful,
   1414 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
   1415 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   1416 //    Lesser General Public License for more details.
   1417 //
   1418 //    You should have received a copy of the GNU Lesser General Public
   1419 //    License along with the GNU C Library; if not, see
   1420 //    <http://www.gnu.org/licenses/>.
   1421 
   1422 // Endian macros for string.h functions
   1423 //    Copyright (C) 1992-2020 Free Software Foundation, Inc.
   1424 //    This file is part of the GNU C Library.
   1425 //
   1426 //    The GNU C Library is free software; you can redistribute it and/or
   1427 //    modify it under the terms of the GNU Lesser General Public
   1428 //    License as published by the Free Software Foundation; either
   1429 //    version 2.1 of the License, or (at your option) any later version.
   1430 //
   1431 //    The GNU C Library is distributed in the hope that it will be useful,
   1432 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
   1433 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   1434 //    Lesser General Public License for more details.
   1435 //
   1436 //    You should have received a copy of the GNU Lesser General Public
   1437 //    License along with the GNU C Library; if not, see
   1438 //    <http://www.gnu.org/licenses/>.
   1439 
   1440 // Generic struct for both POSIX read-write lock.  New ports are expected
   1441 //    to use the default layout, however archictetures can redefine it to add
   1442 //    arch-specific extensions (such as lock-elision).  The struct have a size
   1443 //    of 32 bytes on both LP32 and LP64 architectures.
   1444 
   1445 type X__pthread_rwlock_arch_t = struct {
   1446 	F__readers       uint32
   1447 	F__writers       uint32
   1448 	F__wrphase_futex uint32
   1449 	F__writers_futex uint32
   1450 	F__pad3          uint32
   1451 	F__pad4          uint32
   1452 	F__flags         uint8
   1453 	F__shared        uint8
   1454 	F__pad1          uint8
   1455 	F__pad2          uint8
   1456 	F__cur_writer    int32
   1457 } /* struct_rwlock.h:29:1 */
   1458 
   1459 // Common definition of pthread_cond_t.
   1460 
   1461 type X__pthread_cond_s = struct {
   1462 	F__0            struct{ F__wseq uint64 }
   1463 	F__8            struct{ F__g1_start uint64 }
   1464 	F__g_refs       [2]uint32
   1465 	F__g_size       [2]uint32
   1466 	F__g1_orig_size uint32
   1467 	F__wrefs        uint32
   1468 	F__g_signals    [2]uint32
   1469 } /* thread-shared-types.h:92:1 */
   1470 
   1471 // Thread identifiers.  The structure of the attribute type is not
   1472 //
   1473 //	exposed on purpose.
   1474 type Pthread_t = uint32 /* pthreadtypes.h:27:27 */
   1475 
   1476 // Data structures for mutex handling.  The structure of the attribute
   1477 //
   1478 //	type is not exposed on purpose.
   1479 type Pthread_mutexattr_t = struct {
   1480 	F__ccgo_pad1 [0]uint32
   1481 	F__size      [4]uint8
   1482 } /* pthreadtypes.h:36:3 */
   1483 
   1484 // Data structure for condition variable handling.  The structure of
   1485 //
   1486 //	the attribute type is not exposed on purpose.
   1487 type Pthread_condattr_t = struct {
   1488 	F__ccgo_pad1 [0]uint32
   1489 	F__size      [4]uint8
   1490 } /* pthreadtypes.h:45:3 */
   1491 
   1492 // Keys for thread-specific data
   1493 type Pthread_key_t = uint32 /* pthreadtypes.h:49:22 */
   1494 
   1495 // Once-only execution
   1496 type Pthread_once_t = int32 /* pthreadtypes.h:53:30 */
   1497 
   1498 type Pthread_attr_t1 = struct {
   1499 	F__ccgo_pad1 [0]uint32
   1500 	F__size      [36]uint8
   1501 } /* pthreadtypes.h:56:1 */
   1502 
   1503 type Pthread_attr_t = Pthread_attr_t1 /* pthreadtypes.h:62:30 */
   1504 
   1505 type Pthread_mutex_t = struct{ F__data X__pthread_mutex_s } /* pthreadtypes.h:72:3 */
   1506 
   1507 type Pthread_cond_t = struct{ F__data X__pthread_cond_s } /* pthreadtypes.h:80:3 */
   1508 
   1509 // Data structure for reader-writer lock variable handling.  The
   1510 //
   1511 //	structure of the attribute type is deliberately not exposed.
   1512 type Pthread_rwlock_t = struct{ F__data X__pthread_rwlock_arch_t } /* pthreadtypes.h:91:3 */
   1513 
   1514 type Pthread_rwlockattr_t = struct {
   1515 	F__ccgo_pad1 [0]uint32
   1516 	F__size      [8]uint8
   1517 } /* pthreadtypes.h:97:3 */
   1518 
   1519 // POSIX spinlock data type.
   1520 type Pthread_spinlock_t = int32 /* pthreadtypes.h:103:22 */
   1521 
   1522 // POSIX barriers data type.  The structure of the type is
   1523 //
   1524 //	deliberately not exposed.
   1525 type Pthread_barrier_t = struct {
   1526 	F__ccgo_pad1 [0]uint32
   1527 	F__size      [20]uint8
   1528 } /* pthreadtypes.h:112:3 */
   1529 
   1530 type Pthread_barrierattr_t = struct {
   1531 	F__ccgo_pad1 [0]uint32
   1532 	F__size      [4]uint8
   1533 } /* pthreadtypes.h:118:3 */
   1534 
   1535 // Reentrant versions of the `random' family of functions.
   1536 //    These functions all use the following data structure to contain
   1537 //    state, rather than global state variables.
   1538 
   1539 type Random_data = struct {
   1540 	Ffptr      uintptr
   1541 	Frptr      uintptr
   1542 	Fstate     uintptr
   1543 	Frand_type int32
   1544 	Frand_deg  int32
   1545 	Frand_sep  int32
   1546 	Fend_ptr   uintptr
   1547 } /* stdlib.h:423:1 */
   1548 
   1549 // Data structure for communication with thread safe versions.  This
   1550 //
   1551 //	type is to be regarded as opaque.  It's only exported because users
   1552 //	have to allocate objects of this type.
   1553 type Drand48_data = struct {
   1554 	F__x     [3]uint16
   1555 	F__old_x [3]uint16
   1556 	F__c     uint16
   1557 	F__init  uint16
   1558 	F__a     uint64
   1559 } /* stdlib.h:490:1 */
   1560 
   1561 // Shorthand for type of comparison functions.
   1562 type X__compar_fn_t = uintptr /* stdlib.h:808:13 */
   1563 
   1564 // Floating-point inline functions for stdlib.h.
   1565 //    Copyright (C) 2012-2020 Free Software Foundation, Inc.
   1566 //    This file is part of the GNU C Library.
   1567 //
   1568 //    The GNU C Library is free software; you can redistribute it and/or
   1569 //    modify it under the terms of the GNU Lesser General Public
   1570 //    License as published by the Free Software Foundation; either
   1571 //    version 2.1 of the License, or (at your option) any later version.
   1572 //
   1573 //    The GNU C Library is distributed in the hope that it will be useful,
   1574 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
   1575 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   1576 //    Lesser General Public License for more details.
   1577 //
   1578 //    You should have received a copy of the GNU Lesser General Public
   1579 //    License along with the GNU C Library; if not, see
   1580 //    <https://www.gnu.org/licenses/>.
   1581 
   1582 // Define some macros helping to catch buffer overflows.
   1583 
   1584 var _ uint8 /* gen.c:2:13: */