modernc.org/z@v1.7.4/internal/example_linux_ppc64le.go (about) 1 // Code generated by 'ccgo -lmodernc.org/z/lib -o internal/example_linux_ppc64le.go -trace-translation-units /tmp/go-generate-526959028/cdb.json example64', DO NOT EDIT. 2 3 package main 4 5 import ( 6 "math" 7 "reflect" 8 "sync/atomic" 9 "unsafe" 10 11 "modernc.org/libc" 12 "modernc.org/libc/sys/types" 13 "modernc.org/z/lib" 14 ) 15 16 var _ = math.Pi 17 var _ reflect.Kind 18 var _ atomic.Value 19 var _ unsafe.Pointer 20 var _ *libc.TLS 21 var _ types.Size_t 22 23 func main() { libc.Start(main1) } 24 25 // Get the `_PC_*' symbols for the NAME argument to `pathconf' and `fpathconf'; 26 // the `_SC_*' symbols for the NAME argument to `sysconf'; 27 // and the `_CS_*' symbols for the NAME argument to `confstr'. 28 // `sysconf', `pathconf', and `confstr' NAME values. Generic version. 29 // Copyright (C) 1993-2020 Free Software Foundation, Inc. 30 // This file is part of the GNU C Library. 31 // 32 // The GNU C Library is free software; you can redistribute it and/or 33 // modify it under the terms of the GNU Lesser General Public 34 // License as published by the Free Software Foundation; either 35 // version 2.1 of the License, or (at your option) any later version. 36 // 37 // The GNU C Library is distributed in the hope that it will be useful, 38 // but WITHOUT ANY WARRANTY; without even the implied warranty of 39 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 40 // Lesser General Public License for more details. 41 // 42 // You should have received a copy of the GNU Lesser General Public 43 // License along with the GNU C Library; if not, see 44 // <https://www.gnu.org/licenses/>. 45 46 // Values for the NAME argument to `pathconf' and `fpathconf'. 47 const ( /* confname.h:24:1: */ 48 _PC_LINK_MAX = 0 49 _PC_MAX_CANON = 1 50 _PC_MAX_INPUT = 2 51 _PC_NAME_MAX = 3 52 _PC_PATH_MAX = 4 53 _PC_PIPE_BUF = 5 54 _PC_CHOWN_RESTRICTED = 6 55 _PC_NO_TRUNC = 7 56 _PC_VDISABLE = 8 57 _PC_SYNC_IO = 9 58 _PC_ASYNC_IO = 10 59 _PC_PRIO_IO = 11 60 _PC_SOCK_MAXBUF = 12 61 _PC_FILESIZEBITS = 13 62 _PC_REC_INCR_XFER_SIZE = 14 63 _PC_REC_MAX_XFER_SIZE = 15 64 _PC_REC_MIN_XFER_SIZE = 16 65 _PC_REC_XFER_ALIGN = 17 66 _PC_ALLOC_SIZE_MIN = 18 67 _PC_SYMLINK_MAX = 19 68 _PC_2_SYMLINKS = 20 69 ) 70 71 // Values for the NAME argument to `confstr'. 72 const ( /* confname.h:533:1: */ 73 _CS_PATH = 0 // The default search path. 74 75 _CS_V6_WIDTH_RESTRICTED_ENVS = 1 76 77 _CS_GNU_LIBC_VERSION = 2 78 _CS_GNU_LIBPTHREAD_VERSION = 3 79 80 _CS_V5_WIDTH_RESTRICTED_ENVS = 4 81 82 _CS_V7_WIDTH_RESTRICTED_ENVS = 5 83 84 _CS_LFS_CFLAGS = 1000 85 _CS_LFS_LDFLAGS = 1001 86 _CS_LFS_LIBS = 1002 87 _CS_LFS_LINTFLAGS = 1003 88 _CS_LFS64_CFLAGS = 1004 89 _CS_LFS64_LDFLAGS = 1005 90 _CS_LFS64_LIBS = 1006 91 _CS_LFS64_LINTFLAGS = 1007 92 93 _CS_XBS5_ILP32_OFF32_CFLAGS = 1100 94 _CS_XBS5_ILP32_OFF32_LDFLAGS = 1101 95 _CS_XBS5_ILP32_OFF32_LIBS = 1102 96 _CS_XBS5_ILP32_OFF32_LINTFLAGS = 1103 97 _CS_XBS5_ILP32_OFFBIG_CFLAGS = 1104 98 _CS_XBS5_ILP32_OFFBIG_LDFLAGS = 1105 99 _CS_XBS5_ILP32_OFFBIG_LIBS = 1106 100 _CS_XBS5_ILP32_OFFBIG_LINTFLAGS = 1107 101 _CS_XBS5_LP64_OFF64_CFLAGS = 1108 102 _CS_XBS5_LP64_OFF64_LDFLAGS = 1109 103 _CS_XBS5_LP64_OFF64_LIBS = 1110 104 _CS_XBS5_LP64_OFF64_LINTFLAGS = 1111 105 _CS_XBS5_LPBIG_OFFBIG_CFLAGS = 1112 106 _CS_XBS5_LPBIG_OFFBIG_LDFLAGS = 1113 107 _CS_XBS5_LPBIG_OFFBIG_LIBS = 1114 108 _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS = 1115 109 110 _CS_POSIX_V6_ILP32_OFF32_CFLAGS = 1116 111 _CS_POSIX_V6_ILP32_OFF32_LDFLAGS = 1117 112 _CS_POSIX_V6_ILP32_OFF32_LIBS = 1118 113 _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS = 1119 114 _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS = 1120 115 _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS = 1121 116 _CS_POSIX_V6_ILP32_OFFBIG_LIBS = 1122 117 _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS = 1123 118 _CS_POSIX_V6_LP64_OFF64_CFLAGS = 1124 119 _CS_POSIX_V6_LP64_OFF64_LDFLAGS = 1125 120 _CS_POSIX_V6_LP64_OFF64_LIBS = 1126 121 _CS_POSIX_V6_LP64_OFF64_LINTFLAGS = 1127 122 _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS = 1128 123 _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS = 1129 124 _CS_POSIX_V6_LPBIG_OFFBIG_LIBS = 1130 125 _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS = 1131 126 127 _CS_POSIX_V7_ILP32_OFF32_CFLAGS = 1132 128 _CS_POSIX_V7_ILP32_OFF32_LDFLAGS = 1133 129 _CS_POSIX_V7_ILP32_OFF32_LIBS = 1134 130 _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS = 1135 131 _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS = 1136 132 _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS = 1137 133 _CS_POSIX_V7_ILP32_OFFBIG_LIBS = 1138 134 _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS = 1139 135 _CS_POSIX_V7_LP64_OFF64_CFLAGS = 1140 136 _CS_POSIX_V7_LP64_OFF64_LDFLAGS = 1141 137 _CS_POSIX_V7_LP64_OFF64_LIBS = 1142 138 _CS_POSIX_V7_LP64_OFF64_LINTFLAGS = 1143 139 _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS = 1144 140 _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS = 1145 141 _CS_POSIX_V7_LPBIG_OFFBIG_LIBS = 1146 142 _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS = 1147 143 144 _CS_V6_ENV = 1148 145 _CS_V7_ENV = 1149 146 ) 147 148 // Values for the argument to `sysconf'. 149 const ( /* confname.h:71:1: */ 150 _SC_ARG_MAX = 0 151 _SC_CHILD_MAX = 1 152 _SC_CLK_TCK = 2 153 _SC_NGROUPS_MAX = 3 154 _SC_OPEN_MAX = 4 155 _SC_STREAM_MAX = 5 156 _SC_TZNAME_MAX = 6 157 _SC_JOB_CONTROL = 7 158 _SC_SAVED_IDS = 8 159 _SC_REALTIME_SIGNALS = 9 160 _SC_PRIORITY_SCHEDULING = 10 161 _SC_TIMERS = 11 162 _SC_ASYNCHRONOUS_IO = 12 163 _SC_PRIORITIZED_IO = 13 164 _SC_SYNCHRONIZED_IO = 14 165 _SC_FSYNC = 15 166 _SC_MAPPED_FILES = 16 167 _SC_MEMLOCK = 17 168 _SC_MEMLOCK_RANGE = 18 169 _SC_MEMORY_PROTECTION = 19 170 _SC_MESSAGE_PASSING = 20 171 _SC_SEMAPHORES = 21 172 _SC_SHARED_MEMORY_OBJECTS = 22 173 _SC_AIO_LISTIO_MAX = 23 174 _SC_AIO_MAX = 24 175 _SC_AIO_PRIO_DELTA_MAX = 25 176 _SC_DELAYTIMER_MAX = 26 177 _SC_MQ_OPEN_MAX = 27 178 _SC_MQ_PRIO_MAX = 28 179 _SC_VERSION = 29 180 _SC_PAGESIZE = 30 181 _SC_RTSIG_MAX = 31 182 _SC_SEM_NSEMS_MAX = 32 183 _SC_SEM_VALUE_MAX = 33 184 _SC_SIGQUEUE_MAX = 34 185 _SC_TIMER_MAX = 35 186 187 // Values for the argument to `sysconf' 188 // corresponding to _POSIX2_* symbols. 189 _SC_BC_BASE_MAX = 36 190 _SC_BC_DIM_MAX = 37 191 _SC_BC_SCALE_MAX = 38 192 _SC_BC_STRING_MAX = 39 193 _SC_COLL_WEIGHTS_MAX = 40 194 _SC_EQUIV_CLASS_MAX = 41 195 _SC_EXPR_NEST_MAX = 42 196 _SC_LINE_MAX = 43 197 _SC_RE_DUP_MAX = 44 198 _SC_CHARCLASS_NAME_MAX = 45 199 200 _SC_2_VERSION = 46 201 _SC_2_C_BIND = 47 202 _SC_2_C_DEV = 48 203 _SC_2_FORT_DEV = 49 204 _SC_2_FORT_RUN = 50 205 _SC_2_SW_DEV = 51 206 _SC_2_LOCALEDEF = 52 207 208 _SC_PII = 53 209 _SC_PII_XTI = 54 210 _SC_PII_SOCKET = 55 211 _SC_PII_INTERNET = 56 212 _SC_PII_OSI = 57 213 _SC_POLL = 58 214 _SC_SELECT = 59 215 _SC_UIO_MAXIOV = 60 216 _SC_IOV_MAX = 60 217 _SC_PII_INTERNET_STREAM = 61 218 _SC_PII_INTERNET_DGRAM = 62 219 _SC_PII_OSI_COTS = 63 220 _SC_PII_OSI_CLTS = 64 221 _SC_PII_OSI_M = 65 222 _SC_T_IOV_MAX = 66 223 224 // Values according to POSIX 1003.1c (POSIX threads). 225 _SC_THREADS = 67 226 _SC_THREAD_SAFE_FUNCTIONS = 68 227 _SC_GETGR_R_SIZE_MAX = 69 228 _SC_GETPW_R_SIZE_MAX = 70 229 _SC_LOGIN_NAME_MAX = 71 230 _SC_TTY_NAME_MAX = 72 231 _SC_THREAD_DESTRUCTOR_ITERATIONS = 73 232 _SC_THREAD_KEYS_MAX = 74 233 _SC_THREAD_STACK_MIN = 75 234 _SC_THREAD_THREADS_MAX = 76 235 _SC_THREAD_ATTR_STACKADDR = 77 236 _SC_THREAD_ATTR_STACKSIZE = 78 237 _SC_THREAD_PRIORITY_SCHEDULING = 79 238 _SC_THREAD_PRIO_INHERIT = 80 239 _SC_THREAD_PRIO_PROTECT = 81 240 _SC_THREAD_PROCESS_SHARED = 82 241 242 _SC_NPROCESSORS_CONF = 83 243 _SC_NPROCESSORS_ONLN = 84 244 _SC_PHYS_PAGES = 85 245 _SC_AVPHYS_PAGES = 86 246 _SC_ATEXIT_MAX = 87 247 _SC_PASS_MAX = 88 248 249 _SC_XOPEN_VERSION = 89 250 _SC_XOPEN_XCU_VERSION = 90 251 _SC_XOPEN_UNIX = 91 252 _SC_XOPEN_CRYPT = 92 253 _SC_XOPEN_ENH_I18N = 93 254 _SC_XOPEN_SHM = 94 255 256 _SC_2_CHAR_TERM = 95 257 _SC_2_C_VERSION = 96 258 _SC_2_UPE = 97 259 260 _SC_XOPEN_XPG2 = 98 261 _SC_XOPEN_XPG3 = 99 262 _SC_XOPEN_XPG4 = 100 263 264 _SC_CHAR_BIT = 101 265 _SC_CHAR_MAX = 102 266 _SC_CHAR_MIN = 103 267 _SC_INT_MAX = 104 268 _SC_INT_MIN = 105 269 _SC_LONG_BIT = 106 270 _SC_WORD_BIT = 107 271 _SC_MB_LEN_MAX = 108 272 _SC_NZERO = 109 273 _SC_SSIZE_MAX = 110 274 _SC_SCHAR_MAX = 111 275 _SC_SCHAR_MIN = 112 276 _SC_SHRT_MAX = 113 277 _SC_SHRT_MIN = 114 278 _SC_UCHAR_MAX = 115 279 _SC_UINT_MAX = 116 280 _SC_ULONG_MAX = 117 281 _SC_USHRT_MAX = 118 282 283 _SC_NL_ARGMAX = 119 284 _SC_NL_LANGMAX = 120 285 _SC_NL_MSGMAX = 121 286 _SC_NL_NMAX = 122 287 _SC_NL_SETMAX = 123 288 _SC_NL_TEXTMAX = 124 289 290 _SC_XBS5_ILP32_OFF32 = 125 291 _SC_XBS5_ILP32_OFFBIG = 126 292 _SC_XBS5_LP64_OFF64 = 127 293 _SC_XBS5_LPBIG_OFFBIG = 128 294 295 _SC_XOPEN_LEGACY = 129 296 _SC_XOPEN_REALTIME = 130 297 _SC_XOPEN_REALTIME_THREADS = 131 298 299 _SC_ADVISORY_INFO = 132 300 _SC_BARRIERS = 133 301 _SC_BASE = 134 302 _SC_C_LANG_SUPPORT = 135 303 _SC_C_LANG_SUPPORT_R = 136 304 _SC_CLOCK_SELECTION = 137 305 _SC_CPUTIME = 138 306 _SC_THREAD_CPUTIME = 139 307 _SC_DEVICE_IO = 140 308 _SC_DEVICE_SPECIFIC = 141 309 _SC_DEVICE_SPECIFIC_R = 142 310 _SC_FD_MGMT = 143 311 _SC_FIFO = 144 312 _SC_PIPE = 145 313 _SC_FILE_ATTRIBUTES = 146 314 _SC_FILE_LOCKING = 147 315 _SC_FILE_SYSTEM = 148 316 _SC_MONOTONIC_CLOCK = 149 317 _SC_MULTI_PROCESS = 150 318 _SC_SINGLE_PROCESS = 151 319 _SC_NETWORKING = 152 320 _SC_READER_WRITER_LOCKS = 153 321 _SC_SPIN_LOCKS = 154 322 _SC_REGEXP = 155 323 _SC_REGEX_VERSION = 156 324 _SC_SHELL = 157 325 _SC_SIGNALS = 158 326 _SC_SPAWN = 159 327 _SC_SPORADIC_SERVER = 160 328 _SC_THREAD_SPORADIC_SERVER = 161 329 _SC_SYSTEM_DATABASE = 162 330 _SC_SYSTEM_DATABASE_R = 163 331 _SC_TIMEOUTS = 164 332 _SC_TYPED_MEMORY_OBJECTS = 165 333 _SC_USER_GROUPS = 166 334 _SC_USER_GROUPS_R = 167 335 _SC_2_PBS = 168 336 _SC_2_PBS_ACCOUNTING = 169 337 _SC_2_PBS_LOCATE = 170 338 _SC_2_PBS_MESSAGE = 171 339 _SC_2_PBS_TRACK = 172 340 _SC_SYMLOOP_MAX = 173 341 _SC_STREAMS = 174 342 _SC_2_PBS_CHECKPOINT = 175 343 344 _SC_V6_ILP32_OFF32 = 176 345 _SC_V6_ILP32_OFFBIG = 177 346 _SC_V6_LP64_OFF64 = 178 347 _SC_V6_LPBIG_OFFBIG = 179 348 349 _SC_HOST_NAME_MAX = 180 350 _SC_TRACE = 181 351 _SC_TRACE_EVENT_FILTER = 182 352 _SC_TRACE_INHERIT = 183 353 _SC_TRACE_LOG = 184 354 355 _SC_LEVEL1_ICACHE_SIZE = 185 356 _SC_LEVEL1_ICACHE_ASSOC = 186 357 _SC_LEVEL1_ICACHE_LINESIZE = 187 358 _SC_LEVEL1_DCACHE_SIZE = 188 359 _SC_LEVEL1_DCACHE_ASSOC = 189 360 _SC_LEVEL1_DCACHE_LINESIZE = 190 361 _SC_LEVEL2_CACHE_SIZE = 191 362 _SC_LEVEL2_CACHE_ASSOC = 192 363 _SC_LEVEL2_CACHE_LINESIZE = 193 364 _SC_LEVEL3_CACHE_SIZE = 194 365 _SC_LEVEL3_CACHE_ASSOC = 195 366 _SC_LEVEL3_CACHE_LINESIZE = 196 367 _SC_LEVEL4_CACHE_SIZE = 197 368 _SC_LEVEL4_CACHE_ASSOC = 198 369 _SC_LEVEL4_CACHE_LINESIZE = 199 370 // Leave room here, maybe we need a few more cache levels some day. 371 372 _SC_IPV6 = 235 373 _SC_RAW_SOCKETS = 236 374 375 _SC_V7_ILP32_OFF32 = 237 376 _SC_V7_ILP32_OFFBIG = 238 377 _SC_V7_LP64_OFF64 = 239 378 _SC_V7_LPBIG_OFFBIG = 240 379 380 _SC_SS_REPL_MAX = 241 381 382 _SC_TRACE_EVENT_NAME_MAX = 242 383 _SC_TRACE_NAME_MAX = 243 384 _SC_TRACE_SYS_MAX = 244 385 _SC_TRACE_USER_EVENT_MAX = 245 386 387 _SC_XOPEN_STREAMS = 246 388 389 _SC_THREAD_ROBUST_PRIO_INHERIT = 247 390 _SC_THREAD_ROBUST_PRIO_PROTECT = 248 391 ) 392 393 // Copyright (C) 1991-2020 Free Software Foundation, Inc. 394 // This file is part of the GNU C Library. 395 // 396 // The GNU C Library is free software; you can redistribute it and/or 397 // modify it under the terms of the GNU Lesser General Public 398 // License as published by the Free Software Foundation; either 399 // version 2.1 of the License, or (at your option) any later version. 400 // 401 // The GNU C Library is distributed in the hope that it will be useful, 402 // but WITHOUT ANY WARRANTY; without even the implied warranty of 403 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 404 // Lesser General Public License for more details. 405 // 406 // You should have received a copy of the GNU Lesser General Public 407 // License along with the GNU C Library; if not, see 408 // <https://www.gnu.org/licenses/>. 409 410 // ISO C99 Standard: 7.20 General utilities <stdlib.h> 411 412 // Handle feature test macros at the start of a header. 413 // Copyright (C) 2016-2020 Free Software Foundation, Inc. 414 // This file is part of the GNU C Library. 415 // 416 // The GNU C Library is free software; you can redistribute it and/or 417 // modify it under the terms of the GNU Lesser General Public 418 // License as published by the Free Software Foundation; either 419 // version 2.1 of the License, or (at your option) any later version. 420 // 421 // The GNU C Library is distributed in the hope that it will be useful, 422 // but WITHOUT ANY WARRANTY; without even the implied warranty of 423 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 424 // Lesser General Public License for more details. 425 // 426 // You should have received a copy of the GNU Lesser General Public 427 // License along with the GNU C Library; if not, see 428 // <https://www.gnu.org/licenses/>. 429 430 // This header is internal to glibc and should not be included outside 431 // of glibc headers. Headers including it must define 432 // __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION first. This header 433 // cannot have multiple include guards because ISO C feature test 434 // macros depend on the definition of the macro when an affected 435 // header is included, not when the first system header is 436 // included. 437 438 // Copyright (C) 1991-2020 Free Software Foundation, Inc. 439 // This file is part of the GNU C Library. 440 // 441 // The GNU C Library is free software; you can redistribute it and/or 442 // modify it under the terms of the GNU Lesser General Public 443 // License as published by the Free Software Foundation; either 444 // version 2.1 of the License, or (at your option) any later version. 445 // 446 // The GNU C Library is distributed in the hope that it will be useful, 447 // but WITHOUT ANY WARRANTY; without even the implied warranty of 448 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 449 // Lesser General Public License for more details. 450 // 451 // You should have received a copy of the GNU Lesser General Public 452 // License along with the GNU C Library; if not, see 453 // <https://www.gnu.org/licenses/>. 454 455 // ISO/IEC TR 24731-2:2010 defines the __STDC_WANT_LIB_EXT2__ 456 // macro. 457 458 // ISO/IEC TS 18661-1:2014 defines the __STDC_WANT_IEC_60559_BFP_EXT__ 459 // macro. Most but not all symbols enabled by that macro in TS 460 // 18661-1 are enabled unconditionally in C2X; the symbols in Annex F 461 // still require that macro in C2X. 462 463 // ISO/IEC TS 18661-4:2015 defines the 464 // __STDC_WANT_IEC_60559_FUNCS_EXT__ macro. Other than the reduction 465 // functions, the symbols from this TS are enabled unconditionally in 466 // C2X. 467 468 // ISO/IEC TS 18661-3:2015 defines the 469 // __STDC_WANT_IEC_60559_TYPES_EXT__ macro. 470 471 // Get size_t, wchar_t and NULL from <stddef.h>. 472 // Copyright (C) 1989-2020 Free Software Foundation, Inc. 473 // 474 // This file is part of GCC. 475 // 476 // GCC is free software; you can redistribute it and/or modify 477 // it under the terms of the GNU General Public License as published by 478 // the Free Software Foundation; either version 3, or (at your option) 479 // any later version. 480 // 481 // GCC is distributed in the hope that it will be useful, 482 // but WITHOUT ANY WARRANTY; without even the implied warranty of 483 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 484 // GNU General Public License for more details. 485 // 486 // Under Section 7 of GPL version 3, you are granted additional 487 // permissions described in the GCC Runtime Library Exception, version 488 // 3.1, as published by the Free Software Foundation. 489 // 490 // You should have received a copy of the GNU General Public License and 491 // a copy of the GCC Runtime Library Exception along with this program; 492 // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 493 // <http://www.gnu.org/licenses/>. 494 495 // ISO C Standard: 7.17 Common definitions <stddef.h> 496 497 // Any one of these symbols __need_* means that GNU libc 498 // wants us just to define one data type. So don't define 499 // the symbols that indicate this file's entire job has been done. 500 501 // This avoids lossage on SunOS but only if stdtypes.h comes first. 502 // There's no way to win with the other order! Sun lossage. 503 504 // Sequent's header files use _PTRDIFF_T_ in some conflicting way. 505 // Just ignore it. 506 507 // On VxWorks, <type/vxTypesBase.h> may have defined macros like 508 // _TYPE_size_t which will typedef size_t. fixincludes patched the 509 // vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is 510 // not defined, and so that defining this macro defines _GCC_SIZE_T. 511 // If we find that the macros are still defined at this point, we must 512 // invoke them so that the type is defined as expected. 513 514 // In case nobody has defined these types, but we aren't running under 515 // GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and 516 // __WCHAR_TYPE__ have reasonable values. This can happen if the 517 // parts of GCC is compiled by an older compiler, that actually 518 // include gstddef.h, such as collect2. 519 520 // Signed type of difference of two pointers. 521 522 // Define this type if we are doing the whole job, 523 // or if we want this type in particular. 524 525 // If this symbol has done its job, get rid of it. 526 527 // Unsigned type of `sizeof' something. 528 529 // Define this type if we are doing the whole job, 530 // or if we want this type in particular. 531 532 // Wide character type. 533 // Locale-writers should change this as necessary to 534 // be big enough to hold unique values not between 0 and 127, 535 // and not (wchar_t) -1, for each defined multibyte character. 536 537 // Define this type if we are doing the whole job, 538 // or if we want this type in particular. 539 540 // A null pointer constant. 541 542 // Offset of member MEMBER in a struct of type TYPE. 543 544 // XPG requires a few symbols from <sys/wait.h> being defined. 545 // Definitions of flag bits for `waitpid' et al. 546 // Copyright (C) 1992-2020 Free Software Foundation, Inc. 547 // This file is part of the GNU C Library. 548 // 549 // The GNU C Library is free software; you can redistribute it and/or 550 // modify it under the terms of the GNU Lesser General Public 551 // License as published by the Free Software Foundation; either 552 // version 2.1 of the License, or (at your option) any later version. 553 // 554 // The GNU C Library is distributed in the hope that it will be useful, 555 // but WITHOUT ANY WARRANTY; without even the implied warranty of 556 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 557 // Lesser General Public License for more details. 558 // 559 // You should have received a copy of the GNU Lesser General Public 560 // License along with the GNU C Library; if not, see 561 // <https://www.gnu.org/licenses/>. 562 563 // Bits in the third argument to `waitpid'. 564 565 // Bits in the fourth argument to `waitid'. 566 567 // The following values are used by the `waitid' function. 568 569 // The Linux kernel defines these bare, rather than an enum, 570 // which causes a conflict if the include order is reversed. 571 572 const ( /* waitflags.h:52:1: */ 573 P_ALL = 0 // Wait for any child. 574 P_PID = 1 // Wait for specified process. 575 P_PGID = 2 576 ) 577 578 type ptrdiff_t = int64 /* <builtin>:3:26 */ 579 580 type size_t = uint64 /* <builtin>:9:23 */ 581 582 type wchar_t = int32 /* <builtin>:15:24 */ 583 584 // A null pointer constant. 585 586 // Offset of member MEMBER in a struct of type TYPE. 587 588 // Type whose alignment is supported in every context and is at least 589 // as great as that of any standard type not using alignment 590 // specifiers. 591 type max_align_t = struct { 592 __max_align_ll int64 593 __max_align_ld float64 594 } /* stddef.h:426:3 */ 595 596 type z_size_t = size_t /* zconf.h:248:21 */ 597 598 // Maximum value for memLevel in deflateInit2 599 600 // Maximum value for windowBits in deflateInit2 and inflateInit2. 601 // WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files 602 // created by gzip. (Files created by minigzip can still be extracted by 603 // gzip.) 604 605 // The memory requirements for deflate are (in bytes): 606 // (1 << (windowBits+2)) + (1 << (memLevel+9)) 607 // that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values) 608 // plus a few kilobytes for small objects. For example, if you want to reduce 609 // the default memory requirements from 256K to 128K, compile with 610 // make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7" 611 // Of course this will generally degrade compression (there's no free lunch). 612 // 613 // The memory requirements for inflate are (in bytes) 1 << windowBits 614 // that is, 32K for windowBits=15 (default value) plus about 7 kilobytes 615 // for small objects. 616 617 // Type declarations 618 619 // The following definitions for FAR are needed only for MSDOS mixed 620 // model programming (small or medium model with some far allocations). 621 // This was tested only with MSC; for other MSDOS compilers you may have 622 // to define NO_MEMCPY in zutil.h. If you don't need the mixed model, 623 // just define FAR to be empty. 624 625 type Byte = uint8 /* zconf.h:391:24 */ // 8 bits 626 type uInt = uint32 /* zconf.h:393:24 */ // 16 bits or more 627 type uLong = uint64 /* zconf.h:394:24 */ // 32 bits or more 628 629 type Bytef = Byte /* zconf.h:400:22 */ 630 type charf = uint8 /* zconf.h:402:19 */ 631 type intf = int32 /* zconf.h:403:19 */ 632 type uIntf = uInt /* zconf.h:404:19 */ 633 type uLongf = uLong /* zconf.h:405:19 */ 634 635 type voidpc = uintptr /* zconf.h:408:23 */ 636 type voidpf = uintptr /* zconf.h:409:23 */ 637 type voidp = uintptr /* zconf.h:410:23 */ 638 639 // Copyright (C) 1992-2020 Free Software Foundation, Inc. 640 // 641 // This file is part of GCC. 642 // 643 // GCC is free software; you can redistribute it and/or modify it under 644 // the terms of the GNU General Public License as published by the Free 645 // Software Foundation; either version 3, or (at your option) any later 646 // version. 647 // 648 // GCC is distributed in the hope that it will be useful, but WITHOUT ANY 649 // WARRANTY; without even the implied warranty of MERCHANTABILITY or 650 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 651 // for more details. 652 // 653 // Under Section 7 of GPL version 3, you are granted additional 654 // permissions described in the GCC Runtime Library Exception, version 655 // 3.1, as published by the Free Software Foundation. 656 // 657 // You should have received a copy of the GNU General Public License and 658 // a copy of the GCC Runtime Library Exception along with this program; 659 // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 660 // <http://www.gnu.org/licenses/>. 661 662 // This administrivia gets added to the beginning of limits.h 663 // if the system has its own version of limits.h. 664 665 // We use _GCC_LIMITS_H_ because we want this not to match 666 // any macros that the system's limits.h uses for its own purposes. 667 668 // Use "..." so that we find syslimits.h only in this same directory. 669 // syslimits.h stands for the system's own limits.h file. 670 // If we can use it ok unmodified, then we install this text. 671 // If fixincludes fixes it, then the fixed version is installed 672 // instead of this text. 673 674 // Copyright (C) 1991-2020 Free Software Foundation, Inc. 675 // This file is part of the GNU C Library. 676 // 677 // The GNU C Library is free software; you can redistribute it and/or 678 // modify it under the terms of the GNU Lesser General Public 679 // License as published by the Free Software Foundation; either 680 // version 2.1 of the License, or (at your option) any later version. 681 // 682 // The GNU C Library is distributed in the hope that it will be useful, 683 // but WITHOUT ANY WARRANTY; without even the implied warranty of 684 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 685 // Lesser General Public License for more details. 686 // 687 // You should have received a copy of the GNU Lesser General Public 688 // License along with the GNU C Library; if not, see 689 // <https://www.gnu.org/licenses/>. 690 691 // ISO C99 Standard: 7.10/5.2.4.2.1 Sizes of integer types <limits.h> 692 693 // Handle feature test macros at the start of a header. 694 // Copyright (C) 2016-2020 Free Software Foundation, Inc. 695 // This file is part of the GNU C Library. 696 // 697 // The GNU C Library is free software; you can redistribute it and/or 698 // modify it under the terms of the GNU Lesser General Public 699 // License as published by the Free Software Foundation; either 700 // version 2.1 of the License, or (at your option) any later version. 701 // 702 // The GNU C Library is distributed in the hope that it will be useful, 703 // but WITHOUT ANY WARRANTY; without even the implied warranty of 704 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 705 // Lesser General Public License for more details. 706 // 707 // You should have received a copy of the GNU Lesser General Public 708 // License along with the GNU C Library; if not, see 709 // <https://www.gnu.org/licenses/>. 710 711 // This header is internal to glibc and should not be included outside 712 // of glibc headers. Headers including it must define 713 // __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION first. This header 714 // cannot have multiple include guards because ISO C feature test 715 // macros depend on the definition of the macro when an affected 716 // header is included, not when the first system header is 717 // included. 718 719 // Copyright (C) 1991-2020 Free Software Foundation, Inc. 720 // This file is part of the GNU C Library. 721 // 722 // The GNU C Library is free software; you can redistribute it and/or 723 // modify it under the terms of the GNU Lesser General Public 724 // License as published by the Free Software Foundation; either 725 // version 2.1 of the License, or (at your option) any later version. 726 // 727 // The GNU C Library is distributed in the hope that it will be useful, 728 // but WITHOUT ANY WARRANTY; without even the implied warranty of 729 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 730 // Lesser General Public License for more details. 731 // 732 // You should have received a copy of the GNU Lesser General Public 733 // License along with the GNU C Library; if not, see 734 // <https://www.gnu.org/licenses/>. 735 736 // These are defined by the user (or the compiler) 737 // to specify the desired environment: 738 // 739 // __STRICT_ANSI__ ISO Standard C. 740 // _ISOC99_SOURCE Extensions to ISO C89 from ISO C99. 741 // _ISOC11_SOURCE Extensions to ISO C99 from ISO C11. 742 // _ISOC2X_SOURCE Extensions to ISO C99 from ISO C2X. 743 // __STDC_WANT_LIB_EXT2__ 744 // Extensions to ISO C99 from TR 27431-2:2010. 745 // __STDC_WANT_IEC_60559_BFP_EXT__ 746 // Extensions to ISO C11 from TS 18661-1:2014. 747 // __STDC_WANT_IEC_60559_FUNCS_EXT__ 748 // Extensions to ISO C11 from TS 18661-4:2015. 749 // __STDC_WANT_IEC_60559_TYPES_EXT__ 750 // Extensions to ISO C11 from TS 18661-3:2015. 751 // 752 // _POSIX_SOURCE IEEE Std 1003.1. 753 // _POSIX_C_SOURCE If ==1, like _POSIX_SOURCE; if >=2 add IEEE Std 1003.2; 754 // if >=199309L, add IEEE Std 1003.1b-1993; 755 // if >=199506L, add IEEE Std 1003.1c-1995; 756 // if >=200112L, all of IEEE 1003.1-2004 757 // if >=200809L, all of IEEE 1003.1-2008 758 // _XOPEN_SOURCE Includes POSIX and XPG things. Set to 500 if 759 // Single Unix conformance is wanted, to 600 for the 760 // sixth revision, to 700 for the seventh revision. 761 // _XOPEN_SOURCE_EXTENDED XPG things and X/Open Unix extensions. 762 // _LARGEFILE_SOURCE Some more functions for correct standard I/O. 763 // _LARGEFILE64_SOURCE Additional functionality from LFS for large files. 764 // _FILE_OFFSET_BITS=N Select default filesystem interface. 765 // _ATFILE_SOURCE Additional *at interfaces. 766 // _GNU_SOURCE All of the above, plus GNU extensions. 767 // _DEFAULT_SOURCE The default set of features (taking precedence over 768 // __STRICT_ANSI__). 769 // 770 // _FORTIFY_SOURCE Add security hardening to many library functions. 771 // Set to 1 or 2; 2 performs stricter checks than 1. 772 // 773 // _REENTRANT, _THREAD_SAFE 774 // Obsolete; equivalent to _POSIX_C_SOURCE=199506L. 775 // 776 // The `-ansi' switch to the GNU C compiler, and standards conformance 777 // options such as `-std=c99', define __STRICT_ANSI__. If none of 778 // these are defined, or if _DEFAULT_SOURCE is defined, the default is 779 // to have _POSIX_SOURCE set to one and _POSIX_C_SOURCE set to 780 // 200809L, as well as enabling miscellaneous functions from BSD and 781 // SVID. If more than one of these are defined, they accumulate. For 782 // example __STRICT_ANSI__, _POSIX_SOURCE and _POSIX_C_SOURCE together 783 // give you ISO C, 1003.1, and 1003.2, but nothing else. 784 // 785 // These are defined by this file and are used by the 786 // header files to decide what to declare or define: 787 // 788 // __GLIBC_USE (F) Define things from feature set F. This is defined 789 // to 1 or 0; the subsequent macros are either defined 790 // or undefined, and those tests should be moved to 791 // __GLIBC_USE. 792 // __USE_ISOC11 Define ISO C11 things. 793 // __USE_ISOC99 Define ISO C99 things. 794 // __USE_ISOC95 Define ISO C90 AMD1 (C95) things. 795 // __USE_ISOCXX11 Define ISO C++11 things. 796 // __USE_POSIX Define IEEE Std 1003.1 things. 797 // __USE_POSIX2 Define IEEE Std 1003.2 things. 798 // __USE_POSIX199309 Define IEEE Std 1003.1, and .1b things. 799 // __USE_POSIX199506 Define IEEE Std 1003.1, .1b, .1c and .1i things. 800 // __USE_XOPEN Define XPG things. 801 // __USE_XOPEN_EXTENDED Define X/Open Unix things. 802 // __USE_UNIX98 Define Single Unix V2 things. 803 // __USE_XOPEN2K Define XPG6 things. 804 // __USE_XOPEN2KXSI Define XPG6 XSI things. 805 // __USE_XOPEN2K8 Define XPG7 things. 806 // __USE_XOPEN2K8XSI Define XPG7 XSI things. 807 // __USE_LARGEFILE Define correct standard I/O things. 808 // __USE_LARGEFILE64 Define LFS things with separate names. 809 // __USE_FILE_OFFSET64 Define 64bit interface as default. 810 // __USE_MISC Define things from 4.3BSD or System V Unix. 811 // __USE_ATFILE Define *at interfaces and AT_* constants for them. 812 // __USE_GNU Define GNU extensions. 813 // __USE_FORTIFY_LEVEL Additional security measures used, according to level. 814 // 815 // The macros `__GNU_LIBRARY__', `__GLIBC__', and `__GLIBC_MINOR__' are 816 // defined by this file unconditionally. `__GNU_LIBRARY__' is provided 817 // only for compatibility. All new code should use the other symbols 818 // to test for features. 819 // 820 // All macros listed above as possibly being defined by this file are 821 // explicitly undefined if they are not explicitly defined. 822 // Feature-test macros that are not defined by the user or compiler 823 // but are implied by the other feature-test macros defined (or by the 824 // lack of any definitions) are defined by the file. 825 // 826 // ISO C feature test macros depend on the definition of the macro 827 // when an affected header is included, not when the first system 828 // header is included, and so they are handled in 829 // <bits/libc-header-start.h>, which does not have a multiple include 830 // guard. Feature test macros that can be handled from the first 831 // system header included are handled here. 832 833 // Undefine everything, so we get a clean slate. 834 835 // Suppress kernel-name space pollution unless user expressedly asks 836 // for it. 837 838 // Convenience macro to test the version of gcc. 839 // Use like this: 840 // #if __GNUC_PREREQ (2,8) 841 // ... code requiring gcc 2.8 or later ... 842 // #endif 843 // Note: only works for GCC 2.0 and later, because __GNUC_MINOR__ was 844 // added in 2.0. 845 846 // Similarly for clang. Features added to GCC after version 4.2 may 847 // or may not also be available in clang, and clang's definitions of 848 // __GNUC(_MINOR)__ are fixed at 4 and 2 respectively. Not all such 849 // features can be queried via __has_extension/__has_feature. 850 851 // Whether to use feature set F. 852 853 // _BSD_SOURCE and _SVID_SOURCE are deprecated aliases for 854 // _DEFAULT_SOURCE. If _DEFAULT_SOURCE is present we do not 855 // issue a warning; the expectation is that the source is being 856 // transitioned to use the new macro. 857 858 // If _GNU_SOURCE was defined by the user, turn on all the other features. 859 860 // If nothing (other than _GNU_SOURCE and _DEFAULT_SOURCE) is defined, 861 // define _DEFAULT_SOURCE. 862 863 // This is to enable the ISO C2X extension. 864 865 // This is to enable the ISO C11 extension. 866 867 // This is to enable the ISO C99 extension. 868 869 // This is to enable the ISO C90 Amendment 1:1995 extension. 870 871 // If none of the ANSI/POSIX macros are defined, or if _DEFAULT_SOURCE 872 // is defined, use POSIX.1-2008 (or another version depending on 873 // _XOPEN_SOURCE). 874 875 // Some C libraries once required _REENTRANT and/or _THREAD_SAFE to be 876 // defined in all multithreaded code. GNU libc has not required this 877 // for many years. We now treat them as compatibility synonyms for 878 // _POSIX_C_SOURCE=199506L, which is the earliest level of POSIX with 879 // comprehensive support for multithreaded code. Using them never 880 // lowers the selected level of POSIX conformance, only raises it. 881 882 // The function 'gets' existed in C89, but is impossible to use 883 // safely. It has been removed from ISO C11 and ISO C++14. Note: for 884 // compatibility with various implementations of <cstdio>, this test 885 // must consider only the value of __cplusplus when compiling C++. 886 887 // GNU formerly extended the scanf functions with modified format 888 // specifiers %as, %aS, and %a[...] that allocate a buffer for the 889 // input using malloc. This extension conflicts with ISO C99, which 890 // defines %a as a standalone format specifier that reads a floating- 891 // point number; moreover, POSIX.1-2008 provides the same feature 892 // using the modifier letter 'm' instead (%ms, %mS, %m[...]). 893 // 894 // We now follow C99 unless GNU extensions are active and the compiler 895 // is specifically in C89 or C++98 mode (strict or not). For 896 // instance, with GCC, -std=gnu11 will have C99-compliant scanf with 897 // or without -D_GNU_SOURCE, but -std=c89 -D_GNU_SOURCE will have the 898 // old extension. 899 900 // Get definitions of __STDC_* predefined macros, if the compiler has 901 // not preincluded this header automatically. 902 // Copyright (C) 1991-2020 Free Software Foundation, Inc. 903 // This file is part of the GNU C Library. 904 // 905 // The GNU C Library is free software; you can redistribute it and/or 906 // modify it under the terms of the GNU Lesser General Public 907 // License as published by the Free Software Foundation; either 908 // version 2.1 of the License, or (at your option) any later version. 909 // 910 // The GNU C Library is distributed in the hope that it will be useful, 911 // but WITHOUT ANY WARRANTY; without even the implied warranty of 912 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 913 // Lesser General Public License for more details. 914 // 915 // You should have received a copy of the GNU Lesser General Public 916 // License along with the GNU C Library; if not, see 917 // <https://www.gnu.org/licenses/>. 918 919 // This macro indicates that the installed library is the GNU C Library. 920 // For historic reasons the value now is 6 and this will stay from now 921 // on. The use of this variable is deprecated. Use __GLIBC__ and 922 // __GLIBC_MINOR__ now (see below) when you want to test for a specific 923 // GNU C library version and use the values in <gnu/lib-names.h> to get 924 // the sonames of the shared libraries. 925 926 // Major and minor version number of the GNU C library package. Use 927 // these macros to test for features in specific releases. 928 929 // This is here only because every header file already includes this one. 930 // Copyright (C) 1992-2020 Free Software Foundation, Inc. 931 // This file is part of the GNU C Library. 932 // 933 // The GNU C Library is free software; you can redistribute it and/or 934 // modify it under the terms of the GNU Lesser General Public 935 // License as published by the Free Software Foundation; either 936 // version 2.1 of the License, or (at your option) any later version. 937 // 938 // The GNU C Library is distributed in the hope that it will be useful, 939 // but WITHOUT ANY WARRANTY; without even the implied warranty of 940 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 941 // Lesser General Public License for more details. 942 // 943 // You should have received a copy of the GNU Lesser General Public 944 // License along with the GNU C Library; if not, see 945 // <https://www.gnu.org/licenses/>. 946 947 // We are almost always included from features.h. 948 949 // The GNU libc does not support any K&R compilers or the traditional mode 950 // of ISO C compilers anymore. Check for some of the combinations not 951 // anymore supported. 952 953 // Some user header file might have defined this before. 954 955 // All functions, except those with callbacks or those that 956 // synchronize memory, are leaf functions. 957 958 // GCC can always grok prototypes. For C++ programs we add throw() 959 // to help it optimize the function calls. But this works only with 960 // gcc 2.8.x and egcs. For gcc 3.2 and up we even mark C functions 961 // as non-throwing using a function attribute since programs can use 962 // the -fexceptions options for C code as well. 963 964 // Compilers that are not clang may object to 965 // #if defined __clang__ && __has_extension(...) 966 // even though they do not need to evaluate the right-hand side of the &&. 967 968 // These two macros are not used in glibc anymore. They are kept here 969 // only because some other projects expect the macros to be defined. 970 971 // For these things, GCC behaves the ANSI way normally, 972 // and the non-ANSI way under -traditional. 973 974 // This is not a typedef so `const __ptr_t' does the right thing. 975 976 // C++ needs to know that types and declarations are C, not C++. 977 978 // Fortify support. 979 980 // Support for flexible arrays. 981 // Headers that should use flexible arrays only if they're "real" 982 // (e.g. only if they won't affect sizeof()) should test 983 // #if __glibc_c99_flexarr_available. 984 985 // __asm__ ("xyz") is used throughout the headers to rename functions 986 // at the assembly language level. This is wrapped by the __REDIRECT 987 // macro, in order to support compilers that can do this some other 988 // way. When compilers don't support asm-names at all, we have to do 989 // preprocessor tricks instead (which don't have exactly the right 990 // semantics, but it's the best we can do). 991 // 992 // Example: 993 // int __REDIRECT(setpgrp, (__pid_t pid, __pid_t pgrp), setpgid); 994 995 // 996 // #elif __SOME_OTHER_COMPILER__ 997 // 998 // # define __REDIRECT(name, proto, alias) name proto; _Pragma("let " #name " = " #alias) 999 1000 // GCC has various useful declarations that can be made with the 1001 // `__attribute__' syntax. All of the ways we use this do fine if 1002 // they are omitted for compilers that don't understand it. 1003 1004 // At some point during the gcc 2.96 development the `malloc' attribute 1005 // for functions was introduced. We don't want to use it unconditionally 1006 // (although this would be possible) since it generates warnings. 1007 1008 // Tell the compiler which arguments to an allocation function 1009 // indicate the size of the allocation. 1010 1011 // At some point during the gcc 2.96 development the `pure' attribute 1012 // for functions was introduced. We don't want to use it unconditionally 1013 // (although this would be possible) since it generates warnings. 1014 1015 // This declaration tells the compiler that the value is constant. 1016 1017 // At some point during the gcc 3.1 development the `used' attribute 1018 // for functions was introduced. We don't want to use it unconditionally 1019 // (although this would be possible) since it generates warnings. 1020 1021 // Since version 3.2, gcc allows marking deprecated functions. 1022 1023 // Since version 4.5, gcc also allows one to specify the message printed 1024 // when a deprecated function is used. clang claims to be gcc 4.2, but 1025 // may also support this feature. 1026 1027 // At some point during the gcc 2.8 development the `format_arg' attribute 1028 // for functions was introduced. We don't want to use it unconditionally 1029 // (although this would be possible) since it generates warnings. 1030 // If several `format_arg' attributes are given for the same function, in 1031 // gcc-3.0 and older, all but the last one are ignored. In newer gccs, 1032 // all designated arguments are considered. 1033 1034 // At some point during the gcc 2.97 development the `strfmon' format 1035 // attribute for functions was introduced. We don't want to use it 1036 // unconditionally (although this would be possible) since it 1037 // generates warnings. 1038 1039 // The nonull function attribute allows to mark pointer parameters which 1040 // must not be NULL. 1041 1042 // If fortification mode, we warn about unused results of certain 1043 // function calls which can lead to problems. 1044 1045 // Forces a function to be always inlined. 1046 // The Linux kernel defines __always_inline in stddef.h (283d7573), and 1047 // it conflicts with this definition. Therefore undefine it first to 1048 // allow either header to be included first. 1049 1050 // Associate error messages with the source location of the call site rather 1051 // than with the source location inside the function. 1052 1053 // GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99 1054 // inline semantics, unless -fgnu89-inline is used. Using __GNUC_STDC_INLINE__ 1055 // or __GNUC_GNU_INLINE is not a good enough check for gcc because gcc versions 1056 // older than 4.3 may define these macros and still not guarantee GNU inlining 1057 // semantics. 1058 // 1059 // clang++ identifies itself as gcc-4.2, but has support for GNU inlining 1060 // semantics, that can be checked for by using the __GNUC_STDC_INLINE_ and 1061 // __GNUC_GNU_INLINE__ macro definitions. 1062 1063 // GCC 4.3 and above allow passing all anonymous arguments of an 1064 // __extern_always_inline function to some other vararg function. 1065 1066 // It is possible to compile containing GCC extensions even if GCC is 1067 // run in pedantic mode if the uses are carefully marked using the 1068 // `__extension__' keyword. But this is not generally available before 1069 // version 2.8. 1070 1071 // __restrict is known in EGCS 1.2 and above. 1072 1073 // ISO C99 also allows to declare arrays as non-overlapping. The syntax is 1074 // array_name[restrict] 1075 // GCC 3.1 supports this. 1076 1077 // Describes a char array whose address can safely be passed as the first 1078 // argument to strncpy and strncat, as the char array is not necessarily 1079 // a NUL-terminated string. 1080 1081 // Undefine (also defined in libc-symbols.h). 1082 // Copies attributes from the declaration or type referenced by 1083 // the argument. 1084 1085 // Determine the wordsize from the preprocessor defines. 1086 1087 // Properties of long double type. ldbl-opt version. 1088 // Copyright (C) 2016-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 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 // <https://www.gnu.org/licenses/>. 1104 1105 // __glibc_macro_warning (MESSAGE) issues warning MESSAGE. This is 1106 // intended for use in preprocessor macros. 1107 // 1108 // Note: MESSAGE must be a _single_ string; concatenation of string 1109 // literals is not supported. 1110 1111 // Generic selection (ISO C11) is a C-only feature, available in GCC 1112 // since version 4.9. Previous versions do not provide generic 1113 // selection, even though they might set __STDC_VERSION__ to 201112L, 1114 // when in -std=c11 mode. Thus, we must check for !defined __GNUC__ 1115 // when testing __STDC_VERSION__ for generic selection support. 1116 // On the other hand, Clang also defines __GNUC__, so a clang-specific 1117 // check is required to enable the use of generic selection. 1118 1119 // If we don't have __REDIRECT, prototypes will be missing if 1120 // __USE_FILE_OFFSET64 but not __USE_LARGEFILE[64]. 1121 1122 // Decide whether we can define 'extern inline' functions in headers. 1123 1124 // This is here only because every header file already includes this one. 1125 // Get the definitions of all the appropriate `__stub_FUNCTION' symbols. 1126 // <gnu/stubs.h> contains `#define __stub_FUNCTION' when FUNCTION is a stub 1127 // that will always return failure (and set errno to ENOSYS). 1128 // This file is automatically generated. 1129 // This file selects the right generated file of `__stub_FUNCTION' macros 1130 // based on the architecture being compiled for. 1131 1132 // Determine the wordsize from the preprocessor defines. 1133 1134 // This file is automatically generated. 1135 // It defines a symbol `__stub_FUNCTION' for each function 1136 // in the C library which is a stub, meaning it will fail 1137 // every time called, usually setting errno to ENOSYS. 1138 1139 // ISO/IEC TR 24731-2:2010 defines the __STDC_WANT_LIB_EXT2__ 1140 // macro. 1141 1142 // ISO/IEC TS 18661-1:2014 defines the __STDC_WANT_IEC_60559_BFP_EXT__ 1143 // macro. Most but not all symbols enabled by that macro in TS 1144 // 18661-1 are enabled unconditionally in C2X; the symbols in Annex F 1145 // still require that macro in C2X. 1146 1147 // ISO/IEC TS 18661-4:2015 defines the 1148 // __STDC_WANT_IEC_60559_FUNCS_EXT__ macro. Other than the reduction 1149 // functions, the symbols from this TS are enabled unconditionally in 1150 // C2X. 1151 1152 // ISO/IEC TS 18661-3:2015 defines the 1153 // __STDC_WANT_IEC_60559_TYPES_EXT__ macro. 1154 1155 // Maximum length of any multibyte character in any locale. 1156 // We define this value here since the gcc header does not define 1157 // the correct value. 1158 1159 // If we are not using GNU CC we have to define all the symbols ourself. 1160 // Otherwise use gcc's definitions (see below). 1161 1162 // Get the compiler's limits.h, which defines almost all the ISO constants. 1163 // 1164 // We put this #include_next outside the double inclusion check because 1165 // it should be possible to include this file more than once and still get 1166 // the definitions from gcc's header. 1167 1168 // The <limits.h> files in some gcc versions don't define LLONG_MIN, 1169 // LLONG_MAX, and ULLONG_MAX. Instead only the values gcc defined for 1170 // ages are available. 1171 1172 // The integer width macros are not defined by GCC's <limits.h> before 1173 // GCC 7, or if _GNU_SOURCE rather than 1174 // __STDC_WANT_IEC_60559_BFP_EXT__ is used to enable this feature. 1175 1176 // POSIX adds things to <limits.h>. 1177 // Copyright (C) 1991-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 // POSIX Standard: 2.9.2 Minimum Values Added to <limits.h> 1195 // 1196 // Never include this file directly; use <limits.h> instead. 1197 1198 // Determine the wordsize from the preprocessor defines. 1199 1200 // These are the standard-mandated minimum values. 1201 1202 // Minimum number of operations in one list I/O call. 1203 1204 // Minimal number of outstanding asynchronous I/O operations. 1205 1206 // Maximum length of arguments to `execve', including environment. 1207 1208 // Maximum simultaneous processes per real user ID. 1209 1210 // Minimal number of timer expiration overruns. 1211 1212 // Maximum length of a host name (not including the terminating null) 1213 // as returned from the GETHOSTNAME function. 1214 1215 // Maximum link count of a file. 1216 1217 // Maximum length of login name. 1218 1219 // Number of bytes in a terminal canonical input queue. 1220 1221 // Number of bytes for which space will be 1222 // available in a terminal input queue. 1223 1224 // Maximum number of message queues open for a process. 1225 1226 // Maximum number of supported message priorities. 1227 1228 // Number of bytes in a filename. 1229 1230 // Number of simultaneous supplementary group IDs per process. 1231 1232 // Number of files one process can have open at once. 1233 1234 // Number of bytes in a pathname. 1235 1236 // Number of bytes than can be written atomically to a pipe. 1237 1238 // The number of repeated occurrences of a BRE permitted by the 1239 // REGEXEC and REGCOMP functions when using the interval notation. 1240 1241 // Minimal number of realtime signals reserved for the application. 1242 1243 // Number of semaphores a process can have. 1244 1245 // Maximal value of a semaphore. 1246 1247 // Number of pending realtime signals. 1248 1249 // Largest value of a `ssize_t'. 1250 1251 // Number of streams a process can have open at once. 1252 1253 // The number of bytes in a symbolic link. 1254 1255 // The number of symbolic links that can be traversed in the 1256 // resolution of a pathname in the absence of a loop. 1257 1258 // Number of timer for a process. 1259 1260 // Maximum number of characters in a tty name. 1261 1262 // Maximum length of a timezone name (element of `tzname'). 1263 1264 // Maximum clock resolution in nanoseconds. 1265 1266 // Get the implementation-specific values for the above. 1267 // Minimum guaranteed maximum values for system limits. Linux/PPC version. 1268 // Copyright (C) 1993-2020 Free Software Foundation, Inc. 1269 // This file is part of the GNU C Library. 1270 // 1271 // The GNU C Library is free software; you can redistribute it and/or 1272 // modify it under the terms of the GNU Lesser General Public License as 1273 // published by the Free Software Foundation; either version 2.1 of the 1274 // License, or (at your option) any later version. 1275 // 1276 // The GNU C Library is distributed in the hope that it will be useful, 1277 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1278 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1279 // Lesser General Public License for more details. 1280 // 1281 // You should have received a copy of the GNU Lesser General Public 1282 // License along with the GNU C Library; see the file COPYING.LIB. If 1283 // not, see <https://www.gnu.org/licenses/>. 1284 1285 // The kernel header pollutes the namespace with the NR_OPEN symbol 1286 // and defines LINK_MAX although filesystems have different maxima. A 1287 // similar thing is true for OPEN_MAX: the limit can be changed at 1288 // runtime and therefore the macro must not be defined. Remove this 1289 // after including the header if necessary. 1290 1291 // The kernel sources contain a file with all the needed information. 1292 // SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note 1293 1294 // Have to remove NR_OPEN? 1295 // Have to remove LINK_MAX? 1296 // Have to remove OPEN_MAX? 1297 // Have to remove ARG_MAX? 1298 1299 // The number of data keys per process. 1300 // This is the value this implementation supports. 1301 1302 // Controlling the iterations of destructors for thread-specific data. 1303 // Number of iterations this implementation does. 1304 1305 // The number of threads per process. 1306 // We have no predefined limit on the number of threads. 1307 1308 // Maximum amount by which a process can descrease its asynchronous I/O 1309 // priority level. 1310 1311 // Minimum size for a thread. At least two pages for systems with 64k 1312 // pages. 1313 1314 // Maximum number of timer expiration overruns. 1315 1316 // Maximum tty name length. 1317 1318 // Maximum login name length. This is arbitrary. 1319 1320 // Maximum host name length. 1321 1322 // Maximum message queue priority level. 1323 1324 // Maximum value the semaphore can have. 1325 1326 // ssize_t is not formally required to be the signed type 1327 // corresponding to size_t, but it is for all configurations supported 1328 // by glibc. 1329 1330 // This value is a guaranteed minimum maximum. 1331 // The current maximum can be got from `sysconf'. 1332 1333 // Copyright (C) 1991-2020 Free Software Foundation, Inc. 1334 // This file is part of the GNU C Library. 1335 // 1336 // The GNU C Library is free software; you can redistribute it and/or 1337 // modify it under the terms of the GNU Lesser General Public 1338 // License as published by the Free Software Foundation; either 1339 // version 2.1 of the License, or (at your option) any later version. 1340 // 1341 // The GNU C Library is distributed in the hope that it will be useful, 1342 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1343 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1344 // Lesser General Public License for more details. 1345 // 1346 // You should have received a copy of the GNU Lesser General Public 1347 // License along with the GNU C Library; if not, see 1348 // <https://www.gnu.org/licenses/>. 1349 1350 // Never include this file directly; include <limits.h> instead. 1351 1352 // The maximum `ibase' and `obase' values allowed by the `bc' utility. 1353 1354 // The maximum number of elements allowed in an array by the `bc' utility. 1355 1356 // The maximum `scale' value allowed by the `bc' utility. 1357 1358 // The maximum length of a string constant accepted by the `bc' utility. 1359 1360 // The maximum number of weights that can be assigned to an entry of 1361 // the LC_COLLATE `order' keyword in the locale definition file. 1362 1363 // The maximum number of expressions that can be nested 1364 // within parentheses by the `expr' utility. 1365 1366 // The maximum length, in bytes, of an input line. 1367 1368 // The maximum number of repeated occurrences of a regular expression 1369 // permitted when using the interval notation `\{M,N\}'. 1370 1371 // The maximum number of bytes in a character class name. We have no 1372 // fixed limit, 2048 is a high number. 1373 1374 // These values are implementation-specific, 1375 // and may vary within the implementation. 1376 // Their precise values can be obtained from sysconf. 1377 1378 // This value is defined like this in regex.h. 1379 1380 // Copyright (C) 1991-2020 Free Software Foundation, Inc. 1381 // 1382 // This file is part of GCC. 1383 // 1384 // GCC is free software; you can redistribute it and/or modify it under 1385 // the terms of the GNU General Public License as published by the Free 1386 // Software Foundation; either version 3, or (at your option) any later 1387 // version. 1388 // 1389 // GCC is distributed in the hope that it will be useful, but WITHOUT ANY 1390 // WARRANTY; without even the implied warranty of MERCHANTABILITY or 1391 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 1392 // for more details. 1393 // 1394 // Under Section 7 of GPL version 3, you are granted additional 1395 // permissions described in the GCC Runtime Library Exception, version 1396 // 3.1, as published by the Free Software Foundation. 1397 // 1398 // You should have received a copy of the GNU General Public License and 1399 // a copy of the GCC Runtime Library Exception along with this program; 1400 // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 1401 // <http://www.gnu.org/licenses/>. 1402 1403 // Number of bits in a `char'. 1404 1405 // Maximum length of a multibyte character. 1406 1407 // Minimum and maximum values a `signed char' can hold. 1408 1409 // Maximum value an `unsigned char' can hold. (Minimum is 0). 1410 1411 // Minimum and maximum values a `char' can hold. 1412 1413 // Minimum and maximum values a `signed short int' can hold. 1414 1415 // Maximum value an `unsigned short int' can hold. (Minimum is 0). 1416 1417 // Minimum and maximum values a `signed int' can hold. 1418 1419 // Maximum value an `unsigned int' can hold. (Minimum is 0). 1420 1421 // Minimum and maximum values a `signed long int' can hold. 1422 // (Same as `int'). 1423 1424 // Maximum value an `unsigned long int' can hold. (Minimum is 0). 1425 1426 // Minimum and maximum values a `signed long long int' can hold. 1427 1428 // Maximum value an `unsigned long long int' can hold. (Minimum is 0). 1429 1430 // This administrivia gets added to the end of limits.h 1431 // if the system has its own version of limits.h. 1432 1433 type z_crc_t = uint32 /* zconf.h:429:17 */ 1434 1435 // Seconds since the Epoch, visible to user code when time_t is too 1436 // narrow only for consistency with the old way of widening too-narrow 1437 // types. User code should never use __time64_t. 1438 1439 type u_char = uint8 /* types.h:33:18 */ 1440 type u_short = uint16 /* types.h:34:19 */ 1441 type u_int = uint32 /* types.h:35:17 */ 1442 type u_long = uint64 /* types.h:36:18 */ 1443 type quad_t = int64 /* types.h:37:18 */ 1444 type u_quad_t = uint64 /* types.h:38:20 */ 1445 type fsid_t = struct{ __val [2]int32 } /* types.h:39:18 */ 1446 type loff_t = int64 /* types.h:42:18 */ 1447 1448 type ino_t = uint64 /* types.h:49:19 */ 1449 type ino64_t = uint64 /* types.h:54:19 */ 1450 1451 type dev_t = uint64 /* types.h:59:17 */ 1452 1453 type gid_t = uint32 /* types.h:64:17 */ 1454 1455 type mode_t = uint32 /* types.h:69:18 */ 1456 1457 type nlink_t = uint64 /* types.h:74:19 */ 1458 1459 type uid_t = uint32 /* types.h:79:17 */ 1460 1461 type off_t = int64 /* types.h:87:19 */ 1462 type off64_t = int64 /* types.h:92:19 */ 1463 1464 type pid_t = int32 /* types.h:97:17 */ 1465 1466 type id_t = uint32 /* types.h:103:16 */ 1467 1468 type ssize_t = int64 /* types.h:108:19 */ 1469 1470 type daddr_t = int32 /* types.h:114:19 */ 1471 type caddr_t = uintptr /* types.h:115:19 */ 1472 1473 type key_t = int32 /* types.h:121:17 */ 1474 1475 // bits/types.h -- definitions of __*_t types underlying *_t types. 1476 // Copyright (C) 2002-2020 Free Software Foundation, Inc. 1477 // This file is part of the GNU C Library. 1478 // 1479 // The GNU C Library is free software; you can redistribute it and/or 1480 // modify it under the terms of the GNU Lesser General Public 1481 // License as published by the Free Software Foundation; either 1482 // version 2.1 of the License, or (at your option) any later version. 1483 // 1484 // The GNU C Library is distributed in the hope that it will be useful, 1485 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1486 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1487 // Lesser General Public License for more details. 1488 // 1489 // You should have received a copy of the GNU Lesser General Public 1490 // License along with the GNU C Library; if not, see 1491 // <https://www.gnu.org/licenses/>. 1492 1493 // Never include this file directly; use <sys/types.h> instead. 1494 1495 // Returned by `clock'. 1496 type clock_t = int64 /* clock_t.h:7:19 */ 1497 1498 // bits/types.h -- definitions of __*_t types underlying *_t types. 1499 // Copyright (C) 2002-2020 Free Software Foundation, Inc. 1500 // This file is part of the GNU C Library. 1501 // 1502 // The GNU C Library is free software; you can redistribute it and/or 1503 // modify it under the terms of the GNU Lesser General Public 1504 // License as published by the Free Software Foundation; either 1505 // version 2.1 of the License, or (at your option) any later version. 1506 // 1507 // The GNU C Library is distributed in the hope that it will be useful, 1508 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1509 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1510 // Lesser General Public License for more details. 1511 // 1512 // You should have received a copy of the GNU Lesser General Public 1513 // License along with the GNU C Library; if not, see 1514 // <https://www.gnu.org/licenses/>. 1515 1516 // Never include this file directly; use <sys/types.h> instead. 1517 1518 // Clock ID used in clock and timer functions. 1519 type clockid_t = int32 /* clockid_t.h:7:21 */ 1520 1521 // bits/types.h -- definitions of __*_t types underlying *_t types. 1522 // Copyright (C) 2002-2020 Free Software Foundation, Inc. 1523 // This file is part of the GNU C Library. 1524 // 1525 // The GNU C Library is free software; you can redistribute it and/or 1526 // modify it under the terms of the GNU Lesser General Public 1527 // License as published by the Free Software Foundation; either 1528 // version 2.1 of the License, or (at your option) any later version. 1529 // 1530 // The GNU C Library is distributed in the hope that it will be useful, 1531 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1532 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1533 // Lesser General Public License for more details. 1534 // 1535 // You should have received a copy of the GNU Lesser General Public 1536 // License along with the GNU C Library; if not, see 1537 // <https://www.gnu.org/licenses/>. 1538 1539 // Never include this file directly; use <sys/types.h> instead. 1540 1541 // Returned by `time'. 1542 type time_t = int64 /* time_t.h:7:18 */ 1543 1544 // bits/types.h -- definitions of __*_t types underlying *_t types. 1545 // Copyright (C) 2002-2020 Free Software Foundation, Inc. 1546 // This file is part of the GNU C Library. 1547 // 1548 // The GNU C Library is free software; you can redistribute it and/or 1549 // modify it under the terms of the GNU Lesser General Public 1550 // License as published by the Free Software Foundation; either 1551 // version 2.1 of the License, or (at your option) any later version. 1552 // 1553 // The GNU C Library is distributed in the hope that it will be useful, 1554 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1555 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1556 // Lesser General Public License for more details. 1557 // 1558 // You should have received a copy of the GNU Lesser General Public 1559 // License along with the GNU C Library; if not, see 1560 // <https://www.gnu.org/licenses/>. 1561 1562 // Never include this file directly; use <sys/types.h> instead. 1563 1564 // Timer ID returned by `timer_create'. 1565 type timer_t = uintptr /* timer_t.h:7:19 */ 1566 1567 // Copyright (C) 1989-2020 Free Software Foundation, Inc. 1568 // 1569 // This file is part of GCC. 1570 // 1571 // GCC is free software; you can redistribute it and/or modify 1572 // it under the terms of the GNU General Public License as published by 1573 // the Free Software Foundation; either version 3, or (at your option) 1574 // any later version. 1575 // 1576 // GCC is distributed in the hope that it will be useful, 1577 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1578 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1579 // GNU General Public License for more details. 1580 // 1581 // Under Section 7 of GPL version 3, you are granted additional 1582 // permissions described in the GCC Runtime Library Exception, version 1583 // 3.1, as published by the Free Software Foundation. 1584 // 1585 // You should have received a copy of the GNU General Public License and 1586 // a copy of the GCC Runtime Library Exception along with this program; 1587 // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 1588 // <http://www.gnu.org/licenses/>. 1589 1590 // ISO C Standard: 7.17 Common definitions <stddef.h> 1591 1592 // Any one of these symbols __need_* means that GNU libc 1593 // wants us just to define one data type. So don't define 1594 // the symbols that indicate this file's entire job has been done. 1595 1596 // This avoids lossage on SunOS but only if stdtypes.h comes first. 1597 // There's no way to win with the other order! Sun lossage. 1598 1599 // Sequent's header files use _PTRDIFF_T_ in some conflicting way. 1600 // Just ignore it. 1601 1602 // On VxWorks, <type/vxTypesBase.h> may have defined macros like 1603 // _TYPE_size_t which will typedef size_t. fixincludes patched the 1604 // vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is 1605 // not defined, and so that defining this macro defines _GCC_SIZE_T. 1606 // If we find that the macros are still defined at this point, we must 1607 // invoke them so that the type is defined as expected. 1608 1609 // In case nobody has defined these types, but we aren't running under 1610 // GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and 1611 // __WCHAR_TYPE__ have reasonable values. This can happen if the 1612 // parts of GCC is compiled by an older compiler, that actually 1613 // include gstddef.h, such as collect2. 1614 1615 // Signed type of difference of two pointers. 1616 1617 // Define this type if we are doing the whole job, 1618 // or if we want this type in particular. 1619 1620 // If this symbol has done its job, get rid of it. 1621 1622 // Unsigned type of `sizeof' something. 1623 1624 // Define this type if we are doing the whole job, 1625 // or if we want this type in particular. 1626 1627 // Wide character type. 1628 // Locale-writers should change this as necessary to 1629 // be big enough to hold unique values not between 0 and 127, 1630 // and not (wchar_t) -1, for each defined multibyte character. 1631 1632 // Define this type if we are doing the whole job, 1633 // or if we want this type in particular. 1634 1635 // A null pointer constant. 1636 1637 // Offset of member MEMBER in a struct of type TYPE. 1638 1639 // Old compatibility names for C types. 1640 type ulong = uint64 /* types.h:148:27 */ 1641 type ushort = uint16 /* types.h:149:28 */ 1642 type uint = uint32 /* types.h:150:22 */ 1643 1644 // These size-specific names are used by some of the inet code. 1645 1646 // Define intN_t types. 1647 // Copyright (C) 2017-2020 Free Software Foundation, Inc. 1648 // This file is part of the GNU C Library. 1649 // 1650 // The GNU C Library is free software; you can redistribute it and/or 1651 // modify it under the terms of the GNU Lesser General Public 1652 // License as published by the Free Software Foundation; either 1653 // version 2.1 of the License, or (at your option) any later version. 1654 // 1655 // The GNU C Library is distributed in the hope that it will be useful, 1656 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1657 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1658 // Lesser General Public License for more details. 1659 // 1660 // You should have received a copy of the GNU Lesser General Public 1661 // License along with the GNU C Library; if not, see 1662 // <https://www.gnu.org/licenses/>. 1663 1664 // bits/types.h -- definitions of __*_t types underlying *_t types. 1665 // Copyright (C) 2002-2020 Free Software Foundation, Inc. 1666 // This file is part of the GNU C Library. 1667 // 1668 // The GNU C Library is free software; you can redistribute it and/or 1669 // modify it under the terms of the GNU Lesser General Public 1670 // License as published by the Free Software Foundation; either 1671 // version 2.1 of the License, or (at your option) any later version. 1672 // 1673 // The GNU C Library is distributed in the hope that it will be useful, 1674 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1675 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1676 // Lesser General Public License for more details. 1677 // 1678 // You should have received a copy of the GNU Lesser General Public 1679 // License along with the GNU C Library; if not, see 1680 // <https://www.gnu.org/licenses/>. 1681 1682 // Never include this file directly; use <sys/types.h> instead. 1683 1684 type int8_t = int8 /* stdint-intn.h:24:18 */ 1685 type int16_t = int16 /* stdint-intn.h:25:19 */ 1686 type int32_t = int32 /* stdint-intn.h:26:19 */ 1687 type int64_t = int64 /* stdint-intn.h:27:19 */ 1688 1689 // These were defined by ISO C without the first `_'. 1690 type u_int8_t = uint8 /* types.h:158:19 */ 1691 type u_int16_t = uint16 /* types.h:159:20 */ 1692 type u_int32_t = uint32 /* types.h:160:20 */ 1693 type u_int64_t = uint64 /* types.h:161:20 */ 1694 1695 type register_t = int32 /* types.h:164:13 */ 1696 1697 // A set of signals to be blocked, unblocked, or waited for. 1698 type sigset_t = struct{ __val [16]uint64 } /* sigset_t.h:7:20 */ 1699 1700 // Get definition of timer specification structures. 1701 1702 // bits/types.h -- definitions of __*_t types underlying *_t types. 1703 // Copyright (C) 2002-2020 Free Software Foundation, Inc. 1704 // This file is part of the GNU C Library. 1705 // 1706 // The GNU C Library is free software; you can redistribute it and/or 1707 // modify it under the terms of the GNU Lesser General Public 1708 // License as published by the Free Software Foundation; either 1709 // version 2.1 of the License, or (at your option) any later version. 1710 // 1711 // The GNU C Library is distributed in the hope that it will be useful, 1712 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1713 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1714 // Lesser General Public License for more details. 1715 // 1716 // You should have received a copy of the GNU Lesser General Public 1717 // License along with the GNU C Library; if not, see 1718 // <https://www.gnu.org/licenses/>. 1719 1720 // Never include this file directly; use <sys/types.h> instead. 1721 1722 // A time value that is accurate to the nearest 1723 // microsecond but also has a range of years. 1724 type timeval = struct { 1725 tv_sec int64 1726 tv_usec int64 1727 } /* struct_timeval.h:8:1 */ 1728 1729 // NB: Include guard matches what <linux/time.h> uses. 1730 1731 // bits/types.h -- definitions of __*_t types underlying *_t types. 1732 // Copyright (C) 2002-2020 Free Software Foundation, Inc. 1733 // This file is part of the GNU C Library. 1734 // 1735 // The GNU C Library is free software; you can redistribute it and/or 1736 // modify it under the terms of the GNU Lesser General Public 1737 // License as published by the Free Software Foundation; either 1738 // version 2.1 of the License, or (at your option) any later version. 1739 // 1740 // The GNU C Library is distributed in the hope that it will be useful, 1741 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1742 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1743 // Lesser General Public License for more details. 1744 // 1745 // You should have received a copy of the GNU Lesser General Public 1746 // License along with the GNU C Library; if not, see 1747 // <https://www.gnu.org/licenses/>. 1748 1749 // Never include this file directly; use <sys/types.h> instead. 1750 1751 // Endian macros for string.h functions 1752 // Copyright (C) 1992-2020 Free Software Foundation, Inc. 1753 // This file is part of the GNU C Library. 1754 // 1755 // The GNU C Library is free software; you can redistribute it and/or 1756 // modify it under the terms of the GNU Lesser General Public 1757 // License as published by the Free Software Foundation; either 1758 // version 2.1 of the License, or (at your option) any later version. 1759 // 1760 // The GNU C Library is distributed in the hope that it will be useful, 1761 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1762 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1763 // Lesser General Public License for more details. 1764 // 1765 // You should have received a copy of the GNU Lesser General Public 1766 // License along with the GNU C Library; if not, see 1767 // <http://www.gnu.org/licenses/>. 1768 1769 // POSIX.1b structure for a time value. This is like a `struct timeval' but 1770 // has nanoseconds instead of microseconds. 1771 type timespec = struct { 1772 tv_sec int64 1773 tv_nsec int64 1774 } /* struct_timespec.h:10:1 */ 1775 1776 type suseconds_t = int64 /* select.h:43:23 */ 1777 1778 // Some versions of <linux/posix_types.h> define this macros. 1779 // It's easier to assume 8-bit bytes than to get CHAR_BIT. 1780 1781 // fd_set for select and pselect. 1782 type fd_set = struct{ __fds_bits [16]int64 } /* select.h:70:5 */ 1783 1784 // Maximum number of file descriptors in `fd_set'. 1785 1786 // Sometimes the fd_set member is assumed to have this type. 1787 type fd_mask = int64 /* select.h:77:19 */ 1788 1789 // Define some inlines helping to catch common problems. 1790 1791 type blksize_t = int64 /* types.h:185:21 */ 1792 1793 // Types from the Large File Support interface. 1794 type blkcnt_t = int64 /* types.h:205:22 */ // Type to count number of disk blocks. 1795 type fsblkcnt_t = uint64 /* types.h:209:24 */ // Type to count file system blocks. 1796 type fsfilcnt_t = uint64 /* types.h:213:24 */ // Type to count file system inodes. 1797 1798 type blkcnt64_t = int64 /* types.h:219:22 */ // Type to count number of disk blocks. 1799 type fsblkcnt64_t = uint64 /* types.h:220:24 */ // Type to count file system blocks. 1800 type fsfilcnt64_t = uint64 /* types.h:221:24 */ // Type to count file system inodes. 1801 1802 // Now add the thread types. 1803 // Declaration of common pthread types for all architectures. 1804 // Copyright (C) 2017-2020 Free Software Foundation, Inc. 1805 // This file is part of the GNU C Library. 1806 // 1807 // The GNU C Library is free software; you can redistribute it and/or 1808 // modify it under the terms of the GNU Lesser General Public 1809 // License as published by the Free Software Foundation; either 1810 // version 2.1 of the License, or (at your option) any later version. 1811 // 1812 // The GNU C Library is distributed in the hope that it will be useful, 1813 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1814 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1815 // Lesser General Public License for more details. 1816 // 1817 // You should have received a copy of the GNU Lesser General Public 1818 // License along with the GNU C Library; if not, see 1819 // <https://www.gnu.org/licenses/>. 1820 1821 // For internal mutex and condition variable definitions. 1822 // Common threading primitives definitions for both POSIX and C11. 1823 // Copyright (C) 2017-2020 Free Software Foundation, Inc. 1824 // This file is part of the GNU C Library. 1825 // 1826 // The GNU C Library is free software; you can redistribute it and/or 1827 // modify it under the terms of the GNU Lesser General Public 1828 // License as published by the Free Software Foundation; either 1829 // version 2.1 of the License, or (at your option) any later version. 1830 // 1831 // The GNU C Library is distributed in the hope that it will be useful, 1832 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1833 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1834 // Lesser General Public License for more details. 1835 // 1836 // You should have received a copy of the GNU Lesser General Public 1837 // License along with the GNU C Library; if not, see 1838 // <https://www.gnu.org/licenses/>. 1839 1840 // Arch-specific definitions. Each architecture must define the following 1841 // macros to define the expected sizes of pthread data types: 1842 // 1843 // __SIZEOF_PTHREAD_ATTR_T - size of pthread_attr_t. 1844 // __SIZEOF_PTHREAD_MUTEX_T - size of pthread_mutex_t. 1845 // __SIZEOF_PTHREAD_MUTEXATTR_T - size of pthread_mutexattr_t. 1846 // __SIZEOF_PTHREAD_COND_T - size of pthread_cond_t. 1847 // __SIZEOF_PTHREAD_CONDATTR_T - size of pthread_condattr_t. 1848 // __SIZEOF_PTHREAD_RWLOCK_T - size of pthread_rwlock_t. 1849 // __SIZEOF_PTHREAD_RWLOCKATTR_T - size of pthread_rwlockattr_t. 1850 // __SIZEOF_PTHREAD_BARRIER_T - size of pthread_barrier_t. 1851 // __SIZEOF_PTHREAD_BARRIERATTR_T - size of pthread_barrierattr_t. 1852 // 1853 // The additional macro defines any constraint for the lock alignment 1854 // inside the thread structures: 1855 // 1856 // __LOCK_ALIGNMENT - for internal lock/futex usage. 1857 // 1858 // Same idea but for the once locking primitive: 1859 // 1860 // __ONCE_ALIGNMENT - for pthread_once_t/once_flag definition. 1861 1862 // Machine-specific pthread type layouts. Generic version. 1863 // Copyright (C) 2019-2020 Free Software Foundation, Inc. 1864 // 1865 // This file is part of the GNU C Library. 1866 // 1867 // The GNU C Library is free software; you can redistribute it and/or 1868 // modify it under the terms of the GNU Lesser General Public 1869 // License as published by the Free Software Foundation; either 1870 // version 2.1 of the License, or (at your option) any later version. 1871 // 1872 // The GNU C Library is distributed in the hope that it will be useful, 1873 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1874 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1875 // Lesser General Public License for more details. 1876 // 1877 // You should have received a copy of the GNU Lesser General Public 1878 // License along with the GNU C Library; if not, see 1879 // <http://www.gnu.org/licenses/>. 1880 1881 // Determine the wordsize from the preprocessor defines. 1882 1883 // Common definition of pthread_mutex_t. 1884 1885 type __pthread_internal_list = struct { 1886 __prev uintptr 1887 __next uintptr 1888 } /* thread-shared-types.h:49:9 */ 1889 1890 type __pthread_internal_slist = struct{ __next uintptr } /* thread-shared-types.h:55:9 */ 1891 1892 // Arch-specific mutex definitions. A generic implementation is provided 1893 // by sysdeps/nptl/bits/struct_mutex.h. If required, an architecture 1894 // can override it by defining: 1895 // 1896 // 1. struct __pthread_mutex_s (used on both pthread_mutex_t and mtx_t 1897 // definition). It should contains at least the internal members 1898 // defined in the generic version. 1899 // 1900 // 2. __LOCK_ALIGNMENT for any extra attribute for internal lock used with 1901 // atomic operations. 1902 // 1903 // 3. The macro __PTHREAD_MUTEX_INITIALIZER used for static initialization. 1904 // It should initialize the mutex internal flag. 1905 1906 // PowerPC internal mutex struct definitions. 1907 // Copyright (C) 2019-2020 Free Software Foundation, Inc. 1908 // This file is part of the GNU C Library. 1909 // 1910 // The GNU C Library is free software; you can redistribute it and/or 1911 // modify it under the terms of the GNU Lesser General Public 1912 // License as published by the Free Software Foundation; either 1913 // version 2.1 of the License, or (at your option) any later version. 1914 // 1915 // The GNU C Library is distributed in the hope that it will be useful, 1916 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1917 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1918 // Lesser General Public License for more details. 1919 // 1920 // You should have received a copy of the GNU Lesser General Public 1921 // License along with the GNU C Library; if not, see 1922 // <http://www.gnu.org/licenses/>. 1923 1924 type __pthread_mutex_s = struct { 1925 __lock int32 1926 __count uint32 1927 __owner int32 1928 __nusers uint32 1929 __kind int32 1930 __spins int16 1931 __elision int16 1932 __list struct { 1933 __prev uintptr 1934 __next uintptr 1935 } 1936 } /* struct_mutex.h:22:1 */ 1937 1938 // Arch-sepecific read-write lock definitions. A generic implementation is 1939 // provided by struct_rwlock.h. If required, an architecture can override it 1940 // by defining: 1941 // 1942 // 1. struct __pthread_rwlock_arch_t (used on pthread_rwlock_t definition). 1943 // It should contain at least the internal members defined in the 1944 // generic version. 1945 // 1946 // 2. The macro __PTHREAD_RWLOCK_INITIALIZER used for static initialization. 1947 // It should initialize the rwlock internal type. 1948 1949 // PowerPC internal rwlock struct definitions. 1950 // Copyright (C) 2019-2020 Free Software Foundation, Inc. 1951 // 1952 // This file is part of the GNU C Library. 1953 // 1954 // The GNU C Library is free software; you can redistribute it and/or 1955 // modify it under the terms of the GNU Lesser General Public 1956 // License as published by the Free Software Foundation; either 1957 // version 2.1 of the License, or (at your option) any later version. 1958 // 1959 // The GNU C Library is distributed in the hope that it will be useful, 1960 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1961 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1962 // Lesser General Public License for more details. 1963 // 1964 // You should have received a copy of the GNU Lesser General Public 1965 // License along with the GNU C Library; if not, see 1966 // <http://www.gnu.org/licenses/>. 1967 1968 type __pthread_rwlock_arch_t = struct { 1969 __readers uint32 1970 __writers uint32 1971 __wrphase_futex uint32 1972 __writers_futex uint32 1973 __pad3 uint32 1974 __pad4 uint32 1975 __cur_writer int32 1976 __shared int32 1977 __rwelision uint8 1978 __pad1 [7]uint8 1979 __pad2 uint64 1980 __flags uint32 1981 _ [4]byte 1982 } /* struct_rwlock.h:23:1 */ 1983 1984 // Common definition of pthread_cond_t. 1985 1986 type __pthread_cond_s = struct { 1987 __0 struct{ __wseq uint64 } 1988 __8 struct{ __g1_start uint64 } 1989 __g_refs [2]uint32 1990 __g_size [2]uint32 1991 __g1_orig_size uint32 1992 __wrefs uint32 1993 __g_signals [2]uint32 1994 } /* thread-shared-types.h:92:1 */ 1995 1996 // Thread identifiers. The structure of the attribute type is not 1997 // exposed on purpose. 1998 type pthread_t = uint64 /* pthreadtypes.h:27:27 */ 1999 2000 // Data structures for mutex handling. The structure of the attribute 2001 // type is not exposed on purpose. 2002 type pthread_mutexattr_t = struct { 2003 _ [0]uint32 2004 __size [4]uint8 2005 } /* pthreadtypes.h:36:3 */ 2006 2007 // Data structure for condition variable handling. The structure of 2008 // the attribute type is not exposed on purpose. 2009 type pthread_condattr_t = struct { 2010 _ [0]uint32 2011 __size [4]uint8 2012 } /* pthreadtypes.h:45:3 */ 2013 2014 // Keys for thread-specific data 2015 type pthread_key_t = uint32 /* pthreadtypes.h:49:22 */ 2016 2017 // Once-only execution 2018 type pthread_once_t = int32 /* pthreadtypes.h:53:30 */ 2019 2020 type pthread_attr_t1 = struct { 2021 _ [0]uint64 2022 __size [56]uint8 2023 } /* pthreadtypes.h:56:1 */ 2024 2025 type pthread_attr_t = pthread_attr_t1 /* pthreadtypes.h:62:30 */ 2026 2027 type pthread_mutex_t = struct{ __data __pthread_mutex_s } /* pthreadtypes.h:72:3 */ 2028 2029 type pthread_cond_t = struct{ __data __pthread_cond_s } /* pthreadtypes.h:80:3 */ 2030 2031 // Data structure for reader-writer lock variable handling. The 2032 // structure of the attribute type is deliberately not exposed. 2033 type pthread_rwlock_t = struct{ __data __pthread_rwlock_arch_t } /* pthreadtypes.h:91:3 */ 2034 2035 type pthread_rwlockattr_t = struct { 2036 _ [0]uint64 2037 __size [8]uint8 2038 } /* pthreadtypes.h:97:3 */ 2039 2040 // POSIX spinlock data type. 2041 type pthread_spinlock_t = int32 /* pthreadtypes.h:103:22 */ 2042 2043 // POSIX barriers data type. The structure of the type is 2044 // deliberately not exposed. 2045 type pthread_barrier_t = struct { 2046 _ [0]uint64 2047 __size [32]uint8 2048 } /* pthreadtypes.h:112:3 */ 2049 2050 type pthread_barrierattr_t = struct { 2051 _ [0]uint32 2052 __size [4]uint8 2053 } /* pthreadtypes.h:118:3 */ 2054 2055 // Define the standard macros for the user, 2056 // if this invocation was from the user program. 2057 2058 // Define va_list, if desired, from __gnuc_va_list. 2059 // We deliberately do not define va_list when called from 2060 // stdio.h, because ANSI C says that stdio.h is not supposed to define 2061 // va_list. stdio.h needs to have access to that data type, 2062 // but must not use that name. It should use the name __gnuc_va_list, 2063 // which is safe because it is reserved for the implementation. 2064 2065 // The macro _VA_LIST_ is the same thing used by this file in Ultrix. 2066 // But on BSD NET2 we must not test or define or undef it. 2067 // (Note that the comments in NET 2's ansi.h 2068 // are incorrect for _VA_LIST_--see stdio.h!) 2069 // The macro _VA_LIST_DEFINED is used in Windows NT 3.5 2070 // The macro _VA_LIST is used in SCO Unix 3.2. 2071 // The macro _VA_LIST_T_H is used in the Bull dpx2 2072 // The macro __va_list__ is used by BeOS. 2073 type va_list = uintptr /* stdarg.h:99:24 */ 2074 2075 // a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and 2076 // "#define _LARGEFILE64_SOURCE 1" as requesting 64-bit operations, (even 2077 // though the former does not conform to the LFS document), but considering 2078 // both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as 2079 // equivalently requesting no 64-bit operations 2080 2081 // Copyright (C) 1991-2020 Free Software Foundation, Inc. 2082 // This file is part of the GNU C Library. 2083 // 2084 // The GNU C Library is free software; you can redistribute it and/or 2085 // modify it under the terms of the GNU Lesser General Public 2086 // License as published by the Free Software Foundation; either 2087 // version 2.1 of the License, or (at your option) any later version. 2088 // 2089 // The GNU C Library is distributed in the hope that it will be useful, 2090 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2091 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2092 // Lesser General Public License for more details. 2093 // 2094 // You should have received a copy of the GNU Lesser General Public 2095 // License along with the GNU C Library; if not, see 2096 // <https://www.gnu.org/licenses/>. 2097 2098 // POSIX Standard: 2.10 Symbolic Constants <unistd.h> 2099 2100 // Copyright (C) 1991-2020 Free Software Foundation, Inc. 2101 // This file is part of the GNU C Library. 2102 // 2103 // The GNU C Library is free software; you can redistribute it and/or 2104 // modify it under the terms of the GNU Lesser General Public 2105 // License as published by the Free Software Foundation; either 2106 // version 2.1 of the License, or (at your option) any later version. 2107 // 2108 // The GNU C Library is distributed in the hope that it will be useful, 2109 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2110 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2111 // Lesser General Public License for more details. 2112 // 2113 // You should have received a copy of the GNU Lesser General Public 2114 // License along with the GNU C Library; if not, see 2115 // <https://www.gnu.org/licenses/>. 2116 2117 // These may be used to determine what facilities are present at compile time. 2118 // Their values can be obtained at run time from `sysconf'. 2119 2120 // POSIX Standard approved as ISO/IEC 9945-1 as of September 2008. 2121 2122 // These are not #ifdef __USE_POSIX2 because they are 2123 // in the theoretically application-owned namespace. 2124 2125 // The utilities on GNU systems also correspond to this version. 2126 2127 // The utilities on GNU systems also correspond to this version. 2128 2129 // This symbol was required until the 2001 edition of POSIX. 2130 2131 // If defined, the implementation supports the 2132 // C Language Bindings Option. 2133 2134 // If defined, the implementation supports the 2135 // C Language Development Utilities Option. 2136 2137 // If defined, the implementation supports the 2138 // Software Development Utilities Option. 2139 2140 // If defined, the implementation supports the 2141 // creation of locales with the localedef utility. 2142 2143 // X/Open version number to which the library conforms. It is selectable. 2144 2145 // Commands and utilities from XPG4 are available. 2146 2147 // We are compatible with the old published standards as well. 2148 2149 // The X/Open Unix extensions are available. 2150 2151 // The enhanced internationalization capabilities according to XPG4.2 2152 // are present. 2153 2154 // The legacy interfaces are also available. 2155 2156 // Get values of POSIX options: 2157 // 2158 // If these symbols are defined, the corresponding features are 2159 // always available. If not, they may be available sometimes. 2160 // The current values can be obtained with `sysconf'. 2161 // 2162 // _POSIX_JOB_CONTROL Job control is supported. 2163 // _POSIX_SAVED_IDS Processes have a saved set-user-ID 2164 // and a saved set-group-ID. 2165 // _POSIX_REALTIME_SIGNALS Real-time, queued signals are supported. 2166 // _POSIX_PRIORITY_SCHEDULING Priority scheduling is supported. 2167 // _POSIX_TIMERS POSIX.4 clocks and timers are supported. 2168 // _POSIX_ASYNCHRONOUS_IO Asynchronous I/O is supported. 2169 // _POSIX_PRIORITIZED_IO Prioritized asynchronous I/O is supported. 2170 // _POSIX_SYNCHRONIZED_IO Synchronizing file data is supported. 2171 // _POSIX_FSYNC The fsync function is present. 2172 // _POSIX_MAPPED_FILES Mapping of files to memory is supported. 2173 // _POSIX_MEMLOCK Locking of all memory is supported. 2174 // _POSIX_MEMLOCK_RANGE Locking of ranges of memory is supported. 2175 // _POSIX_MEMORY_PROTECTION Setting of memory protections is supported. 2176 // _POSIX_MESSAGE_PASSING POSIX.4 message queues are supported. 2177 // _POSIX_SEMAPHORES POSIX.4 counting semaphores are supported. 2178 // _POSIX_SHARED_MEMORY_OBJECTS POSIX.4 shared memory objects are supported. 2179 // _POSIX_THREADS POSIX.1c pthreads are supported. 2180 // _POSIX_THREAD_ATTR_STACKADDR Thread stack address attribute option supported. 2181 // _POSIX_THREAD_ATTR_STACKSIZE Thread stack size attribute option supported. 2182 // _POSIX_THREAD_SAFE_FUNCTIONS Thread-safe functions are supported. 2183 // _POSIX_THREAD_PRIORITY_SCHEDULING 2184 // POSIX.1c thread execution scheduling supported. 2185 // _POSIX_THREAD_PRIO_INHERIT Thread priority inheritance option supported. 2186 // _POSIX_THREAD_PRIO_PROTECT Thread priority protection option supported. 2187 // _POSIX_THREAD_PROCESS_SHARED Process-shared synchronization supported. 2188 // _POSIX_PII Protocol-independent interfaces are supported. 2189 // _POSIX_PII_XTI XTI protocol-indep. interfaces are supported. 2190 // _POSIX_PII_SOCKET Socket protocol-indep. interfaces are supported. 2191 // _POSIX_PII_INTERNET Internet family of protocols supported. 2192 // _POSIX_PII_INTERNET_STREAM Connection-mode Internet protocol supported. 2193 // _POSIX_PII_INTERNET_DGRAM Connectionless Internet protocol supported. 2194 // _POSIX_PII_OSI ISO/OSI family of protocols supported. 2195 // _POSIX_PII_OSI_COTS Connection-mode ISO/OSI service supported. 2196 // _POSIX_PII_OSI_CLTS Connectionless ISO/OSI service supported. 2197 // _POSIX_POLL Implementation supports `poll' function. 2198 // _POSIX_SELECT Implementation supports `select' and `pselect'. 2199 // 2200 // _XOPEN_REALTIME X/Open realtime support is available. 2201 // _XOPEN_REALTIME_THREADS X/Open realtime thread support is available. 2202 // _XOPEN_SHM Shared memory interface according to XPG4.2. 2203 // 2204 // _XBS5_ILP32_OFF32 Implementation provides environment with 32-bit 2205 // int, long, pointer, and off_t types. 2206 // _XBS5_ILP32_OFFBIG Implementation provides environment with 32-bit 2207 // int, long, and pointer and off_t with at least 2208 // 64 bits. 2209 // _XBS5_LP64_OFF64 Implementation provides environment with 32-bit 2210 // int, and 64-bit long, pointer, and off_t types. 2211 // _XBS5_LPBIG_OFFBIG Implementation provides environment with at 2212 // least 32 bits int and long, pointer, and off_t 2213 // with at least 64 bits. 2214 // 2215 // If any of these symbols is defined as -1, the corresponding option is not 2216 // true for any file. If any is defined as other than -1, the corresponding 2217 // option is true for all files. If a symbol is not defined at all, the value 2218 // for a specific file can be obtained from `pathconf' and `fpathconf'. 2219 // 2220 // _POSIX_CHOWN_RESTRICTED Only the super user can use `chown' to change 2221 // the owner of a file. `chown' can only be used 2222 // to change the group ID of a file to a group of 2223 // which the calling process is a member. 2224 // _POSIX_NO_TRUNC Pathname components longer than 2225 // NAME_MAX generate an error. 2226 // _POSIX_VDISABLE If defined, if the value of an element of the 2227 // `c_cc' member of `struct termios' is 2228 // _POSIX_VDISABLE, no character will have the 2229 // effect associated with that element. 2230 // _POSIX_SYNC_IO Synchronous I/O may be performed. 2231 // _POSIX_ASYNC_IO Asynchronous I/O may be performed. 2232 // _POSIX_PRIO_IO Prioritized Asynchronous I/O may be performed. 2233 // 2234 // Support for the Large File Support interface is not generally available. 2235 // If it is available the following constants are defined to one. 2236 // _LFS64_LARGEFILE Low-level I/O supports large files. 2237 // _LFS64_STDIO Standard I/O supports large files. 2238 // 2239 2240 // Define POSIX options for Linux. 2241 // Copyright (C) 1996-2020 Free Software Foundation, Inc. 2242 // This file is part of the GNU C Library. 2243 // 2244 // The GNU C Library is free software; you can redistribute it and/or 2245 // modify it under the terms of the GNU Lesser General Public License as 2246 // published by the Free Software Foundation; either version 2.1 of the 2247 // License, or (at your option) any later version. 2248 // 2249 // The GNU C Library is distributed in the hope that it will be useful, 2250 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2251 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2252 // Lesser General Public License for more details. 2253 // 2254 // You should have received a copy of the GNU Lesser General Public 2255 // License along with the GNU C Library; see the file COPYING.LIB. If 2256 // not, see <https://www.gnu.org/licenses/>. 2257 2258 // Job control is supported. 2259 2260 // Processes have a saved set-user-ID and a saved set-group-ID. 2261 2262 // Priority scheduling is not supported with the correct semantics, 2263 // but GNU/Linux applications expect that the corresponding interfaces 2264 // are available, even though the semantics do not meet the POSIX 2265 // requirements. See glibc bug 14829. 2266 2267 // Synchronizing file data is supported. 2268 2269 // The fsync function is present. 2270 2271 // Mapping of files to memory is supported. 2272 2273 // Locking of all memory is supported. 2274 2275 // Locking of ranges of memory is supported. 2276 2277 // Setting of memory protections is supported. 2278 2279 // Some filesystems allow all users to change file ownership. 2280 2281 // `c_cc' member of 'struct termios' structure can be disabled by 2282 // using the value _POSIX_VDISABLE. 2283 2284 // Filenames are not silently truncated. 2285 2286 // X/Open realtime support is available. 2287 2288 // X/Open thread realtime support is available. 2289 2290 // XPG4.2 shared memory is supported. 2291 2292 // Tell we have POSIX threads. 2293 2294 // We have the reentrant functions described in POSIX. 2295 2296 // We provide priority scheduling for threads. 2297 2298 // We support user-defined stack sizes. 2299 2300 // We support user-defined stacks. 2301 2302 // We support priority inheritence. 2303 2304 // We support priority protection, though only for non-robust 2305 // mutexes. 2306 2307 // We support priority inheritence for robust mutexes. 2308 2309 // We do not support priority protection for robust mutexes. 2310 2311 // We support POSIX.1b semaphores. 2312 2313 // Real-time signals are supported. 2314 2315 // We support asynchronous I/O. 2316 // Alternative name for Unix98. 2317 // Support for prioritization is also available. 2318 2319 // The LFS support in asynchronous I/O is also available. 2320 2321 // The rest of the LFS is also available. 2322 2323 // POSIX shared memory objects are implemented. 2324 2325 // CPU-time clocks support needs to be checked at runtime. 2326 2327 // Clock support in threads must be also checked at runtime. 2328 2329 // GNU libc provides regular expression handling. 2330 2331 // Reader/Writer locks are available. 2332 2333 // We have a POSIX shell. 2334 2335 // We support the Timeouts option. 2336 2337 // We support spinlocks. 2338 2339 // The `spawn' function family is supported. 2340 2341 // We have POSIX timers. 2342 2343 // The barrier functions are available. 2344 2345 // POSIX message queues are available. 2346 2347 // Thread process-shared synchronization is supported. 2348 2349 // The monotonic clock might be available. 2350 2351 // The clock selection interfaces are available. 2352 2353 // Advisory information interfaces are available. 2354 2355 // IPv6 support is available. 2356 2357 // Raw socket support is available. 2358 2359 // We have at least one terminal. 2360 2361 // Neither process nor thread sporadic server interfaces is available. 2362 2363 // trace.h is not available. 2364 2365 // Typed memory objects are not available. 2366 2367 // Get the environment definitions from Unix98. 2368 // Copyright (C) 1999-2020 Free Software Foundation, Inc. 2369 // This file is part of the GNU C Library. 2370 // 2371 // The GNU C Library is free software; you can redistribute it and/or 2372 // modify it under the terms of the GNU Lesser General Public 2373 // License as published by the Free Software Foundation; either 2374 // version 2.1 of the License, or (at your option) any later version. 2375 // 2376 // The GNU C Library is distributed in the hope that it will be useful, 2377 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2378 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2379 // Lesser General Public License for more details. 2380 // 2381 // You should have received a copy of the GNU Lesser General Public 2382 // License along with the GNU C Library; if not, see 2383 // <https://www.gnu.org/licenses/>. 2384 2385 // Determine the wordsize from the preprocessor defines. 2386 2387 // This header should define the following symbols under the described 2388 // situations. A value `1' means that the model is always supported, 2389 // `-1' means it is never supported. Undefined means it cannot be 2390 // statically decided. 2391 // 2392 // _POSIX_V7_ILP32_OFF32 32bit int, long, pointers, and off_t type 2393 // _POSIX_V7_ILP32_OFFBIG 32bit int, long, and pointers and larger off_t type 2394 // 2395 // _POSIX_V7_LP64_OFF32 64bit long and pointers and 32bit off_t type 2396 // _POSIX_V7_LPBIG_OFFBIG 64bit long and pointers and large off_t type 2397 // 2398 // The macros _POSIX_V6_ILP32_OFF32, _POSIX_V6_ILP32_OFFBIG, 2399 // _POSIX_V6_LP64_OFF32, _POSIX_V6_LPBIG_OFFBIG, _XBS5_ILP32_OFF32, 2400 // _XBS5_ILP32_OFFBIG, _XBS5_LP64_OFF32, and _XBS5_LPBIG_OFFBIG were 2401 // used in previous versions of the Unix standard and are available 2402 // only for compatibility. 2403 2404 // Environments with 32-bit wide pointers are optionally provided. 2405 // Therefore following macros aren't defined: 2406 // # undef _POSIX_V7_ILP32_OFF32 2407 // # undef _POSIX_V7_ILP32_OFFBIG 2408 // # undef _POSIX_V6_ILP32_OFF32 2409 // # undef _POSIX_V6_ILP32_OFFBIG 2410 // # undef _XBS5_ILP32_OFF32 2411 // # undef _XBS5_ILP32_OFFBIG 2412 // and users need to check at runtime. 2413 2414 // We also have no use (for now) for an environment with bigger pointers 2415 // and offsets. 2416 2417 // By default we have 64-bit wide `long int', pointers and `off_t'. 2418 2419 // Standard file descriptors. 2420 2421 // All functions that are not declared anywhere else. 2422 2423 // bits/types.h -- definitions of __*_t types underlying *_t types. 2424 // Copyright (C) 2002-2020 Free Software Foundation, Inc. 2425 // This file is part of the GNU C Library. 2426 // 2427 // The GNU C Library is free software; you can redistribute it and/or 2428 // modify it under the terms of the GNU Lesser General Public 2429 // License as published by the Free Software Foundation; either 2430 // version 2.1 of the License, or (at your option) any later version. 2431 // 2432 // The GNU C Library is distributed in the hope that it will be useful, 2433 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2434 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2435 // Lesser General Public License for more details. 2436 // 2437 // You should have received a copy of the GNU Lesser General Public 2438 // License along with the GNU C Library; if not, see 2439 // <https://www.gnu.org/licenses/>. 2440 2441 // Never include this file directly; use <sys/types.h> instead. 2442 2443 // Copyright (C) 1989-2020 Free Software Foundation, Inc. 2444 // 2445 // This file is part of GCC. 2446 // 2447 // GCC is free software; you can redistribute it and/or modify 2448 // it under the terms of the GNU General Public License as published by 2449 // the Free Software Foundation; either version 3, or (at your option) 2450 // any later version. 2451 // 2452 // GCC is distributed in the hope that it will be useful, 2453 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2454 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 2455 // GNU General Public License for more details. 2456 // 2457 // Under Section 7 of GPL version 3, you are granted additional 2458 // permissions described in the GCC Runtime Library Exception, version 2459 // 3.1, as published by the Free Software Foundation. 2460 // 2461 // You should have received a copy of the GNU General Public License and 2462 // a copy of the GCC Runtime Library Exception along with this program; 2463 // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 2464 // <http://www.gnu.org/licenses/>. 2465 2466 // ISO C Standard: 7.17 Common definitions <stddef.h> 2467 2468 // Any one of these symbols __need_* means that GNU libc 2469 // wants us just to define one data type. So don't define 2470 // the symbols that indicate this file's entire job has been done. 2471 2472 // This avoids lossage on SunOS but only if stdtypes.h comes first. 2473 // There's no way to win with the other order! Sun lossage. 2474 2475 // Sequent's header files use _PTRDIFF_T_ in some conflicting way. 2476 // Just ignore it. 2477 2478 // On VxWorks, <type/vxTypesBase.h> may have defined macros like 2479 // _TYPE_size_t which will typedef size_t. fixincludes patched the 2480 // vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is 2481 // not defined, and so that defining this macro defines _GCC_SIZE_T. 2482 // If we find that the macros are still defined at this point, we must 2483 // invoke them so that the type is defined as expected. 2484 2485 // In case nobody has defined these types, but we aren't running under 2486 // GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and 2487 // __WCHAR_TYPE__ have reasonable values. This can happen if the 2488 // parts of GCC is compiled by an older compiler, that actually 2489 // include gstddef.h, such as collect2. 2490 2491 // Signed type of difference of two pointers. 2492 2493 // Define this type if we are doing the whole job, 2494 // or if we want this type in particular. 2495 2496 // If this symbol has done its job, get rid of it. 2497 2498 // Unsigned type of `sizeof' something. 2499 2500 // Define this type if we are doing the whole job, 2501 // or if we want this type in particular. 2502 2503 // Wide character type. 2504 // Locale-writers should change this as necessary to 2505 // be big enough to hold unique values not between 0 and 127, 2506 // and not (wchar_t) -1, for each defined multibyte character. 2507 2508 // Define this type if we are doing the whole job, 2509 // or if we want this type in particular. 2510 2511 // A null pointer constant. 2512 2513 // Offset of member MEMBER in a struct of type TYPE. 2514 2515 // The Single Unix specification says that some more types are 2516 // available here. 2517 2518 type useconds_t = uint32 /* unistd.h:255:22 */ 2519 2520 type intptr_t = int64 /* unistd.h:267:20 */ 2521 2522 type socklen_t = uint32 /* unistd.h:274:21 */ 2523 2524 // Define some macros helping to catch buffer overflows. 2525 2526 // System-specific extensions. 2527 // System-specific extensions of <unistd.h>, Linux version. 2528 // Copyright (C) 2019-2020 Free Software Foundation, Inc. 2529 // This file is part of the GNU C Library. 2530 // 2531 // The GNU C Library is free software; you can redistribute it and/or 2532 // modify it under the terms of the GNU Lesser General Public 2533 // License as published by the Free Software Foundation; either 2534 // version 2.1 of the License, or (at your option) any later version. 2535 // 2536 // The GNU C Library is distributed in the hope that it will be useful, 2537 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2538 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2539 // Lesser General Public License for more details. 2540 // 2541 // You should have received a copy of the GNU Lesser General Public 2542 // License along with the GNU C Library; if not, see 2543 // <https://www.gnu.org/licenses/>. 2544 2545 // MVS linker does not support external names larger than 8 bytes 2546 2547 // 2548 // The 'zlib' compression library provides in-memory compression and 2549 // decompression functions, including integrity checks of the uncompressed data. 2550 // This version of the library supports only one compression method (deflation) 2551 // but other algorithms will be added later and will have the same stream 2552 // interface. 2553 // 2554 // Compression can be done in a single step if the buffers are large enough, 2555 // or can be done by repeated calls of the compression function. In the latter 2556 // case, the application must provide more input and/or consume the output 2557 // (providing more output space) before each call. 2558 // 2559 // The compressed data format used by default by the in-memory functions is 2560 // the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped 2561 // around a deflate stream, which is itself documented in RFC 1951. 2562 // 2563 // The library also supports reading and writing files in gzip (.gz) format 2564 // with an interface similar to that of stdio using the functions that start 2565 // with "gz". The gzip format is different from the zlib format. gzip is a 2566 // gzip wrapper, documented in RFC 1952, wrapped around a deflate stream. 2567 // 2568 // This library can optionally read and write gzip and raw deflate streams in 2569 // memory as well. 2570 // 2571 // The zlib format was designed to be compact and fast for use in memory 2572 // and on communications channels. The gzip format was designed for single- 2573 // file compression on file systems, has a larger header than zlib to maintain 2574 // directory information, and uses a different, slower check method than zlib. 2575 // 2576 // The library does not install any signal handler. The decoder checks 2577 // the consistency of the compressed data, so the library should never crash 2578 // even in the case of corrupted input. 2579 2580 type alloc_func = uintptr /* zlib.h:81:16 */ 2581 type free_func = uintptr /* zlib.h:82:16 */ 2582 2583 type z_stream_s = struct { 2584 next_in uintptr 2585 avail_in uInt 2586 _ [4]byte 2587 total_in uLong 2588 next_out uintptr 2589 avail_out uInt 2590 _ [4]byte 2591 total_out uLong 2592 msg uintptr 2593 state uintptr 2594 zalloc alloc_func 2595 zfree free_func 2596 opaque voidpf 2597 data_type int32 2598 _ [4]byte 2599 adler uLong 2600 reserved uLong 2601 } /* zlib.h:86:9 */ 2602 2603 type z_stream = z_stream_s /* zlib.h:106:3 */ 2604 2605 type z_streamp = uintptr /* zlib.h:108:22 */ 2606 2607 // 2608 // gzip header information passed to and from zlib routines. See RFC 1952 2609 // for more details on the meanings of these fields. 2610 type gz_header_s = struct { 2611 text int32 2612 _ [4]byte 2613 time uLong 2614 xflags int32 2615 os int32 2616 extra uintptr 2617 extra_len uInt 2618 extra_max uInt 2619 name uintptr 2620 name_max uInt 2621 _ [4]byte 2622 comment uintptr 2623 comm_max uInt 2624 hcrc int32 2625 done int32 2626 _ [4]byte 2627 } /* zlib.h:114:9 */ 2628 2629 // 2630 // gzip header information passed to and from zlib routines. See RFC 1952 2631 // for more details on the meanings of these fields. 2632 type gz_header = gz_header_s /* zlib.h:129:3 */ 2633 2634 type gz_headerp = uintptr /* zlib.h:131:23 */ 2635 // 2636 // inflateGetHeader() requests that gzip header information be stored in the 2637 // provided gz_header structure. inflateGetHeader() may be called after 2638 // inflateInit2() or inflateReset(), and before the first call of inflate(). 2639 // As inflate() processes the gzip stream, head->done is zero until the header 2640 // is completed, at which time head->done is set to one. If a zlib stream is 2641 // being decoded, then head->done is set to -1 to indicate that there will be 2642 // no gzip header information forthcoming. Note that Z_BLOCK or Z_TREES can be 2643 // used to force inflate() to return immediately after header processing is 2644 // complete and before any actual data is decompressed. 2645 // 2646 // The text, time, xflags, and os fields are filled in with the gzip header 2647 // contents. hcrc is set to true if there is a header CRC. (The header CRC 2648 // was valid if done is set to one.) If extra is not Z_NULL, then extra_max 2649 // contains the maximum number of bytes to write to extra. Once done is true, 2650 // extra_len contains the actual extra field length, and extra contains the 2651 // extra field, or that field truncated if extra_max is less than extra_len. 2652 // If name is not Z_NULL, then up to name_max characters are written there, 2653 // terminated with a zero unless the length is greater than name_max. If 2654 // comment is not Z_NULL, then up to comm_max characters are written there, 2655 // terminated with a zero unless the length is greater than comm_max. When any 2656 // of extra, name, or comment are not Z_NULL and the respective field is not 2657 // present in the header, then that field is set to Z_NULL to signal its 2658 // absence. This allows the use of deflateSetHeader() with the returned 2659 // structure to duplicate the header. However if those fields are set to 2660 // allocated memory, then the application will need to save those pointers 2661 // elsewhere so that they can be eventually freed. 2662 // 2663 // If inflateGetHeader is not used, then the header information is simply 2664 // discarded. The header is always checked for validity, including the header 2665 // CRC if present. inflateReset() will reset the process to discard the header 2666 // information. The application would need to call inflateGetHeader() again to 2667 // retrieve the header from the next gzip stream. 2668 // 2669 // inflateGetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source 2670 // stream state was inconsistent. 2671 2672 // 2673 // ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits, 2674 // unsigned char FAR *window)); 2675 // 2676 // Initialize the internal stream state for decompression using inflateBack() 2677 // calls. The fields zalloc, zfree and opaque in strm must be initialized 2678 // before the call. If zalloc and zfree are Z_NULL, then the default library- 2679 // derived memory allocation routines are used. windowBits is the base two 2680 // logarithm of the window size, in the range 8..15. window is a caller 2681 // supplied buffer of that size. Except for special applications where it is 2682 // assured that deflate was used with small window sizes, windowBits must be 15 2683 // and a 32K byte window must be supplied to be able to decompress general 2684 // deflate streams. 2685 // 2686 // See inflateBack() for the usage of these routines. 2687 // 2688 // inflateBackInit will return Z_OK on success, Z_STREAM_ERROR if any of 2689 // the parameters are invalid, Z_MEM_ERROR if the internal state could not be 2690 // allocated, or Z_VERSION_ERROR if the version of the library does not match 2691 // the version of the header file. 2692 2693 type in_func = uintptr /* zlib.h:1092:18 */ 2694 type out_func = uintptr /* zlib.h:1094:13 */ 2695 // 2696 // Same as uncompress, except that sourceLen is a pointer, where the 2697 // length of the source is *sourceLen. On return, *sourceLen is the number of 2698 // source bytes consumed. 2699 2700 // gzip file access functions 2701 2702 // 2703 // This library supports reading and writing files in gzip (.gz) format with 2704 // an interface similar to that of stdio, using the functions that start with 2705 // "gz". The gzip format is different from the zlib format. gzip is a gzip 2706 // wrapper, documented in RFC 1952, wrapped around a deflate stream. 2707 2708 type gzFile_s = struct { 2709 have uint32 2710 _ [4]byte 2711 next uintptr 2712 pos off64_t 2713 } /* zlib.h:1300:9 */ 2714 2715 // 2716 // Same as uncompress, except that sourceLen is a pointer, where the 2717 // length of the source is *sourceLen. On return, *sourceLen is the number of 2718 // source bytes consumed. 2719 2720 // gzip file access functions 2721 2722 // 2723 // This library supports reading and writing files in gzip (.gz) format with 2724 // an interface similar to that of stdio, using the functions that start with 2725 // "gz". The gzip format is different from the zlib format. gzip is a gzip 2726 // wrapper, documented in RFC 1952, wrapped around a deflate stream. 2727 2728 type gzFile = uintptr /* zlib.h:1300:25 */ 2729 2730 // The tag name of this struct is _G_fpos_t to preserve historic 2731 // C++ mangled names for functions taking fpos_t arguments. 2732 // That name should not be used in new code. 2733 type _G_fpos_t = struct { 2734 __pos int64 2735 __state struct { 2736 __count int32 2737 __value struct{ __wch uint32 } 2738 } 2739 } /* __fpos_t.h:10:9 */ 2740 2741 // bits/types.h -- definitions of __*_t types underlying *_t types. 2742 // Copyright (C) 2002-2020 Free Software Foundation, Inc. 2743 // This file is part of the GNU C Library. 2744 // 2745 // The GNU C Library is free software; you can redistribute it and/or 2746 // modify it under the terms of the GNU Lesser General Public 2747 // License as published by the Free Software Foundation; either 2748 // version 2.1 of the License, or (at your option) any later version. 2749 // 2750 // The GNU C Library is distributed in the hope that it will be useful, 2751 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2752 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2753 // Lesser General Public License for more details. 2754 // 2755 // You should have received a copy of the GNU Lesser General Public 2756 // License along with the GNU C Library; if not, see 2757 // <https://www.gnu.org/licenses/>. 2758 2759 // Never include this file directly; use <sys/types.h> instead. 2760 2761 // The tag name of this struct is _G_fpos64_t to preserve historic 2762 // C++ mangled names for functions taking fpos_t and/or fpos64_t 2763 // arguments. That name should not be used in new code. 2764 type _G_fpos64_t = struct { 2765 __pos int64 2766 __state struct { 2767 __count int32 2768 __value struct{ __wch uint32 } 2769 } 2770 } /* __fpos64_t.h:10:9 */ 2771 2772 type _IO_FILE = struct { 2773 _flags int32 2774 _ [4]byte 2775 _IO_read_ptr uintptr 2776 _IO_read_end uintptr 2777 _IO_read_base uintptr 2778 _IO_write_base uintptr 2779 _IO_write_ptr uintptr 2780 _IO_write_end uintptr 2781 _IO_buf_base uintptr 2782 _IO_buf_end uintptr 2783 _IO_save_base uintptr 2784 _IO_backup_base uintptr 2785 _IO_save_end uintptr 2786 _markers uintptr 2787 _chain uintptr 2788 _fileno int32 2789 _flags2 int32 2790 _old_offset int64 2791 _cur_column uint16 2792 _vtable_offset int8 2793 _shortbuf [1]uint8 2794 _ [4]byte 2795 _lock uintptr 2796 _offset int64 2797 _codecvt uintptr 2798 _wide_data uintptr 2799 _freeres_list uintptr 2800 _freeres_buf uintptr 2801 __pad5 size_t 2802 _mode int32 2803 _unused2 [20]uint8 2804 } /* __FILE.h:4:1 */ 2805 2806 // The opaque type of streams. This is the definition used elsewhere. 2807 type FILE = _IO_FILE /* FILE.h:7:25 */ 2808 2809 // These macros are used by bits/stdio.h and internal headers. 2810 2811 // Many more flag bits are defined internally. 2812 2813 // The type of the second argument to `fgetpos' and `fsetpos'. 2814 type fpos_t = _G_fpos64_t /* stdio.h:86:20 */ 2815 type fpos64_t = _G_fpos64_t /* stdio.h:89:20 */ 2816 2817 // POSIX.1-2008 extended locale interface (see locale.h). 2818 // Definition of locale_t. 2819 // Copyright (C) 2017-2020 Free Software Foundation, Inc. 2820 // This file is part of the GNU C Library. 2821 // 2822 // The GNU C Library is free software; you can redistribute it and/or 2823 // modify it under the terms of the GNU Lesser General Public 2824 // License as published by the Free Software Foundation; either 2825 // version 2.1 of the License, or (at your option) any later version. 2826 // 2827 // The GNU C Library is distributed in the hope that it will be useful, 2828 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2829 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2830 // Lesser General Public License for more details. 2831 // 2832 // You should have received a copy of the GNU Lesser General Public 2833 // License along with the GNU C Library; if not, see 2834 // <https://www.gnu.org/licenses/>. 2835 2836 // Definition of struct __locale_struct and __locale_t. 2837 // Copyright (C) 1997-2020 Free Software Foundation, Inc. 2838 // This file is part of the GNU C Library. 2839 // Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. 2840 // 2841 // The GNU C Library is free software; you can redistribute it and/or 2842 // modify it under the terms of the GNU Lesser General Public 2843 // License as published by the Free Software Foundation; either 2844 // version 2.1 of the License, or (at your option) any later version. 2845 // 2846 // The GNU C Library is distributed in the hope that it will be useful, 2847 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2848 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2849 // Lesser General Public License for more details. 2850 // 2851 // You should have received a copy of the GNU Lesser General Public 2852 // License along with the GNU C Library; if not, see 2853 // <https://www.gnu.org/licenses/>. 2854 2855 // POSIX.1-2008: the locale_t type, representing a locale context 2856 // (implementation-namespace version). This type should be treated 2857 // as opaque by applications; some details are exposed for the sake of 2858 // efficiency in e.g. ctype functions. 2859 2860 type __locale_struct = struct { 2861 __locales [13]uintptr 2862 __ctype_b uintptr 2863 __ctype_tolower uintptr 2864 __ctype_toupper uintptr 2865 __names [13]uintptr 2866 } /* __locale_t.h:28:1 */ 2867 2868 type locale_t = uintptr /* locale_t.h:24:20 */ 2869 2870 // Copyright (C) 1991-2020 Free Software Foundation, Inc. 2871 // This file is part of the GNU C Library. 2872 // 2873 // The GNU C Library is free software; you can redistribute it and/or 2874 // modify it under the terms of the GNU Lesser General Public 2875 // License as published by the Free Software Foundation; either 2876 // version 2.1 of the License, or (at your option) any later version. 2877 // 2878 // The GNU C Library is distributed in the hope that it will be useful, 2879 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2880 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2881 // Lesser General Public License for more details. 2882 // 2883 // You should have received a copy of the GNU Lesser General Public 2884 // License along with the GNU C Library; if not, see 2885 // <https://www.gnu.org/licenses/>. 2886 2887 // ISO C99 Standard: 7.20 General utilities <stdlib.h> 2888 2889 // Handle feature test macros at the start of a header. 2890 // Copyright (C) 2016-2020 Free Software Foundation, Inc. 2891 // This file is part of the GNU C Library. 2892 // 2893 // The GNU C Library is free software; you can redistribute it and/or 2894 // modify it under the terms of the GNU Lesser General Public 2895 // License as published by the Free Software Foundation; either 2896 // version 2.1 of the License, or (at your option) any later version. 2897 // 2898 // The GNU C Library is distributed in the hope that it will be useful, 2899 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2900 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2901 // Lesser General Public License for more details. 2902 // 2903 // You should have received a copy of the GNU Lesser General Public 2904 // License along with the GNU C Library; if not, see 2905 // <https://www.gnu.org/licenses/>. 2906 2907 // This header is internal to glibc and should not be included outside 2908 // of glibc headers. Headers including it must define 2909 // __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION first. This header 2910 // cannot have multiple include guards because ISO C feature test 2911 // macros depend on the definition of the macro when an affected 2912 // header is included, not when the first system header is 2913 // included. 2914 2915 // Copyright (C) 1991-2020 Free Software Foundation, Inc. 2916 // This file is part of the GNU C Library. 2917 // 2918 // The GNU C Library is free software; you can redistribute it and/or 2919 // modify it under the terms of the GNU Lesser General Public 2920 // License as published by the Free Software Foundation; either 2921 // version 2.1 of the License, or (at your option) any later version. 2922 // 2923 // The GNU C Library is distributed in the hope that it will be useful, 2924 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2925 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2926 // Lesser General Public License for more details. 2927 // 2928 // You should have received a copy of the GNU Lesser General Public 2929 // License along with the GNU C Library; if not, see 2930 // <https://www.gnu.org/licenses/>. 2931 2932 // ISO/IEC TR 24731-2:2010 defines the __STDC_WANT_LIB_EXT2__ 2933 // macro. 2934 2935 // ISO/IEC TS 18661-1:2014 defines the __STDC_WANT_IEC_60559_BFP_EXT__ 2936 // macro. Most but not all symbols enabled by that macro in TS 2937 // 18661-1 are enabled unconditionally in C2X; the symbols in Annex F 2938 // still require that macro in C2X. 2939 2940 // ISO/IEC TS 18661-4:2015 defines the 2941 // __STDC_WANT_IEC_60559_FUNCS_EXT__ macro. Other than the reduction 2942 // functions, the symbols from this TS are enabled unconditionally in 2943 // C2X. 2944 2945 // ISO/IEC TS 18661-3:2015 defines the 2946 // __STDC_WANT_IEC_60559_TYPES_EXT__ macro. 2947 2948 // Get size_t, wchar_t and NULL from <stddef.h>. 2949 // Copyright (C) 1989-2020 Free Software Foundation, Inc. 2950 // 2951 // This file is part of GCC. 2952 // 2953 // GCC is free software; you can redistribute it and/or modify 2954 // it under the terms of the GNU General Public License as published by 2955 // the Free Software Foundation; either version 3, or (at your option) 2956 // any later version. 2957 // 2958 // GCC is distributed in the hope that it will be useful, 2959 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2960 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 2961 // GNU General Public License for more details. 2962 // 2963 // Under Section 7 of GPL version 3, you are granted additional 2964 // permissions described in the GCC Runtime Library Exception, version 2965 // 3.1, as published by the Free Software Foundation. 2966 // 2967 // You should have received a copy of the GNU General Public License and 2968 // a copy of the GCC Runtime Library Exception along with this program; 2969 // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 2970 // <http://www.gnu.org/licenses/>. 2971 2972 // ISO C Standard: 7.17 Common definitions <stddef.h> 2973 2974 // Any one of these symbols __need_* means that GNU libc 2975 // wants us just to define one data type. So don't define 2976 // the symbols that indicate this file's entire job has been done. 2977 2978 // This avoids lossage on SunOS but only if stdtypes.h comes first. 2979 // There's no way to win with the other order! Sun lossage. 2980 2981 // Sequent's header files use _PTRDIFF_T_ in some conflicting way. 2982 // Just ignore it. 2983 2984 // On VxWorks, <type/vxTypesBase.h> may have defined macros like 2985 // _TYPE_size_t which will typedef size_t. fixincludes patched the 2986 // vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is 2987 // not defined, and so that defining this macro defines _GCC_SIZE_T. 2988 // If we find that the macros are still defined at this point, we must 2989 // invoke them so that the type is defined as expected. 2990 2991 // In case nobody has defined these types, but we aren't running under 2992 // GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and 2993 // __WCHAR_TYPE__ have reasonable values. This can happen if the 2994 // parts of GCC is compiled by an older compiler, that actually 2995 // include gstddef.h, such as collect2. 2996 2997 // Signed type of difference of two pointers. 2998 2999 // Define this type if we are doing the whole job, 3000 // or if we want this type in particular. 3001 3002 // If this symbol has done its job, get rid of it. 3003 3004 // Unsigned type of `sizeof' something. 3005 3006 // Define this type if we are doing the whole job, 3007 // or if we want this type in particular. 3008 3009 // Wide character type. 3010 // Locale-writers should change this as necessary to 3011 // be big enough to hold unique values not between 0 and 127, 3012 // and not (wchar_t) -1, for each defined multibyte character. 3013 3014 // Define this type if we are doing the whole job, 3015 // or if we want this type in particular. 3016 3017 // A null pointer constant. 3018 3019 // Offset of member MEMBER in a struct of type TYPE. 3020 3021 // XPG requires a few symbols from <sys/wait.h> being defined. 3022 // Definitions of flag bits for `waitpid' et al. 3023 // Copyright (C) 1992-2020 Free Software Foundation, Inc. 3024 // This file is part of the GNU C Library. 3025 // 3026 // The GNU C Library is free software; you can redistribute it and/or 3027 // modify it under the terms of the GNU Lesser General Public 3028 // License as published by the Free Software Foundation; either 3029 // version 2.1 of the License, or (at your option) any later version. 3030 // 3031 // The GNU C Library is distributed in the hope that it will be useful, 3032 // but WITHOUT ANY WARRANTY; without even the implied warranty of 3033 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 3034 // Lesser General Public License for more details. 3035 // 3036 // You should have received a copy of the GNU Lesser General Public 3037 // License along with the GNU C Library; if not, see 3038 // <https://www.gnu.org/licenses/>. 3039 3040 // Bits in the third argument to `waitpid'. 3041 3042 // Bits in the fourth argument to `waitid'. 3043 3044 // The following values are used by the `waitid' function. 3045 3046 // The Linux kernel defines these bare, rather than an enum, 3047 // which causes a conflict if the include order is reversed. 3048 3049 type idtype_t = uint32 /* waitflags.h:57:3 */ 3050 // Definitions of status bits for `wait' et al. 3051 // Copyright (C) 1992-2020 Free Software Foundation, Inc. 3052 // This file is part of the GNU C Library. 3053 // 3054 // The GNU C Library is free software; you can redistribute it and/or 3055 // modify it under the terms of the GNU Lesser General Public 3056 // License as published by the Free Software Foundation; either 3057 // version 2.1 of the License, or (at your option) any later version. 3058 // 3059 // The GNU C Library is distributed in the hope that it will be useful, 3060 // but WITHOUT ANY WARRANTY; without even the implied warranty of 3061 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 3062 // Lesser General Public License for more details. 3063 // 3064 // You should have received a copy of the GNU Lesser General Public 3065 // License along with the GNU C Library; if not, see 3066 // <https://www.gnu.org/licenses/>. 3067 3068 // Everything extant so far uses these same bits. 3069 3070 // If WIFEXITED(STATUS), the low-order 8 bits of the status. 3071 3072 // If WIFSIGNALED(STATUS), the terminating signal. 3073 3074 // If WIFSTOPPED(STATUS), the signal that stopped the child. 3075 3076 // Nonzero if STATUS indicates normal termination. 3077 3078 // Nonzero if STATUS indicates termination by a signal. 3079 3080 // Nonzero if STATUS indicates the child is stopped. 3081 3082 // Nonzero if STATUS indicates the child continued after a stop. We only 3083 // define this if <bits/waitflags.h> provides the WCONTINUED flag bit. 3084 3085 // Nonzero if STATUS indicates the child dumped core. 3086 3087 // Macros for constructing status values. 3088 3089 // Define the macros <sys/wait.h> also would define this way. 3090 3091 // _FloatN API tests for enablement. 3092 // Macros to control TS 18661-3 glibc features on powerpc. 3093 // Copyright (C) 2017-2020 Free Software Foundation, Inc. 3094 // This file is part of the GNU C Library. 3095 // 3096 // The GNU C Library is free software; you can redistribute it and/or 3097 // modify it under the terms of the GNU Lesser General Public 3098 // License as published by the Free Software Foundation; either 3099 // version 2.1 of the License, or (at your option) any later version. 3100 // 3101 // The GNU C Library is distributed in the hope that it will be useful, 3102 // but WITHOUT ANY WARRANTY; without even the implied warranty of 3103 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 3104 // Lesser General Public License for more details. 3105 // 3106 // You should have received a copy of the GNU Lesser General Public 3107 // License along with the GNU C Library; if not, see 3108 // <https://www.gnu.org/licenses/>. 3109 3110 // Copyright (C) 1991-2020 Free Software Foundation, Inc. 3111 // This file is part of the GNU C Library. 3112 // 3113 // The GNU C Library is free software; you can redistribute it and/or 3114 // modify it under the terms of the GNU Lesser General Public 3115 // License as published by the Free Software Foundation; either 3116 // version 2.1 of the License, or (at your option) any later version. 3117 // 3118 // The GNU C Library is distributed in the hope that it will be useful, 3119 // but WITHOUT ANY WARRANTY; without even the implied warranty of 3120 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 3121 // Lesser General Public License for more details. 3122 // 3123 // You should have received a copy of the GNU Lesser General Public 3124 // License along with the GNU C Library; if not, see 3125 // <https://www.gnu.org/licenses/>. 3126 3127 // Properties of long double type. ldbl-opt version. 3128 // Copyright (C) 2016-2020 Free Software Foundation, Inc. 3129 // This file is part of the GNU C Library. 3130 // 3131 // The GNU C Library is free software; you can redistribute it and/or 3132 // modify it under the terms of the GNU Lesser General Public 3133 // License published by the Free Software Foundation; either 3134 // version 2.1 of the License, or (at your option) any later version. 3135 // 3136 // The GNU C Library is distributed in the hope that it will be useful, 3137 // but WITHOUT ANY WARRANTY; without even the implied warranty of 3138 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 3139 // Lesser General Public License for more details. 3140 // 3141 // You should have received a copy of the GNU Lesser General Public 3142 // License along with the GNU C Library; if not, see 3143 // <https://www.gnu.org/licenses/>. 3144 3145 // Defined to 1 if the current compiler invocation provides a 3146 // floating-point type with the IEEE 754 binary128 format, and this glibc 3147 // includes corresponding *f128 interfaces for it. 3148 3149 // Defined to 1 if __HAVE_FLOAT128 is 1 and the type is ABI-distinct 3150 // from the default float, double and long double types in this glibc, i.e. 3151 // calls to the binary128 functions go to *f128 symbols instead of *l. 3152 3153 // Defined to 1 if the current compiler invocation provides a 3154 // floating-point type with the right format for _Float64x, and this 3155 // glibc includes corresponding *f64x interfaces for it. 3156 3157 // Defined to 1 if __HAVE_FLOAT64X is 1 and _Float64x has the format 3158 // of long double. Otherwise, if __HAVE_FLOAT64X is 1, _Float64x has 3159 // the format of _Float128, which must be different from that of long 3160 // double. 3161 3162 // Defined to concatenate the literal suffix to be used with _Float128 3163 // types, if __HAVE_FLOAT128 is 1. 3164 3165 // Defined to a complex binary128 type if __HAVE_FLOAT128 is 1. 3166 3167 // The remaining of this file provides support for older compilers. 3168 // Builtin __builtin_huge_valf128 doesn't exist before GCC 7.0. 3169 3170 // The following builtins (suffixed with 'q') are available in GCC >= 6.2, 3171 // which is the minimum version required for float128 support on powerpc64le. 3172 // Since GCC 7.0 the builtins suffixed with f128 are also available, then 3173 // there is no need to redefined them. 3174 3175 // In math/math.h, __MATH_TG will expand signbit to __builtin_signbit*, 3176 // e.g.: __builtin_signbitf128, before GCC 6. However, there has never 3177 // been a __builtin_signbitf128 in GCC and the type-generic builtin is 3178 // only available since GCC 6. 3179 3180 // Macros to control TS 18661-3 glibc features where the same 3181 // definitions are appropriate for all platforms. 3182 // Copyright (C) 2017-2020 Free Software Foundation, Inc. 3183 // This file is part of the GNU C Library. 3184 // 3185 // The GNU C Library is free software; you can redistribute it and/or 3186 // modify it under the terms of the GNU Lesser General Public 3187 // License as published by the Free Software Foundation; either 3188 // version 2.1 of the License, or (at your option) any later version. 3189 // 3190 // The GNU C Library is distributed in the hope that it will be useful, 3191 // but WITHOUT ANY WARRANTY; without even the implied warranty of 3192 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 3193 // Lesser General Public License for more details. 3194 // 3195 // You should have received a copy of the GNU Lesser General Public 3196 // License along with the GNU C Library; if not, see 3197 // <https://www.gnu.org/licenses/>. 3198 3199 // Copyright (C) 1991-2020 Free Software Foundation, Inc. 3200 // This file is part of the GNU C Library. 3201 // 3202 // The GNU C Library is free software; you can redistribute it and/or 3203 // modify it under the terms of the GNU Lesser General Public 3204 // License as published by the Free Software Foundation; either 3205 // version 2.1 of the License, or (at your option) any later version. 3206 // 3207 // The GNU C Library is distributed in the hope that it will be useful, 3208 // but WITHOUT ANY WARRANTY; without even the implied warranty of 3209 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 3210 // Lesser General Public License for more details. 3211 // 3212 // You should have received a copy of the GNU Lesser General Public 3213 // License along with the GNU C Library; if not, see 3214 // <https://www.gnu.org/licenses/>. 3215 3216 // Properties of long double type. ldbl-opt version. 3217 // Copyright (C) 2016-2020 Free Software Foundation, Inc. 3218 // This file is part of the GNU C Library. 3219 // 3220 // The GNU C Library is free software; you can redistribute it and/or 3221 // modify it under the terms of the GNU Lesser General Public 3222 // License published by the Free Software Foundation; either 3223 // version 2.1 of the License, or (at your option) any later version. 3224 // 3225 // The GNU C Library is distributed in the hope that it will be useful, 3226 // but WITHOUT ANY WARRANTY; without even the implied warranty of 3227 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 3228 // Lesser General Public License for more details. 3229 // 3230 // You should have received a copy of the GNU Lesser General Public 3231 // License along with the GNU C Library; if not, see 3232 // <https://www.gnu.org/licenses/>. 3233 3234 // This header should be included at the bottom of each bits/floatn.h. 3235 // It defines the following macros for each _FloatN and _FloatNx type, 3236 // where the same definitions, or definitions based only on the macros 3237 // in bits/floatn.h, are appropriate for all glibc configurations. 3238 3239 // Defined to 1 if the current compiler invocation provides a 3240 // floating-point type with the right format for this type, and this 3241 // glibc includes corresponding *fN or *fNx interfaces for it. 3242 3243 // Defined to 1 if the corresponding __HAVE_<type> macro is 1 and the 3244 // type is the first with its format in the sequence of (the default 3245 // choices for) float, double, long double, _Float16, _Float32, 3246 // _Float64, _Float128, _Float32x, _Float64x, _Float128x for this 3247 // glibc; that is, if functions present once per floating-point format 3248 // rather than once per type are present for this type. 3249 // 3250 // All configurations supported by glibc have _Float32 the same format 3251 // as float, _Float64 and _Float32x the same format as double, the 3252 // _Float64x the same format as either long double or _Float128. No 3253 // configurations support _Float128x or, as of GCC 7, have compiler 3254 // support for a type meeting the requirements for _Float128x. 3255 3256 // Defined to 1 if the corresponding _FloatN type is not binary compatible 3257 // with the corresponding ISO C type in the current compilation unit as 3258 // opposed to __HAVE_DISTINCT_FLOATN, which indicates the default types built 3259 // in glibc. 3260 3261 // Defined to 1 if any _FloatN or _FloatNx types that are not 3262 // ABI-distinct are however distinct types at the C language level (so 3263 // for the purposes of __builtin_types_compatible_p and _Generic). 3264 3265 // Defined to concatenate the literal suffix to be used with _FloatN 3266 // or _FloatNx types, if __HAVE_<type> is 1. The corresponding 3267 // literal suffixes exist since GCC 7, for C only. 3268 3269 // Defined to a complex type if __HAVE_<type> is 1. 3270 3271 // The remaining of this file provides support for older compilers. 3272 3273 // If double, long double and _Float64 all have the same set of 3274 // values, TS 18661-3 requires the usual arithmetic conversions on 3275 // long double and _Float64 to produce _Float64. For this to be the 3276 // case when building with a compiler without a distinct _Float64 3277 // type, _Float64 must be a typedef for long double, not for 3278 // double. 3279 3280 // Returned by `div'. 3281 type div_t = struct { 3282 quot int32 3283 rem int32 3284 } /* stdlib.h:62:5 */ 3285 3286 // Returned by `ldiv'. 3287 type ldiv_t = struct { 3288 quot int64 3289 rem int64 3290 } /* stdlib.h:70:5 */ 3291 3292 // Returned by `lldiv'. 3293 type lldiv_t = struct { 3294 quot int64 3295 rem int64 3296 } /* stdlib.h:80:5 */ 3297 3298 // Reentrant versions of the `random' family of functions. 3299 // These functions all use the following data structure to contain 3300 // state, rather than global state variables. 3301 3302 type random_data = struct { 3303 fptr uintptr 3304 rptr uintptr 3305 state uintptr 3306 rand_type int32 3307 rand_deg int32 3308 rand_sep int32 3309 _ [4]byte 3310 end_ptr uintptr 3311 } /* stdlib.h:423:1 */ 3312 3313 // Data structure for communication with thread safe versions. This 3314 // type is to be regarded as opaque. It's only exported because users 3315 // have to allocate objects of this type. 3316 type drand48_data = struct { 3317 __x [3]uint16 3318 __old_x [3]uint16 3319 __c uint16 3320 __init uint16 3321 __a uint64 3322 } /* stdlib.h:490:1 */ 3323 3324 // Floating-point inline functions for stdlib.h. 3325 // Copyright (C) 2012-2020 Free Software Foundation, Inc. 3326 // This file is part of the GNU C Library. 3327 // 3328 // The GNU C Library is free software; you can redistribute it and/or 3329 // modify it under the terms of the GNU Lesser General Public 3330 // License as published by the Free Software Foundation; either 3331 // version 2.1 of the License, or (at your option) any later version. 3332 // 3333 // The GNU C Library is distributed in the hope that it will be useful, 3334 // but WITHOUT ANY WARRANTY; without even the implied warranty of 3335 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 3336 // Lesser General Public License for more details. 3337 // 3338 // You should have received a copy of the GNU Lesser General Public 3339 // License along with the GNU C Library; if not, see 3340 // <https://www.gnu.org/licenses/>. 3341 3342 // Define some macros helping to catch buffer overflows. 3343 3344 var hello = *(*[14]uint8)(unsafe.Pointer(ts)) /* example.c:29:21 */ 3345 // "hello world" would be more standard, but the repeated "hello" 3346 // stresses the compression code better, sorry... 3347 3348 var dictionary = *(*[6]uint8)(unsafe.Pointer(ts + 14)) /* example.c:34:19 */ 3349 var dictId uLong /* example.c:35:14: */ 3350 3351 var zalloc alloc_func = uintptr(0) /* example.c:77:19 */ 3352 var zfree free_func = uintptr(0) /* example.c:78:18 */ 3353 3354 // =========================================================================== 3355 // Test compress() and uncompress() 3356 func test_compress(tls *libc.TLS, compr uintptr, comprLen uLong, uncompr uintptr, uncomprLen uLong) { /* example.c:88:6: */ 3357 bp := tls.Alloc(56) 3358 defer tls.Free(56) 3359 *(*uLong)(unsafe.Pointer(bp + 40)) = comprLen 3360 *(*uLong)(unsafe.Pointer(bp + 48)) = uncomprLen 3361 3362 var err int32 3363 var len uLong = libc.Xstrlen(tls, uintptr(unsafe.Pointer(&hello))) + uint64(1) 3364 3365 err = z.Xcompress(tls, compr, bp+40, uintptr(uintptr(unsafe.Pointer(&hello))), len) 3366 { 3367 if err != 0 { 3368 libc.Xfprintf(tls, libc.Xstderr, ts+20, libc.VaList(bp, ts+34, err)) 3369 libc.Xexit(tls, 1) 3370 } 3371 } 3372 3373 libc.Xstrcpy(tls, uncompr, ts+43) 3374 3375 err = z.Xuncompress(tls, uncompr, bp+48, compr, *(*uLong)(unsafe.Pointer(bp + 40 /* comprLen */))) 3376 { 3377 if err != 0 { 3378 libc.Xfprintf(tls, libc.Xstderr, ts+20, libc.VaList(bp+16, ts+51, err)) 3379 libc.Xexit(tls, 1) 3380 } 3381 } 3382 3383 if libc.Xstrcmp(tls, uncompr, uintptr(unsafe.Pointer(&hello))) != 0 { 3384 libc.Xfprintf(tls, libc.Xstderr, ts+62, 0) 3385 libc.Xexit(tls, 1) 3386 } else { 3387 libc.Xprintf(tls, ts+78, libc.VaList(bp+32, uncompr)) 3388 } 3389 } 3390 3391 // =========================================================================== 3392 // Test read/write of .gz files 3393 func test_gzio(tls *libc.TLS, fname uintptr, uncompr uintptr, uncomprLen uLong) { /* example.c:114:6: */ 3394 bp := tls.Alloc(84) 3395 defer tls.Free(84) 3396 3397 // var err int32 at bp+80, 4 3398 3399 var len int32 = int32(libc.Xstrlen(tls, uintptr(unsafe.Pointer(&hello)))) + 1 3400 var file gzFile 3401 var pos off_t 3402 3403 file = z.Xgzopen64(tls, fname, ts+96) 3404 if file == uintptr(0) { 3405 libc.Xfprintf(tls, libc.Xstderr, ts+99, 0) 3406 libc.Xexit(tls, 1) 3407 } 3408 z.Xgzputc(tls, file, 'h') 3409 if z.Xgzputs(tls, file, ts+113) != 4 { 3410 libc.Xfprintf(tls, libc.Xstderr, ts+118, libc.VaList(bp, z.Xgzerror(tls, file, bp+80))) 3411 libc.Xexit(tls, 1) 3412 } 3413 if z.Xgzprintf(tls, file, ts+134, libc.VaList(bp+8, ts+14)) != 8 { 3414 libc.Xfprintf(tls, libc.Xstderr, ts+140, libc.VaList(bp+16, z.Xgzerror(tls, file, bp+80))) 3415 libc.Xexit(tls, 1) 3416 } 3417 z.Xgzseek64(tls, file, 1, 1) // add one zero byte 3418 z.Xgzclose(tls, file) 3419 3420 file = z.Xgzopen64(tls, fname, ts+158) 3421 if file == uintptr(0) { 3422 libc.Xfprintf(tls, libc.Xstderr, ts+99, 0) 3423 libc.Xexit(tls, 1) 3424 } 3425 libc.Xstrcpy(tls, uncompr, ts+43) 3426 3427 if z.Xgzread(tls, file, uncompr, uint32(uncomprLen)) != len { 3428 libc.Xfprintf(tls, libc.Xstderr, ts+161, libc.VaList(bp+24, z.Xgzerror(tls, file, bp+80))) 3429 libc.Xexit(tls, 1) 3430 } 3431 if libc.Xstrcmp(tls, uncompr, uintptr(unsafe.Pointer(&hello))) != 0 { 3432 libc.Xfprintf(tls, libc.Xstderr, ts+177, libc.VaList(bp+32, uncompr)) 3433 libc.Xexit(tls, 1) 3434 } else { 3435 libc.Xprintf(tls, ts+193, libc.VaList(bp+40, uncompr)) 3436 } 3437 3438 pos = z.Xgzseek64(tls, file, -8, 1) 3439 if pos != int64(6) || z.Xgztell64(tls, file) != pos { 3440 libc.Xfprintf(tls, libc.Xstderr, ts+207, 3441 libc.VaList(bp+48, pos, z.Xgztell64(tls, file))) 3442 libc.Xexit(tls, 1) 3443 } 3444 3445 if func() int32 { 3446 if (*gzFile_s)(unsafe.Pointer(file)).have != 0 { 3447 return int32(func() uint8 { 3448 (*gzFile_s)(unsafe.Pointer(file)).have-- 3449 (*gzFile_s)(unsafe.Pointer(file)).pos++ 3450 return *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&(*gzFile_s)(unsafe.Pointer(file)).next, 1))) 3451 }()) 3452 } 3453 return z.Xgzgetc(tls, file) 3454 }() != ' ' { 3455 libc.Xfprintf(tls, libc.Xstderr, ts+242, 0) 3456 libc.Xexit(tls, 1) 3457 } 3458 3459 if z.Xgzungetc(tls, ' ', file) != ' ' { 3460 libc.Xfprintf(tls, libc.Xstderr, ts+256, 0) 3461 libc.Xexit(tls, 1) 3462 } 3463 3464 z.Xgzgets(tls, file, uncompr, int32(uncomprLen)) 3465 if libc.Xstrlen(tls, uncompr) != uint64(7) { // " hello!" 3466 libc.Xfprintf(tls, libc.Xstderr, ts+272, libc.VaList(bp+64, z.Xgzerror(tls, file, bp+80))) 3467 libc.Xexit(tls, 1) 3468 } 3469 if libc.Xstrcmp(tls, uncompr, uintptr(unsafe.Pointer(&hello))+uintptr(6)) != 0 { 3470 libc.Xfprintf(tls, libc.Xstderr, ts+301, 0) 3471 libc.Xexit(tls, 1) 3472 } else { 3473 libc.Xprintf(tls, ts+326, libc.VaList(bp+72, uncompr)) 3474 } 3475 3476 z.Xgzclose(tls, file) 3477 } 3478 3479 // =========================================================================== 3480 // Test deflate() with small buffers 3481 func test_deflate(tls *libc.TLS, compr uintptr, comprLen uLong) { /* example.c:200:6: */ 3482 bp := tls.Alloc(176) 3483 defer tls.Free(176) 3484 3485 // var c_stream z_stream at bp+64, 112 3486 // compression stream 3487 var err int32 3488 var len uLong = libc.Xstrlen(tls, uintptr(unsafe.Pointer(&hello))) + uint64(1) 3489 3490 (*z_stream)(unsafe.Pointer(bp + 64 /* &c_stream */)).zalloc = zalloc 3491 (*z_stream)(unsafe.Pointer(bp + 64 /* &c_stream */)).zfree = zfree 3492 (*z_stream)(unsafe.Pointer(bp + 64 /* &c_stream */)).opaque = uintptr(0) 3493 3494 err = z.XdeflateInit_(tls, bp+64, -1, ts+353, int32(unsafe.Sizeof(z_stream{}))) 3495 { 3496 if err != 0 { 3497 libc.Xfprintf(tls, libc.Xstderr, ts+20, libc.VaList(bp, ts+360, err)) 3498 libc.Xexit(tls, 1) 3499 } 3500 } 3501 3502 (*z_stream)(unsafe.Pointer(bp + 64 /* &c_stream */)).next_in = uintptr(uintptr(unsafe.Pointer(&hello))) 3503 (*z_stream)(unsafe.Pointer(bp + 64 /* &c_stream */)).next_out = compr 3504 3505 for (*z_stream)(unsafe.Pointer(bp+64)).total_in != len && (*z_stream)(unsafe.Pointer(bp+64)).total_out < comprLen { 3506 (*z_stream)(unsafe.Pointer(bp + 64 /* &c_stream */)).avail_in = libc.AssignPtrUint32(bp+64+32, uInt(1)) // force small buffers 3507 err = z.Xdeflate(tls, bp+64, 0) 3508 { 3509 if err != 0 { 3510 libc.Xfprintf(tls, libc.Xstderr, ts+20, libc.VaList(bp+16, ts+372, err)) 3511 libc.Xexit(tls, 1) 3512 } 3513 } 3514 3515 } 3516 // Finish the stream, still forcing small buffers: 3517 for { 3518 (*z_stream)(unsafe.Pointer(bp + 64 /* &c_stream */)).avail_out = uInt(1) 3519 err = z.Xdeflate(tls, bp+64, 4) 3520 if err == 1 { 3521 break 3522 } 3523 { 3524 if err != 0 { 3525 libc.Xfprintf(tls, libc.Xstderr, ts+20, libc.VaList(bp+32, ts+372, err)) 3526 libc.Xexit(tls, 1) 3527 } 3528 } 3529 3530 } 3531 3532 err = z.XdeflateEnd(tls, bp+64) 3533 { 3534 if err != 0 { 3535 libc.Xfprintf(tls, libc.Xstderr, ts+20, libc.VaList(bp+48, ts+380, err)) 3536 libc.Xexit(tls, 1) 3537 } 3538 } 3539 3540 } 3541 3542 // =========================================================================== 3543 // Test inflate() with small buffers 3544 func test_inflate(tls *libc.TLS, compr uintptr, comprLen uLong, uncompr uintptr, uncomprLen uLong) { /* example.c:238:6: */ 3545 bp := tls.Alloc(168) 3546 defer tls.Free(168) 3547 3548 var err int32 3549 // var d_stream z_stream at bp+56, 112 3550 // decompression stream 3551 3552 libc.Xstrcpy(tls, uncompr, ts+43) 3553 3554 (*z_stream)(unsafe.Pointer(bp + 56 /* &d_stream */)).zalloc = zalloc 3555 (*z_stream)(unsafe.Pointer(bp + 56 /* &d_stream */)).zfree = zfree 3556 (*z_stream)(unsafe.Pointer(bp + 56 /* &d_stream */)).opaque = uintptr(0) 3557 3558 (*z_stream)(unsafe.Pointer(bp + 56 /* &d_stream */)).next_in = compr 3559 (*z_stream)(unsafe.Pointer(bp + 56 /* &d_stream */)).avail_in = uInt(0) 3560 (*z_stream)(unsafe.Pointer(bp + 56 /* &d_stream */)).next_out = uncompr 3561 3562 err = z.XinflateInit_(tls, bp+56, ts+353, int32(unsafe.Sizeof(z_stream{}))) 3563 { 3564 if err != 0 { 3565 libc.Xfprintf(tls, libc.Xstderr, ts+20, libc.VaList(bp, ts+391, err)) 3566 libc.Xexit(tls, 1) 3567 } 3568 } 3569 3570 for (*z_stream)(unsafe.Pointer(bp+56)).total_out < uncomprLen && (*z_stream)(unsafe.Pointer(bp+56)).total_in < comprLen { 3571 (*z_stream)(unsafe.Pointer(bp + 56 /* &d_stream */)).avail_in = libc.AssignPtrUint32(bp+56+32, uInt(1)) // force small buffers 3572 err = z.Xinflate(tls, bp+56, 0) 3573 if err == 1 { 3574 break 3575 } 3576 { 3577 if err != 0 { 3578 libc.Xfprintf(tls, libc.Xstderr, ts+20, libc.VaList(bp+16, ts+403, err)) 3579 libc.Xexit(tls, 1) 3580 } 3581 } 3582 3583 } 3584 3585 err = z.XinflateEnd(tls, bp+56) 3586 { 3587 if err != 0 { 3588 libc.Xfprintf(tls, libc.Xstderr, ts+20, libc.VaList(bp+32, ts+411, err)) 3589 libc.Xexit(tls, 1) 3590 } 3591 } 3592 3593 if libc.Xstrcmp(tls, uncompr, uintptr(unsafe.Pointer(&hello))) != 0 { 3594 libc.Xfprintf(tls, libc.Xstderr, ts+422, 0) 3595 libc.Xexit(tls, 1) 3596 } else { 3597 libc.Xprintf(tls, ts+435, libc.VaList(bp+48, uncompr)) 3598 } 3599 } 3600 3601 // =========================================================================== 3602 // Test deflate() with large buffers and dynamic change of compression level 3603 func test_large_deflate(tls *libc.TLS, compr uintptr, comprLen uLong, uncompr uintptr, uncomprLen uLong) { /* example.c:279:6: */ 3604 bp := tls.Alloc(192) 3605 defer tls.Free(192) 3606 3607 // var c_stream z_stream at bp+80, 112 3608 // compression stream 3609 var err int32 3610 3611 (*z_stream)(unsafe.Pointer(bp + 80 /* &c_stream */)).zalloc = zalloc 3612 (*z_stream)(unsafe.Pointer(bp + 80 /* &c_stream */)).zfree = zfree 3613 (*z_stream)(unsafe.Pointer(bp + 80 /* &c_stream */)).opaque = uintptr(0) 3614 3615 err = z.XdeflateInit_(tls, bp+80, 1, ts+353, int32(unsafe.Sizeof(z_stream{}))) 3616 { 3617 if err != 0 { 3618 libc.Xfprintf(tls, libc.Xstderr, ts+20, libc.VaList(bp, ts+360, err)) 3619 libc.Xexit(tls, 1) 3620 } 3621 } 3622 3623 (*z_stream)(unsafe.Pointer(bp + 80 /* &c_stream */)).next_out = compr 3624 (*z_stream)(unsafe.Pointer(bp + 80 /* &c_stream */)).avail_out = uInt(comprLen) 3625 3626 // At this point, uncompr is still mostly zeroes, so it should compress 3627 // very well: 3628 (*z_stream)(unsafe.Pointer(bp + 80 /* &c_stream */)).next_in = uncompr 3629 (*z_stream)(unsafe.Pointer(bp + 80 /* &c_stream */)).avail_in = uInt(uncomprLen) 3630 err = z.Xdeflate(tls, bp+80, 0) 3631 { 3632 if err != 0 { 3633 libc.Xfprintf(tls, libc.Xstderr, ts+20, libc.VaList(bp+16, ts+372, err)) 3634 libc.Xexit(tls, 1) 3635 } 3636 } 3637 3638 if (*z_stream)(unsafe.Pointer(bp+80)).avail_in != uInt(0) { 3639 libc.Xfprintf(tls, libc.Xstderr, ts+450, 0) 3640 libc.Xexit(tls, 1) 3641 } 3642 3643 // Feed in already compressed data and switch to no compression: 3644 z.XdeflateParams(tls, bp+80, 0, 0) 3645 (*z_stream)(unsafe.Pointer(bp + 80 /* &c_stream */)).next_in = compr 3646 (*z_stream)(unsafe.Pointer(bp + 80 /* &c_stream */)).avail_in = uInt(comprLen) / uInt(2) 3647 err = z.Xdeflate(tls, bp+80, 0) 3648 { 3649 if err != 0 { 3650 libc.Xfprintf(tls, libc.Xstderr, ts+20, libc.VaList(bp+32, ts+372, err)) 3651 libc.Xexit(tls, 1) 3652 } 3653 } 3654 3655 // Switch back to compressing mode: 3656 z.XdeflateParams(tls, bp+80, 9, 1) 3657 (*z_stream)(unsafe.Pointer(bp + 80 /* &c_stream */)).next_in = uncompr 3658 (*z_stream)(unsafe.Pointer(bp + 80 /* &c_stream */)).avail_in = uInt(uncomprLen) 3659 err = z.Xdeflate(tls, bp+80, 0) 3660 { 3661 if err != 0 { 3662 libc.Xfprintf(tls, libc.Xstderr, ts+20, libc.VaList(bp+48, ts+372, err)) 3663 libc.Xexit(tls, 1) 3664 } 3665 } 3666 3667 err = z.Xdeflate(tls, bp+80, 4) 3668 if err != 1 { 3669 libc.Xfprintf(tls, libc.Xstderr, ts+470, 0) 3670 libc.Xexit(tls, 1) 3671 } 3672 err = z.XdeflateEnd(tls, bp+80) 3673 { 3674 if err != 0 { 3675 libc.Xfprintf(tls, libc.Xstderr, ts+20, libc.VaList(bp+64, ts+380, err)) 3676 libc.Xexit(tls, 1) 3677 } 3678 } 3679 3680 } 3681 3682 // =========================================================================== 3683 // Test inflate() with large buffers 3684 func test_large_inflate(tls *libc.TLS, compr uintptr, comprLen uLong, uncompr uintptr, uncomprLen uLong) { /* example.c:334:6: */ 3685 bp := tls.Alloc(168) 3686 defer tls.Free(168) 3687 3688 var err int32 3689 // var d_stream z_stream at bp+56, 112 3690 // decompression stream 3691 3692 libc.Xstrcpy(tls, uncompr, ts+43) 3693 3694 (*z_stream)(unsafe.Pointer(bp + 56 /* &d_stream */)).zalloc = zalloc 3695 (*z_stream)(unsafe.Pointer(bp + 56 /* &d_stream */)).zfree = zfree 3696 (*z_stream)(unsafe.Pointer(bp + 56 /* &d_stream */)).opaque = uintptr(0) 3697 3698 (*z_stream)(unsafe.Pointer(bp + 56 /* &d_stream */)).next_in = compr 3699 (*z_stream)(unsafe.Pointer(bp + 56 /* &d_stream */)).avail_in = uInt(comprLen) 3700 3701 err = z.XinflateInit_(tls, bp+56, ts+353, int32(unsafe.Sizeof(z_stream{}))) 3702 { 3703 if err != 0 { 3704 libc.Xfprintf(tls, libc.Xstderr, ts+20, libc.VaList(bp, ts+391, err)) 3705 libc.Xexit(tls, 1) 3706 } 3707 } 3708 3709 for { 3710 (*z_stream)(unsafe.Pointer(bp + 56 /* &d_stream */)).next_out = uncompr // discard the output 3711 (*z_stream)(unsafe.Pointer(bp + 56 /* &d_stream */)).avail_out = uInt(uncomprLen) 3712 err = z.Xinflate(tls, bp+56, 0) 3713 if err == 1 { 3714 break 3715 } 3716 { 3717 if err != 0 { 3718 libc.Xfprintf(tls, libc.Xstderr, ts+20, libc.VaList(bp+16, ts+506, err)) 3719 libc.Xexit(tls, 1) 3720 } 3721 } 3722 3723 } 3724 3725 err = z.XinflateEnd(tls, bp+56) 3726 { 3727 if err != 0 { 3728 libc.Xfprintf(tls, libc.Xstderr, ts+20, libc.VaList(bp+32, ts+411, err)) 3729 libc.Xexit(tls, 1) 3730 } 3731 } 3732 3733 if (*z_stream)(unsafe.Pointer(bp+56)).total_out != uint64(2)*uncomprLen+comprLen/uint64(2) { 3734 libc.Xfprintf(tls, libc.Xstderr, ts+520, libc.VaList(bp+48, (*z_stream)(unsafe.Pointer(bp+56 /* &d_stream */)).total_out)) 3735 libc.Xexit(tls, 1) 3736 } else { 3737 libc.Xprintf(tls, ts+544, 0) 3738 } 3739 } 3740 3741 // =========================================================================== 3742 // Test deflate() with full flush 3743 func test_flush(tls *libc.TLS, compr uintptr, comprLen uintptr) { /* example.c:375:6: */ 3744 bp := tls.Alloc(176) 3745 defer tls.Free(176) 3746 3747 // var c_stream z_stream at bp+64, 112 3748 // compression stream 3749 var err int32 3750 var len uInt = uInt(libc.Xstrlen(tls, uintptr(unsafe.Pointer(&hello)))) + uInt(1) 3751 3752 (*z_stream)(unsafe.Pointer(bp + 64 /* &c_stream */)).zalloc = zalloc 3753 (*z_stream)(unsafe.Pointer(bp + 64 /* &c_stream */)).zfree = zfree 3754 (*z_stream)(unsafe.Pointer(bp + 64 /* &c_stream */)).opaque = uintptr(0) 3755 3756 err = z.XdeflateInit_(tls, bp+64, -1, ts+353, int32(unsafe.Sizeof(z_stream{}))) 3757 { 3758 if err != 0 { 3759 libc.Xfprintf(tls, libc.Xstderr, ts+20, libc.VaList(bp, ts+360, err)) 3760 libc.Xexit(tls, 1) 3761 } 3762 } 3763 3764 (*z_stream)(unsafe.Pointer(bp + 64 /* &c_stream */)).next_in = uintptr(uintptr(unsafe.Pointer(&hello))) 3765 (*z_stream)(unsafe.Pointer(bp + 64 /* &c_stream */)).next_out = compr 3766 (*z_stream)(unsafe.Pointer(bp + 64 /* &c_stream */)).avail_in = uInt(3) 3767 (*z_stream)(unsafe.Pointer(bp + 64 /* &c_stream */)).avail_out = uInt(*(*uLong)(unsafe.Pointer(comprLen))) 3768 err = z.Xdeflate(tls, bp+64, 3) 3769 { 3770 if err != 0 { 3771 libc.Xfprintf(tls, libc.Xstderr, ts+20, libc.VaList(bp+16, ts+372, err)) 3772 libc.Xexit(tls, 1) 3773 } 3774 } 3775 3776 *(*Byte)(unsafe.Pointer(compr + 3))++ // force an error in first compressed block 3777 (*z_stream)(unsafe.Pointer(bp + 64 /* &c_stream */)).avail_in = len - uInt(3) 3778 3779 err = z.Xdeflate(tls, bp+64, 4) 3780 if err != 1 { 3781 { 3782 if err != 0 { 3783 libc.Xfprintf(tls, libc.Xstderr, ts+20, libc.VaList(bp+32, ts+372, err)) 3784 libc.Xexit(tls, 1) 3785 } 3786 } 3787 3788 } 3789 err = z.XdeflateEnd(tls, bp+64) 3790 { 3791 if err != 0 { 3792 libc.Xfprintf(tls, libc.Xstderr, ts+20, libc.VaList(bp+48, ts+380, err)) 3793 libc.Xexit(tls, 1) 3794 } 3795 } 3796 3797 *(*uLong)(unsafe.Pointer(comprLen)) = (*z_stream)(unsafe.Pointer(bp + 64 /* &c_stream */)).total_out 3798 } 3799 3800 // =========================================================================== 3801 // Test inflateSync() 3802 func test_sync(tls *libc.TLS, compr uintptr, comprLen uLong, uncompr uintptr, uncomprLen uLong) { /* example.c:413:6: */ 3803 bp := tls.Alloc(184) 3804 defer tls.Free(184) 3805 3806 var err int32 3807 // var d_stream z_stream at bp+72, 112 3808 // decompression stream 3809 3810 libc.Xstrcpy(tls, uncompr, ts+43) 3811 3812 (*z_stream)(unsafe.Pointer(bp + 72 /* &d_stream */)).zalloc = zalloc 3813 (*z_stream)(unsafe.Pointer(bp + 72 /* &d_stream */)).zfree = zfree 3814 (*z_stream)(unsafe.Pointer(bp + 72 /* &d_stream */)).opaque = uintptr(0) 3815 3816 (*z_stream)(unsafe.Pointer(bp + 72 /* &d_stream */)).next_in = compr 3817 (*z_stream)(unsafe.Pointer(bp + 72 /* &d_stream */)).avail_in = uInt(2) // just read the zlib header 3818 3819 err = z.XinflateInit_(tls, bp+72, ts+353, int32(unsafe.Sizeof(z_stream{}))) 3820 { 3821 if err != 0 { 3822 libc.Xfprintf(tls, libc.Xstderr, ts+20, libc.VaList(bp, ts+391, err)) 3823 libc.Xexit(tls, 1) 3824 } 3825 } 3826 3827 (*z_stream)(unsafe.Pointer(bp + 72 /* &d_stream */)).next_out = uncompr 3828 (*z_stream)(unsafe.Pointer(bp + 72 /* &d_stream */)).avail_out = uInt(uncomprLen) 3829 3830 err = z.Xinflate(tls, bp+72, 0) 3831 { 3832 if err != 0 { 3833 libc.Xfprintf(tls, libc.Xstderr, ts+20, libc.VaList(bp+16, ts+403, err)) 3834 libc.Xexit(tls, 1) 3835 } 3836 } 3837 3838 (*z_stream)(unsafe.Pointer(bp + 72 /* &d_stream */)).avail_in = uInt(comprLen) - uInt(2) // read all compressed data 3839 err = z.XinflateSync(tls, bp+72) /* but skip the damaged part */ 3840 { 3841 if err != 0 { 3842 libc.Xfprintf(tls, libc.Xstderr, ts+20, libc.VaList(bp+32, ts+565, err)) 3843 libc.Xexit(tls, 1) 3844 } 3845 } 3846 3847 err = z.Xinflate(tls, bp+72, 4) 3848 if err != -3 { 3849 libc.Xfprintf(tls, libc.Xstderr, ts+577, 0) 3850 // Because of incorrect adler32 3851 libc.Xexit(tls, 1) 3852 } 3853 err = z.XinflateEnd(tls, bp+72) 3854 { 3855 if err != 0 { 3856 libc.Xfprintf(tls, libc.Xstderr, ts+20, libc.VaList(bp+48, ts+411, err)) 3857 libc.Xexit(tls, 1) 3858 } 3859 } 3860 3861 libc.Xprintf(tls, ts+611, libc.VaList(bp+64, uncompr)) 3862 } 3863 3864 // =========================================================================== 3865 // Test deflate() with preset dictionary 3866 func test_dict_deflate(tls *libc.TLS, compr uintptr, comprLen uLong) { /* example.c:457:6: */ 3867 bp := tls.Alloc(160) 3868 defer tls.Free(160) 3869 3870 // var c_stream z_stream at bp+48, 112 3871 // compression stream 3872 var err int32 3873 3874 (*z_stream)(unsafe.Pointer(bp + 48 /* &c_stream */)).zalloc = zalloc 3875 (*z_stream)(unsafe.Pointer(bp + 48 /* &c_stream */)).zfree = zfree 3876 (*z_stream)(unsafe.Pointer(bp + 48 /* &c_stream */)).opaque = uintptr(0) 3877 3878 err = z.XdeflateInit_(tls, bp+48, 9, ts+353, int32(unsafe.Sizeof(z_stream{}))) 3879 { 3880 if err != 0 { 3881 libc.Xfprintf(tls, libc.Xstderr, ts+20, libc.VaList(bp, ts+360, err)) 3882 libc.Xexit(tls, 1) 3883 } 3884 } 3885 3886 err = z.XdeflateSetDictionary(tls, bp+48, 3887 uintptr(uintptr(unsafe.Pointer(&dictionary))), uint32(int32(unsafe.Sizeof(dictionary)))) 3888 { 3889 if err != 0 { 3890 libc.Xfprintf(tls, libc.Xstderr, ts+20, libc.VaList(bp+16, ts+639, err)) 3891 libc.Xexit(tls, 1) 3892 } 3893 } 3894 3895 dictId = (*z_stream)(unsafe.Pointer(bp + 48 /* &c_stream */)).adler 3896 (*z_stream)(unsafe.Pointer(bp + 48 /* &c_stream */)).next_out = compr 3897 (*z_stream)(unsafe.Pointer(bp + 48 /* &c_stream */)).avail_out = uInt(comprLen) 3898 3899 (*z_stream)(unsafe.Pointer(bp + 48 /* &c_stream */)).next_in = uintptr(uintptr(unsafe.Pointer(&hello))) 3900 (*z_stream)(unsafe.Pointer(bp + 48 /* &c_stream */)).avail_in = uInt(libc.Xstrlen(tls, uintptr(unsafe.Pointer(&hello)))) + uInt(1) 3901 3902 err = z.Xdeflate(tls, bp+48, 4) 3903 if err != 1 { 3904 libc.Xfprintf(tls, libc.Xstderr, ts+470, 0) 3905 libc.Xexit(tls, 1) 3906 } 3907 err = z.XdeflateEnd(tls, bp+48) 3908 { 3909 if err != 0 { 3910 libc.Xfprintf(tls, libc.Xstderr, ts+20, libc.VaList(bp+32, ts+380, err)) 3911 libc.Xexit(tls, 1) 3912 } 3913 } 3914 3915 } 3916 3917 // =========================================================================== 3918 // Test inflate() with a preset dictionary 3919 func test_dict_inflate(tls *libc.TLS, compr uintptr, comprLen uLong, uncompr uintptr, uncomprLen uLong) { /* example.c:494:6: */ 3920 bp := tls.Alloc(168) 3921 defer tls.Free(168) 3922 3923 var err int32 3924 // var d_stream z_stream at bp+56, 112 3925 // decompression stream 3926 3927 libc.Xstrcpy(tls, uncompr, ts+43) 3928 3929 (*z_stream)(unsafe.Pointer(bp + 56 /* &d_stream */)).zalloc = zalloc 3930 (*z_stream)(unsafe.Pointer(bp + 56 /* &d_stream */)).zfree = zfree 3931 (*z_stream)(unsafe.Pointer(bp + 56 /* &d_stream */)).opaque = uintptr(0) 3932 3933 (*z_stream)(unsafe.Pointer(bp + 56 /* &d_stream */)).next_in = compr 3934 (*z_stream)(unsafe.Pointer(bp + 56 /* &d_stream */)).avail_in = uInt(comprLen) 3935 3936 err = z.XinflateInit_(tls, bp+56, ts+353, int32(unsafe.Sizeof(z_stream{}))) 3937 { 3938 if err != 0 { 3939 libc.Xfprintf(tls, libc.Xstderr, ts+20, libc.VaList(bp, ts+391, err)) 3940 libc.Xexit(tls, 1) 3941 } 3942 } 3943 3944 (*z_stream)(unsafe.Pointer(bp + 56 /* &d_stream */)).next_out = uncompr 3945 (*z_stream)(unsafe.Pointer(bp + 56 /* &d_stream */)).avail_out = uInt(uncomprLen) 3946 3947 for { 3948 err = z.Xinflate(tls, bp+56, 0) 3949 if err == 1 { 3950 break 3951 } 3952 if err == 2 { 3953 if (*z_stream)(unsafe.Pointer(bp+56)).adler != dictId { 3954 libc.Xfprintf(tls, libc.Xstderr, ts+660, 0) 3955 libc.Xexit(tls, 1) 3956 } 3957 err = z.XinflateSetDictionary(tls, bp+56, uintptr(uintptr(unsafe.Pointer(&dictionary))), 3958 uint32(int32(unsafe.Sizeof(dictionary)))) 3959 } 3960 { 3961 if err != 0 { 3962 libc.Xfprintf(tls, libc.Xstderr, ts+20, libc.VaList(bp+16, ts+682, err)) 3963 libc.Xexit(tls, 1) 3964 } 3965 } 3966 3967 } 3968 3969 err = z.XinflateEnd(tls, bp+56) 3970 { 3971 if err != 0 { 3972 libc.Xfprintf(tls, libc.Xstderr, ts+20, libc.VaList(bp+32, ts+411, err)) 3973 libc.Xexit(tls, 1) 3974 } 3975 } 3976 3977 if libc.Xstrcmp(tls, uncompr, uintptr(unsafe.Pointer(&hello))) != 0 { 3978 libc.Xfprintf(tls, libc.Xstderr, ts+700, 0) 3979 libc.Xexit(tls, 1) 3980 } else { 3981 libc.Xprintf(tls, ts+723, libc.VaList(bp+48, uncompr)) 3982 } 3983 } 3984 3985 // =========================================================================== 3986 // Usage: example [output.gz [input.gz]] 3987 3988 func main1(tls *libc.TLS, argc int32, argv uintptr) int32 { /* example.c:545:5: */ 3989 bp := tls.Alloc(32) 3990 defer tls.Free(32) 3991 3992 var compr uintptr 3993 var uncompr uintptr 3994 *(*uLong)(unsafe.Pointer(bp + 24 /* comprLen */)) = uint64(10000) * uint64(unsafe.Sizeof(int32(0))) // don't overflow on MSDOS 3995 var uncomprLen uLong = *(*uLong)(unsafe.Pointer(bp + 24 /* comprLen */)) 3996 3997 if int32(*(*uint8)(unsafe.Pointer(z.XzlibVersion(tls)))) != int32(*(*uint8)(unsafe.Pointer(myVersion))) { 3998 libc.Xfprintf(tls, libc.Xstderr, ts+752, 0) 3999 libc.Xexit(tls, 1) 4000 4001 } else if libc.Xstrcmp(tls, z.XzlibVersion(tls), ts+353) != 0 { 4002 libc.Xfprintf(tls, libc.Xstderr, ts+779, 0) 4003 } 4004 4005 libc.Xprintf(tls, ts+812, 4006 libc.VaList(bp, ts+353, 0x12b0, z.XzlibCompileFlags(tls))) 4007 4008 compr = libc.Xcalloc(tls, uint64(uInt(*(*uLong)(unsafe.Pointer(bp + 24 /* comprLen */)))), uint64(1)) 4009 uncompr = libc.Xcalloc(tls, uint64(uInt(uncomprLen)), uint64(1)) 4010 // compr and uncompr are cleared to avoid reading uninitialized 4011 // data and to ensure that uncompr compresses well. 4012 if compr == uintptr(0) || uncompr == uintptr(0) { 4013 libc.Xprintf(tls, ts+861, 0) 4014 libc.Xexit(tls, 1) 4015 } 4016 4017 test_compress(tls, compr, *(*uLong)(unsafe.Pointer(bp + 24 /* comprLen */)), uncompr, uncomprLen) 4018 4019 test_gzio(tls, func() uintptr { 4020 if argc > 1 { 4021 return *(*uintptr)(unsafe.Pointer(argv + 1*8)) 4022 } 4023 return ts + 876 4024 }(), 4025 uncompr, uncomprLen) 4026 4027 test_deflate(tls, compr, *(*uLong)(unsafe.Pointer(bp + 24 /* comprLen */))) 4028 test_inflate(tls, compr, *(*uLong)(unsafe.Pointer(bp + 24 /* comprLen */)), uncompr, uncomprLen) 4029 4030 test_large_deflate(tls, compr, *(*uLong)(unsafe.Pointer(bp + 24 /* comprLen */)), uncompr, uncomprLen) 4031 test_large_inflate(tls, compr, *(*uLong)(unsafe.Pointer(bp + 24 /* comprLen */)), uncompr, uncomprLen) 4032 4033 test_flush(tls, compr, bp+24) 4034 test_sync(tls, compr, *(*uLong)(unsafe.Pointer(bp + 24 /* comprLen */)), uncompr, uncomprLen) 4035 *(*uLong)(unsafe.Pointer(bp + 24 /* comprLen */)) = uncomprLen 4036 4037 test_dict_deflate(tls, compr, *(*uLong)(unsafe.Pointer(bp + 24 /* comprLen */))) 4038 test_dict_inflate(tls, compr, *(*uLong)(unsafe.Pointer(bp + 24 /* comprLen */)), uncompr, uncomprLen) 4039 4040 libc.Xfree(tls, compr) 4041 libc.Xfree(tls, uncompr) 4042 4043 return 0 4044 } 4045 4046 var myVersion uintptr = ts + 353 /* "1.2.11" */ /* example.c:552:22 */ 4047 4048 var ts1 = "hello, hello!\x00hello\x00%s error: %d\n\x00compress\x00garbage\x00uncompress\x00bad uncompress\n\x00uncompress(): %s\n\x00wb\x00gzopen error\n\x00ello\x00gzputs err: %s\n\x00, %s!\x00gzprintf err: %s\n\x00rb\x00gzread err: %s\n\x00bad gzread: %s\n\x00gzread(): %s\n\x00gzseek error, pos=%ld, gztell=%ld\n\x00gzgetc error\n\x00gzungetc error\n\x00gzgets err after gzseek: %s\n\x00bad gzgets after gzseek\n\x00gzgets() after gzseek: %s\n\x001.2.11\x00deflateInit\x00deflate\x00deflateEnd\x00inflateInit\x00inflate\x00inflateEnd\x00bad inflate\n\x00inflate(): %s\n\x00deflate not greedy\n\x00deflate should report Z_STREAM_END\n\x00large inflate\x00bad large inflate: %ld\n\x00large_inflate(): OK\n\x00inflateSync\x00inflate should report DATA_ERROR\n\x00after inflateSync(): hel%s\n\x00deflateSetDictionary\x00unexpected dictionary\x00inflate with dict\x00bad inflate with dict\n\x00inflate with dictionary: %s\n\x00incompatible zlib version\n\x00warning: different zlib version\n\x00zlib version %s = 0x%04x, compile flags = 0x%lx\n\x00out of memory\n\x00foo.gz\x00" 4049 var ts = (*reflect.StringHeader)(unsafe.Pointer(&ts1)).Data