summaryrefslogtreecommitdiffstats
path: root/vendor/modernc.org/libc
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/modernc.org/libc')
-rw-r--r--vendor/modernc.org/libc/CONTRIBUTORS1
-rw-r--r--vendor/modernc.org/libc/capi_linux_riscv64.go509
-rw-r--r--vendor/modernc.org/libc/errno/capi_linux_riscv64.go5
-rw-r--r--vendor/modernc.org/libc/errno/errno_linux_riscv64.go187
-rw-r--r--vendor/modernc.org/libc/fcntl/capi_linux_riscv64.go5
-rw-r--r--vendor/modernc.org/libc/fcntl/fcntl_linux_riscv64.go1346
-rw-r--r--vendor/modernc.org/libc/fts/capi_linux_riscv64.go5
-rw-r--r--vendor/modernc.org/libc/fts/fts_linux_riscv64.go2156
-rw-r--r--vendor/modernc.org/libc/grp/capi_linux_riscv64.go5
-rw-r--r--vendor/modernc.org/libc/grp/grp_linux_riscv64.go953
-rw-r--r--vendor/modernc.org/libc/honnef.co/go/netdb/netdb.go5
-rw-r--r--vendor/modernc.org/libc/langinfo/capi_linux_riscv64.go5
-rw-r--r--vendor/modernc.org/libc/langinfo/langinfo_linux_riscv64.go1195
-rw-r--r--vendor/modernc.org/libc/libc64.go4
-rw-r--r--vendor/modernc.org/libc/libc_linux.go168
-rw-r--r--vendor/modernc.org/libc/libc_linux_riscv64.go413
-rw-r--r--vendor/modernc.org/libc/limits/capi_linux_riscv64.go5
-rw-r--r--vendor/modernc.org/libc/limits/limits_linux_riscv64.go1153
-rw-r--r--vendor/modernc.org/libc/musl_linux_riscv64.go6997
-rw-r--r--vendor/modernc.org/libc/netdb/capi_linux_riscv64.go5
-rw-r--r--vendor/modernc.org/libc/netdb/netdb_linux_riscv64.go3280
-rw-r--r--vendor/modernc.org/libc/netinet/in/capi_linux_riscv64.go5
-rw-r--r--vendor/modernc.org/libc/netinet/in/in_linux_riscv64.go2990
-rw-r--r--vendor/modernc.org/libc/poll/capi_linux_riscv64.go5
-rw-r--r--vendor/modernc.org/libc/poll/poll_linux_riscv64.go677
-rw-r--r--vendor/modernc.org/libc/pthread/capi_linux_riscv64.go5
-rw-r--r--vendor/modernc.org/libc/pthread/pthread_linux_riscv64.go2201
-rw-r--r--vendor/modernc.org/libc/pwd/capi_linux_riscv64.go5
-rw-r--r--vendor/modernc.org/libc/pwd/pwd_linux_riscv64.go958
-rw-r--r--vendor/modernc.org/libc/signal/capi_linux_riscv64.go5
-rw-r--r--vendor/modernc.org/libc/signal/more_linux_riscv64.go12
-rw-r--r--vendor/modernc.org/libc/signal/signal_linux_riscv64.go2359
-rw-r--r--vendor/modernc.org/libc/stdio/capi_linux_riscv64.go5
-rw-r--r--vendor/modernc.org/libc/stdio/stdio_linux_riscv64.go589
-rw-r--r--vendor/modernc.org/libc/stdlib/capi_linux_riscv64.go5
-rw-r--r--vendor/modernc.org/libc/stdlib/stdlib_linux_riscv64.go1591
-rw-r--r--vendor/modernc.org/libc/sys/socket/capi_linux_riscv64.go5
-rw-r--r--vendor/modernc.org/libc/sys/socket/socket_linux_riscv64.go1909
-rw-r--r--vendor/modernc.org/libc/sys/stat/capi_linux_riscv64.go5
-rw-r--r--vendor/modernc.org/libc/sys/stat/stat_linux_riscv64.go1163
-rw-r--r--vendor/modernc.org/libc/sys/types/capi_linux_riscv64.go5
-rw-r--r--vendor/modernc.org/libc/sys/types/types_linux_riscv64.go1715
-rw-r--r--vendor/modernc.org/libc/termios/capi_linux_riscv64.go5
-rw-r--r--vendor/modernc.org/libc/termios/termios_linux_riscv64.go1194
-rw-r--r--vendor/modernc.org/libc/time/capi_linux_riscv64.go5
-rw-r--r--vendor/modernc.org/libc/time/time_linux_riscv64.go711
-rw-r--r--vendor/modernc.org/libc/unistd/capi_linux_riscv64.go5
-rw-r--r--vendor/modernc.org/libc/unistd/unistd_linux_riscv64.go1776
-rw-r--r--vendor/modernc.org/libc/utime/capi_linux_riscv64.go5
-rw-r--r--vendor/modernc.org/libc/utime/utime_linux_riscv64.go951
-rw-r--r--vendor/modernc.org/libc/uuid/uuid/capi_linux_riscv64.go5
-rw-r--r--vendor/modernc.org/libc/uuid/uuid/uuid_linux_riscv64.go1975
-rw-r--r--vendor/modernc.org/libc/wctype/capi_linux_riscv64.go5
-rw-r--r--vendor/modernc.org/libc/wctype/wctype_linux_riscv64.go1121
54 files changed, 42371 insertions, 3 deletions
diff --git a/vendor/modernc.org/libc/CONTRIBUTORS b/vendor/modernc.org/libc/CONTRIBUTORS
index 65a90f50..2bed7daf 100644
--- a/vendor/modernc.org/libc/CONTRIBUTORS
+++ b/vendor/modernc.org/libc/CONTRIBUTORS
@@ -14,3 +14,4 @@ Jason DeBettencourt <jasond17@gmail.com>
Koichi Shiraishi <zchee.io@gmail.com>
Marius Orcsik <marius@federated.id>
Steffen Butzer <steffen(dot)butzer@outlook.com>
+ZHU Zijia <piggynl@outlook.com>
diff --git a/vendor/modernc.org/libc/capi_linux_riscv64.go b/vendor/modernc.org/libc/capi_linux_riscv64.go
new file mode 100644
index 00000000..b6f3b2a0
--- /dev/null
+++ b/vendor/modernc.org/libc/capi_linux_riscv64.go
@@ -0,0 +1,509 @@
+// Code generated by 'go generate' - DO NOT EDIT.
+
+package libc // import "modernc.org/libc"
+
+var CAPI = map[string]struct{}{
+ "_IO_putc": {},
+ "___errno_location": {},
+ "__assert_fail": {},
+ "__builtin___memcpy_chk": {},
+ "__builtin___memmove_chk": {},
+ "__builtin___memset_chk": {},
+ "__builtin___snprintf_chk": {},
+ "__builtin___sprintf_chk": {},
+ "__builtin___strcat_chk": {},
+ "__builtin___strcpy_chk": {},
+ "__builtin___strncpy_chk": {},
+ "__builtin___vsnprintf_chk": {},
+ "__builtin_abort": {},
+ "__builtin_abs": {},
+ "__builtin_add_overflowInt64": {},
+ "__builtin_add_overflowUint32": {},
+ "__builtin_add_overflowUint64": {},
+ "__builtin_bswap16": {},
+ "__builtin_bswap32": {},
+ "__builtin_bswap64": {},
+ "__builtin_bzero": {},
+ "__builtin_clz": {},
+ "__builtin_clzl": {},
+ "__builtin_clzll": {},
+ "__builtin_constant_p_impl": {},
+ "__builtin_copysign": {},
+ "__builtin_copysignf": {},
+ "__builtin_copysignl": {},
+ "__builtin_exit": {},
+ "__builtin_expect": {},
+ "__builtin_fabs": {},
+ "__builtin_fabsf": {},
+ "__builtin_fabsl": {},
+ "__builtin_free": {},
+ "__builtin_getentropy": {},
+ "__builtin_huge_val": {},
+ "__builtin_huge_valf": {},
+ "__builtin_inf": {},
+ "__builtin_inff": {},
+ "__builtin_infl": {},
+ "__builtin_isnan": {},
+ "__builtin_isunordered": {},
+ "__builtin_malloc": {},
+ "__builtin_memcmp": {},
+ "__builtin_memcpy": {},
+ "__builtin_memset": {},
+ "__builtin_mmap": {},
+ "__builtin_mul_overflowInt64": {},
+ "__builtin_mul_overflowUint128": {},
+ "__builtin_mul_overflowUint64": {},
+ "__builtin_nan": {},
+ "__builtin_nanf": {},
+ "__builtin_nanl": {},
+ "__builtin_object_size": {},
+ "__builtin_popcount": {},
+ "__builtin_popcountl": {},
+ "__builtin_prefetch": {},
+ "__builtin_printf": {},
+ "__builtin_snprintf": {},
+ "__builtin_sprintf": {},
+ "__builtin_strchr": {},
+ "__builtin_strcmp": {},
+ "__builtin_strcpy": {},
+ "__builtin_strlen": {},
+ "__builtin_sub_overflowInt64": {},
+ "__builtin_trap": {},
+ "__builtin_unreachable": {},
+ "__ccgo_dmesg": {},
+ "__ccgo_getMutexType": {},
+ "__ccgo_in6addr_anyp": {},
+ "__ccgo_pthreadAttrGetDetachState": {},
+ "__ccgo_pthreadMutexattrGettype": {},
+ "__ccgo_sqlite3_log": {},
+ "__cmsg_nxthdr": {},
+ "__ctype_b_loc": {},
+ "__ctype_get_mb_cur_max": {},
+ "__errno_location": {},
+ "__floatscan": {},
+ "__fpclassify": {},
+ "__fpclassifyf": {},
+ "__fpclassifyl": {},
+ "__fsmu8": {},
+ "__h_errno_location": {},
+ "__inet_aton": {},
+ "__intscan": {},
+ "__isalnum_l": {},
+ "__isalpha_l": {},
+ "__isdigit_l": {},
+ "__islower_l": {},
+ "__isnan": {},
+ "__isnanf": {},
+ "__isnanl": {},
+ "__isoc99_sscanf": {},
+ "__isprint_l": {},
+ "__isupper_l": {},
+ "__isxdigit_l": {},
+ "__lockfile": {},
+ "__lookup_ipliteral": {},
+ "__lookup_name": {},
+ "__lookup_serv": {},
+ "__shgetc": {},
+ "__shlim": {},
+ "__strncasecmp_l": {},
+ "__sync_add_and_fetch_uint32": {},
+ "__sync_sub_and_fetch_uint32": {},
+ "__syscall1": {},
+ "__syscall3": {},
+ "__syscall4": {},
+ "__toread": {},
+ "__toread_needs_stdio_exit": {},
+ "__uflow": {},
+ "__unlockfile": {},
+ "_exit": {},
+ "_longjmp": {},
+ "_obstack_begin": {},
+ "_obstack_newchunk": {},
+ "_setjmp": {},
+ "abort": {},
+ "abs": {},
+ "accept": {},
+ "access": {},
+ "acos": {},
+ "acosh": {},
+ "alarm": {},
+ "asin": {},
+ "asinh": {},
+ "atan": {},
+ "atan2": {},
+ "atanh": {},
+ "atexit": {},
+ "atof": {},
+ "atoi": {},
+ "atol": {},
+ "backtrace": {},
+ "backtrace_symbols_fd": {},
+ "bind": {},
+ "bsearch": {},
+ "bzero": {},
+ "calloc": {},
+ "ceil": {},
+ "ceilf": {},
+ "cfgetospeed": {},
+ "cfsetispeed": {},
+ "cfsetospeed": {},
+ "chdir": {},
+ "chmod": {},
+ "chown": {},
+ "clock_gettime": {},
+ "close": {},
+ "closedir": {},
+ "confstr": {},
+ "connect": {},
+ "copysign": {},
+ "copysignf": {},
+ "copysignl": {},
+ "cos": {},
+ "cosf": {},
+ "cosh": {},
+ "ctime": {},
+ "ctime_r": {},
+ "dlclose": {},
+ "dlerror": {},
+ "dlopen": {},
+ "dlsym": {},
+ "dup2": {},
+ "endpwent": {},
+ "environ": {},
+ "execvp": {},
+ "exit": {},
+ "exp": {},
+ "fabs": {},
+ "fabsf": {},
+ "fabsl": {},
+ "fchmod": {},
+ "fchown": {},
+ "fclose": {},
+ "fcntl": {},
+ "fcntl64": {},
+ "fdopen": {},
+ "ferror": {},
+ "fflush": {},
+ "fgetc": {},
+ "fgets": {},
+ "fileno": {},
+ "floor": {},
+ "fmod": {},
+ "fmodl": {},
+ "fopen": {},
+ "fopen64": {},
+ "fork": {},
+ "fprintf": {},
+ "fputc": {},
+ "fputs": {},
+ "fread": {},
+ "free": {},
+ "freeaddrinfo": {},
+ "frexp": {},
+ "fscanf": {},
+ "fseek": {},
+ "fstat": {},
+ "fstat64": {},
+ "fstatfs": {},
+ "fsync": {},
+ "ftell": {},
+ "ftruncate": {},
+ "ftruncate64": {},
+ "fts64_close": {},
+ "fts64_open": {},
+ "fts64_read": {},
+ "fts_close": {},
+ "fts_open": {},
+ "fts_read": {},
+ "fwrite": {},
+ "gai_strerror": {},
+ "getaddrinfo": {},
+ "getc": {},
+ "getcwd": {},
+ "getegid": {},
+ "getentropy": {},
+ "getenv": {},
+ "geteuid": {},
+ "getgid": {},
+ "getgrgid": {},
+ "getgrgid_r": {},
+ "getgrnam": {},
+ "getgrnam_r": {},
+ "gethostbyaddr": {},
+ "gethostbyaddr_r": {},
+ "gethostbyname": {},
+ "gethostbyname2": {},
+ "gethostbyname2_r": {},
+ "gethostbyname_r": {},
+ "gethostname": {},
+ "getnameinfo": {},
+ "getpeername": {},
+ "getpid": {},
+ "getpwnam": {},
+ "getpwnam_r": {},
+ "getpwuid": {},
+ "getpwuid_r": {},
+ "getrandom": {},
+ "getresgid": {},
+ "getresuid": {},
+ "getrlimit": {},
+ "getrlimit64": {},
+ "getrusage": {},
+ "getservbyname": {},
+ "getsockname": {},
+ "getsockopt": {},
+ "gettimeofday": {},
+ "getuid": {},
+ "gmtime_r": {},
+ "h_errno": {},
+ "htonl": {},
+ "htons": {},
+ "hypot": {},
+ "inet_ntoa": {},
+ "inet_ntop": {},
+ "inet_pton": {},
+ "initstate": {},
+ "initstate_r": {},
+ "ioctl": {},
+ "isalnum": {},
+ "isalpha": {},
+ "isascii": {},
+ "isatty": {},
+ "isdigit": {},
+ "islower": {},
+ "isnan": {},
+ "isnanf": {},
+ "isnanl": {},
+ "isprint": {},
+ "isupper": {},
+ "iswalnum": {},
+ "iswspace": {},
+ "isxdigit": {},
+ "kill": {},
+ "ldexp": {},
+ "link": {},
+ "listen": {},
+ "localeconv": {},
+ "localtime": {},
+ "localtime_r": {},
+ "log": {},
+ "log10": {},
+ "longjmp": {},
+ "lrand48": {},
+ "lseek": {},
+ "lseek64": {},
+ "lstat": {},
+ "lstat64": {},
+ "malloc": {},
+ "mblen": {},
+ "mbrtowc": {},
+ "mbsinit": {},
+ "mbstowcs": {},
+ "mbtowc": {},
+ "memchr": {},
+ "memcmp": {},
+ "memcpy": {},
+ "memmove": {},
+ "memset": {},
+ "mkdir": {},
+ "mkfifo": {},
+ "mknod": {},
+ "mkostemp": {},
+ "mkstemp": {},
+ "mkstemp64": {},
+ "mkstemps": {},
+ "mkstemps64": {},
+ "mktime": {},
+ "mmap": {},
+ "mmap64": {},
+ "modf": {},
+ "mremap": {},
+ "munmap": {},
+ "nanf": {},
+ "nl_langinfo": {},
+ "ntohs": {},
+ "obstack_free": {},
+ "obstack_vprintf": {},
+ "open": {},
+ "open64": {},
+ "opendir": {},
+ "openpty": {},
+ "pathconf": {},
+ "pause": {},
+ "pclose": {},
+ "perror": {},
+ "pipe": {},
+ "poll": {},
+ "popen": {},
+ "posix_fadvise": {},
+ "pow": {},
+ "printf": {},
+ "pselect": {},
+ "pthread_attr_destroy": {},
+ "pthread_attr_getdetachstate": {},
+ "pthread_attr_init": {},
+ "pthread_attr_setdetachstate": {},
+ "pthread_attr_setscope": {},
+ "pthread_attr_setstacksize": {},
+ "pthread_cond_broadcast": {},
+ "pthread_cond_destroy": {},
+ "pthread_cond_init": {},
+ "pthread_cond_signal": {},
+ "pthread_cond_timedwait": {},
+ "pthread_cond_wait": {},
+ "pthread_create": {},
+ "pthread_detach": {},
+ "pthread_equal": {},
+ "pthread_exit": {},
+ "pthread_getspecific": {},
+ "pthread_join": {},
+ "pthread_key_create": {},
+ "pthread_key_delete": {},
+ "pthread_mutex_destroy": {},
+ "pthread_mutex_init": {},
+ "pthread_mutex_lock": {},
+ "pthread_mutex_trylock": {},
+ "pthread_mutex_unlock": {},
+ "pthread_mutexattr_destroy": {},
+ "pthread_mutexattr_init": {},
+ "pthread_mutexattr_settype": {},
+ "pthread_self": {},
+ "pthread_setspecific": {},
+ "putc": {},
+ "putchar": {},
+ "puts": {},
+ "pwrite": {},
+ "qsort": {},
+ "raise": {},
+ "rand": {},
+ "rand_r": {},
+ "random": {},
+ "random_r": {},
+ "read": {},
+ "readdir": {},
+ "readdir64": {},
+ "readlink": {},
+ "readv": {},
+ "realloc": {},
+ "reallocarray": {},
+ "realpath": {},
+ "recv": {},
+ "recvfrom": {},
+ "recvmsg": {},
+ "remove": {},
+ "rename": {},
+ "rewind": {},
+ "rindex": {},
+ "rint": {},
+ "rmdir": {},
+ "round": {},
+ "scalbn": {},
+ "scalbnl": {},
+ "sched_yield": {},
+ "select": {},
+ "send": {},
+ "sendmsg": {},
+ "sendto": {},
+ "setbuf": {},
+ "setenv": {},
+ "setjmp": {},
+ "setlocale": {},
+ "setrlimit": {},
+ "setrlimit64": {},
+ "setsid": {},
+ "setsockopt": {},
+ "setstate": {},
+ "setvbuf": {},
+ "shmat": {},
+ "shmctl": {},
+ "shmdt": {},
+ "shutdown": {},
+ "sigaction": {},
+ "signal": {},
+ "sin": {},
+ "sinf": {},
+ "sinh": {},
+ "sleep": {},
+ "snprintf": {},
+ "socket": {},
+ "sprintf": {},
+ "sqrt": {},
+ "srand48": {},
+ "sscanf": {},
+ "stat": {},
+ "stat64": {},
+ "stderr": {},
+ "stdin": {},
+ "stdout": {},
+ "strcasecmp": {},
+ "strcat": {},
+ "strchr": {},
+ "strcmp": {},
+ "strcpy": {},
+ "strcspn": {},
+ "strdup": {},
+ "strerror": {},
+ "strerror_r": {},
+ "strlcat": {},
+ "strlcpy": {},
+ "strlen": {},
+ "strncasecmp": {},
+ "strncat": {},
+ "strncmp": {},
+ "strncpy": {},
+ "strnlen": {},
+ "strpbrk": {},
+ "strrchr": {},
+ "strspn": {},
+ "strstr": {},
+ "strtod": {},
+ "strtof": {},
+ "strtoimax": {},
+ "strtok": {},
+ "strtol": {},
+ "strtold": {},
+ "strtoll": {},
+ "strtoul": {},
+ "strtoull": {},
+ "strtoumax": {},
+ "symlink": {},
+ "sysconf": {},
+ "system": {},
+ "tan": {},
+ "tanh": {},
+ "tcgetattr": {},
+ "tcsendbreak": {},
+ "tcsetattr": {},
+ "time": {},
+ "tmpfile": {},
+ "tolower": {},
+ "toupper": {},
+ "trunc": {},
+ "tzset": {},
+ "umask": {},
+ "uname": {},
+ "ungetc": {},
+ "unlink": {},
+ "unsetenv": {},
+ "usleep": {},
+ "utime": {},
+ "utimes": {},
+ "uuid_copy": {},
+ "uuid_generate_random": {},
+ "uuid_parse": {},
+ "uuid_unparse": {},
+ "vasprintf": {},
+ "vfprintf": {},
+ "vfscanf": {},
+ "vprintf": {},
+ "vsnprintf": {},
+ "vsprintf": {},
+ "vsscanf": {},
+ "waitpid": {},
+ "wcschr": {},
+ "wctomb": {},
+ "wcwidth": {},
+ "write": {},
+ "writev": {},
+ "zero_struct_address": {},
+}
diff --git a/vendor/modernc.org/libc/errno/capi_linux_riscv64.go b/vendor/modernc.org/libc/errno/capi_linux_riscv64.go
new file mode 100644
index 00000000..630300a3
--- /dev/null
+++ b/vendor/modernc.org/libc/errno/capi_linux_riscv64.go
@@ -0,0 +1,5 @@
+// Code generated by 'ccgo errno/gen.c -crt-import-path -export-defines -export-enums -export-externs X -export-fields F -export-structs -export-typedefs -header -hide _OSSwapInt16,_OSSwapInt32,_OSSwapInt64 -o errno/errno_linux_riscv64.go -pkgname errno', DO NOT EDIT.
+
+package errno
+
+var CAPI = map[string]struct{}{}
diff --git a/vendor/modernc.org/libc/errno/errno_linux_riscv64.go b/vendor/modernc.org/libc/errno/errno_linux_riscv64.go
new file mode 100644
index 00000000..6da77ca0
--- /dev/null
+++ b/vendor/modernc.org/libc/errno/errno_linux_riscv64.go
@@ -0,0 +1,187 @@
+// Code generated by 'ccgo errno/gen.c -crt-import-path "" -export-defines "" -export-enums "" -export-externs X -export-fields F -export-structs "" -export-typedefs "" -header -hide _OSSwapInt16,_OSSwapInt32,_OSSwapInt64 -o errno/errno_linux_riscv64.go -pkgname errno', DO NOT EDIT.
+
+package errno
+
+import (
+ "math"
+ "reflect"
+ "sync/atomic"
+ "unsafe"
+)
+
+var _ = math.Pi
+var _ reflect.Kind
+var _ atomic.Value
+var _ unsafe.Pointer
+
+const (
+ E2BIG = 7
+ EACCES = 13
+ EADDRINUSE = 98
+ EADDRNOTAVAIL = 99
+ EADV = 68
+ EAFNOSUPPORT = 97
+ EAGAIN = 11
+ EALREADY = 114
+ EBADE = 52
+ EBADF = 9
+ EBADFD = 77
+ EBADMSG = 74
+ EBADR = 53
+ EBADRQC = 56
+ EBADSLT = 57
+ EBFONT = 59
+ EBUSY = 16
+ ECANCELED = 125
+ ECHILD = 10
+ ECHRNG = 44
+ ECOMM = 70
+ ECONNABORTED = 103
+ ECONNREFUSED = 111
+ ECONNRESET = 104
+ EDEADLK = 35
+ EDEADLOCK = 35
+ EDESTADDRREQ = 89
+ EDOM = 33
+ EDOTDOT = 73
+ EDQUOT = 122
+ EEXIST = 17
+ EFAULT = 14
+ EFBIG = 27
+ EHOSTDOWN = 112
+ EHOSTUNREACH = 113
+ EHWPOISON = 133
+ EIDRM = 43
+ EILSEQ = 84
+ EINPROGRESS = 115
+ EINTR = 4
+ EINVAL = 22
+ EIO = 5
+ EISCONN = 106
+ EISDIR = 21
+ EISNAM = 120
+ EKEYEXPIRED = 127
+ EKEYREJECTED = 129
+ EKEYREVOKED = 128
+ EL2HLT = 51
+ EL2NSYNC = 45
+ EL3HLT = 46
+ EL3RST = 47
+ ELIBACC = 79
+ ELIBBAD = 80
+ ELIBEXEC = 83
+ ELIBMAX = 82
+ ELIBSCN = 81
+ ELNRNG = 48
+ ELOOP = 40
+ EMEDIUMTYPE = 124
+ EMFILE = 24
+ EMLINK = 31
+ EMSGSIZE = 90
+ EMULTIHOP = 72
+ ENAMETOOLONG = 36
+ ENAVAIL = 119
+ ENETDOWN = 100
+ ENETRESET = 102
+ ENETUNREACH = 101
+ ENFILE = 23
+ ENOANO = 55
+ ENOBUFS = 105
+ ENOCSI = 50
+ ENODATA = 61
+ ENODEV = 19
+ ENOENT = 2
+ ENOEXEC = 8
+ ENOKEY = 126
+ ENOLCK = 37
+ ENOLINK = 67
+ ENOMEDIUM = 123
+ ENOMEM = 12
+ ENOMSG = 42
+ ENONET = 64
+ ENOPKG = 65
+ ENOPROTOOPT = 92
+ ENOSPC = 28
+ ENOSR = 63
+ ENOSTR = 60
+ ENOSYS = 38
+ ENOTBLK = 15
+ ENOTCONN = 107
+ ENOTDIR = 20
+ ENOTEMPTY = 39
+ ENOTNAM = 118
+ ENOTRECOVERABLE = 131
+ ENOTSOCK = 88
+ ENOTSUP = 95
+ ENOTTY = 25
+ ENOTUNIQ = 76
+ ENXIO = 6
+ EOPNOTSUPP = 95
+ EOVERFLOW = 75
+ EOWNERDEAD = 130
+ EPERM = 1
+ EPFNOSUPPORT = 96
+ EPIPE = 32
+ EPROTO = 71
+ EPROTONOSUPPORT = 93
+ EPROTOTYPE = 91
+ ERANGE = 34
+ EREMCHG = 78
+ EREMOTE = 66
+ EREMOTEIO = 121
+ ERESTART = 85
+ ERFKILL = 132
+ EROFS = 30
+ ESHUTDOWN = 108
+ ESOCKTNOSUPPORT = 94
+ ESPIPE = 29
+ ESRCH = 3
+ ESRMNT = 69
+ ESTALE = 116
+ ESTRPIPE = 86
+ ETIME = 62
+ ETIMEDOUT = 110
+ ETOOMANYREFS = 109
+ ETXTBSY = 26
+ EUCLEAN = 117
+ EUNATCH = 49
+ EUSERS = 87
+ EWOULDBLOCK = 11
+ EXDEV = 18
+ EXFULL = 54
+ X_ASM_GENERIC_ERRNO_BASE_H = 0
+ X_ASM_GENERIC_ERRNO_H = 0
+ X_ATFILE_SOURCE = 1
+ X_BITS_ERRNO_H = 1
+ X_DEFAULT_SOURCE = 1
+ X_ERRNO_H = 1
+ X_FEATURES_H = 1
+ X_FILE_OFFSET_BITS = 64
+ X_LP64 = 1
+ X_POSIX_C_SOURCE = 200809
+ X_POSIX_SOURCE = 1
+ X_STDC_PREDEF_H = 1
+ X_SYS_CDEFS_H = 1
+ Linux = 1
+ Unix = 1
+)
+
+type Ptrdiff_t = int64 /* <builtin>:3:26 */
+
+type Size_t = uint64 /* <builtin>:9:23 */
+
+type Wchar_t = int32 /* <builtin>:15:24 */
+
+type X__int128_t = struct {
+ Flo int64
+ Fhi int64
+} /* <builtin>:21:43 */ // must match modernc.org/mathutil.Int128
+type X__uint128_t = struct {
+ Flo uint64
+ Fhi uint64
+} /* <builtin>:22:44 */ // must match modernc.org/mathutil.Int128
+
+type X__builtin_va_list = uintptr /* <builtin>:46:14 */
+type X__float128 = float64 /* <builtin>:47:21 */
+
+var _ uint8 /* gen.c:2:13: */
diff --git a/vendor/modernc.org/libc/fcntl/capi_linux_riscv64.go b/vendor/modernc.org/libc/fcntl/capi_linux_riscv64.go
new file mode 100644
index 00000000..abbc7779
--- /dev/null
+++ b/vendor/modernc.org/libc/fcntl/capi_linux_riscv64.go
@@ -0,0 +1,5 @@
+// Code generated by 'ccgo fcntl/gen.c -crt-import-path -export-defines -export-enums -export-externs X -export-fields F -export-structs -export-typedefs -header -hide _OSSwapInt16,_OSSwapInt32,_OSSwapInt64 -o fcntl/fcntl_linux_riscv64.go -pkgname fcntl', DO NOT EDIT.
+
+package fcntl
+
+var CAPI = map[string]struct{}{}
diff --git a/vendor/modernc.org/libc/fcntl/fcntl_linux_riscv64.go b/vendor/modernc.org/libc/fcntl/fcntl_linux_riscv64.go
new file mode 100644
index 00000000..e3c1e192
--- /dev/null
+++ b/vendor/modernc.org/libc/fcntl/fcntl_linux_riscv64.go
@@ -0,0 +1,1346 @@
+// Code generated by 'ccgo fcntl/gen.c -crt-import-path "" -export-defines "" -export-enums "" -export-externs X -export-fields F -export-structs "" -export-typedefs "" -header -hide _OSSwapInt16,_OSSwapInt32,_OSSwapInt64 -o fcntl/fcntl_linux_riscv64.go -pkgname fcntl', DO NOT EDIT.
+
+package fcntl
+
+import (
+ "math"
+ "reflect"
+ "sync/atomic"
+ "unsafe"
+)
+
+var _ = math.Pi
+var _ reflect.Kind
+var _ atomic.Value
+var _ unsafe.Pointer
+
+const (
+ AT_EACCESS = 0x200
+ AT_FDCWD = -100
+ AT_REMOVEDIR = 0x200
+ AT_SYMLINK_FOLLOW = 0x400
+ AT_SYMLINK_NOFOLLOW = 0x100
+ FAPPEND = 1024
+ FASYNC = 8192
+ FD_CLOEXEC = 1
+ FFSYNC = 1052672
+ FNDELAY = 2048
+ FNONBLOCK = 2048
+ F_DUPFD = 0
+ F_DUPFD_CLOEXEC = 1030
+ F_EXLCK = 4
+ F_GETFD = 1
+ F_GETFL = 3
+ F_GETLK = 5
+ F_GETLK64 = 5
+ F_GETOWN = 9
+ F_LOCK = 1
+ F_OK = 0
+ F_RDLCK = 0
+ F_SETFD = 2
+ F_SETFL = 4
+ F_SETLK = 6
+ F_SETLK64 = 6
+ F_SETLKW = 7
+ F_SETLKW64 = 7
+ F_SETOWN = 8
+ F_SHLCK = 8
+ F_TEST = 3
+ F_TLOCK = 2
+ F_ULOCK = 0
+ F_UNLCK = 2
+ F_WRLCK = 1
+ LOCK_EX = 2
+ LOCK_NB = 4
+ LOCK_SH = 1
+ LOCK_UN = 8
+ O_ACCMODE = 0003
+ O_APPEND = 02000
+ O_ASYNC = 020000
+ O_CLOEXEC = 524288
+ O_CREAT = 0100
+ O_DIRECTORY = 65536
+ O_DSYNC = 4096
+ O_EXCL = 0200
+ O_FSYNC = 1052672
+ O_NDELAY = 2048
+ O_NOCTTY = 0400
+ O_NOFOLLOW = 131072
+ O_NONBLOCK = 04000
+ O_RDONLY = 00
+ O_RDWR = 02
+ O_RSYNC = 1052672
+ O_SYNC = 04010000
+ O_TRUNC = 01000
+ O_WRONLY = 01
+ POSIX_FADV_DONTNEED = 4
+ POSIX_FADV_NOREUSE = 5
+ POSIX_FADV_NORMAL = 0
+ POSIX_FADV_RANDOM = 1
+ POSIX_FADV_SEQUENTIAL = 2
+ POSIX_FADV_WILLNEED = 3
+ R_OK = 4
+ SEEK_CUR = 1
+ SEEK_END = 2
+ SEEK_SET = 0
+ S_IFBLK = 24576
+ S_IFCHR = 8192
+ S_IFDIR = 16384
+ S_IFIFO = 4096
+ S_IFLNK = 40960
+ S_IFMT = 61440
+ S_IFREG = 32768
+ S_IFSOCK = 49152
+ S_IRGRP = 32
+ S_IROTH = 4
+ S_IRUSR = 256
+ S_IRWXG = 56
+ S_IRWXO = 7
+ S_IRWXU = 448
+ S_ISGID = 1024
+ S_ISUID = 2048
+ S_ISVTX = 512
+ S_IWGRP = 16
+ S_IWOTH = 2
+ S_IWUSR = 128
+ S_IXGRP = 8
+ S_IXOTH = 1
+ S_IXUSR = 64
+ UTIME_NOW = 1073741823
+ UTIME_OMIT = 1073741822
+ W_OK = 2
+ X_OK = 1
+ X_ATFILE_SOURCE = 1
+ X_BITS_ENDIANNESS_H = 1
+ X_BITS_ENDIAN_H = 1
+ X_BITS_STAT_H = 1
+ X_BITS_STRUCT_STAT_H = 1
+ X_BITS_TIME64_H = 1
+ X_BITS_TYPESIZES_H = 1
+ X_BITS_TYPES_H = 1
+ X_DEFAULT_SOURCE = 1
+ X_FCNTL_H = 1
+ X_FEATURES_H = 1
+ X_FILE_OFFSET_BITS = 64
+ X_LP64 = 1
+ X_POSIX_C_SOURCE = 200809
+ X_POSIX_SOURCE = 1
+ X_STATBUF_ST_BLKSIZE = 0
+ X_STATBUF_ST_NSEC = 0
+ X_STATBUF_ST_RDEV = 0
+ X_STDC_PREDEF_H = 1
+ X_STRUCT_TIMESPEC = 1
+ X_SYS_CDEFS_H = 1
+ Linux = 1
+ Unix = 1
+)
+
+type Ptrdiff_t = int64 /* <builtin>:3:26 */
+
+type Size_t = uint64 /* <builtin>:9:23 */
+
+type Wchar_t = int32 /* <builtin>:15:24 */
+
+type X__int128_t = struct {
+ Flo int64
+ Fhi int64
+} /* <builtin>:21:43 */ // must match modernc.org/mathutil.Int128
+type X__uint128_t = struct {
+ Flo uint64
+ Fhi uint64
+} /* <builtin>:22:44 */ // must match modernc.org/mathutil.Int128
+
+type X__builtin_va_list = uintptr /* <builtin>:46:14 */
+type X__float128 = float64 /* <builtin>:47:21 */
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// POSIX Standard: 6.5 File Control Operations <fcntl.h>
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// These are defined by the user (or the compiler)
+// to specify the desired environment:
+//
+// __STRICT_ANSI__ ISO Standard C.
+// _ISOC99_SOURCE Extensions to ISO C89 from ISO C99.
+// _ISOC11_SOURCE Extensions to ISO C99 from ISO C11.
+// _ISOC2X_SOURCE Extensions to ISO C99 from ISO C2X.
+// __STDC_WANT_LIB_EXT2__
+// Extensions to ISO C99 from TR 27431-2:2010.
+// __STDC_WANT_IEC_60559_BFP_EXT__
+// Extensions to ISO C11 from TS 18661-1:2014.
+// __STDC_WANT_IEC_60559_FUNCS_EXT__
+// Extensions to ISO C11 from TS 18661-4:2015.
+// __STDC_WANT_IEC_60559_TYPES_EXT__
+// Extensions to ISO C11 from TS 18661-3:2015.
+// __STDC_WANT_IEC_60559_EXT__
+// ISO C2X interfaces defined only in Annex F.
+//
+// _POSIX_SOURCE IEEE Std 1003.1.
+// _POSIX_C_SOURCE If ==1, like _POSIX_SOURCE; if >=2 add IEEE Std 1003.2;
+// if >=199309L, add IEEE Std 1003.1b-1993;
+// if >=199506L, add IEEE Std 1003.1c-1995;
+// if >=200112L, all of IEEE 1003.1-2004
+// if >=200809L, all of IEEE 1003.1-2008
+// _XOPEN_SOURCE Includes POSIX and XPG things. Set to 500 if
+// Single Unix conformance is wanted, to 600 for the
+// sixth revision, to 700 for the seventh revision.
+// _XOPEN_SOURCE_EXTENDED XPG things and X/Open Unix extensions.
+// _LARGEFILE_SOURCE Some more functions for correct standard I/O.
+// _LARGEFILE64_SOURCE Additional functionality from LFS for large files.
+// _FILE_OFFSET_BITS=N Select default filesystem interface.
+// _ATFILE_SOURCE Additional *at interfaces.
+// _DYNAMIC_STACK_SIZE_SOURCE Select correct (but non compile-time constant)
+// MINSIGSTKSZ, SIGSTKSZ and PTHREAD_STACK_MIN.
+// _GNU_SOURCE All of the above, plus GNU extensions.
+// _DEFAULT_SOURCE The default set of features (taking precedence over
+// __STRICT_ANSI__).
+//
+// _FORTIFY_SOURCE Add security hardening to many library functions.
+// Set to 1 or 2; 2 performs stricter checks than 1.
+//
+// _REENTRANT, _THREAD_SAFE
+// Obsolete; equivalent to _POSIX_C_SOURCE=199506L.
+//
+// The `-ansi' switch to the GNU C compiler, and standards conformance
+// options such as `-std=c99', define __STRICT_ANSI__. If none of
+// these are defined, or if _DEFAULT_SOURCE is defined, the default is
+// to have _POSIX_SOURCE set to one and _POSIX_C_SOURCE set to
+// 200809L, as well as enabling miscellaneous functions from BSD and
+// SVID. If more than one of these are defined, they accumulate. For
+// example __STRICT_ANSI__, _POSIX_SOURCE and _POSIX_C_SOURCE together
+// give you ISO C, 1003.1, and 1003.2, but nothing else.
+//
+// These are defined by this file and are used by the
+// header files to decide what to declare or define:
+//
+// __GLIBC_USE (F) Define things from feature set F. This is defined
+// to 1 or 0; the subsequent macros are either defined
+// or undefined, and those tests should be moved to
+// __GLIBC_USE.
+// __USE_ISOC11 Define ISO C11 things.
+// __USE_ISOC99 Define ISO C99 things.
+// __USE_ISOC95 Define ISO C90 AMD1 (C95) things.
+// __USE_ISOCXX11 Define ISO C++11 things.
+// __USE_POSIX Define IEEE Std 1003.1 things.
+// __USE_POSIX2 Define IEEE Std 1003.2 things.
+// __USE_POSIX199309 Define IEEE Std 1003.1, and .1b things.
+// __USE_POSIX199506 Define IEEE Std 1003.1, .1b, .1c and .1i things.
+// __USE_XOPEN Define XPG things.
+// __USE_XOPEN_EXTENDED Define X/Open Unix things.
+// __USE_UNIX98 Define Single Unix V2 things.
+// __USE_XOPEN2K Define XPG6 things.
+// __USE_XOPEN2KXSI Define XPG6 XSI things.
+// __USE_XOPEN2K8 Define XPG7 things.
+// __USE_XOPEN2K8XSI Define XPG7 XSI things.
+// __USE_LARGEFILE Define correct standard I/O things.
+// __USE_LARGEFILE64 Define LFS things with separate names.
+// __USE_FILE_OFFSET64 Define 64bit interface as default.
+// __USE_MISC Define things from 4.3BSD or System V Unix.
+// __USE_ATFILE Define *at interfaces and AT_* constants for them.
+// __USE_DYNAMIC_STACK_SIZE Define correct (but non compile-time constant)
+// MINSIGSTKSZ, SIGSTKSZ and PTHREAD_STACK_MIN.
+// __USE_GNU Define GNU extensions.
+// __USE_FORTIFY_LEVEL Additional security measures used, according to level.
+//
+// The macros `__GNU_LIBRARY__', `__GLIBC__', and `__GLIBC_MINOR__' are
+// defined by this file unconditionally. `__GNU_LIBRARY__' is provided
+// only for compatibility. All new code should use the other symbols
+// to test for features.
+//
+// All macros listed above as possibly being defined by this file are
+// explicitly undefined if they are not explicitly defined.
+// Feature-test macros that are not defined by the user or compiler
+// but are implied by the other feature-test macros defined (or by the
+// lack of any definitions) are defined by the file.
+//
+// ISO C feature test macros depend on the definition of the macro
+// when an affected header is included, not when the first system
+// header is included, and so they are handled in
+// <bits/libc-header-start.h>, which does not have a multiple include
+// guard. Feature test macros that can be handled from the first
+// system header included are handled here.
+
+// Undefine everything, so we get a clean slate.
+
+// Suppress kernel-name space pollution unless user expressedly asks
+// for it.
+
+// Convenience macro to test the version of gcc.
+// Use like this:
+// #if __GNUC_PREREQ (2,8)
+// ... code requiring gcc 2.8 or later ...
+// #endif
+// Note: only works for GCC 2.0 and later, because __GNUC_MINOR__ was
+// added in 2.0.
+
+// Similarly for clang. Features added to GCC after version 4.2 may
+// or may not also be available in clang, and clang's definitions of
+// __GNUC(_MINOR)__ are fixed at 4 and 2 respectively. Not all such
+// features can be queried via __has_extension/__has_feature.
+
+// Whether to use feature set F.
+
+// _BSD_SOURCE and _SVID_SOURCE are deprecated aliases for
+// _DEFAULT_SOURCE. If _DEFAULT_SOURCE is present we do not
+// issue a warning; the expectation is that the source is being
+// transitioned to use the new macro.
+
+// If _GNU_SOURCE was defined by the user, turn on all the other features.
+
+// If nothing (other than _GNU_SOURCE and _DEFAULT_SOURCE) is defined,
+// define _DEFAULT_SOURCE.
+
+// This is to enable the ISO C2X extension.
+
+// This is to enable the ISO C11 extension.
+
+// This is to enable the ISO C99 extension.
+
+// This is to enable the ISO C90 Amendment 1:1995 extension.
+
+// If none of the ANSI/POSIX macros are defined, or if _DEFAULT_SOURCE
+// is defined, use POSIX.1-2008 (or another version depending on
+// _XOPEN_SOURCE).
+
+// Some C libraries once required _REENTRANT and/or _THREAD_SAFE to be
+// defined in all multithreaded code. GNU libc has not required this
+// for many years. We now treat them as compatibility synonyms for
+// _POSIX_C_SOURCE=199506L, which is the earliest level of POSIX with
+// comprehensive support for multithreaded code. Using them never
+// lowers the selected level of POSIX conformance, only raises it.
+
+// Features part to handle 64-bit time_t support.
+// Copyright (C) 2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// We need to know the word size in order to check the time size.
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Bit size of the time_t type at glibc build time, RISC-V case.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// RV32 and RV64 both use 64-bit time_t
+
+// The function 'gets' existed in C89, but is impossible to use
+// safely. It has been removed from ISO C11 and ISO C++14. Note: for
+// compatibility with various implementations of <cstdio>, this test
+// must consider only the value of __cplusplus when compiling C++.
+
+// GNU formerly extended the scanf functions with modified format
+// specifiers %as, %aS, and %a[...] that allocate a buffer for the
+// input using malloc. This extension conflicts with ISO C99, which
+// defines %a as a standalone format specifier that reads a floating-
+// point number; moreover, POSIX.1-2008 provides the same feature
+// using the modifier letter 'm' instead (%ms, %mS, %m[...]).
+//
+// We now follow C99 unless GNU extensions are active and the compiler
+// is specifically in C89 or C++98 mode (strict or not). For
+// instance, with GCC, -std=gnu11 will have C99-compliant scanf with
+// or without -D_GNU_SOURCE, but -std=c89 -D_GNU_SOURCE will have the
+// old extension.
+
+// Get definitions of __STDC_* predefined macros, if the compiler has
+// not preincluded this header automatically.
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// This macro indicates that the installed library is the GNU C Library.
+// For historic reasons the value now is 6 and this will stay from now
+// on. The use of this variable is deprecated. Use __GLIBC__ and
+// __GLIBC_MINOR__ now (see below) when you want to test for a specific
+// GNU C library version and use the values in <gnu/lib-names.h> to get
+// the sonames of the shared libraries.
+
+// Major and minor version number of the GNU C library package. Use
+// these macros to test for features in specific releases.
+
+// This is here only because every header file already includes this one.
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// We are almost always included from features.h.
+
+// The GNU libc does not support any K&R compilers or the traditional mode
+// of ISO C compilers anymore. Check for some of the combinations not
+// supported anymore.
+
+// Some user header file might have defined this before.
+
+// Compilers that lack __has_attribute may object to
+// #if defined __has_attribute && __has_attribute (...)
+// even though they do not need to evaluate the right-hand side of the &&.
+// Similarly for __has_builtin, etc.
+
+// All functions, except those with callbacks or those that
+// synchronize memory, are leaf functions.
+
+// GCC can always grok prototypes. For C++ programs we add throw()
+// to help it optimize the function calls. But this only works with
+// gcc 2.8.x and egcs. For gcc 3.4 and up we even mark C functions
+// as non-throwing using a function attribute since programs can use
+// the -fexceptions options for C code as well.
+
+// These two macros are not used in glibc anymore. They are kept here
+// only because some other projects expect the macros to be defined.
+
+// For these things, GCC behaves the ANSI way normally,
+// and the non-ANSI way under -traditional.
+
+// This is not a typedef so `const __ptr_t' does the right thing.
+
+// C++ needs to know that types and declarations are C, not C++.
+
+// Fortify support.
+
+// Use __builtin_dynamic_object_size at _FORTIFY_SOURCE=3 when available.
+
+// Support for flexible arrays.
+// Headers that should use flexible arrays only if they're "real"
+// (e.g. only if they won't affect sizeof()) should test
+// #if __glibc_c99_flexarr_available.
+
+// __asm__ ("xyz") is used throughout the headers to rename functions
+// at the assembly language level. This is wrapped by the __REDIRECT
+// macro, in order to support compilers that can do this some other
+// way. When compilers don't support asm-names at all, we have to do
+// preprocessor tricks instead (which don't have exactly the right
+// semantics, but it's the best we can do).
+//
+// Example:
+// int __REDIRECT(setpgrp, (__pid_t pid, __pid_t pgrp), setpgid);
+
+//
+// #elif __SOME_OTHER_COMPILER__
+//
+// # define __REDIRECT(name, proto, alias) name proto; _Pragma("let " #name " = " #alias)
+
+// GCC and clang have various useful declarations that can be made with
+// the '__attribute__' syntax. All of the ways we use this do fine if
+// they are omitted for compilers that don't understand it.
+
+// At some point during the gcc 2.96 development the `malloc' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+
+// Tell the compiler which arguments to an allocation function
+// indicate the size of the allocation.
+
+// At some point during the gcc 2.96 development the `pure' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+
+// This declaration tells the compiler that the value is constant.
+
+// At some point during the gcc 3.1 development the `used' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+
+// Since version 3.2, gcc allows marking deprecated functions.
+
+// Since version 4.5, gcc also allows one to specify the message printed
+// when a deprecated function is used. clang claims to be gcc 4.2, but
+// may also support this feature.
+
+// At some point during the gcc 2.8 development the `format_arg' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+// If several `format_arg' attributes are given for the same function, in
+// gcc-3.0 and older, all but the last one are ignored. In newer gccs,
+// all designated arguments are considered.
+
+// At some point during the gcc 2.97 development the `strfmon' format
+// attribute for functions was introduced. We don't want to use it
+// unconditionally (although this would be possible) since it
+// generates warnings.
+
+// The nonnull function attribute marks pointer parameters that
+// must not be NULL.
+
+// The returns_nonnull function attribute marks the return type of the function
+// as always being non-null.
+
+// If fortification mode, we warn about unused results of certain
+// function calls which can lead to problems.
+
+// Forces a function to be always inlined.
+// The Linux kernel defines __always_inline in stddef.h (283d7573), and
+// it conflicts with this definition. Therefore undefine it first to
+// allow either header to be included first.
+
+// Associate error messages with the source location of the call site rather
+// than with the source location inside the function.
+
+// GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
+// inline semantics, unless -fgnu89-inline is used. Using __GNUC_STDC_INLINE__
+// or __GNUC_GNU_INLINE is not a good enough check for gcc because gcc versions
+// older than 4.3 may define these macros and still not guarantee GNU inlining
+// semantics.
+//
+// clang++ identifies itself as gcc-4.2, but has support for GNU inlining
+// semantics, that can be checked for by using the __GNUC_STDC_INLINE_ and
+// __GNUC_GNU_INLINE__ macro definitions.
+
+// GCC 4.3 and above allow passing all anonymous arguments of an
+// __extern_always_inline function to some other vararg function.
+
+// It is possible to compile containing GCC extensions even if GCC is
+// run in pedantic mode if the uses are carefully marked using the
+// `__extension__' keyword. But this is not generally available before
+// version 2.8.
+
+// __restrict is known in EGCS 1.2 and above, and in clang.
+// It works also in C++ mode (outside of arrays), but only when spelled
+// as '__restrict', not 'restrict'.
+
+// ISO C99 also allows to declare arrays as non-overlapping. The syntax is
+// array_name[restrict]
+// GCC 3.1 and clang support this.
+// This syntax is not usable in C++ mode.
+
+// Describes a char array whose address can safely be passed as the first
+// argument to strncpy and strncat, as the char array is not necessarily
+// a NUL-terminated string.
+
+// Undefine (also defined in libc-symbols.h).
+// Copies attributes from the declaration or type referenced by
+// the argument.
+
+// The #ifndef lets Gnulib avoid including these on non-glibc
+// platforms, where the includes typically do not exist.
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Properties of long double type. ldbl-128 version.
+// Copyright (C) 2016-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// long double is distinct from double, so there is nothing to
+// define here.
+
+// __glibc_macro_warning (MESSAGE) issues warning MESSAGE. This is
+// intended for use in preprocessor macros.
+//
+// Note: MESSAGE must be a _single_ string; concatenation of string
+// literals is not supported.
+
+// Generic selection (ISO C11) is a C-only feature, available in GCC
+// since version 4.9. Previous versions do not provide generic
+// selection, even though they might set __STDC_VERSION__ to 201112L,
+// when in -std=c11 mode. Thus, we must check for !defined __GNUC__
+// when testing __STDC_VERSION__ for generic selection support.
+// On the other hand, Clang also defines __GNUC__, so a clang-specific
+// check is required to enable the use of generic selection.
+
+// Designates a 1-based positional argument ref-index of pointer type
+// that can be used to access size-index elements of the pointed-to
+// array according to access mode, or at least one element when
+// size-index is not provided:
+// access (access-mode, <ref-index> [, <size-index>])
+
+// Designates dealloc as a function to call to deallocate objects
+// allocated by the declared function.
+
+// Specify that a function such as setjmp or vfork may return
+// twice.
+
+// If we don't have __REDIRECT, prototypes will be missing if
+// __USE_FILE_OFFSET64 but not __USE_LARGEFILE[64].
+
+// Decide whether we can define 'extern inline' functions in headers.
+
+// This is here only because every header file already includes this one.
+// Get the definitions of all the appropriate `__stub_FUNCTION' symbols.
+// <gnu/stubs.h> contains `#define __stub_FUNCTION' when FUNCTION is a stub
+// that will always return failure (and set errno to ENOSYS).
+// This file is automatically generated.
+// This file selects the right generated file of `__stub_FUNCTION' macros
+// based on the architecture being compiled for.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// This file is automatically generated.
+// It defines a symbol `__stub_FUNCTION' for each function
+// in the C library which is a stub, meaning it will fail
+// every time called, usually setting errno to ENOSYS.
+
+// This must be early so <bits/fcntl.h> can define types winningly.
+
+// Get __mode_t, __dev_t and __off_t .
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Bit size of the time_t type at glibc build time, RISC-V case.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// RV32 and RV64 both use 64-bit time_t
+
+// Convenience types.
+type X__u_char = uint8 /* types.h:31:23 */
+type X__u_short = uint16 /* types.h:32:28 */
+type X__u_int = uint32 /* types.h:33:22 */
+type X__u_long = uint64 /* types.h:34:27 */
+
+// Fixed-size types, underlying types depend on word size and compiler.
+type X__int8_t = int8 /* types.h:37:21 */
+type X__uint8_t = uint8 /* types.h:38:23 */
+type X__int16_t = int16 /* types.h:39:26 */
+type X__uint16_t = uint16 /* types.h:40:28 */
+type X__int32_t = int32 /* types.h:41:20 */
+type X__uint32_t = uint32 /* types.h:42:22 */
+type X__int64_t = int64 /* types.h:44:25 */
+type X__uint64_t = uint64 /* types.h:45:27 */
+
+// Smallest types with at least a given width.
+type X__int_least8_t = X__int8_t /* types.h:52:18 */
+type X__uint_least8_t = X__uint8_t /* types.h:53:19 */
+type X__int_least16_t = X__int16_t /* types.h:54:19 */
+type X__uint_least16_t = X__uint16_t /* types.h:55:20 */
+type X__int_least32_t = X__int32_t /* types.h:56:19 */
+type X__uint_least32_t = X__uint32_t /* types.h:57:20 */
+type X__int_least64_t = X__int64_t /* types.h:58:19 */
+type X__uint_least64_t = X__uint64_t /* types.h:59:20 */
+
+// quad_t is also 64 bits.
+type X__quad_t = int64 /* types.h:63:18 */
+type X__u_quad_t = uint64 /* types.h:64:27 */
+
+// Largest integral types.
+type X__intmax_t = int64 /* types.h:72:18 */
+type X__uintmax_t = uint64 /* types.h:73:27 */
+
+// The machine-dependent file <bits/typesizes.h> defines __*_T_TYPE
+// macros for each of the OS types we define below. The definitions
+// of those macros must use the following macros for underlying types.
+// We define __S<SIZE>_TYPE and __U<SIZE>_TYPE for the signed and unsigned
+// variants of each of the following integer types on this machine.
+//
+// 16 -- "natural" 16-bit type (always short)
+// 32 -- "natural" 32-bit type (always int)
+// 64 -- "natural" 64-bit type (long or long long)
+// LONG32 -- 32-bit type, traditionally long
+// QUAD -- 64-bit type, traditionally long long
+// WORD -- natural type of __WORDSIZE bits (int or long)
+// LONGWORD -- type of __WORDSIZE bits, traditionally long
+//
+// We distinguish WORD/LONGWORD, 32/LONG32, and 64/QUAD so that the
+// conventional uses of `long' or `long long' type modifiers match the
+// types we define, even when a less-adorned type would be the same size.
+// This matters for (somewhat) portably writing printf/scanf formats for
+// these types, where using the appropriate l or ll format modifiers can
+// make the typedefs and the formats match up across all GNU platforms. If
+// we used `long' when it's 64 bits where `long long' is expected, then the
+// compiler would warn about the formats not matching the argument types,
+// and the programmer changing them to shut up the compiler would break the
+// program's portability.
+//
+// Here we assume what is presently the case in all the GCC configurations
+// we support: long long is always 64 bits, long is always word/address size,
+// and int is always 32 bits.
+
+// No need to mark the typedef with __extension__.
+// bits/typesizes.h -- underlying types for *_t. For the generic Linux ABI.
+// Copyright (C) 2011-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+// Contributed by Chris Metcalf <cmetcalf@tilera.com>, 2011.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// See <bits/types.h> for the meaning of these macros. This file exists so
+// that <bits/types.h> need not vary across different GNU platforms.
+
+// Tell the libc code that off_t and off64_t are actually the same type
+// for all ABI purposes, even if possibly expressed as different base types
+// for C type-checking purposes.
+
+// Same for ino_t and ino64_t.
+
+// And for __rlim_t and __rlim64_t.
+
+// And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t.
+
+// And for getitimer, setitimer and rusage
+
+// Number of descriptors that can fit in an `fd_set'.
+
+// bits/time64.h -- underlying types for __time64_t. RISC-V version.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Define __TIME64_T_TYPE so that it is always a 64-bit type.
+
+// If we already have 64-bit time type then use it.
+
+type X__dev_t = uint64 /* types.h:145:25 */ // Type of device numbers.
+type X__uid_t = uint32 /* types.h:146:25 */ // Type of user identifications.
+type X__gid_t = uint32 /* types.h:147:25 */ // Type of group identifications.
+type X__ino_t = uint64 /* types.h:148:25 */ // Type of file serial numbers.
+type X__ino64_t = uint64 /* types.h:149:27 */ // Type of file serial numbers (LFS).
+type X__mode_t = uint32 /* types.h:150:26 */ // Type of file attribute bitmasks.
+type X__nlink_t = uint32 /* types.h:151:27 */ // Type of file link counts.
+type X__off_t = int64 /* types.h:152:25 */ // Type of file sizes and offsets.
+type X__off64_t = int64 /* types.h:153:27 */ // Type of file sizes and offsets (LFS).
+type X__pid_t = int32 /* types.h:154:25 */ // Type of process identifications.
+type X__fsid_t = struct{ F__val [2]int32 } /* types.h:155:26 */ // Type of file system IDs.
+type X__clock_t = int64 /* types.h:156:27 */ // Type of CPU usage counts.
+type X__rlim_t = uint64 /* types.h:157:26 */ // Type for resource measurement.
+type X__rlim64_t = uint64 /* types.h:158:28 */ // Type for resource measurement (LFS).
+type X__id_t = uint32 /* types.h:159:24 */ // General type for IDs.
+type X__time_t = int64 /* types.h:160:26 */ // Seconds since the Epoch.
+type X__useconds_t = uint32 /* types.h:161:30 */ // Count of microseconds.
+type X__suseconds_t = int64 /* types.h:162:31 */ // Signed count of microseconds.
+type X__suseconds64_t = int64 /* types.h:163:33 */
+
+type X__daddr_t = int32 /* types.h:165:27 */ // The type of a disk address.
+type X__key_t = int32 /* types.h:166:25 */ // Type of an IPC key.
+
+// Clock ID used in clock and timer functions.
+type X__clockid_t = int32 /* types.h:169:29 */
+
+// Timer ID returned by `timer_create'.
+type X__timer_t = uintptr /* types.h:172:12 */
+
+// Type to represent block size.
+type X__blksize_t = int32 /* types.h:175:29 */
+
+// Types from the Large File Support interface.
+
+// Type to count number of disk blocks.
+type X__blkcnt_t = int64 /* types.h:180:28 */
+type X__blkcnt64_t = int64 /* types.h:181:30 */
+
+// Type to count file system blocks.
+type X__fsblkcnt_t = uint64 /* types.h:184:30 */
+type X__fsblkcnt64_t = uint64 /* types.h:185:32 */
+
+// Type to count file system nodes.
+type X__fsfilcnt_t = uint64 /* types.h:188:30 */
+type X__fsfilcnt64_t = uint64 /* types.h:189:32 */
+
+// Type of miscellaneous file system fields.
+type X__fsword_t = int64 /* types.h:192:28 */
+
+type X__ssize_t = int64 /* types.h:194:27 */ // Type of a byte count, or error.
+
+// Signed long type used in system calls.
+type X__syscall_slong_t = int64 /* types.h:197:33 */
+// Unsigned long type used in system calls.
+type X__syscall_ulong_t = uint64 /* types.h:199:33 */
+
+// These few don't really vary by system, they always correspond
+// to one of the other defined types.
+type X__loff_t = X__off64_t /* types.h:203:19 */ // Type of file sizes and offsets (LFS).
+type X__caddr_t = uintptr /* types.h:204:14 */
+
+// Duplicates info from stdint.h but this is used in unistd.h.
+type X__intptr_t = int64 /* types.h:207:25 */
+
+// Duplicate info from sys/socket.h.
+type X__socklen_t = uint32 /* types.h:210:23 */
+
+// C99: An integer type that can be accessed as an atomic entity,
+// even in the presence of asynchronous interrupts.
+// It is not currently necessary for this to be machine-specific.
+type X__sig_atomic_t = int32 /* types.h:215:13 */
+
+// Seconds since the Epoch, visible to user code when time_t is too
+// narrow only for consistency with the old way of widening too-narrow
+// types. User code should never use __time64_t.
+
+// Get the definitions of O_*, F_*, FD_*: all the
+// numbers and flag bits for `open', `fcntl', et al.
+// O_*, F_*, FD_* bit values for Linux / RISC-V.
+// Copyright (C) 2011-2021 Free Software Foundation, Inc.
+//
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// In 64-bit ISA files are always with 64bit off_t and F_*LK64 are the same as
+// non-64-bit versions. It will need to be revised for 128-bit.
+
+type Flock = struct {
+ Fl_type int16
+ Fl_whence int16
+ F__ccgo_pad1 [4]byte
+ Fl_start X__off_t
+ Fl_len X__off_t
+ Fl_pid X__pid_t
+ F__ccgo_pad2 [4]byte
+} /* fcntl.h:36:1 */
+
+// Include generic Linux declarations.
+// O_*, F_*, FD_* bit values for Linux.
+// Copyright (C) 2001-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// This file contains shared definitions between Linux architectures
+// and is included by <bits/fcntl.h> to declare them. The various
+// #ifndef cases allow the architecture specific file to define those
+// values with different values.
+//
+// A minimal <bits/fcntl.h> contains just:
+//
+// struct flock {...}
+// #ifdef __USE_LARGEFILE64
+// struct flock64 {...}
+// #endif
+// #include <bits/fcntl-linux.h>
+
+// open/fcntl.
+
+// open file description locks.
+//
+// Usually record locks held by a process are released on *any* close and are
+// not inherited across a fork.
+//
+// These cmd values will set locks that conflict with process-associated record
+// locks, but are "owned" by the opened file description, not the process.
+// This means that they are inherited across fork or clone with CLONE_FILES
+// like BSD (flock) locks, and they are only released automatically when the
+// last reference to the the file description against which they were acquired
+// is put.
+
+// For now, Linux has no separate synchronicity options for read
+// operations. We define O_RSYNC therefore as the same as O_SYNC
+// since this is a superset.
+
+// Values for the second argument to `fcntl'.
+
+// For F_[GET|SET]FD.
+
+// For posix fcntl() and `l_type' field of a `struct flock' for lockf().
+
+// For old implementation of BSD flock.
+
+// Operations for BSD flock, also used by the kernel implementation.
+
+// Define some more compatibility macros to be backward compatible with
+// BSD systems which did not managed to hide these kernel macros.
+
+// Advise to `posix_fadvise'.
+
+// Values for `*at' functions.
+
+// Detect if open needs mode as a third argument (or for openat as a fourth
+// argument).
+
+// POSIX.1-2001 specifies that these types are defined by <fcntl.h>.
+// Earlier POSIX standards permitted any type ending in `_t' to be defined
+// by any POSIX header, so we don't conditionalize the definitions here.
+type Mode_t = X__mode_t /* fcntl.h:50:18 */
+
+type Off_t = X__off64_t /* fcntl.h:58:19 */
+
+type Pid_t = X__pid_t /* fcntl.h:69:17 */
+
+// For XPG all symbols from <sys/stat.h> should also be available.
+// NB: Include guard matches what <linux/time.h> uses.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Endian macros for string.h functions
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <http://www.gnu.org/licenses/>.
+
+// Definitions for byte order, according to significance of bytes,
+// from low addresses to high addresses. The value is what you get by
+// putting '4' in the most significant byte, '3' in the second most
+// significant byte, '2' in the second least significant byte, and '1'
+// in the least significant byte, and then writing down one digit for
+// each byte, starting with the byte at the lowest address at the left,
+// and proceeding to the byte with the highest address at the right.
+
+// This file defines `__BYTE_ORDER' for the particular machine.
+
+// RISC-V is little-endian.
+
+// Some machines may need to use a different endianness for floating point
+// values.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Returned by `time'.
+type Time_t = X__time_t /* time_t.h:10:18 */
+
+// POSIX.1b structure for a time value. This is like a `struct timeval' but
+// has nanoseconds instead of microseconds.
+type Timespec = struct {
+ Ftv_sec X__time_t
+ Ftv_nsec X__syscall_slong_t
+} /* struct_timespec.h:11:1 */
+
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Definition for struct stat.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Endian macros for string.h functions
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <http://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+type Stat = struct {
+ Fst_dev X__dev_t
+ Fst_ino X__ino64_t
+ Fst_mode X__mode_t
+ Fst_nlink X__nlink_t
+ Fst_uid X__uid_t
+ Fst_gid X__gid_t
+ Fst_rdev X__dev_t
+ F__pad1 X__dev_t
+ Fst_size X__off64_t
+ Fst_blksize X__blksize_t
+ F__pad2 int32
+ Fst_blocks X__blkcnt64_t
+ Fst_atim struct {
+ Ftv_sec X__time_t
+ Ftv_nsec X__syscall_slong_t
+ }
+ Fst_mtim struct {
+ Ftv_sec X__time_t
+ Ftv_nsec X__syscall_slong_t
+ }
+ Fst_ctim struct {
+ Ftv_sec X__time_t
+ Ftv_nsec X__syscall_slong_t
+ }
+ F__glibc_reserved [2]int32
+} /* struct_stat.h:44:1 */
+
+// Define some inlines helping to catch common problems.
+
+var _ uint8 /* gen.c:2:13: */
diff --git a/vendor/modernc.org/libc/fts/capi_linux_riscv64.go b/vendor/modernc.org/libc/fts/capi_linux_riscv64.go
new file mode 100644
index 00000000..76de2772
--- /dev/null
+++ b/vendor/modernc.org/libc/fts/capi_linux_riscv64.go
@@ -0,0 +1,5 @@
+// Code generated by 'ccgo fts/gen.c -crt-import-path -export-defines -export-enums -export-externs X -export-fields F -export-structs -export-typedefs -header -hide _OSSwapInt16,_OSSwapInt32,_OSSwapInt64 -o fts/fts_linux_riscv64.go -pkgname fts', DO NOT EDIT.
+
+package fts
+
+var CAPI = map[string]struct{}{}
diff --git a/vendor/modernc.org/libc/fts/fts_linux_riscv64.go b/vendor/modernc.org/libc/fts/fts_linux_riscv64.go
new file mode 100644
index 00000000..0332df86
--- /dev/null
+++ b/vendor/modernc.org/libc/fts/fts_linux_riscv64.go
@@ -0,0 +1,2156 @@
+// Code generated by 'ccgo fts/gen.c -crt-import-path "" -export-defines "" -export-enums "" -export-externs X -export-fields F -export-structs "" -export-typedefs "" -header -hide _OSSwapInt16,_OSSwapInt32,_OSSwapInt64 -o fts/fts_linux_riscv64.go -pkgname fts', DO NOT EDIT.
+
+package fts
+
+import (
+ "math"
+ "reflect"
+ "sync/atomic"
+ "unsafe"
+)
+
+var _ = math.Pi
+var _ reflect.Kind
+var _ atomic.Value
+var _ unsafe.Pointer
+
+const (
+ ACCESSPERMS = 511
+ ALLPERMS = 4095
+ BIG_ENDIAN = 4321
+ BYTE_ORDER = 1234
+ DEFFILEMODE = 438
+ FD_SETSIZE = 1024
+ FTS_AGAIN = 1
+ FTS_COMFOLLOW = 0x0001
+ FTS_D = 1
+ FTS_DC = 2
+ FTS_DEFAULT = 3
+ FTS_DNR = 4
+ FTS_DONTCHDIR = 0x01
+ FTS_DOT = 5
+ FTS_DP = 6
+ FTS_ERR = 7
+ FTS_F = 8
+ FTS_FOLLOW = 2
+ FTS_INIT = 9
+ FTS_LOGICAL = 0x0002
+ FTS_NAMEONLY = 0x0100
+ FTS_NOCHDIR = 0x0004
+ FTS_NOINSTR = 3
+ FTS_NOSTAT = 0x0008
+ FTS_NS = 10
+ FTS_NSOK = 11
+ FTS_OPTIONMASK = 0x00ff
+ FTS_PHYSICAL = 0x0010
+ FTS_ROOTLEVEL = 0
+ FTS_ROOTPARENTLEVEL = -1
+ FTS_SEEDOT = 0x0020
+ FTS_SKIP = 4
+ FTS_SL = 12
+ FTS_SLNONE = 13
+ FTS_STOP = 0x0200
+ FTS_SYMFOLLOW = 0x02
+ FTS_W = 14
+ FTS_WHITEOUT = 0x0080
+ FTS_XDEV = 0x0040
+ LITTLE_ENDIAN = 1234
+ PDP_ENDIAN = 3412
+ S_BLKSIZE = 512
+ S_IEXEC = 64
+ S_IFBLK = 24576
+ S_IFCHR = 8192
+ S_IFDIR = 16384
+ S_IFIFO = 4096
+ S_IFLNK = 40960
+ S_IFMT = 61440
+ S_IFREG = 32768
+ S_IFSOCK = 49152
+ S_IREAD = 256
+ S_IRGRP = 32
+ S_IROTH = 4
+ S_IRUSR = 256
+ S_IRWXG = 56
+ S_IRWXO = 7
+ S_IRWXU = 448
+ S_ISGID = 1024
+ S_ISUID = 2048
+ S_ISVTX = 512
+ S_IWGRP = 16
+ S_IWOTH = 2
+ S_IWRITE = 128
+ S_IWUSR = 128
+ S_IXGRP = 8
+ S_IXOTH = 1
+ S_IXUSR = 64
+ UTIME_NOW = 1073741823
+ UTIME_OMIT = 1073741822
+ X_ATFILE_SOURCE = 1
+ X_BITS_BYTESWAP_H = 1
+ X_BITS_ENDIANNESS_H = 1
+ X_BITS_ENDIAN_H = 1
+ X_BITS_PTHREADTYPES_ARCH_H = 1
+ X_BITS_PTHREADTYPES_COMMON_H = 1
+ X_BITS_STAT_H = 1
+ X_BITS_STDINT_INTN_H = 1
+ X_BITS_STRUCT_STAT_H = 1
+ X_BITS_TIME64_H = 1
+ X_BITS_TYPESIZES_H = 1
+ X_BITS_TYPES_H = 1
+ X_BITS_UINTN_IDENTITY_H = 1
+ X_BSD_SIZE_T_ = 0
+ X_BSD_SIZE_T_DEFINED_ = 0
+ X_DEFAULT_SOURCE = 1
+ X_ENDIAN_H = 1
+ X_FEATURES_H = 1
+ X_FILE_OFFSET_BITS = 64
+ X_FTS_H = 1
+ X_GCC_SIZE_T = 0
+ X_LP64 = 1
+ X_POSIX_C_SOURCE = 200809
+ X_POSIX_SOURCE = 1
+ X_RWLOCK_INTERNAL_H = 0
+ X_SIZET_ = 0
+ X_SIZE_T = 0
+ X_SIZE_T_ = 0
+ X_SIZE_T_DECLARED = 0
+ X_SIZE_T_DEFINED = 0
+ X_SIZE_T_DEFINED_ = 0
+ X_STATBUF_ST_BLKSIZE = 0
+ X_STATBUF_ST_NSEC = 0
+ X_STATBUF_ST_RDEV = 0
+ X_STDC_PREDEF_H = 1
+ X_STRUCT_TIMESPEC = 1
+ X_SYS_CDEFS_H = 1
+ X_SYS_SELECT_H = 1
+ X_SYS_SIZE_T_H = 0
+ X_SYS_STAT_H = 1
+ X_SYS_TYPES_H = 1
+ X_THREAD_MUTEX_INTERNAL_H = 1
+ X_THREAD_SHARED_TYPES_H = 1
+ X_T_SIZE = 0
+ X_T_SIZE_ = 0
+ Linux = 1
+ Unix = 1
+)
+
+type Ptrdiff_t = int64 /* <builtin>:3:26 */
+
+type Size_t = uint64 /* <builtin>:9:23 */
+
+type Wchar_t = int32 /* <builtin>:15:24 */
+
+type X__int128_t = struct {
+ Flo int64
+ Fhi int64
+} /* <builtin>:21:43 */ // must match modernc.org/mathutil.Int128
+type X__uint128_t = struct {
+ Flo uint64
+ Fhi uint64
+} /* <builtin>:22:44 */ // must match modernc.org/mathutil.Int128
+
+type X__builtin_va_list = uintptr /* <builtin>:46:14 */
+type X__float128 = float64 /* <builtin>:47:21 */
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// POSIX Standard: 2.6 Primitive System Data Types <sys/types.h>
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// These are defined by the user (or the compiler)
+// to specify the desired environment:
+//
+// __STRICT_ANSI__ ISO Standard C.
+// _ISOC99_SOURCE Extensions to ISO C89 from ISO C99.
+// _ISOC11_SOURCE Extensions to ISO C99 from ISO C11.
+// _ISOC2X_SOURCE Extensions to ISO C99 from ISO C2X.
+// __STDC_WANT_LIB_EXT2__
+// Extensions to ISO C99 from TR 27431-2:2010.
+// __STDC_WANT_IEC_60559_BFP_EXT__
+// Extensions to ISO C11 from TS 18661-1:2014.
+// __STDC_WANT_IEC_60559_FUNCS_EXT__
+// Extensions to ISO C11 from TS 18661-4:2015.
+// __STDC_WANT_IEC_60559_TYPES_EXT__
+// Extensions to ISO C11 from TS 18661-3:2015.
+// __STDC_WANT_IEC_60559_EXT__
+// ISO C2X interfaces defined only in Annex F.
+//
+// _POSIX_SOURCE IEEE Std 1003.1.
+// _POSIX_C_SOURCE If ==1, like _POSIX_SOURCE; if >=2 add IEEE Std 1003.2;
+// if >=199309L, add IEEE Std 1003.1b-1993;
+// if >=199506L, add IEEE Std 1003.1c-1995;
+// if >=200112L, all of IEEE 1003.1-2004
+// if >=200809L, all of IEEE 1003.1-2008
+// _XOPEN_SOURCE Includes POSIX and XPG things. Set to 500 if
+// Single Unix conformance is wanted, to 600 for the
+// sixth revision, to 700 for the seventh revision.
+// _XOPEN_SOURCE_EXTENDED XPG things and X/Open Unix extensions.
+// _LARGEFILE_SOURCE Some more functions for correct standard I/O.
+// _LARGEFILE64_SOURCE Additional functionality from LFS for large files.
+// _FILE_OFFSET_BITS=N Select default filesystem interface.
+// _ATFILE_SOURCE Additional *at interfaces.
+// _DYNAMIC_STACK_SIZE_SOURCE Select correct (but non compile-time constant)
+// MINSIGSTKSZ, SIGSTKSZ and PTHREAD_STACK_MIN.
+// _GNU_SOURCE All of the above, plus GNU extensions.
+// _DEFAULT_SOURCE The default set of features (taking precedence over
+// __STRICT_ANSI__).
+//
+// _FORTIFY_SOURCE Add security hardening to many library functions.
+// Set to 1 or 2; 2 performs stricter checks than 1.
+//
+// _REENTRANT, _THREAD_SAFE
+// Obsolete; equivalent to _POSIX_C_SOURCE=199506L.
+//
+// The `-ansi' switch to the GNU C compiler, and standards conformance
+// options such as `-std=c99', define __STRICT_ANSI__. If none of
+// these are defined, or if _DEFAULT_SOURCE is defined, the default is
+// to have _POSIX_SOURCE set to one and _POSIX_C_SOURCE set to
+// 200809L, as well as enabling miscellaneous functions from BSD and
+// SVID. If more than one of these are defined, they accumulate. For
+// example __STRICT_ANSI__, _POSIX_SOURCE and _POSIX_C_SOURCE together
+// give you ISO C, 1003.1, and 1003.2, but nothing else.
+//
+// These are defined by this file and are used by the
+// header files to decide what to declare or define:
+//
+// __GLIBC_USE (F) Define things from feature set F. This is defined
+// to 1 or 0; the subsequent macros are either defined
+// or undefined, and those tests should be moved to
+// __GLIBC_USE.
+// __USE_ISOC11 Define ISO C11 things.
+// __USE_ISOC99 Define ISO C99 things.
+// __USE_ISOC95 Define ISO C90 AMD1 (C95) things.
+// __USE_ISOCXX11 Define ISO C++11 things.
+// __USE_POSIX Define IEEE Std 1003.1 things.
+// __USE_POSIX2 Define IEEE Std 1003.2 things.
+// __USE_POSIX199309 Define IEEE Std 1003.1, and .1b things.
+// __USE_POSIX199506 Define IEEE Std 1003.1, .1b, .1c and .1i things.
+// __USE_XOPEN Define XPG things.
+// __USE_XOPEN_EXTENDED Define X/Open Unix things.
+// __USE_UNIX98 Define Single Unix V2 things.
+// __USE_XOPEN2K Define XPG6 things.
+// __USE_XOPEN2KXSI Define XPG6 XSI things.
+// __USE_XOPEN2K8 Define XPG7 things.
+// __USE_XOPEN2K8XSI Define XPG7 XSI things.
+// __USE_LARGEFILE Define correct standard I/O things.
+// __USE_LARGEFILE64 Define LFS things with separate names.
+// __USE_FILE_OFFSET64 Define 64bit interface as default.
+// __USE_MISC Define things from 4.3BSD or System V Unix.
+// __USE_ATFILE Define *at interfaces and AT_* constants for them.
+// __USE_DYNAMIC_STACK_SIZE Define correct (but non compile-time constant)
+// MINSIGSTKSZ, SIGSTKSZ and PTHREAD_STACK_MIN.
+// __USE_GNU Define GNU extensions.
+// __USE_FORTIFY_LEVEL Additional security measures used, according to level.
+//
+// The macros `__GNU_LIBRARY__', `__GLIBC__', and `__GLIBC_MINOR__' are
+// defined by this file unconditionally. `__GNU_LIBRARY__' is provided
+// only for compatibility. All new code should use the other symbols
+// to test for features.
+//
+// All macros listed above as possibly being defined by this file are
+// explicitly undefined if they are not explicitly defined.
+// Feature-test macros that are not defined by the user or compiler
+// but are implied by the other feature-test macros defined (or by the
+// lack of any definitions) are defined by the file.
+//
+// ISO C feature test macros depend on the definition of the macro
+// when an affected header is included, not when the first system
+// header is included, and so they are handled in
+// <bits/libc-header-start.h>, which does not have a multiple include
+// guard. Feature test macros that can be handled from the first
+// system header included are handled here.
+
+// Undefine everything, so we get a clean slate.
+
+// Suppress kernel-name space pollution unless user expressedly asks
+// for it.
+
+// Convenience macro to test the version of gcc.
+// Use like this:
+// #if __GNUC_PREREQ (2,8)
+// ... code requiring gcc 2.8 or later ...
+// #endif
+// Note: only works for GCC 2.0 and later, because __GNUC_MINOR__ was
+// added in 2.0.
+
+// Similarly for clang. Features added to GCC after version 4.2 may
+// or may not also be available in clang, and clang's definitions of
+// __GNUC(_MINOR)__ are fixed at 4 and 2 respectively. Not all such
+// features can be queried via __has_extension/__has_feature.
+
+// Whether to use feature set F.
+
+// _BSD_SOURCE and _SVID_SOURCE are deprecated aliases for
+// _DEFAULT_SOURCE. If _DEFAULT_SOURCE is present we do not
+// issue a warning; the expectation is that the source is being
+// transitioned to use the new macro.
+
+// If _GNU_SOURCE was defined by the user, turn on all the other features.
+
+// If nothing (other than _GNU_SOURCE and _DEFAULT_SOURCE) is defined,
+// define _DEFAULT_SOURCE.
+
+// This is to enable the ISO C2X extension.
+
+// This is to enable the ISO C11 extension.
+
+// This is to enable the ISO C99 extension.
+
+// This is to enable the ISO C90 Amendment 1:1995 extension.
+
+// If none of the ANSI/POSIX macros are defined, or if _DEFAULT_SOURCE
+// is defined, use POSIX.1-2008 (or another version depending on
+// _XOPEN_SOURCE).
+
+// Some C libraries once required _REENTRANT and/or _THREAD_SAFE to be
+// defined in all multithreaded code. GNU libc has not required this
+// for many years. We now treat them as compatibility synonyms for
+// _POSIX_C_SOURCE=199506L, which is the earliest level of POSIX with
+// comprehensive support for multithreaded code. Using them never
+// lowers the selected level of POSIX conformance, only raises it.
+
+// Features part to handle 64-bit time_t support.
+// Copyright (C) 2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// We need to know the word size in order to check the time size.
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Bit size of the time_t type at glibc build time, RISC-V case.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// RV32 and RV64 both use 64-bit time_t
+
+// The function 'gets' existed in C89, but is impossible to use
+// safely. It has been removed from ISO C11 and ISO C++14. Note: for
+// compatibility with various implementations of <cstdio>, this test
+// must consider only the value of __cplusplus when compiling C++.
+
+// GNU formerly extended the scanf functions with modified format
+// specifiers %as, %aS, and %a[...] that allocate a buffer for the
+// input using malloc. This extension conflicts with ISO C99, which
+// defines %a as a standalone format specifier that reads a floating-
+// point number; moreover, POSIX.1-2008 provides the same feature
+// using the modifier letter 'm' instead (%ms, %mS, %m[...]).
+//
+// We now follow C99 unless GNU extensions are active and the compiler
+// is specifically in C89 or C++98 mode (strict or not). For
+// instance, with GCC, -std=gnu11 will have C99-compliant scanf with
+// or without -D_GNU_SOURCE, but -std=c89 -D_GNU_SOURCE will have the
+// old extension.
+
+// Get definitions of __STDC_* predefined macros, if the compiler has
+// not preincluded this header automatically.
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// This macro indicates that the installed library is the GNU C Library.
+// For historic reasons the value now is 6 and this will stay from now
+// on. The use of this variable is deprecated. Use __GLIBC__ and
+// __GLIBC_MINOR__ now (see below) when you want to test for a specific
+// GNU C library version and use the values in <gnu/lib-names.h> to get
+// the sonames of the shared libraries.
+
+// Major and minor version number of the GNU C library package. Use
+// these macros to test for features in specific releases.
+
+// This is here only because every header file already includes this one.
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// We are almost always included from features.h.
+
+// The GNU libc does not support any K&R compilers or the traditional mode
+// of ISO C compilers anymore. Check for some of the combinations not
+// supported anymore.
+
+// Some user header file might have defined this before.
+
+// Compilers that lack __has_attribute may object to
+// #if defined __has_attribute && __has_attribute (...)
+// even though they do not need to evaluate the right-hand side of the &&.
+// Similarly for __has_builtin, etc.
+
+// All functions, except those with callbacks or those that
+// synchronize memory, are leaf functions.
+
+// GCC can always grok prototypes. For C++ programs we add throw()
+// to help it optimize the function calls. But this only works with
+// gcc 2.8.x and egcs. For gcc 3.4 and up we even mark C functions
+// as non-throwing using a function attribute since programs can use
+// the -fexceptions options for C code as well.
+
+// These two macros are not used in glibc anymore. They are kept here
+// only because some other projects expect the macros to be defined.
+
+// For these things, GCC behaves the ANSI way normally,
+// and the non-ANSI way under -traditional.
+
+// This is not a typedef so `const __ptr_t' does the right thing.
+
+// C++ needs to know that types and declarations are C, not C++.
+
+// Fortify support.
+
+// Use __builtin_dynamic_object_size at _FORTIFY_SOURCE=3 when available.
+
+// Support for flexible arrays.
+// Headers that should use flexible arrays only if they're "real"
+// (e.g. only if they won't affect sizeof()) should test
+// #if __glibc_c99_flexarr_available.
+
+// __asm__ ("xyz") is used throughout the headers to rename functions
+// at the assembly language level. This is wrapped by the __REDIRECT
+// macro, in order to support compilers that can do this some other
+// way. When compilers don't support asm-names at all, we have to do
+// preprocessor tricks instead (which don't have exactly the right
+// semantics, but it's the best we can do).
+//
+// Example:
+// int __REDIRECT(setpgrp, (__pid_t pid, __pid_t pgrp), setpgid);
+
+//
+// #elif __SOME_OTHER_COMPILER__
+//
+// # define __REDIRECT(name, proto, alias) name proto; _Pragma("let " #name " = " #alias)
+
+// GCC and clang have various useful declarations that can be made with
+// the '__attribute__' syntax. All of the ways we use this do fine if
+// they are omitted for compilers that don't understand it.
+
+// At some point during the gcc 2.96 development the `malloc' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+
+// Tell the compiler which arguments to an allocation function
+// indicate the size of the allocation.
+
+// At some point during the gcc 2.96 development the `pure' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+
+// This declaration tells the compiler that the value is constant.
+
+// At some point during the gcc 3.1 development the `used' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+
+// Since version 3.2, gcc allows marking deprecated functions.
+
+// Since version 4.5, gcc also allows one to specify the message printed
+// when a deprecated function is used. clang claims to be gcc 4.2, but
+// may also support this feature.
+
+// At some point during the gcc 2.8 development the `format_arg' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+// If several `format_arg' attributes are given for the same function, in
+// gcc-3.0 and older, all but the last one are ignored. In newer gccs,
+// all designated arguments are considered.
+
+// At some point during the gcc 2.97 development the `strfmon' format
+// attribute for functions was introduced. We don't want to use it
+// unconditionally (although this would be possible) since it
+// generates warnings.
+
+// The nonnull function attribute marks pointer parameters that
+// must not be NULL.
+
+// The returns_nonnull function attribute marks the return type of the function
+// as always being non-null.
+
+// If fortification mode, we warn about unused results of certain
+// function calls which can lead to problems.
+
+// Forces a function to be always inlined.
+// The Linux kernel defines __always_inline in stddef.h (283d7573), and
+// it conflicts with this definition. Therefore undefine it first to
+// allow either header to be included first.
+
+// Associate error messages with the source location of the call site rather
+// than with the source location inside the function.
+
+// GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
+// inline semantics, unless -fgnu89-inline is used. Using __GNUC_STDC_INLINE__
+// or __GNUC_GNU_INLINE is not a good enough check for gcc because gcc versions
+// older than 4.3 may define these macros and still not guarantee GNU inlining
+// semantics.
+//
+// clang++ identifies itself as gcc-4.2, but has support for GNU inlining
+// semantics, that can be checked for by using the __GNUC_STDC_INLINE_ and
+// __GNUC_GNU_INLINE__ macro definitions.
+
+// GCC 4.3 and above allow passing all anonymous arguments of an
+// __extern_always_inline function to some other vararg function.
+
+// It is possible to compile containing GCC extensions even if GCC is
+// run in pedantic mode if the uses are carefully marked using the
+// `__extension__' keyword. But this is not generally available before
+// version 2.8.
+
+// __restrict is known in EGCS 1.2 and above, and in clang.
+// It works also in C++ mode (outside of arrays), but only when spelled
+// as '__restrict', not 'restrict'.
+
+// ISO C99 also allows to declare arrays as non-overlapping. The syntax is
+// array_name[restrict]
+// GCC 3.1 and clang support this.
+// This syntax is not usable in C++ mode.
+
+// Describes a char array whose address can safely be passed as the first
+// argument to strncpy and strncat, as the char array is not necessarily
+// a NUL-terminated string.
+
+// Undefine (also defined in libc-symbols.h).
+// Copies attributes from the declaration or type referenced by
+// the argument.
+
+// The #ifndef lets Gnulib avoid including these on non-glibc
+// platforms, where the includes typically do not exist.
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Properties of long double type. ldbl-128 version.
+// Copyright (C) 2016-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// long double is distinct from double, so there is nothing to
+// define here.
+
+// __glibc_macro_warning (MESSAGE) issues warning MESSAGE. This is
+// intended for use in preprocessor macros.
+//
+// Note: MESSAGE must be a _single_ string; concatenation of string
+// literals is not supported.
+
+// Generic selection (ISO C11) is a C-only feature, available in GCC
+// since version 4.9. Previous versions do not provide generic
+// selection, even though they might set __STDC_VERSION__ to 201112L,
+// when in -std=c11 mode. Thus, we must check for !defined __GNUC__
+// when testing __STDC_VERSION__ for generic selection support.
+// On the other hand, Clang also defines __GNUC__, so a clang-specific
+// check is required to enable the use of generic selection.
+
+// Designates a 1-based positional argument ref-index of pointer type
+// that can be used to access size-index elements of the pointed-to
+// array according to access mode, or at least one element when
+// size-index is not provided:
+// access (access-mode, <ref-index> [, <size-index>])
+
+// Designates dealloc as a function to call to deallocate objects
+// allocated by the declared function.
+
+// Specify that a function such as setjmp or vfork may return
+// twice.
+
+// If we don't have __REDIRECT, prototypes will be missing if
+// __USE_FILE_OFFSET64 but not __USE_LARGEFILE[64].
+
+// Decide whether we can define 'extern inline' functions in headers.
+
+// This is here only because every header file already includes this one.
+// Get the definitions of all the appropriate `__stub_FUNCTION' symbols.
+// <gnu/stubs.h> contains `#define __stub_FUNCTION' when FUNCTION is a stub
+// that will always return failure (and set errno to ENOSYS).
+// This file is automatically generated.
+// This file selects the right generated file of `__stub_FUNCTION' macros
+// based on the architecture being compiled for.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// This file is automatically generated.
+// It defines a symbol `__stub_FUNCTION' for each function
+// in the C library which is a stub, meaning it will fail
+// every time called, usually setting errno to ENOSYS.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Bit size of the time_t type at glibc build time, RISC-V case.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// RV32 and RV64 both use 64-bit time_t
+
+// Convenience types.
+type X__u_char = uint8 /* types.h:31:23 */
+type X__u_short = uint16 /* types.h:32:28 */
+type X__u_int = uint32 /* types.h:33:22 */
+type X__u_long = uint64 /* types.h:34:27 */
+
+// Fixed-size types, underlying types depend on word size and compiler.
+type X__int8_t = int8 /* types.h:37:21 */
+type X__uint8_t = uint8 /* types.h:38:23 */
+type X__int16_t = int16 /* types.h:39:26 */
+type X__uint16_t = uint16 /* types.h:40:28 */
+type X__int32_t = int32 /* types.h:41:20 */
+type X__uint32_t = uint32 /* types.h:42:22 */
+type X__int64_t = int64 /* types.h:44:25 */
+type X__uint64_t = uint64 /* types.h:45:27 */
+
+// Smallest types with at least a given width.
+type X__int_least8_t = X__int8_t /* types.h:52:18 */
+type X__uint_least8_t = X__uint8_t /* types.h:53:19 */
+type X__int_least16_t = X__int16_t /* types.h:54:19 */
+type X__uint_least16_t = X__uint16_t /* types.h:55:20 */
+type X__int_least32_t = X__int32_t /* types.h:56:19 */
+type X__uint_least32_t = X__uint32_t /* types.h:57:20 */
+type X__int_least64_t = X__int64_t /* types.h:58:19 */
+type X__uint_least64_t = X__uint64_t /* types.h:59:20 */
+
+// quad_t is also 64 bits.
+type X__quad_t = int64 /* types.h:63:18 */
+type X__u_quad_t = uint64 /* types.h:64:27 */
+
+// Largest integral types.
+type X__intmax_t = int64 /* types.h:72:18 */
+type X__uintmax_t = uint64 /* types.h:73:27 */
+
+// The machine-dependent file <bits/typesizes.h> defines __*_T_TYPE
+// macros for each of the OS types we define below. The definitions
+// of those macros must use the following macros for underlying types.
+// We define __S<SIZE>_TYPE and __U<SIZE>_TYPE for the signed and unsigned
+// variants of each of the following integer types on this machine.
+//
+// 16 -- "natural" 16-bit type (always short)
+// 32 -- "natural" 32-bit type (always int)
+// 64 -- "natural" 64-bit type (long or long long)
+// LONG32 -- 32-bit type, traditionally long
+// QUAD -- 64-bit type, traditionally long long
+// WORD -- natural type of __WORDSIZE bits (int or long)
+// LONGWORD -- type of __WORDSIZE bits, traditionally long
+//
+// We distinguish WORD/LONGWORD, 32/LONG32, and 64/QUAD so that the
+// conventional uses of `long' or `long long' type modifiers match the
+// types we define, even when a less-adorned type would be the same size.
+// This matters for (somewhat) portably writing printf/scanf formats for
+// these types, where using the appropriate l or ll format modifiers can
+// make the typedefs and the formats match up across all GNU platforms. If
+// we used `long' when it's 64 bits where `long long' is expected, then the
+// compiler would warn about the formats not matching the argument types,
+// and the programmer changing them to shut up the compiler would break the
+// program's portability.
+//
+// Here we assume what is presently the case in all the GCC configurations
+// we support: long long is always 64 bits, long is always word/address size,
+// and int is always 32 bits.
+
+// No need to mark the typedef with __extension__.
+// bits/typesizes.h -- underlying types for *_t. For the generic Linux ABI.
+// Copyright (C) 2011-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+// Contributed by Chris Metcalf <cmetcalf@tilera.com>, 2011.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// See <bits/types.h> for the meaning of these macros. This file exists so
+// that <bits/types.h> need not vary across different GNU platforms.
+
+// Tell the libc code that off_t and off64_t are actually the same type
+// for all ABI purposes, even if possibly expressed as different base types
+// for C type-checking purposes.
+
+// Same for ino_t and ino64_t.
+
+// And for __rlim_t and __rlim64_t.
+
+// And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t.
+
+// And for getitimer, setitimer and rusage
+
+// Number of descriptors that can fit in an `fd_set'.
+
+// bits/time64.h -- underlying types for __time64_t. RISC-V version.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Define __TIME64_T_TYPE so that it is always a 64-bit type.
+
+// If we already have 64-bit time type then use it.
+
+type X__dev_t = uint64 /* types.h:145:25 */ // Type of device numbers.
+type X__uid_t = uint32 /* types.h:146:25 */ // Type of user identifications.
+type X__gid_t = uint32 /* types.h:147:25 */ // Type of group identifications.
+type X__ino_t = uint64 /* types.h:148:25 */ // Type of file serial numbers.
+type X__ino64_t = uint64 /* types.h:149:27 */ // Type of file serial numbers (LFS).
+type X__mode_t = uint32 /* types.h:150:26 */ // Type of file attribute bitmasks.
+type X__nlink_t = uint32 /* types.h:151:27 */ // Type of file link counts.
+type X__off_t = int64 /* types.h:152:25 */ // Type of file sizes and offsets.
+type X__off64_t = int64 /* types.h:153:27 */ // Type of file sizes and offsets (LFS).
+type X__pid_t = int32 /* types.h:154:25 */ // Type of process identifications.
+type X__fsid_t = struct{ F__val [2]int32 } /* types.h:155:26 */ // Type of file system IDs.
+type X__clock_t = int64 /* types.h:156:27 */ // Type of CPU usage counts.
+type X__rlim_t = uint64 /* types.h:157:26 */ // Type for resource measurement.
+type X__rlim64_t = uint64 /* types.h:158:28 */ // Type for resource measurement (LFS).
+type X__id_t = uint32 /* types.h:159:24 */ // General type for IDs.
+type X__time_t = int64 /* types.h:160:26 */ // Seconds since the Epoch.
+type X__useconds_t = uint32 /* types.h:161:30 */ // Count of microseconds.
+type X__suseconds_t = int64 /* types.h:162:31 */ // Signed count of microseconds.
+type X__suseconds64_t = int64 /* types.h:163:33 */
+
+type X__daddr_t = int32 /* types.h:165:27 */ // The type of a disk address.
+type X__key_t = int32 /* types.h:166:25 */ // Type of an IPC key.
+
+// Clock ID used in clock and timer functions.
+type X__clockid_t = int32 /* types.h:169:29 */
+
+// Timer ID returned by `timer_create'.
+type X__timer_t = uintptr /* types.h:172:12 */
+
+// Type to represent block size.
+type X__blksize_t = int32 /* types.h:175:29 */
+
+// Types from the Large File Support interface.
+
+// Type to count number of disk blocks.
+type X__blkcnt_t = int64 /* types.h:180:28 */
+type X__blkcnt64_t = int64 /* types.h:181:30 */
+
+// Type to count file system blocks.
+type X__fsblkcnt_t = uint64 /* types.h:184:30 */
+type X__fsblkcnt64_t = uint64 /* types.h:185:32 */
+
+// Type to count file system nodes.
+type X__fsfilcnt_t = uint64 /* types.h:188:30 */
+type X__fsfilcnt64_t = uint64 /* types.h:189:32 */
+
+// Type of miscellaneous file system fields.
+type X__fsword_t = int64 /* types.h:192:28 */
+
+type X__ssize_t = int64 /* types.h:194:27 */ // Type of a byte count, or error.
+
+// Signed long type used in system calls.
+type X__syscall_slong_t = int64 /* types.h:197:33 */
+// Unsigned long type used in system calls.
+type X__syscall_ulong_t = uint64 /* types.h:199:33 */
+
+// These few don't really vary by system, they always correspond
+// to one of the other defined types.
+type X__loff_t = X__off64_t /* types.h:203:19 */ // Type of file sizes and offsets (LFS).
+type X__caddr_t = uintptr /* types.h:204:14 */
+
+// Duplicates info from stdint.h but this is used in unistd.h.
+type X__intptr_t = int64 /* types.h:207:25 */
+
+// Duplicate info from sys/socket.h.
+type X__socklen_t = uint32 /* types.h:210:23 */
+
+// C99: An integer type that can be accessed as an atomic entity,
+// even in the presence of asynchronous interrupts.
+// It is not currently necessary for this to be machine-specific.
+type X__sig_atomic_t = int32 /* types.h:215:13 */
+
+// Seconds since the Epoch, visible to user code when time_t is too
+// narrow only for consistency with the old way of widening too-narrow
+// types. User code should never use __time64_t.
+
+type U_char = X__u_char /* types.h:33:18 */
+type U_short = X__u_short /* types.h:34:19 */
+type U_int = X__u_int /* types.h:35:17 */
+type U_long = X__u_long /* types.h:36:18 */
+type Quad_t = X__quad_t /* types.h:37:18 */
+type U_quad_t = X__u_quad_t /* types.h:38:20 */
+type Fsid_t = X__fsid_t /* types.h:39:18 */
+type Loff_t = X__loff_t /* types.h:42:18 */
+
+type Ino_t = X__ino64_t /* types.h:49:19 */
+
+type Dev_t = X__dev_t /* types.h:59:17 */
+
+type Gid_t = X__gid_t /* types.h:64:17 */
+
+type Mode_t = X__mode_t /* types.h:69:18 */
+
+type Nlink_t = X__nlink_t /* types.h:74:19 */
+
+type Uid_t = X__uid_t /* types.h:79:17 */
+
+type Off_t = X__off64_t /* types.h:87:19 */
+
+type Pid_t = X__pid_t /* types.h:97:17 */
+
+type Id_t = X__id_t /* types.h:103:16 */
+
+type Ssize_t = X__ssize_t /* types.h:108:19 */
+
+type Daddr_t = X__daddr_t /* types.h:114:19 */
+type Caddr_t = X__caddr_t /* types.h:115:19 */
+
+type Key_t = X__key_t /* types.h:121:17 */
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Returned by `clock'.
+type Clock_t = X__clock_t /* clock_t.h:7:19 */
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Clock ID used in clock and timer functions.
+type Clockid_t = X__clockid_t /* clockid_t.h:7:21 */
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Returned by `time'.
+type Time_t = X__time_t /* time_t.h:10:18 */
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Timer ID returned by `timer_create'.
+type Timer_t = X__timer_t /* timer_t.h:7:19 */
+
+// Wide character type.
+// Locale-writers should change this as necessary to
+// be big enough to hold unique values not between 0 and 127,
+// and not (wchar_t) -1, for each defined multibyte character.
+
+// Define this type if we are doing the whole job,
+// or if we want this type in particular.
+
+// A null pointer constant.
+
+// Old compatibility names for C types.
+type Ulong = uint64 /* types.h:148:27 */
+type Ushort = uint16 /* types.h:149:28 */
+type Uint = uint32 /* types.h:150:22 */
+
+// These size-specific names are used by some of the inet code.
+
+// Define intN_t types.
+// Copyright (C) 2017-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+type Int8_t = X__int8_t /* stdint-intn.h:24:18 */
+type Int16_t = X__int16_t /* stdint-intn.h:25:19 */
+type Int32_t = X__int32_t /* stdint-intn.h:26:19 */
+type Int64_t = X__int64_t /* stdint-intn.h:27:19 */
+
+// These were defined by ISO C without the first `_'.
+type U_int8_t = X__uint8_t /* types.h:158:19 */
+type U_int16_t = X__uint16_t /* types.h:159:20 */
+type U_int32_t = X__uint32_t /* types.h:160:20 */
+type U_int64_t = X__uint64_t /* types.h:161:20 */
+
+type Register_t = int32 /* types.h:164:13 */
+
+// It also defines `fd_set' and the FD_* macros for `select'.
+// `fd_set' type and related macros, and `select'/`pselect' declarations.
+// Copyright (C) 1996-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// POSIX 1003.1g: 6.2 Select from File Descriptor Sets <sys/select.h>
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Get definition of needed basic types.
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Get __FD_* definitions.
+// Copyright (C) 1997-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// We don't use `memset' because this would require a prototype and
+// the array isn't too big.
+
+// Get sigset_t.
+
+type X__sigset_t = struct{ F__val [16]uint64 } /* __sigset_t.h:8:3 */
+
+// A set of signals to be blocked, unblocked, or waited for.
+type Sigset_t = X__sigset_t /* sigset_t.h:7:20 */
+
+// Get definition of timer specification structures.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// A time value that is accurate to the nearest
+// microsecond but also has a range of years.
+type Timeval = struct {
+ Ftv_sec X__time_t
+ Ftv_usec X__suseconds_t
+} /* struct_timeval.h:8:1 */
+
+// NB: Include guard matches what <linux/time.h> uses.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Endian macros for string.h functions
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <http://www.gnu.org/licenses/>.
+
+// POSIX.1b structure for a time value. This is like a `struct timeval' but
+// has nanoseconds instead of microseconds.
+type Timespec = struct {
+ Ftv_sec X__time_t
+ Ftv_nsec X__syscall_slong_t
+} /* struct_timespec.h:11:1 */
+
+type Suseconds_t = X__suseconds_t /* select.h:43:23 */
+
+// The fd_set member is required to be an array of longs.
+type X__fd_mask = int64 /* select.h:49:18 */
+
+// Some versions of <linux/posix_types.h> define this macros.
+// It's easier to assume 8-bit bytes than to get CHAR_BIT.
+
+// fd_set for select and pselect.
+type Fd_set = struct{ F__fds_bits [16]X__fd_mask } /* select.h:70:5 */
+
+// Maximum number of file descriptors in `fd_set'.
+
+// Sometimes the fd_set member is assumed to have this type.
+type Fd_mask = X__fd_mask /* select.h:77:19 */
+
+// Define some inlines helping to catch common problems.
+
+type Blksize_t = X__blksize_t /* types.h:185:21 */
+
+// Types from the Large File Support interface.
+type Blkcnt_t = X__blkcnt64_t /* types.h:205:22 */ // Type to count number of disk blocks.
+type Fsblkcnt_t = X__fsblkcnt64_t /* types.h:209:24 */ // Type to count file system blocks.
+type Fsfilcnt_t = X__fsfilcnt64_t /* types.h:213:24 */ // Type to count file system inodes.
+
+// Now add the thread types.
+// Declaration of common pthread types for all architectures.
+// Copyright (C) 2017-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// For internal mutex and condition variable definitions.
+// Common threading primitives definitions for both POSIX and C11.
+// Copyright (C) 2017-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Arch-specific definitions. Each architecture must define the following
+// macros to define the expected sizes of pthread data types:
+//
+// __SIZEOF_PTHREAD_ATTR_T - size of pthread_attr_t.
+// __SIZEOF_PTHREAD_MUTEX_T - size of pthread_mutex_t.
+// __SIZEOF_PTHREAD_MUTEXATTR_T - size of pthread_mutexattr_t.
+// __SIZEOF_PTHREAD_COND_T - size of pthread_cond_t.
+// __SIZEOF_PTHREAD_CONDATTR_T - size of pthread_condattr_t.
+// __SIZEOF_PTHREAD_RWLOCK_T - size of pthread_rwlock_t.
+// __SIZEOF_PTHREAD_RWLOCKATTR_T - size of pthread_rwlockattr_t.
+// __SIZEOF_PTHREAD_BARRIER_T - size of pthread_barrier_t.
+// __SIZEOF_PTHREAD_BARRIERATTR_T - size of pthread_barrierattr_t.
+//
+// The additional macro defines any constraint for the lock alignment
+// inside the thread structures:
+//
+// __LOCK_ALIGNMENT - for internal lock/futex usage.
+//
+// Same idea but for the once locking primitive:
+//
+// __ONCE_ALIGNMENT - for pthread_once_t/once_flag definition.
+
+// Machine-specific pthread type layouts. RISC-V version.
+// Copyright (C) 2011-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Endian macros for string.h functions
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <http://www.gnu.org/licenses/>.
+
+// Common definition of pthread_mutex_t.
+
+type X__pthread_internal_list = struct {
+ F__prev uintptr
+ F__next uintptr
+} /* thread-shared-types.h:49:9 */
+
+// Type to count file system inodes.
+
+// Now add the thread types.
+// Declaration of common pthread types for all architectures.
+// Copyright (C) 2017-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// For internal mutex and condition variable definitions.
+// Common threading primitives definitions for both POSIX and C11.
+// Copyright (C) 2017-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Arch-specific definitions. Each architecture must define the following
+// macros to define the expected sizes of pthread data types:
+//
+// __SIZEOF_PTHREAD_ATTR_T - size of pthread_attr_t.
+// __SIZEOF_PTHREAD_MUTEX_T - size of pthread_mutex_t.
+// __SIZEOF_PTHREAD_MUTEXATTR_T - size of pthread_mutexattr_t.
+// __SIZEOF_PTHREAD_COND_T - size of pthread_cond_t.
+// __SIZEOF_PTHREAD_CONDATTR_T - size of pthread_condattr_t.
+// __SIZEOF_PTHREAD_RWLOCK_T - size of pthread_rwlock_t.
+// __SIZEOF_PTHREAD_RWLOCKATTR_T - size of pthread_rwlockattr_t.
+// __SIZEOF_PTHREAD_BARRIER_T - size of pthread_barrier_t.
+// __SIZEOF_PTHREAD_BARRIERATTR_T - size of pthread_barrierattr_t.
+//
+// The additional macro defines any constraint for the lock alignment
+// inside the thread structures:
+//
+// __LOCK_ALIGNMENT - for internal lock/futex usage.
+//
+// Same idea but for the once locking primitive:
+//
+// __ONCE_ALIGNMENT - for pthread_once_t/once_flag definition.
+
+// Machine-specific pthread type layouts. RISC-V version.
+// Copyright (C) 2011-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Endian macros for string.h functions
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <http://www.gnu.org/licenses/>.
+
+// Common definition of pthread_mutex_t.
+
+type X__pthread_list_t = X__pthread_internal_list /* thread-shared-types.h:53:3 */
+
+type X__pthread_internal_slist = struct{ F__next uintptr } /* thread-shared-types.h:55:9 */
+
+type X__pthread_slist_t = X__pthread_internal_slist /* thread-shared-types.h:58:3 */
+
+// Arch-specific mutex definitions. A generic implementation is provided
+// by sysdeps/nptl/bits/struct_mutex.h. If required, an architecture
+// can override it by defining:
+//
+// 1. struct __pthread_mutex_s (used on both pthread_mutex_t and mtx_t
+// definition). It should contains at least the internal members
+// defined in the generic version.
+//
+// 2. __LOCK_ALIGNMENT for any extra attribute for internal lock used with
+// atomic operations.
+//
+// 3. The macro __PTHREAD_MUTEX_INITIALIZER used for static initialization.
+// It should initialize the mutex internal flag.
+
+// Default mutex implementation struct definitions.
+// Copyright (C) 2019-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <http://www.gnu.org/licenses/>.
+
+// Generic struct for both POSIX and C11 mutexes. New ports are expected
+// to use the default layout, however architecture can redefine it to
+// add arch-specific extension (such as lock-elision). The struct have
+// a size of 32 bytes on LP32 and 40 bytes on LP64 architectures.
+
+type X__pthread_mutex_s = struct {
+ F__lock int32
+ F__count uint32
+ F__owner int32
+ F__nusers uint32
+ F__kind int32
+ F__spins int32
+ F__list X__pthread_list_t
+} /* struct_mutex.h:27:1 */
+
+// Arch-sepecific read-write lock definitions. A generic implementation is
+// provided by struct_rwlock.h. If required, an architecture can override it
+// by defining:
+//
+// 1. struct __pthread_rwlock_arch_t (used on pthread_rwlock_t definition).
+// It should contain at least the internal members defined in the
+// generic version.
+//
+// 2. The macro __PTHREAD_RWLOCK_INITIALIZER used for static initialization.
+// It should initialize the rwlock internal type.
+
+// RISC-V internal rwlock struct definitions.
+// Copyright (C) 2019-2021 Free Software Foundation, Inc.
+//
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// There is a lot of padding in this structure. While it's not strictly
+// necessary on RISC-V, we're going to leave it in to be on the safe side in
+// case it's needed in the future. Most other architectures have the padding,
+// so this gives us the same extensibility as everyone else has.
+type X__pthread_rwlock_arch_t = struct {
+ F__readers uint32
+ F__writers uint32
+ F__wrphase_futex uint32
+ F__writers_futex uint32
+ F__pad3 uint32
+ F__pad4 uint32
+ F__cur_writer int32
+ F__shared int32
+ F__pad1 uint64
+ F__pad2 uint64
+ F__flags uint32
+ F__ccgo_pad1 [4]byte
+} /* struct_rwlock.h:27:1 */
+
+// Common definition of pthread_cond_t.
+
+type X__pthread_cond_s = struct {
+ F__0 struct{ F__wseq uint64 }
+ F__8 struct{ F__g1_start uint64 }
+ F__g_refs [2]uint32
+ F__g_size [2]uint32
+ F__g1_orig_size uint32
+ F__wrefs uint32
+ F__g_signals [2]uint32
+} /* thread-shared-types.h:92:1 */
+
+type X__tss_t = uint32 /* thread-shared-types.h:119:22 */
+type X__thrd_t = uint64 /* thread-shared-types.h:120:27 */
+
+type X__once_flag = struct{ F__data int32 } /* thread-shared-types.h:125:3 */
+
+// Thread identifiers. The structure of the attribute type is not
+// exposed on purpose.
+type Pthread_t = uint64 /* pthreadtypes.h:27:27 */
+
+// Data structures for mutex handling. The structure of the attribute
+// type is not exposed on purpose.
+type Pthread_mutexattr_t = struct {
+ F__ccgo_pad1 [0]uint32
+ F__size [4]uint8
+} /* pthreadtypes.h:36:3 */
+
+// Data structure for condition variable handling. The structure of
+// the attribute type is not exposed on purpose.
+type Pthread_condattr_t = struct {
+ F__ccgo_pad1 [0]uint32
+ F__size [4]uint8
+} /* pthreadtypes.h:45:3 */
+
+// Keys for thread-specific data
+type Pthread_key_t = uint32 /* pthreadtypes.h:49:22 */
+
+// Once-only execution
+type Pthread_once_t = int32 /* pthreadtypes.h:53:30 */
+
+type Pthread_attr_t1 = struct {
+ F__ccgo_pad1 [0]uint64
+ F__size [56]uint8
+} /* pthreadtypes.h:56:1 */
+
+type Pthread_attr_t = Pthread_attr_t1 /* pthreadtypes.h:62:30 */
+
+type Pthread_mutex_t = struct{ F__data X__pthread_mutex_s } /* pthreadtypes.h:72:3 */
+
+type Pthread_cond_t = struct{ F__data X__pthread_cond_s } /* pthreadtypes.h:80:3 */
+
+// Data structure for reader-writer lock variable handling. The
+// structure of the attribute type is deliberately not exposed.
+type Pthread_rwlock_t = struct{ F__data X__pthread_rwlock_arch_t } /* pthreadtypes.h:91:3 */
+
+type Pthread_rwlockattr_t = struct {
+ F__ccgo_pad1 [0]uint64
+ F__size [8]uint8
+} /* pthreadtypes.h:97:3 */
+
+// POSIX spinlock data type.
+type Pthread_spinlock_t = int32 /* pthreadtypes.h:103:22 */
+
+// POSIX barriers data type. The structure of the type is
+// deliberately not exposed.
+type Pthread_barrier_t = struct {
+ F__ccgo_pad1 [0]uint64
+ F__size [32]uint8
+} /* pthreadtypes.h:112:3 */
+
+type Pthread_barrierattr_t = struct {
+ F__ccgo_pad1 [0]uint32
+ F__size [4]uint8
+} /* pthreadtypes.h:118:3 */
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// POSIX Standard: 5.6 File Characteristics <sys/stat.h>
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// NB: Include guard matches what <linux/time.h> uses.
+
+// The Single Unix specification says that some more types are
+// available here.
+
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Definition for struct stat.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Endian macros for string.h functions
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <http://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+type Stat = struct {
+ Fst_dev X__dev_t
+ Fst_ino X__ino64_t
+ Fst_mode X__mode_t
+ Fst_nlink X__nlink_t
+ Fst_uid X__uid_t
+ Fst_gid X__gid_t
+ Fst_rdev X__dev_t
+ F__pad1 X__dev_t
+ Fst_size X__off64_t
+ Fst_blksize X__blksize_t
+ F__pad2 int32
+ Fst_blocks X__blkcnt64_t
+ Fst_atim struct {
+ Ftv_sec X__time_t
+ Ftv_nsec X__syscall_slong_t
+ }
+ Fst_mtim struct {
+ Ftv_sec X__time_t
+ Ftv_nsec X__syscall_slong_t
+ }
+ Fst_ctim struct {
+ Ftv_sec X__time_t
+ Ftv_nsec X__syscall_slong_t
+ }
+ F__glibc_reserved [2]int32
+} /* struct_stat.h:44:1 */
+
+// File tree traversal functions declarations.
+// Copyright (C) 1994-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Copyright (c) 1989, 1993
+// The Regents of the University of California. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions
+// are met:
+// 1. Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// 2. Redistributions in binary form must reproduce the above copyright
+// notice, this list of conditions and the following disclaimer in the
+// documentation and/or other materials provided with the distribution.
+// 4. Neither the name of the University nor the names of its contributors
+// may be used to endorse or promote products derived from this software
+// without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+// ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+// SUCH DAMAGE.
+//
+// @(#)fts.h 8.3 (Berkeley) 8/14/94
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// POSIX Standard: 2.6 Primitive System Data Types <sys/types.h>
+
+type X_ftsent = struct {
+ Ffts_cycle uintptr
+ Ffts_parent uintptr
+ Ffts_link uintptr
+ Ffts_number int64
+ Ffts_pointer uintptr
+ Ffts_accpath uintptr
+ Ffts_path uintptr
+ Ffts_errno int32
+ Ffts_symfd int32
+ Ffts_pathlen uint16
+ Ffts_namelen uint16
+ F__ccgo_pad1 [4]byte
+ Ffts_ino Ino_t
+ Ffts_dev Dev_t
+ Ffts_nlink Nlink_t
+ Ffts_level int16
+ Ffts_info uint16
+ Ffts_flags uint16
+ Ffts_instr uint16
+ F__ccgo_pad2 [4]byte
+ Ffts_statp uintptr
+ Ffts_name [1]uint8
+ F__ccgo_pad3 [7]byte
+} /* fts.h:58:2 */
+
+// File tree traversal functions declarations.
+// Copyright (C) 1994-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Copyright (c) 1989, 1993
+// The Regents of the University of California. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions
+// are met:
+// 1. Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// 2. Redistributions in binary form must reproduce the above copyright
+// notice, this list of conditions and the following disclaimer in the
+// documentation and/or other materials provided with the distribution.
+// 4. Neither the name of the University nor the names of its contributors
+// may be used to endorse or promote products derived from this software
+// without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+// ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+// SUCH DAMAGE.
+//
+// @(#)fts.h 8.3 (Berkeley) 8/14/94
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// POSIX Standard: 2.6 Primitive System Data Types <sys/types.h>
+
+type FTS = struct {
+ Ffts_cur uintptr
+ Ffts_child uintptr
+ Ffts_array uintptr
+ Ffts_dev Dev_t
+ Ffts_path uintptr
+ Ffts_rfd int32
+ Ffts_pathlen int32
+ Ffts_nitems int32
+ F__ccgo_pad1 [4]byte
+ Ffts_compar uintptr
+ Ffts_options int32
+ F__ccgo_pad2 [4]byte
+} /* fts.h:81:3 */
+
+type FTSENT = X_ftsent /* fts.h:147:3 */
+
+var _ uint8 /* gen.c:5:13: */
diff --git a/vendor/modernc.org/libc/grp/capi_linux_riscv64.go b/vendor/modernc.org/libc/grp/capi_linux_riscv64.go
new file mode 100644
index 00000000..be15deec
--- /dev/null
+++ b/vendor/modernc.org/libc/grp/capi_linux_riscv64.go
@@ -0,0 +1,5 @@
+// Code generated by 'ccgo grp/gen.c -crt-import-path -export-defines -export-enums -export-externs X -export-fields F -export-structs -export-typedefs -header -hide _OSSwapInt16,_OSSwapInt32,_OSSwapInt64 -o grp/grp_linux_riscv64.go -pkgname grp', DO NOT EDIT.
+
+package grp
+
+var CAPI = map[string]struct{}{}
diff --git a/vendor/modernc.org/libc/grp/grp_linux_riscv64.go b/vendor/modernc.org/libc/grp/grp_linux_riscv64.go
new file mode 100644
index 00000000..f5f68e96
--- /dev/null
+++ b/vendor/modernc.org/libc/grp/grp_linux_riscv64.go
@@ -0,0 +1,953 @@
+// Code generated by 'ccgo grp/gen.c -crt-import-path "" -export-defines "" -export-enums "" -export-externs X -export-fields F -export-structs "" -export-typedefs "" -header -hide _OSSwapInt16,_OSSwapInt32,_OSSwapInt64 -o grp/grp_linux_riscv64.go -pkgname grp', DO NOT EDIT.
+
+package grp
+
+import (
+ "math"
+ "reflect"
+ "sync/atomic"
+ "unsafe"
+)
+
+var _ = math.Pi
+var _ reflect.Kind
+var _ atomic.Value
+var _ unsafe.Pointer
+
+const (
+ NSS_BUFLEN_GROUP = 1024
+ X_ATFILE_SOURCE = 1
+ X_BITS_TIME64_H = 1
+ X_BITS_TYPESIZES_H = 1
+ X_BITS_TYPES_H = 1
+ X_BSD_SIZE_T_ = 0
+ X_BSD_SIZE_T_DEFINED_ = 0
+ X_DEFAULT_SOURCE = 1
+ X_FEATURES_H = 1
+ X_FILE_OFFSET_BITS = 64
+ X_GCC_SIZE_T = 0
+ X_GRP_H = 1
+ X_LP64 = 1
+ X_POSIX_C_SOURCE = 200809
+ X_POSIX_SOURCE = 1
+ X_SIZET_ = 0
+ X_SIZE_T = 0
+ X_SIZE_T_ = 0
+ X_SIZE_T_DECLARED = 0
+ X_SIZE_T_DEFINED = 0
+ X_SIZE_T_DEFINED_ = 0
+ X_STDC_PREDEF_H = 1
+ X_SYS_CDEFS_H = 1
+ X_SYS_SIZE_T_H = 0
+ X_T_SIZE = 0
+ X_T_SIZE_ = 0
+ Linux = 1
+ Unix = 1
+)
+
+type Ptrdiff_t = int64 /* <builtin>:3:26 */
+
+type Size_t = uint64 /* <builtin>:9:23 */
+
+type Wchar_t = int32 /* <builtin>:15:24 */
+
+type X__int128_t = struct {
+ Flo int64
+ Fhi int64
+} /* <builtin>:21:43 */ // must match modernc.org/mathutil.Int128
+type X__uint128_t = struct {
+ Flo uint64
+ Fhi uint64
+} /* <builtin>:22:44 */ // must match modernc.org/mathutil.Int128
+
+type X__builtin_va_list = uintptr /* <builtin>:46:14 */
+type X__float128 = float64 /* <builtin>:47:21 */
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// POSIX Standard: 9.2.1 Group Database Access <grp.h>
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// These are defined by the user (or the compiler)
+// to specify the desired environment:
+//
+// __STRICT_ANSI__ ISO Standard C.
+// _ISOC99_SOURCE Extensions to ISO C89 from ISO C99.
+// _ISOC11_SOURCE Extensions to ISO C99 from ISO C11.
+// _ISOC2X_SOURCE Extensions to ISO C99 from ISO C2X.
+// __STDC_WANT_LIB_EXT2__
+// Extensions to ISO C99 from TR 27431-2:2010.
+// __STDC_WANT_IEC_60559_BFP_EXT__
+// Extensions to ISO C11 from TS 18661-1:2014.
+// __STDC_WANT_IEC_60559_FUNCS_EXT__
+// Extensions to ISO C11 from TS 18661-4:2015.
+// __STDC_WANT_IEC_60559_TYPES_EXT__
+// Extensions to ISO C11 from TS 18661-3:2015.
+// __STDC_WANT_IEC_60559_EXT__
+// ISO C2X interfaces defined only in Annex F.
+//
+// _POSIX_SOURCE IEEE Std 1003.1.
+// _POSIX_C_SOURCE If ==1, like _POSIX_SOURCE; if >=2 add IEEE Std 1003.2;
+// if >=199309L, add IEEE Std 1003.1b-1993;
+// if >=199506L, add IEEE Std 1003.1c-1995;
+// if >=200112L, all of IEEE 1003.1-2004
+// if >=200809L, all of IEEE 1003.1-2008
+// _XOPEN_SOURCE Includes POSIX and XPG things. Set to 500 if
+// Single Unix conformance is wanted, to 600 for the
+// sixth revision, to 700 for the seventh revision.
+// _XOPEN_SOURCE_EXTENDED XPG things and X/Open Unix extensions.
+// _LARGEFILE_SOURCE Some more functions for correct standard I/O.
+// _LARGEFILE64_SOURCE Additional functionality from LFS for large files.
+// _FILE_OFFSET_BITS=N Select default filesystem interface.
+// _ATFILE_SOURCE Additional *at interfaces.
+// _DYNAMIC_STACK_SIZE_SOURCE Select correct (but non compile-time constant)
+// MINSIGSTKSZ, SIGSTKSZ and PTHREAD_STACK_MIN.
+// _GNU_SOURCE All of the above, plus GNU extensions.
+// _DEFAULT_SOURCE The default set of features (taking precedence over
+// __STRICT_ANSI__).
+//
+// _FORTIFY_SOURCE Add security hardening to many library functions.
+// Set to 1 or 2; 2 performs stricter checks than 1.
+//
+// _REENTRANT, _THREAD_SAFE
+// Obsolete; equivalent to _POSIX_C_SOURCE=199506L.
+//
+// The `-ansi' switch to the GNU C compiler, and standards conformance
+// options such as `-std=c99', define __STRICT_ANSI__. If none of
+// these are defined, or if _DEFAULT_SOURCE is defined, the default is
+// to have _POSIX_SOURCE set to one and _POSIX_C_SOURCE set to
+// 200809L, as well as enabling miscellaneous functions from BSD and
+// SVID. If more than one of these are defined, they accumulate. For
+// example __STRICT_ANSI__, _POSIX_SOURCE and _POSIX_C_SOURCE together
+// give you ISO C, 1003.1, and 1003.2, but nothing else.
+//
+// These are defined by this file and are used by the
+// header files to decide what to declare or define:
+//
+// __GLIBC_USE (F) Define things from feature set F. This is defined
+// to 1 or 0; the subsequent macros are either defined
+// or undefined, and those tests should be moved to
+// __GLIBC_USE.
+// __USE_ISOC11 Define ISO C11 things.
+// __USE_ISOC99 Define ISO C99 things.
+// __USE_ISOC95 Define ISO C90 AMD1 (C95) things.
+// __USE_ISOCXX11 Define ISO C++11 things.
+// __USE_POSIX Define IEEE Std 1003.1 things.
+// __USE_POSIX2 Define IEEE Std 1003.2 things.
+// __USE_POSIX199309 Define IEEE Std 1003.1, and .1b things.
+// __USE_POSIX199506 Define IEEE Std 1003.1, .1b, .1c and .1i things.
+// __USE_XOPEN Define XPG things.
+// __USE_XOPEN_EXTENDED Define X/Open Unix things.
+// __USE_UNIX98 Define Single Unix V2 things.
+// __USE_XOPEN2K Define XPG6 things.
+// __USE_XOPEN2KXSI Define XPG6 XSI things.
+// __USE_XOPEN2K8 Define XPG7 things.
+// __USE_XOPEN2K8XSI Define XPG7 XSI things.
+// __USE_LARGEFILE Define correct standard I/O things.
+// __USE_LARGEFILE64 Define LFS things with separate names.
+// __USE_FILE_OFFSET64 Define 64bit interface as default.
+// __USE_MISC Define things from 4.3BSD or System V Unix.
+// __USE_ATFILE Define *at interfaces and AT_* constants for them.
+// __USE_DYNAMIC_STACK_SIZE Define correct (but non compile-time constant)
+// MINSIGSTKSZ, SIGSTKSZ and PTHREAD_STACK_MIN.
+// __USE_GNU Define GNU extensions.
+// __USE_FORTIFY_LEVEL Additional security measures used, according to level.
+//
+// The macros `__GNU_LIBRARY__', `__GLIBC__', and `__GLIBC_MINOR__' are
+// defined by this file unconditionally. `__GNU_LIBRARY__' is provided
+// only for compatibility. All new code should use the other symbols
+// to test for features.
+//
+// All macros listed above as possibly being defined by this file are
+// explicitly undefined if they are not explicitly defined.
+// Feature-test macros that are not defined by the user or compiler
+// but are implied by the other feature-test macros defined (or by the
+// lack of any definitions) are defined by the file.
+//
+// ISO C feature test macros depend on the definition of the macro
+// when an affected header is included, not when the first system
+// header is included, and so they are handled in
+// <bits/libc-header-start.h>, which does not have a multiple include
+// guard. Feature test macros that can be handled from the first
+// system header included are handled here.
+
+// Undefine everything, so we get a clean slate.
+
+// Suppress kernel-name space pollution unless user expressedly asks
+// for it.
+
+// Convenience macro to test the version of gcc.
+// Use like this:
+// #if __GNUC_PREREQ (2,8)
+// ... code requiring gcc 2.8 or later ...
+// #endif
+// Note: only works for GCC 2.0 and later, because __GNUC_MINOR__ was
+// added in 2.0.
+
+// Similarly for clang. Features added to GCC after version 4.2 may
+// or may not also be available in clang, and clang's definitions of
+// __GNUC(_MINOR)__ are fixed at 4 and 2 respectively. Not all such
+// features can be queried via __has_extension/__has_feature.
+
+// Whether to use feature set F.
+
+// _BSD_SOURCE and _SVID_SOURCE are deprecated aliases for
+// _DEFAULT_SOURCE. If _DEFAULT_SOURCE is present we do not
+// issue a warning; the expectation is that the source is being
+// transitioned to use the new macro.
+
+// If _GNU_SOURCE was defined by the user, turn on all the other features.
+
+// If nothing (other than _GNU_SOURCE and _DEFAULT_SOURCE) is defined,
+// define _DEFAULT_SOURCE.
+
+// This is to enable the ISO C2X extension.
+
+// This is to enable the ISO C11 extension.
+
+// This is to enable the ISO C99 extension.
+
+// This is to enable the ISO C90 Amendment 1:1995 extension.
+
+// If none of the ANSI/POSIX macros are defined, or if _DEFAULT_SOURCE
+// is defined, use POSIX.1-2008 (or another version depending on
+// _XOPEN_SOURCE).
+
+// Some C libraries once required _REENTRANT and/or _THREAD_SAFE to be
+// defined in all multithreaded code. GNU libc has not required this
+// for many years. We now treat them as compatibility synonyms for
+// _POSIX_C_SOURCE=199506L, which is the earliest level of POSIX with
+// comprehensive support for multithreaded code. Using them never
+// lowers the selected level of POSIX conformance, only raises it.
+
+// Features part to handle 64-bit time_t support.
+// Copyright (C) 2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// We need to know the word size in order to check the time size.
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Bit size of the time_t type at glibc build time, RISC-V case.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// RV32 and RV64 both use 64-bit time_t
+
+// The function 'gets' existed in C89, but is impossible to use
+// safely. It has been removed from ISO C11 and ISO C++14. Note: for
+// compatibility with various implementations of <cstdio>, this test
+// must consider only the value of __cplusplus when compiling C++.
+
+// GNU formerly extended the scanf functions with modified format
+// specifiers %as, %aS, and %a[...] that allocate a buffer for the
+// input using malloc. This extension conflicts with ISO C99, which
+// defines %a as a standalone format specifier that reads a floating-
+// point number; moreover, POSIX.1-2008 provides the same feature
+// using the modifier letter 'm' instead (%ms, %mS, %m[...]).
+//
+// We now follow C99 unless GNU extensions are active and the compiler
+// is specifically in C89 or C++98 mode (strict or not). For
+// instance, with GCC, -std=gnu11 will have C99-compliant scanf with
+// or without -D_GNU_SOURCE, but -std=c89 -D_GNU_SOURCE will have the
+// old extension.
+
+// Get definitions of __STDC_* predefined macros, if the compiler has
+// not preincluded this header automatically.
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// This macro indicates that the installed library is the GNU C Library.
+// For historic reasons the value now is 6 and this will stay from now
+// on. The use of this variable is deprecated. Use __GLIBC__ and
+// __GLIBC_MINOR__ now (see below) when you want to test for a specific
+// GNU C library version and use the values in <gnu/lib-names.h> to get
+// the sonames of the shared libraries.
+
+// Major and minor version number of the GNU C library package. Use
+// these macros to test for features in specific releases.
+
+// This is here only because every header file already includes this one.
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// We are almost always included from features.h.
+
+// The GNU libc does not support any K&R compilers or the traditional mode
+// of ISO C compilers anymore. Check for some of the combinations not
+// supported anymore.
+
+// Some user header file might have defined this before.
+
+// Compilers that lack __has_attribute may object to
+// #if defined __has_attribute && __has_attribute (...)
+// even though they do not need to evaluate the right-hand side of the &&.
+// Similarly for __has_builtin, etc.
+
+// All functions, except those with callbacks or those that
+// synchronize memory, are leaf functions.
+
+// GCC can always grok prototypes. For C++ programs we add throw()
+// to help it optimize the function calls. But this only works with
+// gcc 2.8.x and egcs. For gcc 3.4 and up we even mark C functions
+// as non-throwing using a function attribute since programs can use
+// the -fexceptions options for C code as well.
+
+// These two macros are not used in glibc anymore. They are kept here
+// only because some other projects expect the macros to be defined.
+
+// For these things, GCC behaves the ANSI way normally,
+// and the non-ANSI way under -traditional.
+
+// This is not a typedef so `const __ptr_t' does the right thing.
+
+// C++ needs to know that types and declarations are C, not C++.
+
+// Fortify support.
+
+// Use __builtin_dynamic_object_size at _FORTIFY_SOURCE=3 when available.
+
+// Support for flexible arrays.
+// Headers that should use flexible arrays only if they're "real"
+// (e.g. only if they won't affect sizeof()) should test
+// #if __glibc_c99_flexarr_available.
+
+// __asm__ ("xyz") is used throughout the headers to rename functions
+// at the assembly language level. This is wrapped by the __REDIRECT
+// macro, in order to support compilers that can do this some other
+// way. When compilers don't support asm-names at all, we have to do
+// preprocessor tricks instead (which don't have exactly the right
+// semantics, but it's the best we can do).
+//
+// Example:
+// int __REDIRECT(setpgrp, (__pid_t pid, __pid_t pgrp), setpgid);
+
+//
+// #elif __SOME_OTHER_COMPILER__
+//
+// # define __REDIRECT(name, proto, alias) name proto; _Pragma("let " #name " = " #alias)
+
+// GCC and clang have various useful declarations that can be made with
+// the '__attribute__' syntax. All of the ways we use this do fine if
+// they are omitted for compilers that don't understand it.
+
+// At some point during the gcc 2.96 development the `malloc' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+
+// Tell the compiler which arguments to an allocation function
+// indicate the size of the allocation.
+
+// At some point during the gcc 2.96 development the `pure' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+
+// This declaration tells the compiler that the value is constant.
+
+// At some point during the gcc 3.1 development the `used' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+
+// Since version 3.2, gcc allows marking deprecated functions.
+
+// Since version 4.5, gcc also allows one to specify the message printed
+// when a deprecated function is used. clang claims to be gcc 4.2, but
+// may also support this feature.
+
+// At some point during the gcc 2.8 development the `format_arg' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+// If several `format_arg' attributes are given for the same function, in
+// gcc-3.0 and older, all but the last one are ignored. In newer gccs,
+// all designated arguments are considered.
+
+// At some point during the gcc 2.97 development the `strfmon' format
+// attribute for functions was introduced. We don't want to use it
+// unconditionally (although this would be possible) since it
+// generates warnings.
+
+// The nonnull function attribute marks pointer parameters that
+// must not be NULL.
+
+// The returns_nonnull function attribute marks the return type of the function
+// as always being non-null.
+
+// If fortification mode, we warn about unused results of certain
+// function calls which can lead to problems.
+
+// Forces a function to be always inlined.
+// The Linux kernel defines __always_inline in stddef.h (283d7573), and
+// it conflicts with this definition. Therefore undefine it first to
+// allow either header to be included first.
+
+// Associate error messages with the source location of the call site rather
+// than with the source location inside the function.
+
+// GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
+// inline semantics, unless -fgnu89-inline is used. Using __GNUC_STDC_INLINE__
+// or __GNUC_GNU_INLINE is not a good enough check for gcc because gcc versions
+// older than 4.3 may define these macros and still not guarantee GNU inlining
+// semantics.
+//
+// clang++ identifies itself as gcc-4.2, but has support for GNU inlining
+// semantics, that can be checked for by using the __GNUC_STDC_INLINE_ and
+// __GNUC_GNU_INLINE__ macro definitions.
+
+// GCC 4.3 and above allow passing all anonymous arguments of an
+// __extern_always_inline function to some other vararg function.
+
+// It is possible to compile containing GCC extensions even if GCC is
+// run in pedantic mode if the uses are carefully marked using the
+// `__extension__' keyword. But this is not generally available before
+// version 2.8.
+
+// __restrict is known in EGCS 1.2 and above, and in clang.
+// It works also in C++ mode (outside of arrays), but only when spelled
+// as '__restrict', not 'restrict'.
+
+// ISO C99 also allows to declare arrays as non-overlapping. The syntax is
+// array_name[restrict]
+// GCC 3.1 and clang support this.
+// This syntax is not usable in C++ mode.
+
+// Describes a char array whose address can safely be passed as the first
+// argument to strncpy and strncat, as the char array is not necessarily
+// a NUL-terminated string.
+
+// Undefine (also defined in libc-symbols.h).
+// Copies attributes from the declaration or type referenced by
+// the argument.
+
+// The #ifndef lets Gnulib avoid including these on non-glibc
+// platforms, where the includes typically do not exist.
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Properties of long double type. ldbl-128 version.
+// Copyright (C) 2016-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// long double is distinct from double, so there is nothing to
+// define here.
+
+// __glibc_macro_warning (MESSAGE) issues warning MESSAGE. This is
+// intended for use in preprocessor macros.
+//
+// Note: MESSAGE must be a _single_ string; concatenation of string
+// literals is not supported.
+
+// Generic selection (ISO C11) is a C-only feature, available in GCC
+// since version 4.9. Previous versions do not provide generic
+// selection, even though they might set __STDC_VERSION__ to 201112L,
+// when in -std=c11 mode. Thus, we must check for !defined __GNUC__
+// when testing __STDC_VERSION__ for generic selection support.
+// On the other hand, Clang also defines __GNUC__, so a clang-specific
+// check is required to enable the use of generic selection.
+
+// Designates a 1-based positional argument ref-index of pointer type
+// that can be used to access size-index elements of the pointed-to
+// array according to access mode, or at least one element when
+// size-index is not provided:
+// access (access-mode, <ref-index> [, <size-index>])
+
+// Designates dealloc as a function to call to deallocate objects
+// allocated by the declared function.
+
+// Specify that a function such as setjmp or vfork may return
+// twice.
+
+// If we don't have __REDIRECT, prototypes will be missing if
+// __USE_FILE_OFFSET64 but not __USE_LARGEFILE[64].
+
+// Decide whether we can define 'extern inline' functions in headers.
+
+// This is here only because every header file already includes this one.
+// Get the definitions of all the appropriate `__stub_FUNCTION' symbols.
+// <gnu/stubs.h> contains `#define __stub_FUNCTION' when FUNCTION is a stub
+// that will always return failure (and set errno to ENOSYS).
+// This file is automatically generated.
+// This file selects the right generated file of `__stub_FUNCTION' macros
+// based on the architecture being compiled for.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// This file is automatically generated.
+// It defines a symbol `__stub_FUNCTION' for each function
+// in the C library which is a stub, meaning it will fail
+// every time called, usually setting errno to ENOSYS.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Bit size of the time_t type at glibc build time, RISC-V case.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// RV32 and RV64 both use 64-bit time_t
+
+// Convenience types.
+type X__u_char = uint8 /* types.h:31:23 */
+type X__u_short = uint16 /* types.h:32:28 */
+type X__u_int = uint32 /* types.h:33:22 */
+type X__u_long = uint64 /* types.h:34:27 */
+
+// Fixed-size types, underlying types depend on word size and compiler.
+type X__int8_t = int8 /* types.h:37:21 */
+type X__uint8_t = uint8 /* types.h:38:23 */
+type X__int16_t = int16 /* types.h:39:26 */
+type X__uint16_t = uint16 /* types.h:40:28 */
+type X__int32_t = int32 /* types.h:41:20 */
+type X__uint32_t = uint32 /* types.h:42:22 */
+type X__int64_t = int64 /* types.h:44:25 */
+type X__uint64_t = uint64 /* types.h:45:27 */
+
+// Smallest types with at least a given width.
+type X__int_least8_t = X__int8_t /* types.h:52:18 */
+type X__uint_least8_t = X__uint8_t /* types.h:53:19 */
+type X__int_least16_t = X__int16_t /* types.h:54:19 */
+type X__uint_least16_t = X__uint16_t /* types.h:55:20 */
+type X__int_least32_t = X__int32_t /* types.h:56:19 */
+type X__uint_least32_t = X__uint32_t /* types.h:57:20 */
+type X__int_least64_t = X__int64_t /* types.h:58:19 */
+type X__uint_least64_t = X__uint64_t /* types.h:59:20 */
+
+// quad_t is also 64 bits.
+type X__quad_t = int64 /* types.h:63:18 */
+type X__u_quad_t = uint64 /* types.h:64:27 */
+
+// Largest integral types.
+type X__intmax_t = int64 /* types.h:72:18 */
+type X__uintmax_t = uint64 /* types.h:73:27 */
+
+// The machine-dependent file <bits/typesizes.h> defines __*_T_TYPE
+// macros for each of the OS types we define below. The definitions
+// of those macros must use the following macros for underlying types.
+// We define __S<SIZE>_TYPE and __U<SIZE>_TYPE for the signed and unsigned
+// variants of each of the following integer types on this machine.
+//
+// 16 -- "natural" 16-bit type (always short)
+// 32 -- "natural" 32-bit type (always int)
+// 64 -- "natural" 64-bit type (long or long long)
+// LONG32 -- 32-bit type, traditionally long
+// QUAD -- 64-bit type, traditionally long long
+// WORD -- natural type of __WORDSIZE bits (int or long)
+// LONGWORD -- type of __WORDSIZE bits, traditionally long
+//
+// We distinguish WORD/LONGWORD, 32/LONG32, and 64/QUAD so that the
+// conventional uses of `long' or `long long' type modifiers match the
+// types we define, even when a less-adorned type would be the same size.
+// This matters for (somewhat) portably writing printf/scanf formats for
+// these types, where using the appropriate l or ll format modifiers can
+// make the typedefs and the formats match up across all GNU platforms. If
+// we used `long' when it's 64 bits where `long long' is expected, then the
+// compiler would warn about the formats not matching the argument types,
+// and the programmer changing them to shut up the compiler would break the
+// program's portability.
+//
+// Here we assume what is presently the case in all the GCC configurations
+// we support: long long is always 64 bits, long is always word/address size,
+// and int is always 32 bits.
+
+// No need to mark the typedef with __extension__.
+// bits/typesizes.h -- underlying types for *_t. For the generic Linux ABI.
+// Copyright (C) 2011-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+// Contributed by Chris Metcalf <cmetcalf@tilera.com>, 2011.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// See <bits/types.h> for the meaning of these macros. This file exists so
+// that <bits/types.h> need not vary across different GNU platforms.
+
+// Tell the libc code that off_t and off64_t are actually the same type
+// for all ABI purposes, even if possibly expressed as different base types
+// for C type-checking purposes.
+
+// Same for ino_t and ino64_t.
+
+// And for __rlim_t and __rlim64_t.
+
+// And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t.
+
+// And for getitimer, setitimer and rusage
+
+// Number of descriptors that can fit in an `fd_set'.
+
+// bits/time64.h -- underlying types for __time64_t. RISC-V version.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Define __TIME64_T_TYPE so that it is always a 64-bit type.
+
+// If we already have 64-bit time type then use it.
+
+type X__dev_t = uint64 /* types.h:145:25 */ // Type of device numbers.
+type X__uid_t = uint32 /* types.h:146:25 */ // Type of user identifications.
+type X__gid_t = uint32 /* types.h:147:25 */ // Type of group identifications.
+type X__ino_t = uint64 /* types.h:148:25 */ // Type of file serial numbers.
+type X__ino64_t = uint64 /* types.h:149:27 */ // Type of file serial numbers (LFS).
+type X__mode_t = uint32 /* types.h:150:26 */ // Type of file attribute bitmasks.
+type X__nlink_t = uint32 /* types.h:151:27 */ // Type of file link counts.
+type X__off_t = int64 /* types.h:152:25 */ // Type of file sizes and offsets.
+type X__off64_t = int64 /* types.h:153:27 */ // Type of file sizes and offsets (LFS).
+type X__pid_t = int32 /* types.h:154:25 */ // Type of process identifications.
+type X__fsid_t = struct{ F__val [2]int32 } /* types.h:155:26 */ // Type of file system IDs.
+type X__clock_t = int64 /* types.h:156:27 */ // Type of CPU usage counts.
+type X__rlim_t = uint64 /* types.h:157:26 */ // Type for resource measurement.
+type X__rlim64_t = uint64 /* types.h:158:28 */ // Type for resource measurement (LFS).
+type X__id_t = uint32 /* types.h:159:24 */ // General type for IDs.
+type X__time_t = int64 /* types.h:160:26 */ // Seconds since the Epoch.
+type X__useconds_t = uint32 /* types.h:161:30 */ // Count of microseconds.
+type X__suseconds_t = int64 /* types.h:162:31 */ // Signed count of microseconds.
+type X__suseconds64_t = int64 /* types.h:163:33 */
+
+type X__daddr_t = int32 /* types.h:165:27 */ // The type of a disk address.
+type X__key_t = int32 /* types.h:166:25 */ // Type of an IPC key.
+
+// Clock ID used in clock and timer functions.
+type X__clockid_t = int32 /* types.h:169:29 */
+
+// Timer ID returned by `timer_create'.
+type X__timer_t = uintptr /* types.h:172:12 */
+
+// Type to represent block size.
+type X__blksize_t = int32 /* types.h:175:29 */
+
+// Types from the Large File Support interface.
+
+// Type to count number of disk blocks.
+type X__blkcnt_t = int64 /* types.h:180:28 */
+type X__blkcnt64_t = int64 /* types.h:181:30 */
+
+// Type to count file system blocks.
+type X__fsblkcnt_t = uint64 /* types.h:184:30 */
+type X__fsblkcnt64_t = uint64 /* types.h:185:32 */
+
+// Type to count file system nodes.
+type X__fsfilcnt_t = uint64 /* types.h:188:30 */
+type X__fsfilcnt64_t = uint64 /* types.h:189:32 */
+
+// Type of miscellaneous file system fields.
+type X__fsword_t = int64 /* types.h:192:28 */
+
+type X__ssize_t = int64 /* types.h:194:27 */ // Type of a byte count, or error.
+
+// Signed long type used in system calls.
+type X__syscall_slong_t = int64 /* types.h:197:33 */
+// Unsigned long type used in system calls.
+type X__syscall_ulong_t = uint64 /* types.h:199:33 */
+
+// These few don't really vary by system, they always correspond
+// to one of the other defined types.
+type X__loff_t = X__off64_t /* types.h:203:19 */ // Type of file sizes and offsets (LFS).
+type X__caddr_t = uintptr /* types.h:204:14 */
+
+// Duplicates info from stdint.h but this is used in unistd.h.
+type X__intptr_t = int64 /* types.h:207:25 */
+
+// Duplicate info from sys/socket.h.
+type X__socklen_t = uint32 /* types.h:210:23 */
+
+// C99: An integer type that can be accessed as an atomic entity,
+// even in the presence of asynchronous interrupts.
+// It is not currently necessary for this to be machine-specific.
+type X__sig_atomic_t = int32 /* types.h:215:13 */
+
+// Wide character type.
+// Locale-writers should change this as necessary to
+// be big enough to hold unique values not between 0 and 127,
+// and not (wchar_t) -1, for each defined multibyte character.
+
+// Define this type if we are doing the whole job,
+// or if we want this type in particular.
+
+// A null pointer constant.
+
+// For the Single Unix specification we must define this type here.
+type Gid_t = X__gid_t /* grp.h:37:17 */
+
+// The group structure.
+type Group = struct {
+ Fgr_name uintptr
+ Fgr_passwd uintptr
+ Fgr_gid X__gid_t
+ F__ccgo_pad1 [4]byte
+ Fgr_mem uintptr
+} /* grp.h:42:1 */
+
+var _ uint8 /* gen.c:2:13: */
diff --git a/vendor/modernc.org/libc/honnef.co/go/netdb/netdb.go b/vendor/modernc.org/libc/honnef.co/go/netdb/netdb.go
index bca62b15..61f80522 100644
--- a/vendor/modernc.org/libc/honnef.co/go/netdb/netdb.go
+++ b/vendor/modernc.org/libc/honnef.co/go/netdb/netdb.go
@@ -751,7 +751,10 @@ func init() {
portproto := strings.SplitN(fields[1], "/", 2)
port, err := strconv.ParseInt(portproto[0], 10, 32)
if err != nil {
- panic(err)
+ // If we find lines that don't match the expected format we skip over them.
+ // The expected format is <service-name> <port>/<protocol> [aliases ...]
+ // As we're using strings.Fields for splitting the line, failures can happen if the service name field contains white spaces.
+ continue
}
proto := portproto[1]
diff --git a/vendor/modernc.org/libc/langinfo/capi_linux_riscv64.go b/vendor/modernc.org/libc/langinfo/capi_linux_riscv64.go
new file mode 100644
index 00000000..8f1b023f
--- /dev/null
+++ b/vendor/modernc.org/libc/langinfo/capi_linux_riscv64.go
@@ -0,0 +1,5 @@
+// Code generated by 'ccgo langinfo/gen.c -crt-import-path -export-defines -export-enums -export-externs X -export-fields F -export-structs -export-typedefs -header -hide _OSSwapInt16,_OSSwapInt32,_OSSwapInt64 -o langinfo/langinfo_linux_riscv64.go -pkgname langinfo', DO NOT EDIT.
+
+package langinfo
+
+var CAPI = map[string]struct{}{}
diff --git a/vendor/modernc.org/libc/langinfo/langinfo_linux_riscv64.go b/vendor/modernc.org/libc/langinfo/langinfo_linux_riscv64.go
new file mode 100644
index 00000000..afd34d3e
--- /dev/null
+++ b/vendor/modernc.org/libc/langinfo/langinfo_linux_riscv64.go
@@ -0,0 +1,1195 @@
+// Code generated by 'ccgo langinfo/gen.c -crt-import-path "" -export-defines "" -export-enums "" -export-externs X -export-fields F -export-structs "" -export-typedefs "" -header -hide _OSSwapInt16,_OSSwapInt32,_OSSwapInt64 -o langinfo/langinfo_linux_riscv64.go -pkgname langinfo', DO NOT EDIT.
+
+package langinfo
+
+import (
+ "math"
+ "reflect"
+ "sync/atomic"
+ "unsafe"
+)
+
+var _ = math.Pi
+var _ reflect.Kind
+var _ atomic.Value
+var _ unsafe.Pointer
+
+const (
+ NL_CAT_LOCALE = 1
+ NL_SETD = 1
+ X_ATFILE_SOURCE = 1
+ X_BITS_LOCALE_H = 1
+ X_BITS_TYPES_LOCALE_T_H = 1
+ X_BITS_TYPES___LOCALE_T_H = 1
+ X_DEFAULT_SOURCE = 1
+ X_FEATURES_H = 1
+ X_FILE_OFFSET_BITS = 64
+ X_LANGINFO_H = 1
+ X_LP64 = 1
+ X_NL_TYPES_H = 1
+ X_POSIX_C_SOURCE = 200809
+ X_POSIX_SOURCE = 1
+ X_STDC_PREDEF_H = 1
+ X_SYS_CDEFS_H = 1
+ Linux = 1
+ Unix = 1
+)
+
+// Definition of locale category symbol values.
+// Copyright (C) 2001-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Construct an `nl_item' value for `nl_langinfo' from a locale category
+// (LC_*) and an item index within the category. Some code may depend on
+// the item values within a category increasing monotonically with the
+// indices.
+
+// Extract the category and item index from a constructed `nl_item' value.
+
+// Enumeration of locale items that can be queried with `nl_langinfo'.
+const ( /* langinfo.h:41:1: */
+ // LC_TIME category: date and time formatting.
+
+ // Abbreviated days of the week.
+ ABDAY_1 = 131072 // Sun
+ ABDAY_2 = 131073
+ ABDAY_3 = 131074
+ ABDAY_4 = 131075
+ ABDAY_5 = 131076
+ ABDAY_6 = 131077
+ ABDAY_7 = 131078
+
+ // Long-named days of the week.
+ DAY_1 = 131079 // Sunday
+ DAY_2 = 131080 // Monday
+ DAY_3 = 131081 // Tuesday
+ DAY_4 = 131082 // Wednesday
+ DAY_5 = 131083 // Thursday
+ DAY_6 = 131084 // Friday
+ DAY_7 = 131085 // Saturday
+
+ // Abbreviated month names, in the grammatical form used when the month
+ // is a part of a complete date.
+ ABMON_1 = 131086 // Jan
+ ABMON_2 = 131087
+ ABMON_3 = 131088
+ ABMON_4 = 131089
+ ABMON_5 = 131090
+ ABMON_6 = 131091
+ ABMON_7 = 131092
+ ABMON_8 = 131093
+ ABMON_9 = 131094
+ ABMON_10 = 131095
+ ABMON_11 = 131096
+ ABMON_12 = 131097
+
+ // Long month names, in the grammatical form used when the month
+ // is a part of a complete date.
+ MON_1 = 131098 // January
+ MON_2 = 131099
+ MON_3 = 131100
+ MON_4 = 131101
+ MON_5 = 131102
+ MON_6 = 131103
+ MON_7 = 131104
+ MON_8 = 131105
+ MON_9 = 131106
+ MON_10 = 131107
+ MON_11 = 131108
+ MON_12 = 131109
+
+ AM_STR = 131110 // Ante meridiem string.
+ PM_STR = 131111 // Post meridiem string.
+
+ D_T_FMT = 131112 // Date and time format for strftime.
+ D_FMT = 131113 // Date format for strftime.
+ T_FMT = 131114 // Time format for strftime.
+ T_FMT_AMPM = 131115 // 12-hour time format for strftime.
+
+ ERA = 131116 // Alternate era.
+ X__ERA_YEAR = 131117 // Year in alternate era format.
+ ERA_D_FMT = 131118 // Date in alternate era format.
+ ALT_DIGITS = 131119 // Alternate symbols for digits.
+ ERA_D_T_FMT = 131120 // Date and time in alternate era format.
+ ERA_T_FMT = 131121 // Time in alternate era format.
+
+ X_NL_TIME_ERA_NUM_ENTRIES = 131122 // Number entries in the era arrays.
+ X_NL_TIME_ERA_ENTRIES = 131123 // Structure with era entries in usable form.
+
+ X_NL_WABDAY_1 = 131124 // Sun
+ X_NL_WABDAY_2 = 131125
+ X_NL_WABDAY_3 = 131126
+ X_NL_WABDAY_4 = 131127
+ X_NL_WABDAY_5 = 131128
+ X_NL_WABDAY_6 = 131129
+ X_NL_WABDAY_7 = 131130
+
+ // Long-named days of the week.
+ X_NL_WDAY_1 = 131131 // Sunday
+ X_NL_WDAY_2 = 131132 // Monday
+ X_NL_WDAY_3 = 131133 // Tuesday
+ X_NL_WDAY_4 = 131134 // Wednesday
+ X_NL_WDAY_5 = 131135 // Thursday
+ X_NL_WDAY_6 = 131136 // Friday
+ X_NL_WDAY_7 = 131137 // Saturday
+
+ // Abbreviated month names, in the grammatical form used when the month
+ // is a part of a complete date.
+ X_NL_WABMON_1 = 131138 // Jan
+ X_NL_WABMON_2 = 131139
+ X_NL_WABMON_3 = 131140
+ X_NL_WABMON_4 = 131141
+ X_NL_WABMON_5 = 131142
+ X_NL_WABMON_6 = 131143
+ X_NL_WABMON_7 = 131144
+ X_NL_WABMON_8 = 131145
+ X_NL_WABMON_9 = 131146
+ X_NL_WABMON_10 = 131147
+ X_NL_WABMON_11 = 131148
+ X_NL_WABMON_12 = 131149
+
+ // Long month names, in the grammatical form used when the month
+ // is a part of a complete date.
+ X_NL_WMON_1 = 131150 // January
+ X_NL_WMON_2 = 131151
+ X_NL_WMON_3 = 131152
+ X_NL_WMON_4 = 131153
+ X_NL_WMON_5 = 131154
+ X_NL_WMON_6 = 131155
+ X_NL_WMON_7 = 131156
+ X_NL_WMON_8 = 131157
+ X_NL_WMON_9 = 131158
+ X_NL_WMON_10 = 131159
+ X_NL_WMON_11 = 131160
+ X_NL_WMON_12 = 131161
+
+ X_NL_WAM_STR = 131162 // Ante meridiem string.
+ X_NL_WPM_STR = 131163 // Post meridiem string.
+
+ X_NL_WD_T_FMT = 131164 // Date and time format for strftime.
+ X_NL_WD_FMT = 131165 // Date format for strftime.
+ X_NL_WT_FMT = 131166 // Time format for strftime.
+ X_NL_WT_FMT_AMPM = 131167 // 12-hour time format for strftime.
+
+ X_NL_WERA_YEAR = 131168 // Year in alternate era format.
+ X_NL_WERA_D_FMT = 131169 // Date in alternate era format.
+ X_NL_WALT_DIGITS = 131170 // Alternate symbols for digits.
+ X_NL_WERA_D_T_FMT = 131171 // Date and time in alternate era format.
+ X_NL_WERA_T_FMT = 131172 // Time in alternate era format.
+
+ X_NL_TIME_WEEK_NDAYS = 131173
+ X_NL_TIME_WEEK_1STDAY = 131174
+ X_NL_TIME_WEEK_1STWEEK = 131175
+ X_NL_TIME_FIRST_WEEKDAY = 131176
+ X_NL_TIME_FIRST_WORKDAY = 131177
+ X_NL_TIME_CAL_DIRECTION = 131178
+ X_NL_TIME_TIMEZONE = 131179
+
+ X_DATE_FMT = 131180 // strftime format for date.
+ X_NL_W_DATE_FMT = 131181
+
+ X_NL_TIME_CODESET = 131182
+
+ // Long month names, in the grammatical form used when the month
+ // is named by itself.
+ X__ALTMON_1 = 131183 // January
+ X__ALTMON_2 = 131184
+ X__ALTMON_3 = 131185
+ X__ALTMON_4 = 131186
+ X__ALTMON_5 = 131187
+ X__ALTMON_6 = 131188
+ X__ALTMON_7 = 131189
+ X__ALTMON_8 = 131190
+ X__ALTMON_9 = 131191
+ X__ALTMON_10 = 131192
+ X__ALTMON_11 = 131193
+ X__ALTMON_12 = 131194
+
+ // Long month names, in the grammatical form used when the month
+ // is named by itself.
+ X_NL_WALTMON_1 = 131195 // January
+ X_NL_WALTMON_2 = 131196
+ X_NL_WALTMON_3 = 131197
+ X_NL_WALTMON_4 = 131198
+ X_NL_WALTMON_5 = 131199
+ X_NL_WALTMON_6 = 131200
+ X_NL_WALTMON_7 = 131201
+ X_NL_WALTMON_8 = 131202
+ X_NL_WALTMON_9 = 131203
+ X_NL_WALTMON_10 = 131204
+ X_NL_WALTMON_11 = 131205
+ X_NL_WALTMON_12 = 131206
+
+ // Abbreviated month names, in the grammatical form used when the month
+ // is named by itself.
+ X_NL_ABALTMON_1 = 131207 // Jan
+ X_NL_ABALTMON_2 = 131208
+ X_NL_ABALTMON_3 = 131209
+ X_NL_ABALTMON_4 = 131210
+ X_NL_ABALTMON_5 = 131211
+ X_NL_ABALTMON_6 = 131212
+ X_NL_ABALTMON_7 = 131213
+ X_NL_ABALTMON_8 = 131214
+ X_NL_ABALTMON_9 = 131215
+ X_NL_ABALTMON_10 = 131216
+ X_NL_ABALTMON_11 = 131217
+ X_NL_ABALTMON_12 = 131218
+
+ // Abbreviated month names, in the grammatical form used when the month
+ // is named by itself.
+ X_NL_WABALTMON_1 = 131219 // Jan
+ X_NL_WABALTMON_2 = 131220
+ X_NL_WABALTMON_3 = 131221
+ X_NL_WABALTMON_4 = 131222
+ X_NL_WABALTMON_5 = 131223
+ X_NL_WABALTMON_6 = 131224
+ X_NL_WABALTMON_7 = 131225
+ X_NL_WABALTMON_8 = 131226
+ X_NL_WABALTMON_9 = 131227
+ X_NL_WABALTMON_10 = 131228
+ X_NL_WABALTMON_11 = 131229
+ X_NL_WABALTMON_12 = 131230
+
+ X_NL_NUM_LC_TIME = 131231 // Number of indices in LC_TIME category.
+
+ // LC_COLLATE category: text sorting.
+ // This information is accessed by the strcoll and strxfrm functions.
+ // These `nl_langinfo' names are used only internally.
+ X_NL_COLLATE_NRULES = 196608
+ X_NL_COLLATE_RULESETS = 196609
+ X_NL_COLLATE_TABLEMB = 196610
+ X_NL_COLLATE_WEIGHTMB = 196611
+ X_NL_COLLATE_EXTRAMB = 196612
+ X_NL_COLLATE_INDIRECTMB = 196613
+ X_NL_COLLATE_GAP1 = 196614
+ X_NL_COLLATE_GAP2 = 196615
+ X_NL_COLLATE_GAP3 = 196616
+ X_NL_COLLATE_TABLEWC = 196617
+ X_NL_COLLATE_WEIGHTWC = 196618
+ X_NL_COLLATE_EXTRAWC = 196619
+ X_NL_COLLATE_INDIRECTWC = 196620
+ X_NL_COLLATE_SYMB_HASH_SIZEMB = 196621
+ X_NL_COLLATE_SYMB_TABLEMB = 196622
+ X_NL_COLLATE_SYMB_EXTRAMB = 196623
+ X_NL_COLLATE_COLLSEQMB = 196624
+ X_NL_COLLATE_COLLSEQWC = 196625
+ X_NL_COLLATE_CODESET = 196626
+ X_NL_NUM_LC_COLLATE = 196627
+
+ // LC_CTYPE category: character classification.
+ // This information is accessed by the functions in <ctype.h>.
+ // These `nl_langinfo' names are used only internally.
+ X_NL_CTYPE_CLASS = 0
+ X_NL_CTYPE_TOUPPER = 1
+ X_NL_CTYPE_GAP1 = 2
+ X_NL_CTYPE_TOLOWER = 3
+ X_NL_CTYPE_GAP2 = 4
+ X_NL_CTYPE_CLASS32 = 5
+ X_NL_CTYPE_GAP3 = 6
+ X_NL_CTYPE_GAP4 = 7
+ X_NL_CTYPE_GAP5 = 8
+ X_NL_CTYPE_GAP6 = 9
+ X_NL_CTYPE_CLASS_NAMES = 10
+ X_NL_CTYPE_MAP_NAMES = 11
+ X_NL_CTYPE_WIDTH = 12
+ X_NL_CTYPE_MB_CUR_MAX = 13
+ X_NL_CTYPE_CODESET_NAME = 14
+ CODESET = 14
+ X_NL_CTYPE_TOUPPER32 = 15
+ X_NL_CTYPE_TOLOWER32 = 16
+ X_NL_CTYPE_CLASS_OFFSET = 17
+ X_NL_CTYPE_MAP_OFFSET = 18
+ X_NL_CTYPE_INDIGITS_MB_LEN = 19
+ X_NL_CTYPE_INDIGITS0_MB = 20
+ X_NL_CTYPE_INDIGITS1_MB = 21
+ X_NL_CTYPE_INDIGITS2_MB = 22
+ X_NL_CTYPE_INDIGITS3_MB = 23
+ X_NL_CTYPE_INDIGITS4_MB = 24
+ X_NL_CTYPE_INDIGITS5_MB = 25
+ X_NL_CTYPE_INDIGITS6_MB = 26
+ X_NL_CTYPE_INDIGITS7_MB = 27
+ X_NL_CTYPE_INDIGITS8_MB = 28
+ X_NL_CTYPE_INDIGITS9_MB = 29
+ X_NL_CTYPE_INDIGITS_WC_LEN = 30
+ X_NL_CTYPE_INDIGITS0_WC = 31
+ X_NL_CTYPE_INDIGITS1_WC = 32
+ X_NL_CTYPE_INDIGITS2_WC = 33
+ X_NL_CTYPE_INDIGITS3_WC = 34
+ X_NL_CTYPE_INDIGITS4_WC = 35
+ X_NL_CTYPE_INDIGITS5_WC = 36
+ X_NL_CTYPE_INDIGITS6_WC = 37
+ X_NL_CTYPE_INDIGITS7_WC = 38
+ X_NL_CTYPE_INDIGITS8_WC = 39
+ X_NL_CTYPE_INDIGITS9_WC = 40
+ X_NL_CTYPE_OUTDIGIT0_MB = 41
+ X_NL_CTYPE_OUTDIGIT1_MB = 42
+ X_NL_CTYPE_OUTDIGIT2_MB = 43
+ X_NL_CTYPE_OUTDIGIT3_MB = 44
+ X_NL_CTYPE_OUTDIGIT4_MB = 45
+ X_NL_CTYPE_OUTDIGIT5_MB = 46
+ X_NL_CTYPE_OUTDIGIT6_MB = 47
+ X_NL_CTYPE_OUTDIGIT7_MB = 48
+ X_NL_CTYPE_OUTDIGIT8_MB = 49
+ X_NL_CTYPE_OUTDIGIT9_MB = 50
+ X_NL_CTYPE_OUTDIGIT0_WC = 51
+ X_NL_CTYPE_OUTDIGIT1_WC = 52
+ X_NL_CTYPE_OUTDIGIT2_WC = 53
+ X_NL_CTYPE_OUTDIGIT3_WC = 54
+ X_NL_CTYPE_OUTDIGIT4_WC = 55
+ X_NL_CTYPE_OUTDIGIT5_WC = 56
+ X_NL_CTYPE_OUTDIGIT6_WC = 57
+ X_NL_CTYPE_OUTDIGIT7_WC = 58
+ X_NL_CTYPE_OUTDIGIT8_WC = 59
+ X_NL_CTYPE_OUTDIGIT9_WC = 60
+ X_NL_CTYPE_TRANSLIT_TAB_SIZE = 61
+ X_NL_CTYPE_TRANSLIT_FROM_IDX = 62
+ X_NL_CTYPE_TRANSLIT_FROM_TBL = 63
+ X_NL_CTYPE_TRANSLIT_TO_IDX = 64
+ X_NL_CTYPE_TRANSLIT_TO_TBL = 65
+ X_NL_CTYPE_TRANSLIT_DEFAULT_MISSING_LEN = 66
+ X_NL_CTYPE_TRANSLIT_DEFAULT_MISSING = 67
+ X_NL_CTYPE_TRANSLIT_IGNORE_LEN = 68
+ X_NL_CTYPE_TRANSLIT_IGNORE = 69
+ X_NL_CTYPE_MAP_TO_NONASCII = 70
+ X_NL_CTYPE_NONASCII_CASE = 71
+ X_NL_CTYPE_EXTRA_MAP_1 = 72
+ X_NL_CTYPE_EXTRA_MAP_2 = 73
+ X_NL_CTYPE_EXTRA_MAP_3 = 74
+ X_NL_CTYPE_EXTRA_MAP_4 = 75
+ X_NL_CTYPE_EXTRA_MAP_5 = 76
+ X_NL_CTYPE_EXTRA_MAP_6 = 77
+ X_NL_CTYPE_EXTRA_MAP_7 = 78
+ X_NL_CTYPE_EXTRA_MAP_8 = 79
+ X_NL_CTYPE_EXTRA_MAP_9 = 80
+ X_NL_CTYPE_EXTRA_MAP_10 = 81
+ X_NL_CTYPE_EXTRA_MAP_11 = 82
+ X_NL_CTYPE_EXTRA_MAP_12 = 83
+ X_NL_CTYPE_EXTRA_MAP_13 = 84
+ X_NL_CTYPE_EXTRA_MAP_14 = 85
+ X_NL_NUM_LC_CTYPE = 86
+
+ // LC_MONETARY category: formatting of monetary quantities.
+ // These items each correspond to a member of `struct lconv',
+ // defined in <locale.h>.
+ X__INT_CURR_SYMBOL = 262144
+ X__CURRENCY_SYMBOL = 262145
+ X__MON_DECIMAL_POINT = 262146
+ X__MON_THOUSANDS_SEP = 262147
+ X__MON_GROUPING = 262148
+ X__POSITIVE_SIGN = 262149
+ X__NEGATIVE_SIGN = 262150
+ X__INT_FRAC_DIGITS = 262151
+ X__FRAC_DIGITS = 262152
+ X__P_CS_PRECEDES = 262153
+ X__P_SEP_BY_SPACE = 262154
+ X__N_CS_PRECEDES = 262155
+ X__N_SEP_BY_SPACE = 262156
+ X__P_SIGN_POSN = 262157
+ X__N_SIGN_POSN = 262158
+ X_NL_MONETARY_CRNCYSTR = 262159
+ X__INT_P_CS_PRECEDES = 262160
+ X__INT_P_SEP_BY_SPACE = 262161
+ X__INT_N_CS_PRECEDES = 262162
+ X__INT_N_SEP_BY_SPACE = 262163
+ X__INT_P_SIGN_POSN = 262164
+ X__INT_N_SIGN_POSN = 262165
+ X_NL_MONETARY_DUO_INT_CURR_SYMBOL = 262166
+ X_NL_MONETARY_DUO_CURRENCY_SYMBOL = 262167
+ X_NL_MONETARY_DUO_INT_FRAC_DIGITS = 262168
+ X_NL_MONETARY_DUO_FRAC_DIGITS = 262169
+ X_NL_MONETARY_DUO_P_CS_PRECEDES = 262170
+ X_NL_MONETARY_DUO_P_SEP_BY_SPACE = 262171
+ X_NL_MONETARY_DUO_N_CS_PRECEDES = 262172
+ X_NL_MONETARY_DUO_N_SEP_BY_SPACE = 262173
+ X_NL_MONETARY_DUO_INT_P_CS_PRECEDES = 262174
+ X_NL_MONETARY_DUO_INT_P_SEP_BY_SPACE = 262175
+ X_NL_MONETARY_DUO_INT_N_CS_PRECEDES = 262176
+ X_NL_MONETARY_DUO_INT_N_SEP_BY_SPACE = 262177
+ X_NL_MONETARY_DUO_P_SIGN_POSN = 262178
+ X_NL_MONETARY_DUO_N_SIGN_POSN = 262179
+ X_NL_MONETARY_DUO_INT_P_SIGN_POSN = 262180
+ X_NL_MONETARY_DUO_INT_N_SIGN_POSN = 262181
+ X_NL_MONETARY_UNO_VALID_FROM = 262182
+ X_NL_MONETARY_UNO_VALID_TO = 262183
+ X_NL_MONETARY_DUO_VALID_FROM = 262184
+ X_NL_MONETARY_DUO_VALID_TO = 262185
+ X_NL_MONETARY_CONVERSION_RATE = 262186
+ X_NL_MONETARY_DECIMAL_POINT_WC = 262187
+ X_NL_MONETARY_THOUSANDS_SEP_WC = 262188
+ X_NL_MONETARY_CODESET = 262189
+ X_NL_NUM_LC_MONETARY = 262190
+
+ // LC_NUMERIC category: formatting of numbers.
+ // These also correspond to members of `struct lconv'; see <locale.h>.
+ X__DECIMAL_POINT = 65536
+ RADIXCHAR = 65536
+ X__THOUSANDS_SEP = 65537
+ THOUSEP = 65537
+ X__GROUPING = 65538
+ X_NL_NUMERIC_DECIMAL_POINT_WC = 65539
+ X_NL_NUMERIC_THOUSANDS_SEP_WC = 65540
+ X_NL_NUMERIC_CODESET = 65541
+ X_NL_NUM_LC_NUMERIC = 65542
+
+ X__YESEXPR = 327680 // Regex matching ``yes'' input.
+ X__NOEXPR = 327681 // Regex matching ``no'' input.
+ X__YESSTR = 327682 // Output string for ``yes''.
+ X__NOSTR = 327683 // Output string for ``no''.
+ X_NL_MESSAGES_CODESET = 327684
+ X_NL_NUM_LC_MESSAGES = 327685
+
+ X_NL_PAPER_HEIGHT = 458752
+ X_NL_PAPER_WIDTH = 458753
+ X_NL_PAPER_CODESET = 458754
+ X_NL_NUM_LC_PAPER = 458755
+
+ X_NL_NAME_NAME_FMT = 524288
+ X_NL_NAME_NAME_GEN = 524289
+ X_NL_NAME_NAME_MR = 524290
+ X_NL_NAME_NAME_MRS = 524291
+ X_NL_NAME_NAME_MISS = 524292
+ X_NL_NAME_NAME_MS = 524293
+ X_NL_NAME_CODESET = 524294
+ X_NL_NUM_LC_NAME = 524295
+
+ X_NL_ADDRESS_POSTAL_FMT = 589824
+ X_NL_ADDRESS_COUNTRY_NAME = 589825
+ X_NL_ADDRESS_COUNTRY_POST = 589826
+ X_NL_ADDRESS_COUNTRY_AB2 = 589827
+ X_NL_ADDRESS_COUNTRY_AB3 = 589828
+ X_NL_ADDRESS_COUNTRY_CAR = 589829
+ X_NL_ADDRESS_COUNTRY_NUM = 589830
+ X_NL_ADDRESS_COUNTRY_ISBN = 589831
+ X_NL_ADDRESS_LANG_NAME = 589832
+ X_NL_ADDRESS_LANG_AB = 589833
+ X_NL_ADDRESS_LANG_TERM = 589834
+ X_NL_ADDRESS_LANG_LIB = 589835
+ X_NL_ADDRESS_CODESET = 589836
+ X_NL_NUM_LC_ADDRESS = 589837
+
+ X_NL_TELEPHONE_TEL_INT_FMT = 655360
+ X_NL_TELEPHONE_TEL_DOM_FMT = 655361
+ X_NL_TELEPHONE_INT_SELECT = 655362
+ X_NL_TELEPHONE_INT_PREFIX = 655363
+ X_NL_TELEPHONE_CODESET = 655364
+ X_NL_NUM_LC_TELEPHONE = 655365
+
+ X_NL_MEASUREMENT_MEASUREMENT = 720896
+ X_NL_MEASUREMENT_CODESET = 720897
+ X_NL_NUM_LC_MEASUREMENT = 720898
+
+ X_NL_IDENTIFICATION_TITLE = 786432
+ X_NL_IDENTIFICATION_SOURCE = 786433
+ X_NL_IDENTIFICATION_ADDRESS = 786434
+ X_NL_IDENTIFICATION_CONTACT = 786435
+ X_NL_IDENTIFICATION_EMAIL = 786436
+ X_NL_IDENTIFICATION_TEL = 786437
+ X_NL_IDENTIFICATION_FAX = 786438
+ X_NL_IDENTIFICATION_LANGUAGE = 786439
+ X_NL_IDENTIFICATION_TERRITORY = 786440
+ X_NL_IDENTIFICATION_AUDIENCE = 786441
+ X_NL_IDENTIFICATION_APPLICATION = 786442
+ X_NL_IDENTIFICATION_ABBREVIATION = 786443
+ X_NL_IDENTIFICATION_REVISION = 786444
+ X_NL_IDENTIFICATION_DATE = 786445
+ X_NL_IDENTIFICATION_CATEGORY = 786446
+ X_NL_IDENTIFICATION_CODESET = 786447
+ X_NL_NUM_LC_IDENTIFICATION = 786448
+
+ // This marks the highest value used.
+ X_NL_NUM = 786449
+)
+
+type Ptrdiff_t = int64 /* <builtin>:3:26 */
+
+type Size_t = uint64 /* <builtin>:9:23 */
+
+type Wchar_t = int32 /* <builtin>:15:24 */
+
+type X__int128_t = struct {
+ Flo int64
+ Fhi int64
+} /* <builtin>:21:43 */ // must match modernc.org/mathutil.Int128
+type X__uint128_t = struct {
+ Flo uint64
+ Fhi uint64
+} /* <builtin>:22:44 */ // must match modernc.org/mathutil.Int128
+
+type X__builtin_va_list = uintptr /* <builtin>:46:14 */
+type X__float128 = float64 /* <builtin>:47:21 */
+
+// Access to locale-dependent parameters.
+// Copyright (C) 1995-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Get the type definition.
+// Copyright (C) 1996-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// These are defined by the user (or the compiler)
+// to specify the desired environment:
+//
+// __STRICT_ANSI__ ISO Standard C.
+// _ISOC99_SOURCE Extensions to ISO C89 from ISO C99.
+// _ISOC11_SOURCE Extensions to ISO C99 from ISO C11.
+// _ISOC2X_SOURCE Extensions to ISO C99 from ISO C2X.
+// __STDC_WANT_LIB_EXT2__
+// Extensions to ISO C99 from TR 27431-2:2010.
+// __STDC_WANT_IEC_60559_BFP_EXT__
+// Extensions to ISO C11 from TS 18661-1:2014.
+// __STDC_WANT_IEC_60559_FUNCS_EXT__
+// Extensions to ISO C11 from TS 18661-4:2015.
+// __STDC_WANT_IEC_60559_TYPES_EXT__
+// Extensions to ISO C11 from TS 18661-3:2015.
+// __STDC_WANT_IEC_60559_EXT__
+// ISO C2X interfaces defined only in Annex F.
+//
+// _POSIX_SOURCE IEEE Std 1003.1.
+// _POSIX_C_SOURCE If ==1, like _POSIX_SOURCE; if >=2 add IEEE Std 1003.2;
+// if >=199309L, add IEEE Std 1003.1b-1993;
+// if >=199506L, add IEEE Std 1003.1c-1995;
+// if >=200112L, all of IEEE 1003.1-2004
+// if >=200809L, all of IEEE 1003.1-2008
+// _XOPEN_SOURCE Includes POSIX and XPG things. Set to 500 if
+// Single Unix conformance is wanted, to 600 for the
+// sixth revision, to 700 for the seventh revision.
+// _XOPEN_SOURCE_EXTENDED XPG things and X/Open Unix extensions.
+// _LARGEFILE_SOURCE Some more functions for correct standard I/O.
+// _LARGEFILE64_SOURCE Additional functionality from LFS for large files.
+// _FILE_OFFSET_BITS=N Select default filesystem interface.
+// _ATFILE_SOURCE Additional *at interfaces.
+// _DYNAMIC_STACK_SIZE_SOURCE Select correct (but non compile-time constant)
+// MINSIGSTKSZ, SIGSTKSZ and PTHREAD_STACK_MIN.
+// _GNU_SOURCE All of the above, plus GNU extensions.
+// _DEFAULT_SOURCE The default set of features (taking precedence over
+// __STRICT_ANSI__).
+//
+// _FORTIFY_SOURCE Add security hardening to many library functions.
+// Set to 1 or 2; 2 performs stricter checks than 1.
+//
+// _REENTRANT, _THREAD_SAFE
+// Obsolete; equivalent to _POSIX_C_SOURCE=199506L.
+//
+// The `-ansi' switch to the GNU C compiler, and standards conformance
+// options such as `-std=c99', define __STRICT_ANSI__. If none of
+// these are defined, or if _DEFAULT_SOURCE is defined, the default is
+// to have _POSIX_SOURCE set to one and _POSIX_C_SOURCE set to
+// 200809L, as well as enabling miscellaneous functions from BSD and
+// SVID. If more than one of these are defined, they accumulate. For
+// example __STRICT_ANSI__, _POSIX_SOURCE and _POSIX_C_SOURCE together
+// give you ISO C, 1003.1, and 1003.2, but nothing else.
+//
+// These are defined by this file and are used by the
+// header files to decide what to declare or define:
+//
+// __GLIBC_USE (F) Define things from feature set F. This is defined
+// to 1 or 0; the subsequent macros are either defined
+// or undefined, and those tests should be moved to
+// __GLIBC_USE.
+// __USE_ISOC11 Define ISO C11 things.
+// __USE_ISOC99 Define ISO C99 things.
+// __USE_ISOC95 Define ISO C90 AMD1 (C95) things.
+// __USE_ISOCXX11 Define ISO C++11 things.
+// __USE_POSIX Define IEEE Std 1003.1 things.
+// __USE_POSIX2 Define IEEE Std 1003.2 things.
+// __USE_POSIX199309 Define IEEE Std 1003.1, and .1b things.
+// __USE_POSIX199506 Define IEEE Std 1003.1, .1b, .1c and .1i things.
+// __USE_XOPEN Define XPG things.
+// __USE_XOPEN_EXTENDED Define X/Open Unix things.
+// __USE_UNIX98 Define Single Unix V2 things.
+// __USE_XOPEN2K Define XPG6 things.
+// __USE_XOPEN2KXSI Define XPG6 XSI things.
+// __USE_XOPEN2K8 Define XPG7 things.
+// __USE_XOPEN2K8XSI Define XPG7 XSI things.
+// __USE_LARGEFILE Define correct standard I/O things.
+// __USE_LARGEFILE64 Define LFS things with separate names.
+// __USE_FILE_OFFSET64 Define 64bit interface as default.
+// __USE_MISC Define things from 4.3BSD or System V Unix.
+// __USE_ATFILE Define *at interfaces and AT_* constants for them.
+// __USE_DYNAMIC_STACK_SIZE Define correct (but non compile-time constant)
+// MINSIGSTKSZ, SIGSTKSZ and PTHREAD_STACK_MIN.
+// __USE_GNU Define GNU extensions.
+// __USE_FORTIFY_LEVEL Additional security measures used, according to level.
+//
+// The macros `__GNU_LIBRARY__', `__GLIBC__', and `__GLIBC_MINOR__' are
+// defined by this file unconditionally. `__GNU_LIBRARY__' is provided
+// only for compatibility. All new code should use the other symbols
+// to test for features.
+//
+// All macros listed above as possibly being defined by this file are
+// explicitly undefined if they are not explicitly defined.
+// Feature-test macros that are not defined by the user or compiler
+// but are implied by the other feature-test macros defined (or by the
+// lack of any definitions) are defined by the file.
+//
+// ISO C feature test macros depend on the definition of the macro
+// when an affected header is included, not when the first system
+// header is included, and so they are handled in
+// <bits/libc-header-start.h>, which does not have a multiple include
+// guard. Feature test macros that can be handled from the first
+// system header included are handled here.
+
+// Undefine everything, so we get a clean slate.
+
+// Suppress kernel-name space pollution unless user expressedly asks
+// for it.
+
+// Convenience macro to test the version of gcc.
+// Use like this:
+// #if __GNUC_PREREQ (2,8)
+// ... code requiring gcc 2.8 or later ...
+// #endif
+// Note: only works for GCC 2.0 and later, because __GNUC_MINOR__ was
+// added in 2.0.
+
+// Similarly for clang. Features added to GCC after version 4.2 may
+// or may not also be available in clang, and clang's definitions of
+// __GNUC(_MINOR)__ are fixed at 4 and 2 respectively. Not all such
+// features can be queried via __has_extension/__has_feature.
+
+// Whether to use feature set F.
+
+// _BSD_SOURCE and _SVID_SOURCE are deprecated aliases for
+// _DEFAULT_SOURCE. If _DEFAULT_SOURCE is present we do not
+// issue a warning; the expectation is that the source is being
+// transitioned to use the new macro.
+
+// If _GNU_SOURCE was defined by the user, turn on all the other features.
+
+// If nothing (other than _GNU_SOURCE and _DEFAULT_SOURCE) is defined,
+// define _DEFAULT_SOURCE.
+
+// This is to enable the ISO C2X extension.
+
+// This is to enable the ISO C11 extension.
+
+// This is to enable the ISO C99 extension.
+
+// This is to enable the ISO C90 Amendment 1:1995 extension.
+
+// If none of the ANSI/POSIX macros are defined, or if _DEFAULT_SOURCE
+// is defined, use POSIX.1-2008 (or another version depending on
+// _XOPEN_SOURCE).
+
+// Some C libraries once required _REENTRANT and/or _THREAD_SAFE to be
+// defined in all multithreaded code. GNU libc has not required this
+// for many years. We now treat them as compatibility synonyms for
+// _POSIX_C_SOURCE=199506L, which is the earliest level of POSIX with
+// comprehensive support for multithreaded code. Using them never
+// lowers the selected level of POSIX conformance, only raises it.
+
+// Features part to handle 64-bit time_t support.
+// Copyright (C) 2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// We need to know the word size in order to check the time size.
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Bit size of the time_t type at glibc build time, RISC-V case.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// RV32 and RV64 both use 64-bit time_t
+
+// The function 'gets' existed in C89, but is impossible to use
+// safely. It has been removed from ISO C11 and ISO C++14. Note: for
+// compatibility with various implementations of <cstdio>, this test
+// must consider only the value of __cplusplus when compiling C++.
+
+// GNU formerly extended the scanf functions with modified format
+// specifiers %as, %aS, and %a[...] that allocate a buffer for the
+// input using malloc. This extension conflicts with ISO C99, which
+// defines %a as a standalone format specifier that reads a floating-
+// point number; moreover, POSIX.1-2008 provides the same feature
+// using the modifier letter 'm' instead (%ms, %mS, %m[...]).
+//
+// We now follow C99 unless GNU extensions are active and the compiler
+// is specifically in C89 or C++98 mode (strict or not). For
+// instance, with GCC, -std=gnu11 will have C99-compliant scanf with
+// or without -D_GNU_SOURCE, but -std=c89 -D_GNU_SOURCE will have the
+// old extension.
+
+// Get definitions of __STDC_* predefined macros, if the compiler has
+// not preincluded this header automatically.
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// This macro indicates that the installed library is the GNU C Library.
+// For historic reasons the value now is 6 and this will stay from now
+// on. The use of this variable is deprecated. Use __GLIBC__ and
+// __GLIBC_MINOR__ now (see below) when you want to test for a specific
+// GNU C library version and use the values in <gnu/lib-names.h> to get
+// the sonames of the shared libraries.
+
+// Major and minor version number of the GNU C library package. Use
+// these macros to test for features in specific releases.
+
+// This is here only because every header file already includes this one.
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// We are almost always included from features.h.
+
+// The GNU libc does not support any K&R compilers or the traditional mode
+// of ISO C compilers anymore. Check for some of the combinations not
+// supported anymore.
+
+// Some user header file might have defined this before.
+
+// Compilers that lack __has_attribute may object to
+// #if defined __has_attribute && __has_attribute (...)
+// even though they do not need to evaluate the right-hand side of the &&.
+// Similarly for __has_builtin, etc.
+
+// All functions, except those with callbacks or those that
+// synchronize memory, are leaf functions.
+
+// GCC can always grok prototypes. For C++ programs we add throw()
+// to help it optimize the function calls. But this only works with
+// gcc 2.8.x and egcs. For gcc 3.4 and up we even mark C functions
+// as non-throwing using a function attribute since programs can use
+// the -fexceptions options for C code as well.
+
+// These two macros are not used in glibc anymore. They are kept here
+// only because some other projects expect the macros to be defined.
+
+// For these things, GCC behaves the ANSI way normally,
+// and the non-ANSI way under -traditional.
+
+// This is not a typedef so `const __ptr_t' does the right thing.
+
+// C++ needs to know that types and declarations are C, not C++.
+
+// Fortify support.
+
+// Use __builtin_dynamic_object_size at _FORTIFY_SOURCE=3 when available.
+
+// Support for flexible arrays.
+// Headers that should use flexible arrays only if they're "real"
+// (e.g. only if they won't affect sizeof()) should test
+// #if __glibc_c99_flexarr_available.
+
+// __asm__ ("xyz") is used throughout the headers to rename functions
+// at the assembly language level. This is wrapped by the __REDIRECT
+// macro, in order to support compilers that can do this some other
+// way. When compilers don't support asm-names at all, we have to do
+// preprocessor tricks instead (which don't have exactly the right
+// semantics, but it's the best we can do).
+//
+// Example:
+// int __REDIRECT(setpgrp, (__pid_t pid, __pid_t pgrp), setpgid);
+
+//
+// #elif __SOME_OTHER_COMPILER__
+//
+// # define __REDIRECT(name, proto, alias) name proto; _Pragma("let " #name " = " #alias)
+
+// GCC and clang have various useful declarations that can be made with
+// the '__attribute__' syntax. All of the ways we use this do fine if
+// they are omitted for compilers that don't understand it.
+
+// At some point during the gcc 2.96 development the `malloc' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+
+// Tell the compiler which arguments to an allocation function
+// indicate the size of the allocation.
+
+// At some point during the gcc 2.96 development the `pure' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+
+// This declaration tells the compiler that the value is constant.
+
+// At some point during the gcc 3.1 development the `used' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+
+// Since version 3.2, gcc allows marking deprecated functions.
+
+// Since version 4.5, gcc also allows one to specify the message printed
+// when a deprecated function is used. clang claims to be gcc 4.2, but
+// may also support this feature.
+
+// At some point during the gcc 2.8 development the `format_arg' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+// If several `format_arg' attributes are given for the same function, in
+// gcc-3.0 and older, all but the last one are ignored. In newer gccs,
+// all designated arguments are considered.
+
+// At some point during the gcc 2.97 development the `strfmon' format
+// attribute for functions was introduced. We don't want to use it
+// unconditionally (although this would be possible) since it
+// generates warnings.
+
+// The nonnull function attribute marks pointer parameters that
+// must not be NULL.
+
+// The returns_nonnull function attribute marks the return type of the function
+// as always being non-null.
+
+// If fortification mode, we warn about unused results of certain
+// function calls which can lead to problems.
+
+// Forces a function to be always inlined.
+// The Linux kernel defines __always_inline in stddef.h (283d7573), and
+// it conflicts with this definition. Therefore undefine it first to
+// allow either header to be included first.
+
+// Associate error messages with the source location of the call site rather
+// than with the source location inside the function.
+
+// GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
+// inline semantics, unless -fgnu89-inline is used. Using __GNUC_STDC_INLINE__
+// or __GNUC_GNU_INLINE is not a good enough check for gcc because gcc versions
+// older than 4.3 may define these macros and still not guarantee GNU inlining
+// semantics.
+//
+// clang++ identifies itself as gcc-4.2, but has support for GNU inlining
+// semantics, that can be checked for by using the __GNUC_STDC_INLINE_ and
+// __GNUC_GNU_INLINE__ macro definitions.
+
+// GCC 4.3 and above allow passing all anonymous arguments of an
+// __extern_always_inline function to some other vararg function.
+
+// It is possible to compile containing GCC extensions even if GCC is
+// run in pedantic mode if the uses are carefully marked using the
+// `__extension__' keyword. But this is not generally available before
+// version 2.8.
+
+// __restrict is known in EGCS 1.2 and above, and in clang.
+// It works also in C++ mode (outside of arrays), but only when spelled
+// as '__restrict', not 'restrict'.
+
+// ISO C99 also allows to declare arrays as non-overlapping. The syntax is
+// array_name[restrict]
+// GCC 3.1 and clang support this.
+// This syntax is not usable in C++ mode.
+
+// Describes a char array whose address can safely be passed as the first
+// argument to strncpy and strncat, as the char array is not necessarily
+// a NUL-terminated string.
+
+// Undefine (also defined in libc-symbols.h).
+// Copies attributes from the declaration or type referenced by
+// the argument.
+
+// The #ifndef lets Gnulib avoid including these on non-glibc
+// platforms, where the includes typically do not exist.
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Properties of long double type. ldbl-128 version.
+// Copyright (C) 2016-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// long double is distinct from double, so there is nothing to
+// define here.
+
+// __glibc_macro_warning (MESSAGE) issues warning MESSAGE. This is
+// intended for use in preprocessor macros.
+//
+// Note: MESSAGE must be a _single_ string; concatenation of string
+// literals is not supported.
+
+// Generic selection (ISO C11) is a C-only feature, available in GCC
+// since version 4.9. Previous versions do not provide generic
+// selection, even though they might set __STDC_VERSION__ to 201112L,
+// when in -std=c11 mode. Thus, we must check for !defined __GNUC__
+// when testing __STDC_VERSION__ for generic selection support.
+// On the other hand, Clang also defines __GNUC__, so a clang-specific
+// check is required to enable the use of generic selection.
+
+// Designates a 1-based positional argument ref-index of pointer type
+// that can be used to access size-index elements of the pointed-to
+// array according to access mode, or at least one element when
+// size-index is not provided:
+// access (access-mode, <ref-index> [, <size-index>])
+
+// Designates dealloc as a function to call to deallocate objects
+// allocated by the declared function.
+
+// Specify that a function such as setjmp or vfork may return
+// twice.
+
+// If we don't have __REDIRECT, prototypes will be missing if
+// __USE_FILE_OFFSET64 but not __USE_LARGEFILE[64].
+
+// Decide whether we can define 'extern inline' functions in headers.
+
+// This is here only because every header file already includes this one.
+// Get the definitions of all the appropriate `__stub_FUNCTION' symbols.
+// <gnu/stubs.h> contains `#define __stub_FUNCTION' when FUNCTION is a stub
+// that will always return failure (and set errno to ENOSYS).
+// This file is automatically generated.
+// This file selects the right generated file of `__stub_FUNCTION' macros
+// based on the architecture being compiled for.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// This file is automatically generated.
+// It defines a symbol `__stub_FUNCTION' for each function
+// in the C library which is a stub, meaning it will fail
+// every time called, usually setting errno to ENOSYS.
+
+// The default message set used by the gencat program.
+
+// Value for FLAG parameter of `catgets' to say we want XPG4 compliance.
+
+// Message catalog descriptor type.
+type Nl_catd = uintptr /* nl_types.h:33:14 */
+
+// Type used by `nl_langinfo'.
+type Nl_item = int32 /* nl_types.h:36:13 */
+
+// POSIX.1-2008 extended locale interface (see locale.h).
+// Definition of locale_t.
+// Copyright (C) 2017-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Definition of struct __locale_struct and __locale_t.
+// Copyright (C) 1997-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+// Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// POSIX.1-2008: the locale_t type, representing a locale context
+// (implementation-namespace version). This type should be treated
+// as opaque by applications; some details are exposed for the sake of
+// efficiency in e.g. ctype functions.
+
+type X__locale_struct = struct {
+ F__locales [13]uintptr
+ F__ctype_b uintptr
+ F__ctype_tolower uintptr
+ F__ctype_toupper uintptr
+ F__names [13]uintptr
+} /* __locale_t.h:28:1 */
+
+type X__locale_t = uintptr /* __locale_t.h:42:32 */
+
+type Locale_t = X__locale_t /* locale_t.h:24:20 */
+
+var _ uint8 /* gen.c:2:13: */
diff --git a/vendor/modernc.org/libc/libc64.go b/vendor/modernc.org/libc/libc64.go
index ff2e0e3d..28a958b9 100644
--- a/vendor/modernc.org/libc/libc64.go
+++ b/vendor/modernc.org/libc/libc64.go
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build amd64 || arm64 || s390x
-// +build amd64 arm64 s390x
+//go:build amd64 || arm64 || riscv64 || s390x
+// +build amd64 arm64 riscv64 s390x
package libc // import "modernc.org/libc"
diff --git a/vendor/modernc.org/libc/libc_linux.go b/vendor/modernc.org/libc/libc_linux.go
index d594ab4a..0989c6d5 100644
--- a/vendor/modernc.org/libc/libc_linux.go
+++ b/vendor/modernc.org/libc/libc_linux.go
@@ -200,6 +200,18 @@ func Xopen64(t *TLS, pathname uintptr, flags int32, args uintptr) int32 {
return int32(n)
}
+// int openat(int dirfd, const char *pathname, int flags, mode_t mode);
+func Xopenat(t *TLS, dirfd int32, pathname uintptr, flags int32, mode types.Mode_t) int32 {
+ // From golang.org/x/sys/unix/zsyscall_linux.go
+ fd, _, err := unix.Syscall6(unix.SYS_OPENAT, uintptr(dirfd), pathname, uintptr(flags), uintptr(mode), 0, 0)
+ if err != 0 {
+ t.setErrno(err)
+ return -1
+ }
+
+ return int32(fd)
+}
+
// off_t lseek(int fd, off_t offset, int whence);
func Xlseek(t *TLS, fd int32, offset types.Off_t, whence int32) types.Off_t {
return types.Off_t(Xlseek64(t, fd, offset, whence))
@@ -347,6 +359,29 @@ func Xfchmod(t *TLS, fd int32, mode types.Mode_t) int32 {
return 0
}
+// int fchmodat(int dirfd, const char *pathname, mode_t mode, int flags);
+func Xfchmodat(t *TLS, dirfd int32, pathname uintptr, mode types.Mode_t, flags int32) int32 {
+ // From golang.org/x/sys/unix/syscall_linux.go
+ // Linux fchmodat doesn't support the flags parameter. Mimick glibc's behavior
+ // and check the flags. Otherwise the mode would be applied to the symlink
+ // destination which is not what the user expects.
+ if flags&^unix.AT_SYMLINK_NOFOLLOW != 0 {
+ t.setErrno(unix.EINVAL)
+ return -1
+ } else if flags&unix.AT_SYMLINK_NOFOLLOW != 0 {
+ t.setErrno(unix.EOPNOTSUPP)
+ return -1
+ }
+
+ // From golang.org/x/sys/unix/zsyscall_linux.go
+ if _, _, err := unix.Syscall(unix.SYS_FCHMODAT, uintptr(dirfd), pathname, uintptr(mode)); err != 0 {
+ t.setErrno(err)
+ return -1
+ }
+
+ return 0
+}
+
// int fchown(int fd, uid_t owner, gid_t group);
func Xfchown(t *TLS, fd int32, owner types.Uid_t, group types.Gid_t) int32 {
if _, _, err := unix.Syscall(unix.SYS_FCHOWN, uintptr(fd), uintptr(owner), uintptr(group)); err != 0 {
@@ -1421,3 +1456,136 @@ func Xuuid_parse(t *TLS, in uintptr, uu uintptr) int32 {
copy((*RawMem)(unsafe.Pointer(uu))[:unsafe.Sizeof(uuid.Uuid_t{})], r[:])
return 0
}
+
+// int mkdirat(int dirfd, const char *pathname, mode_t mode);
+func Xmkdirat(t *TLS, dirfd int32, pathname uintptr, mode types.Mode_t) int32 {
+ // From golang.org/x/sys/unix/zsyscall_linux.go
+ if _, _, err := unix.Syscall(unix.SYS_MKDIRAT, uintptr(dirfd), pathname, uintptr(mode)); err != 0 {
+ t.setErrno(err)
+ return -1
+ }
+
+ return 0
+}
+
+// int symlinkat(const char *target, int newdirfd, const char *linkpath);
+func Xsymlinkat(t *TLS, target uintptr, newdirfd int32, linkpath uintptr) int32 {
+ // From golang.org/x/sys/unix/zsyscall_linux.go
+ if _, _, err := unix.Syscall(unix.SYS_SYMLINKAT, target, uintptr(newdirfd), linkpath); err != 0 {
+ t.setErrno(err)
+ return -1
+ }
+
+ return 0
+}
+
+// int utimensat(int dirfd, const char *pathname, const struct timespec times[2], int flags);
+func Xutimensat(t *TLS, dirfd int32, pathname, times uintptr, flags int32) int32 {
+ // From golang.org/x/sys/unix/zsyscall_linux.go
+ if _, _, err := unix.Syscall6(unix.SYS_UTIMENSAT, uintptr(dirfd), pathname, times, uintptr(flags), 0, 0); err != 0 {
+ t.setErrno(err)
+ return -1
+ }
+
+ return 0
+}
+
+// int unlinkat(int dirfd, const char *pathname, int flags);
+func Xunlinkat(t *TLS, dirfd int32, pathname uintptr, flags int32) int32 {
+ // From golang.org/x/sys/unix/zsyscall_linux.go
+ if _, _, err := unix.Syscall(unix.SYS_UNLINKAT, uintptr(dirfd), pathname, uintptr(flags)); err != 0 {
+ t.setErrno(err)
+ return -1
+ }
+
+ return 0
+}
+
+// int faccessat(int dirfd, const char *pathname, int mode, int flags);
+func Xfaccessat(t *TLS, dirfd int32, pathname uintptr, mode, flags int32) int32 {
+ // From golang.org/x/sys/unix/zsyscall_linux.go
+ if _, _, err := unix.Syscall(unix.SYS_FACCESSAT, uintptr(dirfd), pathname, uintptr(mode)); err != 0 {
+ t.setErrno(err)
+ return -1
+ }
+
+ return 0
+}
+
+// int renameat2(int olddirfd, const char *oldpath, int newdirfd, const char *newpath, unsigned int flags);
+func Xrenameat2(t *TLS, olddirfd int32, oldpath uintptr, newdirfd int32, newpath uintptr, flags int32) int32 {
+ // From golang.org/x/sys/unix/zsyscall_linux.go
+ if _, _, err := unix.Syscall6(unix.SYS_RENAMEAT2, uintptr(olddirfd), oldpath, uintptr(newdirfd), newpath, uintptr(flags), 0); err != 0 {
+ t.setErrno(err)
+ return -1
+ }
+
+ return 0
+}
+
+// int mknodat(int dirfd, const char *pathname, mode_t mode, dev_t dev);
+func Xmknodat(t *TLS, dirfd int32, pathname uintptr, mode types.Mode_t, dev types.Dev_t) int32 {
+ // From golang.org/x/sys/unix/zsyscall_linux.go
+ if _, _, err := unix.Syscall6(unix.SYS_MKNODAT, uintptr(dirfd), pathname, uintptr(mode), uintptr(dev), 0, 0); err != 0 {
+ t.setErrno(err)
+ return -1
+ }
+
+ return 0
+}
+
+// int fchownat(int dirfd, const char *pathname, uid_t owner, gid_t group, int flags);
+func Xfchownat(t *TLS, dirfd int32, pathname uintptr, uid types.Uid_t, gid types.Gid_t, flags int32) int32 {
+ // From golang.org/x/sys/unix/zsyscall_linux.go
+ if _, _, err := unix.Syscall6(unix.SYS_FCHOWNAT, uintptr(dirfd), pathname, uintptr(uid), uintptr(gid), uintptr(flags), 0); err != 0 {
+ t.setErrno(err)
+ return -1
+ }
+
+ return 0
+}
+
+// int linkat(int olddirfd, const char *oldpath, int newdirfd, const char *newpath, int flags);
+func Xlinkat(t *TLS, olddirfd int32, oldpath uintptr, newdirfd int32, newpath uintptr, flags int32) int32 {
+ // From golang.org/x/sys/unix/zsyscall_linux.go
+ if _, _, err := unix.Syscall6(unix.SYS_LINKAT, uintptr(olddirfd), oldpath, uintptr(newdirfd), newpath, uintptr(flags), 0); err != 0 {
+ t.setErrno(err)
+ return -1
+ }
+
+ return 0
+}
+
+// int pipe2(int pipefd[2], int flags);
+func Xpipe2(t *TLS, pipefd uintptr, flags int32) int32 {
+ // From golang.org/x/sys/unix/zsyscall_linux.go
+ if _, _, err := unix.Syscall(unix.SYS_PIPE2, pipefd, uintptr(flags), 0); err != 0 {
+ t.setErrno(t)
+ return -1
+ }
+
+ return 0
+}
+
+// int dup3(int oldfd, int newfd, int flags);
+func Xdup3(t *TLS, oldfd int32, newfd int32, flags int32) int32 {
+ // From golang.org/x/sys/unix/zsyscall_linux.go
+ if _, _, err := unix.Syscall(unix.SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags)); err != 0 {
+ t.setErrno(err)
+ return -1
+ }
+
+ return 0
+}
+
+// ssize_t readlinkat(int dirfd, const char *pathname, char *buf, size_t bufsiz);
+func Xreadlinkat(t *TLS, dirfd int32, pathname, buf uintptr, bufsiz types.Size_t) types.Ssize_t {
+ // From golang.org/x/sys/unix/zsyscall_linux.go
+ n, _, err := unix.Syscall6(unix.SYS_READLINKAT, uintptr(dirfd), pathname, buf, uintptr(bufsiz), 0, 0)
+ if err != 0 {
+ t.setErrno(err)
+ return -1
+ }
+
+ return types.Ssize_t(n)
+}
diff --git a/vendor/modernc.org/libc/libc_linux_riscv64.go b/vendor/modernc.org/libc/libc_linux_riscv64.go
new file mode 100644
index 00000000..0efb296a
--- /dev/null
+++ b/vendor/modernc.org/libc/libc_linux_riscv64.go
@@ -0,0 +1,413 @@
+// Copyright 2020 The Libc Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package libc // import "modernc.org/libc"
+
+import (
+ "os"
+ "strings"
+ "unicode"
+ "unsafe"
+
+ "golang.org/x/sys/unix"
+ "modernc.org/libc/errno"
+ "modernc.org/libc/fcntl"
+ "modernc.org/libc/signal"
+ "modernc.org/libc/sys/types"
+ "modernc.org/libc/utime"
+ "modernc.org/libc/wctype"
+)
+
+// int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);
+func Xsigaction(t *TLS, signum int32, act, oldact uintptr) int32 {
+ // musl/arch/x86_64/ksigaction.h
+ //
+ // struct k_sigaction {
+ // void (*handler)(int);
+ // unsigned long flags;
+ // void (*restorer)(void);
+ // unsigned mask[2];
+ // };
+ type k_sigaction struct {
+ handler uintptr
+ flags ulong
+ restorer uintptr
+ mask [2]uint32
+ }
+
+ var kact, koldact uintptr
+ if act != 0 {
+ sz := int(unsafe.Sizeof(k_sigaction{}))
+ kact = t.Alloc(sz)
+ defer t.Free(sz)
+ *(*k_sigaction)(unsafe.Pointer(kact)) = k_sigaction{
+ handler: (*signal.Sigaction)(unsafe.Pointer(act)).F__sigaction_handler.Fsa_handler,
+ flags: ulong((*signal.Sigaction)(unsafe.Pointer(act)).Fsa_flags),
+ restorer: (*signal.Sigaction)(unsafe.Pointer(act)).Fsa_restorer,
+ }
+ Xmemcpy(t, kact+unsafe.Offsetof(k_sigaction{}.mask), act+unsafe.Offsetof(signal.Sigaction{}.Fsa_mask), types.Size_t(unsafe.Sizeof(k_sigaction{}.mask)))
+ }
+ if oldact != 0 {
+ panic(todo(""))
+ }
+
+ if _, _, err := unix.Syscall6(unix.SYS_RT_SIGACTION, uintptr(signum), kact, koldact, unsafe.Sizeof(k_sigaction{}.mask), 0, 0); err != 0 {
+ t.setErrno(err)
+ return -1
+ }
+
+ if oldact != 0 {
+ panic(todo(""))
+ }
+
+ return 0
+}
+
+// int fcntl(int fd, int cmd, ... /* arg */ );
+func Xfcntl64(t *TLS, fd, cmd int32, args uintptr) int32 {
+ var arg uintptr
+ if args != 0 {
+ arg = *(*uintptr)(unsafe.Pointer(args))
+ }
+ if cmd == fcntl.F_SETFL {
+ arg |= unix.O_LARGEFILE
+ }
+ n, _, err := unix.Syscall(unix.SYS_FCNTL, uintptr(fd), uintptr(cmd), arg)
+ if err != 0 {
+ // if dmesgs {
+ // dmesg("%v: fd %v cmd %v", origin(1), fcntlCmdStr(fd), cmd)
+ // }
+ t.setErrno(err)
+ return -1
+ }
+
+ // if dmesgs {
+ // dmesg("%v: %d %s %#x: %d", origin(1), fd, fcntlCmdStr(cmd), arg, n)
+ // }
+ return int32(n)
+}
+
+// int fstatat(int dirfd, const char *pathname, struct stat *statbuf, int flags);
+func Xfstatat(t *TLS, dirfd int32, pathname, statbuf uintptr, flags int32) int32 {
+ // From golang.org/x/sys/unix/zsyscall_linux_riscv64.go
+ if _, _, err := unix.Syscall6(unix.SYS_FSTATAT, uintptr(dirfd), pathname, statbuf, uintptr(flags), 0, 0); err != 0 {
+ t.setErrno(err)
+ return -1
+ }
+
+ return 0
+}
+
+// int lstat(const char *pathname, struct stat *statbuf);
+func Xlstat64(t *TLS, pathname, statbuf uintptr) int32 {
+ // From golang.org/x/sys/unix/syscall_linux_riscv64.go
+ return Xfstatat(t, unix.AT_FDCWD, pathname, statbuf, unix.AT_SYMLINK_NOFOLLOW)
+}
+
+// int stat(const char *pathname, struct stat *statbuf);
+func Xstat64(t *TLS, pathname, statbuf uintptr) int32 {
+ // From golang.org/x/sys/unix/syscall_linux_riscv64.go
+ return Xfstatat(t, unix.AT_FDCWD, pathname, statbuf, 0)
+}
+
+// int fstat(int fd, struct stat *statbuf);
+func Xfstat64(t *TLS, fd int32, statbuf uintptr) int32 {
+ if _, _, err := unix.Syscall(unix.SYS_FSTAT, uintptr(fd), statbuf, 0); err != 0 {
+ // if dmesgs {
+ // dmesg("%v: fd %d: %v", origin(1), fd, err)
+ // }
+ t.setErrno(err)
+ return -1
+ }
+
+ // if dmesgs {
+ // dmesg("%v: %d size %#x: ok\n%+v", origin(1), fd, (*stat.Stat)(unsafe.Pointer(statbuf)).Fst_size, (*stat.Stat)(unsafe.Pointer(statbuf)))
+ // }
+ return 0
+}
+
+func Xmmap(t *TLS, addr uintptr, length types.Size_t, prot, flags, fd int32, offset types.Off_t) uintptr {
+ return Xmmap64(t, addr, length, prot, flags, fd, offset)
+}
+
+// void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset);
+func Xmmap64(t *TLS, addr uintptr, length types.Size_t, prot, flags, fd int32, offset types.Off_t) uintptr {
+ data, _, err := unix.Syscall6(unix.SYS_MMAP, addr, uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))
+ if err != 0 {
+ // if dmesgs {
+ // dmesg("%v: %v", origin(1), err)
+ // }
+ t.setErrno(err)
+ return ^uintptr(0) // (void*)-1
+ }
+
+ // if dmesgs {
+ // dmesg("%v: %#x", origin(1), data)
+ // }
+ return data
+}
+
+// void *mremap(void *old_address, size_t old_size, size_t new_size, int flags, ... /* void *new_address */);
+func Xmremap(t *TLS, old_address uintptr, old_size, new_size types.Size_t, flags int32, args uintptr) uintptr {
+ var arg uintptr
+ if args != 0 {
+ arg = *(*uintptr)(unsafe.Pointer(args))
+ }
+ data, _, err := unix.Syscall6(unix.SYS_MREMAP, old_address, uintptr(old_size), uintptr(new_size), uintptr(flags), arg, 0)
+ if err != 0 {
+ // if dmesgs {
+ // dmesg("%v: %v", origin(1), err)
+ // }
+ t.setErrno(err)
+ return ^uintptr(0) // (void*)-1
+ }
+
+ // if dmesgs {
+ // dmesg("%v: %#x", origin(1), data)
+ // }
+ return data
+}
+
+// int ftruncate(int fd, off_t length);
+func Xftruncate64(t *TLS, fd int32, length types.Off_t) int32 {
+ if _, _, err := unix.Syscall(unix.SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0); err != 0 {
+ // if dmesgs {
+ // dmesg("%v: fd %d: %v", origin(1), fd, err)
+ // }
+ t.setErrno(err)
+ return -1
+ }
+
+ // if dmesgs {
+ // dmesg("%v: %d %#x: ok", origin(1), fd, length)
+ // }
+ return 0
+}
+
+// off64_t lseek64(int fd, off64_t offset, int whence);
+func Xlseek64(t *TLS, fd int32, offset types.Off_t, whence int32) types.Off_t {
+ n, _, err := unix.Syscall(unix.SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
+ if err != 0 {
+ // if dmesgs {
+ // dmesg("%v: fd %v, off %#x, whence %v: %v", origin(1), fd, offset, whenceStr(whence), err)
+ // }
+ t.setErrno(err)
+ return -1
+ }
+
+ // if dmesgs {
+ // dmesg("%v: fd %v, off %#x, whence %v: %#x", origin(1), fd, offset, whenceStr(whence), n)
+ // }
+ return types.Off_t(n)
+}
+
+// From man utime executed on linux/riscv64:
+//
+// The utimbuf structure is:
+//
+// struct utimbuf {
+// time_t actime; /* access time */
+// time_t modtime; /* modification time */
+// };
+
+type utimbuf struct {
+ actime utime.Time_t
+ modtime utime.Time_t
+}
+
+// int utime(const char *filename, const struct utimbuf *times);
+func Xutime(t *TLS, filename, times uintptr) int32 {
+ if times == 0 {
+ return Xutimes(t, filename, 0)
+ }
+
+ n := int(unsafe.Sizeof([2]types.Timeval{}))
+ p := t.Alloc(n)
+ defer t.Free(n)
+ *(*[2]types.Timeval)(unsafe.Pointer(p)) = [2]types.Timeval{
+ {Ftv_sec: (*utimbuf)(unsafe.Pointer(times)).actime},
+ {Ftv_sec: (*utimbuf)(unsafe.Pointer(times)).modtime},
+ }
+ return Xutimes(t, filename, p)
+}
+
+// unsigned int alarm(unsigned int seconds);
+func Xalarm(t *TLS, seconds uint32) uint32 {
+ panic(todo(""))
+ // No alarm syscall on linux/riscv64. And cannot implement with setitimer as in musl,
+ // because of missing defination to constant ITIMER_REAL in types_linux_riscv64.go.
+}
+
+// time_t time(time_t *tloc);
+func Xtime(t *TLS, tloc uintptr) types.Time_t {
+ // From golang.org/x/sys/unix/syscall_linux_riscv64.go
+ var tv types.Timeval
+ if err := Xgettimeofday(t, uintptr(unsafe.Pointer(&tv)), 0); err != 0 {
+ t.setErrno(err)
+ return -1
+ }
+
+ if tloc != 0 {
+ *(*types.Time_t)(unsafe.Pointer(tloc)) = tv.Ftv_sec
+ }
+ return tv.Ftv_sec
+}
+
+// int getrlimit(int resource, struct rlimit *rlim);
+func Xgetrlimit64(t *TLS, resource int32, rlim uintptr) int32 {
+ if _, _, err := unix.Syscall(unix.SYS_GETRLIMIT, uintptr(resource), uintptr(rlim), 0); err != 0 {
+ t.setErrno(err)
+ return -1
+ }
+
+ return 0
+}
+
+// int mkdir(const char *path, mode_t mode);
+func Xmkdir(t *TLS, path uintptr, mode types.Mode_t) int32 {
+ // From golang.org/x/sys/unix/syscall_linux.go
+ return Xmkdirat(t, unix.AT_FDCWD, path, mode)
+}
+
+// int symlink(const char *target, const char *linkpath);
+func Xsymlink(t *TLS, target, linkpath uintptr) int32 {
+ // From golang.org/x/sys/unix/syscall_linux.go
+ return Xsymlinkat(t, target, unix.AT_FDCWD, linkpath)
+}
+
+// int chmod(const char *pathname, mode_t mode)
+func Xchmod(t *TLS, pathname uintptr, mode types.Mode_t) int32 {
+ // From golang.org/x/sys/unix/syscall_linux.go
+ return Xfchmodat(t, unix.AT_FDCWD, pathname, mode, 0)
+}
+
+// int utimes(const char *filename, const struct timeval times[2]);
+func Xutimes(t *TLS, filename, times uintptr) int32 {
+ return Xutimensat(t, unix.AT_FDCWD, filename, times, 0)
+}
+
+// int unlink(const char *pathname);
+func Xunlink(t *TLS, pathname uintptr) int32 {
+ // From golang.org/x/sys/unix/syscall_linux.go
+ return Xunlinkat(t, unix.AT_FDCWD, pathname, 0)
+}
+
+// int access(const char *pathname, int mode);
+func Xaccess(t *TLS, pathname uintptr, mode int32) int32 {
+ // From golang.org/x/sys/unix/syscall_linux.go
+ return Xfaccessat(t, unix.AT_FDCWD, pathname, mode, 0)
+}
+
+// int rmdir(const char *pathname);
+func Xrmdir(t *TLS, pathname uintptr) int32 {
+ // From golang.org/x/sys/unix/syscall_linux.go
+ return Xunlinkat(t, unix.AT_FDCWD, pathname, unix.AT_REMOVEDIR)
+}
+
+// int rename(const char *oldpath, const char *newpath);
+func Xrename(t *TLS, oldpath, newpath uintptr) int32 {
+ // From golang.org/x/sys/unix/syscall_linux.go
+ return Xrenameat(t, unix.AT_FDCWD, oldpath, unix.AT_FDCWD, newpath)
+}
+
+// int renameat(int olddirfd, const char *oldpath, int newdirfd, const char *newpath);
+func Xrenameat(t *TLS, olddirfd int32, oldpath uintptr, newdirfd int32, newpath uintptr) int32 {
+ // From golang.org/x/sys/unix/syscall_linux_riscv64.go
+ return Xrenameat2(t, olddirfd, oldpath, newdirfd, newpath, 0)
+}
+
+// int mknod(const char *pathname, mode_t mode, dev_t dev);
+func Xmknod(t *TLS, pathname uintptr, mode types.Mode_t, dev types.Dev_t) int32 {
+ // From golang.org/x/sys/unix/syscall_linux.go
+ return Xmknodat(t, unix.AT_FDCWD, pathname, mode, dev)
+}
+
+// int chown(const char *pathname, uid_t owner, gid_t group);
+func Xchown(t *TLS, pathname uintptr, owner types.Uid_t, group types.Gid_t) int32 {
+ // From golang.org/x/sys/unix/syscall_linux.go
+ return Xfchownat(t, unix.AT_FDCWD, pathname, owner, group, 0)
+}
+
+// int link(const char *oldpath, const char *newpath);
+func Xlink(t *TLS, oldpath, newpath uintptr) int32 {
+ // From golang.org/x/sys/unix/syscall_linux.go
+ return Xlinkat(t, unix.AT_FDCWD, oldpath, unix.AT_FDCWD, newpath, 0)
+}
+
+// int pipe(int pipefd[2]);
+func Xpipe(t *TLS, pipefd uintptr) int32 {
+ // From golang.org/x/sys/unix/syscall_linux.go
+ return Xpipe2(t, pipefd, 0)
+}
+
+// int dup2(int oldfd, int newfd);
+func Xdup2(t *TLS, oldfd, newfd int32) int32 {
+ // From golang.org/x/sys/unix/syscall_linux.go
+ return Xdup3(t, oldfd, newfd, 0)
+}
+
+// ssize_t readlink(const char *restrict path, char *restrict buf, size_t bufsize);
+func Xreadlink(t *TLS, path, buf uintptr, bufsize types.Size_t) types.Ssize_t {
+ // From golang.org/x/sys/unix/syscall_linux.go
+ return Xreadlinkat(t, unix.AT_FDCWD, path, buf, bufsize)
+}
+
+// FILE *fopen64(const char *pathname, const char *mode);
+func Xfopen64(t *TLS, pathname, mode uintptr) uintptr {
+ m := strings.ReplaceAll(GoString(mode), "b", "")
+ var flags int
+ switch m {
+ case "r":
+ flags = os.O_RDONLY
+ case "r+":
+ flags = os.O_RDWR
+ case "w":
+ flags = os.O_WRONLY | os.O_CREATE | os.O_TRUNC
+ case "w+":
+ flags = os.O_RDWR | os.O_CREATE | os.O_TRUNC
+ case "a":
+ flags = os.O_WRONLY | os.O_CREATE | os.O_APPEND
+ case "a+":
+ flags = os.O_RDWR | os.O_CREATE | os.O_APPEND
+ default:
+ panic(m)
+ }
+ //TODO- flags |= fcntl.O_LARGEFILE
+
+ // From golang.org/x/sys/unix/syscall_linux.go
+ fd := Xopenat(t, unix.AT_FDCWD, pathname, int32(flags|unix.O_LARGEFILE), 0666)
+ if fd == -1 {
+ return 0
+ }
+
+ if p := newFile(t, fd); p != 0 {
+ return p
+ }
+
+ Xclose(t, fd)
+ t.setErrno(errno.ENOMEM)
+ return 0
+}
+
+// int iswspace(wint_t wc);
+func Xiswspace(t *TLS, wc wctype.Wint_t) int32 {
+ return Bool32(unicode.IsSpace(rune(wc)))
+}
+
+// int iswalnum(wint_t wc);
+func Xiswalnum(t *TLS, wc wctype.Wint_t) int32 {
+ return Bool32(unicode.IsLetter(rune(wc)) || unicode.IsNumber(rune(wc)))
+}
+
+func __syscall1(t *TLS, trap, p1 long) long {
+ return __syscall(unix.Syscall(uintptr(trap), uintptr(p1), 0, 0))
+}
+
+func __syscall3(t *TLS, trap, p1, p2, p3 long) long {
+ return __syscall(unix.Syscall(uintptr(trap), uintptr(p1), uintptr(p2), uintptr(p3)))
+}
+
+func __syscall4(t *TLS, trap, p1, p2, p3, p4 long) long {
+ return __syscall(unix.Syscall6(uintptr(trap), uintptr(p1), uintptr(p2), uintptr(p3), uintptr(p4), 0, 0))
+}
diff --git a/vendor/modernc.org/libc/limits/capi_linux_riscv64.go b/vendor/modernc.org/libc/limits/capi_linux_riscv64.go
new file mode 100644
index 00000000..0706f0d6
--- /dev/null
+++ b/vendor/modernc.org/libc/limits/capi_linux_riscv64.go
@@ -0,0 +1,5 @@
+// Code generated by 'ccgo limits/gen.c -crt-import-path -export-defines -export-enums -export-externs X -export-fields F -export-structs -export-typedefs -header -hide _OSSwapInt16,_OSSwapInt32,_OSSwapInt64 -o limits/limits_linux_riscv64.go -pkgname limits', DO NOT EDIT.
+
+package limits
+
+var CAPI = map[string]struct{}{}
diff --git a/vendor/modernc.org/libc/limits/limits_linux_riscv64.go b/vendor/modernc.org/libc/limits/limits_linux_riscv64.go
new file mode 100644
index 00000000..2a46b72f
--- /dev/null
+++ b/vendor/modernc.org/libc/limits/limits_linux_riscv64.go
@@ -0,0 +1,1153 @@
+// Code generated by 'ccgo limits/gen.c -crt-import-path "" -export-defines "" -export-enums "" -export-externs X -export-fields F -export-structs "" -export-typedefs "" -header -hide _OSSwapInt16,_OSSwapInt32,_OSSwapInt64 -o limits/limits_linux_riscv64.go -pkgname limits', DO NOT EDIT.
+
+package limits
+
+import (
+ "math"
+ "reflect"
+ "sync/atomic"
+ "unsafe"
+)
+
+var _ = math.Pi
+var _ reflect.Kind
+var _ atomic.Value
+var _ unsafe.Pointer
+
+const (
+ AIO_PRIO_DELTA_MAX = 20
+ BC_BASE_MAX = 99
+ BC_DIM_MAX = 2048
+ BC_SCALE_MAX = 99
+ BC_STRING_MAX = 1000
+ CHARCLASS_NAME_MAX = 2048
+ CHAR_BIT = 8
+ CHAR_MAX = 255
+ CHAR_MIN = 0
+ COLL_WEIGHTS_MAX = 255
+ DELAYTIMER_MAX = 2147483647
+ EXPR_NEST_MAX = 32
+ HOST_NAME_MAX = 64
+ INT_MAX = 2147483647
+ INT_MIN = -2147483648
+ LINE_MAX = 2048
+ LLONG_MAX = 9223372036854775807
+ LLONG_MIN = -9223372036854775808
+ LOGIN_NAME_MAX = 256
+ LONG_MAX = 9223372036854775807
+ LONG_MIN = -9223372036854775808
+ MAX_CANON = 255
+ MAX_INPUT = 255
+ MB_LEN_MAX = 16
+ MQ_PRIO_MAX = 32768
+ NAME_MAX = 255
+ NGROUPS_MAX = 65536
+ PATH_MAX = 4096
+ PIPE_BUF = 4096
+ PTHREAD_DESTRUCTOR_ITERATIONS = 4
+ PTHREAD_KEYS_MAX = 1024
+ PTHREAD_STACK_MIN = 16384
+ RE_DUP_MAX = 32767
+ RTSIG_MAX = 32
+ SCHAR_MAX = 127
+ SCHAR_MIN = -128
+ SEM_VALUE_MAX = 2147483647
+ SHRT_MAX = 32767
+ SHRT_MIN = -32768
+ SSIZE_MAX = 9223372036854775807
+ TTY_NAME_MAX = 32
+ UCHAR_MAX = 255
+ UINT_MAX = 4294967295
+ ULLONG_MAX = 18446744073709551615
+ ULONG_MAX = 18446744073709551615
+ USHRT_MAX = 65535
+ XATTR_LIST_MAX = 65536
+ XATTR_NAME_MAX = 255
+ XATTR_SIZE_MAX = 65536
+ X_ATFILE_SOURCE = 1
+ X_BITS_POSIX1_LIM_H = 1
+ X_BITS_POSIX2_LIM_H = 1
+ X_DEFAULT_SOURCE = 1
+ X_FEATURES_H = 1
+ X_FILE_OFFSET_BITS = 64
+ X_GCC_LIMITS_H_ = 0
+ X_LIBC_LIMITS_H_ = 1
+ X_LIMITS_H___ = 0
+ X_LINUX_LIMITS_H = 0
+ X_LP64 = 1
+ X_POSIX2_BC_BASE_MAX = 99
+ X_POSIX2_BC_DIM_MAX = 2048
+ X_POSIX2_BC_SCALE_MAX = 99
+ X_POSIX2_BC_STRING_MAX = 1000
+ X_POSIX2_CHARCLASS_NAME_MAX = 14
+ X_POSIX2_COLL_WEIGHTS_MAX = 2
+ X_POSIX2_EXPR_NEST_MAX = 32
+ X_POSIX2_LINE_MAX = 2048
+ X_POSIX2_RE_DUP_MAX = 255
+ X_POSIX_AIO_LISTIO_MAX = 2
+ X_POSIX_AIO_MAX = 1
+ X_POSIX_ARG_MAX = 4096
+ X_POSIX_CHILD_MAX = 25
+ X_POSIX_CLOCKRES_MIN = 20000000
+ X_POSIX_C_SOURCE = 200809
+ X_POSIX_DELAYTIMER_MAX = 32
+ X_POSIX_HOST_NAME_MAX = 255
+ X_POSIX_LINK_MAX = 8
+ X_POSIX_LOGIN_NAME_MAX = 9
+ X_POSIX_MAX_CANON = 255
+ X_POSIX_MAX_INPUT = 255
+ X_POSIX_MQ_OPEN_MAX = 8
+ X_POSIX_MQ_PRIO_MAX = 32
+ X_POSIX_NAME_MAX = 14
+ X_POSIX_NGROUPS_MAX = 8
+ X_POSIX_OPEN_MAX = 20
+ X_POSIX_PATH_MAX = 256
+ X_POSIX_PIPE_BUF = 512
+ X_POSIX_RE_DUP_MAX = 255
+ X_POSIX_RTSIG_MAX = 8
+ X_POSIX_SEM_NSEMS_MAX = 256
+ X_POSIX_SEM_VALUE_MAX = 32767
+ X_POSIX_SIGQUEUE_MAX = 32
+ X_POSIX_SOURCE = 1
+ X_POSIX_SSIZE_MAX = 32767
+ X_POSIX_STREAM_MAX = 8
+ X_POSIX_SYMLINK_MAX = 255
+ X_POSIX_SYMLOOP_MAX = 8
+ X_POSIX_THREAD_DESTRUCTOR_ITERATIONS = 4
+ X_POSIX_THREAD_KEYS_MAX = 128
+ X_POSIX_THREAD_THREADS_MAX = 64
+ X_POSIX_TIMER_MAX = 32
+ X_POSIX_TTY_NAME_MAX = 9
+ X_POSIX_TZNAME_MAX = 6
+ X_STDC_PREDEF_H = 1
+ X_SYS_CDEFS_H = 1
+ Linux = 1
+ Unix = 1
+)
+
+type Ptrdiff_t = int64 /* <builtin>:3:26 */
+
+type Size_t = uint64 /* <builtin>:9:23 */
+
+type Wchar_t = int32 /* <builtin>:15:24 */
+
+type X__int128_t = struct {
+ Flo int64
+ Fhi int64
+} /* <builtin>:21:43 */ // must match modernc.org/mathutil.Int128
+type X__uint128_t = struct {
+ Flo uint64
+ Fhi uint64
+} /* <builtin>:22:44 */ // must match modernc.org/mathutil.Int128
+
+type X__builtin_va_list = uintptr /* <builtin>:46:14 */
+type X__float128 = float64 /* <builtin>:47:21 */
+
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify it under
+// the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 3, or (at your option) any later
+// version.
+//
+// GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or
+// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+// for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+//
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+// <http://www.gnu.org/licenses/>.
+
+// This administrivia gets added to the beginning of limits.h
+// if the system has its own version of limits.h.
+
+// We use _GCC_LIMITS_H_ because we want this not to match
+// any macros that the system's limits.h uses for its own purposes.
+
+// Use "..." so that we find syslimits.h only in this same directory.
+// syslimits.h stands for the system's own limits.h file.
+// If we can use it ok unmodified, then we install this text.
+// If fixincludes fixes it, then the fixed version is installed
+// instead of this text.
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// ISO C99 Standard: 7.10/5.2.4.2.1 Sizes of integer types <limits.h>
+
+// Handle feature test macros at the start of a header.
+// Copyright (C) 2016-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// This header is internal to glibc and should not be included outside
+// of glibc headers. Headers including it must define
+// __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION first. This header
+// cannot have multiple include guards because ISO C feature test
+// macros depend on the definition of the macro when an affected
+// header is included, not when the first system header is
+// included.
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// These are defined by the user (or the compiler)
+// to specify the desired environment:
+//
+// __STRICT_ANSI__ ISO Standard C.
+// _ISOC99_SOURCE Extensions to ISO C89 from ISO C99.
+// _ISOC11_SOURCE Extensions to ISO C99 from ISO C11.
+// _ISOC2X_SOURCE Extensions to ISO C99 from ISO C2X.
+// __STDC_WANT_LIB_EXT2__
+// Extensions to ISO C99 from TR 27431-2:2010.
+// __STDC_WANT_IEC_60559_BFP_EXT__
+// Extensions to ISO C11 from TS 18661-1:2014.
+// __STDC_WANT_IEC_60559_FUNCS_EXT__
+// Extensions to ISO C11 from TS 18661-4:2015.
+// __STDC_WANT_IEC_60559_TYPES_EXT__
+// Extensions to ISO C11 from TS 18661-3:2015.
+// __STDC_WANT_IEC_60559_EXT__
+// ISO C2X interfaces defined only in Annex F.
+//
+// _POSIX_SOURCE IEEE Std 1003.1.
+// _POSIX_C_SOURCE If ==1, like _POSIX_SOURCE; if >=2 add IEEE Std 1003.2;
+// if >=199309L, add IEEE Std 1003.1b-1993;
+// if >=199506L, add IEEE Std 1003.1c-1995;
+// if >=200112L, all of IEEE 1003.1-2004
+// if >=200809L, all of IEEE 1003.1-2008
+// _XOPEN_SOURCE Includes POSIX and XPG things. Set to 500 if
+// Single Unix conformance is wanted, to 600 for the
+// sixth revision, to 700 for the seventh revision.
+// _XOPEN_SOURCE_EXTENDED XPG things and X/Open Unix extensions.
+// _LARGEFILE_SOURCE Some more functions for correct standard I/O.
+// _LARGEFILE64_SOURCE Additional functionality from LFS for large files.
+// _FILE_OFFSET_BITS=N Select default filesystem interface.
+// _ATFILE_SOURCE Additional *at interfaces.
+// _DYNAMIC_STACK_SIZE_SOURCE Select correct (but non compile-time constant)
+// MINSIGSTKSZ, SIGSTKSZ and PTHREAD_STACK_MIN.
+// _GNU_SOURCE All of the above, plus GNU extensions.
+// _DEFAULT_SOURCE The default set of features (taking precedence over
+// __STRICT_ANSI__).
+//
+// _FORTIFY_SOURCE Add security hardening to many library functions.
+// Set to 1 or 2; 2 performs stricter checks than 1.
+//
+// _REENTRANT, _THREAD_SAFE
+// Obsolete; equivalent to _POSIX_C_SOURCE=199506L.
+//
+// The `-ansi' switch to the GNU C compiler, and standards conformance
+// options such as `-std=c99', define __STRICT_ANSI__. If none of
+// these are defined, or if _DEFAULT_SOURCE is defined, the default is
+// to have _POSIX_SOURCE set to one and _POSIX_C_SOURCE set to
+// 200809L, as well as enabling miscellaneous functions from BSD and
+// SVID. If more than one of these are defined, they accumulate. For
+// example __STRICT_ANSI__, _POSIX_SOURCE and _POSIX_C_SOURCE together
+// give you ISO C, 1003.1, and 1003.2, but nothing else.
+//
+// These are defined by this file and are used by the
+// header files to decide what to declare or define:
+//
+// __GLIBC_USE (F) Define things from feature set F. This is defined
+// to 1 or 0; the subsequent macros are either defined
+// or undefined, and those tests should be moved to
+// __GLIBC_USE.
+// __USE_ISOC11 Define ISO C11 things.
+// __USE_ISOC99 Define ISO C99 things.
+// __USE_ISOC95 Define ISO C90 AMD1 (C95) things.
+// __USE_ISOCXX11 Define ISO C++11 things.
+// __USE_POSIX Define IEEE Std 1003.1 things.
+// __USE_POSIX2 Define IEEE Std 1003.2 things.
+// __USE_POSIX199309 Define IEEE Std 1003.1, and .1b things.
+// __USE_POSIX199506 Define IEEE Std 1003.1, .1b, .1c and .1i things.
+// __USE_XOPEN Define XPG things.
+// __USE_XOPEN_EXTENDED Define X/Open Unix things.
+// __USE_UNIX98 Define Single Unix V2 things.
+// __USE_XOPEN2K Define XPG6 things.
+// __USE_XOPEN2KXSI Define XPG6 XSI things.
+// __USE_XOPEN2K8 Define XPG7 things.
+// __USE_XOPEN2K8XSI Define XPG7 XSI things.
+// __USE_LARGEFILE Define correct standard I/O things.
+// __USE_LARGEFILE64 Define LFS things with separate names.
+// __USE_FILE_OFFSET64 Define 64bit interface as default.
+// __USE_MISC Define things from 4.3BSD or System V Unix.
+// __USE_ATFILE Define *at interfaces and AT_* constants for them.
+// __USE_DYNAMIC_STACK_SIZE Define correct (but non compile-time constant)
+// MINSIGSTKSZ, SIGSTKSZ and PTHREAD_STACK_MIN.
+// __USE_GNU Define GNU extensions.
+// __USE_FORTIFY_LEVEL Additional security measures used, according to level.
+//
+// The macros `__GNU_LIBRARY__', `__GLIBC__', and `__GLIBC_MINOR__' are
+// defined by this file unconditionally. `__GNU_LIBRARY__' is provided
+// only for compatibility. All new code should use the other symbols
+// to test for features.
+//
+// All macros listed above as possibly being defined by this file are
+// explicitly undefined if they are not explicitly defined.
+// Feature-test macros that are not defined by the user or compiler
+// but are implied by the other feature-test macros defined (or by the
+// lack of any definitions) are defined by the file.
+//
+// ISO C feature test macros depend on the definition of the macro
+// when an affected header is included, not when the first system
+// header is included, and so they are handled in
+// <bits/libc-header-start.h>, which does not have a multiple include
+// guard. Feature test macros that can be handled from the first
+// system header included are handled here.
+
+// Undefine everything, so we get a clean slate.
+
+// Suppress kernel-name space pollution unless user expressedly asks
+// for it.
+
+// Convenience macro to test the version of gcc.
+// Use like this:
+// #if __GNUC_PREREQ (2,8)
+// ... code requiring gcc 2.8 or later ...
+// #endif
+// Note: only works for GCC 2.0 and later, because __GNUC_MINOR__ was
+// added in 2.0.
+
+// Similarly for clang. Features added to GCC after version 4.2 may
+// or may not also be available in clang, and clang's definitions of
+// __GNUC(_MINOR)__ are fixed at 4 and 2 respectively. Not all such
+// features can be queried via __has_extension/__has_feature.
+
+// Whether to use feature set F.
+
+// _BSD_SOURCE and _SVID_SOURCE are deprecated aliases for
+// _DEFAULT_SOURCE. If _DEFAULT_SOURCE is present we do not
+// issue a warning; the expectation is that the source is being
+// transitioned to use the new macro.
+
+// If _GNU_SOURCE was defined by the user, turn on all the other features.
+
+// If nothing (other than _GNU_SOURCE and _DEFAULT_SOURCE) is defined,
+// define _DEFAULT_SOURCE.
+
+// This is to enable the ISO C2X extension.
+
+// This is to enable the ISO C11 extension.
+
+// This is to enable the ISO C99 extension.
+
+// This is to enable the ISO C90 Amendment 1:1995 extension.
+
+// If none of the ANSI/POSIX macros are defined, or if _DEFAULT_SOURCE
+// is defined, use POSIX.1-2008 (or another version depending on
+// _XOPEN_SOURCE).
+
+// Some C libraries once required _REENTRANT and/or _THREAD_SAFE to be
+// defined in all multithreaded code. GNU libc has not required this
+// for many years. We now treat them as compatibility synonyms for
+// _POSIX_C_SOURCE=199506L, which is the earliest level of POSIX with
+// comprehensive support for multithreaded code. Using them never
+// lowers the selected level of POSIX conformance, only raises it.
+
+// Features part to handle 64-bit time_t support.
+// Copyright (C) 2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// We need to know the word size in order to check the time size.
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Bit size of the time_t type at glibc build time, RISC-V case.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// RV32 and RV64 both use 64-bit time_t
+
+// The function 'gets' existed in C89, but is impossible to use
+// safely. It has been removed from ISO C11 and ISO C++14. Note: for
+// compatibility with various implementations of <cstdio>, this test
+// must consider only the value of __cplusplus when compiling C++.
+
+// GNU formerly extended the scanf functions with modified format
+// specifiers %as, %aS, and %a[...] that allocate a buffer for the
+// input using malloc. This extension conflicts with ISO C99, which
+// defines %a as a standalone format specifier that reads a floating-
+// point number; moreover, POSIX.1-2008 provides the same feature
+// using the modifier letter 'm' instead (%ms, %mS, %m[...]).
+//
+// We now follow C99 unless GNU extensions are active and the compiler
+// is specifically in C89 or C++98 mode (strict or not). For
+// instance, with GCC, -std=gnu11 will have C99-compliant scanf with
+// or without -D_GNU_SOURCE, but -std=c89 -D_GNU_SOURCE will have the
+// old extension.
+
+// Get definitions of __STDC_* predefined macros, if the compiler has
+// not preincluded this header automatically.
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// This macro indicates that the installed library is the GNU C Library.
+// For historic reasons the value now is 6 and this will stay from now
+// on. The use of this variable is deprecated. Use __GLIBC__ and
+// __GLIBC_MINOR__ now (see below) when you want to test for a specific
+// GNU C library version and use the values in <gnu/lib-names.h> to get
+// the sonames of the shared libraries.
+
+// Major and minor version number of the GNU C library package. Use
+// these macros to test for features in specific releases.
+
+// This is here only because every header file already includes this one.
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// We are almost always included from features.h.
+
+// The GNU libc does not support any K&R compilers or the traditional mode
+// of ISO C compilers anymore. Check for some of the combinations not
+// supported anymore.
+
+// Some user header file might have defined this before.
+
+// Compilers that lack __has_attribute may object to
+// #if defined __has_attribute && __has_attribute (...)
+// even though they do not need to evaluate the right-hand side of the &&.
+// Similarly for __has_builtin, etc.
+
+// All functions, except those with callbacks or those that
+// synchronize memory, are leaf functions.
+
+// GCC can always grok prototypes. For C++ programs we add throw()
+// to help it optimize the function calls. But this only works with
+// gcc 2.8.x and egcs. For gcc 3.4 and up we even mark C functions
+// as non-throwing using a function attribute since programs can use
+// the -fexceptions options for C code as well.
+
+// These two macros are not used in glibc anymore. They are kept here
+// only because some other projects expect the macros to be defined.
+
+// For these things, GCC behaves the ANSI way normally,
+// and the non-ANSI way under -traditional.
+
+// This is not a typedef so `const __ptr_t' does the right thing.
+
+// C++ needs to know that types and declarations are C, not C++.
+
+// Fortify support.
+
+// Use __builtin_dynamic_object_size at _FORTIFY_SOURCE=3 when available.
+
+// Support for flexible arrays.
+// Headers that should use flexible arrays only if they're "real"
+// (e.g. only if they won't affect sizeof()) should test
+// #if __glibc_c99_flexarr_available.
+
+// __asm__ ("xyz") is used throughout the headers to rename functions
+// at the assembly language level. This is wrapped by the __REDIRECT
+// macro, in order to support compilers that can do this some other
+// way. When compilers don't support asm-names at all, we have to do
+// preprocessor tricks instead (which don't have exactly the right
+// semantics, but it's the best we can do).
+//
+// Example:
+// int __REDIRECT(setpgrp, (__pid_t pid, __pid_t pgrp), setpgid);
+
+//
+// #elif __SOME_OTHER_COMPILER__
+//
+// # define __REDIRECT(name, proto, alias) name proto; _Pragma("let " #name " = " #alias)
+
+// GCC and clang have various useful declarations that can be made with
+// the '__attribute__' syntax. All of the ways we use this do fine if
+// they are omitted for compilers that don't understand it.
+
+// At some point during the gcc 2.96 development the `malloc' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+
+// Tell the compiler which arguments to an allocation function
+// indicate the size of the allocation.
+
+// At some point during the gcc 2.96 development the `pure' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+
+// This declaration tells the compiler that the value is constant.
+
+// At some point during the gcc 3.1 development the `used' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+
+// Since version 3.2, gcc allows marking deprecated functions.
+
+// Since version 4.5, gcc also allows one to specify the message printed
+// when a deprecated function is used. clang claims to be gcc 4.2, but
+// may also support this feature.
+
+// At some point during the gcc 2.8 development the `format_arg' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+// If several `format_arg' attributes are given for the same function, in
+// gcc-3.0 and older, all but the last one are ignored. In newer gccs,
+// all designated arguments are considered.
+
+// At some point during the gcc 2.97 development the `strfmon' format
+// attribute for functions was introduced. We don't want to use it
+// unconditionally (although this would be possible) since it
+// generates warnings.
+
+// The nonnull function attribute marks pointer parameters that
+// must not be NULL.
+
+// The returns_nonnull function attribute marks the return type of the function
+// as always being non-null.
+
+// If fortification mode, we warn about unused results of certain
+// function calls which can lead to problems.
+
+// Forces a function to be always inlined.
+// The Linux kernel defines __always_inline in stddef.h (283d7573), and
+// it conflicts with this definition. Therefore undefine it first to
+// allow either header to be included first.
+
+// Associate error messages with the source location of the call site rather
+// than with the source location inside the function.
+
+// GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
+// inline semantics, unless -fgnu89-inline is used. Using __GNUC_STDC_INLINE__
+// or __GNUC_GNU_INLINE is not a good enough check for gcc because gcc versions
+// older than 4.3 may define these macros and still not guarantee GNU inlining
+// semantics.
+//
+// clang++ identifies itself as gcc-4.2, but has support for GNU inlining
+// semantics, that can be checked for by using the __GNUC_STDC_INLINE_ and
+// __GNUC_GNU_INLINE__ macro definitions.
+
+// GCC 4.3 and above allow passing all anonymous arguments of an
+// __extern_always_inline function to some other vararg function.
+
+// It is possible to compile containing GCC extensions even if GCC is
+// run in pedantic mode if the uses are carefully marked using the
+// `__extension__' keyword. But this is not generally available before
+// version 2.8.
+
+// __restrict is known in EGCS 1.2 and above, and in clang.
+// It works also in C++ mode (outside of arrays), but only when spelled
+// as '__restrict', not 'restrict'.
+
+// ISO C99 also allows to declare arrays as non-overlapping. The syntax is
+// array_name[restrict]
+// GCC 3.1 and clang support this.
+// This syntax is not usable in C++ mode.
+
+// Describes a char array whose address can safely be passed as the first
+// argument to strncpy and strncat, as the char array is not necessarily
+// a NUL-terminated string.
+
+// Undefine (also defined in libc-symbols.h).
+// Copies attributes from the declaration or type referenced by
+// the argument.
+
+// The #ifndef lets Gnulib avoid including these on non-glibc
+// platforms, where the includes typically do not exist.
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Properties of long double type. ldbl-128 version.
+// Copyright (C) 2016-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// long double is distinct from double, so there is nothing to
+// define here.
+
+// __glibc_macro_warning (MESSAGE) issues warning MESSAGE. This is
+// intended for use in preprocessor macros.
+//
+// Note: MESSAGE must be a _single_ string; concatenation of string
+// literals is not supported.
+
+// Generic selection (ISO C11) is a C-only feature, available in GCC
+// since version 4.9. Previous versions do not provide generic
+// selection, even though they might set __STDC_VERSION__ to 201112L,
+// when in -std=c11 mode. Thus, we must check for !defined __GNUC__
+// when testing __STDC_VERSION__ for generic selection support.
+// On the other hand, Clang also defines __GNUC__, so a clang-specific
+// check is required to enable the use of generic selection.
+
+// Designates a 1-based positional argument ref-index of pointer type
+// that can be used to access size-index elements of the pointed-to
+// array according to access mode, or at least one element when
+// size-index is not provided:
+// access (access-mode, <ref-index> [, <size-index>])
+
+// Designates dealloc as a function to call to deallocate objects
+// allocated by the declared function.
+
+// Specify that a function such as setjmp or vfork may return
+// twice.
+
+// If we don't have __REDIRECT, prototypes will be missing if
+// __USE_FILE_OFFSET64 but not __USE_LARGEFILE[64].
+
+// Decide whether we can define 'extern inline' functions in headers.
+
+// This is here only because every header file already includes this one.
+// Get the definitions of all the appropriate `__stub_FUNCTION' symbols.
+// <gnu/stubs.h> contains `#define __stub_FUNCTION' when FUNCTION is a stub
+// that will always return failure (and set errno to ENOSYS).
+// This file is automatically generated.
+// This file selects the right generated file of `__stub_FUNCTION' macros
+// based on the architecture being compiled for.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// This file is automatically generated.
+// It defines a symbol `__stub_FUNCTION' for each function
+// in the C library which is a stub, meaning it will fail
+// every time called, usually setting errno to ENOSYS.
+
+// ISO/IEC TR 24731-2:2010 defines the __STDC_WANT_LIB_EXT2__
+// macro.
+
+// ISO/IEC TS 18661-1:2014 defines the __STDC_WANT_IEC_60559_BFP_EXT__
+// macro. Most but not all symbols enabled by that macro in TS
+// 18661-1 are enabled unconditionally in C2X. In C2X, the symbols in
+// Annex F still require a new feature test macro
+// __STDC_WANT_IEC_60559_EXT__ instead (C2X does not define
+// __STDC_WANT_IEC_60559_BFP_EXT__), while a few features from TS
+// 18661-1 are not included in C2X (and thus should depend on
+// __STDC_WANT_IEC_60559_BFP_EXT__ even when C2X features are
+// enabled).
+//
+// __GLIBC_USE (IEC_60559_BFP_EXT) controls those features from TS
+// 18661-1 not included in C2X.
+//
+// __GLIBC_USE (IEC_60559_BFP_EXT_C2X) controls those features from TS
+// 18661-1 that are also included in C2X (with no feature test macro
+// required in C2X).
+//
+// __GLIBC_USE (IEC_60559_EXT) controls those features from TS 18661-1
+// that are included in C2X but conditional on
+// __STDC_WANT_IEC_60559_EXT__. (There are currently no features
+// conditional on __STDC_WANT_IEC_60559_EXT__ that are not in TS
+// 18661-1.)
+
+// ISO/IEC TS 18661-4:2015 defines the
+// __STDC_WANT_IEC_60559_FUNCS_EXT__ macro. Other than the reduction
+// functions, the symbols from this TS are enabled unconditionally in
+// C2X.
+
+// ISO/IEC TS 18661-3:2015 defines the
+// __STDC_WANT_IEC_60559_TYPES_EXT__ macro.
+
+// Maximum length of any multibyte character in any locale.
+// We define this value here since the gcc header does not define
+// the correct value.
+
+// If we are not using GNU CC we have to define all the symbols ourself.
+// Otherwise use gcc's definitions (see below).
+
+// Get the compiler's limits.h, which defines almost all the ISO constants.
+//
+// We put this #include_next outside the double inclusion check because
+// it should be possible to include this file more than once and still get
+// the definitions from gcc's header.
+
+// The <limits.h> files in some gcc versions don't define LLONG_MIN,
+// LLONG_MAX, and ULLONG_MAX. Instead only the values gcc defined for
+// ages are available.
+
+// The integer width macros are not defined by GCC's <limits.h> before
+// GCC 7, or if _GNU_SOURCE rather than
+// __STDC_WANT_IEC_60559_BFP_EXT__ is used to enable this feature.
+
+// The macros for _Bool are not defined by GCC's <limits.h> before GCC
+// 11, or if _GNU_SOURCE is defined rather than enabling C2x support
+// with -std.
+
+// POSIX adds things to <limits.h>.
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// POSIX Standard: 2.9.2 Minimum Values Added to <limits.h>
+//
+// Never include this file directly; use <limits.h> instead.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// These are the standard-mandated minimum values.
+
+// Minimum number of operations in one list I/O call.
+
+// Minimal number of outstanding asynchronous I/O operations.
+
+// Maximum length of arguments to `execve', including environment.
+
+// Maximum simultaneous processes per real user ID.
+
+// Minimal number of timer expiration overruns.
+
+// Maximum length of a host name (not including the terminating null)
+// as returned from the GETHOSTNAME function.
+
+// Maximum link count of a file.
+
+// Maximum length of login name.
+
+// Number of bytes in a terminal canonical input queue.
+
+// Number of bytes for which space will be
+// available in a terminal input queue.
+
+// Maximum number of message queues open for a process.
+
+// Maximum number of supported message priorities.
+
+// Number of bytes in a filename.
+
+// Number of simultaneous supplementary group IDs per process.
+
+// Number of files one process can have open at once.
+
+// Number of bytes in a pathname.
+
+// Number of bytes than can be written atomically to a pipe.
+
+// The number of repeated occurrences of a BRE permitted by the
+// REGEXEC and REGCOMP functions when using the interval notation.
+
+// Minimal number of realtime signals reserved for the application.
+
+// Number of semaphores a process can have.
+
+// Maximal value of a semaphore.
+
+// Number of pending realtime signals.
+
+// Largest value of a `ssize_t'.
+
+// Number of streams a process can have open at once.
+
+// The number of bytes in a symbolic link.
+
+// The number of symbolic links that can be traversed in the
+// resolution of a pathname in the absence of a loop.
+
+// Number of timer for a process.
+
+// Maximum number of characters in a tty name.
+
+// Maximum length of a timezone name (element of `tzname').
+
+// Maximum clock resolution in nanoseconds.
+
+// Get the implementation-specific values for the above.
+// Minimum guaranteed maximum values for system limits. Linux version.
+// Copyright (C) 1993-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public License as
+// published by the Free Software Foundation; either version 2.1 of the
+// License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; see the file COPYING.LIB. If
+// not, see <https://www.gnu.org/licenses/>.
+
+// The kernel header pollutes the namespace with the NR_OPEN symbol
+// and defines LINK_MAX although filesystems have different maxima. A
+// similar thing is true for OPEN_MAX: the limit can be changed at
+// runtime and therefore the macro must not be defined. Remove this
+// after including the header if necessary.
+
+// The kernel sources contain a file with all the needed information.
+// SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
+
+// Have to remove NR_OPEN?
+// Have to remove LINK_MAX?
+// Have to remove OPEN_MAX?
+// Have to remove ARG_MAX?
+
+// The number of data keys per process.
+// This is the value this implementation supports.
+
+// Controlling the iterations of destructors for thread-specific data.
+// Number of iterations this implementation does.
+
+// The number of threads per process.
+// We have no predefined limit on the number of threads.
+
+// Maximum amount by which a process can descrease its asynchronous I/O
+// priority level.
+
+// Arrange for the definition of PTHREAD_STACK_MIN.
+// Definition of PTHREAD_STACK_MIN, possibly dynamic.
+// Copyright (C) 2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Definition of PTHREAD_STACK_MIN. Linux version.
+// Copyright (C) 2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Minimum size for a thread. We are free to choose a reasonable value.
+
+// Maximum number of timer expiration overruns.
+
+// Maximum tty name length.
+
+// Maximum login name length. This is arbitrary.
+
+// Maximum host name length.
+
+// Maximum message queue priority level.
+
+// Maximum value the semaphore can have.
+
+// ssize_t is not formally required to be the signed type
+// corresponding to size_t, but it is for all configurations supported
+// by glibc.
+
+// This value is a guaranteed minimum maximum.
+// The current maximum can be got from `sysconf'.
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; include <limits.h> instead.
+
+// The maximum `ibase' and `obase' values allowed by the `bc' utility.
+
+// The maximum number of elements allowed in an array by the `bc' utility.
+
+// The maximum `scale' value allowed by the `bc' utility.
+
+// The maximum length of a string constant accepted by the `bc' utility.
+
+// The maximum number of weights that can be assigned to an entry of
+// the LC_COLLATE `order' keyword in the locale definition file.
+
+// The maximum number of expressions that can be nested
+// within parentheses by the `expr' utility.
+
+// The maximum length, in bytes, of an input line.
+
+// The maximum number of repeated occurrences of a regular expression
+// permitted when using the interval notation `\{M,N\}'.
+
+// The maximum number of bytes in a character class name. We have no
+// fixed limit, 2048 is a high number.
+
+// These values are implementation-specific,
+// and may vary within the implementation.
+// Their precise values can be obtained from sysconf.
+
+// This value is defined like this in regex.h.
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify it under
+// the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 3, or (at your option) any later
+// version.
+//
+// GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or
+// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+// for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+//
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Number of bits in a `char'.
+
+// Maximum length of a multibyte character.
+
+// Minimum and maximum values a `signed char' can hold.
+
+// Maximum value an `unsigned char' can hold. (Minimum is 0).
+
+// Minimum and maximum values a `char' can hold.
+
+// Minimum and maximum values a `signed short int' can hold.
+
+// Maximum value an `unsigned short int' can hold. (Minimum is 0).
+
+// Minimum and maximum values a `signed int' can hold.
+
+// Maximum value an `unsigned int' can hold. (Minimum is 0).
+
+// Minimum and maximum values a `signed long int' can hold.
+// (Same as `int').
+
+// Maximum value an `unsigned long int' can hold. (Minimum is 0).
+
+// Minimum and maximum values a `signed long long int' can hold.
+
+// Maximum value an `unsigned long long int' can hold. (Minimum is 0).
+
+// This administrivia gets added to the end of limits.h
+// if the system has its own version of limits.h.
+
+var _ uint8 /* gen.c:2:13: */
diff --git a/vendor/modernc.org/libc/musl_linux_riscv64.go b/vendor/modernc.org/libc/musl_linux_riscv64.go
new file mode 100644
index 00000000..57470023
--- /dev/null
+++ b/vendor/modernc.org/libc/musl_linux_riscv64.go
@@ -0,0 +1,6997 @@
+// Code generated by 'ccgo -export-externs X -hide __syscall0,__syscall1,__syscall2,__syscall3,__syscall4,__syscall5,__syscall6 -nostdinc -nostdlib -o ../musl_linux_riscv64.go -pkgname libc -static-locals-prefix _s -Iarch/riscv64 -Iarch/generic -Iobj/src/internal -Isrc/include -Isrc/internal -Iobj/include -Iinclude copyright.c src/ctype/__ctype_b_loc.c src/ctype/isalnum.c src/ctype/isalpha.c src/ctype/isdigit.c src/ctype/islower.c src/ctype/isprint.c src/ctype/isupper.c src/ctype/isxdigit.c src/dirent/closedir.c src/dirent/opendir.c src/dirent/readdir.c src/internal/floatscan.c src/internal/intscan.c src/internal/shgetc.c src/locale/localeconv.c src/math/__fpclassify.c src/math/__fpclassifyf.c src/math/__fpclassifyl.c src/math/copysignl.c src/math/fabsl.c src/math/fmodl.c src/math/nanf.c src/math/rint.c src/math/scalbn.c src/math/scalbnl.c src/multibyte/internal.c src/multibyte/mbrtowc.c src/multibyte/mbsinit.c src/network/freeaddrinfo.c src/network/getaddrinfo.c src/network/gethostbyaddr.c src/network/gethostbyaddr_r.c src/network/gethostbyname.c src/network/gethostbyname2.c src/network/gethostbyname2_r.c src/network/gethostbyname_r.c src/network/getnameinfo.c src/network/h_errno.c src/network/inet_aton.c src/network/inet_ntop.c src/network/inet_pton.c src/network/lookup_ipliteral.c src/network/lookup_name.c src/network/lookup_serv.c src/prng/rand_r.c src/stdio/__lockfile.c src/stdio/__toread.c src/stdio/__uflow.c src/stdio/sscanf.c src/stdio/vfscanf.c src/stdio/vsscanf.c src/stdlib/bsearch.c src/stdlib/strtod.c src/stdlib/strtol.c src/string/strdup.c src/string/strlcat.c src/string/strlcpy.c src/string/strncasecmp.c src/string/strncat.c src/string/strnlen.c src/string/strspn.c src/string/strtok.c src/thread/pthread_attr_get.c src/thread/pthread_attr_setdetachstate.c src/thread/pthread_mutex_lock.c src/thread/pthread_mutexattr_destroy.c src/thread/pthread_mutexattr_init.c src/thread/pthread_mutexattr_settype.c', DO NOT EDIT.
+
+package libc
+
+import (
+ "math"
+ "reflect"
+ "sync/atomic"
+ "unsafe"
+)
+
+var _ = math.Pi
+var _ reflect.Kind
+var _ atomic.Value
+var _ unsafe.Pointer
+
+// musl as a whole is licensed under the following standard MIT license:
+//
+// ----------------------------------------------------------------------
+// Copyright © 2005-2020 Rich Felker, et al.
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ----------------------------------------------------------------------
+//
+// Authors/contributors include:
+//
+// A. Wilcox
+// Ada Worcester
+// Alex Dowad
+// Alex Suykov
+// Alexander Monakov
+// Andre McCurdy
+// Andrew Kelley
+// Anthony G. Basile
+// Aric Belsito
+// Arvid Picciani
+// Bartosz Brachaczek
+// Benjamin Peterson
+// Bobby Bingham
+// Boris Brezillon
+// Brent Cook
+// Chris Spiegel
+// Clément Vasseur
+// Daniel Micay
+// Daniel Sabogal
+// Daurnimator
+// David Carlier
+// David Edelsohn
+// Denys Vlasenko
+// Dmitry Ivanov
+// Dmitry V. Levin
+// Drew DeVault
+// Emil Renner Berthing
+// Fangrui Song
+// Felix Fietkau
+// Felix Janda
+// Gianluca Anzolin
+// Hauke Mehrtens
+// He X
+// Hiltjo Posthuma
+// Isaac Dunham
+// Jaydeep Patil
+// Jens Gustedt
+// Jeremy Huntwork
+// Jo-Philipp Wich
+// Joakim Sindholt
+// John Spencer
+// Julien Ramseier
+// Justin Cormack
+// Kaarle Ritvanen
+// Khem Raj
+// Kylie McClain
+// Leah Neukirchen
+// Luca Barbato
+// Luka Perkov
+// M Farkas-Dyck (Strake)
+// Mahesh Bodapati
+// Markus Wichmann
+// Masanori Ogino
+// Michael Clark
+// Michael Forney
+// Mikhail Kremnyov
+// Natanael Copa
+// Nicholas J. Kain
+// orc
+// Pascal Cuoq
+// Patrick Oppenlander
+// Petr Hosek
+// Petr Skocik
+// Pierre Carrier
+// Reini Urban
+// Rich Felker
+// Richard Pennington
+// Ryan Fairfax
+// Samuel Holland
+// Segev Finer
+// Shiz
+// sin
+// Solar Designer
+// Stefan Kristiansson
+// Stefan O'Rear
+// Szabolcs Nagy
+// Timo Teräs
+// Trutz Behn
+// Valentin Ochs
+// Will Dietz
+// William Haddon
+// William Pitcock
+//
+// Portions of this software are derived from third-party works licensed
+// under terms compatible with the above MIT license:
+//
+// The TRE regular expression implementation (src/regex/reg* and
+// src/regex/tre*) is Copyright © 2001-2008 Ville Laurikari and licensed
+// under a 2-clause BSD license (license text in the source files). The
+// included version has been heavily modified by Rich Felker in 2012, in
+// the interests of size, simplicity, and namespace cleanliness.
+//
+// Much of the math library code (src/math/* and src/complex/*) is
+// Copyright © 1993,2004 Sun Microsystems or
+// Copyright © 2003-2011 David Schultz or
+// Copyright © 2003-2009 Steven G. Kargl or
+// Copyright © 2003-2009 Bruce D. Evans or
+// Copyright © 2008 Stephen L. Moshier or
+// Copyright © 2017-2018 Arm Limited
+// and labelled as such in comments in the individual source files. All
+// have been licensed under extremely permissive terms.
+//
+// The ARM memcpy code (src/string/arm/memcpy.S) is Copyright © 2008
+// The Android Open Source Project and is licensed under a two-clause BSD
+// license. It was taken from Bionic libc, used on Android.
+//
+// The AArch64 memcpy and memset code (src/string/aarch64/*) are
+// Copyright © 1999-2019, Arm Limited.
+//
+// The implementation of DES for crypt (src/crypt/crypt_des.c) is
+// Copyright © 1994 David Burren. It is licensed under a BSD license.
+//
+// The implementation of blowfish crypt (src/crypt/crypt_blowfish.c) was
+// originally written by Solar Designer and placed into the public
+// domain. The code also comes with a fallback permissive license for use
+// in jurisdictions that may not recognize the public domain.
+//
+// The smoothsort implementation (src/stdlib/qsort.c) is Copyright © 2011
+// Valentin Ochs and is licensed under an MIT-style license.
+//
+// The x86_64 port was written by Nicholas J. Kain and is licensed under
+// the standard MIT terms.
+//
+// The mips and microblaze ports were originally written by Richard
+// Pennington for use in the ellcc project. The original code was adapted
+// by Rich Felker for build system and code conventions during upstream
+// integration. It is licensed under the standard MIT terms.
+//
+// The mips64 port was contributed by Imagination Technologies and is
+// licensed under the standard MIT terms.
+//
+// The powerpc port was also originally written by Richard Pennington,
+// and later supplemented and integrated by John Spencer. It is licensed
+// under the standard MIT terms.
+//
+// All other files which have no copyright comments are original works
+// produced specifically for use as part of this library, written either
+// by Rich Felker, the main author of the library, or by one or more
+// contibutors listed above. Details on authorship of individual files
+// can be found in the git version control history of the project. The
+// omission of copyright and license comments in each file is in the
+// interest of source tree size.
+//
+// In addition, permission is hereby granted for all public header files
+// (include/* and arch/*/bits/*) and crt files intended to be linked into
+// applications (crt/*, ldso/dlstart.c, and arch/*/crt_arch.h) to omit
+// the copyright notice and permission notice otherwise required by the
+// license, and to use these files without any requirement of
+// attribution. These files include substantial contributions from:
+//
+// Bobby Bingham
+// John Spencer
+// Nicholas J. Kain
+// Rich Felker
+// Richard Pennington
+// Stefan Kristiansson
+// Szabolcs Nagy
+//
+// all of whom have explicitly granted such permission.
+//
+// This file previously contained text expressing a belief that most of
+// the files covered by the above exception were sufficiently trivial not
+// to be subject to copyright, resulting in confusion over whether it
+// negated the permissions granted in the license. In the spirit of
+// permissive licensing, and of not having licensing issues being an
+// obstacle to adoption, that text has been removed.
+const ( /* copyright.c:194:1: */
+ __musl__copyright__ = 0
+)
+
+const ( /* nameser.h:117:1: */
+ ns_uop_delete = 0
+ ns_uop_add = 1
+ ns_uop_max = 2
+)
+
+const ( /* nameser.h:147:1: */
+ ns_t_invalid = 0
+ ns_t_a = 1
+ ns_t_ns = 2
+ ns_t_md = 3
+ ns_t_mf = 4
+ ns_t_cname = 5
+ ns_t_soa = 6
+ ns_t_mb = 7
+ ns_t_mg = 8
+ ns_t_mr = 9
+ ns_t_null = 10
+ ns_t_wks = 11
+ ns_t_ptr = 12
+ ns_t_hinfo = 13
+ ns_t_minfo = 14
+ ns_t_mx = 15
+ ns_t_txt = 16
+ ns_t_rp = 17
+ ns_t_afsdb = 18
+ ns_t_x25 = 19
+ ns_t_isdn = 20
+ ns_t_rt = 21
+ ns_t_nsap = 22
+ ns_t_nsap_ptr = 23
+ ns_t_sig = 24
+ ns_t_key = 25
+ ns_t_px = 26
+ ns_t_gpos = 27
+ ns_t_aaaa = 28
+ ns_t_loc = 29
+ ns_t_nxt = 30
+ ns_t_eid = 31
+ ns_t_nimloc = 32
+ ns_t_srv = 33
+ ns_t_atma = 34
+ ns_t_naptr = 35
+ ns_t_kx = 36
+ ns_t_cert = 37
+ ns_t_a6 = 38
+ ns_t_dname = 39
+ ns_t_sink = 40
+ ns_t_opt = 41
+ ns_t_apl = 42
+ ns_t_tkey = 249
+ ns_t_tsig = 250
+ ns_t_ixfr = 251
+ ns_t_axfr = 252
+ ns_t_mailb = 253
+ ns_t_maila = 254
+ ns_t_any = 255
+ ns_t_zxfr = 256
+ ns_t_max = 65536
+)
+
+const ( /* nameser.h:210:1: */
+ ns_c_invalid = 0
+ ns_c_in = 1
+ ns_c_2 = 2
+ ns_c_chaos = 3
+ ns_c_hs = 4
+ ns_c_none = 254
+ ns_c_any = 255
+ ns_c_max = 65536
+)
+
+const ( /* nameser.h:221:1: */
+ ns_kt_rsa = 1
+ ns_kt_dh = 2
+ ns_kt_dsa = 3
+ ns_kt_private = 254
+)
+
+const ( /* nameser.h:228:1: */
+ cert_t_pkix = 1
+ cert_t_spki = 2
+ cert_t_pgp = 3
+ cert_t_url = 253
+ cert_t_oid = 254
+)
+
+const ( /* nameser.h:28:1: */
+ ns_s_qd = 0
+ ns_s_zn = 0
+ ns_s_an = 1
+ ns_s_pr = 1
+ ns_s_ns = 2
+ ns_s_ud = 2
+ ns_s_ar = 3
+ ns_s_max = 4
+)
+
+const ( /* nameser.h:75:1: */
+ ns_f_qr = 0
+ ns_f_opcode = 1
+ ns_f_aa = 2
+ ns_f_tc = 3
+ ns_f_rd = 4
+ ns_f_ra = 5
+ ns_f_z = 6
+ ns_f_ad = 7
+ ns_f_cd = 8
+ ns_f_rcode = 9
+ ns_f_max = 10
+)
+
+const ( /* nameser.h:89:1: */
+ ns_o_query = 0
+ ns_o_iquery = 1
+ ns_o_status = 2
+ ns_o_notify = 4
+ ns_o_update = 5
+ ns_o_max = 6
+)
+
+const ( /* nameser.h:98:1: */
+ ns_r_noerror = 0
+ ns_r_formerr = 1
+ ns_r_servfail = 2
+ ns_r_nxdomain = 3
+ ns_r_notimpl = 4
+ ns_r_refused = 5
+ ns_r_yxdomain = 6
+ ns_r_yxrrset = 7
+ ns_r_nxrrset = 8
+ ns_r_notauth = 9
+ ns_r_notzone = 10
+ ns_r_max = 11
+ ns_r_badvers = 16
+ ns_r_badsig = 16
+ ns_r_badkey = 17
+ ns_r_badtime = 18
+)
+
+const ( /* pthread_impl.h:58:1: */
+ DT_EXITING = 0
+ DT_JOINABLE = 1
+ DT_DETACHED = 2
+)
+
+type ptrdiff_t = int64 /* <builtin>:3:26 */
+
+type size_t = uint64 /* <builtin>:9:23 */
+
+type wchar_t = int32 /* <builtin>:15:24 */
+
+type uint16_t = uint16 /* alltypes.h:124:25 */
+
+type uint32_t = uint32 /* alltypes.h:129:25 */
+
+type uint64_t = uint64 /* alltypes.h:134:25 */
+
+func __bswap32(tls *TLS, __x uint32_t) uint32_t { /* endian.h:24:26: */
+ return __x>>24 | __x>>8&uint32_t(0xff00) | __x<<8&uint32_t(0xff0000) | __x<<24
+}
+
+var table = [384]uint16{
+ uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0),
+ uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0),
+ uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0),
+ uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0),
+ uint16((0x200/256 | 0x200*256) % 65536), uint16((0x200/256 | 0x200*256) % 65536), uint16((0x200/256 | 0x200*256) % 65536), uint16((0x200/256 | 0x200*256) % 65536), uint16((0x200/256 | 0x200*256) % 65536), uint16((0x200/256 | 0x200*256) % 65536), uint16((0x200/256 | 0x200*256) % 65536), uint16((0x200/256 | 0x200*256) % 65536),
+ uint16((0x200/256 | 0x200*256) % 65536), uint16((0x320/256 | 0x320*256) % 65536), uint16((0x220/256 | 0x220*256) % 65536), uint16((0x220/256 | 0x220*256) % 65536), uint16((0x220/256 | 0x220*256) % 65536), uint16((0x220/256 | 0x220*256) % 65536), uint16((0x200/256 | 0x200*256) % 65536), uint16((0x200/256 | 0x200*256) % 65536),
+ uint16((0x200/256 | 0x200*256) % 65536), uint16((0x200/256 | 0x200*256) % 65536), uint16((0x200/256 | 0x200*256) % 65536), uint16((0x200/256 | 0x200*256) % 65536), uint16((0x200/256 | 0x200*256) % 65536), uint16((0x200/256 | 0x200*256) % 65536), uint16((0x200/256 | 0x200*256) % 65536), uint16((0x200/256 | 0x200*256) % 65536),
+ uint16((0x200/256 | 0x200*256) % 65536), uint16((0x200/256 | 0x200*256) % 65536), uint16((0x200/256 | 0x200*256) % 65536), uint16((0x200/256 | 0x200*256) % 65536), uint16((0x200/256 | 0x200*256) % 65536), uint16((0x200/256 | 0x200*256) % 65536), uint16((0x200/256 | 0x200*256) % 65536), uint16((0x200/256 | 0x200*256) % 65536),
+ uint16((0x160/256 | 0x160*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536),
+ uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536),
+ uint16((0x8d8/256 | 0x8d8*256) % 65536), uint16((0x8d8/256 | 0x8d8*256) % 65536), uint16((0x8d8/256 | 0x8d8*256) % 65536), uint16((0x8d8/256 | 0x8d8*256) % 65536), uint16((0x8d8/256 | 0x8d8*256) % 65536), uint16((0x8d8/256 | 0x8d8*256) % 65536), uint16((0x8d8/256 | 0x8d8*256) % 65536), uint16((0x8d8/256 | 0x8d8*256) % 65536),
+ uint16((0x8d8/256 | 0x8d8*256) % 65536), uint16((0x8d8/256 | 0x8d8*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536),
+ uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x8d5/256 | 0x8d5*256) % 65536), uint16((0x8d5/256 | 0x8d5*256) % 65536), uint16((0x8d5/256 | 0x8d5*256) % 65536), uint16((0x8d5/256 | 0x8d5*256) % 65536), uint16((0x8d5/256 | 0x8d5*256) % 65536), uint16((0x8d5/256 | 0x8d5*256) % 65536), uint16((0x8c5/256 | 0x8c5*256) % 65536),
+ uint16((0x8c5/256 | 0x8c5*256) % 65536), uint16((0x8c5/256 | 0x8c5*256) % 65536), uint16((0x8c5/256 | 0x8c5*256) % 65536), uint16((0x8c5/256 | 0x8c5*256) % 65536), uint16((0x8c5/256 | 0x8c5*256) % 65536), uint16((0x8c5/256 | 0x8c5*256) % 65536), uint16((0x8c5/256 | 0x8c5*256) % 65536), uint16((0x8c5/256 | 0x8c5*256) % 65536),
+ uint16((0x8c5/256 | 0x8c5*256) % 65536), uint16((0x8c5/256 | 0x8c5*256) % 65536), uint16((0x8c5/256 | 0x8c5*256) % 65536), uint16((0x8c5/256 | 0x8c5*256) % 65536), uint16((0x8c5/256 | 0x8c5*256) % 65536), uint16((0x8c5/256 | 0x8c5*256) % 65536), uint16((0x8c5/256 | 0x8c5*256) % 65536), uint16((0x8c5/256 | 0x8c5*256) % 65536),
+ uint16((0x8c5/256 | 0x8c5*256) % 65536), uint16((0x8c5/256 | 0x8c5*256) % 65536), uint16((0x8c5/256 | 0x8c5*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536),
+ uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x8d6/256 | 0x8d6*256) % 65536), uint16((0x8d6/256 | 0x8d6*256) % 65536), uint16((0x8d6/256 | 0x8d6*256) % 65536), uint16((0x8d6/256 | 0x8d6*256) % 65536), uint16((0x8d6/256 | 0x8d6*256) % 65536), uint16((0x8d6/256 | 0x8d6*256) % 65536), uint16((0x8c6/256 | 0x8c6*256) % 65536),
+ uint16((0x8c6/256 | 0x8c6*256) % 65536), uint16((0x8c6/256 | 0x8c6*256) % 65536), uint16((0x8c6/256 | 0x8c6*256) % 65536), uint16((0x8c6/256 | 0x8c6*256) % 65536), uint16((0x8c6/256 | 0x8c6*256) % 65536), uint16((0x8c6/256 | 0x8c6*256) % 65536), uint16((0x8c6/256 | 0x8c6*256) % 65536), uint16((0x8c6/256 | 0x8c6*256) % 65536),
+ uint16((0x8c6/256 | 0x8c6*256) % 65536), uint16((0x8c6/256 | 0x8c6*256) % 65536), uint16((0x8c6/256 | 0x8c6*256) % 65536), uint16((0x8c6/256 | 0x8c6*256) % 65536), uint16((0x8c6/256 | 0x8c6*256) % 65536), uint16((0x8c6/256 | 0x8c6*256) % 65536), uint16((0x8c6/256 | 0x8c6*256) % 65536), uint16((0x8c6/256 | 0x8c6*256) % 65536),
+ uint16((0x8c6/256 | 0x8c6*256) % 65536), uint16((0x8c6/256 | 0x8c6*256) % 65536), uint16((0x8c6/256 | 0x8c6*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x200/256 | 0x200*256) % 65536),
+ uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0),
+ uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0),
+ uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0),
+ uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0),
+} /* __ctype_b_loc.c:9:29 */
+
+var ptable uintptr = 0 /* __ctype_b_loc.c:36:29 */
+
+func X__ctype_b_loc(tls *TLS) uintptr { /* __ctype_b_loc.c:38:22: */
+ return uintptr(unsafe.Pointer(&ptable))
+}
+
+func __isspace(tls *TLS, _c int32) int32 { /* ctype.h:26:21: */
+ return Bool32(_c == ' ' || uint32(_c)-uint32('\t') < uint32(5))
+}
+
+type __locale_struct = struct{ cat [6]uintptr } /* alltypes.h:341:9 */
+
+type locale_t = uintptr /* alltypes.h:341:32 */
+
+func Xisalnum(tls *TLS, c int32) int32 { /* isalnum.c:3:5: */
+ return Bool32(func() int32 {
+ if 0 != 0 {
+ return Xisalpha(tls, c)
+ }
+ return Bool32(uint32(c)|uint32(32)-uint32('a') < uint32(26))
+ }() != 0 || func() int32 {
+ if 0 != 0 {
+ return Xisdigit(tls, c)
+ }
+ return Bool32(uint32(c)-uint32('0') < uint32(10))
+ }() != 0)
+}
+
+func X__isalnum_l(tls *TLS, c int32, l locale_t) int32 { /* isalnum.c:8:5: */
+ return Xisalnum(tls, c)
+}
+
+func Xisalpha(tls *TLS, c int32) int32 { /* isalpha.c:4:5: */
+ return Bool32(uint32(c)|uint32(32)-uint32('a') < uint32(26))
+}
+
+func X__isalpha_l(tls *TLS, c int32, l locale_t) int32 { /* isalpha.c:9:5: */
+ return Xisalpha(tls, c)
+}
+
+func Xisdigit(tls *TLS, c int32) int32 { /* isdigit.c:4:5: */
+ return Bool32(uint32(c)-uint32('0') < uint32(10))
+}
+
+func X__isdigit_l(tls *TLS, c int32, l locale_t) int32 { /* isdigit.c:9:5: */
+ return Xisdigit(tls, c)
+}
+
+func Xislower(tls *TLS, c int32) int32 { /* islower.c:4:5: */
+ return Bool32(uint32(c)-uint32('a') < uint32(26))
+}
+
+func X__islower_l(tls *TLS, c int32, l locale_t) int32 { /* islower.c:9:5: */
+ return Xislower(tls, c)
+}
+
+func Xisprint(tls *TLS, c int32) int32 { /* isprint.c:4:5: */
+ return Bool32(uint32(c)-uint32(0x20) < uint32(0x5f))
+}
+
+func X__isprint_l(tls *TLS, c int32, l locale_t) int32 { /* isprint.c:9:5: */
+ return Xisprint(tls, c)
+}
+
+func Xisupper(tls *TLS, c int32) int32 { /* isupper.c:4:5: */
+ return Bool32(uint32(c)-uint32('A') < uint32(26))
+}
+
+func X__isupper_l(tls *TLS, c int32, l locale_t) int32 { /* isupper.c:9:5: */
+ return Xisupper(tls, c)
+}
+
+func Xisxdigit(tls *TLS, c int32) int32 { /* isxdigit.c:3:5: */
+ return Bool32(func() int32 {
+ if 0 != 0 {
+ return Xisdigit(tls, c)
+ }
+ return Bool32(uint32(c)-uint32('0') < uint32(10))
+ }() != 0 || uint32(c)|uint32(32)-uint32('a') < uint32(6))
+}
+
+func X__isxdigit_l(tls *TLS, c int32, l locale_t) int32 { /* isxdigit.c:8:5: */
+ return Xisxdigit(tls, c)
+}
+
+type off_t = int64 /* alltypes.h:160:16 */
+
+type ino_t = uint64 /* alltypes.h:165:25 */
+
+type dirent = struct {
+ d_ino ino_t
+ d_off off_t
+ d_reclen uint16
+ d_type uint8
+ d_name [256]uint8
+ _ [5]byte
+} /* dirent.h:5:1 */
+
+type __dirstream = struct {
+ tell off_t
+ fd int32
+ buf_pos int32
+ buf_end int32
+ lock [1]int32
+ buf [2048]uint8
+} /* dirent.h:20:9 */
+
+type DIR = __dirstream /* dirent.h:20:28 */
+
+type ssize_t = int64 /* alltypes.h:63:15 */
+
+type intptr_t = int64 /* alltypes.h:68:15 */
+
+type pid_t = int32 /* alltypes.h:233:13 */
+
+type uid_t = uint32 /* alltypes.h:243:18 */
+
+type gid_t = uint32 /* alltypes.h:248:18 */
+
+type useconds_t = uint32 /* alltypes.h:258:18 */
+
+type div_t = struct {
+ quot int32
+ rem int32
+} /* stdlib.h:62:35 */
+type ldiv_t = struct {
+ quot int64
+ rem int64
+} /* stdlib.h:63:36 */
+type lldiv_t = struct {
+ quot int64
+ rem int64
+} /* stdlib.h:64:41 */
+
+func Xclosedir(tls *TLS, dir uintptr) int32 { /* closedir.c:6:5: */
+ var ret int32 = Xclose(tls, (*DIR)(unsafe.Pointer(dir)).fd)
+ Xfree(tls, dir)
+ return ret
+}
+
+type mode_t = uint32 /* alltypes.h:150:18 */
+
+type iovec = struct {
+ iov_base uintptr
+ iov_len size_t
+} /* alltypes.h:353:1 */
+
+type flock = struct {
+ l_type int16
+ l_whence int16
+ _ [4]byte
+ l_start off_t
+ l_len off_t
+ l_pid pid_t
+ _ [4]byte
+} /* fcntl.h:24:1 */
+
+type file_handle = struct {
+ _ [0]uint32
+ handle_bytes uint32
+ handle_type int32
+} /* fcntl.h:167:1 */
+
+type f_owner_ex = struct {
+ __type int32
+ pid pid_t
+} /* fcntl.h:172:1 */
+
+// We don't have a clock_gettime function.
+// #define VDSO_CGT_SYM "__vdso_clock_gettime"
+// #define VDSO_CGT_VER "LINUX_2.6"
+
+type syscall_arg_t = int64 /* syscall.h:22:14 */
+
+func Xopendir(tls *TLS, name uintptr) uintptr { /* opendir.c:8:5: */
+ var fd int32
+ var dir uintptr
+
+ if AssignInt32(&fd, Xopen(tls, name, 00|0200000|02000000, 0)) < 0 {
+ return uintptr(0)
+ }
+ if !(int32(AssignUintptr(&dir, Xcalloc(tls, uint64(1), uint64(unsafe.Sizeof(DIR{}))))) != 0) {
+ __syscall1(tls, int64(57), int64(fd))
+ return uintptr(0)
+ }
+ (*DIR)(unsafe.Pointer(dir)).fd = fd
+ return dir
+}
+
+type max_align_t = struct {
+ __ll int64
+ __ld float64
+} /* alltypes.h:39:54 */
+
+type dirstream_buf_alignment_check = [1]uint8 /* readdir.c:7:14 */
+
+func Xreaddir(tls *TLS, dir uintptr) uintptr { /* readdir.c:10:15: */
+ var de uintptr
+
+ if (*DIR)(unsafe.Pointer(dir)).buf_pos >= (*DIR)(unsafe.Pointer(dir)).buf_end {
+ var len int32 = int32(__syscall3(tls, int64(61), int64((*DIR)(unsafe.Pointer(dir)).fd), int64(dir+24), int64(unsafe.Sizeof([2048]uint8{}))))
+ if len <= 0 {
+ if len < 0 && len != -2 {
+ *(*int32)(unsafe.Pointer(X___errno_location(tls))) = -len
+ }
+ return uintptr(0)
+ }
+ (*DIR)(unsafe.Pointer(dir)).buf_end = len
+ (*DIR)(unsafe.Pointer(dir)).buf_pos = 0
+ }
+ de = dir + 24 + uintptr((*DIR)(unsafe.Pointer(dir)).buf_pos)
+ *(*int32)(unsafe.Pointer(dir + 12)) += int32((*dirent)(unsafe.Pointer(de)).d_reclen)
+ (*DIR)(unsafe.Pointer(dir)).tell = (*dirent)(unsafe.Pointer(de)).d_off
+ return de
+}
+
+type uintptr_t = uint64 /* alltypes.h:53:24 */
+
+type int8_t = int8 /* alltypes.h:94:25 */
+
+type int16_t = int16 /* alltypes.h:99:25 */
+
+type int32_t = int32 /* alltypes.h:104:25 */
+
+type int64_t = int64 /* alltypes.h:109:25 */
+
+type intmax_t = int64 /* alltypes.h:114:25 */
+
+type uint8_t = uint8 /* alltypes.h:119:25 */
+
+type uintmax_t = uint64 /* alltypes.h:144:25 */
+
+type int_fast8_t = int8_t /* stdint.h:22:16 */
+type int_fast64_t = int64_t /* stdint.h:23:17 */
+
+type int_least8_t = int8_t /* stdint.h:25:17 */
+type int_least16_t = int16_t /* stdint.h:26:17 */
+type int_least32_t = int32_t /* stdint.h:27:17 */
+type int_least64_t = int64_t /* stdint.h:28:17 */
+
+type uint_fast8_t = uint8_t /* stdint.h:30:17 */
+type uint_fast64_t = uint64_t /* stdint.h:31:18 */
+
+type uint_least8_t = uint8_t /* stdint.h:33:18 */
+type uint_least16_t = uint16_t /* stdint.h:34:18 */
+type uint_least32_t = uint32_t /* stdint.h:35:18 */
+type uint_least64_t = uint64_t /* stdint.h:36:18 */
+
+type int_fast16_t = int32_t /* stdint.h:1:17 */
+type int_fast32_t = int32_t /* stdint.h:2:17 */
+type uint_fast16_t = uint32_t /* stdint.h:3:18 */
+type uint_fast32_t = uint32_t /* stdint.h:4:18 */
+
+type _IO_FILE = struct {
+ flags uint32
+ _ [4]byte
+ rpos uintptr
+ rend uintptr
+ close uintptr
+ wend uintptr
+ wpos uintptr
+ mustbezero_1 uintptr
+ wbase uintptr
+ read uintptr
+ write uintptr
+ seek uintptr
+ buf uintptr
+ buf_size size_t
+ prev uintptr
+ next uintptr
+ fd int32
+ pipe_pid int32
+ lockcount int64
+ mode int32
+ lock int32
+ lbf int32
+ _ [4]byte
+ cookie uintptr
+ off off_t
+ getln_buf uintptr
+ mustbezero_2 uintptr
+ shend uintptr
+ shlim off_t
+ shcnt off_t
+ prev_locked uintptr
+ next_locked uintptr
+ locale uintptr
+} /* alltypes.h:318:9 */
+
+type FILE = _IO_FILE /* alltypes.h:318:25 */
+
+type va_list = uintptr /* alltypes.h:324:27 */
+
+type _G_fpos64_t = struct {
+ _ [0]uint64
+ __opaque [16]uint8
+} /* stdio.h:54:9 */
+
+type fpos_t = _G_fpos64_t /* stdio.h:58:3 */
+
+type float_t = float32 /* alltypes.h:28:15 */
+
+type double_t = float64 /* alltypes.h:33:16 */
+
+func __FLOAT_BITS(tls *TLS, __f float32) uint32 { /* math.h:55:26: */
+ bp := tls.Alloc(4)
+ defer tls.Free(4)
+
+ // var __u struct {__f float32;} at bp, 4
+
+ *(*float32)(unsafe.Pointer(bp)) = __f
+ return *(*uint32)(unsafe.Pointer(bp))
+}
+
+func __DOUBLE_BITS(tls *TLS, __f float64) uint64 { /* math.h:61:36: */
+ bp := tls.Alloc(8)
+ defer tls.Free(8)
+
+ // var __u struct {__f float64;} at bp, 8
+
+ *(*float64)(unsafe.Pointer(bp)) = __f
+ return *(*uint64)(unsafe.Pointer(bp))
+}
+
+type __pthread = struct {
+ self uintptr
+ dtv uintptr
+ prev uintptr
+ next uintptr
+ sysinfo uintptr_t
+ canary uintptr_t
+ canary2 uintptr_t
+ tid int32
+ errno_val int32
+ detach_state int32
+ cancel int32
+ canceldisable uint8
+ cancelasync uint8
+ tsd_used uint8 /* unsigned char tsd_used: 1, unsigned char dlerror_flag: 1 */
+ _ [5]byte
+ map_base uintptr
+ map_size size_t
+ stack uintptr
+ stack_size size_t
+ guard_size size_t
+ result uintptr
+ cancelbuf uintptr
+ tsd uintptr
+ robust_list struct {
+ head uintptr
+ off int64
+ pending uintptr
+ }
+ timer_id int32
+ _ [4]byte
+ locale locale_t
+ killlock [1]int32
+ _ [4]byte
+ dlerror_buf uintptr
+ stdio_locks uintptr
+ canary_at_end uintptr_t
+ dtv_copy uintptr
+} /* alltypes.h:271:9 */
+
+func scanexp(tls *TLS, f uintptr, pok int32) int64 { /* floatscan.c:37:18: */
+ var c int32
+ var x int32
+ var y int64
+ var neg int32 = 0
+
+ c = func() int32 {
+ if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
+ return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
+ }
+ return X__shgetc(tls, f)
+ }()
+ if c == '+' || c == '-' {
+ neg = Bool32(c == '-')
+ c = func() int32 {
+ if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
+ return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
+ }
+ return X__shgetc(tls, f)
+ }()
+ if uint32(c-'0') >= 10 && pok != 0 {
+ if (*FILE)(unsafe.Pointer(f)).shlim >= int64(0) {
+ (*FILE)(unsafe.Pointer(f)).rpos--
+ } else {
+ }
+ }
+ }
+ if uint32(c-'0') >= 10 {
+ if (*FILE)(unsafe.Pointer(f)).shlim >= int64(0) {
+ (*FILE)(unsafe.Pointer(f)).rpos--
+ } else {
+ }
+ return -0x7fffffffffffffff - int64(1)
+ }
+ for x = 0; uint32(c-'0') < 10 && x < 0x7fffffff/10; c = func() int32 {
+ if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
+ return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
+ }
+ return X__shgetc(tls, f)
+ }() {
+ x = 10*x + c - '0'
+ }
+ for y = int64(x); uint32(c-'0') < 10 && y < 0x7fffffffffffffff/int64(100); c = func() int32 {
+ if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
+ return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
+ }
+ return X__shgetc(tls, f)
+ }() {
+ y = int64(10)*y + int64(c) - int64('0')
+ }
+ for ; uint32(c-'0') < 10; c = func() int32 {
+ if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
+ return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
+ }
+ return X__shgetc(tls, f)
+ }() {
+ }
+ if (*FILE)(unsafe.Pointer(f)).shlim >= int64(0) {
+ (*FILE)(unsafe.Pointer(f)).rpos--
+ } else {
+ }
+ if neg != 0 {
+ return -y
+ }
+ return y
+}
+
+func decfloat(tls *TLS, f uintptr, c int32, bits int32, emin int32, sign int32, pok int32) float64 { /* floatscan.c:64:20: */
+ bp := tls.Alloc(512)
+ defer tls.Free(512)
+
+ // var x [128]uint32_t at bp, 512
+
+ var i int32
+ var j int32
+ var k int32
+ var a int32
+ var z int32
+ var lrp int64 = int64(0)
+ var dc int64 = int64(0)
+ var e10 int64 = int64(0)
+ var lnz int32 = 0
+ var gotdig int32 = 0
+ var gotrad int32 = 0
+ var rp int32
+ var e2 int32
+ var emax int32 = -emin - bits + 3
+ var denormal int32 = 0
+ var y float64
+ var frac float64 = float64(0)
+ var bias float64 = float64(0)
+
+ j = 0
+ k = 0
+
+ // Don't let leading zeros consume buffer space
+ for ; c == '0'; c = func() int32 {
+ if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
+ return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
+ }
+ return X__shgetc(tls, f)
+ }() {
+ gotdig = 1
+ }
+ if c == '.' {
+ gotrad = 1
+ for c = func() int32 {
+ if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
+ return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
+ }
+ return X__shgetc(tls, f)
+ }(); c == '0'; c = func() int32 {
+ if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
+ return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
+ }
+ return X__shgetc(tls, f)
+ }() {
+ gotdig = 1
+ lrp--
+ }
+ }
+
+ *(*uint32_t)(unsafe.Pointer(bp)) = uint32_t(0)
+ for ; uint32(c-'0') < 10 || c == '.'; c = func() int32 {
+ if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
+ return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
+ }
+ return X__shgetc(tls, f)
+ }() {
+ if c == '.' {
+ if gotrad != 0 {
+ break
+ }
+ gotrad = 1
+ lrp = dc
+ } else if k < 128-3 {
+ dc++
+ if c != '0' {
+ lnz = int32(dc)
+ }
+ if j != 0 {
+ *(*uint32_t)(unsafe.Pointer(bp + uintptr(k)*4)) = *(*uint32_t)(unsafe.Pointer(bp + uintptr(k)*4))*uint32_t(10) + uint32_t(c) - uint32_t('0')
+ } else {
+ *(*uint32_t)(unsafe.Pointer(bp + uintptr(k)*4)) = uint32_t(c - '0')
+ }
+ if PreIncInt32(&j, 1) == 9 {
+ k++
+ j = 0
+ }
+ gotdig = 1
+ } else {
+ dc++
+ if c != '0' {
+ lnz = (128 - 4) * 9
+ *(*uint32_t)(unsafe.Pointer(bp + 124*4)) |= uint32_t(1)
+ }
+ }
+ }
+ if !(gotrad != 0) {
+ lrp = dc
+ }
+
+ if gotdig != 0 && c|32 == 'e' {
+ e10 = scanexp(tls, f, pok)
+ if e10 == -0x7fffffffffffffff-int64(1) {
+ if pok != 0 {
+ if (*FILE)(unsafe.Pointer(f)).shlim >= int64(0) {
+ (*FILE)(unsafe.Pointer(f)).rpos--
+ } else {
+ }
+ } else {
+ X__shlim(tls, f, int64(0))
+ return float64(0)
+ }
+ e10 = int64(0)
+ }
+ lrp = lrp + e10
+ } else if c >= 0 {
+ if (*FILE)(unsafe.Pointer(f)).shlim >= int64(0) {
+ (*FILE)(unsafe.Pointer(f)).rpos--
+ } else {
+ }
+ }
+ if !(gotdig != 0) {
+ *(*int32)(unsafe.Pointer(X___errno_location(tls))) = 22
+ X__shlim(tls, f, int64(0))
+ return float64(0)
+ }
+
+ // Handle zero specially to avoid nasty special cases later
+ if !(int32(*(*uint32_t)(unsafe.Pointer(bp))) != 0) {
+ return float64(sign) * 0.0
+ }
+
+ // Optimize small integers (w/no exponent) and over/under-flow
+ if lrp == dc && dc < int64(10) && (bits > 30 || *(*uint32_t)(unsafe.Pointer(bp))>>bits == uint32_t(0)) {
+ return float64(sign) * float64(*(*uint32_t)(unsafe.Pointer(bp)))
+ }
+ if lrp > int64(-emin/2) {
+ *(*int32)(unsafe.Pointer(X___errno_location(tls))) = 34
+ return float64(sign) * 1.79769313486231570815e+308 * 1.79769313486231570815e+308
+ }
+ if lrp < int64(emin-2*53) {
+ *(*int32)(unsafe.Pointer(X___errno_location(tls))) = 34
+ return float64(sign) * 2.22507385850720138309e-308 * 2.22507385850720138309e-308
+ }
+
+ // Align incomplete final B1B digit
+ if j != 0 {
+ for ; j < 9; j++ {
+ *(*uint32_t)(unsafe.Pointer(bp + uintptr(k)*4)) *= uint32_t(10)
+ }
+ k++
+ j = 0
+ }
+
+ a = 0
+ z = k
+ e2 = 0
+ rp = int32(lrp)
+
+ // Optimize small to mid-size integers (even in exp. notation)
+ if lnz < 9 && lnz <= rp && rp < 18 {
+ if rp == 9 {
+ return float64(sign) * float64(*(*uint32_t)(unsafe.Pointer(bp)))
+ }
+ if rp < 9 {
+ return float64(sign) * float64(*(*uint32_t)(unsafe.Pointer(bp))) / float64(_sp10s[8-rp])
+ }
+ var bitlim int32 = bits - 3*(rp-9)
+ if bitlim > 30 || *(*uint32_t)(unsafe.Pointer(bp))>>bitlim == uint32_t(0) {
+ return float64(sign) * float64(*(*uint32_t)(unsafe.Pointer(bp))) * float64(_sp10s[rp-10])
+ }
+ }
+
+ // Drop trailing zeros
+ for ; !(int32(*(*uint32_t)(unsafe.Pointer(bp + uintptr(z-1)*4))) != 0); z-- {
+ }
+
+ // Align radix point to B1B digit boundary
+ if rp%9 != 0 {
+ var rpm9 int32
+ if rp >= 0 {
+ rpm9 = rp % 9
+ } else {
+ rpm9 = rp%9 + 9
+ }
+ var p10 int32 = _sp10s[8-rpm9]
+ var carry uint32_t = uint32_t(0)
+ for k = a; k != z; k++ {
+ var tmp uint32_t = *(*uint32_t)(unsafe.Pointer(bp + uintptr(k)*4)) % uint32_t(p10)
+ *(*uint32_t)(unsafe.Pointer(bp + uintptr(k)*4)) = *(*uint32_t)(unsafe.Pointer(bp + uintptr(k)*4))/uint32_t(p10) + carry
+ carry = uint32_t(1000000000/p10) * tmp
+ if k == a && !(int32(*(*uint32_t)(unsafe.Pointer(bp + uintptr(k)*4))) != 0) {
+ a = (a + 1) & (128 - 1)
+ rp = rp - 9
+ }
+ }
+ if carry != 0 {
+ *(*uint32_t)(unsafe.Pointer(bp + uintptr(PostIncInt32(&z, 1))*4)) = carry
+ }
+ rp = rp + (9 - rpm9)
+ }
+
+ // Upscale until desired number of bits are left of radix point
+ for rp < 9*2 || rp == 9*2 && *(*uint32_t)(unsafe.Pointer(bp + uintptr(a)*4)) < _sth[0] {
+ var carry uint32_t = uint32_t(0)
+ e2 = e2 - 29
+ for k = (z - 1) & (128 - 1); ; k = (k - 1) & (128 - 1) {
+ var tmp uint64_t = uint64_t(*(*uint32_t)(unsafe.Pointer(bp + uintptr(k)*4)))<<29 + uint64_t(carry)
+ if tmp > uint64(1000000000) {
+ carry = uint32_t(tmp / uint64(1000000000))
+ *(*uint32_t)(unsafe.Pointer(bp + uintptr(k)*4)) = uint32_t(tmp % uint64(1000000000))
+ } else {
+ carry = uint32_t(0)
+ *(*uint32_t)(unsafe.Pointer(bp + uintptr(k)*4)) = uint32_t(tmp)
+ }
+ if k == (z-1)&(128-1) && k != a && !(int32(*(*uint32_t)(unsafe.Pointer(bp + uintptr(k)*4))) != 0) {
+ z = k
+ }
+ if k == a {
+ break
+ }
+ }
+ if carry != 0 {
+ rp = rp + 9
+ a = (a - 1) & (128 - 1)
+ if a == z {
+ z = (z - 1) & (128 - 1)
+ *(*uint32_t)(unsafe.Pointer(bp + uintptr((z-1)&(128-1))*4)) |= *(*uint32_t)(unsafe.Pointer(bp + uintptr(z)*4))
+ }
+ *(*uint32_t)(unsafe.Pointer(bp + uintptr(a)*4)) = carry
+ }
+ }
+
+ // Downscale until exactly number of bits are left of radix point
+ for {
+ var carry uint32_t = uint32_t(0)
+ var sh int32 = 1
+ for i = 0; i < 2; i++ {
+ k = (a + i) & (128 - 1)
+ if k == z || *(*uint32_t)(unsafe.Pointer(bp + uintptr(k)*4)) < _sth[i] {
+ i = 2
+ break
+ }
+ if *(*uint32_t)(unsafe.Pointer(bp + uintptr((a+i)&(128-1))*4)) > _sth[i] {
+ break
+ }
+ }
+ if i == 2 && rp == 9*2 {
+ break
+ }
+ // FIXME: find a way to compute optimal sh
+ if rp > 9+9*2 {
+ sh = 9
+ }
+ e2 = e2 + sh
+ for k = a; k != z; k = (k + 1) & (128 - 1) {
+ var tmp uint32_t = *(*uint32_t)(unsafe.Pointer(bp + uintptr(k)*4)) & uint32_t(int32(1)<<sh-1)
+ *(*uint32_t)(unsafe.Pointer(bp + uintptr(k)*4)) = *(*uint32_t)(unsafe.Pointer(bp + uintptr(k)*4))>>sh + carry
+ carry = uint32_t(int32(1000000000)>>sh) * tmp
+ if k == a && !(int32(*(*uint32_t)(unsafe.Pointer(bp + uintptr(k)*4))) != 0) {
+ a = (a + 1) & (128 - 1)
+ i--
+ rp = rp - 9
+ }
+ }
+ if carry != 0 {
+ if (z+1)&(128-1) != a {
+ *(*uint32_t)(unsafe.Pointer(bp + uintptr(z)*4)) = carry
+ z = (z + 1) & (128 - 1)
+ } else {
+ *(*uint32_t)(unsafe.Pointer(bp + uintptr((z-1)&(128-1))*4)) |= uint32_t(1)
+ }
+ }
+ }
+
+ // Assemble desired bits into floating point variable
+ for y = float64(AssignInt32(&i, 0)); i < 2; i++ {
+ if (a+i)&(128-1) == z {
+ *(*uint32_t)(unsafe.Pointer(bp + uintptr(AssignInt32(&z, (z+1)&(128-1))-1)*4)) = uint32_t(0)
+ }
+ y = 1000000000.0*y + float64(*(*uint32_t)(unsafe.Pointer(bp + uintptr((a+i)&(128-1))*4)))
+ }
+
+ y = y * float64(sign)
+
+ // Limit precision for denormal results
+ if bits > 53+e2-emin {
+ bits = 53 + e2 - emin
+ if bits < 0 {
+ bits = 0
+ }
+ denormal = 1
+ }
+
+ // Calculate bias term to force rounding, move out lower bits
+ if bits < 53 {
+ bias = Xcopysignl(tls, Xscalbn(tls, float64(1), 2*53-bits-1), y)
+ frac = Xfmodl(tls, y, Xscalbn(tls, float64(1), 53-bits))
+ y = y - frac
+ y = y + bias
+ }
+
+ // Process tail of decimal input so it can affect rounding
+ if (a+i)&(128-1) != z {
+ var t uint32_t = *(*uint32_t)(unsafe.Pointer(bp + uintptr((a+i)&(128-1))*4))
+ if t < uint32_t(500000000) && (t != 0 || (a+i+1)&(128-1) != z) {
+ frac = frac + 0.25*float64(sign)
+ } else if t > uint32_t(500000000) {
+ frac = frac + 0.75*float64(sign)
+ } else if t == uint32_t(500000000) {
+ if (a+i+1)&(128-1) == z {
+ frac = frac + 0.5*float64(sign)
+ } else {
+ frac = frac + 0.75*float64(sign)
+ }
+ }
+ if 53-bits >= 2 && !(Xfmodl(tls, frac, float64(1)) != 0) {
+ frac += 1
+ }
+ }
+
+ y = y + frac
+ y = y - bias
+
+ if (e2+53)&0x7fffffff > emax-5 {
+ if Xfabsl(tls, y) >= float64(float64(2))/2.22044604925031308085e-16 {
+ if denormal != 0 && bits == 53+e2-emin {
+ denormal = 0
+ }
+ y = y * 0.5
+ e2++
+ }
+ if e2+53 > emax || denormal != 0 && frac != 0 {
+ *(*int32)(unsafe.Pointer(X___errno_location(tls))) = 34
+ }
+ }
+
+ return Xscalbnl(tls, y, e2)
+}
+
+var _sth = [2]uint32_t{uint32_t(9007199), uint32_t(254740991)} /* floatscan.c:67:24 */
+var _sp10s = [8]int32{10, 100, 1000, 10000,
+ 100000, 1000000, 10000000, 100000000} /* floatscan.c:80:19 */
+
+func hexfloat(tls *TLS, f uintptr, bits int32, emin int32, sign int32, pok int32) float64 { /* floatscan.c:315:20: */
+ var x uint32_t = uint32_t(0)
+ var y float64 = float64(0)
+ var scale float64 = float64(1)
+ var bias float64 = float64(0)
+ var gottail int32 = 0
+ var gotrad int32 = 0
+ var gotdig int32 = 0
+ var rp int64 = int64(0)
+ var dc int64 = int64(0)
+ var e2 int64 = int64(0)
+ var d int32
+ var c int32
+
+ c = func() int32 {
+ if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
+ return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
+ }
+ return X__shgetc(tls, f)
+ }()
+
+ // Skip leading zeros
+ for ; c == '0'; c = func() int32 {
+ if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
+ return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
+ }
+ return X__shgetc(tls, f)
+ }() {
+ gotdig = 1
+ }
+
+ if c == '.' {
+ gotrad = 1
+ c = func() int32 {
+ if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
+ return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
+ }
+ return X__shgetc(tls, f)
+ }()
+ // Count zeros after the radix point before significand
+ rp = int64(0)
+ __1:
+ if !(c == '0') {
+ goto __3
+ }
+ gotdig = 1
+ goto __2
+ __2:
+ c = func() int32 {
+ if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
+ return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
+ }
+ return X__shgetc(tls, f)
+ }()
+ rp--
+ goto __1
+ goto __3
+ __3:
+ }
+
+ for ; uint32(c-'0') < 10 || uint32(c|32-'a') < 6 || c == '.'; c = func() int32 {
+ if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
+ return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
+ }
+ return X__shgetc(tls, f)
+ }() {
+ if c == '.' {
+ if gotrad != 0 {
+ break
+ }
+ rp = dc
+ gotrad = 1
+ } else {
+ gotdig = 1
+ if c > '9' {
+ d = c | 32 + 10 - 'a'
+ } else {
+ d = c - '0'
+ }
+ if dc < int64(8) {
+ x = x*uint32_t(16) + uint32_t(d)
+ } else if dc < int64(53/4+1) {
+ y = y + float64(d)*AssignDivFloat64(&scale, float64(16))
+ } else if d != 0 && !(gottail != 0) {
+ y = y + 0.5*scale
+ gottail = 1
+ }
+ dc++
+ }
+ }
+ if !(gotdig != 0) {
+ if (*FILE)(unsafe.Pointer(f)).shlim >= int64(0) {
+ (*FILE)(unsafe.Pointer(f)).rpos--
+ } else {
+ }
+ if pok != 0 {
+ if (*FILE)(unsafe.Pointer(f)).shlim >= int64(0) {
+ (*FILE)(unsafe.Pointer(f)).rpos--
+ } else {
+ }
+ if gotrad != 0 {
+ if (*FILE)(unsafe.Pointer(f)).shlim >= int64(0) {
+ (*FILE)(unsafe.Pointer(f)).rpos--
+ } else {
+ }
+ }
+ } else {
+ X__shlim(tls, f, int64(0))
+ }
+ return float64(sign) * 0.0
+ }
+ if !(gotrad != 0) {
+ rp = dc
+ }
+ for dc < int64(8) {
+ x = x * uint32_t(16)
+ dc++
+ }
+ if c|32 == 'p' {
+ e2 = scanexp(tls, f, pok)
+ if e2 == -0x7fffffffffffffff-int64(1) {
+ if pok != 0 {
+ if (*FILE)(unsafe.Pointer(f)).shlim >= int64(0) {
+ (*FILE)(unsafe.Pointer(f)).rpos--
+ } else {
+ }
+ } else {
+ X__shlim(tls, f, int64(0))
+ return float64(0)
+ }
+ e2 = int64(0)
+ }
+ } else {
+ if (*FILE)(unsafe.Pointer(f)).shlim >= int64(0) {
+ (*FILE)(unsafe.Pointer(f)).rpos--
+ } else {
+ }
+ }
+ e2 = e2 + (int64(4)*rp - int64(32))
+
+ if !(x != 0) {
+ return float64(sign) * 0.0
+ }
+ if e2 > int64(-emin) {
+ *(*int32)(unsafe.Pointer(X___errno_location(tls))) = 34
+ return float64(sign) * 1.79769313486231570815e+308 * 1.79769313486231570815e+308
+ }
+ if e2 < int64(emin-2*53) {
+ *(*int32)(unsafe.Pointer(X___errno_location(tls))) = 34
+ return float64(sign) * 2.22507385850720138309e-308 * 2.22507385850720138309e-308
+ }
+
+ for x < 0x80000000 {
+ if y >= 0.5 {
+ x = x + (x + uint32_t(1))
+ y = y + (y - float64(1))
+ } else {
+ x = x + x
+ y = y + y
+ }
+ e2--
+ }
+
+ if int64(bits) > int64(32)+e2-int64(emin) {
+ bits = int32(int64(32) + e2 - int64(emin))
+ if bits < 0 {
+ bits = 0
+ }
+ }
+
+ if bits < 53 {
+ bias = Xcopysignl(tls, Xscalbn(tls, float64(1), 32+53-bits-1), float64(sign))
+ }
+
+ if bits < 32 && y != 0 && !(x&uint32_t(1) != 0) {
+ x++
+ y = float64(0)
+ }
+
+ y = bias + float64(sign)*float64(x) + float64(sign)*y
+ y = y - bias
+
+ if !(y != 0) {
+ *(*int32)(unsafe.Pointer(X___errno_location(tls))) = 34
+ }
+
+ return Xscalbnl(tls, y, int32(e2))
+}
+
+func X__floatscan(tls *TLS, f uintptr, prec int32, pok int32) float64 { /* floatscan.c:427:13: */
+ var sign int32 = 1
+ var i size_t
+ var bits int32
+ var emin int32
+ var c int32
+
+ switch prec {
+ case 0:
+ bits = 24
+ emin = -125 - bits
+ break
+ case 1:
+ bits = 53
+ emin = -1021 - bits
+ break
+ case 2:
+ bits = 53
+ emin = -1021 - bits
+ break
+ default:
+ return float64(0)
+ }
+
+ for __isspace(tls, AssignInt32(&c, func() int32 {
+ if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
+ return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
+ }
+ return X__shgetc(tls, f)
+ }())) != 0 {
+ }
+
+ if c == '+' || c == '-' {
+ sign = sign - 2*Bool32(c == '-')
+ c = func() int32 {
+ if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
+ return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
+ }
+ return X__shgetc(tls, f)
+ }()
+ }
+
+ for i = uint64(0); i < uint64(8) && c|32 == int32(*(*uint8)(unsafe.Pointer(ts /* "infinity" */ + uintptr(i)))); i++ {
+ if i < uint64(7) {
+ c = func() int32 {
+ if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
+ return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
+ }
+ return X__shgetc(tls, f)
+ }()
+ }
+ }
+ if i == uint64(3) || i == uint64(8) || i > uint64(3) && pok != 0 {
+ if i != uint64(8) {
+ if (*FILE)(unsafe.Pointer(f)).shlim >= int64(0) {
+ (*FILE)(unsafe.Pointer(f)).rpos--
+ } else {
+ }
+ if pok != 0 {
+ for ; i > uint64(3); i-- {
+ if (*FILE)(unsafe.Pointer(f)).shlim >= int64(0) {
+ (*FILE)(unsafe.Pointer(f)).rpos--
+ } else {
+ }
+ }
+ }
+ }
+ return float64(float32(sign) * X__builtin_inff(tls))
+ }
+ if !(i != 0) {
+ for i = uint64(0); i < uint64(3) && c|32 == int32(*(*uint8)(unsafe.Pointer(ts + 9 /* "nan" */ + uintptr(i)))); i++ {
+ if i < uint64(2) {
+ c = func() int32 {
+ if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
+ return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
+ }
+ return X__shgetc(tls, f)
+ }()
+ }
+ }
+ }
+ if i == uint64(3) {
+ if func() int32 {
+ if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
+ return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
+ }
+ return X__shgetc(tls, f)
+ }() != '(' {
+ if (*FILE)(unsafe.Pointer(f)).shlim >= int64(0) {
+ (*FILE)(unsafe.Pointer(f)).rpos--
+ } else {
+ }
+ return float64(X__builtin_nanf(tls, ts+13))
+ }
+ for i = uint64(1); ; i++ {
+ c = func() int32 {
+ if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
+ return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
+ }
+ return X__shgetc(tls, f)
+ }()
+ if uint32(c-'0') < 10 || uint32(c-'A') < 26 || uint32(c-'a') < 26 || c == '_' {
+ continue
+ }
+ if c == ')' {
+ return float64(X__builtin_nanf(tls, ts+13))
+ }
+ if (*FILE)(unsafe.Pointer(f)).shlim >= int64(0) {
+ (*FILE)(unsafe.Pointer(f)).rpos--
+ } else {
+ }
+ if !(pok != 0) {
+ *(*int32)(unsafe.Pointer(X___errno_location(tls))) = 22
+ X__shlim(tls, f, int64(0))
+ return float64(0)
+ }
+ for PostDecUint64(&i, 1) != 0 {
+ if (*FILE)(unsafe.Pointer(f)).shlim >= int64(0) {
+ (*FILE)(unsafe.Pointer(f)).rpos--
+ } else {
+ }
+ }
+ return float64(X__builtin_nanf(tls, ts+13))
+ }
+ return float64(X__builtin_nanf(tls, ts+13))
+ }
+
+ if i != 0 {
+ if (*FILE)(unsafe.Pointer(f)).shlim >= int64(0) {
+ (*FILE)(unsafe.Pointer(f)).rpos--
+ } else {
+ }
+ *(*int32)(unsafe.Pointer(X___errno_location(tls))) = 22
+ X__shlim(tls, f, int64(0))
+ return float64(0)
+ }
+
+ if c == '0' {
+ c = func() int32 {
+ if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
+ return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
+ }
+ return X__shgetc(tls, f)
+ }()
+ if c|32 == 'x' {
+ return hexfloat(tls, f, bits, emin, sign, pok)
+ }
+ if (*FILE)(unsafe.Pointer(f)).shlim >= int64(0) {
+ (*FILE)(unsafe.Pointer(f)).rpos--
+ } else {
+ }
+ c = '0'
+ }
+
+ return decfloat(tls, f, c, bits, emin, sign, pok)
+}
+
+// Lookup table for digit values. -1==255>=36 -> invalid
+var table1 = [257]uint8{Uint8FromInt32(-1),
+ Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1),
+ Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1),
+ Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1),
+ uint8(0), uint8(1), uint8(2), uint8(3), uint8(4), uint8(5), uint8(6), uint8(7), uint8(8), uint8(9), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1),
+ Uint8FromInt32(-1), uint8(10), uint8(11), uint8(12), uint8(13), uint8(14), uint8(15), uint8(16), uint8(17), uint8(18), uint8(19), uint8(20), uint8(21), uint8(22), uint8(23), uint8(24),
+ uint8(25), uint8(26), uint8(27), uint8(28), uint8(29), uint8(30), uint8(31), uint8(32), uint8(33), uint8(34), uint8(35), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1),
+ Uint8FromInt32(-1), uint8(10), uint8(11), uint8(12), uint8(13), uint8(14), uint8(15), uint8(16), uint8(17), uint8(18), uint8(19), uint8(20), uint8(21), uint8(22), uint8(23), uint8(24),
+ uint8(25), uint8(26), uint8(27), uint8(28), uint8(29), uint8(30), uint8(31), uint8(32), uint8(33), uint8(34), uint8(35), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1),
+ Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1),
+ Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1),
+ Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1),
+ Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1),
+ Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1),
+ Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1),
+ Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1),
+ Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1),
+} /* intscan.c:7:28 */
+
+func X__intscan(tls *TLS, f uintptr, base uint32, pok int32, lim uint64) uint64 { /* intscan.c:26:20: */
+ var val uintptr
+ var c int32
+ var neg int32
+ var x uint32
+ var y uint64
+ var bs int32
+ val = uintptr(unsafe.Pointer(&table1)) + uintptr(1)
+ neg = 0
+ if !(base > uint32(36) || base == uint32(1)) {
+ goto __1
+ }
+ *(*int32)(unsafe.Pointer(X___errno_location(tls))) = 22
+ return uint64(0)
+__1:
+ ;
+__2:
+ if !(__isspace(tls, AssignInt32(&c, func() int32 {
+ if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
+ return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
+ }
+ return X__shgetc(tls, f)
+ }())) != 0) {
+ goto __3
+ }
+ goto __2
+__3:
+ ;
+ if !(c == '+' || c == '-') {
+ goto __4
+ }
+ neg = -Bool32(c == '-')
+ c = func() int32 {
+ if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
+ return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
+ }
+ return X__shgetc(tls, f)
+ }()
+__4:
+ ;
+ if !((base == uint32(0) || base == uint32(16)) && c == '0') {
+ goto __5
+ }
+ c = func() int32 {
+ if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
+ return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
+ }
+ return X__shgetc(tls, f)
+ }()
+ if !(c|32 == 'x') {
+ goto __7
+ }
+ c = func() int32 {
+ if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
+ return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
+ }
+ return X__shgetc(tls, f)
+ }()
+ if !(int32(*(*uint8)(unsafe.Pointer(val + uintptr(c)))) >= 16) {
+ goto __9
+ }
+ if (*FILE)(unsafe.Pointer(f)).shlim >= int64(0) {
+ (*FILE)(unsafe.Pointer(f)).rpos--
+ } else {
+ }
+ if !(pok != 0) {
+ goto __10
+ }
+ if (*FILE)(unsafe.Pointer(f)).shlim >= int64(0) {
+ (*FILE)(unsafe.Pointer(f)).rpos--
+ } else {
+ }
+ goto __11
+__10:
+ X__shlim(tls, f, int64(0))
+__11:
+ ;
+ return uint64(0)
+__9:
+ ;
+ base = uint32(16)
+ goto __8
+__7:
+ if !(base == uint32(0)) {
+ goto __12
+ }
+ base = uint32(8)
+__12:
+ ;
+__8:
+ ;
+ goto __6
+__5:
+ if !(base == uint32(0)) {
+ goto __13
+ }
+ base = uint32(10)
+__13:
+ ;
+ if !(uint32(*(*uint8)(unsafe.Pointer(val + uintptr(c)))) >= base) {
+ goto __14
+ }
+ if (*FILE)(unsafe.Pointer(f)).shlim >= int64(0) {
+ (*FILE)(unsafe.Pointer(f)).rpos--
+ } else {
+ }
+ X__shlim(tls, f, int64(0))
+ *(*int32)(unsafe.Pointer(X___errno_location(tls))) = 22
+ return uint64(0)
+__14:
+ ;
+__6:
+ ;
+ if !(base == uint32(10)) {
+ goto __15
+ }
+ x = uint32(0)
+__17:
+ if !(uint32(c-'0') < 10 && x <= 0xffffffff/uint32(10)-uint32(1)) {
+ goto __19
+ }
+ x = x*uint32(10) + uint32(c-'0')
+ goto __18
+__18:
+ c = func() int32 {
+ if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
+ return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
+ }
+ return X__shgetc(tls, f)
+ }()
+ goto __17
+ goto __19
+__19:
+ ;
+ y = uint64(x)
+__20:
+ if !(uint32(c-'0') < 10 && y <= (2*uint64(0x7fffffffffffffff)+uint64(1))/uint64(10) && uint64(10)*y <= 2*uint64(0x7fffffffffffffff)+uint64(1)-uint64(c-'0')) {
+ goto __22
+ }
+ y = y*uint64(10) + uint64(c-'0')
+ goto __21
+__21:
+ c = func() int32 {
+ if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
+ return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
+ }
+ return X__shgetc(tls, f)
+ }()
+ goto __20
+ goto __22
+__22:
+ ;
+ if !(uint32(c-'0') >= 10) {
+ goto __23
+ }
+ goto done
+__23:
+ ;
+ goto __16
+__15:
+ if !!(base&(base-uint32(1)) != 0) {
+ goto __24
+ }
+ bs = int32(*(*uint8)(unsafe.Pointer(ts + 14 + uintptr(uint32(0x17)*base>>5&uint32(7)))))
+ x = uint32(0)
+__26:
+ if !(uint32(*(*uint8)(unsafe.Pointer(val + uintptr(c)))) < base && x <= 0xffffffff/uint32(32)) {
+ goto __28
+ }
+ x = x<<bs | uint32(*(*uint8)(unsafe.Pointer(val + uintptr(c))))
+ goto __27
+__27:
+ c = func() int32 {
+ if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
+ return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
+ }
+ return X__shgetc(tls, f)
+ }()
+ goto __26
+ goto __28
+__28:
+ ;
+ y = uint64(x)
+__29:
+ if !(uint32(*(*uint8)(unsafe.Pointer(val + uintptr(c)))) < base && y <= uint64(2*uint64(0x7fffffffffffffff)+uint64(1))>>bs) {
+ goto __31
+ }
+ y = y<<bs | uint64(*(*uint8)(unsafe.Pointer(val + uintptr(c))))
+ goto __30
+__30:
+ c = func() int32 {
+ if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
+ return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
+ }
+ return X__shgetc(tls, f)
+ }()
+ goto __29
+ goto __31
+__31:
+ ;
+ goto __25
+__24:
+ x = uint32(0)
+__32:
+ if !(uint32(*(*uint8)(unsafe.Pointer(val + uintptr(c)))) < base && x <= 0xffffffff/uint32(36)-uint32(1)) {
+ goto __34
+ }
+ x = x*base + uint32(*(*uint8)(unsafe.Pointer(val + uintptr(c))))
+ goto __33
+__33:
+ c = func() int32 {
+ if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
+ return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
+ }
+ return X__shgetc(tls, f)
+ }()
+ goto __32
+ goto __34
+__34:
+ ;
+ y = uint64(x)
+__35:
+ if !(uint32(*(*uint8)(unsafe.Pointer(val + uintptr(c)))) < base && y <= (2*uint64(0x7fffffffffffffff)+uint64(1))/uint64(base) && uint64(base)*y <= 2*uint64(0x7fffffffffffffff)+uint64(1)-uint64(*(*uint8)(unsafe.Pointer(val + uintptr(c))))) {
+ goto __37
+ }
+ y = y*uint64(base) + uint64(*(*uint8)(unsafe.Pointer(val + uintptr(c))))
+ goto __36
+__36:
+ c = func() int32 {
+ if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
+ return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
+ }
+ return X__shgetc(tls, f)
+ }()
+ goto __35
+ goto __37
+__37:
+ ;
+__25:
+ ;
+__16:
+ ;
+ if !(uint32(*(*uint8)(unsafe.Pointer(val + uintptr(c)))) < base) {
+ goto __38
+ }
+__39:
+ if !(uint32(*(*uint8)(unsafe.Pointer(val + uintptr(c)))) < base) {
+ goto __41
+ }
+ goto __40
+__40:
+ c = func() int32 {
+ if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
+ return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
+ }
+ return X__shgetc(tls, f)
+ }()
+ goto __39
+ goto __41
+__41:
+ ;
+ *(*int32)(unsafe.Pointer(X___errno_location(tls))) = 34
+ y = lim
+ if !(lim&uint64(1) != 0) {
+ goto __42
+ }
+ neg = 0
+__42:
+ ;
+__38:
+ ;
+done:
+ if (*FILE)(unsafe.Pointer(f)).shlim >= int64(0) {
+ (*FILE)(unsafe.Pointer(f)).rpos--
+ } else {
+ }
+ if !(y >= lim) {
+ goto __43
+ }
+ if !(!(lim&uint64(1) != 0) && !(neg != 0)) {
+ goto __44
+ }
+ *(*int32)(unsafe.Pointer(X___errno_location(tls))) = 34
+ return lim - uint64(1)
+ goto __45
+__44:
+ if !(y > lim) {
+ goto __46
+ }
+ *(*int32)(unsafe.Pointer(X___errno_location(tls))) = 34
+ return lim
+__46:
+ ;
+__45:
+ ;
+__43:
+ ;
+ return y ^ uint64(neg) - uint64(neg)
+}
+
+// The shcnt field stores the number of bytes read so far, offset by
+// the value of buf-rpos at the last function call (__shlim or __shgetc),
+// so that between calls the inline shcnt macro can add rpos-buf to get
+// the actual count.
+
+func X__shlim(tls *TLS, f uintptr, lim off_t) { /* shgetc.c:8:6: */
+ (*FILE)(unsafe.Pointer(f)).shlim = lim
+ (*FILE)(unsafe.Pointer(f)).shcnt = (int64((*FILE)(unsafe.Pointer(f)).buf) - int64((*FILE)(unsafe.Pointer(f)).rpos)) / 1
+ // If lim is nonzero, rend must be a valid pointer.
+ if lim != 0 && (int64((*FILE)(unsafe.Pointer(f)).rend)-int64((*FILE)(unsafe.Pointer(f)).rpos))/1 > lim {
+ (*FILE)(unsafe.Pointer(f)).shend = (*FILE)(unsafe.Pointer(f)).rpos + uintptr(lim)
+ } else {
+ (*FILE)(unsafe.Pointer(f)).shend = (*FILE)(unsafe.Pointer(f)).rend
+ }
+}
+
+func X__shgetc(tls *TLS, f uintptr) int32 { /* shgetc.c:19:5: */
+ var c int32
+ var cnt off_t = (*FILE)(unsafe.Pointer(f)).shcnt + (int64((*FILE)(unsafe.Pointer(f)).rpos)-int64((*FILE)(unsafe.Pointer(f)).buf))/1
+ if (*FILE)(unsafe.Pointer(f)).shlim != 0 && cnt >= (*FILE)(unsafe.Pointer(f)).shlim || AssignInt32(&c, X__uflow(tls, f)) < 0 {
+ (*FILE)(unsafe.Pointer(f)).shcnt = (int64((*FILE)(unsafe.Pointer(f)).buf)-int64((*FILE)(unsafe.Pointer(f)).rpos))/1 + cnt
+ (*FILE)(unsafe.Pointer(f)).shend = (*FILE)(unsafe.Pointer(f)).rpos
+ (*FILE)(unsafe.Pointer(f)).shlim = int64(-1)
+ return -1
+ }
+ cnt++
+ if (*FILE)(unsafe.Pointer(f)).shlim != 0 && (int64((*FILE)(unsafe.Pointer(f)).rend)-int64((*FILE)(unsafe.Pointer(f)).rpos))/1 > (*FILE)(unsafe.Pointer(f)).shlim-cnt {
+ (*FILE)(unsafe.Pointer(f)).shend = (*FILE)(unsafe.Pointer(f)).rpos + uintptr((*FILE)(unsafe.Pointer(f)).shlim-cnt)
+ } else {
+ (*FILE)(unsafe.Pointer(f)).shend = (*FILE)(unsafe.Pointer(f)).rend
+ }
+ (*FILE)(unsafe.Pointer(f)).shcnt = (int64((*FILE)(unsafe.Pointer(f)).buf)-int64((*FILE)(unsafe.Pointer(f)).rpos))/1 + cnt
+ if (*FILE)(unsafe.Pointer(f)).rpos <= (*FILE)(unsafe.Pointer(f)).buf {
+ *(*uint8)(unsafe.Pointer((*FILE)(unsafe.Pointer(f)).rpos + UintptrFromInt32(-1))) = uint8(c)
+ }
+ return c
+}
+
+type lconv = struct {
+ decimal_point uintptr
+ thousands_sep uintptr
+ grouping uintptr
+ int_curr_symbol uintptr
+ currency_symbol uintptr
+ mon_decimal_point uintptr
+ mon_thousands_sep uintptr
+ mon_grouping uintptr
+ positive_sign uintptr
+ negative_sign uintptr
+ int_frac_digits uint8
+ frac_digits uint8
+ p_cs_precedes uint8
+ p_sep_by_space uint8
+ n_cs_precedes uint8
+ n_sep_by_space uint8
+ p_sign_posn uint8
+ n_sign_posn uint8
+ int_p_cs_precedes uint8
+ int_p_sep_by_space uint8
+ int_n_cs_precedes uint8
+ int_n_sep_by_space uint8
+ int_p_sign_posn uint8
+ int_n_sign_posn uint8
+ _ [2]byte
+} /* locale.h:24:1 */
+
+// Support signed or unsigned plain-char
+
+// Implementation choices...
+
+// Arbitrary numbers...
+
+// POSIX/SUS requirements follow. These numbers come directly
+// from SUS and have nothing to do with the host system.
+
+var posix_lconv = lconv{decimal_point: ts + 23, thousands_sep: ts + 13, grouping: ts + 13, int_curr_symbol: ts + 13, currency_symbol: ts + 13, mon_decimal_point: ts + 13, mon_thousands_sep: ts + 13, mon_grouping: ts + 13, positive_sign: ts + 13, negative_sign: ts + 13, int_frac_digits: uint8(255), frac_digits: uint8(255), p_cs_precedes: uint8(255), p_sep_by_space: uint8(255), n_cs_precedes: uint8(255), n_sep_by_space: uint8(255), p_sign_posn: uint8(255), n_sign_posn: uint8(255), int_p_cs_precedes: uint8(255), int_p_sep_by_space: uint8(255), int_n_cs_precedes: uint8(255), int_n_sep_by_space: uint8(255), int_p_sign_posn: uint8(255), int_n_sign_posn: uint8(255)} /* localeconv.c:4:27 */
+
+func Xlocaleconv(tls *TLS) uintptr { /* localeconv.c:31:14: */
+ return uintptr(unsafe.Pointer(&posix_lconv))
+}
+
+func X__fpclassify(tls *TLS, x float64) int32 { /* __fpclassify.c:4:5: */
+ bp := tls.Alloc(8)
+ defer tls.Free(8)
+
+ *(*struct{ f float64 })(unsafe.Pointer(bp)) = func() (r struct{ f float64 }) {
+ *(*float64)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = x
+ return r
+ }()
+ var e int32 = int32(*(*uint64_t)(unsafe.Pointer(bp)) >> 52 & uint64(0x7ff))
+ if !(e != 0) {
+ if *(*uint64_t)(unsafe.Pointer(bp))<<1 != 0 {
+ return 3
+ }
+ return 2
+ }
+ if e == 0x7ff {
+ if *(*uint64_t)(unsafe.Pointer(bp))<<12 != 0 {
+ return 0
+ }
+ return 1
+ }
+ return 4
+}
+
+func X__fpclassifyf(tls *TLS, x float32) int32 { /* __fpclassifyf.c:4:5: */
+ bp := tls.Alloc(4)
+ defer tls.Free(4)
+
+ *(*struct{ f float32 })(unsafe.Pointer(bp)) = func() (r struct{ f float32 }) {
+ *(*float32)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = x
+ return r
+ }()
+ var e int32 = int32(*(*uint32_t)(unsafe.Pointer(bp)) >> 23 & uint32_t(0xff))
+ if !(e != 0) {
+ if *(*uint32_t)(unsafe.Pointer(bp))<<1 != 0 {
+ return 3
+ }
+ return 2
+ }
+ if e == 0xff {
+ if *(*uint32_t)(unsafe.Pointer(bp))<<9 != 0 {
+ return 0
+ }
+ return 1
+ }
+ return 4
+}
+
+func X__fpclassifyl(tls *TLS, x float64) int32 { /* __fpclassifyl.c:4:5: */
+ return X__fpclassify(tls, x)
+}
+
+func Xcopysignl(tls *TLS, x float64, y float64) float64 { /* copysignl.c:4:13: */
+ return Xcopysign(tls, x, y)
+}
+
+func Xfabsl(tls *TLS, x float64) float64 { /* fabsl.c:3:13: */
+ return Xfabs(tls, x)
+}
+
+func Xfmodl(tls *TLS, x float64, y float64) float64 { /* fmodl.c:4:13: */
+ return Xfmod(tls, x, y)
+}
+
+func Xnanf(tls *TLS, s uintptr) float32 { /* nanf.c:3:7: */
+ return X__builtin_nanf(tls, ts+13)
+}
+
+var toint double_t = float64(float64(1)) / 2.22044604925031308085e-16 /* rint.c:10:23 */
+
+func Xrint(tls *TLS, x float64) float64 { /* rint.c:12:8: */
+ bp := tls.Alloc(8)
+ defer tls.Free(8)
+
+ *(*struct{ f float64 })(unsafe.Pointer(bp)) = func() (r struct{ f float64 }) {
+ *(*float64)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = x
+ return r
+ }()
+ var e int32 = int32(*(*uint64_t)(unsafe.Pointer(bp)) >> 52 & uint64(0x7ff))
+ var s int32 = int32(*(*uint64_t)(unsafe.Pointer(bp)) >> 63)
+ var y double_t
+
+ if e >= 0x3ff+52 {
+ return x
+ }
+ if s != 0 {
+ y = x - toint + toint
+ } else {
+ y = x + toint - toint
+ }
+ if y == float64(0) {
+ if s != 0 {
+ return -Float64FromFloat64(0.0)
+ }
+ return float64(0)
+ }
+ return y
+}
+
+func Xscalbn(tls *TLS, x float64, n int32) float64 { /* scalbn.c:4:8: */
+ bp := tls.Alloc(8)
+ defer tls.Free(8)
+
+ // var u struct {f float64;} at bp, 8
+
+ var y double_t = x
+
+ if n > 1023 {
+ y = y * 0x1p1023
+ n = n - 1023
+ if n > 1023 {
+ y = y * 0x1p1023
+ n = n - 1023
+ if n > 1023 {
+ n = 1023
+ }
+ }
+ } else if n < -1022 {
+ // make sure final n < -53 to avoid double
+ // rounding in the subnormal range
+ y = y * (float64(0x1p-1022) * 0x1p53)
+ n = n + (1022 - 53)
+ if n < -1022 {
+ y = y * (float64(0x1p-1022) * 0x1p53)
+ n = n + (1022 - 53)
+ if n < -1022 {
+ n = -1022
+ }
+ }
+ }
+ *(*uint64_t)(unsafe.Pointer(bp)) = uint64_t(0x3ff+n) << 52
+ x = y * *(*float64)(unsafe.Pointer(bp))
+ return x
+}
+
+func Xscalbnl(tls *TLS, x float64, n int32) float64 { /* scalbnl.c:4:13: */
+ return Xscalbn(tls, x, n)
+}
+
+// Support signed or unsigned plain-char
+
+// Implementation choices...
+
+// Arbitrary numbers...
+
+// POSIX/SUS requirements follow. These numbers come directly
+// from SUS and have nothing to do with the host system.
+
+type __locale_map = struct {
+ __map uintptr
+ map_size size_t
+ name [24]uint8
+ next uintptr
+} /* alltypes.h:341:9 */
+
+type tls_module = struct {
+ next uintptr
+ image uintptr
+ len size_t
+ size size_t
+ align size_t
+ offset size_t
+} /* libc.h:14:1 */
+
+type __libc = struct {
+ can_do_threads uint8
+ threaded uint8
+ secure uint8
+ need_locks int8
+ threads_minus_1 int32
+ auxv uintptr
+ tls_head uintptr
+ tls_size size_t
+ tls_align size_t
+ tls_cnt size_t
+ page_size size_t
+ global_locale struct{ cat [6]uintptr }
+} /* libc.h:20:1 */
+
+type time_t = int64 /* alltypes.h:83:16 */
+
+type clockid_t = int32 /* alltypes.h:212:13 */
+
+type timespec = struct {
+ tv_sec time_t
+ tv_nsec int64
+} /* alltypes.h:227:1 */
+
+type pthread_t = uintptr /* alltypes.h:271:26 */
+
+type pthread_once_t = int32 /* alltypes.h:277:13 */
+
+type pthread_key_t = uint32 /* alltypes.h:282:18 */
+
+type pthread_spinlock_t = int32 /* alltypes.h:287:13 */
+
+type pthread_mutexattr_t = struct{ __attr uint32 } /* alltypes.h:292:37 */
+
+type pthread_condattr_t = struct{ __attr uint32 } /* alltypes.h:297:37 */
+
+type pthread_barrierattr_t = struct{ __attr uint32 } /* alltypes.h:302:37 */
+
+type pthread_rwlockattr_t = struct{ __attr [2]uint32 } /* alltypes.h:307:40 */
+
+type __sigset_t = struct{ __bits [16]uint64 } /* alltypes.h:347:9 */
+
+type sigset_t = __sigset_t /* alltypes.h:347:71 */
+
+type pthread_attr_t = struct {
+ __u struct {
+ _ [0]uint64
+ __i [14]int32
+ }
+} /* alltypes.h:370:147 */
+
+type pthread_mutex_t = struct {
+ __u struct {
+ _ [0]uint64
+ __i [10]int32
+ }
+} /* alltypes.h:375:157 */
+
+type pthread_cond_t = struct {
+ __u struct {
+ _ [0]uint64
+ __i [12]int32
+ }
+} /* alltypes.h:385:112 */
+
+type pthread_rwlock_t = struct {
+ __u struct {
+ _ [0]uint64
+ __i [14]int32
+ }
+} /* alltypes.h:395:139 */
+
+type pthread_barrier_t = struct {
+ __u struct {
+ _ [0]uint64
+ __i [8]int32
+ }
+} /* alltypes.h:400:137 */
+
+type sched_param = struct {
+ sched_priority int32
+ __reserved1 int32
+ __reserved2 [2]struct {
+ __reserved1 time_t
+ __reserved2 int64
+ }
+ __reserved3 int32
+ _ [4]byte
+} /* sched.h:19:1 */
+
+type timer_t = uintptr /* alltypes.h:207:14 */
+
+type clock_t = int64 /* alltypes.h:217:14 */
+
+type tm = struct {
+ tm_sec int32
+ tm_min int32
+ tm_hour int32
+ tm_mday int32
+ tm_mon int32
+ tm_year int32
+ tm_wday int32
+ tm_yday int32
+ tm_isdst int32
+ _ [4]byte
+ tm_gmtoff int64
+ tm_zone uintptr
+} /* time.h:38:1 */
+
+type itimerspec = struct {
+ it_interval struct {
+ tv_sec time_t
+ tv_nsec int64
+ }
+ it_value struct {
+ tv_sec time_t
+ tv_nsec int64
+ }
+} /* time.h:80:1 */
+
+type sigevent = struct {
+ sigev_value struct {
+ _ [0]uint64
+ sival_int int32
+ _ [4]byte
+ }
+ sigev_signo int32
+ sigev_notify int32
+ sigev_notify_function uintptr
+ sigev_notify_attributes uintptr
+ __pad [32]uint8
+} /* time.h:107:1 */
+
+type __ptcb = struct {
+ __f uintptr
+ __x uintptr
+ __next uintptr
+} /* alltypes.h:271:9 */
+
+type sigaltstack = struct {
+ ss_sp uintptr
+ ss_flags int32
+ _ [4]byte
+ ss_size size_t
+} /* signal.h:44:9 */
+
+type stack_t = sigaltstack /* signal.h:44:28 */
+
+type __riscv_mc_f_ext_state = struct {
+ __f [32]uint32
+ __fcsr uint32
+} /* signal.h:11:1 */
+
+type __riscv_mc_d_ext_state = struct {
+ __f [32]uint64
+ __fcsr uint32
+ _ [4]byte
+} /* signal.h:16:1 */
+
+type __riscv_mc_q_ext_state = struct {
+ __f [64]uint64
+ __fcsr uint32
+ __reserved [3]uint32
+} /* signal.h:21:1 */
+
+type __riscv_mc_fp_state = struct {
+ _ [0]uint64
+ __f struct {
+ __f [32]uint32
+ __fcsr uint32
+ }
+ _ [396]byte
+} /* signal.h:27:1 */
+
+type mcontext_t1 = struct {
+ __gregs [32]uint64
+ __fpregs struct {
+ _ [0]uint64
+ __f struct {
+ __f [32]uint32
+ __fcsr uint32
+ }
+ _ [396]byte
+ }
+} /* signal.h:33:9 */
+
+type mcontext_t = mcontext_t1 /* signal.h:36:3 */
+
+type greg_t = uint64 /* signal.h:48:23 */
+type gregset_t = [32]uint64 /* signal.h:49:23 */
+type fpregset_t = __riscv_mc_fp_state /* signal.h:50:35 */
+type sigcontext = struct {
+ gregs gregset_t
+ fpregs fpregset_t
+} /* signal.h:51:1 */
+
+type ucontext_t1 = struct {
+ uc_flags uint64
+ uc_link uintptr
+ uc_stack stack_t
+ uc_sigmask sigset_t
+ uc_mcontext mcontext_t
+} /* signal.h:63:9 */
+
+type ucontext_t = ucontext_t1 /* signal.h:70:3 */
+
+type sigval = struct {
+ _ [0]uint64
+ sival_int int32
+ _ [4]byte
+} /* time.h:107:1 */
+
+type siginfo_t = struct {
+ si_signo int32
+ si_errno int32
+ si_code int32
+ _ [4]byte
+ __si_fields struct {
+ _ [0]uint64
+ __pad [112]uint8
+ }
+} /* signal.h:145:3 */
+
+type sigaction = struct {
+ __sa_handler struct{ sa_handler uintptr }
+ sa_mask sigset_t
+ sa_flags int32
+ _ [4]byte
+ sa_restorer uintptr
+} /* signal.h:167:1 */
+
+type sig_t = uintptr /* signal.h:251:14 */
+
+type sig_atomic_t = int32 /* signal.h:269:13 */
+
+func a_barrier(tls *TLS) { /* atomic_arch.h:2:20: */
+ panic(`arch/riscv64/atomic_arch.h:4:2: assembler statements not supported`)
+}
+
+func a_cas(tls *TLS, p uintptr, t int32, s int32) int32 { /* atomic_arch.h:8:19: */
+ var old int32
+ var tmp int32
+ _ = tmp
+ panic(`arch/riscv64/atomic_arch.h:11:2: assembler statements not supported`)
+ return old
+}
+
+func a_swap(tls *TLS, p uintptr, v int32) int32 { /* atomic.h:108:19: */
+ var old int32
+ for __ccgo := true; __ccgo; __ccgo = a_cas(tls, p, old, v) != old {
+ old = *(*int32)(unsafe.Pointer(p))
+ }
+ return old
+}
+
+func a_fetch_add(tls *TLS, p uintptr, v int32) int32 { /* atomic.h:119:19: */
+ var old int32
+ for __ccgo := true; __ccgo; __ccgo = a_cas(tls, p, old, int32(uint32(old)+uint32(v))) != old {
+ old = *(*int32)(unsafe.Pointer(p))
+ }
+ return old
+}
+
+func a_fetch_and(tls *TLS, p uintptr, v int32) int32 { /* atomic.h:130:19: */
+ var old int32
+ for __ccgo := true; __ccgo; __ccgo = a_cas(tls, p, old, old&v) != old {
+ old = *(*int32)(unsafe.Pointer(p))
+ }
+ return old
+}
+
+func a_fetch_or(tls *TLS, p uintptr, v int32) int32 { /* atomic.h:140:19: */
+ var old int32
+ for __ccgo := true; __ccgo; __ccgo = a_cas(tls, p, old, old|v) != old {
+ old = *(*int32)(unsafe.Pointer(p))
+ }
+ return old
+}
+
+func a_and(tls *TLS, p uintptr, v int32) { /* atomic.h:151:20: */
+ a_fetch_and(tls, p, v)
+}
+
+func a_or(tls *TLS, p uintptr, v int32) { /* atomic.h:159:20: */
+ a_fetch_or(tls, p, v)
+}
+
+func a_or_64(tls *TLS, p uintptr, v uint64_t) { /* atomic.h:220:20: */
+ bp := tls.Alloc(8)
+ defer tls.Free(8)
+
+ *(*struct{ v uint64_t })(unsafe.Pointer(bp)) = func() (r struct{ v uint64_t }) {
+ *(*uint64_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = v
+ return r
+ }()
+ if *(*uint32_t)(unsafe.Pointer(bp)) != 0 {
+ a_or(tls, p, int32(*(*uint32_t)(unsafe.Pointer(bp))))
+ }
+ if *(*uint32_t)(unsafe.Pointer(bp + 1*4)) != 0 {
+ a_or(tls, p+uintptr(1)*4, int32(*(*uint32_t)(unsafe.Pointer(bp + 1*4))))
+ }
+}
+
+func a_ctz_32(tls *TLS, x uint32_t) int32 { /* atomic.h:256:19: */
+ return int32(_sdebruijn328[x&-x*uint32_t(0x076be629)>>27])
+}
+
+var _sdebruijn328 = [32]uint8{
+ uint8(0), uint8(1), uint8(23), uint8(2), uint8(29), uint8(24), uint8(19), uint8(3), uint8(30), uint8(27), uint8(25), uint8(11), uint8(20), uint8(8), uint8(4), uint8(13),
+ uint8(31), uint8(22), uint8(28), uint8(18), uint8(26), uint8(10), uint8(7), uint8(12), uint8(21), uint8(17), uint8(9), uint8(6), uint8(16), uint8(5), uint8(15), uint8(14),
+} /* atomic.h:261:20 */
+
+func a_ctz_64(tls *TLS, x uint64_t) int32 { /* atomic.h:272:19: */
+ if uint64(unsafe.Sizeof(int64(0))) < uint64(8) {
+ var y uint32_t = uint32_t(x)
+ if !(y != 0) {
+ y = uint32_t(x >> 32)
+ return 32 + a_ctz_32(tls, y)
+ }
+ return a_ctz_32(tls, y)
+ }
+ return int32(_sdebruijn648[uint64(x&-x)*0x022fdd63cc95386d>>58])
+}
+
+var _sdebruijn648 = [64]uint8{
+ uint8(0), uint8(1), uint8(2), uint8(53), uint8(3), uint8(7), uint8(54), uint8(27), uint8(4), uint8(38), uint8(41), uint8(8), uint8(34), uint8(55), uint8(48), uint8(28),
+ uint8(62), uint8(5), uint8(39), uint8(46), uint8(44), uint8(42), uint8(22), uint8(9), uint8(24), uint8(35), uint8(59), uint8(56), uint8(49), uint8(18), uint8(29), uint8(11),
+ uint8(63), uint8(52), uint8(6), uint8(26), uint8(37), uint8(40), uint8(33), uint8(47), uint8(61), uint8(45), uint8(43), uint8(21), uint8(23), uint8(58), uint8(17), uint8(10),
+ uint8(51), uint8(25), uint8(36), uint8(32), uint8(60), uint8(20), uint8(57), uint8(16), uint8(50), uint8(31), uint8(19), uint8(15), uint8(30), uint8(14), uint8(13), uint8(12),
+} /* atomic.h:274:20 */
+
+type __timer = struct {
+ timerid int32
+ _ [4]byte
+ thread pthread_t
+} /* pthread_impl.h:64:1 */
+
+func __pthread_self(tls *TLS) uintptr { /* pthread_arch.h:1:30: */
+ var tp uintptr
+ panic(`arch/riscv64/pthread_arch.h:4:2: assembler statements not supported`)
+ return tp - uintptr(uint64(unsafe.Sizeof(__pthread{})))
+}
+
+func __wake(tls *TLS, addr uintptr, cnt int32, priv int32) { /* pthread_impl.h:155:20: */
+ if priv != 0 {
+ priv = 128
+ }
+ if cnt < 0 {
+ cnt = 0x7fffffff
+ }
+ _ = Bool32(__syscall3(tls, int64(98), int64(addr), int64(1|priv), int64(cnt)) != int64(-38) || __syscall3(tls, int64(98), int64(addr), int64(1), int64(cnt)) != 0)
+}
+
+func __futexwait(tls *TLS, addr uintptr, val int32, priv int32) { /* pthread_impl.h:162:20: */
+ if priv != 0 {
+ priv = 128
+ }
+ _ = Bool32(__syscall4(tls, int64(98), int64(addr), int64(0|priv), int64(val), int64(0)) != int64(-38) || __syscall4(tls, int64(98), int64(addr), int64(0), int64(val), int64(0)) != 0)
+}
+
+var X__fsmu8 = [51]uint32_t{
+ func() uint32 {
+ if 0x2 < 2 {
+ return Uint32FromInt32(-1)
+ }
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23 | uint32_t(0x2)
+ }(), func() uint32 {
+ if 0x3 < 2 {
+ return Uint32FromInt32(-1)
+ }
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23 | uint32_t(0x3)
+ }(), func() uint32 {
+ if 0x4 < 2 {
+ return Uint32FromInt32(-1)
+ }
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23 | uint32_t(0x4)
+ }(), func() uint32 {
+ if 0x5 < 2 {
+ return Uint32FromInt32(-1)
+ }
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23 | uint32_t(0x5)
+ }(), func() uint32 {
+ if 0x6 < 2 {
+ return Uint32FromInt32(-1)
+ }
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23 | uint32_t(0x6)
+ }(), func() uint32 {
+ if 0x7 < 2 {
+ return Uint32FromInt32(-1)
+ }
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23 | uint32_t(0x7)
+ }(),
+ func() uint32 {
+ if 0x8 < 2 {
+ return Uint32FromInt32(-1)
+ }
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23 | uint32_t(0x8)
+ }(), func() uint32 {
+ if 0x9 < 2 {
+ return Uint32FromInt32(-1)
+ }
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23 | uint32_t(0x9)
+ }(), func() uint32 {
+ if 0xa < 2 {
+ return Uint32FromInt32(-1)
+ }
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23 | uint32_t(0xa)
+ }(), func() uint32 {
+ if 0xb < 2 {
+ return Uint32FromInt32(-1)
+ }
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23 | uint32_t(0xb)
+ }(), func() uint32 {
+ if 0xc < 2 {
+ return Uint32FromInt32(-1)
+ }
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23 | uint32_t(0xc)
+ }(), func() uint32 {
+ if 0xd < 2 {
+ return Uint32FromInt32(-1)
+ }
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23 | uint32_t(0xd)
+ }(), func() uint32 {
+ if 0xe < 2 {
+ return Uint32FromInt32(-1)
+ }
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23 | uint32_t(0xe)
+ }(), func() uint32 {
+ if 0xf < 2 {
+ return Uint32FromInt32(-1)
+ }
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23 | uint32_t(0xf)
+ }(),
+ func() uint32 {
+ if 0x0+16 < 2 {
+ return Uint32FromInt32(-1)
+ }
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23 | uint32_t(0x0+16)
+ }(), func() uint32 {
+ if 0x1+16 < 2 {
+ return Uint32FromInt32(-1)
+ }
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23 | uint32_t(0x1+16)
+ }(), func() uint32 {
+ if 0x2+16 < 2 {
+ return Uint32FromInt32(-1)
+ }
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23 | uint32_t(0x2+16)
+ }(), func() uint32 {
+ if 0x3+16 < 2 {
+ return Uint32FromInt32(-1)
+ }
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23 | uint32_t(0x3+16)
+ }(), func() uint32 {
+ if 0x4+16 < 2 {
+ return Uint32FromInt32(-1)
+ }
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23 | uint32_t(0x4+16)
+ }(), func() uint32 {
+ if 0x5+16 < 2 {
+ return Uint32FromInt32(-1)
+ }
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23 | uint32_t(0x5+16)
+ }(), func() uint32 {
+ if 0x6+16 < 2 {
+ return Uint32FromInt32(-1)
+ }
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23 | uint32_t(0x6+16)
+ }(), func() uint32 {
+ if 0x7+16 < 2 {
+ return Uint32FromInt32(-1)
+ }
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23 | uint32_t(0x7+16)
+ }(),
+ func() uint32 {
+ if 0x8+16 < 2 {
+ return Uint32FromInt32(-1)
+ }
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23 | uint32_t(0x8+16)
+ }(), func() uint32 {
+ if 0x9+16 < 2 {
+ return Uint32FromInt32(-1)
+ }
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23 | uint32_t(0x9+16)
+ }(), func() uint32 {
+ if 0xa+16 < 2 {
+ return Uint32FromInt32(-1)
+ }
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23 | uint32_t(0xa+16)
+ }(), func() uint32 {
+ if 0xb+16 < 2 {
+ return Uint32FromInt32(-1)
+ }
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23 | uint32_t(0xb+16)
+ }(), func() uint32 {
+ if 0xc+16 < 2 {
+ return Uint32FromInt32(-1)
+ }
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23 | uint32_t(0xc+16)
+ }(), func() uint32 {
+ if 0xd+16 < 2 {
+ return Uint32FromInt32(-1)
+ }
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23 | uint32_t(0xd+16)
+ }(), func() uint32 {
+ if 0xe+16 < 2 {
+ return Uint32FromInt32(-1)
+ }
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23 | uint32_t(0xe+16)
+ }(), func() uint32 {
+ if 0xf+16 < 2 {
+ return Uint32FromInt32(-1)
+ }
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23 | uint32_t(0xf+16)
+ }(),
+ func() uint32 {
+ if 0x0 == 0 {
+ return func() uint32 {
+ if Int32(0xa0) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0xa0))
+ }() << 23
+ }
+ return func() uint32 {
+ if 0x0 == 0xd {
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xa0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }() << 23
+ }
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }() << 23
+ }()
+ }() | uint32_t(func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23)>>6 | uint32_t(0x0), func() uint32 {
+ if 0x1 == 0 {
+ return func() uint32 {
+ if Int32(0xa0) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0xa0))
+ }() << 23
+ }
+ return func() uint32 {
+ if 0x1 == 0xd {
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xa0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }() << 23
+ }
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }() << 23
+ }()
+ }() | uint32_t(func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23)>>6 | uint32_t(0x1), func() uint32 {
+ if 0x2 == 0 {
+ return func() uint32 {
+ if Int32(0xa0) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0xa0))
+ }() << 23
+ }
+ return func() uint32 {
+ if 0x2 == 0xd {
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xa0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }() << 23
+ }
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }() << 23
+ }()
+ }() | uint32_t(func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23)>>6 | uint32_t(0x2), func() uint32 {
+ if 0x3 == 0 {
+ return func() uint32 {
+ if Int32(0xa0) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0xa0))
+ }() << 23
+ }
+ return func() uint32 {
+ if 0x3 == 0xd {
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xa0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }() << 23
+ }
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }() << 23
+ }()
+ }() | uint32_t(func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23)>>6 | uint32_t(0x3), func() uint32 {
+ if 0x4 == 0 {
+ return func() uint32 {
+ if Int32(0xa0) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0xa0))
+ }() << 23
+ }
+ return func() uint32 {
+ if 0x4 == 0xd {
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xa0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }() << 23
+ }
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }() << 23
+ }()
+ }() | uint32_t(func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23)>>6 | uint32_t(0x4), func() uint32 {
+ if 0x5 == 0 {
+ return func() uint32 {
+ if Int32(0xa0) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0xa0))
+ }() << 23
+ }
+ return func() uint32 {
+ if 0x5 == 0xd {
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xa0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }() << 23
+ }
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }() << 23
+ }()
+ }() | uint32_t(func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23)>>6 | uint32_t(0x5), func() uint32 {
+ if 0x6 == 0 {
+ return func() uint32 {
+ if Int32(0xa0) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0xa0))
+ }() << 23
+ }
+ return func() uint32 {
+ if 0x6 == 0xd {
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xa0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }() << 23
+ }
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }() << 23
+ }()
+ }() | uint32_t(func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23)>>6 | uint32_t(0x6), func() uint32 {
+ if 0x7 == 0 {
+ return func() uint32 {
+ if Int32(0xa0) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0xa0))
+ }() << 23
+ }
+ return func() uint32 {
+ if 0x7 == 0xd {
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xa0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }() << 23
+ }
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }() << 23
+ }()
+ }() | uint32_t(func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23)>>6 | uint32_t(0x7),
+ func() uint32 {
+ if 0x8 == 0 {
+ return func() uint32 {
+ if Int32(0xa0) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0xa0))
+ }() << 23
+ }
+ return func() uint32 {
+ if 0x8 == 0xd {
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xa0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }() << 23
+ }
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }() << 23
+ }()
+ }() | uint32_t(func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23)>>6 | uint32_t(0x8), func() uint32 {
+ if 0x9 == 0 {
+ return func() uint32 {
+ if Int32(0xa0) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0xa0))
+ }() << 23
+ }
+ return func() uint32 {
+ if 0x9 == 0xd {
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xa0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }() << 23
+ }
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }() << 23
+ }()
+ }() | uint32_t(func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23)>>6 | uint32_t(0x9), func() uint32 {
+ if 0xa == 0 {
+ return func() uint32 {
+ if Int32(0xa0) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0xa0))
+ }() << 23
+ }
+ return func() uint32 {
+ if 0xa == 0xd {
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xa0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }() << 23
+ }
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }() << 23
+ }()
+ }() | uint32_t(func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23)>>6 | uint32_t(0xa), func() uint32 {
+ if 0xb == 0 {
+ return func() uint32 {
+ if Int32(0xa0) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0xa0))
+ }() << 23
+ }
+ return func() uint32 {
+ if 0xb == 0xd {
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xa0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }() << 23
+ }
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }() << 23
+ }()
+ }() | uint32_t(func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23)>>6 | uint32_t(0xb), func() uint32 {
+ if 0xc == 0 {
+ return func() uint32 {
+ if Int32(0xa0) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0xa0))
+ }() << 23
+ }
+ return func() uint32 {
+ if 0xc == 0xd {
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xa0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }() << 23
+ }
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }() << 23
+ }()
+ }() | uint32_t(func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23)>>6 | uint32_t(0xc), func() uint32 {
+ if 0xd == 0 {
+ return func() uint32 {
+ if Int32(0xa0) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0xa0))
+ }() << 23
+ }
+ return func() uint32 {
+ if 0xd == 0xd {
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xa0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }() << 23
+ }
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }() << 23
+ }()
+ }() | uint32_t(func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23)>>6 | uint32_t(0xd), func() uint32 {
+ if 0xe == 0 {
+ return func() uint32 {
+ if Int32(0xa0) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0xa0))
+ }() << 23
+ }
+ return func() uint32 {
+ if 0xe == 0xd {
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xa0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }() << 23
+ }
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }() << 23
+ }()
+ }() | uint32_t(func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23)>>6 | uint32_t(0xe), func() uint32 {
+ if 0xf == 0 {
+ return func() uint32 {
+ if Int32(0xa0) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0xa0))
+ }() << 23
+ }
+ return func() uint32 {
+ if 0xf == 0xd {
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xa0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }() << 23
+ }
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }() << 23
+ }()
+ }() | uint32_t(func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23)>>6 | uint32_t(0xf),
+ func() uint32 {
+ if 0x0 >= 5 {
+ return uint32(0)
+ }
+ return func() uint32 {
+ if 0x0 == 0 {
+ return func() uint32 {
+ if Int32(0x90) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x90))
+ }() << 23
+ }
+ return func() uint32 {
+ if 0x0 == 4 {
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0x90))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }() << 23
+ }
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }() << 23
+ }()
+ }()
+ }() | uint32_t(func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23)>>6 | uint32_t(func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23)>>12 | uint32_t(0x0), func() uint32 {
+ if 0x1 >= 5 {
+ return uint32(0)
+ }
+ return func() uint32 {
+ if 0x1 == 0 {
+ return func() uint32 {
+ if Int32(0x90) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x90))
+ }() << 23
+ }
+ return func() uint32 {
+ if 0x1 == 4 {
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0x90))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }() << 23
+ }
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }() << 23
+ }()
+ }()
+ }() | uint32_t(func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23)>>6 | uint32_t(func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23)>>12 | uint32_t(0x1), func() uint32 {
+ if 0x2 >= 5 {
+ return uint32(0)
+ }
+ return func() uint32 {
+ if 0x2 == 0 {
+ return func() uint32 {
+ if Int32(0x90) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x90))
+ }() << 23
+ }
+ return func() uint32 {
+ if 0x2 == 4 {
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0x90))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }() << 23
+ }
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }() << 23
+ }()
+ }()
+ }() | uint32_t(func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23)>>6 | uint32_t(func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23)>>12 | uint32_t(0x2), func() uint32 {
+ if 0x3 >= 5 {
+ return uint32(0)
+ }
+ return func() uint32 {
+ if 0x3 == 0 {
+ return func() uint32 {
+ if Int32(0x90) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x90))
+ }() << 23
+ }
+ return func() uint32 {
+ if 0x3 == 4 {
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0x90))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }() << 23
+ }
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }() << 23
+ }()
+ }()
+ }() | uint32_t(func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23)>>6 | uint32_t(func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23)>>12 | uint32_t(0x3), func() uint32 {
+ if 0x4 >= 5 {
+ return uint32(0)
+ }
+ return func() uint32 {
+ if 0x4 == 0 {
+ return func() uint32 {
+ if Int32(0x90) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x90))
+ }() << 23
+ }
+ return func() uint32 {
+ if 0x4 == 4 {
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0x90))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }() << 23
+ }
+ return func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }() << 23
+ }()
+ }()
+ }() | uint32_t(func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23)>>6 | uint32_t(func() uint32 {
+ if Int32(0x80) == Int32(0x80) {
+ return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
+ }
+ return Uint32(Uint32(0) - Uint32FromInt32(0x80))
+ }()<<23)>>12 | uint32_t(0x4),
+} /* internal.c:18:16 */
+
+type wint_t = uint32 /* alltypes.h:196:18 */
+
+type wctype_t = uint64 /* alltypes.h:201:23 */
+
+type __mbstate_t = struct {
+ __opaque1 uint32
+ __opaque2 uint32
+} /* alltypes.h:335:9 */
+
+type mbstate_t = __mbstate_t /* alltypes.h:335:63 */
+
+func Xmbrtowc(tls *TLS, wc uintptr, src uintptr, n size_t, st uintptr) size_t { /* mbrtowc.c:6:8: */
+ bp := tls.Alloc(4)
+ defer tls.Free(4)
+
+ var c uint32
+ var s uintptr
+ var N uint32
+ // var dummy wchar_t at bp, 4
+ s = src
+ N = uint32(n)
+
+ if !!(st != 0) {
+ goto __1
+ }
+ st = uintptr(unsafe.Pointer(&_sinternal_state))
+__1:
+ ;
+ c = *(*uint32)(unsafe.Pointer(st))
+
+ if !!(s != 0) {
+ goto __2
+ }
+ if !(c != 0) {
+ goto __4
+ }
+ goto ilseq
+__4:
+ ;
+ return uint64(0)
+ goto __3
+__2:
+ if !!(wc != 0) {
+ goto __5
+ }
+ wc = bp /* &dummy */
+__5:
+ ;
+__3:
+ ;
+
+ if !!(n != 0) {
+ goto __6
+ }
+ return Uint64FromInt32(-2)
+__6:
+ ;
+ if !!(c != 0) {
+ goto __7
+ }
+ if !(int32(*(*uint8)(unsafe.Pointer(s))) < 0x80) {
+ goto __8
+ }
+ return BoolUint64(!!(AssignPtrInt32(wc, wchar_t(*(*uint8)(unsafe.Pointer(s)))) != 0))
+__8:
+ ;
+ if !(func() int32 {
+ if !!(int32(*(*uintptr)(unsafe.Pointer((*__pthread)(unsafe.Pointer(__pthread_self(tls))).locale))) != 0) {
+ return 4
+ }
+ return 1
+ }() == 1) {
+ goto __9
+ }
+ *(*wchar_t)(unsafe.Pointer(wc)) = 0xdfff & int32(int8(*(*uint8)(unsafe.Pointer(s))))
+ return 1
+__9:
+ ;
+ if !(uint32(*(*uint8)(unsafe.Pointer(s)))-0xc2 > 0xf4-0xc2) {
+ goto __10
+ }
+ goto ilseq
+__10:
+ ;
+ c = X__fsmu8[uint32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&s, 1))))-0xc2]
+ n--
+__7:
+ ;
+
+ if !(n != 0) {
+ goto __11
+ }
+ if !((int32(*(*uint8)(unsafe.Pointer(s)))>>3-0x10|(int32(*(*uint8)(unsafe.Pointer(s)))>>3+int32_t(c)>>26))&CplInt32(7) != 0) {
+ goto __12
+ }
+ goto ilseq
+__12:
+ ;
+loop:
+ c = c<<6 | uint32(int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&s, 1))))-0x80)
+ n--
+ if !!(c&(uint32(1)<<31) != 0) {
+ goto __13
+ }
+ *(*uint32)(unsafe.Pointer(st)) = uint32(0)
+ *(*wchar_t)(unsafe.Pointer(wc)) = wchar_t(c)
+ return size_t(N) - n
+__13:
+ ;
+ if !(n != 0) {
+ goto __14
+ }
+ if !(uint32(*(*uint8)(unsafe.Pointer(s)))-0x80 >= uint32(0x40)) {
+ goto __15
+ }
+ goto ilseq
+__15:
+ ;
+ goto loop
+__14:
+ ;
+__11:
+ ;
+
+ *(*uint32)(unsafe.Pointer(st)) = c
+ return Uint64FromInt32(-2)
+ilseq:
+ *(*uint32)(unsafe.Pointer(st)) = uint32(0)
+ *(*int32)(unsafe.Pointer(X___errno_location(tls))) = 84
+ return Uint64FromInt32(-1)
+}
+
+var _sinternal_state uint32 /* mbrtowc.c:8:18: */
+
+func Xmbsinit(tls *TLS, st uintptr) int32 { /* mbsinit.c:3:5: */
+ return Bool32(!(st != 0) || !(int32(*(*uint32)(unsafe.Pointer(st))) != 0))
+}
+
+type imaxdiv_t = struct {
+ quot intmax_t
+ rem intmax_t
+} /* inttypes.h:14:40 */
+
+type socklen_t = uint32 /* alltypes.h:359:18 */
+
+type sa_family_t = uint16 /* alltypes.h:364:24 */
+
+type msghdr = struct {
+ msg_name uintptr
+ msg_namelen socklen_t
+ _ [4]byte
+ msg_iov uintptr
+ msg_iovlen int32
+ __pad1 int32
+ msg_control uintptr
+ msg_controllen socklen_t
+ __pad2 int32
+ msg_flags int32
+ _ [4]byte
+} /* socket.h:22:1 */
+
+type cmsghdr = struct {
+ cmsg_len socklen_t
+ __pad1 int32
+ cmsg_level int32
+ cmsg_type int32
+} /* socket.h:44:1 */
+
+type linger = struct {
+ l_onoff int32
+ l_linger int32
+} /* socket.h:74:1 */
+
+type sockaddr = struct {
+ sa_family sa_family_t
+ sa_data [14]uint8
+} /* socket.h:367:1 */
+
+type sockaddr_storage = struct {
+ ss_family sa_family_t
+ __ss_padding [118]uint8
+ __ss_align uint64
+} /* socket.h:372:1 */
+
+type in_port_t = uint16_t /* in.h:12:18 */
+type in_addr_t = uint32_t /* in.h:13:18 */
+type in_addr = struct{ s_addr in_addr_t } /* in.h:14:1 */
+
+type sockaddr_in = struct {
+ sin_family sa_family_t
+ sin_port in_port_t
+ sin_addr struct{ s_addr in_addr_t }
+ sin_zero [8]uint8_t
+} /* in.h:16:1 */
+
+type in6_addr = struct {
+ __in6_union struct {
+ _ [0]uint32
+ __s6_addr [16]uint8_t
+ }
+} /* in.h:23:1 */
+
+type sockaddr_in6 = struct {
+ sin6_family sa_family_t
+ sin6_port in_port_t
+ sin6_flowinfo uint32_t
+ sin6_addr struct {
+ __in6_union struct {
+ _ [0]uint32
+ __s6_addr [16]uint8_t
+ }
+ }
+ sin6_scope_id uint32_t
+} /* in.h:34:1 */
+
+type ipv6_mreq = struct {
+ ipv6mr_multiaddr struct {
+ __in6_union struct {
+ _ [0]uint32
+ __s6_addr [16]uint8_t
+ }
+ }
+ ipv6mr_interface uint32
+} /* in.h:42:1 */
+
+type ip_opts = struct {
+ ip_dst struct{ s_addr in_addr_t }
+ ip_opts [40]uint8
+} /* in.h:229:1 */
+
+type ip_mreq = struct {
+ imr_multiaddr struct{ s_addr in_addr_t }
+ imr_interface struct{ s_addr in_addr_t }
+} /* in.h:247:1 */
+
+type ip_mreqn = struct {
+ imr_multiaddr struct{ s_addr in_addr_t }
+ imr_address struct{ s_addr in_addr_t }
+ imr_ifindex int32
+} /* in.h:252:1 */
+
+type ip_mreq_source = struct {
+ imr_multiaddr struct{ s_addr in_addr_t }
+ imr_interface struct{ s_addr in_addr_t }
+ imr_sourceaddr struct{ s_addr in_addr_t }
+} /* in.h:258:1 */
+
+type ip_msfilter = struct {
+ imsf_multiaddr struct{ s_addr in_addr_t }
+ imsf_interface struct{ s_addr in_addr_t }
+ imsf_fmode uint32_t
+ imsf_numsrc uint32_t
+ imsf_slist [1]struct{ s_addr in_addr_t }
+} /* in.h:264:1 */
+
+type group_req = struct {
+ gr_interface uint32_t
+ _ [4]byte
+ gr_group struct {
+ ss_family sa_family_t
+ __ss_padding [118]uint8
+ __ss_align uint64
+ }
+} /* in.h:275:1 */
+
+type group_source_req = struct {
+ gsr_interface uint32_t
+ _ [4]byte
+ gsr_group struct {
+ ss_family sa_family_t
+ __ss_padding [118]uint8
+ __ss_align uint64
+ }
+ gsr_source struct {
+ ss_family sa_family_t
+ __ss_padding [118]uint8
+ __ss_align uint64
+ }
+} /* in.h:280:1 */
+
+type group_filter = struct {
+ gf_interface uint32_t
+ _ [4]byte
+ gf_group struct {
+ ss_family sa_family_t
+ __ss_padding [118]uint8
+ __ss_align uint64
+ }
+ gf_fmode uint32_t
+ gf_numsrc uint32_t
+ gf_slist [1]struct {
+ ss_family sa_family_t
+ __ss_padding [118]uint8
+ __ss_align uint64
+ }
+} /* in.h:286:1 */
+
+type in_pktinfo = struct {
+ ipi_ifindex int32
+ ipi_spec_dst struct{ s_addr in_addr_t }
+ ipi_addr struct{ s_addr in_addr_t }
+} /* in.h:297:1 */
+
+type in6_pktinfo = struct {
+ ipi6_addr struct {
+ __in6_union struct {
+ _ [0]uint32
+ __s6_addr [16]uint8_t
+ }
+ }
+ ipi6_ifindex uint32
+} /* in.h:303:1 */
+
+type ip6_mtuinfo = struct {
+ ip6m_addr struct {
+ sin6_family sa_family_t
+ sin6_port in_port_t
+ sin6_flowinfo uint32_t
+ sin6_addr struct {
+ __in6_union struct {
+ _ [0]uint32
+ __s6_addr [16]uint8_t
+ }
+ }
+ sin6_scope_id uint32_t
+ }
+ ip6m_mtu uint32_t
+} /* in.h:308:1 */
+
+type addrinfo = struct {
+ ai_flags int32
+ ai_family int32
+ ai_socktype int32
+ ai_protocol int32
+ ai_addrlen socklen_t
+ _ [4]byte
+ ai_addr uintptr
+ ai_canonname uintptr
+ ai_next uintptr
+} /* netdb.h:16:1 */
+
+// Legacy functions follow (marked OBsolete in SUS)
+
+type netent = struct {
+ n_name uintptr
+ n_aliases uintptr
+ n_addrtype int32
+ n_net uint32_t
+} /* netdb.h:62:1 */
+
+type hostent = struct {
+ h_name uintptr
+ h_aliases uintptr
+ h_addrtype int32
+ h_length int32
+ h_addr_list uintptr
+} /* netdb.h:69:1 */
+
+type servent = struct {
+ s_name uintptr
+ s_aliases uintptr
+ s_port int32
+ _ [4]byte
+ s_proto uintptr
+} /* netdb.h:78:1 */
+
+type protoent = struct {
+ p_name uintptr
+ p_aliases uintptr
+ p_proto int32
+ _ [4]byte
+} /* netdb.h:85:1 */
+
+type aibuf = struct {
+ ai struct {
+ ai_flags int32
+ ai_family int32
+ ai_socktype int32
+ ai_protocol int32
+ ai_addrlen socklen_t
+ _ [4]byte
+ ai_addr uintptr
+ ai_canonname uintptr
+ ai_next uintptr
+ }
+ sa struct {
+ sin struct {
+ sin_family sa_family_t
+ sin_port in_port_t
+ sin_addr struct{ s_addr in_addr_t }
+ sin_zero [8]uint8_t
+ }
+ _ [12]byte
+ }
+ lock [1]int32
+ slot int16
+ ref int16
+ _ [4]byte
+} /* lookup.h:10:1 */
+
+type sa = struct {
+ sin struct {
+ sin_family sa_family_t
+ sin_port in_port_t
+ sin_addr struct{ s_addr in_addr_t }
+ sin_zero [8]uint8_t
+ }
+ _ [12]byte
+} /* lookup.h:10:1 */
+
+type address = struct {
+ family int32
+ scopeid uint32
+ addr [16]uint8_t
+ sortkey int32
+} /* lookup.h:20:1 */
+
+type service = struct {
+ port uint16_t
+ proto uint8
+ socktype uint8
+} /* lookup.h:27:1 */
+
+type resolvconf = struct {
+ ns [3]struct {
+ family int32
+ scopeid uint32
+ addr [16]uint8_t
+ sortkey int32
+ }
+ nns uint32
+ attempts uint32
+ ndots uint32
+ timeout uint32
+} /* lookup.h:34:1 */
+
+func Xfreeaddrinfo(tls *TLS, p uintptr) { /* freeaddrinfo.c:7:6: */
+ var cnt size_t
+ cnt = uint64(1)
+__1:
+ if !((*addrinfo)(unsafe.Pointer(p)).ai_next != 0) {
+ goto __3
+ }
+ goto __2
+__2:
+ cnt++
+ p = (*addrinfo)(unsafe.Pointer(p)).ai_next
+ goto __1
+ goto __3
+__3:
+ ;
+ var b uintptr = p - uintptr(uint64(uintptr(0)))
+ b -= 88 * uintptr((*aibuf)(unsafe.Pointer(b)).slot)
+ //TODO LOCK(b->lock);
+ if !(int32(AssignSubPtrInt16(b+82, int16(cnt))) != 0) {
+ Xfree(tls, b)
+ }
+ //TODO else UNLOCK(b->lock);
+}
+
+func Xgetaddrinfo(tls *TLS, host uintptr, serv uintptr, hint uintptr, res uintptr) int32 { /* getaddrinfo.c:12:5: */
+ bp := tls.Alloc(1608)
+ defer tls.Free(1608)
+
+ // var ports [2]service at bp, 8
+
+ // var addrs [48]address at bp+8, 1344
+
+ // var canon [256]uint8 at bp+1352, 256
+
+ var outcanon uintptr
+ var nservs int32
+ var naddrs int32
+ var nais int32
+ var canon_len int32
+ var i int32
+ var j int32
+ var k int32
+ var family int32 = 0
+ var flags int32 = 0
+ var proto int32 = 0
+ var socktype int32 = 0
+ var out uintptr
+
+ if !(host != 0) && !(serv != 0) {
+ return -2
+ }
+
+ if hint != 0 {
+ family = (*addrinfo)(unsafe.Pointer(hint)).ai_family
+ flags = (*addrinfo)(unsafe.Pointer(hint)).ai_flags
+ proto = (*addrinfo)(unsafe.Pointer(hint)).ai_protocol
+ socktype = (*addrinfo)(unsafe.Pointer(hint)).ai_socktype
+
+ var mask int32 = 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x400
+ if flags&mask != flags {
+ return -1
+ }
+
+ switch family {
+ case 2:
+ fallthrough
+ case 10:
+ fallthrough
+ case 0:
+ break
+ fallthrough
+ default:
+ return -6
+ }
+ }
+
+ if flags&0x20 != 0 {
+ Xabort(tls) //TODO-
+ // /* Define the "an address is configured" condition for address
+ // * families via ability to create a socket for the family plus
+ // * routability of the loopback address for the family. */
+ // static const struct sockaddr_in lo4 = {
+ // .sin_family = AF_INET, .sin_port = 65535,
+ // .sin_addr.s_addr = __BYTE_ORDER == __BIG_ENDIAN
+ // ? 0x7f000001 : 0x0100007f
+ // };
+ // static const struct sockaddr_in6 lo6 = {
+ // .sin6_family = AF_INET6, .sin6_port = 65535,
+ // .sin6_addr = IN6ADDR_LOOPBACK_INIT
+ // };
+ // int tf[2] = { AF_INET, AF_INET6 };
+ // const void *ta[2] = { &lo4, &lo6 };
+ // socklen_t tl[2] = { sizeof lo4, sizeof lo6 };
+ // for (i=0; i<2; i++) {
+ // if (family==tf[1-i]) continue;
+ // int s = socket(tf[i], SOCK_CLOEXEC|SOCK_DGRAM,
+ // IPPROTO_UDP);
+ // if (s>=0) {
+ // int cs;
+ // pthread_setcancelstate(
+ // PTHREAD_CANCEL_DISABLE, &cs);
+ // int r = connect(s, ta[i], tl[i]);
+ // pthread_setcancelstate(cs, 0);
+ // close(s);
+ // if (!r) continue;
+ // }
+ // switch (errno) {
+ // case EADDRNOTAVAIL:
+ // case EAFNOSUPPORT:
+ // case EHOSTUNREACH:
+ // case ENETDOWN:
+ // case ENETUNREACH:
+ // break;
+ // default:
+ // return EAI_SYSTEM;
+ // }
+ // if (family == tf[i]) return EAI_NONAME;
+ // family = tf[1-i];
+ // }
+ }
+
+ nservs = X__lookup_serv(tls, bp, serv, proto, socktype, flags)
+ if nservs < 0 {
+ return nservs
+ }
+
+ naddrs = X__lookup_name(tls, bp+8, bp+1352, host, family, flags)
+ if naddrs < 0 {
+ return naddrs
+ }
+
+ nais = nservs * naddrs
+ canon_len = int32(Xstrlen(tls, bp+1352))
+ out = Xcalloc(tls, uint64(1), uint64(nais)*uint64(unsafe.Sizeof(aibuf{}))+uint64(canon_len)+uint64(1))
+ if !(out != 0) {
+ return -10
+ }
+
+ if canon_len != 0 {
+ outcanon = out + uintptr(nais)*88
+ Xmemcpy(tls, outcanon, bp+1352, uint64(canon_len+1))
+ } else {
+ outcanon = uintptr(0)
+ }
+
+ for k = AssignInt32(&i, 0); i < naddrs; i++ {
+ j = 0
+ __1:
+ if !(j < nservs) {
+ goto __3
+ }
+ {
+ (*aibuf)(unsafe.Pointer(out + uintptr(k)*88)).slot = int16(k)
+ //TODO out[k].ai = (struct addrinfo){
+ //TODO .ai_family = addrs[i].family,
+ //TODO .ai_socktype = ports[j].socktype,
+ //TODO .ai_protocol = ports[j].proto,
+ //TODO .ai_addrlen = addrs[i].family == AF_INET
+ //TODO ? sizeof(struct sockaddr_in)
+ //TODO : sizeof(struct sockaddr_in6),
+ //TODO .ai_addr = (void *)&out[k].sa,
+ //TODO .ai_canonname = outcanon };
+ (*aibuf)(unsafe.Pointer(out + uintptr(k)*88)).ai.ai_family = (*address)(unsafe.Pointer(bp + 8 + uintptr(i)*28)).family
+ (*aibuf)(unsafe.Pointer(out + uintptr(k)*88)).ai.ai_socktype = int32((*service)(unsafe.Pointer(bp + uintptr(j)*4)).socktype)
+ (*aibuf)(unsafe.Pointer(out + uintptr(k)*88)).ai.ai_protocol = int32((*service)(unsafe.Pointer(bp + uintptr(j)*4)).proto)
+ (*aibuf)(unsafe.Pointer(out + uintptr(k)*88)).ai.ai_addrlen = func() uint32 {
+ if (*address)(unsafe.Pointer(bp+8+uintptr(i)*28)).family == 2 {
+ return uint32(unsafe.Sizeof(sockaddr_in{}))
+ }
+ return uint32(unsafe.Sizeof(sockaddr_in6{}))
+ }()
+ (*aibuf)(unsafe.Pointer(out + uintptr(k)*88)).ai.ai_addr = out + uintptr(k)*88 + 48
+ (*aibuf)(unsafe.Pointer(out + uintptr(k)*88)).ai.ai_canonname = outcanon
+ if k != 0 {
+ (*aibuf)(unsafe.Pointer(out + uintptr(k-1)*88)).ai.ai_next = out + uintptr(k)*88
+ }
+ switch (*address)(unsafe.Pointer(bp + 8 + uintptr(i)*28)).family {
+ case 2:
+ (*sockaddr_in)(unsafe.Pointer(out + uintptr(k)*88 + 48)).sin_family = sa_family_t(2)
+ (*sockaddr_in)(unsafe.Pointer(out + uintptr(k)*88 + 48)).sin_port = Xhtons(tls, (*service)(unsafe.Pointer(bp+uintptr(j)*4)).port)
+ Xmemcpy(tls, out+uintptr(k)*88+48+4, bp+8+uintptr(i)*28+8, uint64(4))
+ break
+ case 10:
+ (*sockaddr_in6)(unsafe.Pointer(out + uintptr(k)*88 + 48)).sin6_family = sa_family_t(10)
+ (*sockaddr_in6)(unsafe.Pointer(out + uintptr(k)*88 + 48)).sin6_port = Xhtons(tls, (*service)(unsafe.Pointer(bp+uintptr(j)*4)).port)
+ (*sockaddr_in6)(unsafe.Pointer(out + uintptr(k)*88 + 48)).sin6_scope_id = (*address)(unsafe.Pointer(bp + 8 + uintptr(i)*28)).scopeid
+ Xmemcpy(tls, out+uintptr(k)*88+48+8, bp+8+uintptr(i)*28+8, uint64(16))
+ break
+ }
+
+ }
+ goto __2
+ __2:
+ j++
+ k++
+ goto __1
+ goto __3
+ __3:
+ }
+ (*aibuf)(unsafe.Pointer(out)).ref = int16(nais)
+ *(*uintptr)(unsafe.Pointer(res)) = out
+ return 0
+}
+
+type ucred = struct {
+ pid pid_t
+ uid uid_t
+ gid gid_t
+} /* socket.h:57:1 */
+
+type mmsghdr = struct {
+ msg_hdr struct {
+ msg_name uintptr
+ msg_namelen socklen_t
+ _ [4]byte
+ msg_iov uintptr
+ msg_iovlen int32
+ __pad1 int32
+ msg_control uintptr
+ msg_controllen socklen_t
+ __pad2 int32
+ msg_flags int32
+ _ [4]byte
+ }
+ msg_len uint32
+ _ [4]byte
+} /* socket.h:63:1 */
+
+func Xgethostbyaddr(tls *TLS, a uintptr, l socklen_t, af int32) uintptr { /* gethostbyaddr.c:7:16: */
+ bp := tls.Alloc(8)
+ defer tls.Free(8)
+
+ var size size_t = uint64(63)
+ // var res uintptr at bp, 8
+
+ var err int32
+ for __ccgo := true; __ccgo; __ccgo = err == 34 {
+ Xfree(tls, _sh)
+ _sh = Xmalloc(tls, AssignAddUint64(&size, size+uint64(1)))
+ if !(_sh != 0) {
+ *(*int32)(unsafe.Pointer(X__h_errno_location(tls))) = 3
+ return uintptr(0)
+ }
+ err = Xgethostbyaddr_r(tls, a, l, af, _sh,
+ _sh+uintptr(1)*32, size-size_t(unsafe.Sizeof(hostent{})), bp, X__h_errno_location(tls))
+ }
+ if err != 0 {
+ return uintptr(0)
+ }
+ return _sh
+}
+
+var _sh uintptr /* gethostbyaddr.c:9:24: */
+
+func Xgethostbyaddr_r(tls *TLS, a uintptr, l socklen_t, af int32, h uintptr, buf uintptr, buflen size_t, res uintptr, err uintptr) int32 { /* gethostbyaddr_r.c:10:5: */
+ bp := tls.Alloc(28)
+ defer tls.Free(28)
+
+ //TODO union {
+ //TODO struct sockaddr_in sin;
+ //TODO struct sockaddr_in6 sin6;
+ //TODO } sa = { .sin.sin_family = af };
+ *(*struct {
+ sin sockaddr_in
+ _ [12]byte
+ })(unsafe.Pointer(bp)) = struct {
+ sin sockaddr_in
+ _ [12]byte
+ }{} //TODO-
+ (*sockaddr_in)(unsafe.Pointer(bp)).sin_family = sa_family_t(af) //TODO-
+ var sl socklen_t
+ if af == 10 {
+ sl = uint32(unsafe.Sizeof(sockaddr_in6{}))
+ } else {
+ sl = uint32(unsafe.Sizeof(sockaddr_in{}))
+ }
+ var i int32
+
+ *(*uintptr)(unsafe.Pointer(res)) = uintptr(0)
+
+ // Load address argument into sockaddr structure
+ if af == 10 && l == socklen_t(16) {
+ Xmemcpy(tls, bp+8, a, uint64(16))
+ } else if af == 2 && l == socklen_t(4) {
+ Xmemcpy(tls, bp+4, a, uint64(4))
+ } else {
+ *(*int32)(unsafe.Pointer(err)) = 3
+ return 22
+ }
+
+ // Align buffer and check for space for pointers and ip address
+ i = int32(uintptr_t(buf) & (uint64(unsafe.Sizeof(uintptr(0))) - uint64(1)))
+ if !(i != 0) {
+ i = int32(unsafe.Sizeof(uintptr(0)))
+ }
+ if buflen <= uint64(5)*uint64(unsafe.Sizeof(uintptr(0)))-uint64(i)+uint64(l) {
+ return 34
+ }
+ buf += uintptr(uint64(unsafe.Sizeof(uintptr(0))) - uint64(i))
+ buflen = buflen - (uint64(5)*uint64(unsafe.Sizeof(uintptr(0))) - uint64(i) + uint64(l))
+
+ (*hostent)(unsafe.Pointer(h)).h_addr_list = buf
+ buf += uintptr(uint64(2) * uint64(unsafe.Sizeof(uintptr(0))))
+ (*hostent)(unsafe.Pointer(h)).h_aliases = buf
+ buf += uintptr(uint64(2) * uint64(unsafe.Sizeof(uintptr(0))))
+
+ *(*uintptr)(unsafe.Pointer((*hostent)(unsafe.Pointer(h)).h_addr_list)) = buf
+ Xmemcpy(tls, *(*uintptr)(unsafe.Pointer((*hostent)(unsafe.Pointer(h)).h_addr_list)), a, uint64(l))
+ buf += uintptr(l)
+ *(*uintptr)(unsafe.Pointer((*hostent)(unsafe.Pointer(h)).h_addr_list + 1*8)) = uintptr(0)
+ *(*uintptr)(unsafe.Pointer((*hostent)(unsafe.Pointer(h)).h_aliases)) = buf
+ *(*uintptr)(unsafe.Pointer((*hostent)(unsafe.Pointer(h)).h_aliases + 1*8)) = uintptr(0)
+
+ switch Xgetnameinfo(tls, bp, sl, buf, uint32(buflen), uintptr(0), uint32(0), 0) {
+ case -3:
+ *(*int32)(unsafe.Pointer(err)) = 2
+ return 11
+ case -12:
+ return 34
+ default:
+ fallthrough
+ case -10:
+ fallthrough
+ case -11:
+ fallthrough
+ case -4:
+ *(*int32)(unsafe.Pointer(err)) = 3
+ return *(*int32)(unsafe.Pointer(X___errno_location(tls)))
+ case 0:
+ break
+ }
+
+ (*hostent)(unsafe.Pointer(h)).h_addrtype = af
+ (*hostent)(unsafe.Pointer(h)).h_length = int32(l)
+ (*hostent)(unsafe.Pointer(h)).h_name = *(*uintptr)(unsafe.Pointer((*hostent)(unsafe.Pointer(h)).h_aliases))
+ *(*uintptr)(unsafe.Pointer(res)) = h
+ return 0
+}
+
+func Xgethostbyname(tls *TLS, name uintptr) uintptr { /* gethostbyname.c:8:16: */
+ return Xgethostbyname2(tls, name, 2)
+}
+
+func Xgethostbyname2(tls *TLS, name uintptr, af int32) uintptr { /* gethostbyname2.c:8:16: */
+ bp := tls.Alloc(8)
+ defer tls.Free(8)
+
+ var size size_t = uint64(63)
+ // var res uintptr at bp, 8
+
+ var err int32
+ for __ccgo := true; __ccgo; __ccgo = err == 34 {
+ Xfree(tls, _sh1)
+ _sh1 = Xmalloc(tls, AssignAddUint64(&size, size+uint64(1)))
+ if !(_sh1 != 0) {
+ *(*int32)(unsafe.Pointer(X__h_errno_location(tls))) = 3
+ return uintptr(0)
+ }
+ err = Xgethostbyname2_r(tls, name, af, _sh1,
+ _sh1+uintptr(1)*32, size-size_t(unsafe.Sizeof(hostent{})), bp, X__h_errno_location(tls))
+ }
+ if err != 0 {
+ return uintptr(0)
+ }
+ return _sh1
+}
+
+var _sh1 uintptr /* gethostbyname2.c:10:24: */
+
+func Xgethostbyname2_r(tls *TLS, name uintptr, af int32, h uintptr, buf uintptr, buflen size_t, res uintptr, err uintptr) int32 { /* gethostbyname2_r.c:11:5: */
+ bp := tls.Alloc(1600)
+ defer tls.Free(1600)
+
+ // var addrs [48]address at bp, 1344
+
+ // var canon [256]uint8 at bp+1344, 256
+
+ var i int32
+ var cnt int32
+ var align size_t
+ var need size_t
+
+ *(*uintptr)(unsafe.Pointer(res)) = uintptr(0)
+ cnt = X__lookup_name(tls, bp, bp+1344, name, af, 0x02)
+ if cnt < 0 {
+ switch cnt {
+ case -2:
+ *(*int32)(unsafe.Pointer(err)) = 1
+ return 2
+ fallthrough
+ case -3:
+ *(*int32)(unsafe.Pointer(err)) = 2
+ return 11
+ fallthrough
+ default:
+ fallthrough
+ case -4:
+ *(*int32)(unsafe.Pointer(err)) = 3
+ return 74
+ fallthrough
+ case -10:
+ fallthrough
+ case -11:
+ *(*int32)(unsafe.Pointer(err)) = 3
+ return *(*int32)(unsafe.Pointer(X___errno_location(tls)))
+ }
+ }
+
+ (*hostent)(unsafe.Pointer(h)).h_addrtype = af
+ (*hostent)(unsafe.Pointer(h)).h_length = func() int32 {
+ if af == 10 {
+ return 16
+ }
+ return 4
+ }()
+
+ // Align buffer
+ align = -uintptr_t(buf) & (uint64(unsafe.Sizeof(uintptr(0))) - uint64(1))
+
+ need = uint64(4) * uint64(unsafe.Sizeof(uintptr(0)))
+ need = need + uint64(cnt+1)*(uint64(unsafe.Sizeof(uintptr(0)))+uint64((*hostent)(unsafe.Pointer(h)).h_length))
+ need = need + (Xstrlen(tls, name) + uint64(1))
+ need = need + (Xstrlen(tls, bp+1344) + uint64(1))
+ need = need + align
+
+ if need > buflen {
+ return 34
+ }
+
+ buf += uintptr(align)
+ (*hostent)(unsafe.Pointer(h)).h_aliases = buf
+ buf += uintptr(uint64(3) * uint64(unsafe.Sizeof(uintptr(0))))
+ (*hostent)(unsafe.Pointer(h)).h_addr_list = buf
+ buf += uintptr(uint64(cnt+1) * uint64(unsafe.Sizeof(uintptr(0))))
+
+ for i = 0; i < cnt; i++ {
+ *(*uintptr)(unsafe.Pointer((*hostent)(unsafe.Pointer(h)).h_addr_list + uintptr(i)*8)) = buf
+ buf += uintptr((*hostent)(unsafe.Pointer(h)).h_length)
+ Xmemcpy(tls, *(*uintptr)(unsafe.Pointer((*hostent)(unsafe.Pointer(h)).h_addr_list + uintptr(i)*8)), bp+uintptr(i)*28+8, uint64((*hostent)(unsafe.Pointer(h)).h_length))
+ }
+ *(*uintptr)(unsafe.Pointer((*hostent)(unsafe.Pointer(h)).h_addr_list + uintptr(i)*8)) = uintptr(0)
+
+ (*hostent)(unsafe.Pointer(h)).h_name = AssignPtrUintptr((*hostent)(unsafe.Pointer(h)).h_aliases, buf)
+ Xstrcpy(tls, (*hostent)(unsafe.Pointer(h)).h_name, bp+1344)
+ buf += uintptr(Xstrlen(tls, (*hostent)(unsafe.Pointer(h)).h_name) + uint64(1))
+
+ if Xstrcmp(tls, (*hostent)(unsafe.Pointer(h)).h_name, name) != 0 {
+ *(*uintptr)(unsafe.Pointer((*hostent)(unsafe.Pointer(h)).h_aliases + 1*8)) = buf
+ Xstrcpy(tls, *(*uintptr)(unsafe.Pointer((*hostent)(unsafe.Pointer(h)).h_aliases + 1*8)), name)
+ buf += uintptr(Xstrlen(tls, *(*uintptr)(unsafe.Pointer((*hostent)(unsafe.Pointer(h)).h_aliases + 1*8))) + uint64(1))
+ } else {
+ *(*uintptr)(unsafe.Pointer((*hostent)(unsafe.Pointer(h)).h_aliases + 1*8)) = uintptr(0)
+ }
+
+ *(*uintptr)(unsafe.Pointer((*hostent)(unsafe.Pointer(h)).h_aliases + 2*8)) = uintptr(0)
+
+ *(*uintptr)(unsafe.Pointer(res)) = h
+ return 0
+}
+
+func Xgethostbyname_r(tls *TLS, name uintptr, h uintptr, buf uintptr, buflen size_t, res uintptr, err uintptr) int32 { /* gethostbyname_r.c:6:5: */
+ return Xgethostbyname2_r(tls, name, 2, h, buf, buflen, res, err)
+}
+
+type if_nameindex = struct {
+ if_index uint32
+ _ [4]byte
+ if_name uintptr
+} /* if.h:12:1 */
+
+type ifaddr = struct {
+ ifa_addr struct {
+ sa_family sa_family_t
+ sa_data [14]uint8
+ }
+ ifa_ifu struct {
+ ifu_broadaddr struct {
+ sa_family sa_family_t
+ sa_data [14]uint8
+ }
+ }
+ ifa_ifp uintptr
+ ifa_next uintptr
+} /* if.h:51:1 */
+
+type ifmap = struct {
+ mem_start uint64
+ mem_end uint64
+ base_addr uint16
+ irq uint8
+ dma uint8
+ port uint8
+ _ [3]byte
+} /* if.h:64:1 */
+
+type ifreq = struct {
+ ifr_ifrn struct{ ifrn_name [16]uint8 }
+ ifr_ifru struct {
+ _ [0]uint64
+ ifru_addr struct {
+ sa_family sa_family_t
+ sa_data [14]uint8
+ }
+ _ [8]byte
+ }
+} /* if.h:76:1 */
+
+type ifconf = struct {
+ ifc_len int32
+ _ [4]byte
+ ifc_ifcu struct{ ifcu_buf uintptr }
+} /* if.h:116:1 */
+
+type ns_sect = uint32 /* nameser.h:37:3 */
+
+type __ns_msg = struct {
+ _msg uintptr
+ _eom uintptr
+ _id uint16_t
+ _flags uint16_t
+ _counts [4]uint16_t
+ _ [4]byte
+ _sections [4]uintptr
+ _sect ns_sect
+ _rrnum int32
+ _msg_ptr uintptr
+} /* nameser.h:39:9 */
+
+type ns_msg = __ns_msg /* nameser.h:46:3 */
+
+type _ns_flagdata = struct {
+ mask int32
+ shift int32
+} /* nameser.h:48:1 */
+
+type __ns_rr = struct {
+ name [1025]uint8
+ _ [1]byte
+ __type uint16_t
+ rr_class uint16_t
+ _ [2]byte
+ ttl uint32_t
+ rdlength uint16_t
+ _ [2]byte
+ rdata uintptr
+} /* nameser.h:59:9 */
+
+type ns_rr = __ns_rr /* nameser.h:66:3 */
+
+type ns_flag = uint32 /* nameser.h:87:3 */
+
+type ns_opcode = uint32 /* nameser.h:96:3 */
+
+type ns_rcode = uint32 /* nameser.h:115:3 */
+
+type ns_update_operation = uint32 /* nameser.h:121:3 */
+
+type ns_tsig_key1 = struct {
+ name [1025]uint8
+ alg [1025]uint8
+ _ [6]byte
+ data uintptr
+ len int32
+ _ [4]byte
+} /* nameser.h:123:1 */
+
+type ns_tsig_key = ns_tsig_key1 /* nameser.h:128:28 */
+
+type ns_tcp_tsig_state1 = struct {
+ counter int32
+ _ [4]byte
+ key uintptr
+ ctx uintptr
+ sig [512]uint8
+ siglen int32
+ _ [4]byte
+} /* nameser.h:130:1 */
+
+type ns_tcp_tsig_state = ns_tcp_tsig_state1 /* nameser.h:137:34 */
+
+type ns_type = uint32 /* nameser.h:200:3 */
+
+type ns_class = uint32 /* nameser.h:219:3 */
+
+type ns_key_types = uint32 /* nameser.h:226:3 */
+
+type ns_cert_types = uint32 /* nameser.h:234:3 */
+
+type HEADER = struct {
+ _ [0]uint32
+ id uint32 /* unsigned id: 16, unsigned rd: 1, unsigned tc: 1, unsigned aa: 1, unsigned opcode: 4, unsigned qr: 1, unsigned rcode: 4, unsigned cd: 1, unsigned ad: 1, unsigned unused: 1, unsigned ra: 1 */
+ qdcount uint32 /* unsigned qdcount: 16, unsigned ancount: 16 */
+ nscount uint32 /* unsigned nscount: 16, unsigned arcount: 16 */
+} /* nameser.h:353:3 */
+
+// unused; purely for broken apps
+type __res_state = struct {
+ retrans int32
+ retry int32
+ options uint64
+ nscount int32
+ nsaddr_list [3]struct {
+ sin_family sa_family_t
+ sin_port in_port_t
+ sin_addr struct{ s_addr in_addr_t }
+ sin_zero [8]uint8_t
+ }
+ id uint16
+ _ [2]byte
+ dnsrch [7]uintptr
+ defdname [256]uint8
+ pfcode uint64
+ ndots uint32 /* unsigned ndots: 4, unsigned nsort: 4, unsigned ipv6_unavail: 1, unsigned unused: 23 */
+ _ [4]byte
+ sort_list [10]struct {
+ addr struct{ s_addr in_addr_t }
+ mask uint32_t
+ }
+ qhook uintptr
+ rhook uintptr
+ res_h_errno int32
+ _vcsock int32
+ _flags uint32
+ _ [4]byte
+ _u struct {
+ _ [0]uint64
+ pad [52]uint8
+ _ [4]byte
+ }
+} /* resolv.h:26:9 */
+
+// unused; purely for broken apps
+type res_state = uintptr /* resolv.h:62:3 */
+
+type res_sym = struct {
+ number int32
+ _ [4]byte
+ name uintptr
+ humanname uintptr
+} /* resolv.h:70:1 */
+
+func itoa(tls *TLS, p uintptr, x uint32) uintptr { /* getnameinfo.c:18:13: */
+ p += uintptr(uint64(3) * uint64(unsafe.Sizeof(int32(0))))
+ *(*uint8)(unsafe.Pointer(PreDecUintptr(&p, 1))) = uint8(0)
+ for __ccgo := true; __ccgo; __ccgo = x != 0 {
+ *(*uint8)(unsafe.Pointer(PreDecUintptr(&p, 1))) = uint8(uint32('0') + x%uint32(10))
+ x = x / uint32(10)
+ }
+ return p
+}
+
+func mkptr4(tls *TLS, s uintptr, ip uintptr) { /* getnameinfo.c:28:13: */
+ bp := tls.Alloc(32)
+ defer tls.Free(32)
+
+ Xsprintf(tls, s, ts+25,
+ VaList(bp, int32(*(*uint8)(unsafe.Pointer(ip + 3))), int32(*(*uint8)(unsafe.Pointer(ip + 2))), int32(*(*uint8)(unsafe.Pointer(ip + 1))), int32(*(*uint8)(unsafe.Pointer(ip)))))
+}
+
+func mkptr6(tls *TLS, s uintptr, ip uintptr) { /* getnameinfo.c:34:13: */
+ var i int32
+ for i = 15; i >= 0; i-- {
+ *(*uint8)(unsafe.Pointer(PostIncUintptr(&s, 1))) = _sxdigits[int32(*(*uint8)(unsafe.Pointer(ip + uintptr(i))))&15]
+ *(*uint8)(unsafe.Pointer(PostIncUintptr(&s, 1))) = uint8('.')
+ *(*uint8)(unsafe.Pointer(PostIncUintptr(&s, 1))) = _sxdigits[int32(*(*uint8)(unsafe.Pointer(ip + uintptr(i))))>>4]
+ *(*uint8)(unsafe.Pointer(PostIncUintptr(&s, 1))) = uint8('.')
+ }
+ Xstrcpy(tls, s, ts+50)
+}
+
+var _sxdigits = *(*[17]uint8)(unsafe.Pointer(ts + 59)) /* getnameinfo.c:36:20 */
+
+func reverse_hosts(tls *TLS, buf uintptr, a uintptr, scopeid uint32, family int32) { /* getnameinfo.c:45:13: */
+ bp := tls.Alloc(556)
+ defer tls.Free(556)
+
+ // var line [512]uint8 at bp+16, 512
+
+ var p uintptr
+ var z uintptr
+ var _buf [1032]uint8
+ _ = _buf
+ // var atmp [16]uint8 at bp, 16
+
+ // var iplit address at bp+528, 28
+
+ //TODO FILE _f, *f = __fopen_rb_ca("/etc/hosts", &_f, _buf, sizeof _buf);
+ var f uintptr = Xfopen(tls, ts+76, ts+87)
+ if !(f != 0) {
+ return
+ }
+ if family == 2 {
+ Xmemcpy(tls, bp+uintptr(12), a, uint64(4))
+ Xmemcpy(tls, bp, ts+90, uint64(12))
+ a = bp /* &atmp[0] */
+ }
+ for Xfgets(tls, bp+16, int32(unsafe.Sizeof([512]uint8{})), f) != 0 {
+ if AssignUintptr(&p, Xstrchr(tls, bp+16, '#')) != 0 {
+ *(*uint8)(unsafe.Pointer(PostIncUintptr(&p, 1))) = uint8('\n')
+ *(*uint8)(unsafe.Pointer(p)) = uint8(0)
+ }
+
+ for p = bp + 16; /* &line[0] */ *(*uint8)(unsafe.Pointer(p)) != 0 && !(__isspace(tls, int32(*(*uint8)(unsafe.Pointer(p)))) != 0); p++ {
+ }
+ *(*uint8)(unsafe.Pointer(PostIncUintptr(&p, 1))) = uint8(0)
+ if X__lookup_ipliteral(tls, bp+528, bp+16, 0) <= 0 {
+ continue
+ }
+
+ if (*address)(unsafe.Pointer(bp+528)).family == 2 {
+ Xmemcpy(tls, bp+528+8+uintptr(12), bp+528+8, uint64(4))
+ Xmemcpy(tls, bp+528+8, ts+90, uint64(12))
+ (*address)(unsafe.Pointer(bp + 528 /* &iplit */)).scopeid = uint32(0)
+ }
+
+ if Xmemcmp(tls, a, bp+528+8, uint64(16)) != 0 || (*address)(unsafe.Pointer(bp+528)).scopeid != scopeid {
+ continue
+ }
+
+ for ; *(*uint8)(unsafe.Pointer(p)) != 0 && __isspace(tls, int32(*(*uint8)(unsafe.Pointer(p)))) != 0; p++ {
+ }
+ for z = p; *(*uint8)(unsafe.Pointer(z)) != 0 && !(__isspace(tls, int32(*(*uint8)(unsafe.Pointer(z)))) != 0); z++ {
+ }
+ *(*uint8)(unsafe.Pointer(z)) = uint8(0)
+ if (int64(z)-int64(p))/1 < int64(256) {
+ Xmemcpy(tls, buf, p, uint64((int64(z)-int64(p))/1+int64(1)))
+ break
+ }
+ }
+ //TODO __fclose_ca(f);
+ Xfclose(tls, f)
+}
+
+func reverse_services(tls *TLS, buf uintptr, port int32, dgram int32) { /* getnameinfo.c:87:13: */
+ Xabort(tls) //TODO-
+ // unsigned long svport;
+ // char line[128], *p, *z;
+ // unsigned char _buf[1032];
+ // FILE _f, *f = __fopen_rb_ca("/etc/services", &_f, _buf, sizeof _buf);
+ // if (!f) return;
+ // while (fgets(line, sizeof line, f)) {
+ // if ((p=strchr(line, '#'))) *p++='\n', *p=0;
+
+ // for (p=line; *p && !isspace(*p); p++);
+ // if (!*p) continue;
+ // *p++ = 0;
+ // svport = strtoul(p, &z, 10);
+
+ // if (svport != port || z==p) continue;
+ // if (dgram && strncmp(z, "/udp", 4)) continue;
+ // if (!dgram && strncmp(z, "/tcp", 4)) continue;
+ // if (p-line > 32) continue;
+
+ // memcpy(buf, line, p-line);
+ // break;
+ // }
+ // __fclose_ca(f);
+}
+
+func Xgetnameinfo(tls *TLS, sa1 uintptr, sl socklen_t, node uintptr, nodelen socklen_t, serv uintptr, servlen socklen_t, flags int32) int32 { /* getnameinfo.c:125:5: */
+ bp := tls.Alloc(347)
+ defer tls.Free(347)
+
+ // var ptr [78]uint8 at bp, 78
+
+ // var buf [256]uint8 at bp+78, 256
+
+ // var num [13]uint8 at bp+334, 13
+
+ var af int32 = int32((*sockaddr)(unsafe.Pointer(sa1)).sa_family)
+ var a uintptr
+ var scopeid uint32
+
+ switch af {
+ case 2:
+ a = sa1 + 4
+ if uint64(sl) < uint64(unsafe.Sizeof(sockaddr_in{})) {
+ return -6
+ }
+ mkptr4(tls, bp, a)
+ scopeid = uint32(0)
+ break
+ case 10:
+ a = sa1 + 8
+ if uint64(sl) < uint64(unsafe.Sizeof(sockaddr_in6{})) {
+ return -6
+ }
+ if Xmemcmp(tls, a, ts+90, uint64(12)) != 0 {
+ mkptr6(tls, bp, a)
+ } else {
+ mkptr4(tls, bp, a+uintptr(12))
+ }
+ scopeid = (*sockaddr_in6)(unsafe.Pointer(sa1)).sin6_scope_id
+ break
+ default:
+ return -6
+ }
+
+ if node != 0 && nodelen != 0 {
+ *(*uint8)(unsafe.Pointer(bp + 78)) = uint8(0)
+ if !(flags&0x01 != 0) {
+ reverse_hosts(tls, bp+78, a, scopeid, af)
+ }
+ if !(int32(*(*uint8)(unsafe.Pointer(bp + 78))) != 0) && !(flags&0x01 != 0) {
+ Xabort(tls) //TODO-
+ // unsigned char query[18+PTR_MAX], reply[512];
+ // int qlen = __res_mkquery(0, ptr, 1, RR_PTR,
+ // 0, 0, 0, query, sizeof query);
+ // query[3] = 0; /* don't need AD flag */
+ // int rlen = __res_send(query, qlen, reply, sizeof reply);
+ // buf[0] = 0;
+ // if (rlen > 0)
+ // __dns_parse(reply, rlen, dns_parse_callback, buf);
+ }
+ if !(int32(*(*uint8)(unsafe.Pointer(bp + 78))) != 0) {
+ if flags&0x08 != 0 {
+ return -2
+ }
+ Xinet_ntop(tls, af, a, bp+78, uint32(unsafe.Sizeof([256]uint8{})))
+ if scopeid != 0 {
+ Xabort(tls) //TODO-
+ // char *p = 0, tmp[IF_NAMESIZE+1];
+ // if (!(flags & NI_NUMERICSCOPE) &&
+ // (IN6_IS_ADDR_LINKLOCAL(a) ||
+ // IN6_IS_ADDR_MC_LINKLOCAL(a)))
+ // p = if_indextoname(scopeid, tmp+1);
+ // if (!p)
+ // p = itoa(num, scopeid);
+ // *--p = '%';
+ // strcat(buf, p);
+ }
+ }
+ if Xstrlen(tls, bp+78) >= size_t(nodelen) {
+ return -12
+ }
+ Xstrcpy(tls, node, bp+78)
+ }
+
+ if serv != 0 && servlen != 0 {
+ var p uintptr = bp + 78 /* buf */
+ var port int32 = int32(Xntohs(tls, (*sockaddr_in)(unsafe.Pointer(sa1)).sin_port))
+ *(*uint8)(unsafe.Pointer(bp + 78)) = uint8(0)
+ if !(flags&0x02 != 0) {
+ reverse_services(tls, bp+78, port, flags&0x10)
+ }
+ if !(int32(*(*uint8)(unsafe.Pointer(p))) != 0) {
+ p = itoa(tls, bp+334, uint32(port))
+ }
+ if Xstrlen(tls, p) >= size_t(servlen) {
+ return -12
+ }
+ Xstrcpy(tls, serv, p)
+ }
+
+ return 0
+}
+
+var Xh_errno int32 /* h_errno.c:4:5: */
+
+func X__h_errno_location(tls *TLS) uintptr { /* h_errno.c:6:5: */
+ return uintptr(unsafe.Pointer(&Xh_errno))
+}
+
+func X__inet_aton(tls *TLS, s0 uintptr, dest uintptr) int32 { /* inet_aton.c:7:5: */
+ bp := tls.Alloc(40)
+ defer tls.Free(40)
+
+ var s uintptr = s0
+ var d uintptr = dest
+ *(*[4]uint64)(unsafe.Pointer(bp /* a */)) = [4]uint64{0: uint64(0)}
+ // var z uintptr at bp+32, 8
+
+ var i int32
+
+ for i = 0; i < 4; i++ {
+ *(*uint64)(unsafe.Pointer(bp + uintptr(i)*8)) = Xstrtoul(tls, s, bp+32, 0)
+ if *(*uintptr)(unsafe.Pointer(bp + 32)) == s || *(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))) != 0 && int32(*(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32))))) != '.' || !(func() int32 {
+ if 0 != 0 {
+ return Xisdigit(tls, int32(*(*uint8)(unsafe.Pointer(s))))
+ }
+ return Bool32(uint32(*(*uint8)(unsafe.Pointer(s)))-uint32('0') < uint32(10))
+ }() != 0) {
+ return 0
+ }
+ if !(int32(*(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32))))) != 0) {
+ break
+ }
+ s = *(*uintptr)(unsafe.Pointer(bp + 32)) + uintptr(1)
+ }
+ if i == 4 {
+ return 0
+ }
+ switch i {
+ case 0:
+ *(*uint64)(unsafe.Pointer(bp + 1*8)) = *(*uint64)(unsafe.Pointer(bp)) & uint64(0xffffff)
+ AssignShrPtrUint64(bp, int(24))
+ fallthrough
+ case 1:
+ *(*uint64)(unsafe.Pointer(bp + 2*8)) = *(*uint64)(unsafe.Pointer(bp + 1*8)) & uint64(0xffff)
+ AssignShrPtrUint64(bp+1*8, int(16))
+ fallthrough
+ case 2:
+ *(*uint64)(unsafe.Pointer(bp + 3*8)) = *(*uint64)(unsafe.Pointer(bp + 2*8)) & uint64(0xff)
+ AssignShrPtrUint64(bp+2*8, int(8))
+ }
+ for i = 0; i < 4; i++ {
+ if *(*uint64)(unsafe.Pointer(bp + uintptr(i)*8)) > uint64(255) {
+ return 0
+ }
+ *(*uint8)(unsafe.Pointer(d + uintptr(i))) = uint8(*(*uint64)(unsafe.Pointer(bp + uintptr(i)*8)))
+ }
+ return 1
+}
+
+func Xinet_ntop(tls *TLS, af int32, a0 uintptr, s uintptr, l socklen_t) uintptr { /* inet_ntop.c:7:12: */
+ bp := tls.Alloc(276)
+ defer tls.Free(276)
+
+ var a uintptr = a0
+ var i int32
+ var j int32
+ var max int32
+ var best int32
+ // var buf [100]uint8 at bp+176, 100
+
+ switch af {
+ case 2:
+ if socklen_t(Xsnprintf(tls, s, uint64(l), ts+103, VaList(bp, int32(*(*uint8)(unsafe.Pointer(a))), int32(*(*uint8)(unsafe.Pointer(a + 1))), int32(*(*uint8)(unsafe.Pointer(a + 2))), int32(*(*uint8)(unsafe.Pointer(a + 3)))))) < l {
+ return s
+ }
+ break
+ case 10:
+ if Xmemcmp(tls, a, ts+90, uint64(12)) != 0 {
+ Xsnprintf(tls, bp+176, uint64(unsafe.Sizeof([100]uint8{})),
+ ts+115,
+ VaList(bp+32, 256*int32(*(*uint8)(unsafe.Pointer(a)))+int32(*(*uint8)(unsafe.Pointer(a + 1))), 256*int32(*(*uint8)(unsafe.Pointer(a + 2)))+int32(*(*uint8)(unsafe.Pointer(a + 3))),
+ 256*int32(*(*uint8)(unsafe.Pointer(a + 4)))+int32(*(*uint8)(unsafe.Pointer(a + 5))), 256*int32(*(*uint8)(unsafe.Pointer(a + 6)))+int32(*(*uint8)(unsafe.Pointer(a + 7))),
+ 256*int32(*(*uint8)(unsafe.Pointer(a + 8)))+int32(*(*uint8)(unsafe.Pointer(a + 9))), 256*int32(*(*uint8)(unsafe.Pointer(a + 10)))+int32(*(*uint8)(unsafe.Pointer(a + 11))),
+ 256*int32(*(*uint8)(unsafe.Pointer(a + 12)))+int32(*(*uint8)(unsafe.Pointer(a + 13))), 256*int32(*(*uint8)(unsafe.Pointer(a + 14)))+int32(*(*uint8)(unsafe.Pointer(a + 15)))))
+ } else {
+ Xsnprintf(tls, bp+176, uint64(unsafe.Sizeof([100]uint8{})),
+ ts+139,
+ VaList(bp+96, 256*int32(*(*uint8)(unsafe.Pointer(a)))+int32(*(*uint8)(unsafe.Pointer(a + 1))), 256*int32(*(*uint8)(unsafe.Pointer(a + 2)))+int32(*(*uint8)(unsafe.Pointer(a + 3))),
+ 256*int32(*(*uint8)(unsafe.Pointer(a + 4)))+int32(*(*uint8)(unsafe.Pointer(a + 5))), 256*int32(*(*uint8)(unsafe.Pointer(a + 6)))+int32(*(*uint8)(unsafe.Pointer(a + 7))),
+ 256*int32(*(*uint8)(unsafe.Pointer(a + 8)))+int32(*(*uint8)(unsafe.Pointer(a + 9))), 256*int32(*(*uint8)(unsafe.Pointer(a + 10)))+int32(*(*uint8)(unsafe.Pointer(a + 11))),
+ int32(*(*uint8)(unsafe.Pointer(a + 12))), int32(*(*uint8)(unsafe.Pointer(a + 13))), int32(*(*uint8)(unsafe.Pointer(a + 14))), int32(*(*uint8)(unsafe.Pointer(a + 15)))))
+ }
+ // Replace longest /(^0|:)[:0]{2,}/ with "::"
+ i = AssignInt32(&best, 0)
+ max = 2
+ for ; *(*uint8)(unsafe.Pointer(bp + 176 + uintptr(i))) != 0; i++ {
+ if i != 0 && int32(*(*uint8)(unsafe.Pointer(bp + 176 + uintptr(i)))) != ':' {
+ continue
+ }
+ j = int32(Xstrspn(tls, bp+176+uintptr(i), ts+169))
+ if j > max {
+ best = i
+ max = j
+ }
+ }
+ if max > 3 {
+ *(*uint8)(unsafe.Pointer(bp + 176 + uintptr(best))) = AssignPtrUint8(bp+176+uintptr(best+1), uint8(':'))
+ Xmemmove(tls, bp+176+uintptr(best)+uintptr(2), bp+176+uintptr(best)+uintptr(max), uint64(i-best-max+1))
+ }
+ if Xstrlen(tls, bp+176) < size_t(l) {
+ Xstrcpy(tls, s, bp+176)
+ return s
+ }
+ break
+ default:
+ *(*int32)(unsafe.Pointer(X___errno_location(tls))) = 97
+ return uintptr(0)
+ }
+ *(*int32)(unsafe.Pointer(X___errno_location(tls))) = 28
+ return uintptr(0)
+}
+
+func hexval(tls *TLS, c uint32) int32 { /* inet_pton.c:7:12: */
+ if c-uint32('0') < uint32(10) {
+ return int32(c - uint32('0'))
+ }
+ c = c | uint32(32)
+ if c-uint32('a') < uint32(6) {
+ return int32(c - uint32('a') + uint32(10))
+ }
+ return -1
+}
+
+func Xinet_pton(tls *TLS, af int32, s uintptr, a0 uintptr) int32 { /* inet_pton.c:15:5: */
+ bp := tls.Alloc(16)
+ defer tls.Free(16)
+
+ // var ip [8]uint16_t at bp, 16
+
+ var a uintptr = a0
+ var i int32
+ var j int32
+ var v int32
+ var d int32
+ var brk int32 = -1
+ var need_v4 int32 = 0
+
+ if af == 2 {
+ for i = 0; i < 4; i++ {
+ for v = AssignInt32(&j, 0); j < 3 && func() int32 {
+ if 0 != 0 {
+ return Xisdigit(tls, int32(*(*uint8)(unsafe.Pointer(s + uintptr(j)))))
+ }
+ return Bool32(uint32(*(*uint8)(unsafe.Pointer(s + uintptr(j))))-uint32('0') < uint32(10))
+ }() != 0; j++ {
+ v = 10*v + int32(*(*uint8)(unsafe.Pointer(s + uintptr(j)))) - '0'
+ }
+ if j == 0 || j > 1 && int32(*(*uint8)(unsafe.Pointer(s))) == '0' || v > 255 {
+ return 0
+ }
+ *(*uint8)(unsafe.Pointer(a + uintptr(i))) = uint8(v)
+ if int32(*(*uint8)(unsafe.Pointer(s + uintptr(j)))) == 0 && i == 3 {
+ return 1
+ }
+ if int32(*(*uint8)(unsafe.Pointer(s + uintptr(j)))) != '.' {
+ return 0
+ }
+ s += uintptr(j + 1)
+ }
+ return 0
+ } else if af != 10 {
+ *(*int32)(unsafe.Pointer(X___errno_location(tls))) = 97
+ return -1
+ }
+
+ if int32(*(*uint8)(unsafe.Pointer(s))) == ':' && int32(*(*uint8)(unsafe.Pointer(PreIncUintptr(&s, 1)))) != ':' {
+ return 0
+ }
+
+ for i = 0; ; i++ {
+ if int32(*(*uint8)(unsafe.Pointer(s))) == ':' && brk < 0 {
+ brk = i
+ *(*uint16_t)(unsafe.Pointer(bp + uintptr(i&7)*2)) = uint16_t(0)
+ if !(int32(*(*uint8)(unsafe.Pointer(PreIncUintptr(&s, 1)))) != 0) {
+ break
+ }
+ if i == 7 {
+ return 0
+ }
+ continue
+ }
+ for v = AssignInt32(&j, 0); j < 4 && AssignInt32(&d, hexval(tls, uint32(*(*uint8)(unsafe.Pointer(s + uintptr(j)))))) >= 0; j++ {
+ v = 16*v + d
+ }
+ if j == 0 {
+ return 0
+ }
+ *(*uint16_t)(unsafe.Pointer(bp + uintptr(i&7)*2)) = uint16_t(v)
+ if !(int32(*(*uint8)(unsafe.Pointer(s + uintptr(j)))) != 0) && (brk >= 0 || i == 7) {
+ break
+ }
+ if i == 7 {
+ return 0
+ }
+ if int32(*(*uint8)(unsafe.Pointer(s + uintptr(j)))) != ':' {
+ if int32(*(*uint8)(unsafe.Pointer(s + uintptr(j)))) != '.' || i < 6 && brk < 0 {
+ return 0
+ }
+ need_v4 = 1
+ i++
+ break
+ }
+ s += uintptr(j + 1)
+ }
+ if brk >= 0 {
+ Xmemmove(tls, bp+uintptr(brk)*2+uintptr(7)*2-uintptr(i)*2, bp+uintptr(brk)*2, uint64(2*(i+1-brk)))
+ for j = 0; j < 7-i; j++ {
+ *(*uint16_t)(unsafe.Pointer(bp + uintptr(brk+j)*2)) = uint16_t(0)
+ }
+ }
+ for j = 0; j < 8; j++ {
+ *(*uint8)(unsafe.Pointer(PostIncUintptr(&a, 1))) = uint8(int32(*(*uint16_t)(unsafe.Pointer(bp + uintptr(j)*2))) >> 8)
+ *(*uint8)(unsafe.Pointer(PostIncUintptr(&a, 1))) = uint8(*(*uint16_t)(unsafe.Pointer(bp + uintptr(j)*2)))
+ }
+ if need_v4 != 0 && Xinet_pton(tls, 2, s, a-uintptr(4)) <= 0 {
+ return 0
+ }
+ return 1
+}
+
+func X__lookup_ipliteral(tls *TLS, buf uintptr, name uintptr, family int32) int32 { /* lookup_ipliteral.c:12:5: */
+ bp := tls.Alloc(96)
+ defer tls.Free(96)
+
+ // var a4 in_addr at bp, 4
+
+ // var a6 in6_addr at bp+68, 16
+
+ if X__inet_aton(tls, name, bp) > 0 {
+ if family == 10 { // wrong family
+ return -2
+ }
+ Xmemcpy(tls, buf+8, bp, uint64(unsafe.Sizeof(in_addr{})))
+ (*address)(unsafe.Pointer(buf)).family = 2
+ (*address)(unsafe.Pointer(buf)).scopeid = uint32(0)
+ return 1
+ }
+ // var tmp [64]uint8 at bp+4, 64
+
+ var p uintptr = Xstrchr(tls, name, '%')
+ // var z uintptr at bp+88, 8
+
+ var scopeid uint64 = uint64(0)
+ if p != 0 && (int64(p)-int64(name))/1 < int64(64) {
+ Xmemcpy(tls, bp+4, name, uint64((int64(p)-int64(name))/1))
+ *(*uint8)(unsafe.Pointer(bp + 4 + uintptr((int64(p)-int64(name))/1))) = uint8(0)
+ name = bp + 4 /* &tmp[0] */
+ }
+
+ if Xinet_pton(tls, 10, name, bp+68) <= 0 {
+ return 0
+ }
+ if family == 2 { // wrong family
+ return -2
+ }
+
+ Xmemcpy(tls, buf+8, bp+68, uint64(unsafe.Sizeof(in6_addr{})))
+ (*address)(unsafe.Pointer(buf)).family = 10
+ if p != 0 {
+ if func() int32 {
+ if 0 != 0 {
+ return Xisdigit(tls, int32(*(*uint8)(unsafe.Pointer(PreIncUintptr(&p, 1)))))
+ }
+ return Bool32(uint32(*(*uint8)(unsafe.Pointer(PreIncUintptr(&p, 1))))-uint32('0') < uint32(10))
+ }() != 0 {
+ scopeid = Xstrtoull(tls, p, bp+88, 10)
+ } else {
+ *(*uintptr)(unsafe.Pointer(bp + 88 /* z */)) = p - uintptr(1)
+ }
+ if *(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 88)))) != 0 {
+ Xabort(tls) //TODO-
+ // if (!IN6_IS_ADDR_LINKLOCAL(&a6) &&
+ // !IN6_IS_ADDR_MC_LINKLOCAL(&a6))
+ // return EAI_NONAME;
+ // scopeid = if_nametoindex(p);
+ // if (!scopeid) return EAI_NONAME;
+ }
+ if scopeid > uint64(0xffffffff) {
+ return -2
+ }
+ }
+ (*address)(unsafe.Pointer(buf)).scopeid = uint32(scopeid)
+ return 1
+}
+
+func is_valid_hostname(tls *TLS, host uintptr) int32 { /* lookup_name.c:18:12: */
+ var s uintptr
+ //TODO if (strnlen(host, 255)-1 >= 254 || mbstowcs(0, host, 0) == -1) return 0;
+ if Xstrnlen(tls, host, uint64(255))-uint64(1) >= uint64(254) {
+ return 0
+ }
+ for s = host; int32(*(*uint8)(unsafe.Pointer(s))) >= 0x80 || int32(*(*uint8)(unsafe.Pointer(s))) == '.' || int32(*(*uint8)(unsafe.Pointer(s))) == '-' || Xisalnum(tls, int32(*(*uint8)(unsafe.Pointer(s)))) != 0; s++ {
+ }
+ return BoolInt32(!(*(*uint8)(unsafe.Pointer(s)) != 0))
+}
+
+var Xzero_struct_address address /* lookup_name.c:27:16: */
+
+func name_from_null(tls *TLS, buf uintptr, name uintptr, family int32, flags int32) int32 { /* lookup_name.c:29:12: */
+ var cnt int32 = 0
+ if name != 0 {
+ return 0
+ }
+ if flags&0x01 != 0 {
+ //TODO if (family != AF_INET6)
+ //TODO buf[cnt++] = (struct address){ .family = AF_INET };
+ if family != 10 {
+ var x = Xzero_struct_address
+ x.family = 2
+ *(*address)(unsafe.Pointer(buf + uintptr(PostIncInt32(&cnt, 1))*28)) = x
+ }
+ //TODO if (family != AF_INET)
+ //TODO buf[cnt++] = (struct address){ .family = AF_INET6 };
+ if family != 2 {
+ var x = Xzero_struct_address
+ x.family = 10
+ *(*address)(unsafe.Pointer(buf + uintptr(PostIncInt32(&cnt, 1))*28)) = x
+ }
+ } else {
+ Xabort(tls) //TODO-
+ // if (family != AF_INET6)
+ // buf[cnt++] = (struct address){ .family = AF_INET, .addr = { 127,0,0,1 } };
+ // if (family != AF_INET)
+ // buf[cnt++] = (struct address){ .family = AF_INET6, .addr = { [15] = 1 } };
+ }
+ return cnt
+}
+
+func name_from_numeric(tls *TLS, buf uintptr, name uintptr, family int32) int32 { /* lookup_name.c:58:12: */
+ return X__lookup_ipliteral(tls, buf, name, family)
+}
+
+func name_from_hosts(tls *TLS, buf uintptr, canon uintptr, name uintptr, family int32) int32 { /* lookup_name.c:63:12: */
+ bp := tls.Alloc(512)
+ defer tls.Free(512)
+
+ // var line [512]uint8 at bp, 512
+
+ var l size_t = Xstrlen(tls, name)
+ var cnt int32 = 0
+ var badfam int32 = 0
+ var _buf [1032]uint8
+ _ = _buf
+ //TODO FILE _f, *f = __fopen_rb_ca("/etc/hosts", &_f, _buf, sizeof _buf);
+ var _f FILE
+ _ = _f
+ var f uintptr = Xfopen(tls, ts+76, ts+87)
+ if !(f != 0) {
+ switch *(*int32)(unsafe.Pointer(X___errno_location(tls))) {
+ case 2:
+ fallthrough
+ case 20:
+ fallthrough
+ case 13:
+ return 0
+ fallthrough
+ default:
+ return -11
+ }
+ }
+ for Xfgets(tls, bp, int32(unsafe.Sizeof([512]uint8{})), f) != 0 && cnt < 48 {
+ var p uintptr
+ var z uintptr
+
+ if AssignUintptr(&p, Xstrchr(tls, bp, '#')) != 0 {
+ *(*uint8)(unsafe.Pointer(PostIncUintptr(&p, 1))) = uint8('\n')
+ *(*uint8)(unsafe.Pointer(p)) = uint8(0)
+ }
+ for p = bp + uintptr(1); AssignUintptr(&p, Xstrstr(tls, p, name)) != 0 && (!(__isspace(tls, int32(*(*uint8)(unsafe.Pointer(p + UintptrFromInt32(-1))))) != 0) || !(__isspace(tls, int32(*(*uint8)(unsafe.Pointer(p + uintptr(l))))) != 0)); p++ {
+ }
+ if !(p != 0) {
+ continue
+ }
+
+ // Isolate IP address to parse
+ for p = bp; /* &line[0] */ *(*uint8)(unsafe.Pointer(p)) != 0 && !(__isspace(tls, int32(*(*uint8)(unsafe.Pointer(p)))) != 0); p++ {
+ }
+ *(*uint8)(unsafe.Pointer(PostIncUintptr(&p, 1))) = uint8(0)
+ switch name_from_numeric(tls, buf+uintptr(cnt)*28, bp, family) {
+ case 1:
+ cnt++
+ break
+ case 0:
+ continue
+ default:
+ badfam = -2
+ continue
+ }
+
+ // Extract first name as canonical name
+ for ; *(*uint8)(unsafe.Pointer(p)) != 0 && __isspace(tls, int32(*(*uint8)(unsafe.Pointer(p)))) != 0; p++ {
+ }
+ for z = p; *(*uint8)(unsafe.Pointer(z)) != 0 && !(__isspace(tls, int32(*(*uint8)(unsafe.Pointer(z)))) != 0); z++ {
+ }
+ *(*uint8)(unsafe.Pointer(z)) = uint8(0)
+ if is_valid_hostname(tls, p) != 0 {
+ Xmemcpy(tls, canon, p, uint64((int64(z)-int64(p))/1+int64(1)))
+ }
+ }
+ //TODO __fclose_ca(f);
+ Xfclose(tls, f)
+ if cnt != 0 {
+ return cnt
+ }
+ return badfam
+}
+
+type dpc_ctx = struct {
+ addrs uintptr
+ canon uintptr
+ cnt int32
+ _ [4]byte
+} /* lookup_name.c:112:1 */
+
+func name_from_dns_search(tls *TLS, buf uintptr, canon uintptr, name uintptr, family int32) int32 { /* lookup_name.c:191:12: */
+ return -1 //TODO-
+ Xabort(tls)
+ return int32(0) //TODO-
+ // char search[256];
+ // struct resolvconf conf;
+ // size_t l, dots;
+ // char *p, *z;
+
+ // if (__get_resolv_conf(&conf, search, sizeof search) < 0) return -1;
+
+ // /* Count dots, suppress search when >=ndots or name ends in
+ // * a dot, which is an explicit request for global scope. */
+ // for (dots=l=0; name[l]; l++) if (name[l]=='.') dots++;
+ // if (dots >= conf.ndots || name[l-1]=='.') *search = 0;
+
+ // /* Strip final dot for canon, fail if multiple trailing dots. */
+ // if (name[l-1]=='.') l--;
+ // if (!l || name[l-1]=='.') return EAI_NONAME;
+
+ // /* This can never happen; the caller already checked length. */
+ // if (l >= 256) return EAI_NONAME;
+
+ // /* Name with search domain appended is setup in canon[]. This both
+ // * provides the desired default canonical name (if the requested
+ // * name is not a CNAME record) and serves as a buffer for passing
+ // * the full requested name to name_from_dns. */
+ // memcpy(canon, name, l);
+ // canon[l] = '.';
+
+ // for (p=search; *p; p=z) {
+ // for (; isspace(*p); p++);
+ // for (z=p; *z && !isspace(*z); z++);
+ // if (z==p) break;
+ // if (z-p < 256 - l - 1) {
+ // memcpy(canon+l+1, p, z-p);
+ // canon[z-p+1+l] = 0;
+ // int cnt = name_from_dns(buf, canon, canon, family, &conf);
+ // if (cnt) return cnt;
+ // }
+ // }
+
+ // canon[l] = 0;
+ // return name_from_dns(buf, canon, name, family, &conf);
+}
+
+type policy = struct {
+ addr [16]uint8
+ len uint8
+ mask uint8
+ prec uint8
+ label uint8
+} /* lookup_name.c:237:14 */
+
+var defpolicy = [6]policy{
+ {addr: *(*[16]uint8)(unsafe.Pointer(ts + 172)), len: uint8(15), mask: uint8(0xff), prec: uint8(50)},
+ {addr: *(*[16]uint8)(unsafe.Pointer(ts + 189)), len: uint8(11), mask: uint8(0xff), prec: uint8(35), label: uint8(4)},
+ {addr: *(*[16]uint8)(unsafe.Pointer(ts + 205)), len: uint8(1), mask: uint8(0xff), prec: uint8(30), label: uint8(2)},
+ {addr: *(*[16]uint8)(unsafe.Pointer(ts + 221)), len: uint8(3), mask: uint8(0xff), prec: uint8(5), label: uint8(5)},
+ {addr: *(*[16]uint8)(unsafe.Pointer(ts + 237)), mask: uint8(0xfe), prec: uint8(3), label: uint8(13)},
+ // Last rule must match all addresses to stop loop.
+ {addr: *(*[16]uint8)(unsafe.Pointer(ts + 253)), prec: uint8(40), label: uint8(1)},
+} /* lookup_name.c:241:3 */
+
+func policyof(tls *TLS, a uintptr) uintptr { /* lookup_name.c:259:28: */
+ var i int32
+ for i = 0; ; i++ {
+ if Xmemcmp(tls, a, uintptr(unsafe.Pointer(&defpolicy))+uintptr(i)*20, uint64(defpolicy[i].len)) != 0 {
+ continue
+ }
+ if int32(*(*uint8_t)(unsafe.Pointer(a + uintptr(defpolicy[i].len))))&int32(defpolicy[i].mask) !=
+ int32(*(*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(&defpolicy)) + uintptr(i)*20 + uintptr(defpolicy[i].len)))) {
+ continue
+ }
+ return uintptr(unsafe.Pointer(&defpolicy)) + uintptr(i)*20
+ }
+ return uintptr(0)
+}
+
+func labelof(tls *TLS, a uintptr) int32 { /* lookup_name.c:272:12: */
+ return int32((*policy)(unsafe.Pointer(policyof(tls, a))).label)
+}
+
+func scopeof(tls *TLS, a uintptr) int32 { /* lookup_name.c:277:12: */
+ if int32(*(*uint8_t)(unsafe.Pointer(a))) == 0xff {
+ return int32(*(*uint8_t)(unsafe.Pointer(a + 1))) & 15
+ }
+ if int32(*(*uint8_t)(unsafe.Pointer(a))) == 0xfe && int32(*(*uint8_t)(unsafe.Pointer(a + 1)))&0xc0 == 0x80 {
+ return 2
+ }
+ if *(*uint32_t)(unsafe.Pointer(a)) == uint32_t(0) && *(*uint32_t)(unsafe.Pointer(a + 1*4)) == uint32_t(0) && *(*uint32_t)(unsafe.Pointer(a + 2*4)) == uint32_t(0) && int32(*(*uint8_t)(unsafe.Pointer(a + 12))) == 0 && int32(*(*uint8_t)(unsafe.Pointer(a + 13))) == 0 && int32(*(*uint8_t)(unsafe.Pointer(a + 14))) == 0 && int32(*(*uint8_t)(unsafe.Pointer(a + 15))) == 1 {
+ return 2
+ }
+ if int32(*(*uint8_t)(unsafe.Pointer(a))) == 0xfe && int32(*(*uint8_t)(unsafe.Pointer(a + 1)))&0xc0 == 0xc0 {
+ return 5
+ }
+ return 14
+}
+
+func prefixmatch(tls *TLS, s uintptr, d uintptr) int32 { /* lookup_name.c:286:12: */
+ // FIXME: The common prefix length should be limited to no greater
+ // than the nominal length of the prefix portion of the source
+ // address. However the definition of the source prefix length is
+ // not clear and thus this limiting is not yet implemented.
+ var i uint32
+ for i = uint32(0); i < uint32(128) && !((int32(*(*uint8_t)(unsafe.Pointer(s /* &.__in6_union */ /* &.__s6_addr */ + uintptr(i/uint32(8)))))^int32(*(*uint8_t)(unsafe.Pointer(d /* &.__in6_union */ /* &.__s6_addr */ + uintptr(i/uint32(8))))))&(int32(128)>>(i%uint32(8))) != 0); i++ {
+ }
+ return int32(i)
+}
+
+func addrcmp(tls *TLS, _a uintptr, _b uintptr) int32 { /* lookup_name.c:305:12: */
+ var a uintptr = _a
+ var b uintptr = _b
+ return (*address)(unsafe.Pointer(b)).sortkey - (*address)(unsafe.Pointer(a)).sortkey
+}
+
+func X__lookup_name(tls *TLS, buf uintptr, canon uintptr, name uintptr, family int32, flags int32) int32 { /* lookup_name.c:311:5: */
+ bp := tls.Alloc(92)
+ defer tls.Free(92)
+
+ var cnt int32 = 0
+ var i int32
+ var j int32
+ _ = j
+
+ *(*uint8)(unsafe.Pointer(canon)) = uint8(0)
+ if name != 0 {
+ // reject empty name and check len so it fits into temp bufs
+ var l size_t = Xstrnlen(tls, name, uint64(255))
+ if l-uint64(1) >= uint64(254) {
+ return -2
+ }
+ Xmemcpy(tls, canon, name, l+uint64(1))
+ }
+
+ // Procedurally, a request for v6 addresses with the v4-mapped
+ // flag set is like a request for unspecified family, followed
+ // by filtering of the results.
+ if flags&0x08 != 0 {
+ if family == 10 {
+ family = 0
+ } else {
+ flags = flags - 0x08
+ }
+ }
+
+ // Try each backend until there's at least one result.
+ cnt = name_from_null(tls, buf, name, family, flags)
+ if !(cnt != 0) {
+ cnt = name_from_numeric(tls, buf, name, family)
+ }
+ if !(cnt != 0) && !(flags&0x04 != 0) {
+ cnt = name_from_hosts(tls, buf, canon, name, family)
+ if !(cnt != 0) {
+ cnt = name_from_dns_search(tls, buf, canon, name, family)
+ }
+ }
+ if cnt <= 0 {
+ if cnt != 0 {
+ return cnt
+ }
+ return -2
+ }
+
+ // Filter/transform results for v4-mapped lookup, if requested.
+ if flags&0x08 != 0 {
+ Xabort(tls) //TODO-
+ // if (!(flags & AI_ALL)) {
+ // /* If any v6 results exist, remove v4 results. */
+ // for (i=0; i<cnt && buf[i].family != AF_INET6; i++);
+ // if (i<cnt) {
+ // for (j=0; i<cnt; i++) {
+ // if (buf[i].family == AF_INET6)
+ // buf[j++] = buf[i];
+ // }
+ // cnt = i = j;
+ // }
+ // }
+ // /* Translate any remaining v4 results to v6 */
+ // for (i=0; i<cnt; i++) {
+ // if (buf[i].family != AF_INET) continue;
+ // memcpy(buf[i].addr+12, buf[i].addr, 4);
+ // memcpy(buf[i].addr, "\0\0\0\0\0\0\0\0\0\0\xff\xff", 12);
+ // buf[i].family = AF_INET6;
+ // }
+ }
+
+ // No further processing is needed if there are fewer than 2
+ // results or if there are only IPv4 results.
+ if cnt < 2 || family == 2 {
+ return cnt
+ }
+ for i = 0; i < cnt; i++ {
+ if (*address)(unsafe.Pointer(buf+uintptr(i)*28)).family != 2 {
+ break
+ }
+ }
+ if i == cnt {
+ return cnt
+ }
+ var cs int32
+ _ = cs
+ //TODO pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
+
+ // The following implements a subset of RFC 3484/6724 destination
+ // address selection by generating a single 31-bit sort key for
+ // each address. Rules 3, 4, and 7 are omitted for having
+ // excessive runtime and code size cost and dubious benefit.
+ // So far the label/precedence table cannot be customized.
+ for i = 0; i < cnt; i++ {
+ var family int32 = (*address)(unsafe.Pointer(buf + uintptr(i)*28)).family
+ var key int32 = 0
+ *(*sockaddr_in6)(unsafe.Pointer(bp + 28 /* sa6 */)) = sockaddr_in6{}
+ *(*sockaddr_in6)(unsafe.Pointer(bp /* da6 */)) = sockaddr_in6{sin6_family: sa_family_t(10), sin6_port: in_port_t(65535), sin6_scope_id: (*address)(unsafe.Pointer(buf + uintptr(i)*28)).scopeid}
+ *(*sockaddr_in)(unsafe.Pointer(bp + 72 /* sa4 */)) = sockaddr_in{}
+ *(*sockaddr_in)(unsafe.Pointer(bp + 56 /* da4 */)) = sockaddr_in{sin_family: sa_family_t(2), sin_port: in_port_t(65535)}
+ var sa1 uintptr
+ var da uintptr
+ // var salen socklen_t at bp+88, 4
+
+ var dalen socklen_t
+ if family == 10 {
+ Xmemcpy(tls, bp+8, buf+uintptr(i)*28+8, uint64(16))
+ da = bp /* &da6 */
+ dalen = socklen_t(unsafe.Sizeof(sockaddr_in6{}))
+ sa1 = bp + 28 /* &sa6 */
+ *(*socklen_t)(unsafe.Pointer(bp + 88 /* salen */)) = socklen_t(unsafe.Sizeof(sockaddr_in6{}))
+ } else {
+ Xmemcpy(tls, bp+28+8,
+ ts+90, uint64(12))
+ Xmemcpy(tls, bp+8+uintptr(12), buf+uintptr(i)*28+8, uint64(4))
+ Xmemcpy(tls, bp+8,
+ ts+90, uint64(12))
+ Xmemcpy(tls, bp+8+uintptr(12), buf+uintptr(i)*28+8, uint64(4))
+ Xmemcpy(tls, bp+56+4, buf+uintptr(i)*28+8, uint64(4))
+ da = bp + 56 /* &da4 */
+ dalen = socklen_t(unsafe.Sizeof(sockaddr_in{}))
+ sa1 = bp + 72 /* &sa4 */
+ *(*socklen_t)(unsafe.Pointer(bp + 88 /* salen */)) = socklen_t(unsafe.Sizeof(sockaddr_in{}))
+ }
+ var dpolicy uintptr = policyof(tls, bp+8)
+ var dscope int32 = scopeof(tls, bp+8)
+ var dlabel int32 = int32((*policy)(unsafe.Pointer(dpolicy)).label)
+ var dprec int32 = int32((*policy)(unsafe.Pointer(dpolicy)).prec)
+ var prefixlen int32 = 0
+ var fd int32 = Xsocket(tls, family, 2|02000000, 17)
+ if fd >= 0 {
+ if !(Xconnect(tls, fd, da, dalen) != 0) {
+ key = key | 0x40000000
+ if !(Xgetsockname(tls, fd, sa1, bp+88) != 0) {
+ if family == 2 {
+ Xmemcpy(tls,
+ bp+28+8+uintptr(12),
+ bp+72+4, uint64(4))
+ }
+ if dscope == scopeof(tls, bp+28+8) {
+ key = key | 0x20000000
+ }
+ if dlabel == labelof(tls, bp+28+8) {
+ key = key | 0x10000000
+ }
+ prefixlen = prefixmatch(tls, bp+28+8,
+ bp+8)
+ }
+ }
+ Xclose(tls, fd)
+ }
+ key = key | dprec<<20
+ key = key | (15-dscope)<<16
+ key = key | prefixlen<<8
+ key = key | (48-i)<<0
+ (*address)(unsafe.Pointer(buf + uintptr(i)*28)).sortkey = key
+ }
+ Xqsort(tls, buf, uint64(cnt), uint64(unsafe.Sizeof(address{})), *(*uintptr)(unsafe.Pointer(&struct {
+ f func(*TLS, uintptr, uintptr) int32
+ }{addrcmp})))
+
+ //TODO pthread_setcancelstate(cs, 0);
+
+ return cnt
+}
+
+func X__lookup_serv(tls *TLS, buf uintptr, name uintptr, proto int32, socktype int32, flags int32) int32 { /* lookup_serv.c:12:5: */
+ bp := tls.Alloc(8)
+ defer tls.Free(8)
+
+ var line [128]uint8
+ _ = line
+ var cnt int32 = 0
+ var p uintptr
+ _ = p
+ *(*uintptr)(unsafe.Pointer(bp /* z */)) = ts + 13 /* "" */
+ var port uint64 = uint64(0)
+
+ switch socktype {
+ case 1:
+ switch proto {
+ case 0:
+ proto = 6
+ fallthrough
+ case 6:
+ break
+ default:
+ return -8
+ }
+ break
+ case 2:
+ switch proto {
+ case 0:
+ proto = 17
+ fallthrough
+ case 17:
+ break
+ default:
+ return -8
+ }
+ fallthrough
+ case 0:
+ break
+ default:
+ if name != 0 {
+ return -8
+ }
+ (*service)(unsafe.Pointer(buf)).port = uint16_t(0)
+ (*service)(unsafe.Pointer(buf)).proto = uint8(proto)
+ (*service)(unsafe.Pointer(buf)).socktype = uint8(socktype)
+ return 1
+ }
+
+ if name != 0 {
+ if !(int32(*(*uint8)(unsafe.Pointer(name))) != 0) {
+ return -8
+ }
+ port = Xstrtoul(tls, name, bp, 10)
+ }
+ if !(int32(*(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp))))) != 0) {
+ if port > uint64(65535) {
+ return -8
+ }
+ if proto != 17 {
+ (*service)(unsafe.Pointer(buf + uintptr(cnt)*4)).port = uint16_t(port)
+ (*service)(unsafe.Pointer(buf + uintptr(cnt)*4)).socktype = uint8(1)
+ (*service)(unsafe.Pointer(buf + uintptr(PostIncInt32(&cnt, 1))*4)).proto = uint8(6)
+ }
+ if proto != 6 {
+ (*service)(unsafe.Pointer(buf + uintptr(cnt)*4)).port = uint16_t(port)
+ (*service)(unsafe.Pointer(buf + uintptr(cnt)*4)).socktype = uint8(2)
+ (*service)(unsafe.Pointer(buf + uintptr(PostIncInt32(&cnt, 1))*4)).proto = uint8(17)
+ }
+ return cnt
+ }
+
+ if flags&0x400 != 0 {
+ return -2
+ }
+
+ var l size_t = Xstrlen(tls, name)
+ _ = l
+
+ Xabort(tls) //TODO-
+ // unsigned char _buf[1032];
+ // FILE _f, *f = __fopen_rb_ca("/etc/services", &_f, _buf, sizeof _buf);
+ // if (!f) switch (errno) {
+ // case ENOENT:
+ // case ENOTDIR:
+ // case EACCES:
+ // return EAI_SERVICE;
+ // default:
+ // return EAI_SYSTEM;
+ // }
+
+ Xabort(tls) //TODO-
+ // while (fgets(line, sizeof line, f) && cnt < MAXSERVS) {
+ // if ((p=strchr(line, '#'))) *p++='\n', *p=0;
+
+ // /* Find service name */
+ // for(p=line; (p=strstr(p, name)); p++) {
+ // if (p>line && !isspace(p[-1])) continue;
+ // if (p[l] && !isspace(p[l])) continue;
+ // break;
+ // }
+ // if (!p) continue;
+
+ // /* Skip past canonical name at beginning of line */
+ // for (p=line; *p && !isspace(*p); p++);
+
+ // port = strtoul(p, &z, 10);
+ // if (port > 65535 || z==p) continue;
+ // if (!strncmp(z, "/udp", 4)) {
+ // if (proto == IPPROTO_TCP) continue;
+ // buf[cnt].port = port;
+ // buf[cnt].socktype = SOCK_DGRAM;
+ // buf[cnt++].proto = IPPROTO_UDP;
+ // }
+ // if (!strncmp(z, "/tcp", 4)) {
+ // if (proto == IPPROTO_UDP) continue;
+ // buf[cnt].port = port;
+ // buf[cnt].socktype = SOCK_STREAM;
+ // buf[cnt++].proto = IPPROTO_TCP;
+ // }
+ // }
+ // __fclose_ca(f);
+ // return cnt > 0 ? cnt : EAI_SERVICE;
+ Xabort(tls)
+ return int32(0) //TODO-
+}
+
+func temper(tls *TLS, x uint32) uint32 { /* rand_r.c:3:17: */
+ x = x ^ x>>11
+ x = x ^ x<<7&0x9D2C5680
+ x = x ^ x<<15&0xEFC60000
+ x = x ^ x>>18
+ return x
+}
+
+func Xrand_r(tls *TLS, seed uintptr) int32 { /* rand_r.c:12:5: */
+ return int32(temper(tls, AssignPtrUint32(seed, *(*uint32)(unsafe.Pointer(seed))*uint32(1103515245)+uint32(12345))) / uint32(2))
+}
+
+func X__lockfile(tls *TLS, f uintptr) int32 { /* __lockfile.c:4:5: */
+ var owner int32 = (*FILE)(unsafe.Pointer(f)).lock
+ var tid int32 = (*__pthread)(unsafe.Pointer(__pthread_self(tls))).tid
+ if owner&CplInt32(0x40000000) == tid {
+ return 0
+ }
+ owner = a_cas(tls, f+140, 0, tid)
+ if !(owner != 0) {
+ return 1
+ }
+ for AssignInt32(&owner, a_cas(tls, f+140, 0, tid|0x40000000)) != 0 {
+ if owner&0x40000000 != 0 || a_cas(tls, f+140, owner, owner|0x40000000) == owner {
+ __futexwait(tls, f+140, owner|0x40000000, 1)
+ }
+ }
+ return 1
+}
+
+func X__unlockfile(tls *TLS, f uintptr) { /* __lockfile.c:19:6: */
+ if a_swap(tls, f+140, 0)&0x40000000 != 0 {
+ __wake(tls, f+140, 1, 1)
+ }
+}
+
+func X__toread(tls *TLS, f uintptr) int32 { /* __toread.c:3:5: */
+ *(*int32)(unsafe.Pointer(f + 136)) |= (*FILE)(unsafe.Pointer(f)).mode - 1
+ if (*FILE)(unsafe.Pointer(f)).wpos != (*FILE)(unsafe.Pointer(f)).wbase {
+ (*struct {
+ f func(*TLS, uintptr, uintptr, size_t) size_t
+ })(unsafe.Pointer(&struct{ uintptr }{(*FILE)(unsafe.Pointer(f)).write})).f(tls, f, uintptr(0), uint64(0))
+ }
+ (*FILE)(unsafe.Pointer(f)).wpos = AssignPtrUintptr(f+56, AssignPtrUintptr(f+32, uintptr(0)))
+ if (*FILE)(unsafe.Pointer(f)).flags&uint32(4) != 0 {
+ *(*uint32)(unsafe.Pointer(f)) |= uint32(32)
+ return -1
+ }
+ (*FILE)(unsafe.Pointer(f)).rpos = AssignPtrUintptr(f+16, (*FILE)(unsafe.Pointer(f)).buf+uintptr((*FILE)(unsafe.Pointer(f)).buf_size))
+ if (*FILE)(unsafe.Pointer(f)).flags&uint32(16) != 0 {
+ return -1
+ }
+ return 0
+}
+
+func X__toread_needs_stdio_exit(tls *TLS) { /* __toread.c:16:13: */
+ X__builtin_abort(tls) //TODO-
+ // __stdio_exit_needed();
+}
+
+// This function assumes it will never be called if there is already
+// data buffered for reading.
+
+func X__uflow(tls *TLS, f uintptr) int32 { /* __uflow.c:6:5: */
+ bp := tls.Alloc(1)
+ defer tls.Free(1)
+
+ // var c uint8 at bp, 1
+
+ if !(X__toread(tls, f) != 0) && (*struct {
+ f func(*TLS, uintptr, uintptr, size_t) size_t
+ })(unsafe.Pointer(&struct{ uintptr }{(*FILE)(unsafe.Pointer(f)).read})).f(tls, f, bp, uint64(1)) == uint64(1) {
+ return int32(*(*uint8)(unsafe.Pointer(bp)))
+ }
+ return -1
+}
+
+func Xsscanf(tls *TLS, s uintptr, fmt uintptr, va uintptr) int32 { /* sscanf.c:4:5: */
+ var ret int32
+ var ap va_list
+ _ = ap
+ ap = va
+ ret = Xvsscanf(tls, s, fmt, ap)
+ _ = ap
+ return ret
+}
+
+type wctrans_t = uintptr /* wctype.h:20:19 */
+
+func store_int(tls *TLS, dest uintptr, size int32, i uint64) { /* vfscanf.c:22:13: */
+ if !(dest != 0) {
+ return
+ }
+ switch size {
+ case -2:
+ *(*uint8)(unsafe.Pointer(dest)) = uint8(i)
+ break
+ case -1:
+ *(*int16)(unsafe.Pointer(dest)) = int16(i)
+ break
+ case 0:
+ *(*int32)(unsafe.Pointer(dest)) = int32(i)
+ break
+ case 1:
+ *(*int64)(unsafe.Pointer(dest)) = int64(i)
+ break
+ case 3:
+ *(*int64)(unsafe.Pointer(dest)) = int64(i)
+ break
+ }
+}
+
+func arg_n(tls *TLS, ap va_list, n uint32) uintptr { /* vfscanf.c:44:13: */
+ var p uintptr
+ var i uint32
+ var ap2 va_list
+ _ = ap2
+ ap2 = ap
+ for i = n; i > uint32(1); i-- {
+ VaUintptr(&ap2)
+ }
+ p = VaUintptr(&ap2)
+ _ = ap2
+ return p
+}
+
+func Xvfscanf(tls *TLS, f uintptr, fmt uintptr, ap va_list) int32 { /* vfscanf.c:56:5: */
+ bp := tls.Alloc(276)
+ defer tls.Free(276)
+
+ var width int32
+ var size int32
+ var alloc int32
+ var base int32
+ var p uintptr
+ var c int32
+ var t int32
+ var s uintptr
+ var wcs uintptr
+ // var st mbstate_t at bp+268, 8
+
+ var dest uintptr
+ var invert int32
+ var matches int32
+ var x uint64
+ var y float64
+ var pos off_t
+ // var scanset [257]uint8 at bp, 257
+
+ var i size_t
+ var k size_t
+ // var wc wchar_t at bp+260, 4
+
+ var __need_unlock int32
+ var tmp uintptr
+ var tmp1 uintptr
+ alloc = 0
+ dest = uintptr(0)
+ matches = 0
+ pos = int64(0)
+ __need_unlock = func() int32 {
+ if (*FILE)(unsafe.Pointer(f)).lock >= 0 {
+ return X__lockfile(tls, f)
+ }
+ return 0
+ }()
+
+ if !!(int32((*FILE)(unsafe.Pointer(f)).rpos) != 0) {
+ goto __1
+ }
+ X__toread(tls, f)
+__1:
+ ;
+ if !!(int32((*FILE)(unsafe.Pointer(f)).rpos) != 0) {
+ goto __2
+ }
+ goto input_fail
+__2:
+ ;
+
+ p = fmt
+__3:
+ if !(*(*uint8)(unsafe.Pointer(p)) != 0) {
+ goto __5
+ }
+
+ alloc = 0
+
+ if !(__isspace(tls, int32(*(*uint8)(unsafe.Pointer(p)))) != 0) {
+ goto __6
+ }
+__7:
+ if !(__isspace(tls, int32(*(*uint8)(unsafe.Pointer(p + 1)))) != 0) {
+ goto __8
+ }
+ p++
+ goto __7
+__8:
+ ;
+ X__shlim(tls, f, int64(0))
+__9:
+ if !(__isspace(tls, func() int32 {
+ if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
+ return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
+ }
+ return X__shgetc(tls, f)
+ }()) != 0) {
+ goto __10
+ }
+ goto __9
+__10:
+ ;
+ if (*FILE)(unsafe.Pointer(f)).shlim >= int64(0) {
+ (*FILE)(unsafe.Pointer(f)).rpos--
+ } else {
+ }
+ pos = pos + ((*FILE)(unsafe.Pointer(f)).shcnt + (int64((*FILE)(unsafe.Pointer(f)).rpos)-int64((*FILE)(unsafe.Pointer(f)).buf))/1)
+ goto __4
+__6:
+ ;
+ if !(int32(*(*uint8)(unsafe.Pointer(p))) != '%' || int32(*(*uint8)(unsafe.Pointer(p + 1))) == '%') {
+ goto __11
+ }
+ X__shlim(tls, f, int64(0))
+ if !(int32(*(*uint8)(unsafe.Pointer(p))) == '%') {
+ goto __12
+ }
+ p++
+__14:
+ if !(__isspace(tls, AssignInt32(&c, func() int32 {
+ if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
+ return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
+ }
+ return X__shgetc(tls, f)
+ }())) != 0) {
+ goto __15
+ }
+ goto __14
+__15:
+ ;
+ goto __13
+__12:
+ c = func() int32 {
+ if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
+ return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
+ }
+ return X__shgetc(tls, f)
+ }()
+__13:
+ ;
+ if !(c != int32(*(*uint8)(unsafe.Pointer(p)))) {
+ goto __16
+ }
+ if (*FILE)(unsafe.Pointer(f)).shlim >= int64(0) {
+ (*FILE)(unsafe.Pointer(f)).rpos--
+ } else {
+ }
+ if !(c < 0) {
+ goto __17
+ }
+ goto input_fail
+__17:
+ ;
+ goto match_fail
+__16:
+ ;
+ pos = pos + ((*FILE)(unsafe.Pointer(f)).shcnt + (int64((*FILE)(unsafe.Pointer(f)).rpos)-int64((*FILE)(unsafe.Pointer(f)).buf))/1)
+ goto __4
+__11:
+ ;
+
+ p++
+ if !(int32(*(*uint8)(unsafe.Pointer(p))) == '*') {
+ goto __18
+ }
+ dest = uintptr(0)
+ p++
+ goto __19
+__18:
+ if !(func() int32 {
+ if 0 != 0 {
+ return Xisdigit(tls, int32(*(*uint8)(unsafe.Pointer(p))))
+ }
+ return Bool32(uint32(*(*uint8)(unsafe.Pointer(p)))-uint32('0') < uint32(10))
+ }() != 0 && int32(*(*uint8)(unsafe.Pointer(p + 1))) == '$') {
+ goto __20
+ }
+ dest = arg_n(tls, ap, uint32(int32(*(*uint8)(unsafe.Pointer(p)))-'0'))
+ p += uintptr(2)
+ goto __21
+__20:
+ dest = VaUintptr(&ap)
+__21:
+ ;
+__19:
+ ;
+
+ width = 0
+__22:
+ if !(func() int32 {
+ if 0 != 0 {
+ return Xisdigit(tls, int32(*(*uint8)(unsafe.Pointer(p))))
+ }
+ return Bool32(uint32(*(*uint8)(unsafe.Pointer(p)))-uint32('0') < uint32(10))
+ }() != 0) {
+ goto __24
+ }
+ width = 10*width + int32(*(*uint8)(unsafe.Pointer(p))) - '0'
+ goto __23
+__23:
+ p++
+ goto __22
+ goto __24
+__24:
+ ;
+
+ if !(int32(*(*uint8)(unsafe.Pointer(p))) == 'm') {
+ goto __25
+ }
+ wcs = uintptr(0)
+ s = uintptr(0)
+ alloc = BoolInt32(!!(dest != 0))
+ p++
+ goto __26
+__25:
+ alloc = 0
+__26:
+ ;
+
+ size = 0
+ switch int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&p, 1)))) {
+ case 'h':
+ goto __28
+ case 'l':
+ goto __29
+ case 'j':
+ goto __30
+ case 'z':
+ goto __31
+ case 't':
+ goto __32
+ case 'L':
+ goto __33
+ case 'd':
+ goto __34
+ case 'i':
+ goto __35
+ case 'o':
+ goto __36
+ case 'u':
+ goto __37
+ case 'x':
+ goto __38
+ case 'a':
+ goto __39
+ case 'e':
+ goto __40
+ case 'f':
+ goto __41
+ case 'g':
+ goto __42
+ case 'A':
+ goto __43
+ case 'E':
+ goto __44
+ case 'F':
+ goto __45
+ case 'G':
+ goto __46
+ case 'X':
+ goto __47
+ case 's':
+ goto __48
+ case 'c':
+ goto __49
+ case '[':
+ goto __50
+ case 'S':
+ goto __51
+ case 'C':
+ goto __52
+ case 'p':
+ goto __53
+ case 'n':
+ goto __54
+ default:
+ goto __55
+ }
+ goto __27
+__28:
+ if !(int32(*(*uint8)(unsafe.Pointer(p))) == 'h') {
+ goto __56
+ }
+ p++
+ size = -2
+ goto __57
+__56:
+ size = -1
+__57:
+ ;
+ goto __27
+__29:
+ if !(int32(*(*uint8)(unsafe.Pointer(p))) == 'l') {
+ goto __58
+ }
+ p++
+ size = 3
+ goto __59
+__58:
+ size = 1
+__59:
+ ;
+ goto __27
+__30:
+ size = 3
+ goto __27
+__31:
+__32:
+ size = 1
+ goto __27
+__33:
+ size = 2
+ goto __27
+__34:
+__35:
+__36:
+__37:
+__38:
+__39:
+__40:
+__41:
+__42:
+__43:
+__44:
+__45:
+__46:
+__47:
+__48:
+__49:
+__50:
+__51:
+__52:
+__53:
+__54:
+ p--
+ goto __27
+__55:
+ goto fmt_fail
+__27:
+ ;
+
+ t = int32(*(*uint8)(unsafe.Pointer(p)))
+
+ // C or S
+ if !(t&0x2f == 3) {
+ goto __60
+ }
+ t = t | 32
+ size = 1
+__60:
+ ;
+
+ switch t {
+ case 'c':
+ goto __62
+ case '[':
+ goto __63
+ case 'n':
+ goto __64
+ default:
+ goto __65
+ }
+ goto __61
+__62:
+ if !(width < 1) {
+ goto __66
+ }
+ width = 1
+__66:
+ ;
+__63:
+ goto __61
+__64:
+ store_int(tls, dest, size, uint64(pos))
+ // do not increment match count, etc!
+ goto __4
+__65:
+ X__shlim(tls, f, int64(0))
+__67:
+ if !(__isspace(tls, func() int32 {
+ if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
+ return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
+ }
+ return X__shgetc(tls, f)
+ }()) != 0) {
+ goto __68
+ }
+ goto __67
+__68:
+ ;
+ if (*FILE)(unsafe.Pointer(f)).shlim >= int64(0) {
+ (*FILE)(unsafe.Pointer(f)).rpos--
+ } else {
+ }
+ pos = pos + ((*FILE)(unsafe.Pointer(f)).shcnt + (int64((*FILE)(unsafe.Pointer(f)).rpos)-int64((*FILE)(unsafe.Pointer(f)).buf))/1)
+__61:
+ ;
+
+ X__shlim(tls, f, int64(width))
+ if !(func() int32 {
+ if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
+ return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
+ }
+ return X__shgetc(tls, f)
+ }() < 0) {
+ goto __69
+ }
+ goto input_fail
+__69:
+ ;
+ if (*FILE)(unsafe.Pointer(f)).shlim >= int64(0) {
+ (*FILE)(unsafe.Pointer(f)).rpos--
+ } else {
+ }
+
+ switch t {
+ case 's':
+ goto __71
+ case 'c':
+ goto __72
+ case '[':
+ goto __73
+ case 'p':
+ goto __74
+ case 'X':
+ goto __75
+ case 'x':
+ goto __76
+ case 'o':
+ goto __77
+ case 'd':
+ goto __78
+ case 'u':
+ goto __79
+ case 'i':
+ goto __80
+ case 'a':
+ goto __81
+ case 'A':
+ goto __82
+ case 'e':
+ goto __83
+ case 'E':
+ goto __84
+ case 'f':
+ goto __85
+ case 'F':
+ goto __86
+ case 'g':
+ goto __87
+ case 'G':
+ goto __88
+ }
+ goto __70
+__71:
+__72:
+__73:
+ if !(t == 'c' || t == 's') {
+ goto __89
+ }
+ Xmemset(tls, bp, -1, uint64(unsafe.Sizeof([257]uint8{})))
+ *(*uint8)(unsafe.Pointer(bp)) = uint8(0)
+ if !(t == 's') {
+ goto __91
+ }
+ *(*uint8)(unsafe.Pointer(bp + 10)) = uint8(0)
+ *(*uint8)(unsafe.Pointer(bp + 11)) = uint8(0)
+ *(*uint8)(unsafe.Pointer(bp + 12)) = uint8(0)
+ *(*uint8)(unsafe.Pointer(bp + 13)) = uint8(0)
+ *(*uint8)(unsafe.Pointer(bp + 14)) = uint8(0)
+ *(*uint8)(unsafe.Pointer(bp + 33)) = uint8(0)
+__91:
+ ;
+ goto __90
+__89:
+ if !(int32(*(*uint8)(unsafe.Pointer(PreIncUintptr(&p, 1)))) == '^') {
+ goto __92
+ }
+ p++
+ invert = 1
+ goto __93
+__92:
+ invert = 0
+__93:
+ ;
+ Xmemset(tls, bp, invert, uint64(unsafe.Sizeof([257]uint8{})))
+ *(*uint8)(unsafe.Pointer(bp)) = uint8(0)
+ if !(int32(*(*uint8)(unsafe.Pointer(p))) == '-') {
+ goto __94
+ }
+ p++
+ *(*uint8)(unsafe.Pointer(bp + 46)) = uint8(1 - invert)
+ goto __95
+__94:
+ if !(int32(*(*uint8)(unsafe.Pointer(p))) == ']') {
+ goto __96
+ }
+ p++
+ *(*uint8)(unsafe.Pointer(bp + 94)) = uint8(1 - invert)
+__96:
+ ;
+__95:
+ ;
+__97:
+ if !(int32(*(*uint8)(unsafe.Pointer(p))) != ']') {
+ goto __99
+ }
+ if !!(int32(*(*uint8)(unsafe.Pointer(p))) != 0) {
+ goto __100
+ }
+ goto fmt_fail
+__100:
+ ;
+ if !(int32(*(*uint8)(unsafe.Pointer(p))) == '-' && *(*uint8)(unsafe.Pointer(p + 1)) != 0 && int32(*(*uint8)(unsafe.Pointer(p + 1))) != ']') {
+ goto __101
+ }
+ c = int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&p, 1) + UintptrFromInt32(-1))))
+__102:
+ if !(c < int32(*(*uint8)(unsafe.Pointer(p)))) {
+ goto __104
+ }
+ *(*uint8)(unsafe.Pointer(bp + uintptr(1+c))) = uint8(1 - invert)
+ goto __103
+__103:
+ c++
+ goto __102
+ goto __104
+__104:
+ ;
+__101:
+ ;
+ *(*uint8)(unsafe.Pointer(bp + uintptr(1+int32(*(*uint8)(unsafe.Pointer(p)))))) = uint8(1 - invert)
+ goto __98
+__98:
+ p++
+ goto __97
+ goto __99
+__99:
+ ;
+__90:
+ ;
+ wcs = uintptr(0)
+ s = uintptr(0)
+ i = uint64(0)
+ if t == 'c' {
+ k = uint64(uint32(width) + 1)
+ } else {
+ k = uint64(31)
+ }
+ if !(size == 1) {
+ goto __105
+ }
+ if !(alloc != 0) {
+ goto __107
+ }
+ wcs = Xmalloc(tls, k*size_t(unsafe.Sizeof(wchar_t(0))))
+ if !!(wcs != 0) {
+ goto __109
+ }
+ goto alloc_fail
+__109:
+ ;
+ goto __108
+__107:
+ wcs = dest
+__108:
+ ;
+ *(*mbstate_t)(unsafe.Pointer(bp + 268 /* st */)) = mbstate_t{}
+__110:
+ if !(*(*uint8)(unsafe.Pointer(bp + uintptr(AssignInt32(&c, func() int32 {
+ if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
+ return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
+ }
+ return X__shgetc(tls, f)
+ }())+1))) != 0) {
+ goto __111
+ }
+ switch Xmbrtowc(tls, bp+260, func() uintptr { *(*uint8)(unsafe.Pointer(bp + 264)) = uint8(c); return bp + 264 }(), uint64(1), bp+268 /* &st */) {
+ case Uint64FromInt32(-1):
+ goto __113
+ case Uint64FromInt32(-2):
+ goto __114
+ }
+ goto __112
+__113:
+ goto input_fail
+__114:
+ goto __110
+__112:
+ ;
+ if !(wcs != 0) {
+ goto __115
+ }
+ *(*wchar_t)(unsafe.Pointer(wcs + uintptr(PostIncUint64(&i, 1))*4)) = *(*wchar_t)(unsafe.Pointer(bp + 260 /* wc */))
+__115:
+ ;
+ if !(alloc != 0 && i == k) {
+ goto __116
+ }
+ k = k + (k + uint64(1))
+ tmp = Xrealloc(tls, wcs, k*size_t(unsafe.Sizeof(wchar_t(0))))
+ if !!(tmp != 0) {
+ goto __117
+ }
+ goto alloc_fail
+__117:
+ ;
+ wcs = tmp
+__116:
+ ;
+ goto __110
+__111:
+ ;
+ if !!(Xmbsinit(tls, bp+268) != 0) {
+ goto __118
+ }
+ goto input_fail
+__118:
+ ;
+ goto __106
+__105:
+ if !(alloc != 0) {
+ goto __119
+ }
+ s = Xmalloc(tls, k)
+ if !!(s != 0) {
+ goto __121
+ }
+ goto alloc_fail
+__121:
+ ;
+__122:
+ if !(*(*uint8)(unsafe.Pointer(bp + uintptr(AssignInt32(&c, func() int32 {
+ if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
+ return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
+ }
+ return X__shgetc(tls, f)
+ }())+1))) != 0) {
+ goto __123
+ }
+ *(*uint8)(unsafe.Pointer(s + uintptr(PostIncUint64(&i, 1)))) = uint8(c)
+ if !(i == k) {
+ goto __124
+ }
+ k = k + (k + uint64(1))
+ tmp1 = Xrealloc(tls, s, k)
+ if !!(tmp1 != 0) {
+ goto __125
+ }
+ goto alloc_fail
+__125:
+ ;
+ s = tmp1
+__124:
+ ;
+ goto __122
+__123:
+ ;
+ goto __120
+__119:
+ if !(AssignUintptr(&s, dest) != 0) {
+ goto __126
+ }
+__128:
+ if !(*(*uint8)(unsafe.Pointer(bp + uintptr(AssignInt32(&c, func() int32 {
+ if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
+ return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
+ }
+ return X__shgetc(tls, f)
+ }())+1))) != 0) {
+ goto __129
+ }
+ *(*uint8)(unsafe.Pointer(s + uintptr(PostIncUint64(&i, 1)))) = uint8(c)
+ goto __128
+__129:
+ ;
+ goto __127
+__126:
+__130:
+ if !(*(*uint8)(unsafe.Pointer(bp + uintptr(AssignInt32(&c, func() int32 {
+ if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
+ return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
+ }
+ return X__shgetc(tls, f)
+ }())+1))) != 0) {
+ goto __131
+ }
+ goto __130
+__131:
+ ;
+__127:
+ ;
+__120:
+ ;
+__106:
+ ;
+ if (*FILE)(unsafe.Pointer(f)).shlim >= int64(0) {
+ (*FILE)(unsafe.Pointer(f)).rpos--
+ } else {
+ }
+ if !!((*FILE)(unsafe.Pointer(f)).shcnt+(int64((*FILE)(unsafe.Pointer(f)).rpos)-int64((*FILE)(unsafe.Pointer(f)).buf))/1 != 0) {
+ goto __132
+ }
+ goto match_fail
+__132:
+ ;
+ if !(t == 'c' && (*FILE)(unsafe.Pointer(f)).shcnt+(int64((*FILE)(unsafe.Pointer(f)).rpos)-int64((*FILE)(unsafe.Pointer(f)).buf))/1 != off_t(width)) {
+ goto __133
+ }
+ goto match_fail
+__133:
+ ;
+ if !(alloc != 0) {
+ goto __134
+ }
+ if !(size == 1) {
+ goto __135
+ }
+ *(*uintptr)(unsafe.Pointer(dest)) = wcs
+ goto __136
+__135:
+ *(*uintptr)(unsafe.Pointer(dest)) = s
+__136:
+ ;
+__134:
+ ;
+ if !(t != 'c') {
+ goto __137
+ }
+ if !(wcs != 0) {
+ goto __138
+ }
+ *(*wchar_t)(unsafe.Pointer(wcs + uintptr(i)*4)) = 0
+__138:
+ ;
+ if !(s != 0) {
+ goto __139
+ }
+ *(*uint8)(unsafe.Pointer(s + uintptr(i))) = uint8(0)
+__139:
+ ;
+__137:
+ ;
+ goto __70
+__74:
+__75:
+__76:
+ base = 16
+ goto int_common
+__77:
+ base = 8
+ goto int_common
+__78:
+__79:
+ base = 10
+ goto int_common
+__80:
+ base = 0
+int_common:
+ x = X__intscan(tls, f, uint32(base), 0, 2*uint64(0x7fffffffffffffff)+uint64(1))
+ if !!((*FILE)(unsafe.Pointer(f)).shcnt+(int64((*FILE)(unsafe.Pointer(f)).rpos)-int64((*FILE)(unsafe.Pointer(f)).buf))/1 != 0) {
+ goto __140
+ }
+ goto match_fail
+__140:
+ ;
+ if !(t == 'p' && dest != 0) {
+ goto __141
+ }
+ *(*uintptr)(unsafe.Pointer(dest)) = uintptr(uintptr_t(x))
+ goto __142
+__141:
+ store_int(tls, dest, size, x)
+__142:
+ ;
+ goto __70
+__81:
+__82:
+__83:
+__84:
+__85:
+__86:
+__87:
+__88:
+ y = X__floatscan(tls, f, size, 0)
+ if !!((*FILE)(unsafe.Pointer(f)).shcnt+(int64((*FILE)(unsafe.Pointer(f)).rpos)-int64((*FILE)(unsafe.Pointer(f)).buf))/1 != 0) {
+ goto __143
+ }
+ goto match_fail
+__143:
+ ;
+ if !(dest != 0) {
+ goto __144
+ }
+ switch size {
+ case 0:
+ goto __146
+ case 1:
+ goto __147
+ case 2:
+ goto __148
+ }
+ goto __145
+__146:
+ *(*float32)(unsafe.Pointer(dest)) = float32(y)
+ goto __145
+__147:
+ *(*float64)(unsafe.Pointer(dest)) = y
+ goto __145
+__148:
+ *(*float64)(unsafe.Pointer(dest)) = y
+ goto __145
+__145:
+ ;
+__144:
+ ;
+ goto __70
+__70:
+ ;
+
+ pos = pos + ((*FILE)(unsafe.Pointer(f)).shcnt + (int64((*FILE)(unsafe.Pointer(f)).rpos)-int64((*FILE)(unsafe.Pointer(f)).buf))/1)
+ if !(dest != 0) {
+ goto __149
+ }
+ matches++
+__149:
+ ;
+ goto __4
+__4:
+ p++
+ goto __3
+ goto __5
+__5:
+ ;
+ if !(0 != 0) {
+ goto __150
+ }
+fmt_fail:
+alloc_fail:
+input_fail:
+ if !!(matches != 0) {
+ goto __151
+ }
+ matches--
+__151:
+ ;
+match_fail:
+ if !(alloc != 0) {
+ goto __152
+ }
+ Xfree(tls, s)
+ Xfree(tls, wcs)
+__152:
+ ;
+__150:
+ ;
+__153:
+ if !(__need_unlock != 0) {
+ goto __156
+ }
+ X__unlockfile(tls, f)
+__156:
+ ;
+ goto __154
+__154:
+ if 0 != 0 {
+ goto __153
+ }
+ goto __155
+__155:
+ ;
+ return matches
+}
+
+func string_read(tls *TLS, f uintptr, buf uintptr, len size_t) size_t { /* vsscanf.c:4:15: */
+ var src uintptr = (*FILE)(unsafe.Pointer(f)).cookie
+ var k size_t = len + uint64(256)
+ var end uintptr = Xmemchr(tls, src, 0, k)
+ if end != 0 {
+ k = size_t((int64(end) - int64(src)) / 1)
+ }
+ if k < len {
+ len = k
+ }
+ Xmemcpy(tls, buf, src, len)
+ (*FILE)(unsafe.Pointer(f)).rpos = src + uintptr(len)
+ (*FILE)(unsafe.Pointer(f)).rend = src + uintptr(k)
+ (*FILE)(unsafe.Pointer(f)).cookie = src + uintptr(k)
+ return len
+}
+
+func Xvsscanf(tls *TLS, s uintptr, fmt uintptr, ap va_list) int32 { /* vsscanf.c:18:5: */
+ bp := tls.Alloc(232)
+ defer tls.Free(232)
+
+ *(*FILE)(unsafe.Pointer(bp /* f */)) = FILE{read: *(*uintptr)(unsafe.Pointer(&struct {
+ f func(*TLS, uintptr, uintptr, size_t) size_t
+ }{string_read})), buf: s, lock: -1, cookie: s}
+ return Xvfscanf(tls, bp, fmt, ap)
+}
+
+func Xbsearch(tls *TLS, key uintptr, base uintptr, nel size_t, width size_t, cmp uintptr) uintptr { /* bsearch.c:3:6: */
+ var try uintptr
+ var sign int32
+ for nel > uint64(0) {
+ try = base + uintptr(width*(nel/uint64(2)))
+ sign = (*struct {
+ f func(*TLS, uintptr, uintptr) int32
+ })(unsafe.Pointer(&struct{ uintptr }{cmp})).f(tls, key, try)
+ if sign < 0 {
+ nel = nel / uint64(2)
+ } else if sign > 0 {
+ base = try + uintptr(width)
+ nel = nel - (nel/uint64(2) + uint64(1))
+ } else {
+ return try
+ }
+ }
+ return uintptr(0)
+}
+
+func strtox(tls *TLS, s uintptr, p uintptr, prec int32) float64 { /* strtod.c:6:20: */
+ bp := tls.Alloc(232)
+ defer tls.Free(232)
+
+ // var f FILE at bp, 232
+
+ (*FILE)(unsafe.Pointer(bp)).buf = AssignPtrUintptr(bp+8, s)
+ (*FILE)(unsafe.Pointer(bp)).rend = UintptrFromInt32(-1)
+ X__shlim(tls, bp, int64(0))
+ var y float64 = X__floatscan(tls, bp, prec, 1)
+ var cnt off_t = (*FILE)(unsafe.Pointer(bp)).shcnt + (int64((*FILE)(unsafe.Pointer(bp)).rpos)-int64((*FILE)(unsafe.Pointer(bp)).buf))/1
+ if p != 0 {
+ *(*uintptr)(unsafe.Pointer(p)) = func() uintptr {
+ if cnt != 0 {
+ return s + uintptr(cnt)
+ }
+ return s
+ }()
+ }
+ return y
+}
+
+func Xstrtof(tls *TLS, s uintptr, p uintptr) float32 { /* strtod.c:17:7: */
+ return float32(strtox(tls, s, p, 0))
+}
+
+func Xstrtod(tls *TLS, s uintptr, p uintptr) float64 { /* strtod.c:22:8: */
+ return strtox(tls, s, p, 1)
+}
+
+func Xstrtold(tls *TLS, s uintptr, p uintptr) float64 { /* strtod.c:27:13: */
+ return strtox(tls, s, p, 2)
+}
+
+func strtox1(tls *TLS, s uintptr, p uintptr, base int32, lim uint64) uint64 { /* strtol.c:8:27: */
+ bp := tls.Alloc(232)
+ defer tls.Free(232)
+
+ // var f FILE at bp, 232
+
+ (*FILE)(unsafe.Pointer(bp)).buf = AssignPtrUintptr(bp+8, s)
+ (*FILE)(unsafe.Pointer(bp)).rend = UintptrFromInt32(-1)
+ X__shlim(tls, bp, int64(0))
+ var y uint64 = X__intscan(tls, bp, uint32(base), 1, lim)
+ if p != 0 {
+ var cnt size_t = size_t((*FILE)(unsafe.Pointer(bp)).shcnt + (int64((*FILE)(unsafe.Pointer(bp)).rpos)-int64((*FILE)(unsafe.Pointer(bp)).buf))/1)
+ *(*uintptr)(unsafe.Pointer(p)) = s + uintptr(cnt)
+ }
+ return y
+}
+
+func Xstrtoull(tls *TLS, s uintptr, p uintptr, base int32) uint64 { /* strtol.c:21:20: */
+ return strtox1(tls, s, p, base, 2*uint64(0x7fffffffffffffff)+uint64(1))
+}
+
+func Xstrtoll(tls *TLS, s uintptr, p uintptr, base int32) int64 { /* strtol.c:26:11: */
+ return int64(strtox1(tls, s, p, base, Uint64FromInt64(-0x7fffffffffffffff-int64(1))))
+}
+
+func Xstrtoul(tls *TLS, s uintptr, p uintptr, base int32) uint64 { /* strtol.c:31:15: */
+ return uint64(strtox1(tls, s, p, base, 2*uint64(0x7fffffffffffffff)+uint64(1)))
+}
+
+func Xstrtol(tls *TLS, s uintptr, p uintptr, base int32) int64 { /* strtol.c:36:6: */
+ return int64(strtox1(tls, s, p, base, 0+Uint64FromInt64(Int64(-Int64(0x7fffffffffffffff))-Int64FromInt32(1))))
+}
+
+func Xstrtoimax(tls *TLS, s uintptr, p uintptr, base int32) intmax_t { /* strtol.c:41:10: */
+ return intmax_t(Xstrtoll(tls, s, p, base))
+}
+
+func Xstrtoumax(tls *TLS, s uintptr, p uintptr, base int32) uintmax_t { /* strtol.c:46:11: */
+ return uintmax_t(Xstrtoull(tls, s, p, base))
+}
+
+func Xstrdup(tls *TLS, s uintptr) uintptr { /* strdup.c:4:6: */
+ var l size_t = Xstrlen(tls, s)
+ var d uintptr = Xmalloc(tls, l+uint64(1))
+ if !(d != 0) {
+ return uintptr(0)
+ }
+ return Xmemcpy(tls, d, s, l+uint64(1))
+}
+
+func Xstrlcat(tls *TLS, d uintptr, s uintptr, n size_t) size_t { /* strlcat.c:4:8: */
+ var l size_t = Xstrnlen(tls, d, n)
+ if l == n {
+ return l + Xstrlen(tls, s)
+ }
+ return l + Xstrlcpy(tls, d+uintptr(l), s, n-l)
+}
+
+// Support signed or unsigned plain-char
+
+// Implementation choices...
+
+// Arbitrary numbers...
+
+// POSIX/SUS requirements follow. These numbers come directly
+// from SUS and have nothing to do with the host system.
+
+func Xstrlcpy(tls *TLS, d uintptr, s uintptr, n size_t) size_t { /* strlcpy.c:11:8: */
+ var d0 uintptr
+ var wd uintptr
+ var ws uintptr
+ d0 = d
+
+ if !!(int32(PostDecUint64(&n, 1)) != 0) {
+ goto __1
+ }
+ goto finish
+__1:
+ ;
+ if !(uintptr_t(s)&(uint64(unsafe.Sizeof(size_t(0)))-uint64(1)) == uintptr_t(d)&(uint64(unsafe.Sizeof(size_t(0)))-uint64(1))) {
+ goto __2
+ }
+__3:
+ if !(uintptr_t(s)&(uint64(unsafe.Sizeof(size_t(0)))-uint64(1)) != 0 && n != 0 && AssignPtrUint8(d, *(*uint8)(unsafe.Pointer(s))) != 0) {
+ goto __5
+ }
+ goto __4
+__4:
+ n--
+ s++
+ d++
+ goto __3
+ goto __5
+__5:
+ ;
+ if !(n != 0 && *(*uint8)(unsafe.Pointer(s)) != 0) {
+ goto __6
+ }
+ wd = d
+ ws = s
+__7:
+ if !(n >= size_t(unsafe.Sizeof(size_t(0))) && !((*(*uint64)(unsafe.Pointer(ws))-Uint64(Uint64FromInt32(-1))/uint64(255)) & ^*(*uint64)(unsafe.Pointer(ws)) & (Uint64(Uint64FromInt32(-1))/uint64(255)*uint64(255/2+1)) != 0)) {
+ goto __9
+ }
+ *(*size_t)(unsafe.Pointer(wd)) = *(*uint64)(unsafe.Pointer(ws))
+ goto __8
+__8:
+ n = n - size_t(unsafe.Sizeof(size_t(0)))
+ ws += 8
+ wd += 8
+ goto __7
+ goto __9
+__9:
+ ;
+ d = wd
+ s = ws
+__6:
+ ;
+__2:
+ ;
+__10:
+ if !(n != 0 && AssignPtrUint8(d, *(*uint8)(unsafe.Pointer(s))) != 0) {
+ goto __12
+ }
+ goto __11
+__11:
+ n--
+ s++
+ d++
+ goto __10
+ goto __12
+__12:
+ ;
+ *(*uint8)(unsafe.Pointer(d)) = uint8(0)
+finish:
+ return size_t((int64(d)-int64(d0))/1) + Xstrlen(tls, s)
+}
+
+func Xstrncasecmp(tls *TLS, _l uintptr, _r uintptr, n size_t) int32 { /* strncasecmp.c:4:5: */
+ var l uintptr = _l
+ var r uintptr = _r
+ if !(int32(PostDecUint64(&n, 1)) != 0) {
+ return 0
+ }
+__1:
+ if !(*(*uint8)(unsafe.Pointer(l)) != 0 && *(*uint8)(unsafe.Pointer(r)) != 0 && n != 0 && (int32(*(*uint8)(unsafe.Pointer(l))) == int32(*(*uint8)(unsafe.Pointer(r))) || Xtolower(tls, int32(*(*uint8)(unsafe.Pointer(l)))) == Xtolower(tls, int32(*(*uint8)(unsafe.Pointer(r)))))) {
+ goto __3
+ }
+ goto __2
+__2:
+ l++
+ r++
+ n--
+ goto __1
+ goto __3
+__3:
+ ;
+ return Xtolower(tls, int32(*(*uint8)(unsafe.Pointer(l)))) - Xtolower(tls, int32(*(*uint8)(unsafe.Pointer(r))))
+}
+
+func X__strncasecmp_l(tls *TLS, l uintptr, r uintptr, n size_t, loc locale_t) int32 { /* strncasecmp.c:12:5: */
+ return Xstrncasecmp(tls, l, r, n)
+}
+
+func Xstrncat(tls *TLS, d uintptr, s uintptr, n size_t) uintptr { /* strncat.c:3:6: */
+ var a uintptr = d
+ d += uintptr(Xstrlen(tls, d))
+ for n != 0 && *(*uint8)(unsafe.Pointer(s)) != 0 {
+ n--
+ *(*uint8)(unsafe.Pointer(PostIncUintptr(&d, 1))) = *(*uint8)(unsafe.Pointer(PostIncUintptr(&s, 1)))
+ }
+ *(*uint8)(unsafe.Pointer(PostIncUintptr(&d, 1))) = uint8(0)
+ return a
+}
+
+func Xstrnlen(tls *TLS, s uintptr, n size_t) size_t { /* strnlen.c:3:8: */
+ var p uintptr = Xmemchr(tls, s, 0, n)
+ if p != 0 {
+ return uint64((int64(p) - int64(s)) / 1)
+ }
+ return n
+}
+
+func Xstrspn(tls *TLS, s uintptr, c uintptr) size_t { /* strspn.c:6:8: */
+ bp := tls.Alloc(32)
+ defer tls.Free(32)
+
+ var a uintptr = s
+ *(*[4]size_t)(unsafe.Pointer(bp /* byteset */)) = [4]size_t{0: uint64(0)}
+
+ if !(int32(*(*uint8)(unsafe.Pointer(c))) != 0) {
+ return uint64(0)
+ }
+ if !(int32(*(*uint8)(unsafe.Pointer(c + 1))) != 0) {
+ for ; int32(*(*uint8)(unsafe.Pointer(s))) == int32(*(*uint8)(unsafe.Pointer(c))); s++ {
+ }
+ return size_t((int64(s) - int64(a)) / 1)
+ }
+
+ for ; *(*uint8)(unsafe.Pointer(c)) != 0 && AssignOrPtrUint64(bp+uintptr(size_t(*(*uint8)(unsafe.Pointer(c)))/(uint64(8)*uint64(unsafe.Sizeof(size_t(0)))))*8, size_t(uint64(1))<<(size_t(*(*uint8)(unsafe.Pointer(c)))%(uint64(8)*uint64(unsafe.Sizeof(size_t(0)))))) != 0; c++ {
+ }
+ for ; *(*uint8)(unsafe.Pointer(s)) != 0 && *(*size_t)(unsafe.Pointer(bp + uintptr(size_t(*(*uint8)(unsafe.Pointer(s)))/(uint64(8)*uint64(unsafe.Sizeof(size_t(0)))))*8))&(size_t(uint64(1))<<(size_t(*(*uint8)(unsafe.Pointer(s)))%(uint64(8)*uint64(unsafe.Sizeof(size_t(0)))))) != 0; s++ {
+ }
+ return size_t((int64(s) - int64(a)) / 1)
+}
+
+func Xstrtok(tls *TLS, s uintptr, sep uintptr) uintptr { /* strtok.c:3:6: */
+ if !(s != 0) && !(int32(AssignUintptr(&s, _sp)) != 0) {
+ return uintptr(0)
+ }
+ s += uintptr(Xstrspn(tls, s, sep))
+ if !(int32(*(*uint8)(unsafe.Pointer(s))) != 0) {
+ return AssignPtrUintptr(uintptr(unsafe.Pointer(&_sp)), uintptr(0))
+ }
+ _sp = s + uintptr(Xstrcspn(tls, s, sep))
+ if *(*uint8)(unsafe.Pointer(_sp)) != 0 {
+ *(*uint8)(unsafe.Pointer(PostIncUintptr(&_sp, 1))) = uint8(0)
+ } else {
+ _sp = uintptr(0)
+ }
+ return s
+}
+
+var _sp uintptr /* strtok.c:5:14: */
+
+func X__ccgo_pthreadAttrGetDetachState(tls *TLS, a uintptr) int32 { /* pthread_attr_get.c:3:5: */
+ return *(*int32)(unsafe.Pointer(a + 6*4))
+}
+
+func Xpthread_attr_getdetachstate(tls *TLS, a uintptr, state uintptr) int32 { /* pthread_attr_get.c:7:5: */
+ *(*int32)(unsafe.Pointer(state)) = *(*int32)(unsafe.Pointer(a + 6*4))
+ return 0
+}
+
+//
+// int pthread_attr_getguardsize(const pthread_attr_t *restrict a, size_t *restrict size)
+// {
+// *size = a->_a_guardsize;
+// return 0;
+// }
+//
+// int pthread_attr_getinheritsched(const pthread_attr_t *restrict a, int *restrict inherit)
+// {
+// *inherit = a->_a_sched;
+// return 0;
+// }
+//
+// int pthread_attr_getschedparam(const pthread_attr_t *restrict a, struct sched_param *restrict param)
+// {
+// param->sched_priority = a->_a_prio;
+// return 0;
+// }
+//
+// int pthread_attr_getschedpolicy(const pthread_attr_t *restrict a, int *restrict policy)
+// {
+// *policy = a->_a_policy;
+// return 0;
+// }
+//
+// int pthread_attr_getscope(const pthread_attr_t *restrict a, int *restrict scope)
+// {
+// *scope = PTHREAD_SCOPE_SYSTEM;
+// return 0;
+// }
+//
+// int pthread_attr_getstack(const pthread_attr_t *restrict a, void **restrict addr, size_t *restrict size)
+// {
+// if (!a->_a_stackaddr)
+// return EINVAL;
+// *size = a->_a_stacksize;
+// *addr = (void *)(a->_a_stackaddr - *size);
+// return 0;
+// }
+//
+// int pthread_attr_getstacksize(const pthread_attr_t *restrict a, size_t *restrict size)
+// {
+// *size = a->_a_stacksize;
+// return 0;
+// }
+//
+// int pthread_barrierattr_getpshared(const pthread_barrierattr_t *restrict a, int *restrict pshared)
+// {
+// *pshared = !!a->__attr;
+// return 0;
+// }
+//
+// int pthread_condattr_getclock(const pthread_condattr_t *restrict a, clockid_t *restrict clk)
+// {
+// *clk = a->__attr & 0x7fffffff;
+// return 0;
+// }
+//
+// int pthread_condattr_getpshared(const pthread_condattr_t *restrict a, int *restrict pshared)
+// {
+// *pshared = a->__attr>>31;
+// return 0;
+// }
+//
+// int pthread_mutexattr_getprotocol(const pthread_mutexattr_t *restrict a, int *restrict protocol)
+// {
+// *protocol = PTHREAD_PRIO_NONE;
+// return 0;
+// }
+// int pthread_mutexattr_getpshared(const pthread_mutexattr_t *restrict a, int *restrict pshared)
+// {
+// *pshared = a->__attr / 128U % 2;
+// return 0;
+// }
+//
+// int pthread_mutexattr_getrobust(const pthread_mutexattr_t *restrict a, int *restrict robust)
+// {
+// *robust = a->__attr / 4U % 2;
+// return 0;
+// }
+
+func X__ccgo_pthreadMutexattrGettype(tls *TLS, a uintptr) int32 { /* pthread_attr_get.c:93:5: */
+ return int32((*pthread_mutexattr_t)(unsafe.Pointer(a)).__attr & uint32(3))
+}
+
+// int pthread_mutexattr_gettype(const pthread_mutexattr_t *restrict a, int *restrict type)
+// {
+// *type = a->__attr & 3;
+// return 0;
+// }
+//
+// int pthread_rwlockattr_getpshared(const pthread_rwlockattr_t *restrict a, int *restrict pshared)
+// {
+// *pshared = a->__attr[0];
+// return 0;
+// }
+
+func Xpthread_attr_setdetachstate(tls *TLS, a uintptr, state int32) int32 { /* pthread_attr_setdetachstate.c:3:5: */
+ if uint32(state) > 1 {
+ return 22
+ }
+ *(*int32)(unsafe.Pointer(a + 6*4)) = state
+ return 0
+}
+
+func X__ccgo_getMutexType(tls *TLS, m uintptr) int32 { /* pthread_mutex_lock.c:3:5: */
+ return *(*int32)(unsafe.Pointer(m)) & 15
+}
+
+// int __pthread_mutex_lock(pthread_mutex_t *m)
+// {
+// if ((m->_m_type&15) == PTHREAD_MUTEX_NORMAL
+// && !a_cas(&m->_m_lock, 0, EBUSY))
+// return 0;
+//
+// return __pthread_mutex_timedlock(m, 0);
+// }
+//
+// weak_alias(__pthread_mutex_lock, pthread_mutex_lock);
+
+func Xpthread_mutexattr_destroy(tls *TLS, a uintptr) int32 { /* pthread_mutexattr_destroy.c:3:5: */
+ return 0
+}
+
+func Xpthread_mutexattr_init(tls *TLS, a uintptr) int32 { /* pthread_mutexattr_init.c:3:5: */
+ *(*pthread_mutexattr_t)(unsafe.Pointer(a)) = pthread_mutexattr_t{}
+ return 0
+}
+
+func Xpthread_mutexattr_settype(tls *TLS, a uintptr, type1 int32) int32 { /* pthread_mutexattr_settype.c:3:5: */
+ if uint32(type1) > uint32(2) {
+ return 22
+ }
+ (*pthread_mutexattr_t)(unsafe.Pointer(a)).__attr = (*pthread_mutexattr_t)(unsafe.Pointer(a)).__attr&Uint32FromInt32(CplInt32(3)) | uint32(type1)
+ return 0
+}
+
+func init() {
+ *(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&ptable)) + 0)) = uintptr(unsafe.Pointer(&table)) + uintptr(128)*2 // __ctype_b_loc.c:36:45:
+}
+
+var ts1 = "infinity\x00nan\x00\x00\x00\x01\x02\x04\a\x03\x06\x05\x00.\x00%d.%d.%d.%d.in-addr.arpa\x00ip6.arpa\x000123456789abcdef\x00/etc/hosts\x00rb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00%d.%d.%d.%d\x00%x:%x:%x:%x:%x:%x:%x:%x\x00%x:%x:%x:%x:%x:%x:%d.%d.%d.%d\x00:0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00 \x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+var ts = (*reflect.StringHeader)(unsafe.Pointer(&ts1)).Data
diff --git a/vendor/modernc.org/libc/netdb/capi_linux_riscv64.go b/vendor/modernc.org/libc/netdb/capi_linux_riscv64.go
new file mode 100644
index 00000000..9029223c
--- /dev/null
+++ b/vendor/modernc.org/libc/netdb/capi_linux_riscv64.go
@@ -0,0 +1,5 @@
+// Code generated by 'ccgo netdb/gen.c -crt-import-path -export-defines -export-enums -export-externs X -export-fields F -export-structs -export-typedefs -header -hide _OSSwapInt16,_OSSwapInt32,_OSSwapInt64 -o netdb/netdb_linux_riscv64.go -pkgname netdb', DO NOT EDIT.
+
+package netdb
+
+var CAPI = map[string]struct{}{}
diff --git a/vendor/modernc.org/libc/netdb/netdb_linux_riscv64.go b/vendor/modernc.org/libc/netdb/netdb_linux_riscv64.go
new file mode 100644
index 00000000..0f2867e6
--- /dev/null
+++ b/vendor/modernc.org/libc/netdb/netdb_linux_riscv64.go
@@ -0,0 +1,3280 @@
+// Code generated by 'ccgo netdb/gen.c -crt-import-path "" -export-defines "" -export-enums "" -export-externs X -export-fields F -export-structs "" -export-typedefs "" -header -hide _OSSwapInt16,_OSSwapInt32,_OSSwapInt64 -o netdb/netdb_linux_riscv64.go -pkgname netdb', DO NOT EDIT.
+
+package netdb
+
+import (
+ "math"
+ "reflect"
+ "sync/atomic"
+ "unsafe"
+)
+
+var _ = math.Pi
+var _ reflect.Kind
+var _ atomic.Value
+var _ unsafe.Pointer
+
+const (
+ AF_ALG = 38
+ AF_APPLETALK = 5
+ AF_ASH = 18
+ AF_ATMPVC = 8
+ AF_ATMSVC = 20
+ AF_AX25 = 3
+ AF_BLUETOOTH = 31
+ AF_BRIDGE = 7
+ AF_CAIF = 37
+ AF_CAN = 29
+ AF_DECnet = 12
+ AF_ECONET = 19
+ AF_FILE = 1
+ AF_IB = 27
+ AF_IEEE802154 = 36
+ AF_INET = 2
+ AF_INET6 = 10
+ AF_IPX = 4
+ AF_IRDA = 23
+ AF_ISDN = 34
+ AF_IUCV = 32
+ AF_KCM = 41
+ AF_KEY = 15
+ AF_LLC = 26
+ AF_LOCAL = 1
+ AF_MAX = 45
+ AF_MPLS = 28
+ AF_NETBEUI = 13
+ AF_NETLINK = 16
+ AF_NETROM = 6
+ AF_NFC = 39
+ AF_PACKET = 17
+ AF_PHONET = 35
+ AF_PPPOX = 24
+ AF_QIPCRTR = 42
+ AF_RDS = 21
+ AF_ROSE = 11
+ AF_ROUTE = 16
+ AF_RXRPC = 33
+ AF_SECURITY = 14
+ AF_SMC = 43
+ AF_SNA = 22
+ AF_TIPC = 30
+ AF_UNIX = 1
+ AF_UNSPEC = 0
+ AF_VSOCK = 40
+ AF_WANPIPE = 25
+ AF_X25 = 9
+ AF_XDP = 44
+ AI_ADDRCONFIG = 0x0020
+ AI_ALL = 0x0010
+ AI_CANONNAME = 0x0002
+ AI_NUMERICHOST = 0x0004
+ AI_NUMERICSERV = 0x0400
+ AI_PASSIVE = 0x0001
+ AI_V4MAPPED = 0x0008
+ BIG_ENDIAN = 4321
+ BYTE_ORDER = 1234
+ EAI_AGAIN = -3
+ EAI_BADFLAGS = -1
+ EAI_FAIL = -4
+ EAI_FAMILY = -6
+ EAI_MEMORY = -10
+ EAI_NONAME = -2
+ EAI_OVERFLOW = -12
+ EAI_SERVICE = -8
+ EAI_SOCKTYPE = -7
+ EAI_SYSTEM = -11
+ FD_SETSIZE = 1024
+ FIOGETOWN = 0x8903
+ FIOSETOWN = 0x8901
+ HOST_NOT_FOUND = 1
+ INET6_ADDRSTRLEN = 46
+ INET_ADDRSTRLEN = 16
+ IN_CLASSA_HOST = 16777215
+ IN_CLASSA_MAX = 128
+ IN_CLASSA_NET = 0xff000000
+ IN_CLASSA_NSHIFT = 24
+ IN_CLASSB_HOST = 65535
+ IN_CLASSB_MAX = 65536
+ IN_CLASSB_NET = 0xffff0000
+ IN_CLASSB_NSHIFT = 16
+ IN_CLASSC_HOST = 255
+ IN_CLASSC_NET = 0xffffff00
+ IN_CLASSC_NSHIFT = 8
+ IN_LOOPBACKNET = 127
+ IPPORT_RESERVED1 = 1024
+ IPV6_2292DSTOPTS = 4
+ IPV6_2292HOPLIMIT = 8
+ IPV6_2292HOPOPTS = 3
+ IPV6_2292PKTINFO = 2
+ IPV6_2292PKTOPTIONS = 6
+ IPV6_2292RTHDR = 5
+ IPV6_ADDRFORM = 1
+ IPV6_ADDR_PREFERENCES = 72
+ IPV6_ADD_MEMBERSHIP = 20
+ IPV6_AUTHHDR = 10
+ IPV6_AUTOFLOWLABEL = 70
+ IPV6_CHECKSUM = 7
+ IPV6_DONTFRAG = 62
+ IPV6_DROP_MEMBERSHIP = 21
+ IPV6_DSTOPTS = 59
+ IPV6_FREEBIND = 78
+ IPV6_HDRINCL = 36
+ IPV6_HOPLIMIT = 52
+ IPV6_HOPOPTS = 54
+ IPV6_IPSEC_POLICY = 34
+ IPV6_JOIN_ANYCAST = 27
+ IPV6_JOIN_GROUP = 20
+ IPV6_LEAVE_ANYCAST = 28
+ IPV6_LEAVE_GROUP = 21
+ IPV6_MINHOPCOUNT = 73
+ IPV6_MTU = 24
+ IPV6_MTU_DISCOVER = 23
+ IPV6_MULTICAST_ALL = 29
+ IPV6_MULTICAST_HOPS = 18
+ IPV6_MULTICAST_IF = 17
+ IPV6_MULTICAST_LOOP = 19
+ IPV6_NEXTHOP = 9
+ IPV6_ORIGDSTADDR = 74
+ IPV6_PATHMTU = 61
+ IPV6_PKTINFO = 50
+ IPV6_PMTUDISC_DO = 2
+ IPV6_PMTUDISC_DONT = 0
+ IPV6_PMTUDISC_INTERFACE = 4
+ IPV6_PMTUDISC_OMIT = 5
+ IPV6_PMTUDISC_PROBE = 3
+ IPV6_PMTUDISC_WANT = 1
+ IPV6_RECVDSTOPTS = 58
+ IPV6_RECVERR = 25
+ IPV6_RECVERR_RFC4884 = 31
+ IPV6_RECVFRAGSIZE = 77
+ IPV6_RECVHOPLIMIT = 51
+ IPV6_RECVHOPOPTS = 53
+ IPV6_RECVORIGDSTADDR = 74
+ IPV6_RECVPATHMTU = 60
+ IPV6_RECVPKTINFO = 49
+ IPV6_RECVRTHDR = 56
+ IPV6_RECVTCLASS = 66
+ IPV6_ROUTER_ALERT = 22
+ IPV6_ROUTER_ALERT_ISOLATE = 30
+ IPV6_RTHDR = 57
+ IPV6_RTHDRDSTOPTS = 55
+ IPV6_RTHDR_LOOSE = 0
+ IPV6_RTHDR_STRICT = 1
+ IPV6_RTHDR_TYPE_0 = 0
+ IPV6_RXDSTOPTS = 59
+ IPV6_RXHOPOPTS = 54
+ IPV6_TCLASS = 67
+ IPV6_TRANSPARENT = 75
+ IPV6_UNICAST_HOPS = 16
+ IPV6_UNICAST_IF = 76
+ IPV6_V6ONLY = 26
+ IPV6_XFRM_POLICY = 35
+ IP_ADD_MEMBERSHIP = 35
+ IP_ADD_SOURCE_MEMBERSHIP = 39
+ IP_BIND_ADDRESS_NO_PORT = 24
+ IP_BLOCK_SOURCE = 38
+ IP_CHECKSUM = 23
+ IP_DEFAULT_MULTICAST_LOOP = 1
+ IP_DEFAULT_MULTICAST_TTL = 1
+ IP_DROP_MEMBERSHIP = 36
+ IP_DROP_SOURCE_MEMBERSHIP = 40
+ IP_FREEBIND = 15
+ IP_HDRINCL = 3
+ IP_IPSEC_POLICY = 16
+ IP_MAX_MEMBERSHIPS = 20
+ IP_MINTTL = 21
+ IP_MSFILTER = 41
+ IP_MTU = 14
+ IP_MTU_DISCOVER = 10
+ IP_MULTICAST_ALL = 49
+ IP_MULTICAST_IF = 32
+ IP_MULTICAST_LOOP = 34
+ IP_MULTICAST_TTL = 33
+ IP_NODEFRAG = 22
+ IP_OPTIONS = 4
+ IP_ORIGDSTADDR = 20
+ IP_PASSSEC = 18
+ IP_PKTINFO = 8
+ IP_PKTOPTIONS = 9
+ IP_PMTUDISC = 10
+ IP_PMTUDISC_DO = 2
+ IP_PMTUDISC_DONT = 0
+ IP_PMTUDISC_INTERFACE = 4
+ IP_PMTUDISC_OMIT = 5
+ IP_PMTUDISC_PROBE = 3
+ IP_PMTUDISC_WANT = 1
+ IP_RECVERR = 11
+ IP_RECVERR_RFC4884 = 26
+ IP_RECVFRAGSIZE = 25
+ IP_RECVOPTS = 6
+ IP_RECVORIGDSTADDR = 20
+ IP_RECVRETOPTS = 7
+ IP_RECVTOS = 13
+ IP_RECVTTL = 12
+ IP_RETOPTS = 7
+ IP_ROUTER_ALERT = 5
+ IP_TOS = 1
+ IP_TRANSPARENT = 19
+ IP_TTL = 2
+ IP_UNBLOCK_SOURCE = 37
+ IP_UNICAST_IF = 50
+ IP_XFRM_POLICY = 17
+ LITTLE_ENDIAN = 1234
+ MCAST_BLOCK_SOURCE = 43
+ MCAST_EXCLUDE = 0
+ MCAST_INCLUDE = 1
+ MCAST_JOIN_GROUP = 42
+ MCAST_JOIN_SOURCE_GROUP = 46
+ MCAST_LEAVE_GROUP = 45
+ MCAST_LEAVE_SOURCE_GROUP = 47
+ MCAST_MSFILTER = 48
+ MCAST_UNBLOCK_SOURCE = 44
+ NETDB_INTERNAL = -1
+ NETDB_SUCCESS = 0
+ NI_DGRAM = 16
+ NI_MAXHOST = 1025
+ NI_MAXSERV = 32
+ NI_NAMEREQD = 8
+ NI_NOFQDN = 4
+ NI_NUMERICHOST = 1
+ NI_NUMERICSERV = 2
+ NO_ADDRESS = 4
+ NO_DATA = 4
+ NO_RECOVERY = 3
+ PDP_ENDIAN = 3412
+ PF_ALG = 38
+ PF_APPLETALK = 5
+ PF_ASH = 18
+ PF_ATMPVC = 8
+ PF_ATMSVC = 20
+ PF_AX25 = 3
+ PF_BLUETOOTH = 31
+ PF_BRIDGE = 7
+ PF_CAIF = 37
+ PF_CAN = 29
+ PF_DECnet = 12
+ PF_ECONET = 19
+ PF_FILE = 1
+ PF_IB = 27
+ PF_IEEE802154 = 36
+ PF_INET = 2
+ PF_INET6 = 10
+ PF_IPX = 4
+ PF_IRDA = 23
+ PF_ISDN = 34
+ PF_IUCV = 32
+ PF_KCM = 41
+ PF_KEY = 15
+ PF_LLC = 26
+ PF_LOCAL = 1
+ PF_MAX = 45
+ PF_MPLS = 28
+ PF_NETBEUI = 13
+ PF_NETLINK = 16
+ PF_NETROM = 6
+ PF_NFC = 39
+ PF_PACKET = 17
+ PF_PHONET = 35
+ PF_PPPOX = 24
+ PF_QIPCRTR = 42
+ PF_RDS = 21
+ PF_ROSE = 11
+ PF_ROUTE = 16
+ PF_RXRPC = 33
+ PF_SECURITY = 14
+ PF_SMC = 43
+ PF_SNA = 22
+ PF_TIPC = 30
+ PF_UNIX = 1
+ PF_UNSPEC = 0
+ PF_VSOCK = 40
+ PF_WANPIPE = 25
+ PF_X25 = 9
+ PF_XDP = 44
+ SCM_TIMESTAMP = 29
+ SCM_TIMESTAMPING = 37
+ SCM_TIMESTAMPING_OPT_STATS = 54
+ SCM_TIMESTAMPING_PKTINFO = 58
+ SCM_TIMESTAMPNS = 35
+ SCM_TXTIME = 61
+ SCM_WIFI_STATUS = 41
+ SIOCATMARK = 0x8905
+ SIOCGPGRP = 0x8904
+ SIOCGSTAMPNS_OLD = 0x8907
+ SIOCGSTAMP_OLD = 0x8906
+ SIOCSPGRP = 0x8902
+ SOL_AAL = 265
+ SOL_ALG = 279
+ SOL_ATM = 264
+ SOL_BLUETOOTH = 274
+ SOL_CAIF = 278
+ SOL_DCCP = 269
+ SOL_DECNET = 261
+ SOL_ICMPV6 = 58
+ SOL_IP = 0
+ SOL_IPV6 = 41
+ SOL_IRDA = 266
+ SOL_IUCV = 277
+ SOL_KCM = 281
+ SOL_LLC = 268
+ SOL_NETBEUI = 267
+ SOL_NETLINK = 270
+ SOL_NFC = 280
+ SOL_PACKET = 263
+ SOL_PNPIPE = 275
+ SOL_PPPOL2TP = 273
+ SOL_RAW = 255
+ SOL_RDS = 276
+ SOL_RXRPC = 272
+ SOL_SOCKET = 1
+ SOL_TIPC = 271
+ SOL_TLS = 282
+ SOL_X25 = 262
+ SOL_XDP = 283
+ SOMAXCONN = 4096
+ SO_ACCEPTCONN = 30
+ SO_ATTACH_BPF = 50
+ SO_ATTACH_FILTER = 26
+ SO_ATTACH_REUSEPORT_CBPF = 51
+ SO_ATTACH_REUSEPORT_EBPF = 52
+ SO_BINDTODEVICE = 25
+ SO_BINDTOIFINDEX = 62
+ SO_BPF_EXTENSIONS = 48
+ SO_BROADCAST = 6
+ SO_BSDCOMPAT = 14
+ SO_BUSY_POLL = 46
+ SO_BUSY_POLL_BUDGET = 70
+ SO_CNX_ADVICE = 53
+ SO_COOKIE = 57
+ SO_DEBUG = 1
+ SO_DETACH_BPF = 27
+ SO_DETACH_FILTER = 27
+ SO_DETACH_REUSEPORT_BPF = 68
+ SO_DOMAIN = 39
+ SO_DONTROUTE = 5
+ SO_ERROR = 4
+ SO_GET_FILTER = 26
+ SO_INCOMING_CPU = 49
+ SO_INCOMING_NAPI_ID = 56
+ SO_KEEPALIVE = 9
+ SO_LINGER = 13
+ SO_LOCK_FILTER = 44
+ SO_MARK = 36
+ SO_MAX_PACING_RATE = 47
+ SO_MEMINFO = 55
+ SO_NETNS_COOKIE = 71
+ SO_NOFCS = 43
+ SO_NO_CHECK = 11
+ SO_OOBINLINE = 10
+ SO_PASSCRED = 16
+ SO_PASSSEC = 34
+ SO_PEEK_OFF = 42
+ SO_PEERCRED = 17
+ SO_PEERGROUPS = 59
+ SO_PEERNAME = 28
+ SO_PEERSEC = 31
+ SO_PREFER_BUSY_POLL = 69
+ SO_PRIORITY = 12
+ SO_PROTOCOL = 38
+ SO_RCVBUF = 8
+ SO_RCVBUFFORCE = 33
+ SO_RCVLOWAT = 18
+ SO_RCVTIMEO = 20
+ SO_RCVTIMEO_NEW = 66
+ SO_RCVTIMEO_OLD = 20
+ SO_REUSEADDR = 2
+ SO_REUSEPORT = 15
+ SO_RXQ_OVFL = 40
+ SO_SECURITY_AUTHENTICATION = 22
+ SO_SECURITY_ENCRYPTION_NETWORK = 24
+ SO_SECURITY_ENCRYPTION_TRANSPORT = 23
+ SO_SELECT_ERR_QUEUE = 45
+ SO_SNDBUF = 7
+ SO_SNDBUFFORCE = 32
+ SO_SNDLOWAT = 19
+ SO_SNDTIMEO = 21
+ SO_SNDTIMEO_NEW = 67
+ SO_SNDTIMEO_OLD = 21
+ SO_TIMESTAMP = 29
+ SO_TIMESTAMPING = 37
+ SO_TIMESTAMPING_NEW = 65
+ SO_TIMESTAMPING_OLD = 37
+ SO_TIMESTAMPNS = 35
+ SO_TIMESTAMPNS_NEW = 64
+ SO_TIMESTAMPNS_OLD = 35
+ SO_TIMESTAMP_NEW = 63
+ SO_TIMESTAMP_OLD = 29
+ SO_TXTIME = 61
+ SO_TYPE = 3
+ SO_WIFI_STATUS = 41
+ SO_ZEROCOPY = 60
+ TRY_AGAIN = 2
+ X_ASM_RISCV_BITSPERLONG_H = 0
+ X_ATFILE_SOURCE = 1
+ X_BITS_BYTESWAP_H = 1
+ X_BITS_ENDIANNESS_H = 1
+ X_BITS_ENDIAN_H = 1
+ X_BITS_PTHREADTYPES_ARCH_H = 1
+ X_BITS_PTHREADTYPES_COMMON_H = 1
+ X_BITS_SOCKADDR_H = 1
+ X_BITS_STDINT_INTN_H = 1
+ X_BITS_STDINT_UINTN_H = 1
+ X_BITS_TIME64_H = 1
+ X_BITS_TYPESIZES_H = 1
+ X_BITS_TYPES_H = 1
+ X_BITS_UINTN_IDENTITY_H = 1
+ X_BSD_SIZE_T_ = 0
+ X_BSD_SIZE_T_DEFINED_ = 0
+ X_DEFAULT_SOURCE = 1
+ X_ENDIAN_H = 1
+ X_FEATURES_H = 1
+ X_FILE_OFFSET_BITS = 64
+ X_GCC_SIZE_T = 0
+ X_LINUX_POSIX_TYPES_H = 0
+ X_LP64 = 1
+ X_NETDB_H = 1
+ X_NETINET_IN_H = 1
+ X_PATH_HEQUIV = "/etc/hosts.equiv"
+ X_PATH_HOSTS = "/etc/hosts"
+ X_PATH_NETWORKS = "/etc/networks"
+ X_PATH_NSSWITCH_CONF = "/etc/nsswitch.conf"
+ X_PATH_PROTOCOLS = "/etc/protocols"
+ X_PATH_SERVICES = "/etc/services"
+ X_POSIX_C_SOURCE = 200809
+ X_POSIX_SOURCE = 1
+ X_RPC_NETDB_H = 1
+ X_RWLOCK_INTERNAL_H = 0
+ X_SIZET_ = 0
+ X_SIZE_T = 0
+ X_SIZE_T_ = 0
+ X_SIZE_T_DECLARED = 0
+ X_SIZE_T_DEFINED = 0
+ X_SIZE_T_DEFINED_ = 0
+ X_SS_SIZE = 128
+ X_STDC_PREDEF_H = 1
+ X_STRUCT_TIMESPEC = 1
+ X_SYS_CDEFS_H = 1
+ X_SYS_SELECT_H = 1
+ X_SYS_SIZE_T_H = 0
+ X_SYS_SOCKET_H = 1
+ X_SYS_TYPES_H = 1
+ X_THREAD_MUTEX_INTERNAL_H = 1
+ X_THREAD_SHARED_TYPES_H = 1
+ X_T_SIZE = 0
+ X_T_SIZE_ = 0
+ Linux = 1
+ Unix = 1
+)
+
+// If __USE_KERNEL_IPV6_DEFS is 1 then the user has included the kernel
+// network headers first and we should use those ABI-identical definitions
+// instead of our own, otherwise 0.
+const ( /* in.h:103:1: */
+ IPPROTO_HOPOPTS = 0 // IPv6 Hop-by-Hop options.
+ IPPROTO_ROUTING = 43 // IPv6 routing header.
+ IPPROTO_FRAGMENT = 44 // IPv6 fragmentation header.
+ IPPROTO_ICMPV6 = 58 // ICMPv6.
+ IPPROTO_NONE = 59 // IPv6 no next header.
+ IPPROTO_DSTOPTS = 60 // IPv6 destination options.
+ IPPROTO_MH = 135
+)
+
+// Standard well-known ports.
+const ( /* in.h:126:1: */
+ IPPORT_ECHO = 7 // Echo service.
+ IPPORT_DISCARD = 9 // Discard transmissions service.
+ IPPORT_SYSTAT = 11 // System status service.
+ IPPORT_DAYTIME = 13 // Time of day service.
+ IPPORT_NETSTAT = 15 // Network status service.
+ IPPORT_FTP = 21 // File Transfer Protocol.
+ IPPORT_TELNET = 23 // Telnet protocol.
+ IPPORT_SMTP = 25 // Simple Mail Transfer Protocol.
+ IPPORT_TIMESERVER = 37 // Timeserver service.
+ IPPORT_NAMESERVER = 42 // Domain Name Service.
+ IPPORT_WHOIS = 43 // Internet Whois service.
+ IPPORT_MTP = 57
+
+ IPPORT_TFTP = 69 // Trivial File Transfer Protocol.
+ IPPORT_RJE = 77
+ IPPORT_FINGER = 79 // Finger service.
+ IPPORT_TTYLINK = 87
+ IPPORT_SUPDUP = 95 // SUPDUP protocol.
+
+ IPPORT_EXECSERVER = 512 // execd service.
+ IPPORT_LOGINSERVER = 513 // rlogind service.
+ IPPORT_CMDSERVER = 514
+ IPPORT_EFSSERVER = 520
+
+ // UDP ports.
+ IPPORT_BIFFUDP = 512
+ IPPORT_WHOSERVER = 513
+ IPPORT_ROUTESERVER = 520
+
+ // Ports less than this value are reserved for privileged processes.
+ IPPORT_RESERVED = 1024
+
+ // Ports greater this value are reserved for (non-privileged) servers.
+ IPPORT_USERRESERVED = 5000
+)
+
+// Options for use with `getsockopt' and `setsockopt' at the IPv6 level.
+// The first word in the comment at the right is the data type used;
+// "bool" means a boolean value stored in an `int'.
+
+// Advanced API (RFC3542) (1).
+
+// Advanced API (RFC3542) (2).
+
+// RFC5014.
+
+// RFC5082.
+
+// Obsolete synonyms for the above.
+
+// IPV6_MTU_DISCOVER values.
+
+// Socket level values for IPv6.
+
+// Routing header options for IPv6.
+
+// Standard well-defined IP protocols.
+const ( /* in.h:40:1: */
+ IPPROTO_IP = 0 // Dummy protocol for TCP.
+ IPPROTO_ICMP = 1 // Internet Control Message Protocol.
+ IPPROTO_IGMP = 2 // Internet Group Management Protocol.
+ IPPROTO_IPIP = 4 // IPIP tunnels (older KA9Q tunnels use 94).
+ IPPROTO_TCP = 6 // Transmission Control Protocol.
+ IPPROTO_EGP = 8 // Exterior Gateway Protocol.
+ IPPROTO_PUP = 12 // PUP protocol.
+ IPPROTO_UDP = 17 // User Datagram Protocol.
+ IPPROTO_IDP = 22 // XNS IDP protocol.
+ IPPROTO_TP = 29 // SO Transport Protocol Class 4.
+ IPPROTO_DCCP = 33 // Datagram Congestion Control Protocol.
+ IPPROTO_IPV6 = 41 // IPv6 header.
+ IPPROTO_RSVP = 46 // Reservation Protocol.
+ IPPROTO_GRE = 47 // General Routing Encapsulation.
+ IPPROTO_ESP = 50 // encapsulating security payload.
+ IPPROTO_AH = 51 // authentication header.
+ IPPROTO_MTP = 92 // Multicast Transport Protocol.
+ IPPROTO_BEETPH = 94 // IP option pseudo header for BEET.
+ IPPROTO_ENCAP = 98 // Encapsulation Header.
+ IPPROTO_PIM = 103 // Protocol Independent Multicast.
+ IPPROTO_COMP = 108 // Compression Header Protocol.
+ IPPROTO_SCTP = 132 // Stream Control Transmission Protocol.
+ IPPROTO_UDPLITE = 136 // UDP-Lite protocol.
+ IPPROTO_MPLS = 137 // MPLS in IP.
+ IPPROTO_ETHERNET = 143 // Ethernet-within-IPv6 Encapsulation.
+ IPPROTO_RAW = 255 // Raw IP packets.
+ IPPROTO_MPTCP = 262 // Multipath TCP connection.
+ IPPROTO_MAX = 263
+)
+
+// Bits in the FLAGS argument to `send', `recv', et al.
+const ( /* socket.h:200:1: */
+ MSG_OOB = 1 // Process out-of-band data.
+ MSG_PEEK = 2 // Peek at incoming messages.
+ MSG_DONTROUTE = 4 // Don't use local routing.
+ MSG_CTRUNC = 8 // Control data lost before delivery.
+ MSG_PROXY = 16 // Supply or ask second address.
+ MSG_TRUNC = 32
+ MSG_DONTWAIT = 64 // Nonblocking IO.
+ MSG_EOR = 128 // End of record.
+ MSG_WAITALL = 256 // Wait for a full request.
+ MSG_FIN = 512
+ MSG_SYN = 1024
+ MSG_CONFIRM = 2048 // Confirm path validity.
+ MSG_RST = 4096
+ MSG_ERRQUEUE = 8192 // Fetch message from error queue.
+ MSG_NOSIGNAL = 16384 // Do not generate SIGPIPE.
+ MSG_MORE = 32768 // Sender will send more.
+ MSG_WAITFORONE = 65536 // Wait for at least one packet to return.
+ MSG_BATCH = 262144 // sendmmsg: more messages coming.
+ MSG_ZEROCOPY = 67108864 // Use user data in kernel path.
+ MSG_FASTOPEN = 536870912 // Send data in TCP SYN.
+
+ MSG_CMSG_CLOEXEC = 1073741824
+)
+
+// Socket level message types. This must match the definitions in
+// <linux/socket.h>.
+const ( /* socket.h:332:1: */
+ SCM_RIGHTS = 1
+)
+
+// Get the architecture-dependent definition of enum __socket_type.
+// Define enum __socket_type for generic Linux.
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Types of sockets.
+const ( /* socket_type.h:24:1: */
+ SOCK_STREAM = 1 // Sequenced, reliable, connection-based
+ // byte streams.
+ SOCK_DGRAM = 2 // Connectionless, unreliable datagrams
+ // of fixed maximum length.
+ SOCK_RAW = 3 // Raw protocol interface.
+ SOCK_RDM = 4 // Reliably-delivered messages.
+ SOCK_SEQPACKET = 5 // Sequenced, reliable, connection-based,
+ // datagrams of fixed maximum length.
+ SOCK_DCCP = 6 // Datagram Congestion Control Protocol.
+ SOCK_PACKET = 10 // Linux specific way of getting packets
+ // at the dev level. For writing rarp and
+ // other similar things on the user level.
+
+ // Flags to be ORed into the type parameter of socket and socketpair and
+ // used for the flags parameter of paccept.
+
+ SOCK_CLOEXEC = 524288 // Atomically set close-on-exec flag for the
+ // new descriptor(s).
+ SOCK_NONBLOCK = 2048
+)
+
+// The following constants should be used for the second parameter of
+// `shutdown'.
+const ( /* socket.h:41:1: */
+ SHUT_RD = 0 // No more receptions.
+ SHUT_WR = 1 // No more transmissions.
+ SHUT_RDWR = 2
+)
+
+type Ptrdiff_t = int64 /* <builtin>:3:26 */
+
+type Size_t = uint64 /* <builtin>:9:23 */
+
+type Wchar_t = int32 /* <builtin>:15:24 */
+
+type X__int128_t = struct {
+ Flo int64
+ Fhi int64
+} /* <builtin>:21:43 */ // must match modernc.org/mathutil.Int128
+type X__uint128_t = struct {
+ Flo uint64
+ Fhi uint64
+} /* <builtin>:22:44 */ // must match modernc.org/mathutil.Int128
+
+type X__builtin_va_list = uintptr /* <builtin>:46:14 */
+type X__float128 = float64 /* <builtin>:47:21 */
+
+// Copyright (C) 1996-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// All data returned by the network data base library are supplied in
+// host order and returned in network order (suitable for use in
+// system calls).
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// These are defined by the user (or the compiler)
+// to specify the desired environment:
+//
+// __STRICT_ANSI__ ISO Standard C.
+// _ISOC99_SOURCE Extensions to ISO C89 from ISO C99.
+// _ISOC11_SOURCE Extensions to ISO C99 from ISO C11.
+// _ISOC2X_SOURCE Extensions to ISO C99 from ISO C2X.
+// __STDC_WANT_LIB_EXT2__
+// Extensions to ISO C99 from TR 27431-2:2010.
+// __STDC_WANT_IEC_60559_BFP_EXT__
+// Extensions to ISO C11 from TS 18661-1:2014.
+// __STDC_WANT_IEC_60559_FUNCS_EXT__
+// Extensions to ISO C11 from TS 18661-4:2015.
+// __STDC_WANT_IEC_60559_TYPES_EXT__
+// Extensions to ISO C11 from TS 18661-3:2015.
+// __STDC_WANT_IEC_60559_EXT__
+// ISO C2X interfaces defined only in Annex F.
+//
+// _POSIX_SOURCE IEEE Std 1003.1.
+// _POSIX_C_SOURCE If ==1, like _POSIX_SOURCE; if >=2 add IEEE Std 1003.2;
+// if >=199309L, add IEEE Std 1003.1b-1993;
+// if >=199506L, add IEEE Std 1003.1c-1995;
+// if >=200112L, all of IEEE 1003.1-2004
+// if >=200809L, all of IEEE 1003.1-2008
+// _XOPEN_SOURCE Includes POSIX and XPG things. Set to 500 if
+// Single Unix conformance is wanted, to 600 for the
+// sixth revision, to 700 for the seventh revision.
+// _XOPEN_SOURCE_EXTENDED XPG things and X/Open Unix extensions.
+// _LARGEFILE_SOURCE Some more functions for correct standard I/O.
+// _LARGEFILE64_SOURCE Additional functionality from LFS for large files.
+// _FILE_OFFSET_BITS=N Select default filesystem interface.
+// _ATFILE_SOURCE Additional *at interfaces.
+// _DYNAMIC_STACK_SIZE_SOURCE Select correct (but non compile-time constant)
+// MINSIGSTKSZ, SIGSTKSZ and PTHREAD_STACK_MIN.
+// _GNU_SOURCE All of the above, plus GNU extensions.
+// _DEFAULT_SOURCE The default set of features (taking precedence over
+// __STRICT_ANSI__).
+//
+// _FORTIFY_SOURCE Add security hardening to many library functions.
+// Set to 1 or 2; 2 performs stricter checks than 1.
+//
+// _REENTRANT, _THREAD_SAFE
+// Obsolete; equivalent to _POSIX_C_SOURCE=199506L.
+//
+// The `-ansi' switch to the GNU C compiler, and standards conformance
+// options such as `-std=c99', define __STRICT_ANSI__. If none of
+// these are defined, or if _DEFAULT_SOURCE is defined, the default is
+// to have _POSIX_SOURCE set to one and _POSIX_C_SOURCE set to
+// 200809L, as well as enabling miscellaneous functions from BSD and
+// SVID. If more than one of these are defined, they accumulate. For
+// example __STRICT_ANSI__, _POSIX_SOURCE and _POSIX_C_SOURCE together
+// give you ISO C, 1003.1, and 1003.2, but nothing else.
+//
+// These are defined by this file and are used by the
+// header files to decide what to declare or define:
+//
+// __GLIBC_USE (F) Define things from feature set F. This is defined
+// to 1 or 0; the subsequent macros are either defined
+// or undefined, and those tests should be moved to
+// __GLIBC_USE.
+// __USE_ISOC11 Define ISO C11 things.
+// __USE_ISOC99 Define ISO C99 things.
+// __USE_ISOC95 Define ISO C90 AMD1 (C95) things.
+// __USE_ISOCXX11 Define ISO C++11 things.
+// __USE_POSIX Define IEEE Std 1003.1 things.
+// __USE_POSIX2 Define IEEE Std 1003.2 things.
+// __USE_POSIX199309 Define IEEE Std 1003.1, and .1b things.
+// __USE_POSIX199506 Define IEEE Std 1003.1, .1b, .1c and .1i things.
+// __USE_XOPEN Define XPG things.
+// __USE_XOPEN_EXTENDED Define X/Open Unix things.
+// __USE_UNIX98 Define Single Unix V2 things.
+// __USE_XOPEN2K Define XPG6 things.
+// __USE_XOPEN2KXSI Define XPG6 XSI things.
+// __USE_XOPEN2K8 Define XPG7 things.
+// __USE_XOPEN2K8XSI Define XPG7 XSI things.
+// __USE_LARGEFILE Define correct standard I/O things.
+// __USE_LARGEFILE64 Define LFS things with separate names.
+// __USE_FILE_OFFSET64 Define 64bit interface as default.
+// __USE_MISC Define things from 4.3BSD or System V Unix.
+// __USE_ATFILE Define *at interfaces and AT_* constants for them.
+// __USE_DYNAMIC_STACK_SIZE Define correct (but non compile-time constant)
+// MINSIGSTKSZ, SIGSTKSZ and PTHREAD_STACK_MIN.
+// __USE_GNU Define GNU extensions.
+// __USE_FORTIFY_LEVEL Additional security measures used, according to level.
+//
+// The macros `__GNU_LIBRARY__', `__GLIBC__', and `__GLIBC_MINOR__' are
+// defined by this file unconditionally. `__GNU_LIBRARY__' is provided
+// only for compatibility. All new code should use the other symbols
+// to test for features.
+//
+// All macros listed above as possibly being defined by this file are
+// explicitly undefined if they are not explicitly defined.
+// Feature-test macros that are not defined by the user or compiler
+// but are implied by the other feature-test macros defined (or by the
+// lack of any definitions) are defined by the file.
+//
+// ISO C feature test macros depend on the definition of the macro
+// when an affected header is included, not when the first system
+// header is included, and so they are handled in
+// <bits/libc-header-start.h>, which does not have a multiple include
+// guard. Feature test macros that can be handled from the first
+// system header included are handled here.
+
+// Undefine everything, so we get a clean slate.
+
+// Suppress kernel-name space pollution unless user expressedly asks
+// for it.
+
+// Convenience macro to test the version of gcc.
+// Use like this:
+// #if __GNUC_PREREQ (2,8)
+// ... code requiring gcc 2.8 or later ...
+// #endif
+// Note: only works for GCC 2.0 and later, because __GNUC_MINOR__ was
+// added in 2.0.
+
+// Similarly for clang. Features added to GCC after version 4.2 may
+// or may not also be available in clang, and clang's definitions of
+// __GNUC(_MINOR)__ are fixed at 4 and 2 respectively. Not all such
+// features can be queried via __has_extension/__has_feature.
+
+// Whether to use feature set F.
+
+// _BSD_SOURCE and _SVID_SOURCE are deprecated aliases for
+// _DEFAULT_SOURCE. If _DEFAULT_SOURCE is present we do not
+// issue a warning; the expectation is that the source is being
+// transitioned to use the new macro.
+
+// If _GNU_SOURCE was defined by the user, turn on all the other features.
+
+// If nothing (other than _GNU_SOURCE and _DEFAULT_SOURCE) is defined,
+// define _DEFAULT_SOURCE.
+
+// This is to enable the ISO C2X extension.
+
+// This is to enable the ISO C11 extension.
+
+// This is to enable the ISO C99 extension.
+
+// This is to enable the ISO C90 Amendment 1:1995 extension.
+
+// If none of the ANSI/POSIX macros are defined, or if _DEFAULT_SOURCE
+// is defined, use POSIX.1-2008 (or another version depending on
+// _XOPEN_SOURCE).
+
+// Some C libraries once required _REENTRANT and/or _THREAD_SAFE to be
+// defined in all multithreaded code. GNU libc has not required this
+// for many years. We now treat them as compatibility synonyms for
+// _POSIX_C_SOURCE=199506L, which is the earliest level of POSIX with
+// comprehensive support for multithreaded code. Using them never
+// lowers the selected level of POSIX conformance, only raises it.
+
+// Features part to handle 64-bit time_t support.
+// Copyright (C) 2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// We need to know the word size in order to check the time size.
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Bit size of the time_t type at glibc build time, RISC-V case.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// RV32 and RV64 both use 64-bit time_t
+
+// The function 'gets' existed in C89, but is impossible to use
+// safely. It has been removed from ISO C11 and ISO C++14. Note: for
+// compatibility with various implementations of <cstdio>, this test
+// must consider only the value of __cplusplus when compiling C++.
+
+// GNU formerly extended the scanf functions with modified format
+// specifiers %as, %aS, and %a[...] that allocate a buffer for the
+// input using malloc. This extension conflicts with ISO C99, which
+// defines %a as a standalone format specifier that reads a floating-
+// point number; moreover, POSIX.1-2008 provides the same feature
+// using the modifier letter 'm' instead (%ms, %mS, %m[...]).
+//
+// We now follow C99 unless GNU extensions are active and the compiler
+// is specifically in C89 or C++98 mode (strict or not). For
+// instance, with GCC, -std=gnu11 will have C99-compliant scanf with
+// or without -D_GNU_SOURCE, but -std=c89 -D_GNU_SOURCE will have the
+// old extension.
+
+// Get definitions of __STDC_* predefined macros, if the compiler has
+// not preincluded this header automatically.
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// This macro indicates that the installed library is the GNU C Library.
+// For historic reasons the value now is 6 and this will stay from now
+// on. The use of this variable is deprecated. Use __GLIBC__ and
+// __GLIBC_MINOR__ now (see below) when you want to test for a specific
+// GNU C library version and use the values in <gnu/lib-names.h> to get
+// the sonames of the shared libraries.
+
+// Major and minor version number of the GNU C library package. Use
+// these macros to test for features in specific releases.
+
+// This is here only because every header file already includes this one.
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// We are almost always included from features.h.
+
+// The GNU libc does not support any K&R compilers or the traditional mode
+// of ISO C compilers anymore. Check for some of the combinations not
+// supported anymore.
+
+// Some user header file might have defined this before.
+
+// Compilers that lack __has_attribute may object to
+// #if defined __has_attribute && __has_attribute (...)
+// even though they do not need to evaluate the right-hand side of the &&.
+// Similarly for __has_builtin, etc.
+
+// All functions, except those with callbacks or those that
+// synchronize memory, are leaf functions.
+
+// GCC can always grok prototypes. For C++ programs we add throw()
+// to help it optimize the function calls. But this only works with
+// gcc 2.8.x and egcs. For gcc 3.4 and up we even mark C functions
+// as non-throwing using a function attribute since programs can use
+// the -fexceptions options for C code as well.
+
+// These two macros are not used in glibc anymore. They are kept here
+// only because some other projects expect the macros to be defined.
+
+// For these things, GCC behaves the ANSI way normally,
+// and the non-ANSI way under -traditional.
+
+// This is not a typedef so `const __ptr_t' does the right thing.
+
+// C++ needs to know that types and declarations are C, not C++.
+
+// Fortify support.
+
+// Use __builtin_dynamic_object_size at _FORTIFY_SOURCE=3 when available.
+
+// Support for flexible arrays.
+// Headers that should use flexible arrays only if they're "real"
+// (e.g. only if they won't affect sizeof()) should test
+// #if __glibc_c99_flexarr_available.
+
+// __asm__ ("xyz") is used throughout the headers to rename functions
+// at the assembly language level. This is wrapped by the __REDIRECT
+// macro, in order to support compilers that can do this some other
+// way. When compilers don't support asm-names at all, we have to do
+// preprocessor tricks instead (which don't have exactly the right
+// semantics, but it's the best we can do).
+//
+// Example:
+// int __REDIRECT(setpgrp, (__pid_t pid, __pid_t pgrp), setpgid);
+
+//
+// #elif __SOME_OTHER_COMPILER__
+//
+// # define __REDIRECT(name, proto, alias) name proto; _Pragma("let " #name " = " #alias)
+
+// GCC and clang have various useful declarations that can be made with
+// the '__attribute__' syntax. All of the ways we use this do fine if
+// they are omitted for compilers that don't understand it.
+
+// At some point during the gcc 2.96 development the `malloc' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+
+// Tell the compiler which arguments to an allocation function
+// indicate the size of the allocation.
+
+// At some point during the gcc 2.96 development the `pure' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+
+// This declaration tells the compiler that the value is constant.
+
+// At some point during the gcc 3.1 development the `used' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+
+// Since version 3.2, gcc allows marking deprecated functions.
+
+// Since version 4.5, gcc also allows one to specify the message printed
+// when a deprecated function is used. clang claims to be gcc 4.2, but
+// may also support this feature.
+
+// At some point during the gcc 2.8 development the `format_arg' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+// If several `format_arg' attributes are given for the same function, in
+// gcc-3.0 and older, all but the last one are ignored. In newer gccs,
+// all designated arguments are considered.
+
+// At some point during the gcc 2.97 development the `strfmon' format
+// attribute for functions was introduced. We don't want to use it
+// unconditionally (although this would be possible) since it
+// generates warnings.
+
+// The nonnull function attribute marks pointer parameters that
+// must not be NULL.
+
+// The returns_nonnull function attribute marks the return type of the function
+// as always being non-null.
+
+// If fortification mode, we warn about unused results of certain
+// function calls which can lead to problems.
+
+// Forces a function to be always inlined.
+// The Linux kernel defines __always_inline in stddef.h (283d7573), and
+// it conflicts with this definition. Therefore undefine it first to
+// allow either header to be included first.
+
+// Associate error messages with the source location of the call site rather
+// than with the source location inside the function.
+
+// GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
+// inline semantics, unless -fgnu89-inline is used. Using __GNUC_STDC_INLINE__
+// or __GNUC_GNU_INLINE is not a good enough check for gcc because gcc versions
+// older than 4.3 may define these macros and still not guarantee GNU inlining
+// semantics.
+//
+// clang++ identifies itself as gcc-4.2, but has support for GNU inlining
+// semantics, that can be checked for by using the __GNUC_STDC_INLINE_ and
+// __GNUC_GNU_INLINE__ macro definitions.
+
+// GCC 4.3 and above allow passing all anonymous arguments of an
+// __extern_always_inline function to some other vararg function.
+
+// It is possible to compile containing GCC extensions even if GCC is
+// run in pedantic mode if the uses are carefully marked using the
+// `__extension__' keyword. But this is not generally available before
+// version 2.8.
+
+// __restrict is known in EGCS 1.2 and above, and in clang.
+// It works also in C++ mode (outside of arrays), but only when spelled
+// as '__restrict', not 'restrict'.
+
+// ISO C99 also allows to declare arrays as non-overlapping. The syntax is
+// array_name[restrict]
+// GCC 3.1 and clang support this.
+// This syntax is not usable in C++ mode.
+
+// Describes a char array whose address can safely be passed as the first
+// argument to strncpy and strncat, as the char array is not necessarily
+// a NUL-terminated string.
+
+// Undefine (also defined in libc-symbols.h).
+// Copies attributes from the declaration or type referenced by
+// the argument.
+
+// The #ifndef lets Gnulib avoid including these on non-glibc
+// platforms, where the includes typically do not exist.
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Properties of long double type. ldbl-128 version.
+// Copyright (C) 2016-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// long double is distinct from double, so there is nothing to
+// define here.
+
+// __glibc_macro_warning (MESSAGE) issues warning MESSAGE. This is
+// intended for use in preprocessor macros.
+//
+// Note: MESSAGE must be a _single_ string; concatenation of string
+// literals is not supported.
+
+// Generic selection (ISO C11) is a C-only feature, available in GCC
+// since version 4.9. Previous versions do not provide generic
+// selection, even though they might set __STDC_VERSION__ to 201112L,
+// when in -std=c11 mode. Thus, we must check for !defined __GNUC__
+// when testing __STDC_VERSION__ for generic selection support.
+// On the other hand, Clang also defines __GNUC__, so a clang-specific
+// check is required to enable the use of generic selection.
+
+// Designates a 1-based positional argument ref-index of pointer type
+// that can be used to access size-index elements of the pointed-to
+// array according to access mode, or at least one element when
+// size-index is not provided:
+// access (access-mode, <ref-index> [, <size-index>])
+
+// Designates dealloc as a function to call to deallocate objects
+// allocated by the declared function.
+
+// Specify that a function such as setjmp or vfork may return
+// twice.
+
+// If we don't have __REDIRECT, prototypes will be missing if
+// __USE_FILE_OFFSET64 but not __USE_LARGEFILE[64].
+
+// Decide whether we can define 'extern inline' functions in headers.
+
+// This is here only because every header file already includes this one.
+// Get the definitions of all the appropriate `__stub_FUNCTION' symbols.
+// <gnu/stubs.h> contains `#define __stub_FUNCTION' when FUNCTION is a stub
+// that will always return failure (and set errno to ENOSYS).
+// This file is automatically generated.
+// This file selects the right generated file of `__stub_FUNCTION' macros
+// based on the architecture being compiled for.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// This file is automatically generated.
+// It defines a symbol `__stub_FUNCTION' for each function
+// in the C library which is a stub, meaning it will fail
+// every time called, usually setting errno to ENOSYS.
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Define uintN_t types.
+// Copyright (C) 2017-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Bit size of the time_t type at glibc build time, RISC-V case.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// RV32 and RV64 both use 64-bit time_t
+
+// Convenience types.
+type X__u_char = uint8 /* types.h:31:23 */
+type X__u_short = uint16 /* types.h:32:28 */
+type X__u_int = uint32 /* types.h:33:22 */
+type X__u_long = uint64 /* types.h:34:27 */
+
+// Fixed-size types, underlying types depend on word size and compiler.
+type X__int8_t = int8 /* types.h:37:21 */
+type X__uint8_t = uint8 /* types.h:38:23 */
+type X__int16_t = int16 /* types.h:39:26 */
+type X__uint16_t = uint16 /* types.h:40:28 */
+type X__int32_t = int32 /* types.h:41:20 */
+type X__uint32_t = uint32 /* types.h:42:22 */
+type X__int64_t = int64 /* types.h:44:25 */
+type X__uint64_t = uint64 /* types.h:45:27 */
+
+// Smallest types with at least a given width.
+type X__int_least8_t = X__int8_t /* types.h:52:18 */
+type X__uint_least8_t = X__uint8_t /* types.h:53:19 */
+type X__int_least16_t = X__int16_t /* types.h:54:19 */
+type X__uint_least16_t = X__uint16_t /* types.h:55:20 */
+type X__int_least32_t = X__int32_t /* types.h:56:19 */
+type X__uint_least32_t = X__uint32_t /* types.h:57:20 */
+type X__int_least64_t = X__int64_t /* types.h:58:19 */
+type X__uint_least64_t = X__uint64_t /* types.h:59:20 */
+
+// quad_t is also 64 bits.
+type X__quad_t = int64 /* types.h:63:18 */
+type X__u_quad_t = uint64 /* types.h:64:27 */
+
+// Largest integral types.
+type X__intmax_t = int64 /* types.h:72:18 */
+type X__uintmax_t = uint64 /* types.h:73:27 */
+
+// The machine-dependent file <bits/typesizes.h> defines __*_T_TYPE
+// macros for each of the OS types we define below. The definitions
+// of those macros must use the following macros for underlying types.
+// We define __S<SIZE>_TYPE and __U<SIZE>_TYPE for the signed and unsigned
+// variants of each of the following integer types on this machine.
+//
+// 16 -- "natural" 16-bit type (always short)
+// 32 -- "natural" 32-bit type (always int)
+// 64 -- "natural" 64-bit type (long or long long)
+// LONG32 -- 32-bit type, traditionally long
+// QUAD -- 64-bit type, traditionally long long
+// WORD -- natural type of __WORDSIZE bits (int or long)
+// LONGWORD -- type of __WORDSIZE bits, traditionally long
+//
+// We distinguish WORD/LONGWORD, 32/LONG32, and 64/QUAD so that the
+// conventional uses of `long' or `long long' type modifiers match the
+// types we define, even when a less-adorned type would be the same size.
+// This matters for (somewhat) portably writing printf/scanf formats for
+// these types, where using the appropriate l or ll format modifiers can
+// make the typedefs and the formats match up across all GNU platforms. If
+// we used `long' when it's 64 bits where `long long' is expected, then the
+// compiler would warn about the formats not matching the argument types,
+// and the programmer changing them to shut up the compiler would break the
+// program's portability.
+//
+// Here we assume what is presently the case in all the GCC configurations
+// we support: long long is always 64 bits, long is always word/address size,
+// and int is always 32 bits.
+
+// No need to mark the typedef with __extension__.
+// bits/typesizes.h -- underlying types for *_t. For the generic Linux ABI.
+// Copyright (C) 2011-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+// Contributed by Chris Metcalf <cmetcalf@tilera.com>, 2011.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// See <bits/types.h> for the meaning of these macros. This file exists so
+// that <bits/types.h> need not vary across different GNU platforms.
+
+// Tell the libc code that off_t and off64_t are actually the same type
+// for all ABI purposes, even if possibly expressed as different base types
+// for C type-checking purposes.
+
+// Same for ino_t and ino64_t.
+
+// And for __rlim_t and __rlim64_t.
+
+// And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t.
+
+// And for getitimer, setitimer and rusage
+
+// Number of descriptors that can fit in an `fd_set'.
+
+// bits/time64.h -- underlying types for __time64_t. RISC-V version.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Define __TIME64_T_TYPE so that it is always a 64-bit type.
+
+// If we already have 64-bit time type then use it.
+
+type X__dev_t = uint64 /* types.h:145:25 */ // Type of device numbers.
+type X__uid_t = uint32 /* types.h:146:25 */ // Type of user identifications.
+type X__gid_t = uint32 /* types.h:147:25 */ // Type of group identifications.
+type X__ino_t = uint64 /* types.h:148:25 */ // Type of file serial numbers.
+type X__ino64_t = uint64 /* types.h:149:27 */ // Type of file serial numbers (LFS).
+type X__mode_t = uint32 /* types.h:150:26 */ // Type of file attribute bitmasks.
+type X__nlink_t = uint32 /* types.h:151:27 */ // Type of file link counts.
+type X__off_t = int64 /* types.h:152:25 */ // Type of file sizes and offsets.
+type X__off64_t = int64 /* types.h:153:27 */ // Type of file sizes and offsets (LFS).
+type X__pid_t = int32 /* types.h:154:25 */ // Type of process identifications.
+type X__fsid_t = struct{ F__val [2]int32 } /* types.h:155:26 */ // Type of file system IDs.
+type X__clock_t = int64 /* types.h:156:27 */ // Type of CPU usage counts.
+type X__rlim_t = uint64 /* types.h:157:26 */ // Type for resource measurement.
+type X__rlim64_t = uint64 /* types.h:158:28 */ // Type for resource measurement (LFS).
+type X__id_t = uint32 /* types.h:159:24 */ // General type for IDs.
+type X__time_t = int64 /* types.h:160:26 */ // Seconds since the Epoch.
+type X__useconds_t = uint32 /* types.h:161:30 */ // Count of microseconds.
+type X__suseconds_t = int64 /* types.h:162:31 */ // Signed count of microseconds.
+type X__suseconds64_t = int64 /* types.h:163:33 */
+
+type X__daddr_t = int32 /* types.h:165:27 */ // The type of a disk address.
+type X__key_t = int32 /* types.h:166:25 */ // Type of an IPC key.
+
+// Clock ID used in clock and timer functions.
+type X__clockid_t = int32 /* types.h:169:29 */
+
+// Timer ID returned by `timer_create'.
+type X__timer_t = uintptr /* types.h:172:12 */
+
+// Type to represent block size.
+type X__blksize_t = int32 /* types.h:175:29 */
+
+// Types from the Large File Support interface.
+
+// Type to count number of disk blocks.
+type X__blkcnt_t = int64 /* types.h:180:28 */
+type X__blkcnt64_t = int64 /* types.h:181:30 */
+
+// Type to count file system blocks.
+type X__fsblkcnt_t = uint64 /* types.h:184:30 */
+type X__fsblkcnt64_t = uint64 /* types.h:185:32 */
+
+// Type to count file system nodes.
+type X__fsfilcnt_t = uint64 /* types.h:188:30 */
+type X__fsfilcnt64_t = uint64 /* types.h:189:32 */
+
+// Type of miscellaneous file system fields.
+type X__fsword_t = int64 /* types.h:192:28 */
+
+type X__ssize_t = int64 /* types.h:194:27 */ // Type of a byte count, or error.
+
+// Signed long type used in system calls.
+type X__syscall_slong_t = int64 /* types.h:197:33 */
+// Unsigned long type used in system calls.
+type X__syscall_ulong_t = uint64 /* types.h:199:33 */
+
+// These few don't really vary by system, they always correspond
+// to one of the other defined types.
+type X__loff_t = X__off64_t /* types.h:203:19 */ // Type of file sizes and offsets (LFS).
+type X__caddr_t = uintptr /* types.h:204:14 */
+
+// Duplicates info from stdint.h but this is used in unistd.h.
+type X__intptr_t = int64 /* types.h:207:25 */
+
+// Duplicate info from sys/socket.h.
+type X__socklen_t = uint32 /* types.h:210:23 */
+
+// C99: An integer type that can be accessed as an atomic entity,
+// even in the presence of asynchronous interrupts.
+// It is not currently necessary for this to be machine-specific.
+type X__sig_atomic_t = int32 /* types.h:215:13 */
+
+// Seconds since the Epoch, visible to user code when time_t is too
+// narrow only for consistency with the old way of widening too-narrow
+// types. User code should never use __time64_t.
+
+type Uint8_t = X__uint8_t /* stdint-uintn.h:24:19 */
+type Uint16_t = X__uint16_t /* stdint-uintn.h:25:20 */
+type Uint32_t = X__uint32_t /* stdint-uintn.h:26:20 */
+type Uint64_t = X__uint64_t /* stdint-uintn.h:27:20 */
+
+// Wide character type.
+// Locale-writers should change this as necessary to
+// be big enough to hold unique values not between 0 and 127,
+// and not (wchar_t) -1, for each defined multibyte character.
+
+// Define this type if we are doing the whole job,
+// or if we want this type in particular.
+
+// A null pointer constant.
+
+// Structure for scatter/gather I/O.
+type Iovec = struct {
+ Fiov_base uintptr
+ Fiov_len Size_t
+} /* struct_iovec.h:26:1 */
+
+// Copyright (C) 1989-2021 Free Software Foundation, Inc.
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+//
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+// <http://www.gnu.org/licenses/>.
+
+// ISO C Standard: 7.17 Common definitions <stddef.h>
+
+// Any one of these symbols __need_* means that GNU libc
+// wants us just to define one data type. So don't define
+// the symbols that indicate this file's entire job has been done.
+
+// This avoids lossage on SunOS but only if stdtypes.h comes first.
+// There's no way to win with the other order! Sun lossage.
+
+// Sequent's header files use _PTRDIFF_T_ in some conflicting way.
+// Just ignore it.
+
+// On VxWorks, <type/vxTypesBase.h> may have defined macros like
+// _TYPE_size_t which will typedef size_t. fixincludes patched the
+// vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is
+// not defined, and so that defining this macro defines _GCC_SIZE_T.
+// If we find that the macros are still defined at this point, we must
+// invoke them so that the type is defined as expected.
+
+// In case nobody has defined these types, but we aren't running under
+// GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and
+// __WCHAR_TYPE__ have reasonable values. This can happen if the
+// parts of GCC is compiled by an older compiler, that actually
+// include gstddef.h, such as collect2.
+
+// Signed type of difference of two pointers.
+
+// Define this type if we are doing the whole job,
+// or if we want this type in particular.
+
+// Unsigned type of `sizeof' something.
+
+// Define this type if we are doing the whole job,
+// or if we want this type in particular.
+
+// Wide character type.
+// Locale-writers should change this as necessary to
+// be big enough to hold unique values not between 0 and 127,
+// and not (wchar_t) -1, for each defined multibyte character.
+
+// Define this type if we are doing the whole job,
+// or if we want this type in particular.
+
+// A null pointer constant.
+
+// This operating system-specific header file defines the SOCK_*, PF_*,
+// AF_*, MSG_*, SOL_*, and SO_* constants, and the `struct sockaddr',
+// `struct msghdr', and `struct linger' types.
+// System-specific socket constants and types. Linux version.
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Copyright (C) 1989-2021 Free Software Foundation, Inc.
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+//
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+// <http://www.gnu.org/licenses/>.
+
+// ISO C Standard: 7.17 Common definitions <stddef.h>
+
+// Any one of these symbols __need_* means that GNU libc
+// wants us just to define one data type. So don't define
+// the symbols that indicate this file's entire job has been done.
+
+// This avoids lossage on SunOS but only if stdtypes.h comes first.
+// There's no way to win with the other order! Sun lossage.
+
+// Sequent's header files use _PTRDIFF_T_ in some conflicting way.
+// Just ignore it.
+
+// On VxWorks, <type/vxTypesBase.h> may have defined macros like
+// _TYPE_size_t which will typedef size_t. fixincludes patched the
+// vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is
+// not defined, and so that defining this macro defines _GCC_SIZE_T.
+// If we find that the macros are still defined at this point, we must
+// invoke them so that the type is defined as expected.
+
+// In case nobody has defined these types, but we aren't running under
+// GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and
+// __WCHAR_TYPE__ have reasonable values. This can happen if the
+// parts of GCC is compiled by an older compiler, that actually
+// include gstddef.h, such as collect2.
+
+// Signed type of difference of two pointers.
+
+// Define this type if we are doing the whole job,
+// or if we want this type in particular.
+
+// Unsigned type of `sizeof' something.
+
+// Define this type if we are doing the whole job,
+// or if we want this type in particular.
+
+// Wide character type.
+// Locale-writers should change this as necessary to
+// be big enough to hold unique values not between 0 and 127,
+// and not (wchar_t) -1, for each defined multibyte character.
+
+// Define this type if we are doing the whole job,
+// or if we want this type in particular.
+
+// A null pointer constant.
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// POSIX Standard: 2.6 Primitive System Data Types <sys/types.h>
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+type U_char = X__u_char /* types.h:33:18 */
+type U_short = X__u_short /* types.h:34:19 */
+type U_int = X__u_int /* types.h:35:17 */
+type U_long = X__u_long /* types.h:36:18 */
+type Quad_t = X__quad_t /* types.h:37:18 */
+type U_quad_t = X__u_quad_t /* types.h:38:20 */
+type Fsid_t = X__fsid_t /* types.h:39:18 */
+type Loff_t = X__loff_t /* types.h:42:18 */
+
+type Ino_t = X__ino64_t /* types.h:49:19 */
+
+type Dev_t = X__dev_t /* types.h:59:17 */
+
+type Gid_t = X__gid_t /* types.h:64:17 */
+
+type Mode_t = X__mode_t /* types.h:69:18 */
+
+type Nlink_t = X__nlink_t /* types.h:74:19 */
+
+type Uid_t = X__uid_t /* types.h:79:17 */
+
+type Off_t = X__off64_t /* types.h:87:19 */
+
+type Pid_t = X__pid_t /* types.h:97:17 */
+
+type Id_t = X__id_t /* types.h:103:16 */
+
+type Ssize_t = X__ssize_t /* types.h:108:19 */
+
+type Daddr_t = X__daddr_t /* types.h:114:19 */
+type Caddr_t = X__caddr_t /* types.h:115:19 */
+
+type Key_t = X__key_t /* types.h:121:17 */
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Returned by `clock'.
+type Clock_t = X__clock_t /* clock_t.h:7:19 */
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Clock ID used in clock and timer functions.
+type Clockid_t = X__clockid_t /* clockid_t.h:7:21 */
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Returned by `time'.
+type Time_t = X__time_t /* time_t.h:10:18 */
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Timer ID returned by `timer_create'.
+type Timer_t = X__timer_t /* timer_t.h:7:19 */
+
+// Copyright (C) 1989-2021 Free Software Foundation, Inc.
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+//
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+// <http://www.gnu.org/licenses/>.
+
+// ISO C Standard: 7.17 Common definitions <stddef.h>
+
+// Any one of these symbols __need_* means that GNU libc
+// wants us just to define one data type. So don't define
+// the symbols that indicate this file's entire job has been done.
+
+// This avoids lossage on SunOS but only if stdtypes.h comes first.
+// There's no way to win with the other order! Sun lossage.
+
+// Sequent's header files use _PTRDIFF_T_ in some conflicting way.
+// Just ignore it.
+
+// On VxWorks, <type/vxTypesBase.h> may have defined macros like
+// _TYPE_size_t which will typedef size_t. fixincludes patched the
+// vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is
+// not defined, and so that defining this macro defines _GCC_SIZE_T.
+// If we find that the macros are still defined at this point, we must
+// invoke them so that the type is defined as expected.
+
+// In case nobody has defined these types, but we aren't running under
+// GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and
+// __WCHAR_TYPE__ have reasonable values. This can happen if the
+// parts of GCC is compiled by an older compiler, that actually
+// include gstddef.h, such as collect2.
+
+// Signed type of difference of two pointers.
+
+// Define this type if we are doing the whole job,
+// or if we want this type in particular.
+
+// Unsigned type of `sizeof' something.
+
+// Define this type if we are doing the whole job,
+// or if we want this type in particular.
+
+// Wide character type.
+// Locale-writers should change this as necessary to
+// be big enough to hold unique values not between 0 and 127,
+// and not (wchar_t) -1, for each defined multibyte character.
+
+// Define this type if we are doing the whole job,
+// or if we want this type in particular.
+
+// A null pointer constant.
+
+// Old compatibility names for C types.
+type Ulong = uint64 /* types.h:148:27 */
+type Ushort = uint16 /* types.h:149:28 */
+type Uint = uint32 /* types.h:150:22 */
+
+// These size-specific names are used by some of the inet code.
+
+// Define intN_t types.
+// Copyright (C) 2017-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+type Int8_t = X__int8_t /* stdint-intn.h:24:18 */
+type Int16_t = X__int16_t /* stdint-intn.h:25:19 */
+type Int32_t = X__int32_t /* stdint-intn.h:26:19 */
+type Int64_t = X__int64_t /* stdint-intn.h:27:19 */
+
+// These were defined by ISO C without the first `_'.
+type U_int8_t = X__uint8_t /* types.h:158:19 */
+type U_int16_t = X__uint16_t /* types.h:159:20 */
+type U_int32_t = X__uint32_t /* types.h:160:20 */
+type U_int64_t = X__uint64_t /* types.h:161:20 */
+
+type Register_t = int32 /* types.h:164:13 */
+
+// It also defines `fd_set' and the FD_* macros for `select'.
+// `fd_set' type and related macros, and `select'/`pselect' declarations.
+// Copyright (C) 1996-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// POSIX 1003.1g: 6.2 Select from File Descriptor Sets <sys/select.h>
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Get definition of needed basic types.
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Get __FD_* definitions.
+// Copyright (C) 1997-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// We don't use `memset' because this would require a prototype and
+// the array isn't too big.
+
+// Get sigset_t.
+
+type X__sigset_t = struct{ F__val [16]uint64 } /* __sigset_t.h:8:3 */
+
+// A set of signals to be blocked, unblocked, or waited for.
+type Sigset_t = X__sigset_t /* sigset_t.h:7:20 */
+
+// Get definition of timer specification structures.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// A time value that is accurate to the nearest
+// microsecond but also has a range of years.
+type Timeval = struct {
+ Ftv_sec X__time_t
+ Ftv_usec X__suseconds_t
+} /* struct_timeval.h:8:1 */
+
+// NB: Include guard matches what <linux/time.h> uses.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Endian macros for string.h functions
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <http://www.gnu.org/licenses/>.
+
+// POSIX.1b structure for a time value. This is like a `struct timeval' but
+// has nanoseconds instead of microseconds.
+type Timespec = struct {
+ Ftv_sec X__time_t
+ Ftv_nsec X__syscall_slong_t
+} /* struct_timespec.h:11:1 */
+
+type Suseconds_t = X__suseconds_t /* select.h:43:23 */
+
+// The fd_set member is required to be an array of longs.
+type X__fd_mask = int64 /* select.h:49:18 */
+
+// Some versions of <linux/posix_types.h> define this macros.
+// It's easier to assume 8-bit bytes than to get CHAR_BIT.
+
+// fd_set for select and pselect.
+type Fd_set = struct{ F__fds_bits [16]X__fd_mask } /* select.h:70:5 */
+
+// Maximum number of file descriptors in `fd_set'.
+
+// Sometimes the fd_set member is assumed to have this type.
+type Fd_mask = X__fd_mask /* select.h:77:19 */
+
+// Define some inlines helping to catch common problems.
+
+type Blksize_t = X__blksize_t /* types.h:185:21 */
+
+// Types from the Large File Support interface.
+type Blkcnt_t = X__blkcnt64_t /* types.h:205:22 */ // Type to count number of disk blocks.
+type Fsblkcnt_t = X__fsblkcnt64_t /* types.h:209:24 */ // Type to count file system blocks.
+type Fsfilcnt_t = X__fsfilcnt64_t /* types.h:213:24 */ // Type to count file system inodes.
+
+// Now add the thread types.
+// Declaration of common pthread types for all architectures.
+// Copyright (C) 2017-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// For internal mutex and condition variable definitions.
+// Common threading primitives definitions for both POSIX and C11.
+// Copyright (C) 2017-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Arch-specific definitions. Each architecture must define the following
+// macros to define the expected sizes of pthread data types:
+//
+// __SIZEOF_PTHREAD_ATTR_T - size of pthread_attr_t.
+// __SIZEOF_PTHREAD_MUTEX_T - size of pthread_mutex_t.
+// __SIZEOF_PTHREAD_MUTEXATTR_T - size of pthread_mutexattr_t.
+// __SIZEOF_PTHREAD_COND_T - size of pthread_cond_t.
+// __SIZEOF_PTHREAD_CONDATTR_T - size of pthread_condattr_t.
+// __SIZEOF_PTHREAD_RWLOCK_T - size of pthread_rwlock_t.
+// __SIZEOF_PTHREAD_RWLOCKATTR_T - size of pthread_rwlockattr_t.
+// __SIZEOF_PTHREAD_BARRIER_T - size of pthread_barrier_t.
+// __SIZEOF_PTHREAD_BARRIERATTR_T - size of pthread_barrierattr_t.
+//
+// The additional macro defines any constraint for the lock alignment
+// inside the thread structures:
+//
+// __LOCK_ALIGNMENT - for internal lock/futex usage.
+//
+// Same idea but for the once locking primitive:
+//
+// __ONCE_ALIGNMENT - for pthread_once_t/once_flag definition.
+
+// Machine-specific pthread type layouts. RISC-V version.
+// Copyright (C) 2011-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Endian macros for string.h functions
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <http://www.gnu.org/licenses/>.
+
+// Common definition of pthread_mutex_t.
+
+type X__pthread_internal_list = struct {
+ F__prev uintptr
+ F__next uintptr
+} /* thread-shared-types.h:49:9 */
+
+// Type to count file system inodes.
+
+// Now add the thread types.
+// Declaration of common pthread types for all architectures.
+// Copyright (C) 2017-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// For internal mutex and condition variable definitions.
+// Common threading primitives definitions for both POSIX and C11.
+// Copyright (C) 2017-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Arch-specific definitions. Each architecture must define the following
+// macros to define the expected sizes of pthread data types:
+//
+// __SIZEOF_PTHREAD_ATTR_T - size of pthread_attr_t.
+// __SIZEOF_PTHREAD_MUTEX_T - size of pthread_mutex_t.
+// __SIZEOF_PTHREAD_MUTEXATTR_T - size of pthread_mutexattr_t.
+// __SIZEOF_PTHREAD_COND_T - size of pthread_cond_t.
+// __SIZEOF_PTHREAD_CONDATTR_T - size of pthread_condattr_t.
+// __SIZEOF_PTHREAD_RWLOCK_T - size of pthread_rwlock_t.
+// __SIZEOF_PTHREAD_RWLOCKATTR_T - size of pthread_rwlockattr_t.
+// __SIZEOF_PTHREAD_BARRIER_T - size of pthread_barrier_t.
+// __SIZEOF_PTHREAD_BARRIERATTR_T - size of pthread_barrierattr_t.
+//
+// The additional macro defines any constraint for the lock alignment
+// inside the thread structures:
+//
+// __LOCK_ALIGNMENT - for internal lock/futex usage.
+//
+// Same idea but for the once locking primitive:
+//
+// __ONCE_ALIGNMENT - for pthread_once_t/once_flag definition.
+
+// Machine-specific pthread type layouts. RISC-V version.
+// Copyright (C) 2011-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Endian macros for string.h functions
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <http://www.gnu.org/licenses/>.
+
+// Common definition of pthread_mutex_t.
+
+type X__pthread_list_t = X__pthread_internal_list /* thread-shared-types.h:53:3 */
+
+type X__pthread_internal_slist = struct{ F__next uintptr } /* thread-shared-types.h:55:9 */
+
+type X__pthread_slist_t = X__pthread_internal_slist /* thread-shared-types.h:58:3 */
+
+// Arch-specific mutex definitions. A generic implementation is provided
+// by sysdeps/nptl/bits/struct_mutex.h. If required, an architecture
+// can override it by defining:
+//
+// 1. struct __pthread_mutex_s (used on both pthread_mutex_t and mtx_t
+// definition). It should contains at least the internal members
+// defined in the generic version.
+//
+// 2. __LOCK_ALIGNMENT for any extra attribute for internal lock used with
+// atomic operations.
+//
+// 3. The macro __PTHREAD_MUTEX_INITIALIZER used for static initialization.
+// It should initialize the mutex internal flag.
+
+// Default mutex implementation struct definitions.
+// Copyright (C) 2019-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <http://www.gnu.org/licenses/>.
+
+// Generic struct for both POSIX and C11 mutexes. New ports are expected
+// to use the default layout, however architecture can redefine it to
+// add arch-specific extension (such as lock-elision). The struct have
+// a size of 32 bytes on LP32 and 40 bytes on LP64 architectures.
+
+type X__pthread_mutex_s = struct {
+ F__lock int32
+ F__count uint32
+ F__owner int32
+ F__nusers uint32
+ F__kind int32
+ F__spins int32
+ F__list X__pthread_list_t
+} /* struct_mutex.h:27:1 */
+
+// Arch-sepecific read-write lock definitions. A generic implementation is
+// provided by struct_rwlock.h. If required, an architecture can override it
+// by defining:
+//
+// 1. struct __pthread_rwlock_arch_t (used on pthread_rwlock_t definition).
+// It should contain at least the internal members defined in the
+// generic version.
+//
+// 2. The macro __PTHREAD_RWLOCK_INITIALIZER used for static initialization.
+// It should initialize the rwlock internal type.
+
+// RISC-V internal rwlock struct definitions.
+// Copyright (C) 2019-2021 Free Software Foundation, Inc.
+//
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// There is a lot of padding in this structure. While it's not strictly
+// necessary on RISC-V, we're going to leave it in to be on the safe side in
+// case it's needed in the future. Most other architectures have the padding,
+// so this gives us the same extensibility as everyone else has.
+type X__pthread_rwlock_arch_t = struct {
+ F__readers uint32
+ F__writers uint32
+ F__wrphase_futex uint32
+ F__writers_futex uint32
+ F__pad3 uint32
+ F__pad4 uint32
+ F__cur_writer int32
+ F__shared int32
+ F__pad1 uint64
+ F__pad2 uint64
+ F__flags uint32
+ F__ccgo_pad1 [4]byte
+} /* struct_rwlock.h:27:1 */
+
+// Common definition of pthread_cond_t.
+
+type X__pthread_cond_s = struct {
+ F__0 struct{ F__wseq uint64 }
+ F__8 struct{ F__g1_start uint64 }
+ F__g_refs [2]uint32
+ F__g_size [2]uint32
+ F__g1_orig_size uint32
+ F__wrefs uint32
+ F__g_signals [2]uint32
+} /* thread-shared-types.h:92:1 */
+
+type X__tss_t = uint32 /* thread-shared-types.h:119:22 */
+type X__thrd_t = uint64 /* thread-shared-types.h:120:27 */
+
+type X__once_flag = struct{ F__data int32 } /* thread-shared-types.h:125:3 */
+
+// Thread identifiers. The structure of the attribute type is not
+// exposed on purpose.
+type Pthread_t = uint64 /* pthreadtypes.h:27:27 */
+
+// Data structures for mutex handling. The structure of the attribute
+// type is not exposed on purpose.
+type Pthread_mutexattr_t = struct {
+ F__ccgo_pad1 [0]uint32
+ F__size [4]uint8
+} /* pthreadtypes.h:36:3 */
+
+// Data structure for condition variable handling. The structure of
+// the attribute type is not exposed on purpose.
+type Pthread_condattr_t = struct {
+ F__ccgo_pad1 [0]uint32
+ F__size [4]uint8
+} /* pthreadtypes.h:45:3 */
+
+// Keys for thread-specific data
+type Pthread_key_t = uint32 /* pthreadtypes.h:49:22 */
+
+// Once-only execution
+type Pthread_once_t = int32 /* pthreadtypes.h:53:30 */
+
+type Pthread_attr_t1 = struct {
+ F__ccgo_pad1 [0]uint64
+ F__size [56]uint8
+} /* pthreadtypes.h:56:1 */
+
+type Pthread_attr_t = Pthread_attr_t1 /* pthreadtypes.h:62:30 */
+
+type Pthread_mutex_t = struct{ F__data X__pthread_mutex_s } /* pthreadtypes.h:72:3 */
+
+type Pthread_cond_t = struct{ F__data X__pthread_cond_s } /* pthreadtypes.h:80:3 */
+
+// Data structure for reader-writer lock variable handling. The
+// structure of the attribute type is deliberately not exposed.
+type Pthread_rwlock_t = struct{ F__data X__pthread_rwlock_arch_t } /* pthreadtypes.h:91:3 */
+
+type Pthread_rwlockattr_t = struct {
+ F__ccgo_pad1 [0]uint64
+ F__size [8]uint8
+} /* pthreadtypes.h:97:3 */
+
+// POSIX spinlock data type.
+type Pthread_spinlock_t = int32 /* pthreadtypes.h:103:22 */
+
+// POSIX barriers data type. The structure of the type is
+// deliberately not exposed.
+type Pthread_barrier_t = struct {
+ F__ccgo_pad1 [0]uint64
+ F__size [32]uint8
+} /* pthreadtypes.h:112:3 */
+
+type Pthread_barrierattr_t = struct {
+ F__ccgo_pad1 [0]uint32
+ F__size [4]uint8
+} /* pthreadtypes.h:118:3 */
+
+// Type for length arguments in socket calls.
+type Socklen_t = X__socklen_t /* socket.h:33:21 */
+
+// Protocol families.
+
+// Address families.
+
+// Socket level values. Others are defined in the appropriate headers.
+//
+// XXX These definitions also should go into the appropriate headers as
+// far as they are available.
+
+// Maximum queue length specifiable by listen.
+
+// Get the definition of the macro to define the common sockaddr members.
+// Definition of struct sockaddr_* common members and sizes, generic version.
+// Copyright (C) 1995-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/socket.h> instead.
+
+// POSIX.1g specifies this type name for the `sa_family' member.
+type Sa_family_t = uint16 /* sockaddr.h:28:28 */
+
+// This macro is used to declare the initial common members
+// of the data types used for socket addresses, `struct sockaddr',
+// `struct sockaddr_in', `struct sockaddr_un', etc.
+
+// Size of struct sockaddr_storage.
+
+// Structure describing a generic socket address.
+type Sockaddr = struct {
+ Fsa_family Sa_family_t
+ Fsa_data [14]uint8
+} /* socket.h:178:1 */
+
+// Structure large enough to hold any socket address (with the historical
+// exception of AF_UNIX).
+
+type Sockaddr_storage = struct {
+ Fss_family Sa_family_t
+ F__ss_padding [118]uint8
+ F__ss_align uint64
+} /* socket.h:191:1 */
+
+// Structure describing messages sent by
+// `sendmsg' and received by `recvmsg'.
+type Msghdr = struct {
+ Fmsg_name uintptr
+ Fmsg_namelen Socklen_t
+ F__ccgo_pad1 [4]byte
+ Fmsg_iov uintptr
+ Fmsg_iovlen Size_t
+ Fmsg_control uintptr
+ Fmsg_controllen Size_t
+ Fmsg_flags int32
+ F__ccgo_pad2 [4]byte
+} /* socket.h:257:1 */
+
+// Structure used for storage of ancillary data object information.
+type Cmsghdr = struct {
+ F__ccgo_pad1 [0]uint64
+ Fcmsg_len Size_t
+ Fcmsg_level int32
+ Fcmsg_type int32
+} /* socket.h:275:1 */
+
+// SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
+
+// SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
+
+// SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
+
+// This allows for 1024 file descriptors: if NR_OPEN is ever grown
+// beyond that you'll have to change this too. But 1024 fd's seem to be
+// enough even for such "real" unices like OSF/1, so hopefully this is
+// one limit that doesn't have to be changed [again].
+//
+// Note that POSIX wants the FD_CLEAR(fd,fdsetp) defines to be in
+// <sys/time.h> (and thus <linux/time.h>) - but this is a more logical
+// place for them. Solved by having dummy defines in <sys/time.h>.
+
+// This macro may have been defined in <gnu/types.h>. But we always
+// use the one here.
+
+type X__kernel_fd_set = struct{ Ffds_bits [16]uint64 } /* posix_types.h:27:3 */
+
+// Type of a signal handler.
+type X__kernel_sighandler_t = uintptr /* posix_types.h:30:14 */
+
+// Type of a SYSV IPC key.
+type X__kernel_key_t = int32 /* posix_types.h:33:13 */
+type X__kernel_mqd_t = int32 /* posix_types.h:34:13 */
+
+// SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
+
+// SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note
+// Copyright (C) 2012 ARM Ltd.
+// Copyright (C) 2015 Regents of the University of California
+
+// SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
+
+// There seems to be no way of detecting this automatically from user
+// space, so 64 bit architectures should override this in their
+// bitsperlong.h. In particular, an architecture that supports
+// both 32 and 64 bit user space must not rely on CONFIG_64BIT
+// to decide it, but rather check a compiler provided macro.
+
+// This file is generally used by user-level software, so you need to
+// be a little careful about namespace pollution etc.
+//
+// First the types that are often defined in different ways across
+// architectures, so that you can override them.
+
+type X__kernel_long_t = int64 /* posix_types.h:15:15 */
+type X__kernel_ulong_t = uint64 /* posix_types.h:16:23 */
+
+type X__kernel_ino_t = X__kernel_ulong_t /* posix_types.h:20:26 */
+
+type X__kernel_mode_t = uint32 /* posix_types.h:24:22 */
+
+type X__kernel_pid_t = int32 /* posix_types.h:28:14 */
+
+type X__kernel_ipc_pid_t = int32 /* posix_types.h:32:14 */
+
+type X__kernel_uid_t = uint32 /* posix_types.h:36:22 */
+type X__kernel_gid_t = uint32 /* posix_types.h:37:22 */
+
+type X__kernel_suseconds_t = X__kernel_long_t /* posix_types.h:41:26 */
+
+type X__kernel_daddr_t = int32 /* posix_types.h:45:14 */
+
+type X__kernel_uid32_t = uint32 /* posix_types.h:49:22 */
+type X__kernel_gid32_t = uint32 /* posix_types.h:50:22 */
+
+type X__kernel_old_uid_t = X__kernel_uid_t /* posix_types.h:54:24 */
+type X__kernel_old_gid_t = X__kernel_gid_t /* posix_types.h:55:24 */
+
+type X__kernel_old_dev_t = uint32 /* posix_types.h:59:22 */
+
+// Most 32 bit architectures use "unsigned int" size_t,
+// and all 64 bit architectures use "unsigned long" size_t.
+type X__kernel_size_t = X__kernel_ulong_t /* posix_types.h:72:26 */
+type X__kernel_ssize_t = X__kernel_long_t /* posix_types.h:73:25 */
+type X__kernel_ptrdiff_t = X__kernel_long_t /* posix_types.h:74:25 */
+
+type X__kernel_fsid_t = struct{ Fval [2]int32 } /* posix_types.h:81:3 */
+
+// anything below here should be completely generic
+type X__kernel_off_t = X__kernel_long_t /* posix_types.h:87:25 */
+type X__kernel_loff_t = int64 /* posix_types.h:88:19 */
+type X__kernel_old_time_t = X__kernel_long_t /* posix_types.h:89:25 */
+type X__kernel_time_t = X__kernel_long_t /* posix_types.h:90:25 */
+type X__kernel_time64_t = int64 /* posix_types.h:91:19 */
+type X__kernel_clock_t = X__kernel_long_t /* posix_types.h:92:25 */
+type X__kernel_timer_t = int32 /* posix_types.h:93:14 */
+type X__kernel_clockid_t = int32 /* posix_types.h:94:14 */
+type X__kernel_caddr_t = uintptr /* posix_types.h:95:14 */
+type X__kernel_uid16_t = uint16 /* posix_types.h:96:24 */
+type X__kernel_gid16_t = uint16 /* posix_types.h:97:24 */
+
+// SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
+
+// Socket-level I/O control calls.
+
+// For setsockopt(2)
+
+// Security levels - as per NRL IPv6 - don't actually do anything
+
+// Socket filtering
+
+// Instruct lower device to use last 4-bytes of skb data as FCS
+
+// on 64-bit and x32, avoid the ?: operator
+
+// Structure used to manipulate the SO_LINGER option.
+type Linger = struct {
+ Fl_onoff int32
+ Fl_linger int32
+} /* socket.h:361:1 */
+
+// This is the 4.3 BSD `struct sockaddr' format, which is used as wire
+// format in the grotty old 4.3 `talk' protocol.
+type Osockaddr = struct {
+ Fsa_family uint16
+ Fsa_data [14]uint8
+} /* struct_osockaddr.h:6:1 */
+
+// Define some macros helping to catch buffer overflows.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Internet address.
+type In_addr_t = Uint32_t /* in.h:30:18 */
+type In_addr = struct{ Fs_addr In_addr_t } /* in.h:31:1 */
+
+// Get system-specific definitions.
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Linux version.
+
+// If the application has already included linux/in6.h from a linux-based
+// kernel then we will not define the IPv6 IPPROTO_* defines, in6_addr (nor the
+// defines), sockaddr_in6, or ipv6_mreq. Same for in6_ptkinfo or ip6_mtuinfo
+// in linux/ipv6.h. The ABI used by the linux-kernel and glibc match exactly.
+// Neither the linux kernel nor glibc should break this ABI without coordination.
+// In upstream kernel 56c176c9 the _UAPI prefix was stripped so we need to check
+// for _LINUX_IN6_H and _IPV6_H now, and keep checking the old versions for
+// maximum backwards compatibility.
+
+// Options for use with `getsockopt' and `setsockopt' at the IP level.
+// The first word in the comment at the right is the data type used;
+// "bool" means a boolean value stored in an `int'.
+// For BSD compatibility.
+
+// TProxy original addresses
+
+// IP_MTU_DISCOVER arguments.
+// Always use interface mtu (ignores dst pmtu) but don't set DF flag.
+// Also incoming ICMP frag_needed notifications will be ignored on
+// this socket to prevent accepting spoofed ones.
+// Like IP_PMTUDISC_INTERFACE but allow packets to be fragmented.
+
+// To select the IP level.
+
+// Structure used to describe IP options for IP_OPTIONS and IP_RETOPTS.
+// The `ip_dst' field is used for the first-hop gateway when using a
+// source route (this gets put into the header proper).
+type Ip_opts = struct {
+ Fip_dst struct{ Fs_addr In_addr_t }
+ Fip_opts [40]uint8
+} /* in.h:143:1 */
+
+// Like `struct ip_mreq' but including interface specification by index.
+type Ip_mreqn = struct {
+ Fimr_multiaddr struct{ Fs_addr In_addr_t }
+ Fimr_address struct{ Fs_addr In_addr_t }
+ Fimr_ifindex int32
+} /* in.h:150:1 */
+
+// Structure used for IP_PKTINFO.
+type In_pktinfo = struct {
+ Fipi_ifindex int32
+ Fipi_spec_dst struct{ Fs_addr In_addr_t }
+ Fipi_addr struct{ Fs_addr In_addr_t }
+} /* in.h:158:1 */
+
+// Type to represent a port.
+type In_port_t = Uint16_t /* in.h:123:18 */
+
+// Definitions of the bits in an Internet address integer.
+//
+// On subnets, host and network parts are found according to
+// the subnet mask, not these masks.
+
+// Address to accept any incoming messages.
+// Address to send to all hosts.
+// Address indicating an error return.
+
+// Network number for local host loopback.
+// Address to loopback in software to local host.
+
+// Defines for Multicast INADDR.
+
+// IPv6 address
+type In6_addr = struct {
+ F__in6_u struct {
+ F__ccgo_pad1 [0]uint32
+ F__u6_addr8 [16]Uint8_t
+ }
+} /* in.h:216:1 */
+
+// ::1
+
+// Structure describing an Internet socket address.
+type Sockaddr_in = struct {
+ Fsin_family Sa_family_t
+ Fsin_port In_port_t
+ Fsin_addr struct{ Fs_addr In_addr_t }
+ Fsin_zero [8]uint8
+} /* in.h:242:1 */
+
+// Ditto, for IPv6.
+type Sockaddr_in6 = struct {
+ Fsin6_family Sa_family_t
+ Fsin6_port In_port_t
+ Fsin6_flowinfo Uint32_t
+ Fsin6_addr struct {
+ F__in6_u struct {
+ F__ccgo_pad1 [0]uint32
+ F__u6_addr8 [16]Uint8_t
+ }
+ }
+ Fsin6_scope_id Uint32_t
+} /* in.h:257:1 */
+
+// IPv4 multicast request.
+type Ip_mreq = struct {
+ Fimr_multiaddr struct{ Fs_addr In_addr_t }
+ Fimr_interface struct{ Fs_addr In_addr_t }
+} /* in.h:269:1 */
+
+type Ip_mreq_source = struct {
+ Fimr_multiaddr struct{ Fs_addr In_addr_t }
+ Fimr_interface struct{ Fs_addr In_addr_t }
+ Fimr_sourceaddr struct{ Fs_addr In_addr_t }
+} /* in.h:278:1 */
+
+// Likewise, for IPv6.
+type Ipv6_mreq = struct {
+ Fipv6mr_multiaddr struct {
+ F__in6_u struct {
+ F__ccgo_pad1 [0]uint32
+ F__u6_addr8 [16]Uint8_t
+ }
+ }
+ Fipv6mr_interface uint32
+} /* in.h:293:1 */
+
+// Multicast group request.
+type Group_req = struct {
+ Fgr_interface Uint32_t
+ F__ccgo_pad1 [4]byte
+ Fgr_group struct {
+ Fss_family Sa_family_t
+ F__ss_padding [118]uint8
+ F__ss_align uint64
+ }
+} /* in.h:305:1 */
+
+type Group_source_req = struct {
+ Fgsr_interface Uint32_t
+ F__ccgo_pad1 [4]byte
+ Fgsr_group struct {
+ Fss_family Sa_family_t
+ F__ss_padding [118]uint8
+ F__ss_align uint64
+ }
+ Fgsr_source struct {
+ Fss_family Sa_family_t
+ F__ss_padding [118]uint8
+ F__ss_align uint64
+ }
+} /* in.h:314:1 */
+
+// Full-state filter operations.
+type Ip_msfilter = struct {
+ Fimsf_multiaddr struct{ Fs_addr In_addr_t }
+ Fimsf_interface struct{ Fs_addr In_addr_t }
+ Fimsf_fmode Uint32_t
+ Fimsf_numsrc Uint32_t
+ Fimsf_slist [1]struct{ Fs_addr In_addr_t }
+} /* in.h:328:1 */
+
+type Group_filter = struct {
+ Fgf_interface Uint32_t
+ F__ccgo_pad1 [4]byte
+ Fgf_group struct {
+ Fss_family Sa_family_t
+ F__ss_padding [118]uint8
+ F__ss_align uint64
+ }
+ Fgf_fmode Uint32_t
+ Fgf_numsrc Uint32_t
+ Fgf_slist [1]struct {
+ Fss_family Sa_family_t
+ F__ss_padding [118]uint8
+ F__ss_align uint64
+ }
+} /* in.h:349:1 */
+
+// Define uintN_t types.
+// Copyright (C) 2017-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// This is necessary to make this include file properly replace the
+// Sun version.
+// @(#)netdb.h 2.1 88/07/29 3.9 RPCSRC
+// Copyright (c) 2010, Oracle America, Inc.
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following
+// disclaimer in the documentation and/or other materials
+// provided with the distribution.
+// * Neither the name of the "Oracle America, Inc." nor the names of its
+// contributors may be used to endorse or promote products derived
+// from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+// COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Cleaned up for GNU C library roland@gnu.ai.mit.edu:
+// added multiple inclusion protection and use of <sys/cdefs.h>.
+// In GNU this file is #include'd by <netdb.h>.
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Copyright (C) 1989-2021 Free Software Foundation, Inc.
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+//
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+// <http://www.gnu.org/licenses/>.
+
+// ISO C Standard: 7.17 Common definitions <stddef.h>
+
+// Any one of these symbols __need_* means that GNU libc
+// wants us just to define one data type. So don't define
+// the symbols that indicate this file's entire job has been done.
+
+// This avoids lossage on SunOS but only if stdtypes.h comes first.
+// There's no way to win with the other order! Sun lossage.
+
+// Sequent's header files use _PTRDIFF_T_ in some conflicting way.
+// Just ignore it.
+
+// On VxWorks, <type/vxTypesBase.h> may have defined macros like
+// _TYPE_size_t which will typedef size_t. fixincludes patched the
+// vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is
+// not defined, and so that defining this macro defines _GCC_SIZE_T.
+// If we find that the macros are still defined at this point, we must
+// invoke them so that the type is defined as expected.
+
+// In case nobody has defined these types, but we aren't running under
+// GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and
+// __WCHAR_TYPE__ have reasonable values. This can happen if the
+// parts of GCC is compiled by an older compiler, that actually
+// include gstddef.h, such as collect2.
+
+// Signed type of difference of two pointers.
+
+// Define this type if we are doing the whole job,
+// or if we want this type in particular.
+
+// Unsigned type of `sizeof' something.
+
+// Define this type if we are doing the whole job,
+// or if we want this type in particular.
+
+// Wide character type.
+// Locale-writers should change this as necessary to
+// be big enough to hold unique values not between 0 and 127,
+// and not (wchar_t) -1, for each defined multibyte character.
+
+// Define this type if we are doing the whole job,
+// or if we want this type in particular.
+
+// A null pointer constant.
+
+type Rpcent = struct {
+ Fr_name uintptr
+ Fr_aliases uintptr
+ Fr_number int32
+ F__ccgo_pad1 [4]byte
+} /* netdb.h:46:1 */
+
+// Copyright (C) 1996-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Description of data base entry for a single network. NOTE: here a
+// poor assumption is made. The network number is expected to fit
+// into an unsigned long int variable.
+type Netent = struct {
+ Fn_name uintptr
+ Fn_aliases uintptr
+ Fn_addrtype int32
+ Fn_net Uint32_t
+} /* netdb.h:26:1 */
+
+// Description of data base entry for a single host.
+type Hostent = struct {
+ Fh_name uintptr
+ Fh_aliases uintptr
+ Fh_addrtype int32
+ Fh_length int32
+ Fh_addr_list uintptr
+} /* netdb.h:98:1 */
+
+// Description of data base entry for a single service.
+type Servent = struct {
+ Fs_name uintptr
+ Fs_aliases uintptr
+ Fs_port int32
+ F__ccgo_pad1 [4]byte
+ Fs_proto uintptr
+} /* netdb.h:255:1 */
+
+// Description of data base entry for a single service.
+type Protoent = struct {
+ Fp_name uintptr
+ Fp_aliases uintptr
+ Fp_proto int32
+ F__ccgo_pad1 [4]byte
+} /* netdb.h:324:1 */
+
+// Extension from POSIX.1:2001.
+// Structure to contain information about address of a service provider.
+type Addrinfo = struct {
+ Fai_flags int32
+ Fai_family int32
+ Fai_socktype int32
+ Fai_protocol int32
+ Fai_addrlen Socklen_t
+ F__ccgo_pad1 [4]byte
+ Fai_addr uintptr
+ Fai_canonname uintptr
+ Fai_next uintptr
+} /* netdb.h:565:1 */
+
+var _ uint8 /* gen.c:2:13: */
diff --git a/vendor/modernc.org/libc/netinet/in/capi_linux_riscv64.go b/vendor/modernc.org/libc/netinet/in/capi_linux_riscv64.go
new file mode 100644
index 00000000..3302f699
--- /dev/null
+++ b/vendor/modernc.org/libc/netinet/in/capi_linux_riscv64.go
@@ -0,0 +1,5 @@
+// Code generated by 'ccgo netinet/in/gen.c -crt-import-path -export-defines -export-enums -export-externs X -export-fields F -export-structs -export-typedefs -header -hide _OSSwapInt16,_OSSwapInt32,_OSSwapInt64 -o netinet/in/in_linux_riscv64.go -pkgname in', DO NOT EDIT.
+
+package in
+
+var CAPI = map[string]struct{}{}
diff --git a/vendor/modernc.org/libc/netinet/in/in_linux_riscv64.go b/vendor/modernc.org/libc/netinet/in/in_linux_riscv64.go
new file mode 100644
index 00000000..96c3ccf1
--- /dev/null
+++ b/vendor/modernc.org/libc/netinet/in/in_linux_riscv64.go
@@ -0,0 +1,2990 @@
+// Code generated by 'ccgo netinet/in/gen.c -crt-import-path "" -export-defines "" -export-enums "" -export-externs X -export-fields F -export-structs "" -export-typedefs "" -header -hide _OSSwapInt16,_OSSwapInt32,_OSSwapInt64 -o netinet/in/in_linux_riscv64.go -pkgname in', DO NOT EDIT.
+
+package in
+
+import (
+ "math"
+ "reflect"
+ "sync/atomic"
+ "unsafe"
+)
+
+var _ = math.Pi
+var _ reflect.Kind
+var _ atomic.Value
+var _ unsafe.Pointer
+
+const (
+ AF_ALG = 38
+ AF_APPLETALK = 5
+ AF_ASH = 18
+ AF_ATMPVC = 8
+ AF_ATMSVC = 20
+ AF_AX25 = 3
+ AF_BLUETOOTH = 31
+ AF_BRIDGE = 7
+ AF_CAIF = 37
+ AF_CAN = 29
+ AF_DECnet = 12
+ AF_ECONET = 19
+ AF_FILE = 1
+ AF_IB = 27
+ AF_IEEE802154 = 36
+ AF_INET = 2
+ AF_INET6 = 10
+ AF_IPX = 4
+ AF_IRDA = 23
+ AF_ISDN = 34
+ AF_IUCV = 32
+ AF_KCM = 41
+ AF_KEY = 15
+ AF_LLC = 26
+ AF_LOCAL = 1
+ AF_MAX = 45
+ AF_MPLS = 28
+ AF_NETBEUI = 13
+ AF_NETLINK = 16
+ AF_NETROM = 6
+ AF_NFC = 39
+ AF_PACKET = 17
+ AF_PHONET = 35
+ AF_PPPOX = 24
+ AF_QIPCRTR = 42
+ AF_RDS = 21
+ AF_ROSE = 11
+ AF_ROUTE = 16
+ AF_RXRPC = 33
+ AF_SECURITY = 14
+ AF_SMC = 43
+ AF_SNA = 22
+ AF_TIPC = 30
+ AF_UNIX = 1
+ AF_UNSPEC = 0
+ AF_VSOCK = 40
+ AF_WANPIPE = 25
+ AF_X25 = 9
+ AF_XDP = 44
+ BIG_ENDIAN = 4321
+ BYTE_ORDER = 1234
+ FD_SETSIZE = 1024
+ FIOGETOWN = 0x8903
+ FIOSETOWN = 0x8901
+ INET6_ADDRSTRLEN = 46
+ INET_ADDRSTRLEN = 16
+ IN_CLASSA_HOST = 16777215
+ IN_CLASSA_MAX = 128
+ IN_CLASSA_NET = 0xff000000
+ IN_CLASSA_NSHIFT = 24
+ IN_CLASSB_HOST = 65535
+ IN_CLASSB_MAX = 65536
+ IN_CLASSB_NET = 0xffff0000
+ IN_CLASSB_NSHIFT = 16
+ IN_CLASSC_HOST = 255
+ IN_CLASSC_NET = 0xffffff00
+ IN_CLASSC_NSHIFT = 8
+ IN_LOOPBACKNET = 127
+ IPV6_2292DSTOPTS = 4
+ IPV6_2292HOPLIMIT = 8
+ IPV6_2292HOPOPTS = 3
+ IPV6_2292PKTINFO = 2
+ IPV6_2292PKTOPTIONS = 6
+ IPV6_2292RTHDR = 5
+ IPV6_ADDRFORM = 1
+ IPV6_ADDR_PREFERENCES = 72
+ IPV6_ADD_MEMBERSHIP = 20
+ IPV6_AUTHHDR = 10
+ IPV6_AUTOFLOWLABEL = 70
+ IPV6_CHECKSUM = 7
+ IPV6_DONTFRAG = 62
+ IPV6_DROP_MEMBERSHIP = 21
+ IPV6_DSTOPTS = 59
+ IPV6_FREEBIND = 78
+ IPV6_HDRINCL = 36
+ IPV6_HOPLIMIT = 52
+ IPV6_HOPOPTS = 54
+ IPV6_IPSEC_POLICY = 34
+ IPV6_JOIN_ANYCAST = 27
+ IPV6_JOIN_GROUP = 20
+ IPV6_LEAVE_ANYCAST = 28
+ IPV6_LEAVE_GROUP = 21
+ IPV6_MINHOPCOUNT = 73
+ IPV6_MTU = 24
+ IPV6_MTU_DISCOVER = 23
+ IPV6_MULTICAST_ALL = 29
+ IPV6_MULTICAST_HOPS = 18
+ IPV6_MULTICAST_IF = 17
+ IPV6_MULTICAST_LOOP = 19
+ IPV6_NEXTHOP = 9
+ IPV6_ORIGDSTADDR = 74
+ IPV6_PATHMTU = 61
+ IPV6_PKTINFO = 50
+ IPV6_PMTUDISC_DO = 2
+ IPV6_PMTUDISC_DONT = 0
+ IPV6_PMTUDISC_INTERFACE = 4
+ IPV6_PMTUDISC_OMIT = 5
+ IPV6_PMTUDISC_PROBE = 3
+ IPV6_PMTUDISC_WANT = 1
+ IPV6_RECVDSTOPTS = 58
+ IPV6_RECVERR = 25
+ IPV6_RECVERR_RFC4884 = 31
+ IPV6_RECVFRAGSIZE = 77
+ IPV6_RECVHOPLIMIT = 51
+ IPV6_RECVHOPOPTS = 53
+ IPV6_RECVORIGDSTADDR = 74
+ IPV6_RECVPATHMTU = 60
+ IPV6_RECVPKTINFO = 49
+ IPV6_RECVRTHDR = 56
+ IPV6_RECVTCLASS = 66
+ IPV6_ROUTER_ALERT = 22
+ IPV6_ROUTER_ALERT_ISOLATE = 30
+ IPV6_RTHDR = 57
+ IPV6_RTHDRDSTOPTS = 55
+ IPV6_RTHDR_LOOSE = 0
+ IPV6_RTHDR_STRICT = 1
+ IPV6_RTHDR_TYPE_0 = 0
+ IPV6_RXDSTOPTS = 59
+ IPV6_RXHOPOPTS = 54
+ IPV6_TCLASS = 67
+ IPV6_TRANSPARENT = 75
+ IPV6_UNICAST_HOPS = 16
+ IPV6_UNICAST_IF = 76
+ IPV6_V6ONLY = 26
+ IPV6_XFRM_POLICY = 35
+ IP_ADD_MEMBERSHIP = 35
+ IP_ADD_SOURCE_MEMBERSHIP = 39
+ IP_BIND_ADDRESS_NO_PORT = 24
+ IP_BLOCK_SOURCE = 38
+ IP_CHECKSUM = 23
+ IP_DEFAULT_MULTICAST_LOOP = 1
+ IP_DEFAULT_MULTICAST_TTL = 1
+ IP_DROP_MEMBERSHIP = 36
+ IP_DROP_SOURCE_MEMBERSHIP = 40
+ IP_FREEBIND = 15
+ IP_HDRINCL = 3
+ IP_IPSEC_POLICY = 16
+ IP_MAX_MEMBERSHIPS = 20
+ IP_MINTTL = 21
+ IP_MSFILTER = 41
+ IP_MTU = 14
+ IP_MTU_DISCOVER = 10
+ IP_MULTICAST_ALL = 49
+ IP_MULTICAST_IF = 32
+ IP_MULTICAST_LOOP = 34
+ IP_MULTICAST_TTL = 33
+ IP_NODEFRAG = 22
+ IP_OPTIONS = 4
+ IP_ORIGDSTADDR = 20
+ IP_PASSSEC = 18
+ IP_PKTINFO = 8
+ IP_PKTOPTIONS = 9
+ IP_PMTUDISC = 10
+ IP_PMTUDISC_DO = 2
+ IP_PMTUDISC_DONT = 0
+ IP_PMTUDISC_INTERFACE = 4
+ IP_PMTUDISC_OMIT = 5
+ IP_PMTUDISC_PROBE = 3
+ IP_PMTUDISC_WANT = 1
+ IP_RECVERR = 11
+ IP_RECVERR_RFC4884 = 26
+ IP_RECVFRAGSIZE = 25
+ IP_RECVOPTS = 6
+ IP_RECVORIGDSTADDR = 20
+ IP_RECVRETOPTS = 7
+ IP_RECVTOS = 13
+ IP_RECVTTL = 12
+ IP_RETOPTS = 7
+ IP_ROUTER_ALERT = 5
+ IP_TOS = 1
+ IP_TRANSPARENT = 19
+ IP_TTL = 2
+ IP_UNBLOCK_SOURCE = 37
+ IP_UNICAST_IF = 50
+ IP_XFRM_POLICY = 17
+ LITTLE_ENDIAN = 1234
+ MCAST_BLOCK_SOURCE = 43
+ MCAST_EXCLUDE = 0
+ MCAST_INCLUDE = 1
+ MCAST_JOIN_GROUP = 42
+ MCAST_JOIN_SOURCE_GROUP = 46
+ MCAST_LEAVE_GROUP = 45
+ MCAST_LEAVE_SOURCE_GROUP = 47
+ MCAST_MSFILTER = 48
+ MCAST_UNBLOCK_SOURCE = 44
+ PDP_ENDIAN = 3412
+ PF_ALG = 38
+ PF_APPLETALK = 5
+ PF_ASH = 18
+ PF_ATMPVC = 8
+ PF_ATMSVC = 20
+ PF_AX25 = 3
+ PF_BLUETOOTH = 31
+ PF_BRIDGE = 7
+ PF_CAIF = 37
+ PF_CAN = 29
+ PF_DECnet = 12
+ PF_ECONET = 19
+ PF_FILE = 1
+ PF_IB = 27
+ PF_IEEE802154 = 36
+ PF_INET = 2
+ PF_INET6 = 10
+ PF_IPX = 4
+ PF_IRDA = 23
+ PF_ISDN = 34
+ PF_IUCV = 32
+ PF_KCM = 41
+ PF_KEY = 15
+ PF_LLC = 26
+ PF_LOCAL = 1
+ PF_MAX = 45
+ PF_MPLS = 28
+ PF_NETBEUI = 13
+ PF_NETLINK = 16
+ PF_NETROM = 6
+ PF_NFC = 39
+ PF_PACKET = 17
+ PF_PHONET = 35
+ PF_PPPOX = 24
+ PF_QIPCRTR = 42
+ PF_RDS = 21
+ PF_ROSE = 11
+ PF_ROUTE = 16
+ PF_RXRPC = 33
+ PF_SECURITY = 14
+ PF_SMC = 43
+ PF_SNA = 22
+ PF_TIPC = 30
+ PF_UNIX = 1
+ PF_UNSPEC = 0
+ PF_VSOCK = 40
+ PF_WANPIPE = 25
+ PF_X25 = 9
+ PF_XDP = 44
+ SCM_TIMESTAMP = 29
+ SCM_TIMESTAMPING = 37
+ SCM_TIMESTAMPING_OPT_STATS = 54
+ SCM_TIMESTAMPING_PKTINFO = 58
+ SCM_TIMESTAMPNS = 35
+ SCM_TXTIME = 61
+ SCM_WIFI_STATUS = 41
+ SIOCATMARK = 0x8905
+ SIOCGPGRP = 0x8904
+ SIOCGSTAMPNS_OLD = 0x8907
+ SIOCGSTAMP_OLD = 0x8906
+ SIOCSPGRP = 0x8902
+ SOL_AAL = 265
+ SOL_ALG = 279
+ SOL_ATM = 264
+ SOL_BLUETOOTH = 274
+ SOL_CAIF = 278
+ SOL_DCCP = 269
+ SOL_DECNET = 261
+ SOL_ICMPV6 = 58
+ SOL_IP = 0
+ SOL_IPV6 = 41
+ SOL_IRDA = 266
+ SOL_IUCV = 277
+ SOL_KCM = 281
+ SOL_LLC = 268
+ SOL_NETBEUI = 267
+ SOL_NETLINK = 270
+ SOL_NFC = 280
+ SOL_PACKET = 263
+ SOL_PNPIPE = 275
+ SOL_PPPOL2TP = 273
+ SOL_RAW = 255
+ SOL_RDS = 276
+ SOL_RXRPC = 272
+ SOL_SOCKET = 1
+ SOL_TIPC = 271
+ SOL_TLS = 282
+ SOL_X25 = 262
+ SOL_XDP = 283
+ SOMAXCONN = 4096
+ SO_ACCEPTCONN = 30
+ SO_ATTACH_BPF = 50
+ SO_ATTACH_FILTER = 26
+ SO_ATTACH_REUSEPORT_CBPF = 51
+ SO_ATTACH_REUSEPORT_EBPF = 52
+ SO_BINDTODEVICE = 25
+ SO_BINDTOIFINDEX = 62
+ SO_BPF_EXTENSIONS = 48
+ SO_BROADCAST = 6
+ SO_BSDCOMPAT = 14
+ SO_BUSY_POLL = 46
+ SO_BUSY_POLL_BUDGET = 70
+ SO_CNX_ADVICE = 53
+ SO_COOKIE = 57
+ SO_DEBUG = 1
+ SO_DETACH_BPF = 27
+ SO_DETACH_FILTER = 27
+ SO_DETACH_REUSEPORT_BPF = 68
+ SO_DOMAIN = 39
+ SO_DONTROUTE = 5
+ SO_ERROR = 4
+ SO_GET_FILTER = 26
+ SO_INCOMING_CPU = 49
+ SO_INCOMING_NAPI_ID = 56
+ SO_KEEPALIVE = 9
+ SO_LINGER = 13
+ SO_LOCK_FILTER = 44
+ SO_MARK = 36
+ SO_MAX_PACING_RATE = 47
+ SO_MEMINFO = 55
+ SO_NETNS_COOKIE = 71
+ SO_NOFCS = 43
+ SO_NO_CHECK = 11
+ SO_OOBINLINE = 10
+ SO_PASSCRED = 16
+ SO_PASSSEC = 34
+ SO_PEEK_OFF = 42
+ SO_PEERCRED = 17
+ SO_PEERGROUPS = 59
+ SO_PEERNAME = 28
+ SO_PEERSEC = 31
+ SO_PREFER_BUSY_POLL = 69
+ SO_PRIORITY = 12
+ SO_PROTOCOL = 38
+ SO_RCVBUF = 8
+ SO_RCVBUFFORCE = 33
+ SO_RCVLOWAT = 18
+ SO_RCVTIMEO = 20
+ SO_RCVTIMEO_NEW = 66
+ SO_RCVTIMEO_OLD = 20
+ SO_REUSEADDR = 2
+ SO_REUSEPORT = 15
+ SO_RXQ_OVFL = 40
+ SO_SECURITY_AUTHENTICATION = 22
+ SO_SECURITY_ENCRYPTION_NETWORK = 24
+ SO_SECURITY_ENCRYPTION_TRANSPORT = 23
+ SO_SELECT_ERR_QUEUE = 45
+ SO_SNDBUF = 7
+ SO_SNDBUFFORCE = 32
+ SO_SNDLOWAT = 19
+ SO_SNDTIMEO = 21
+ SO_SNDTIMEO_NEW = 67
+ SO_SNDTIMEO_OLD = 21
+ SO_TIMESTAMP = 29
+ SO_TIMESTAMPING = 37
+ SO_TIMESTAMPING_NEW = 65
+ SO_TIMESTAMPING_OLD = 37
+ SO_TIMESTAMPNS = 35
+ SO_TIMESTAMPNS_NEW = 64
+ SO_TIMESTAMPNS_OLD = 35
+ SO_TIMESTAMP_NEW = 63
+ SO_TIMESTAMP_OLD = 29
+ SO_TXTIME = 61
+ SO_TYPE = 3
+ SO_WIFI_STATUS = 41
+ SO_ZEROCOPY = 60
+ X_ASM_RISCV_BITSPERLONG_H = 0
+ X_ATFILE_SOURCE = 1
+ X_BITS_BYTESWAP_H = 1
+ X_BITS_ENDIANNESS_H = 1
+ X_BITS_ENDIAN_H = 1
+ X_BITS_PTHREADTYPES_ARCH_H = 1
+ X_BITS_PTHREADTYPES_COMMON_H = 1
+ X_BITS_SOCKADDR_H = 1
+ X_BITS_STDINT_INTN_H = 1
+ X_BITS_STDINT_UINTN_H = 1
+ X_BITS_TIME64_H = 1
+ X_BITS_TYPESIZES_H = 1
+ X_BITS_TYPES_H = 1
+ X_BITS_UINTN_IDENTITY_H = 1
+ X_BSD_SIZE_T_ = 0
+ X_BSD_SIZE_T_DEFINED_ = 0
+ X_DEFAULT_SOURCE = 1
+ X_ENDIAN_H = 1
+ X_FEATURES_H = 1
+ X_FILE_OFFSET_BITS = 64
+ X_GCC_SIZE_T = 0
+ X_LINUX_POSIX_TYPES_H = 0
+ X_LP64 = 1
+ X_NETINET_IN_H = 1
+ X_POSIX_C_SOURCE = 200809
+ X_POSIX_SOURCE = 1
+ X_RWLOCK_INTERNAL_H = 0
+ X_SIZET_ = 0
+ X_SIZE_T = 0
+ X_SIZE_T_ = 0
+ X_SIZE_T_DECLARED = 0
+ X_SIZE_T_DEFINED = 0
+ X_SIZE_T_DEFINED_ = 0
+ X_SS_SIZE = 128
+ X_STDC_PREDEF_H = 1
+ X_STRUCT_TIMESPEC = 1
+ X_SYS_CDEFS_H = 1
+ X_SYS_SELECT_H = 1
+ X_SYS_SIZE_T_H = 0
+ X_SYS_SOCKET_H = 1
+ X_SYS_TYPES_H = 1
+ X_THREAD_MUTEX_INTERNAL_H = 1
+ X_THREAD_SHARED_TYPES_H = 1
+ X_T_SIZE = 0
+ X_T_SIZE_ = 0
+ Linux = 1
+ Unix = 1
+)
+
+// If __USE_KERNEL_IPV6_DEFS is 1 then the user has included the kernel
+// network headers first and we should use those ABI-identical definitions
+// instead of our own, otherwise 0.
+const ( /* in.h:103:1: */
+ IPPROTO_HOPOPTS = 0 // IPv6 Hop-by-Hop options.
+ IPPROTO_ROUTING = 43 // IPv6 routing header.
+ IPPROTO_FRAGMENT = 44 // IPv6 fragmentation header.
+ IPPROTO_ICMPV6 = 58 // ICMPv6.
+ IPPROTO_NONE = 59 // IPv6 no next header.
+ IPPROTO_DSTOPTS = 60 // IPv6 destination options.
+ IPPROTO_MH = 135
+)
+
+// Standard well-known ports.
+const ( /* in.h:126:1: */
+ IPPORT_ECHO = 7 // Echo service.
+ IPPORT_DISCARD = 9 // Discard transmissions service.
+ IPPORT_SYSTAT = 11 // System status service.
+ IPPORT_DAYTIME = 13 // Time of day service.
+ IPPORT_NETSTAT = 15 // Network status service.
+ IPPORT_FTP = 21 // File Transfer Protocol.
+ IPPORT_TELNET = 23 // Telnet protocol.
+ IPPORT_SMTP = 25 // Simple Mail Transfer Protocol.
+ IPPORT_TIMESERVER = 37 // Timeserver service.
+ IPPORT_NAMESERVER = 42 // Domain Name Service.
+ IPPORT_WHOIS = 43 // Internet Whois service.
+ IPPORT_MTP = 57
+
+ IPPORT_TFTP = 69 // Trivial File Transfer Protocol.
+ IPPORT_RJE = 77
+ IPPORT_FINGER = 79 // Finger service.
+ IPPORT_TTYLINK = 87
+ IPPORT_SUPDUP = 95 // SUPDUP protocol.
+
+ IPPORT_EXECSERVER = 512 // execd service.
+ IPPORT_LOGINSERVER = 513 // rlogind service.
+ IPPORT_CMDSERVER = 514
+ IPPORT_EFSSERVER = 520
+
+ // UDP ports.
+ IPPORT_BIFFUDP = 512
+ IPPORT_WHOSERVER = 513
+ IPPORT_ROUTESERVER = 520
+
+ // Ports less than this value are reserved for privileged processes.
+ IPPORT_RESERVED = 1024
+
+ // Ports greater this value are reserved for (non-privileged) servers.
+ IPPORT_USERRESERVED = 5000
+)
+
+// Options for use with `getsockopt' and `setsockopt' at the IPv6 level.
+// The first word in the comment at the right is the data type used;
+// "bool" means a boolean value stored in an `int'.
+
+// Advanced API (RFC3542) (1).
+
+// Advanced API (RFC3542) (2).
+
+// RFC5014.
+
+// RFC5082.
+
+// Obsolete synonyms for the above.
+
+// IPV6_MTU_DISCOVER values.
+
+// Socket level values for IPv6.
+
+// Routing header options for IPv6.
+
+// Standard well-defined IP protocols.
+const ( /* in.h:40:1: */
+ IPPROTO_IP = 0 // Dummy protocol for TCP.
+ IPPROTO_ICMP = 1 // Internet Control Message Protocol.
+ IPPROTO_IGMP = 2 // Internet Group Management Protocol.
+ IPPROTO_IPIP = 4 // IPIP tunnels (older KA9Q tunnels use 94).
+ IPPROTO_TCP = 6 // Transmission Control Protocol.
+ IPPROTO_EGP = 8 // Exterior Gateway Protocol.
+ IPPROTO_PUP = 12 // PUP protocol.
+ IPPROTO_UDP = 17 // User Datagram Protocol.
+ IPPROTO_IDP = 22 // XNS IDP protocol.
+ IPPROTO_TP = 29 // SO Transport Protocol Class 4.
+ IPPROTO_DCCP = 33 // Datagram Congestion Control Protocol.
+ IPPROTO_IPV6 = 41 // IPv6 header.
+ IPPROTO_RSVP = 46 // Reservation Protocol.
+ IPPROTO_GRE = 47 // General Routing Encapsulation.
+ IPPROTO_ESP = 50 // encapsulating security payload.
+ IPPROTO_AH = 51 // authentication header.
+ IPPROTO_MTP = 92 // Multicast Transport Protocol.
+ IPPROTO_BEETPH = 94 // IP option pseudo header for BEET.
+ IPPROTO_ENCAP = 98 // Encapsulation Header.
+ IPPROTO_PIM = 103 // Protocol Independent Multicast.
+ IPPROTO_COMP = 108 // Compression Header Protocol.
+ IPPROTO_SCTP = 132 // Stream Control Transmission Protocol.
+ IPPROTO_UDPLITE = 136 // UDP-Lite protocol.
+ IPPROTO_MPLS = 137 // MPLS in IP.
+ IPPROTO_ETHERNET = 143 // Ethernet-within-IPv6 Encapsulation.
+ IPPROTO_RAW = 255 // Raw IP packets.
+ IPPROTO_MPTCP = 262 // Multipath TCP connection.
+ IPPROTO_MAX = 263
+)
+
+// Bits in the FLAGS argument to `send', `recv', et al.
+const ( /* socket.h:200:1: */
+ MSG_OOB = 1 // Process out-of-band data.
+ MSG_PEEK = 2 // Peek at incoming messages.
+ MSG_DONTROUTE = 4 // Don't use local routing.
+ MSG_CTRUNC = 8 // Control data lost before delivery.
+ MSG_PROXY = 16 // Supply or ask second address.
+ MSG_TRUNC = 32
+ MSG_DONTWAIT = 64 // Nonblocking IO.
+ MSG_EOR = 128 // End of record.
+ MSG_WAITALL = 256 // Wait for a full request.
+ MSG_FIN = 512
+ MSG_SYN = 1024
+ MSG_CONFIRM = 2048 // Confirm path validity.
+ MSG_RST = 4096
+ MSG_ERRQUEUE = 8192 // Fetch message from error queue.
+ MSG_NOSIGNAL = 16384 // Do not generate SIGPIPE.
+ MSG_MORE = 32768 // Sender will send more.
+ MSG_WAITFORONE = 65536 // Wait for at least one packet to return.
+ MSG_BATCH = 262144 // sendmmsg: more messages coming.
+ MSG_ZEROCOPY = 67108864 // Use user data in kernel path.
+ MSG_FASTOPEN = 536870912 // Send data in TCP SYN.
+
+ MSG_CMSG_CLOEXEC = 1073741824
+)
+
+// Socket level message types. This must match the definitions in
+// <linux/socket.h>.
+const ( /* socket.h:332:1: */
+ SCM_RIGHTS = 1
+)
+
+// Get the architecture-dependent definition of enum __socket_type.
+// Define enum __socket_type for generic Linux.
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Types of sockets.
+const ( /* socket_type.h:24:1: */
+ SOCK_STREAM = 1 // Sequenced, reliable, connection-based
+ // byte streams.
+ SOCK_DGRAM = 2 // Connectionless, unreliable datagrams
+ // of fixed maximum length.
+ SOCK_RAW = 3 // Raw protocol interface.
+ SOCK_RDM = 4 // Reliably-delivered messages.
+ SOCK_SEQPACKET = 5 // Sequenced, reliable, connection-based,
+ // datagrams of fixed maximum length.
+ SOCK_DCCP = 6 // Datagram Congestion Control Protocol.
+ SOCK_PACKET = 10 // Linux specific way of getting packets
+ // at the dev level. For writing rarp and
+ // other similar things on the user level.
+
+ // Flags to be ORed into the type parameter of socket and socketpair and
+ // used for the flags parameter of paccept.
+
+ SOCK_CLOEXEC = 524288 // Atomically set close-on-exec flag for the
+ // new descriptor(s).
+ SOCK_NONBLOCK = 2048
+)
+
+// The following constants should be used for the second parameter of
+// `shutdown'.
+const ( /* socket.h:41:1: */
+ SHUT_RD = 0 // No more receptions.
+ SHUT_WR = 1 // No more transmissions.
+ SHUT_RDWR = 2
+)
+
+type Ptrdiff_t = int64 /* <builtin>:3:26 */
+
+type Size_t = uint64 /* <builtin>:9:23 */
+
+type Wchar_t = int32 /* <builtin>:15:24 */
+
+type X__int128_t = struct {
+ Flo int64
+ Fhi int64
+} /* <builtin>:21:43 */ // must match modernc.org/mathutil.Int128
+type X__uint128_t = struct {
+ Flo uint64
+ Fhi uint64
+} /* <builtin>:22:44 */ // must match modernc.org/mathutil.Int128
+
+type X__builtin_va_list = uintptr /* <builtin>:46:14 */
+type X__float128 = float64 /* <builtin>:47:21 */
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// These are defined by the user (or the compiler)
+// to specify the desired environment:
+//
+// __STRICT_ANSI__ ISO Standard C.
+// _ISOC99_SOURCE Extensions to ISO C89 from ISO C99.
+// _ISOC11_SOURCE Extensions to ISO C99 from ISO C11.
+// _ISOC2X_SOURCE Extensions to ISO C99 from ISO C2X.
+// __STDC_WANT_LIB_EXT2__
+// Extensions to ISO C99 from TR 27431-2:2010.
+// __STDC_WANT_IEC_60559_BFP_EXT__
+// Extensions to ISO C11 from TS 18661-1:2014.
+// __STDC_WANT_IEC_60559_FUNCS_EXT__
+// Extensions to ISO C11 from TS 18661-4:2015.
+// __STDC_WANT_IEC_60559_TYPES_EXT__
+// Extensions to ISO C11 from TS 18661-3:2015.
+// __STDC_WANT_IEC_60559_EXT__
+// ISO C2X interfaces defined only in Annex F.
+//
+// _POSIX_SOURCE IEEE Std 1003.1.
+// _POSIX_C_SOURCE If ==1, like _POSIX_SOURCE; if >=2 add IEEE Std 1003.2;
+// if >=199309L, add IEEE Std 1003.1b-1993;
+// if >=199506L, add IEEE Std 1003.1c-1995;
+// if >=200112L, all of IEEE 1003.1-2004
+// if >=200809L, all of IEEE 1003.1-2008
+// _XOPEN_SOURCE Includes POSIX and XPG things. Set to 500 if
+// Single Unix conformance is wanted, to 600 for the
+// sixth revision, to 700 for the seventh revision.
+// _XOPEN_SOURCE_EXTENDED XPG things and X/Open Unix extensions.
+// _LARGEFILE_SOURCE Some more functions for correct standard I/O.
+// _LARGEFILE64_SOURCE Additional functionality from LFS for large files.
+// _FILE_OFFSET_BITS=N Select default filesystem interface.
+// _ATFILE_SOURCE Additional *at interfaces.
+// _DYNAMIC_STACK_SIZE_SOURCE Select correct (but non compile-time constant)
+// MINSIGSTKSZ, SIGSTKSZ and PTHREAD_STACK_MIN.
+// _GNU_SOURCE All of the above, plus GNU extensions.
+// _DEFAULT_SOURCE The default set of features (taking precedence over
+// __STRICT_ANSI__).
+//
+// _FORTIFY_SOURCE Add security hardening to many library functions.
+// Set to 1 or 2; 2 performs stricter checks than 1.
+//
+// _REENTRANT, _THREAD_SAFE
+// Obsolete; equivalent to _POSIX_C_SOURCE=199506L.
+//
+// The `-ansi' switch to the GNU C compiler, and standards conformance
+// options such as `-std=c99', define __STRICT_ANSI__. If none of
+// these are defined, or if _DEFAULT_SOURCE is defined, the default is
+// to have _POSIX_SOURCE set to one and _POSIX_C_SOURCE set to
+// 200809L, as well as enabling miscellaneous functions from BSD and
+// SVID. If more than one of these are defined, they accumulate. For
+// example __STRICT_ANSI__, _POSIX_SOURCE and _POSIX_C_SOURCE together
+// give you ISO C, 1003.1, and 1003.2, but nothing else.
+//
+// These are defined by this file and are used by the
+// header files to decide what to declare or define:
+//
+// __GLIBC_USE (F) Define things from feature set F. This is defined
+// to 1 or 0; the subsequent macros are either defined
+// or undefined, and those tests should be moved to
+// __GLIBC_USE.
+// __USE_ISOC11 Define ISO C11 things.
+// __USE_ISOC99 Define ISO C99 things.
+// __USE_ISOC95 Define ISO C90 AMD1 (C95) things.
+// __USE_ISOCXX11 Define ISO C++11 things.
+// __USE_POSIX Define IEEE Std 1003.1 things.
+// __USE_POSIX2 Define IEEE Std 1003.2 things.
+// __USE_POSIX199309 Define IEEE Std 1003.1, and .1b things.
+// __USE_POSIX199506 Define IEEE Std 1003.1, .1b, .1c and .1i things.
+// __USE_XOPEN Define XPG things.
+// __USE_XOPEN_EXTENDED Define X/Open Unix things.
+// __USE_UNIX98 Define Single Unix V2 things.
+// __USE_XOPEN2K Define XPG6 things.
+// __USE_XOPEN2KXSI Define XPG6 XSI things.
+// __USE_XOPEN2K8 Define XPG7 things.
+// __USE_XOPEN2K8XSI Define XPG7 XSI things.
+// __USE_LARGEFILE Define correct standard I/O things.
+// __USE_LARGEFILE64 Define LFS things with separate names.
+// __USE_FILE_OFFSET64 Define 64bit interface as default.
+// __USE_MISC Define things from 4.3BSD or System V Unix.
+// __USE_ATFILE Define *at interfaces and AT_* constants for them.
+// __USE_DYNAMIC_STACK_SIZE Define correct (but non compile-time constant)
+// MINSIGSTKSZ, SIGSTKSZ and PTHREAD_STACK_MIN.
+// __USE_GNU Define GNU extensions.
+// __USE_FORTIFY_LEVEL Additional security measures used, according to level.
+//
+// The macros `__GNU_LIBRARY__', `__GLIBC__', and `__GLIBC_MINOR__' are
+// defined by this file unconditionally. `__GNU_LIBRARY__' is provided
+// only for compatibility. All new code should use the other symbols
+// to test for features.
+//
+// All macros listed above as possibly being defined by this file are
+// explicitly undefined if they are not explicitly defined.
+// Feature-test macros that are not defined by the user or compiler
+// but are implied by the other feature-test macros defined (or by the
+// lack of any definitions) are defined by the file.
+//
+// ISO C feature test macros depend on the definition of the macro
+// when an affected header is included, not when the first system
+// header is included, and so they are handled in
+// <bits/libc-header-start.h>, which does not have a multiple include
+// guard. Feature test macros that can be handled from the first
+// system header included are handled here.
+
+// Undefine everything, so we get a clean slate.
+
+// Suppress kernel-name space pollution unless user expressedly asks
+// for it.
+
+// Convenience macro to test the version of gcc.
+// Use like this:
+// #if __GNUC_PREREQ (2,8)
+// ... code requiring gcc 2.8 or later ...
+// #endif
+// Note: only works for GCC 2.0 and later, because __GNUC_MINOR__ was
+// added in 2.0.
+
+// Similarly for clang. Features added to GCC after version 4.2 may
+// or may not also be available in clang, and clang's definitions of
+// __GNUC(_MINOR)__ are fixed at 4 and 2 respectively. Not all such
+// features can be queried via __has_extension/__has_feature.
+
+// Whether to use feature set F.
+
+// _BSD_SOURCE and _SVID_SOURCE are deprecated aliases for
+// _DEFAULT_SOURCE. If _DEFAULT_SOURCE is present we do not
+// issue a warning; the expectation is that the source is being
+// transitioned to use the new macro.
+
+// If _GNU_SOURCE was defined by the user, turn on all the other features.
+
+// If nothing (other than _GNU_SOURCE and _DEFAULT_SOURCE) is defined,
+// define _DEFAULT_SOURCE.
+
+// This is to enable the ISO C2X extension.
+
+// This is to enable the ISO C11 extension.
+
+// This is to enable the ISO C99 extension.
+
+// This is to enable the ISO C90 Amendment 1:1995 extension.
+
+// If none of the ANSI/POSIX macros are defined, or if _DEFAULT_SOURCE
+// is defined, use POSIX.1-2008 (or another version depending on
+// _XOPEN_SOURCE).
+
+// Some C libraries once required _REENTRANT and/or _THREAD_SAFE to be
+// defined in all multithreaded code. GNU libc has not required this
+// for many years. We now treat them as compatibility synonyms for
+// _POSIX_C_SOURCE=199506L, which is the earliest level of POSIX with
+// comprehensive support for multithreaded code. Using them never
+// lowers the selected level of POSIX conformance, only raises it.
+
+// Features part to handle 64-bit time_t support.
+// Copyright (C) 2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// We need to know the word size in order to check the time size.
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Bit size of the time_t type at glibc build time, RISC-V case.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// RV32 and RV64 both use 64-bit time_t
+
+// The function 'gets' existed in C89, but is impossible to use
+// safely. It has been removed from ISO C11 and ISO C++14. Note: for
+// compatibility with various implementations of <cstdio>, this test
+// must consider only the value of __cplusplus when compiling C++.
+
+// GNU formerly extended the scanf functions with modified format
+// specifiers %as, %aS, and %a[...] that allocate a buffer for the
+// input using malloc. This extension conflicts with ISO C99, which
+// defines %a as a standalone format specifier that reads a floating-
+// point number; moreover, POSIX.1-2008 provides the same feature
+// using the modifier letter 'm' instead (%ms, %mS, %m[...]).
+//
+// We now follow C99 unless GNU extensions are active and the compiler
+// is specifically in C89 or C++98 mode (strict or not). For
+// instance, with GCC, -std=gnu11 will have C99-compliant scanf with
+// or without -D_GNU_SOURCE, but -std=c89 -D_GNU_SOURCE will have the
+// old extension.
+
+// Get definitions of __STDC_* predefined macros, if the compiler has
+// not preincluded this header automatically.
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// This macro indicates that the installed library is the GNU C Library.
+// For historic reasons the value now is 6 and this will stay from now
+// on. The use of this variable is deprecated. Use __GLIBC__ and
+// __GLIBC_MINOR__ now (see below) when you want to test for a specific
+// GNU C library version and use the values in <gnu/lib-names.h> to get
+// the sonames of the shared libraries.
+
+// Major and minor version number of the GNU C library package. Use
+// these macros to test for features in specific releases.
+
+// This is here only because every header file already includes this one.
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// We are almost always included from features.h.
+
+// The GNU libc does not support any K&R compilers or the traditional mode
+// of ISO C compilers anymore. Check for some of the combinations not
+// supported anymore.
+
+// Some user header file might have defined this before.
+
+// Compilers that lack __has_attribute may object to
+// #if defined __has_attribute && __has_attribute (...)
+// even though they do not need to evaluate the right-hand side of the &&.
+// Similarly for __has_builtin, etc.
+
+// All functions, except those with callbacks or those that
+// synchronize memory, are leaf functions.
+
+// GCC can always grok prototypes. For C++ programs we add throw()
+// to help it optimize the function calls. But this only works with
+// gcc 2.8.x and egcs. For gcc 3.4 and up we even mark C functions
+// as non-throwing using a function attribute since programs can use
+// the -fexceptions options for C code as well.
+
+// These two macros are not used in glibc anymore. They are kept here
+// only because some other projects expect the macros to be defined.
+
+// For these things, GCC behaves the ANSI way normally,
+// and the non-ANSI way under -traditional.
+
+// This is not a typedef so `const __ptr_t' does the right thing.
+
+// C++ needs to know that types and declarations are C, not C++.
+
+// Fortify support.
+
+// Use __builtin_dynamic_object_size at _FORTIFY_SOURCE=3 when available.
+
+// Support for flexible arrays.
+// Headers that should use flexible arrays only if they're "real"
+// (e.g. only if they won't affect sizeof()) should test
+// #if __glibc_c99_flexarr_available.
+
+// __asm__ ("xyz") is used throughout the headers to rename functions
+// at the assembly language level. This is wrapped by the __REDIRECT
+// macro, in order to support compilers that can do this some other
+// way. When compilers don't support asm-names at all, we have to do
+// preprocessor tricks instead (which don't have exactly the right
+// semantics, but it's the best we can do).
+//
+// Example:
+// int __REDIRECT(setpgrp, (__pid_t pid, __pid_t pgrp), setpgid);
+
+//
+// #elif __SOME_OTHER_COMPILER__
+//
+// # define __REDIRECT(name, proto, alias) name proto; _Pragma("let " #name " = " #alias)
+
+// GCC and clang have various useful declarations that can be made with
+// the '__attribute__' syntax. All of the ways we use this do fine if
+// they are omitted for compilers that don't understand it.
+
+// At some point during the gcc 2.96 development the `malloc' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+
+// Tell the compiler which arguments to an allocation function
+// indicate the size of the allocation.
+
+// At some point during the gcc 2.96 development the `pure' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+
+// This declaration tells the compiler that the value is constant.
+
+// At some point during the gcc 3.1 development the `used' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+
+// Since version 3.2, gcc allows marking deprecated functions.
+
+// Since version 4.5, gcc also allows one to specify the message printed
+// when a deprecated function is used. clang claims to be gcc 4.2, but
+// may also support this feature.
+
+// At some point during the gcc 2.8 development the `format_arg' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+// If several `format_arg' attributes are given for the same function, in
+// gcc-3.0 and older, all but the last one are ignored. In newer gccs,
+// all designated arguments are considered.
+
+// At some point during the gcc 2.97 development the `strfmon' format
+// attribute for functions was introduced. We don't want to use it
+// unconditionally (although this would be possible) since it
+// generates warnings.
+
+// The nonnull function attribute marks pointer parameters that
+// must not be NULL.
+
+// The returns_nonnull function attribute marks the return type of the function
+// as always being non-null.
+
+// If fortification mode, we warn about unused results of certain
+// function calls which can lead to problems.
+
+// Forces a function to be always inlined.
+// The Linux kernel defines __always_inline in stddef.h (283d7573), and
+// it conflicts with this definition. Therefore undefine it first to
+// allow either header to be included first.
+
+// Associate error messages with the source location of the call site rather
+// than with the source location inside the function.
+
+// GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
+// inline semantics, unless -fgnu89-inline is used. Using __GNUC_STDC_INLINE__
+// or __GNUC_GNU_INLINE is not a good enough check for gcc because gcc versions
+// older than 4.3 may define these macros and still not guarantee GNU inlining
+// semantics.
+//
+// clang++ identifies itself as gcc-4.2, but has support for GNU inlining
+// semantics, that can be checked for by using the __GNUC_STDC_INLINE_ and
+// __GNUC_GNU_INLINE__ macro definitions.
+
+// GCC 4.3 and above allow passing all anonymous arguments of an
+// __extern_always_inline function to some other vararg function.
+
+// It is possible to compile containing GCC extensions even if GCC is
+// run in pedantic mode if the uses are carefully marked using the
+// `__extension__' keyword. But this is not generally available before
+// version 2.8.
+
+// __restrict is known in EGCS 1.2 and above, and in clang.
+// It works also in C++ mode (outside of arrays), but only when spelled
+// as '__restrict', not 'restrict'.
+
+// ISO C99 also allows to declare arrays as non-overlapping. The syntax is
+// array_name[restrict]
+// GCC 3.1 and clang support this.
+// This syntax is not usable in C++ mode.
+
+// Describes a char array whose address can safely be passed as the first
+// argument to strncpy and strncat, as the char array is not necessarily
+// a NUL-terminated string.
+
+// Undefine (also defined in libc-symbols.h).
+// Copies attributes from the declaration or type referenced by
+// the argument.
+
+// The #ifndef lets Gnulib avoid including these on non-glibc
+// platforms, where the includes typically do not exist.
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Properties of long double type. ldbl-128 version.
+// Copyright (C) 2016-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// long double is distinct from double, so there is nothing to
+// define here.
+
+// __glibc_macro_warning (MESSAGE) issues warning MESSAGE. This is
+// intended for use in preprocessor macros.
+//
+// Note: MESSAGE must be a _single_ string; concatenation of string
+// literals is not supported.
+
+// Generic selection (ISO C11) is a C-only feature, available in GCC
+// since version 4.9. Previous versions do not provide generic
+// selection, even though they might set __STDC_VERSION__ to 201112L,
+// when in -std=c11 mode. Thus, we must check for !defined __GNUC__
+// when testing __STDC_VERSION__ for generic selection support.
+// On the other hand, Clang also defines __GNUC__, so a clang-specific
+// check is required to enable the use of generic selection.
+
+// Designates a 1-based positional argument ref-index of pointer type
+// that can be used to access size-index elements of the pointed-to
+// array according to access mode, or at least one element when
+// size-index is not provided:
+// access (access-mode, <ref-index> [, <size-index>])
+
+// Designates dealloc as a function to call to deallocate objects
+// allocated by the declared function.
+
+// Specify that a function such as setjmp or vfork may return
+// twice.
+
+// If we don't have __REDIRECT, prototypes will be missing if
+// __USE_FILE_OFFSET64 but not __USE_LARGEFILE[64].
+
+// Decide whether we can define 'extern inline' functions in headers.
+
+// This is here only because every header file already includes this one.
+// Get the definitions of all the appropriate `__stub_FUNCTION' symbols.
+// <gnu/stubs.h> contains `#define __stub_FUNCTION' when FUNCTION is a stub
+// that will always return failure (and set errno to ENOSYS).
+// This file is automatically generated.
+// This file selects the right generated file of `__stub_FUNCTION' macros
+// based on the architecture being compiled for.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// This file is automatically generated.
+// It defines a symbol `__stub_FUNCTION' for each function
+// in the C library which is a stub, meaning it will fail
+// every time called, usually setting errno to ENOSYS.
+
+// Define uintN_t types.
+// Copyright (C) 2017-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Bit size of the time_t type at glibc build time, RISC-V case.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// RV32 and RV64 both use 64-bit time_t
+
+// Convenience types.
+type X__u_char = uint8 /* types.h:31:23 */
+type X__u_short = uint16 /* types.h:32:28 */
+type X__u_int = uint32 /* types.h:33:22 */
+type X__u_long = uint64 /* types.h:34:27 */
+
+// Fixed-size types, underlying types depend on word size and compiler.
+type X__int8_t = int8 /* types.h:37:21 */
+type X__uint8_t = uint8 /* types.h:38:23 */
+type X__int16_t = int16 /* types.h:39:26 */
+type X__uint16_t = uint16 /* types.h:40:28 */
+type X__int32_t = int32 /* types.h:41:20 */
+type X__uint32_t = uint32 /* types.h:42:22 */
+type X__int64_t = int64 /* types.h:44:25 */
+type X__uint64_t = uint64 /* types.h:45:27 */
+
+// Smallest types with at least a given width.
+type X__int_least8_t = X__int8_t /* types.h:52:18 */
+type X__uint_least8_t = X__uint8_t /* types.h:53:19 */
+type X__int_least16_t = X__int16_t /* types.h:54:19 */
+type X__uint_least16_t = X__uint16_t /* types.h:55:20 */
+type X__int_least32_t = X__int32_t /* types.h:56:19 */
+type X__uint_least32_t = X__uint32_t /* types.h:57:20 */
+type X__int_least64_t = X__int64_t /* types.h:58:19 */
+type X__uint_least64_t = X__uint64_t /* types.h:59:20 */
+
+// quad_t is also 64 bits.
+type X__quad_t = int64 /* types.h:63:18 */
+type X__u_quad_t = uint64 /* types.h:64:27 */
+
+// Largest integral types.
+type X__intmax_t = int64 /* types.h:72:18 */
+type X__uintmax_t = uint64 /* types.h:73:27 */
+
+// The machine-dependent file <bits/typesizes.h> defines __*_T_TYPE
+// macros for each of the OS types we define below. The definitions
+// of those macros must use the following macros for underlying types.
+// We define __S<SIZE>_TYPE and __U<SIZE>_TYPE for the signed and unsigned
+// variants of each of the following integer types on this machine.
+//
+// 16 -- "natural" 16-bit type (always short)
+// 32 -- "natural" 32-bit type (always int)
+// 64 -- "natural" 64-bit type (long or long long)
+// LONG32 -- 32-bit type, traditionally long
+// QUAD -- 64-bit type, traditionally long long
+// WORD -- natural type of __WORDSIZE bits (int or long)
+// LONGWORD -- type of __WORDSIZE bits, traditionally long
+//
+// We distinguish WORD/LONGWORD, 32/LONG32, and 64/QUAD so that the
+// conventional uses of `long' or `long long' type modifiers match the
+// types we define, even when a less-adorned type would be the same size.
+// This matters for (somewhat) portably writing printf/scanf formats for
+// these types, where using the appropriate l or ll format modifiers can
+// make the typedefs and the formats match up across all GNU platforms. If
+// we used `long' when it's 64 bits where `long long' is expected, then the
+// compiler would warn about the formats not matching the argument types,
+// and the programmer changing them to shut up the compiler would break the
+// program's portability.
+//
+// Here we assume what is presently the case in all the GCC configurations
+// we support: long long is always 64 bits, long is always word/address size,
+// and int is always 32 bits.
+
+// No need to mark the typedef with __extension__.
+// bits/typesizes.h -- underlying types for *_t. For the generic Linux ABI.
+// Copyright (C) 2011-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+// Contributed by Chris Metcalf <cmetcalf@tilera.com>, 2011.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// See <bits/types.h> for the meaning of these macros. This file exists so
+// that <bits/types.h> need not vary across different GNU platforms.
+
+// Tell the libc code that off_t and off64_t are actually the same type
+// for all ABI purposes, even if possibly expressed as different base types
+// for C type-checking purposes.
+
+// Same for ino_t and ino64_t.
+
+// And for __rlim_t and __rlim64_t.
+
+// And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t.
+
+// And for getitimer, setitimer and rusage
+
+// Number of descriptors that can fit in an `fd_set'.
+
+// bits/time64.h -- underlying types for __time64_t. RISC-V version.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Define __TIME64_T_TYPE so that it is always a 64-bit type.
+
+// If we already have 64-bit time type then use it.
+
+type X__dev_t = uint64 /* types.h:145:25 */ // Type of device numbers.
+type X__uid_t = uint32 /* types.h:146:25 */ // Type of user identifications.
+type X__gid_t = uint32 /* types.h:147:25 */ // Type of group identifications.
+type X__ino_t = uint64 /* types.h:148:25 */ // Type of file serial numbers.
+type X__ino64_t = uint64 /* types.h:149:27 */ // Type of file serial numbers (LFS).
+type X__mode_t = uint32 /* types.h:150:26 */ // Type of file attribute bitmasks.
+type X__nlink_t = uint32 /* types.h:151:27 */ // Type of file link counts.
+type X__off_t = int64 /* types.h:152:25 */ // Type of file sizes and offsets.
+type X__off64_t = int64 /* types.h:153:27 */ // Type of file sizes and offsets (LFS).
+type X__pid_t = int32 /* types.h:154:25 */ // Type of process identifications.
+type X__fsid_t = struct{ F__val [2]int32 } /* types.h:155:26 */ // Type of file system IDs.
+type X__clock_t = int64 /* types.h:156:27 */ // Type of CPU usage counts.
+type X__rlim_t = uint64 /* types.h:157:26 */ // Type for resource measurement.
+type X__rlim64_t = uint64 /* types.h:158:28 */ // Type for resource measurement (LFS).
+type X__id_t = uint32 /* types.h:159:24 */ // General type for IDs.
+type X__time_t = int64 /* types.h:160:26 */ // Seconds since the Epoch.
+type X__useconds_t = uint32 /* types.h:161:30 */ // Count of microseconds.
+type X__suseconds_t = int64 /* types.h:162:31 */ // Signed count of microseconds.
+type X__suseconds64_t = int64 /* types.h:163:33 */
+
+type X__daddr_t = int32 /* types.h:165:27 */ // The type of a disk address.
+type X__key_t = int32 /* types.h:166:25 */ // Type of an IPC key.
+
+// Clock ID used in clock and timer functions.
+type X__clockid_t = int32 /* types.h:169:29 */
+
+// Timer ID returned by `timer_create'.
+type X__timer_t = uintptr /* types.h:172:12 */
+
+// Type to represent block size.
+type X__blksize_t = int32 /* types.h:175:29 */
+
+// Types from the Large File Support interface.
+
+// Type to count number of disk blocks.
+type X__blkcnt_t = int64 /* types.h:180:28 */
+type X__blkcnt64_t = int64 /* types.h:181:30 */
+
+// Type to count file system blocks.
+type X__fsblkcnt_t = uint64 /* types.h:184:30 */
+type X__fsblkcnt64_t = uint64 /* types.h:185:32 */
+
+// Type to count file system nodes.
+type X__fsfilcnt_t = uint64 /* types.h:188:30 */
+type X__fsfilcnt64_t = uint64 /* types.h:189:32 */
+
+// Type of miscellaneous file system fields.
+type X__fsword_t = int64 /* types.h:192:28 */
+
+type X__ssize_t = int64 /* types.h:194:27 */ // Type of a byte count, or error.
+
+// Signed long type used in system calls.
+type X__syscall_slong_t = int64 /* types.h:197:33 */
+// Unsigned long type used in system calls.
+type X__syscall_ulong_t = uint64 /* types.h:199:33 */
+
+// These few don't really vary by system, they always correspond
+// to one of the other defined types.
+type X__loff_t = X__off64_t /* types.h:203:19 */ // Type of file sizes and offsets (LFS).
+type X__caddr_t = uintptr /* types.h:204:14 */
+
+// Duplicates info from stdint.h but this is used in unistd.h.
+type X__intptr_t = int64 /* types.h:207:25 */
+
+// Duplicate info from sys/socket.h.
+type X__socklen_t = uint32 /* types.h:210:23 */
+
+// C99: An integer type that can be accessed as an atomic entity,
+// even in the presence of asynchronous interrupts.
+// It is not currently necessary for this to be machine-specific.
+type X__sig_atomic_t = int32 /* types.h:215:13 */
+
+// Seconds since the Epoch, visible to user code when time_t is too
+// narrow only for consistency with the old way of widening too-narrow
+// types. User code should never use __time64_t.
+
+type Uint8_t = X__uint8_t /* stdint-uintn.h:24:19 */
+type Uint16_t = X__uint16_t /* stdint-uintn.h:25:20 */
+type Uint32_t = X__uint32_t /* stdint-uintn.h:26:20 */
+type Uint64_t = X__uint64_t /* stdint-uintn.h:27:20 */
+
+// Wide character type.
+// Locale-writers should change this as necessary to
+// be big enough to hold unique values not between 0 and 127,
+// and not (wchar_t) -1, for each defined multibyte character.
+
+// Define this type if we are doing the whole job,
+// or if we want this type in particular.
+
+// A null pointer constant.
+
+// Structure for scatter/gather I/O.
+type Iovec = struct {
+ Fiov_base uintptr
+ Fiov_len Size_t
+} /* struct_iovec.h:26:1 */
+
+// Copyright (C) 1989-2021 Free Software Foundation, Inc.
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+//
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+// <http://www.gnu.org/licenses/>.
+
+// ISO C Standard: 7.17 Common definitions <stddef.h>
+
+// Any one of these symbols __need_* means that GNU libc
+// wants us just to define one data type. So don't define
+// the symbols that indicate this file's entire job has been done.
+
+// This avoids lossage on SunOS but only if stdtypes.h comes first.
+// There's no way to win with the other order! Sun lossage.
+
+// Sequent's header files use _PTRDIFF_T_ in some conflicting way.
+// Just ignore it.
+
+// On VxWorks, <type/vxTypesBase.h> may have defined macros like
+// _TYPE_size_t which will typedef size_t. fixincludes patched the
+// vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is
+// not defined, and so that defining this macro defines _GCC_SIZE_T.
+// If we find that the macros are still defined at this point, we must
+// invoke them so that the type is defined as expected.
+
+// In case nobody has defined these types, but we aren't running under
+// GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and
+// __WCHAR_TYPE__ have reasonable values. This can happen if the
+// parts of GCC is compiled by an older compiler, that actually
+// include gstddef.h, such as collect2.
+
+// Signed type of difference of two pointers.
+
+// Define this type if we are doing the whole job,
+// or if we want this type in particular.
+
+// Unsigned type of `sizeof' something.
+
+// Define this type if we are doing the whole job,
+// or if we want this type in particular.
+
+// Wide character type.
+// Locale-writers should change this as necessary to
+// be big enough to hold unique values not between 0 and 127,
+// and not (wchar_t) -1, for each defined multibyte character.
+
+// Define this type if we are doing the whole job,
+// or if we want this type in particular.
+
+// A null pointer constant.
+
+// This operating system-specific header file defines the SOCK_*, PF_*,
+// AF_*, MSG_*, SOL_*, and SO_* constants, and the `struct sockaddr',
+// `struct msghdr', and `struct linger' types.
+// System-specific socket constants and types. Linux version.
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Copyright (C) 1989-2021 Free Software Foundation, Inc.
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+//
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+// <http://www.gnu.org/licenses/>.
+
+// ISO C Standard: 7.17 Common definitions <stddef.h>
+
+// Any one of these symbols __need_* means that GNU libc
+// wants us just to define one data type. So don't define
+// the symbols that indicate this file's entire job has been done.
+
+// This avoids lossage on SunOS but only if stdtypes.h comes first.
+// There's no way to win with the other order! Sun lossage.
+
+// Sequent's header files use _PTRDIFF_T_ in some conflicting way.
+// Just ignore it.
+
+// On VxWorks, <type/vxTypesBase.h> may have defined macros like
+// _TYPE_size_t which will typedef size_t. fixincludes patched the
+// vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is
+// not defined, and so that defining this macro defines _GCC_SIZE_T.
+// If we find that the macros are still defined at this point, we must
+// invoke them so that the type is defined as expected.
+
+// In case nobody has defined these types, but we aren't running under
+// GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and
+// __WCHAR_TYPE__ have reasonable values. This can happen if the
+// parts of GCC is compiled by an older compiler, that actually
+// include gstddef.h, such as collect2.
+
+// Signed type of difference of two pointers.
+
+// Define this type if we are doing the whole job,
+// or if we want this type in particular.
+
+// Unsigned type of `sizeof' something.
+
+// Define this type if we are doing the whole job,
+// or if we want this type in particular.
+
+// Wide character type.
+// Locale-writers should change this as necessary to
+// be big enough to hold unique values not between 0 and 127,
+// and not (wchar_t) -1, for each defined multibyte character.
+
+// Define this type if we are doing the whole job,
+// or if we want this type in particular.
+
+// A null pointer constant.
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// POSIX Standard: 2.6 Primitive System Data Types <sys/types.h>
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+type U_char = X__u_char /* types.h:33:18 */
+type U_short = X__u_short /* types.h:34:19 */
+type U_int = X__u_int /* types.h:35:17 */
+type U_long = X__u_long /* types.h:36:18 */
+type Quad_t = X__quad_t /* types.h:37:18 */
+type U_quad_t = X__u_quad_t /* types.h:38:20 */
+type Fsid_t = X__fsid_t /* types.h:39:18 */
+type Loff_t = X__loff_t /* types.h:42:18 */
+
+type Ino_t = X__ino64_t /* types.h:49:19 */
+
+type Dev_t = X__dev_t /* types.h:59:17 */
+
+type Gid_t = X__gid_t /* types.h:64:17 */
+
+type Mode_t = X__mode_t /* types.h:69:18 */
+
+type Nlink_t = X__nlink_t /* types.h:74:19 */
+
+type Uid_t = X__uid_t /* types.h:79:17 */
+
+type Off_t = X__off64_t /* types.h:87:19 */
+
+type Pid_t = X__pid_t /* types.h:97:17 */
+
+type Id_t = X__id_t /* types.h:103:16 */
+
+type Ssize_t = X__ssize_t /* types.h:108:19 */
+
+type Daddr_t = X__daddr_t /* types.h:114:19 */
+type Caddr_t = X__caddr_t /* types.h:115:19 */
+
+type Key_t = X__key_t /* types.h:121:17 */
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Returned by `clock'.
+type Clock_t = X__clock_t /* clock_t.h:7:19 */
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Clock ID used in clock and timer functions.
+type Clockid_t = X__clockid_t /* clockid_t.h:7:21 */
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Returned by `time'.
+type Time_t = X__time_t /* time_t.h:10:18 */
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Timer ID returned by `timer_create'.
+type Timer_t = X__timer_t /* timer_t.h:7:19 */
+
+// Copyright (C) 1989-2021 Free Software Foundation, Inc.
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+//
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+// <http://www.gnu.org/licenses/>.
+
+// ISO C Standard: 7.17 Common definitions <stddef.h>
+
+// Any one of these symbols __need_* means that GNU libc
+// wants us just to define one data type. So don't define
+// the symbols that indicate this file's entire job has been done.
+
+// This avoids lossage on SunOS but only if stdtypes.h comes first.
+// There's no way to win with the other order! Sun lossage.
+
+// Sequent's header files use _PTRDIFF_T_ in some conflicting way.
+// Just ignore it.
+
+// On VxWorks, <type/vxTypesBase.h> may have defined macros like
+// _TYPE_size_t which will typedef size_t. fixincludes patched the
+// vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is
+// not defined, and so that defining this macro defines _GCC_SIZE_T.
+// If we find that the macros are still defined at this point, we must
+// invoke them so that the type is defined as expected.
+
+// In case nobody has defined these types, but we aren't running under
+// GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and
+// __WCHAR_TYPE__ have reasonable values. This can happen if the
+// parts of GCC is compiled by an older compiler, that actually
+// include gstddef.h, such as collect2.
+
+// Signed type of difference of two pointers.
+
+// Define this type if we are doing the whole job,
+// or if we want this type in particular.
+
+// Unsigned type of `sizeof' something.
+
+// Define this type if we are doing the whole job,
+// or if we want this type in particular.
+
+// Wide character type.
+// Locale-writers should change this as necessary to
+// be big enough to hold unique values not between 0 and 127,
+// and not (wchar_t) -1, for each defined multibyte character.
+
+// Define this type if we are doing the whole job,
+// or if we want this type in particular.
+
+// A null pointer constant.
+
+// Old compatibility names for C types.
+type Ulong = uint64 /* types.h:148:27 */
+type Ushort = uint16 /* types.h:149:28 */
+type Uint = uint32 /* types.h:150:22 */
+
+// These size-specific names are used by some of the inet code.
+
+// Define intN_t types.
+// Copyright (C) 2017-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+type Int8_t = X__int8_t /* stdint-intn.h:24:18 */
+type Int16_t = X__int16_t /* stdint-intn.h:25:19 */
+type Int32_t = X__int32_t /* stdint-intn.h:26:19 */
+type Int64_t = X__int64_t /* stdint-intn.h:27:19 */
+
+// These were defined by ISO C without the first `_'.
+type U_int8_t = X__uint8_t /* types.h:158:19 */
+type U_int16_t = X__uint16_t /* types.h:159:20 */
+type U_int32_t = X__uint32_t /* types.h:160:20 */
+type U_int64_t = X__uint64_t /* types.h:161:20 */
+
+type Register_t = int32 /* types.h:164:13 */
+
+// It also defines `fd_set' and the FD_* macros for `select'.
+// `fd_set' type and related macros, and `select'/`pselect' declarations.
+// Copyright (C) 1996-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// POSIX 1003.1g: 6.2 Select from File Descriptor Sets <sys/select.h>
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Get definition of needed basic types.
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Get __FD_* definitions.
+// Copyright (C) 1997-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// We don't use `memset' because this would require a prototype and
+// the array isn't too big.
+
+// Get sigset_t.
+
+type X__sigset_t = struct{ F__val [16]uint64 } /* __sigset_t.h:8:3 */
+
+// A set of signals to be blocked, unblocked, or waited for.
+type Sigset_t = X__sigset_t /* sigset_t.h:7:20 */
+
+// Get definition of timer specification structures.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// A time value that is accurate to the nearest
+// microsecond but also has a range of years.
+type Timeval = struct {
+ Ftv_sec X__time_t
+ Ftv_usec X__suseconds_t
+} /* struct_timeval.h:8:1 */
+
+// NB: Include guard matches what <linux/time.h> uses.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Endian macros for string.h functions
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <http://www.gnu.org/licenses/>.
+
+// POSIX.1b structure for a time value. This is like a `struct timeval' but
+// has nanoseconds instead of microseconds.
+type Timespec = struct {
+ Ftv_sec X__time_t
+ Ftv_nsec X__syscall_slong_t
+} /* struct_timespec.h:11:1 */
+
+type Suseconds_t = X__suseconds_t /* select.h:43:23 */
+
+// The fd_set member is required to be an array of longs.
+type X__fd_mask = int64 /* select.h:49:18 */
+
+// Some versions of <linux/posix_types.h> define this macros.
+// It's easier to assume 8-bit bytes than to get CHAR_BIT.
+
+// fd_set for select and pselect.
+type Fd_set = struct{ F__fds_bits [16]X__fd_mask } /* select.h:70:5 */
+
+// Maximum number of file descriptors in `fd_set'.
+
+// Sometimes the fd_set member is assumed to have this type.
+type Fd_mask = X__fd_mask /* select.h:77:19 */
+
+// Define some inlines helping to catch common problems.
+
+type Blksize_t = X__blksize_t /* types.h:185:21 */
+
+// Types from the Large File Support interface.
+type Blkcnt_t = X__blkcnt64_t /* types.h:205:22 */ // Type to count number of disk blocks.
+type Fsblkcnt_t = X__fsblkcnt64_t /* types.h:209:24 */ // Type to count file system blocks.
+type Fsfilcnt_t = X__fsfilcnt64_t /* types.h:213:24 */ // Type to count file system inodes.
+
+// Now add the thread types.
+// Declaration of common pthread types for all architectures.
+// Copyright (C) 2017-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// For internal mutex and condition variable definitions.
+// Common threading primitives definitions for both POSIX and C11.
+// Copyright (C) 2017-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Arch-specific definitions. Each architecture must define the following
+// macros to define the expected sizes of pthread data types:
+//
+// __SIZEOF_PTHREAD_ATTR_T - size of pthread_attr_t.
+// __SIZEOF_PTHREAD_MUTEX_T - size of pthread_mutex_t.
+// __SIZEOF_PTHREAD_MUTEXATTR_T - size of pthread_mutexattr_t.
+// __SIZEOF_PTHREAD_COND_T - size of pthread_cond_t.
+// __SIZEOF_PTHREAD_CONDATTR_T - size of pthread_condattr_t.
+// __SIZEOF_PTHREAD_RWLOCK_T - size of pthread_rwlock_t.
+// __SIZEOF_PTHREAD_RWLOCKATTR_T - size of pthread_rwlockattr_t.
+// __SIZEOF_PTHREAD_BARRIER_T - size of pthread_barrier_t.
+// __SIZEOF_PTHREAD_BARRIERATTR_T - size of pthread_barrierattr_t.
+//
+// The additional macro defines any constraint for the lock alignment
+// inside the thread structures:
+//
+// __LOCK_ALIGNMENT - for internal lock/futex usage.
+//
+// Same idea but for the once locking primitive:
+//
+// __ONCE_ALIGNMENT - for pthread_once_t/once_flag definition.
+
+// Machine-specific pthread type layouts. RISC-V version.
+// Copyright (C) 2011-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Endian macros for string.h functions
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <http://www.gnu.org/licenses/>.
+
+// Common definition of pthread_mutex_t.
+
+type X__pthread_internal_list = struct {
+ F__prev uintptr
+ F__next uintptr
+} /* thread-shared-types.h:49:9 */
+
+// Type to count file system inodes.
+
+// Now add the thread types.
+// Declaration of common pthread types for all architectures.
+// Copyright (C) 2017-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// For internal mutex and condition variable definitions.
+// Common threading primitives definitions for both POSIX and C11.
+// Copyright (C) 2017-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Arch-specific definitions. Each architecture must define the following
+// macros to define the expected sizes of pthread data types:
+//
+// __SIZEOF_PTHREAD_ATTR_T - size of pthread_attr_t.
+// __SIZEOF_PTHREAD_MUTEX_T - size of pthread_mutex_t.
+// __SIZEOF_PTHREAD_MUTEXATTR_T - size of pthread_mutexattr_t.
+// __SIZEOF_PTHREAD_COND_T - size of pthread_cond_t.
+// __SIZEOF_PTHREAD_CONDATTR_T - size of pthread_condattr_t.
+// __SIZEOF_PTHREAD_RWLOCK_T - size of pthread_rwlock_t.
+// __SIZEOF_PTHREAD_RWLOCKATTR_T - size of pthread_rwlockattr_t.
+// __SIZEOF_PTHREAD_BARRIER_T - size of pthread_barrier_t.
+// __SIZEOF_PTHREAD_BARRIERATTR_T - size of pthread_barrierattr_t.
+//
+// The additional macro defines any constraint for the lock alignment
+// inside the thread structures:
+//
+// __LOCK_ALIGNMENT - for internal lock/futex usage.
+//
+// Same idea but for the once locking primitive:
+//
+// __ONCE_ALIGNMENT - for pthread_once_t/once_flag definition.
+
+// Machine-specific pthread type layouts. RISC-V version.
+// Copyright (C) 2011-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Endian macros for string.h functions
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <http://www.gnu.org/licenses/>.
+
+// Common definition of pthread_mutex_t.
+
+type X__pthread_list_t = X__pthread_internal_list /* thread-shared-types.h:53:3 */
+
+type X__pthread_internal_slist = struct{ F__next uintptr } /* thread-shared-types.h:55:9 */
+
+type X__pthread_slist_t = X__pthread_internal_slist /* thread-shared-types.h:58:3 */
+
+// Arch-specific mutex definitions. A generic implementation is provided
+// by sysdeps/nptl/bits/struct_mutex.h. If required, an architecture
+// can override it by defining:
+//
+// 1. struct __pthread_mutex_s (used on both pthread_mutex_t and mtx_t
+// definition). It should contains at least the internal members
+// defined in the generic version.
+//
+// 2. __LOCK_ALIGNMENT for any extra attribute for internal lock used with
+// atomic operations.
+//
+// 3. The macro __PTHREAD_MUTEX_INITIALIZER used for static initialization.
+// It should initialize the mutex internal flag.
+
+// Default mutex implementation struct definitions.
+// Copyright (C) 2019-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <http://www.gnu.org/licenses/>.
+
+// Generic struct for both POSIX and C11 mutexes. New ports are expected
+// to use the default layout, however architecture can redefine it to
+// add arch-specific extension (such as lock-elision). The struct have
+// a size of 32 bytes on LP32 and 40 bytes on LP64 architectures.
+
+type X__pthread_mutex_s = struct {
+ F__lock int32
+ F__count uint32
+ F__owner int32
+ F__nusers uint32
+ F__kind int32
+ F__spins int32
+ F__list X__pthread_list_t
+} /* struct_mutex.h:27:1 */
+
+// Arch-sepecific read-write lock definitions. A generic implementation is
+// provided by struct_rwlock.h. If required, an architecture can override it
+// by defining:
+//
+// 1. struct __pthread_rwlock_arch_t (used on pthread_rwlock_t definition).
+// It should contain at least the internal members defined in the
+// generic version.
+//
+// 2. The macro __PTHREAD_RWLOCK_INITIALIZER used for static initialization.
+// It should initialize the rwlock internal type.
+
+// RISC-V internal rwlock struct definitions.
+// Copyright (C) 2019-2021 Free Software Foundation, Inc.
+//
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// There is a lot of padding in this structure. While it's not strictly
+// necessary on RISC-V, we're going to leave it in to be on the safe side in
+// case it's needed in the future. Most other architectures have the padding,
+// so this gives us the same extensibility as everyone else has.
+type X__pthread_rwlock_arch_t = struct {
+ F__readers uint32
+ F__writers uint32
+ F__wrphase_futex uint32
+ F__writers_futex uint32
+ F__pad3 uint32
+ F__pad4 uint32
+ F__cur_writer int32
+ F__shared int32
+ F__pad1 uint64
+ F__pad2 uint64
+ F__flags uint32
+ F__ccgo_pad1 [4]byte
+} /* struct_rwlock.h:27:1 */
+
+// Common definition of pthread_cond_t.
+
+type X__pthread_cond_s = struct {
+ F__0 struct{ F__wseq uint64 }
+ F__8 struct{ F__g1_start uint64 }
+ F__g_refs [2]uint32
+ F__g_size [2]uint32
+ F__g1_orig_size uint32
+ F__wrefs uint32
+ F__g_signals [2]uint32
+} /* thread-shared-types.h:92:1 */
+
+type X__tss_t = uint32 /* thread-shared-types.h:119:22 */
+type X__thrd_t = uint64 /* thread-shared-types.h:120:27 */
+
+type X__once_flag = struct{ F__data int32 } /* thread-shared-types.h:125:3 */
+
+// Thread identifiers. The structure of the attribute type is not
+// exposed on purpose.
+type Pthread_t = uint64 /* pthreadtypes.h:27:27 */
+
+// Data structures for mutex handling. The structure of the attribute
+// type is not exposed on purpose.
+type Pthread_mutexattr_t = struct {
+ F__ccgo_pad1 [0]uint32
+ F__size [4]uint8
+} /* pthreadtypes.h:36:3 */
+
+// Data structure for condition variable handling. The structure of
+// the attribute type is not exposed on purpose.
+type Pthread_condattr_t = struct {
+ F__ccgo_pad1 [0]uint32
+ F__size [4]uint8
+} /* pthreadtypes.h:45:3 */
+
+// Keys for thread-specific data
+type Pthread_key_t = uint32 /* pthreadtypes.h:49:22 */
+
+// Once-only execution
+type Pthread_once_t = int32 /* pthreadtypes.h:53:30 */
+
+type Pthread_attr_t1 = struct {
+ F__ccgo_pad1 [0]uint64
+ F__size [56]uint8
+} /* pthreadtypes.h:56:1 */
+
+type Pthread_attr_t = Pthread_attr_t1 /* pthreadtypes.h:62:30 */
+
+type Pthread_mutex_t = struct{ F__data X__pthread_mutex_s } /* pthreadtypes.h:72:3 */
+
+type Pthread_cond_t = struct{ F__data X__pthread_cond_s } /* pthreadtypes.h:80:3 */
+
+// Data structure for reader-writer lock variable handling. The
+// structure of the attribute type is deliberately not exposed.
+type Pthread_rwlock_t = struct{ F__data X__pthread_rwlock_arch_t } /* pthreadtypes.h:91:3 */
+
+type Pthread_rwlockattr_t = struct {
+ F__ccgo_pad1 [0]uint64
+ F__size [8]uint8
+} /* pthreadtypes.h:97:3 */
+
+// POSIX spinlock data type.
+type Pthread_spinlock_t = int32 /* pthreadtypes.h:103:22 */
+
+// POSIX barriers data type. The structure of the type is
+// deliberately not exposed.
+type Pthread_barrier_t = struct {
+ F__ccgo_pad1 [0]uint64
+ F__size [32]uint8
+} /* pthreadtypes.h:112:3 */
+
+type Pthread_barrierattr_t = struct {
+ F__ccgo_pad1 [0]uint32
+ F__size [4]uint8
+} /* pthreadtypes.h:118:3 */
+
+// Type for length arguments in socket calls.
+type Socklen_t = X__socklen_t /* socket.h:33:21 */
+
+// Protocol families.
+
+// Address families.
+
+// Socket level values. Others are defined in the appropriate headers.
+//
+// XXX These definitions also should go into the appropriate headers as
+// far as they are available.
+
+// Maximum queue length specifiable by listen.
+
+// Get the definition of the macro to define the common sockaddr members.
+// Definition of struct sockaddr_* common members and sizes, generic version.
+// Copyright (C) 1995-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/socket.h> instead.
+
+// POSIX.1g specifies this type name for the `sa_family' member.
+type Sa_family_t = uint16 /* sockaddr.h:28:28 */
+
+// This macro is used to declare the initial common members
+// of the data types used for socket addresses, `struct sockaddr',
+// `struct sockaddr_in', `struct sockaddr_un', etc.
+
+// Size of struct sockaddr_storage.
+
+// Structure describing a generic socket address.
+type Sockaddr = struct {
+ Fsa_family Sa_family_t
+ Fsa_data [14]uint8
+} /* socket.h:178:1 */
+
+// Structure large enough to hold any socket address (with the historical
+// exception of AF_UNIX).
+
+type Sockaddr_storage = struct {
+ Fss_family Sa_family_t
+ F__ss_padding [118]uint8
+ F__ss_align uint64
+} /* socket.h:191:1 */
+
+// Structure describing messages sent by
+// `sendmsg' and received by `recvmsg'.
+type Msghdr = struct {
+ Fmsg_name uintptr
+ Fmsg_namelen Socklen_t
+ F__ccgo_pad1 [4]byte
+ Fmsg_iov uintptr
+ Fmsg_iovlen Size_t
+ Fmsg_control uintptr
+ Fmsg_controllen Size_t
+ Fmsg_flags int32
+ F__ccgo_pad2 [4]byte
+} /* socket.h:257:1 */
+
+// Structure used for storage of ancillary data object information.
+type Cmsghdr = struct {
+ F__ccgo_pad1 [0]uint64
+ Fcmsg_len Size_t
+ Fcmsg_level int32
+ Fcmsg_type int32
+} /* socket.h:275:1 */
+
+// SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
+
+// SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
+
+// SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
+
+// This allows for 1024 file descriptors: if NR_OPEN is ever grown
+// beyond that you'll have to change this too. But 1024 fd's seem to be
+// enough even for such "real" unices like OSF/1, so hopefully this is
+// one limit that doesn't have to be changed [again].
+//
+// Note that POSIX wants the FD_CLEAR(fd,fdsetp) defines to be in
+// <sys/time.h> (and thus <linux/time.h>) - but this is a more logical
+// place for them. Solved by having dummy defines in <sys/time.h>.
+
+// This macro may have been defined in <gnu/types.h>. But we always
+// use the one here.
+
+type X__kernel_fd_set = struct{ Ffds_bits [16]uint64 } /* posix_types.h:27:3 */
+
+// Type of a signal handler.
+type X__kernel_sighandler_t = uintptr /* posix_types.h:30:14 */
+
+// Type of a SYSV IPC key.
+type X__kernel_key_t = int32 /* posix_types.h:33:13 */
+type X__kernel_mqd_t = int32 /* posix_types.h:34:13 */
+
+// SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
+
+// SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note
+// Copyright (C) 2012 ARM Ltd.
+// Copyright (C) 2015 Regents of the University of California
+
+// SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
+
+// There seems to be no way of detecting this automatically from user
+// space, so 64 bit architectures should override this in their
+// bitsperlong.h. In particular, an architecture that supports
+// both 32 and 64 bit user space must not rely on CONFIG_64BIT
+// to decide it, but rather check a compiler provided macro.
+
+// This file is generally used by user-level software, so you need to
+// be a little careful about namespace pollution etc.
+//
+// First the types that are often defined in different ways across
+// architectures, so that you can override them.
+
+type X__kernel_long_t = int64 /* posix_types.h:15:15 */
+type X__kernel_ulong_t = uint64 /* posix_types.h:16:23 */
+
+type X__kernel_ino_t = X__kernel_ulong_t /* posix_types.h:20:26 */
+
+type X__kernel_mode_t = uint32 /* posix_types.h:24:22 */
+
+type X__kernel_pid_t = int32 /* posix_types.h:28:14 */
+
+type X__kernel_ipc_pid_t = int32 /* posix_types.h:32:14 */
+
+type X__kernel_uid_t = uint32 /* posix_types.h:36:22 */
+type X__kernel_gid_t = uint32 /* posix_types.h:37:22 */
+
+type X__kernel_suseconds_t = X__kernel_long_t /* posix_types.h:41:26 */
+
+type X__kernel_daddr_t = int32 /* posix_types.h:45:14 */
+
+type X__kernel_uid32_t = uint32 /* posix_types.h:49:22 */
+type X__kernel_gid32_t = uint32 /* posix_types.h:50:22 */
+
+type X__kernel_old_uid_t = X__kernel_uid_t /* posix_types.h:54:24 */
+type X__kernel_old_gid_t = X__kernel_gid_t /* posix_types.h:55:24 */
+
+type X__kernel_old_dev_t = uint32 /* posix_types.h:59:22 */
+
+// Most 32 bit architectures use "unsigned int" size_t,
+// and all 64 bit architectures use "unsigned long" size_t.
+type X__kernel_size_t = X__kernel_ulong_t /* posix_types.h:72:26 */
+type X__kernel_ssize_t = X__kernel_long_t /* posix_types.h:73:25 */
+type X__kernel_ptrdiff_t = X__kernel_long_t /* posix_types.h:74:25 */
+
+type X__kernel_fsid_t = struct{ Fval [2]int32 } /* posix_types.h:81:3 */
+
+// anything below here should be completely generic
+type X__kernel_off_t = X__kernel_long_t /* posix_types.h:87:25 */
+type X__kernel_loff_t = int64 /* posix_types.h:88:19 */
+type X__kernel_old_time_t = X__kernel_long_t /* posix_types.h:89:25 */
+type X__kernel_time_t = X__kernel_long_t /* posix_types.h:90:25 */
+type X__kernel_time64_t = int64 /* posix_types.h:91:19 */
+type X__kernel_clock_t = X__kernel_long_t /* posix_types.h:92:25 */
+type X__kernel_timer_t = int32 /* posix_types.h:93:14 */
+type X__kernel_clockid_t = int32 /* posix_types.h:94:14 */
+type X__kernel_caddr_t = uintptr /* posix_types.h:95:14 */
+type X__kernel_uid16_t = uint16 /* posix_types.h:96:24 */
+type X__kernel_gid16_t = uint16 /* posix_types.h:97:24 */
+
+// SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
+
+// Socket-level I/O control calls.
+
+// For setsockopt(2)
+
+// Security levels - as per NRL IPv6 - don't actually do anything
+
+// Socket filtering
+
+// Instruct lower device to use last 4-bytes of skb data as FCS
+
+// on 64-bit and x32, avoid the ?: operator
+
+// Structure used to manipulate the SO_LINGER option.
+type Linger = struct {
+ Fl_onoff int32
+ Fl_linger int32
+} /* socket.h:361:1 */
+
+// This is the 4.3 BSD `struct sockaddr' format, which is used as wire
+// format in the grotty old 4.3 `talk' protocol.
+type Osockaddr = struct {
+ Fsa_family uint16
+ Fsa_data [14]uint8
+} /* struct_osockaddr.h:6:1 */
+
+// Define some macros helping to catch buffer overflows.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Internet address.
+type In_addr_t = Uint32_t /* in.h:30:18 */
+type In_addr = struct{ Fs_addr In_addr_t } /* in.h:31:1 */
+
+// Get system-specific definitions.
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Linux version.
+
+// If the application has already included linux/in6.h from a linux-based
+// kernel then we will not define the IPv6 IPPROTO_* defines, in6_addr (nor the
+// defines), sockaddr_in6, or ipv6_mreq. Same for in6_ptkinfo or ip6_mtuinfo
+// in linux/ipv6.h. The ABI used by the linux-kernel and glibc match exactly.
+// Neither the linux kernel nor glibc should break this ABI without coordination.
+// In upstream kernel 56c176c9 the _UAPI prefix was stripped so we need to check
+// for _LINUX_IN6_H and _IPV6_H now, and keep checking the old versions for
+// maximum backwards compatibility.
+
+// Options for use with `getsockopt' and `setsockopt' at the IP level.
+// The first word in the comment at the right is the data type used;
+// "bool" means a boolean value stored in an `int'.
+// For BSD compatibility.
+
+// TProxy original addresses
+
+// IP_MTU_DISCOVER arguments.
+// Always use interface mtu (ignores dst pmtu) but don't set DF flag.
+// Also incoming ICMP frag_needed notifications will be ignored on
+// this socket to prevent accepting spoofed ones.
+// Like IP_PMTUDISC_INTERFACE but allow packets to be fragmented.
+
+// To select the IP level.
+
+// Structure used to describe IP options for IP_OPTIONS and IP_RETOPTS.
+// The `ip_dst' field is used for the first-hop gateway when using a
+// source route (this gets put into the header proper).
+type Ip_opts = struct {
+ Fip_dst struct{ Fs_addr In_addr_t }
+ Fip_opts [40]uint8
+} /* in.h:143:1 */
+
+// Like `struct ip_mreq' but including interface specification by index.
+type Ip_mreqn = struct {
+ Fimr_multiaddr struct{ Fs_addr In_addr_t }
+ Fimr_address struct{ Fs_addr In_addr_t }
+ Fimr_ifindex int32
+} /* in.h:150:1 */
+
+// Structure used for IP_PKTINFO.
+type In_pktinfo = struct {
+ Fipi_ifindex int32
+ Fipi_spec_dst struct{ Fs_addr In_addr_t }
+ Fipi_addr struct{ Fs_addr In_addr_t }
+} /* in.h:158:1 */
+
+// Type to represent a port.
+type In_port_t = Uint16_t /* in.h:123:18 */
+
+// Definitions of the bits in an Internet address integer.
+//
+// On subnets, host and network parts are found according to
+// the subnet mask, not these masks.
+
+// Address to accept any incoming messages.
+// Address to send to all hosts.
+// Address indicating an error return.
+
+// Network number for local host loopback.
+// Address to loopback in software to local host.
+
+// Defines for Multicast INADDR.
+
+// IPv6 address
+type In6_addr = struct {
+ F__in6_u struct {
+ F__ccgo_pad1 [0]uint32
+ F__u6_addr8 [16]Uint8_t
+ }
+} /* in.h:216:1 */
+
+// ::1
+
+// Structure describing an Internet socket address.
+type Sockaddr_in = struct {
+ Fsin_family Sa_family_t
+ Fsin_port In_port_t
+ Fsin_addr struct{ Fs_addr In_addr_t }
+ Fsin_zero [8]uint8
+} /* in.h:242:1 */
+
+// Ditto, for IPv6.
+type Sockaddr_in6 = struct {
+ Fsin6_family Sa_family_t
+ Fsin6_port In_port_t
+ Fsin6_flowinfo Uint32_t
+ Fsin6_addr struct {
+ F__in6_u struct {
+ F__ccgo_pad1 [0]uint32
+ F__u6_addr8 [16]Uint8_t
+ }
+ }
+ Fsin6_scope_id Uint32_t
+} /* in.h:257:1 */
+
+// IPv4 multicast request.
+type Ip_mreq = struct {
+ Fimr_multiaddr struct{ Fs_addr In_addr_t }
+ Fimr_interface struct{ Fs_addr In_addr_t }
+} /* in.h:269:1 */
+
+type Ip_mreq_source = struct {
+ Fimr_multiaddr struct{ Fs_addr In_addr_t }
+ Fimr_interface struct{ Fs_addr In_addr_t }
+ Fimr_sourceaddr struct{ Fs_addr In_addr_t }
+} /* in.h:278:1 */
+
+// Likewise, for IPv6.
+type Ipv6_mreq = struct {
+ Fipv6mr_multiaddr struct {
+ F__in6_u struct {
+ F__ccgo_pad1 [0]uint32
+ F__u6_addr8 [16]Uint8_t
+ }
+ }
+ Fipv6mr_interface uint32
+} /* in.h:293:1 */
+
+// Multicast group request.
+type Group_req = struct {
+ Fgr_interface Uint32_t
+ F__ccgo_pad1 [4]byte
+ Fgr_group struct {
+ Fss_family Sa_family_t
+ F__ss_padding [118]uint8
+ F__ss_align uint64
+ }
+} /* in.h:305:1 */
+
+type Group_source_req = struct {
+ Fgsr_interface Uint32_t
+ F__ccgo_pad1 [4]byte
+ Fgsr_group struct {
+ Fss_family Sa_family_t
+ F__ss_padding [118]uint8
+ F__ss_align uint64
+ }
+ Fgsr_source struct {
+ Fss_family Sa_family_t
+ F__ss_padding [118]uint8
+ F__ss_align uint64
+ }
+} /* in.h:314:1 */
+
+// Full-state filter operations.
+type Ip_msfilter = struct {
+ Fimsf_multiaddr struct{ Fs_addr In_addr_t }
+ Fimsf_interface struct{ Fs_addr In_addr_t }
+ Fimsf_fmode Uint32_t
+ Fimsf_numsrc Uint32_t
+ Fimsf_slist [1]struct{ Fs_addr In_addr_t }
+} /* in.h:328:1 */
+
+type Group_filter = struct {
+ Fgf_interface Uint32_t
+ F__ccgo_pad1 [4]byte
+ Fgf_group struct {
+ Fss_family Sa_family_t
+ F__ss_padding [118]uint8
+ F__ss_align uint64
+ }
+ Fgf_fmode Uint32_t
+ Fgf_numsrc Uint32_t
+ Fgf_slist [1]struct {
+ Fss_family Sa_family_t
+ F__ss_padding [118]uint8
+ F__ss_align uint64
+ }
+} /* in.h:349:1 */
+
+var _ uint8 /* gen.c:2:13: */
diff --git a/vendor/modernc.org/libc/poll/capi_linux_riscv64.go b/vendor/modernc.org/libc/poll/capi_linux_riscv64.go
new file mode 100644
index 00000000..529a2c83
--- /dev/null
+++ b/vendor/modernc.org/libc/poll/capi_linux_riscv64.go
@@ -0,0 +1,5 @@
+// Code generated by 'ccgo poll/gen.c -crt-import-path -export-defines -export-enums -export-externs X -export-fields F -export-structs -export-typedefs -header -hide _OSSwapInt16,_OSSwapInt32,_OSSwapInt64 -o poll/poll_linux_riscv64.go -pkgname poll', DO NOT EDIT.
+
+package poll
+
+var CAPI = map[string]struct{}{}
diff --git a/vendor/modernc.org/libc/poll/poll_linux_riscv64.go b/vendor/modernc.org/libc/poll/poll_linux_riscv64.go
new file mode 100644
index 00000000..6fbc0695
--- /dev/null
+++ b/vendor/modernc.org/libc/poll/poll_linux_riscv64.go
@@ -0,0 +1,677 @@
+// Code generated by 'ccgo poll/gen.c -crt-import-path "" -export-defines "" -export-enums "" -export-externs X -export-fields F -export-structs "" -export-typedefs "" -header -hide _OSSwapInt16,_OSSwapInt32,_OSSwapInt64 -o poll/poll_linux_riscv64.go -pkgname poll', DO NOT EDIT.
+
+package poll
+
+import (
+ "math"
+ "reflect"
+ "sync/atomic"
+ "unsafe"
+)
+
+var _ = math.Pi
+var _ reflect.Kind
+var _ atomic.Value
+var _ unsafe.Pointer
+
+const (
+ POLLERR = 0x008
+ POLLHUP = 0x010
+ POLLIN = 0x001
+ POLLNVAL = 0x020
+ POLLOUT = 0x004
+ POLLPRI = 0x002
+ POLLRDBAND = 0x080
+ POLLRDNORM = 0x040
+ POLLWRBAND = 0x200
+ POLLWRNORM = 0x100
+ X_ATFILE_SOURCE = 1
+ X_DEFAULT_SOURCE = 1
+ X_FEATURES_H = 1
+ X_FILE_OFFSET_BITS = 64
+ X_LP64 = 1
+ X_POSIX_C_SOURCE = 200809
+ X_POSIX_SOURCE = 1
+ X_STDC_PREDEF_H = 1
+ X_SYS_CDEFS_H = 1
+ X_SYS_POLL_H = 1
+ Linux = 1
+ Unix = 1
+)
+
+type Ptrdiff_t = int64 /* <builtin>:3:26 */
+
+type Size_t = uint64 /* <builtin>:9:23 */
+
+type Wchar_t = int32 /* <builtin>:15:24 */
+
+type X__int128_t = struct {
+ Flo int64
+ Fhi int64
+} /* <builtin>:21:43 */ // must match modernc.org/mathutil.Int128
+type X__uint128_t = struct {
+ Flo uint64
+ Fhi uint64
+} /* <builtin>:22:44 */ // must match modernc.org/mathutil.Int128
+
+type X__builtin_va_list = uintptr /* <builtin>:46:14 */
+type X__float128 = float64 /* <builtin>:47:21 */
+
+// Compatibility definitions for System V `poll' interface.
+// Copyright (C) 1994-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// These are defined by the user (or the compiler)
+// to specify the desired environment:
+//
+// __STRICT_ANSI__ ISO Standard C.
+// _ISOC99_SOURCE Extensions to ISO C89 from ISO C99.
+// _ISOC11_SOURCE Extensions to ISO C99 from ISO C11.
+// _ISOC2X_SOURCE Extensions to ISO C99 from ISO C2X.
+// __STDC_WANT_LIB_EXT2__
+// Extensions to ISO C99 from TR 27431-2:2010.
+// __STDC_WANT_IEC_60559_BFP_EXT__
+// Extensions to ISO C11 from TS 18661-1:2014.
+// __STDC_WANT_IEC_60559_FUNCS_EXT__
+// Extensions to ISO C11 from TS 18661-4:2015.
+// __STDC_WANT_IEC_60559_TYPES_EXT__
+// Extensions to ISO C11 from TS 18661-3:2015.
+// __STDC_WANT_IEC_60559_EXT__
+// ISO C2X interfaces defined only in Annex F.
+//
+// _POSIX_SOURCE IEEE Std 1003.1.
+// _POSIX_C_SOURCE If ==1, like _POSIX_SOURCE; if >=2 add IEEE Std 1003.2;
+// if >=199309L, add IEEE Std 1003.1b-1993;
+// if >=199506L, add IEEE Std 1003.1c-1995;
+// if >=200112L, all of IEEE 1003.1-2004
+// if >=200809L, all of IEEE 1003.1-2008
+// _XOPEN_SOURCE Includes POSIX and XPG things. Set to 500 if
+// Single Unix conformance is wanted, to 600 for the
+// sixth revision, to 700 for the seventh revision.
+// _XOPEN_SOURCE_EXTENDED XPG things and X/Open Unix extensions.
+// _LARGEFILE_SOURCE Some more functions for correct standard I/O.
+// _LARGEFILE64_SOURCE Additional functionality from LFS for large files.
+// _FILE_OFFSET_BITS=N Select default filesystem interface.
+// _ATFILE_SOURCE Additional *at interfaces.
+// _DYNAMIC_STACK_SIZE_SOURCE Select correct (but non compile-time constant)
+// MINSIGSTKSZ, SIGSTKSZ and PTHREAD_STACK_MIN.
+// _GNU_SOURCE All of the above, plus GNU extensions.
+// _DEFAULT_SOURCE The default set of features (taking precedence over
+// __STRICT_ANSI__).
+//
+// _FORTIFY_SOURCE Add security hardening to many library functions.
+// Set to 1 or 2; 2 performs stricter checks than 1.
+//
+// _REENTRANT, _THREAD_SAFE
+// Obsolete; equivalent to _POSIX_C_SOURCE=199506L.
+//
+// The `-ansi' switch to the GNU C compiler, and standards conformance
+// options such as `-std=c99', define __STRICT_ANSI__. If none of
+// these are defined, or if _DEFAULT_SOURCE is defined, the default is
+// to have _POSIX_SOURCE set to one and _POSIX_C_SOURCE set to
+// 200809L, as well as enabling miscellaneous functions from BSD and
+// SVID. If more than one of these are defined, they accumulate. For
+// example __STRICT_ANSI__, _POSIX_SOURCE and _POSIX_C_SOURCE together
+// give you ISO C, 1003.1, and 1003.2, but nothing else.
+//
+// These are defined by this file and are used by the
+// header files to decide what to declare or define:
+//
+// __GLIBC_USE (F) Define things from feature set F. This is defined
+// to 1 or 0; the subsequent macros are either defined
+// or undefined, and those tests should be moved to
+// __GLIBC_USE.
+// __USE_ISOC11 Define ISO C11 things.
+// __USE_ISOC99 Define ISO C99 things.
+// __USE_ISOC95 Define ISO C90 AMD1 (C95) things.
+// __USE_ISOCXX11 Define ISO C++11 things.
+// __USE_POSIX Define IEEE Std 1003.1 things.
+// __USE_POSIX2 Define IEEE Std 1003.2 things.
+// __USE_POSIX199309 Define IEEE Std 1003.1, and .1b things.
+// __USE_POSIX199506 Define IEEE Std 1003.1, .1b, .1c and .1i things.
+// __USE_XOPEN Define XPG things.
+// __USE_XOPEN_EXTENDED Define X/Open Unix things.
+// __USE_UNIX98 Define Single Unix V2 things.
+// __USE_XOPEN2K Define XPG6 things.
+// __USE_XOPEN2KXSI Define XPG6 XSI things.
+// __USE_XOPEN2K8 Define XPG7 things.
+// __USE_XOPEN2K8XSI Define XPG7 XSI things.
+// __USE_LARGEFILE Define correct standard I/O things.
+// __USE_LARGEFILE64 Define LFS things with separate names.
+// __USE_FILE_OFFSET64 Define 64bit interface as default.
+// __USE_MISC Define things from 4.3BSD or System V Unix.
+// __USE_ATFILE Define *at interfaces and AT_* constants for them.
+// __USE_DYNAMIC_STACK_SIZE Define correct (but non compile-time constant)
+// MINSIGSTKSZ, SIGSTKSZ and PTHREAD_STACK_MIN.
+// __USE_GNU Define GNU extensions.
+// __USE_FORTIFY_LEVEL Additional security measures used, according to level.
+//
+// The macros `__GNU_LIBRARY__', `__GLIBC__', and `__GLIBC_MINOR__' are
+// defined by this file unconditionally. `__GNU_LIBRARY__' is provided
+// only for compatibility. All new code should use the other symbols
+// to test for features.
+//
+// All macros listed above as possibly being defined by this file are
+// explicitly undefined if they are not explicitly defined.
+// Feature-test macros that are not defined by the user or compiler
+// but are implied by the other feature-test macros defined (or by the
+// lack of any definitions) are defined by the file.
+//
+// ISO C feature test macros depend on the definition of the macro
+// when an affected header is included, not when the first system
+// header is included, and so they are handled in
+// <bits/libc-header-start.h>, which does not have a multiple include
+// guard. Feature test macros that can be handled from the first
+// system header included are handled here.
+
+// Undefine everything, so we get a clean slate.
+
+// Suppress kernel-name space pollution unless user expressedly asks
+// for it.
+
+// Convenience macro to test the version of gcc.
+// Use like this:
+// #if __GNUC_PREREQ (2,8)
+// ... code requiring gcc 2.8 or later ...
+// #endif
+// Note: only works for GCC 2.0 and later, because __GNUC_MINOR__ was
+// added in 2.0.
+
+// Similarly for clang. Features added to GCC after version 4.2 may
+// or may not also be available in clang, and clang's definitions of
+// __GNUC(_MINOR)__ are fixed at 4 and 2 respectively. Not all such
+// features can be queried via __has_extension/__has_feature.
+
+// Whether to use feature set F.
+
+// _BSD_SOURCE and _SVID_SOURCE are deprecated aliases for
+// _DEFAULT_SOURCE. If _DEFAULT_SOURCE is present we do not
+// issue a warning; the expectation is that the source is being
+// transitioned to use the new macro.
+
+// If _GNU_SOURCE was defined by the user, turn on all the other features.
+
+// If nothing (other than _GNU_SOURCE and _DEFAULT_SOURCE) is defined,
+// define _DEFAULT_SOURCE.
+
+// This is to enable the ISO C2X extension.
+
+// This is to enable the ISO C11 extension.
+
+// This is to enable the ISO C99 extension.
+
+// This is to enable the ISO C90 Amendment 1:1995 extension.
+
+// If none of the ANSI/POSIX macros are defined, or if _DEFAULT_SOURCE
+// is defined, use POSIX.1-2008 (or another version depending on
+// _XOPEN_SOURCE).
+
+// Some C libraries once required _REENTRANT and/or _THREAD_SAFE to be
+// defined in all multithreaded code. GNU libc has not required this
+// for many years. We now treat them as compatibility synonyms for
+// _POSIX_C_SOURCE=199506L, which is the earliest level of POSIX with
+// comprehensive support for multithreaded code. Using them never
+// lowers the selected level of POSIX conformance, only raises it.
+
+// Features part to handle 64-bit time_t support.
+// Copyright (C) 2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// We need to know the word size in order to check the time size.
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Bit size of the time_t type at glibc build time, RISC-V case.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// RV32 and RV64 both use 64-bit time_t
+
+// The function 'gets' existed in C89, but is impossible to use
+// safely. It has been removed from ISO C11 and ISO C++14. Note: for
+// compatibility with various implementations of <cstdio>, this test
+// must consider only the value of __cplusplus when compiling C++.
+
+// GNU formerly extended the scanf functions with modified format
+// specifiers %as, %aS, and %a[...] that allocate a buffer for the
+// input using malloc. This extension conflicts with ISO C99, which
+// defines %a as a standalone format specifier that reads a floating-
+// point number; moreover, POSIX.1-2008 provides the same feature
+// using the modifier letter 'm' instead (%ms, %mS, %m[...]).
+//
+// We now follow C99 unless GNU extensions are active and the compiler
+// is specifically in C89 or C++98 mode (strict or not). For
+// instance, with GCC, -std=gnu11 will have C99-compliant scanf with
+// or without -D_GNU_SOURCE, but -std=c89 -D_GNU_SOURCE will have the
+// old extension.
+
+// Get definitions of __STDC_* predefined macros, if the compiler has
+// not preincluded this header automatically.
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// This macro indicates that the installed library is the GNU C Library.
+// For historic reasons the value now is 6 and this will stay from now
+// on. The use of this variable is deprecated. Use __GLIBC__ and
+// __GLIBC_MINOR__ now (see below) when you want to test for a specific
+// GNU C library version and use the values in <gnu/lib-names.h> to get
+// the sonames of the shared libraries.
+
+// Major and minor version number of the GNU C library package. Use
+// these macros to test for features in specific releases.
+
+// This is here only because every header file already includes this one.
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// We are almost always included from features.h.
+
+// The GNU libc does not support any K&R compilers or the traditional mode
+// of ISO C compilers anymore. Check for some of the combinations not
+// supported anymore.
+
+// Some user header file might have defined this before.
+
+// Compilers that lack __has_attribute may object to
+// #if defined __has_attribute && __has_attribute (...)
+// even though they do not need to evaluate the right-hand side of the &&.
+// Similarly for __has_builtin, etc.
+
+// All functions, except those with callbacks or those that
+// synchronize memory, are leaf functions.
+
+// GCC can always grok prototypes. For C++ programs we add throw()
+// to help it optimize the function calls. But this only works with
+// gcc 2.8.x and egcs. For gcc 3.4 and up we even mark C functions
+// as non-throwing using a function attribute since programs can use
+// the -fexceptions options for C code as well.
+
+// These two macros are not used in glibc anymore. They are kept here
+// only because some other projects expect the macros to be defined.
+
+// For these things, GCC behaves the ANSI way normally,
+// and the non-ANSI way under -traditional.
+
+// This is not a typedef so `const __ptr_t' does the right thing.
+
+// C++ needs to know that types and declarations are C, not C++.
+
+// Fortify support.
+
+// Use __builtin_dynamic_object_size at _FORTIFY_SOURCE=3 when available.
+
+// Support for flexible arrays.
+// Headers that should use flexible arrays only if they're "real"
+// (e.g. only if they won't affect sizeof()) should test
+// #if __glibc_c99_flexarr_available.
+
+// __asm__ ("xyz") is used throughout the headers to rename functions
+// at the assembly language level. This is wrapped by the __REDIRECT
+// macro, in order to support compilers that can do this some other
+// way. When compilers don't support asm-names at all, we have to do
+// preprocessor tricks instead (which don't have exactly the right
+// semantics, but it's the best we can do).
+//
+// Example:
+// int __REDIRECT(setpgrp, (__pid_t pid, __pid_t pgrp), setpgid);
+
+//
+// #elif __SOME_OTHER_COMPILER__
+//
+// # define __REDIRECT(name, proto, alias) name proto; _Pragma("let " #name " = " #alias)
+
+// GCC and clang have various useful declarations that can be made with
+// the '__attribute__' syntax. All of the ways we use this do fine if
+// they are omitted for compilers that don't understand it.
+
+// At some point during the gcc 2.96 development the `malloc' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+
+// Tell the compiler which arguments to an allocation function
+// indicate the size of the allocation.
+
+// At some point during the gcc 2.96 development the `pure' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+
+// This declaration tells the compiler that the value is constant.
+
+// At some point during the gcc 3.1 development the `used' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+
+// Since version 3.2, gcc allows marking deprecated functions.
+
+// Since version 4.5, gcc also allows one to specify the message printed
+// when a deprecated function is used. clang claims to be gcc 4.2, but
+// may also support this feature.
+
+// At some point during the gcc 2.8 development the `format_arg' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+// If several `format_arg' attributes are given for the same function, in
+// gcc-3.0 and older, all but the last one are ignored. In newer gccs,
+// all designated arguments are considered.
+
+// At some point during the gcc 2.97 development the `strfmon' format
+// attribute for functions was introduced. We don't want to use it
+// unconditionally (although this would be possible) since it
+// generates warnings.
+
+// The nonnull function attribute marks pointer parameters that
+// must not be NULL.
+
+// The returns_nonnull function attribute marks the return type of the function
+// as always being non-null.
+
+// If fortification mode, we warn about unused results of certain
+// function calls which can lead to problems.
+
+// Forces a function to be always inlined.
+// The Linux kernel defines __always_inline in stddef.h (283d7573), and
+// it conflicts with this definition. Therefore undefine it first to
+// allow either header to be included first.
+
+// Associate error messages with the source location of the call site rather
+// than with the source location inside the function.
+
+// GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
+// inline semantics, unless -fgnu89-inline is used. Using __GNUC_STDC_INLINE__
+// or __GNUC_GNU_INLINE is not a good enough check for gcc because gcc versions
+// older than 4.3 may define these macros and still not guarantee GNU inlining
+// semantics.
+//
+// clang++ identifies itself as gcc-4.2, but has support for GNU inlining
+// semantics, that can be checked for by using the __GNUC_STDC_INLINE_ and
+// __GNUC_GNU_INLINE__ macro definitions.
+
+// GCC 4.3 and above allow passing all anonymous arguments of an
+// __extern_always_inline function to some other vararg function.
+
+// It is possible to compile containing GCC extensions even if GCC is
+// run in pedantic mode if the uses are carefully marked using the
+// `__extension__' keyword. But this is not generally available before
+// version 2.8.
+
+// __restrict is known in EGCS 1.2 and above, and in clang.
+// It works also in C++ mode (outside of arrays), but only when spelled
+// as '__restrict', not 'restrict'.
+
+// ISO C99 also allows to declare arrays as non-overlapping. The syntax is
+// array_name[restrict]
+// GCC 3.1 and clang support this.
+// This syntax is not usable in C++ mode.
+
+// Describes a char array whose address can safely be passed as the first
+// argument to strncpy and strncat, as the char array is not necessarily
+// a NUL-terminated string.
+
+// Undefine (also defined in libc-symbols.h).
+// Copies attributes from the declaration or type referenced by
+// the argument.
+
+// The #ifndef lets Gnulib avoid including these on non-glibc
+// platforms, where the includes typically do not exist.
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Properties of long double type. ldbl-128 version.
+// Copyright (C) 2016-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// long double is distinct from double, so there is nothing to
+// define here.
+
+// __glibc_macro_warning (MESSAGE) issues warning MESSAGE. This is
+// intended for use in preprocessor macros.
+//
+// Note: MESSAGE must be a _single_ string; concatenation of string
+// literals is not supported.
+
+// Generic selection (ISO C11) is a C-only feature, available in GCC
+// since version 4.9. Previous versions do not provide generic
+// selection, even though they might set __STDC_VERSION__ to 201112L,
+// when in -std=c11 mode. Thus, we must check for !defined __GNUC__
+// when testing __STDC_VERSION__ for generic selection support.
+// On the other hand, Clang also defines __GNUC__, so a clang-specific
+// check is required to enable the use of generic selection.
+
+// Designates a 1-based positional argument ref-index of pointer type
+// that can be used to access size-index elements of the pointed-to
+// array according to access mode, or at least one element when
+// size-index is not provided:
+// access (access-mode, <ref-index> [, <size-index>])
+
+// Designates dealloc as a function to call to deallocate objects
+// allocated by the declared function.
+
+// Specify that a function such as setjmp or vfork may return
+// twice.
+
+// If we don't have __REDIRECT, prototypes will be missing if
+// __USE_FILE_OFFSET64 but not __USE_LARGEFILE[64].
+
+// Decide whether we can define 'extern inline' functions in headers.
+
+// This is here only because every header file already includes this one.
+// Get the definitions of all the appropriate `__stub_FUNCTION' symbols.
+// <gnu/stubs.h> contains `#define __stub_FUNCTION' when FUNCTION is a stub
+// that will always return failure (and set errno to ENOSYS).
+// This file is automatically generated.
+// This file selects the right generated file of `__stub_FUNCTION' macros
+// based on the architecture being compiled for.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// This file is automatically generated.
+// It defines a symbol `__stub_FUNCTION' for each function
+// in the C library which is a stub, meaning it will fail
+// every time called, usually setting errno to ENOSYS.
+
+// Get the platform dependent bits of `poll'.
+// Copyright (C) 1997-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Event types that can be polled for. These bits may be set in `events'
+// to indicate the interesting event types; they will appear in `revents'
+// to indicate the status of the file descriptor.
+
+// These values are defined in XPG4.2.
+
+// Event types always implicitly polled for. These bits need not be set in
+// `events', but they will appear in `revents' to indicate the status of
+// the file descriptor.
+
+// Type used for the number of file descriptors.
+type Nfds_t = uint64 /* poll.h:33:27 */
+
+// Data structure describing a polling request.
+type Pollfd = struct {
+ Ffd int32
+ Fevents int16
+ Frevents int16
+} /* poll.h:36:1 */
+
+// Define some inlines helping to catch common problems.
+
+var _ uint8 /* gen.c:2:13: */
diff --git a/vendor/modernc.org/libc/pthread/capi_linux_riscv64.go b/vendor/modernc.org/libc/pthread/capi_linux_riscv64.go
new file mode 100644
index 00000000..84fa5dd9
--- /dev/null
+++ b/vendor/modernc.org/libc/pthread/capi_linux_riscv64.go
@@ -0,0 +1,5 @@
+// Code generated by 'ccgo pthread/gen.c -crt-import-path -export-defines -export-enums -export-externs X -export-fields F -export-structs -export-typedefs -header -hide _OSSwapInt16,_OSSwapInt32,_OSSwapInt64 -o pthread/pthread_linux_riscv64.go -pkgname pthread', DO NOT EDIT.
+
+package pthread
+
+var CAPI = map[string]struct{}{}
diff --git a/vendor/modernc.org/libc/pthread/pthread_linux_riscv64.go b/vendor/modernc.org/libc/pthread/pthread_linux_riscv64.go
new file mode 100644
index 00000000..82d95faa
--- /dev/null
+++ b/vendor/modernc.org/libc/pthread/pthread_linux_riscv64.go
@@ -0,0 +1,2201 @@
+// Code generated by 'ccgo pthread/gen.c -crt-import-path "" -export-defines "" -export-enums "" -export-externs X -export-fields F -export-structs "" -export-typedefs "" -header -hide _OSSwapInt16,_OSSwapInt32,_OSSwapInt64 -o pthread/pthread_linux_riscv64.go -pkgname pthread', DO NOT EDIT.
+
+package pthread
+
+import (
+ "math"
+ "reflect"
+ "sync/atomic"
+ "unsafe"
+)
+
+var _ = math.Pi
+var _ reflect.Kind
+var _ atomic.Value
+var _ unsafe.Pointer
+
+const (
+ CLOCK_BOOTTIME = 7
+ CLOCK_BOOTTIME_ALARM = 9
+ CLOCK_MONOTONIC = 1
+ CLOCK_MONOTONIC_COARSE = 6
+ CLOCK_MONOTONIC_RAW = 4
+ CLOCK_PROCESS_CPUTIME_ID = 2
+ CLOCK_REALTIME = 0
+ CLOCK_REALTIME_ALARM = 8
+ CLOCK_REALTIME_COARSE = 5
+ CLOCK_TAI = 11
+ CLOCK_THREAD_CPUTIME_ID = 3
+ PTHREAD_BARRIER_SERIAL_THREAD = -1
+ PTHREAD_ONCE_INIT = 0
+ PTHREAD_STACK_MIN = 16384
+ SCHED_FIFO = 1
+ SCHED_OTHER = 0
+ SCHED_RR = 2
+ TIMER_ABSTIME = 1
+ TIME_UTC = 1
+ X_ATFILE_SOURCE = 1
+ X_BITS_CPU_SET_H = 1
+ X_BITS_ENDIANNESS_H = 1
+ X_BITS_ENDIAN_H = 1
+ X_BITS_PTHREADTYPES_ARCH_H = 1
+ X_BITS_PTHREADTYPES_COMMON_H = 1
+ X_BITS_SCHED_H = 1
+ X_BITS_TIME64_H = 1
+ X_BITS_TIME_H = 1
+ X_BITS_TYPESIZES_H = 1
+ X_BITS_TYPES_H = 1
+ X_BITS_TYPES_LOCALE_T_H = 1
+ X_BITS_TYPES_STRUCT_SCHED_PARAM = 1
+ X_BITS_TYPES___LOCALE_T_H = 1
+ X_BSD_SIZE_T_ = 0
+ X_BSD_SIZE_T_DEFINED_ = 0
+ X_DEFAULT_SOURCE = 1
+ X_FEATURES_H = 1
+ X_FILE_OFFSET_BITS = 64
+ X_GCC_SIZE_T = 0
+ X_LP64 = 1
+ X_POSIX_C_SOURCE = 200809
+ X_POSIX_SOURCE = 1
+ X_PTHREAD_H = 1
+ X_RISCV_BITS_SETJMP_H = 0
+ X_RWLOCK_INTERNAL_H = 0
+ X_SCHED_H = 1
+ X_SIZET_ = 0
+ X_SIZE_T = 0
+ X_SIZE_T_ = 0
+ X_SIZE_T_DECLARED = 0
+ X_SIZE_T_DEFINED = 0
+ X_SIZE_T_DEFINED_ = 0
+ X_STDC_PREDEF_H = 1
+ X_STRUCT_TIMESPEC = 1
+ X_SYS_CDEFS_H = 1
+ X_SYS_SIZE_T_H = 0
+ X_THREAD_MUTEX_INTERNAL_H = 1
+ X_THREAD_SHARED_TYPES_H = 1
+ X_TIME_H = 1
+ X_T_SIZE = 0
+ X_T_SIZE_ = 0
+ Linux = 1
+ Unix = 1
+)
+
+// Read-write lock types.
+const ( /* pthread.h:104:1: */
+ PTHREAD_RWLOCK_PREFER_READER_NP = 0
+ PTHREAD_RWLOCK_PREFER_WRITER_NP = 1
+ PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP = 2
+ PTHREAD_RWLOCK_DEFAULT_NP = 0
+)
+
+// Read-write lock initializers.
+
+// Scheduler inheritance.
+const ( /* pthread.h:124:1: */
+ PTHREAD_INHERIT_SCHED = 0
+ PTHREAD_EXPLICIT_SCHED = 1
+)
+
+// Scope handling.
+const ( /* pthread.h:134:1: */
+ PTHREAD_SCOPE_SYSTEM = 0
+ PTHREAD_SCOPE_PROCESS = 1
+)
+
+// Process shared or private flag.
+const ( /* pthread.h:144:1: */
+ PTHREAD_PROCESS_PRIVATE = 0
+ PTHREAD_PROCESS_SHARED = 1
+)
+
+// Cancellation
+const ( /* pthread.h:168:1: */
+ PTHREAD_CANCEL_ENABLE = 0
+ PTHREAD_CANCEL_DISABLE = 1
+)
+const ( /* pthread.h:175:1: */
+ PTHREAD_CANCEL_DEFERRED = 0
+ PTHREAD_CANCEL_ASYNCHRONOUS = 1
+)
+
+// Definition of PTHREAD_STACK_MIN, possibly dynamic.
+// Copyright (C) 2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Definition of PTHREAD_STACK_MIN. Linux version.
+// Copyright (C) 2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Minimum size for a thread. We are free to choose a reasonable value.
+
+// Detach state.
+const ( /* pthread.h:37:1: */
+ PTHREAD_CREATE_JOINABLE = 0
+ PTHREAD_CREATE_DETACHED = 1
+)
+
+// Mutex types.
+const ( /* pthread.h:47:1: */
+ PTHREAD_MUTEX_TIMED_NP = 0
+ PTHREAD_MUTEX_RECURSIVE_NP = 1
+ PTHREAD_MUTEX_ERRORCHECK_NP = 2
+ PTHREAD_MUTEX_ADAPTIVE_NP = 3
+ PTHREAD_MUTEX_NORMAL = 0
+ PTHREAD_MUTEX_RECURSIVE = 1
+ PTHREAD_MUTEX_ERRORCHECK = 2
+ PTHREAD_MUTEX_DEFAULT = 0
+)
+
+// Robust mutex or not flags.
+const ( /* pthread.h:69:1: */
+ PTHREAD_MUTEX_STALLED = 0
+ PTHREAD_MUTEX_STALLED_NP = 0
+ PTHREAD_MUTEX_ROBUST = 1
+ PTHREAD_MUTEX_ROBUST_NP = 1
+)
+
+// Mutex protocols.
+const ( /* pthread.h:81:1: */
+ PTHREAD_PRIO_NONE = 0
+ PTHREAD_PRIO_INHERIT = 1
+ PTHREAD_PRIO_PROTECT = 2
+)
+
+type Ptrdiff_t = int64 /* <builtin>:3:26 */
+
+type Size_t = uint64 /* <builtin>:9:23 */
+
+type Wchar_t = int32 /* <builtin>:15:24 */
+
+type X__int128_t = struct {
+ Flo int64
+ Fhi int64
+} /* <builtin>:21:43 */ // must match modernc.org/mathutil.Int128
+type X__uint128_t = struct {
+ Flo uint64
+ Fhi uint64
+} /* <builtin>:22:44 */ // must match modernc.org/mathutil.Int128
+
+type X__builtin_va_list = uintptr /* <builtin>:46:14 */
+type X__float128 = float64 /* <builtin>:47:21 */
+
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// These are defined by the user (or the compiler)
+// to specify the desired environment:
+//
+// __STRICT_ANSI__ ISO Standard C.
+// _ISOC99_SOURCE Extensions to ISO C89 from ISO C99.
+// _ISOC11_SOURCE Extensions to ISO C99 from ISO C11.
+// _ISOC2X_SOURCE Extensions to ISO C99 from ISO C2X.
+// __STDC_WANT_LIB_EXT2__
+// Extensions to ISO C99 from TR 27431-2:2010.
+// __STDC_WANT_IEC_60559_BFP_EXT__
+// Extensions to ISO C11 from TS 18661-1:2014.
+// __STDC_WANT_IEC_60559_FUNCS_EXT__
+// Extensions to ISO C11 from TS 18661-4:2015.
+// __STDC_WANT_IEC_60559_TYPES_EXT__
+// Extensions to ISO C11 from TS 18661-3:2015.
+// __STDC_WANT_IEC_60559_EXT__
+// ISO C2X interfaces defined only in Annex F.
+//
+// _POSIX_SOURCE IEEE Std 1003.1.
+// _POSIX_C_SOURCE If ==1, like _POSIX_SOURCE; if >=2 add IEEE Std 1003.2;
+// if >=199309L, add IEEE Std 1003.1b-1993;
+// if >=199506L, add IEEE Std 1003.1c-1995;
+// if >=200112L, all of IEEE 1003.1-2004
+// if >=200809L, all of IEEE 1003.1-2008
+// _XOPEN_SOURCE Includes POSIX and XPG things. Set to 500 if
+// Single Unix conformance is wanted, to 600 for the
+// sixth revision, to 700 for the seventh revision.
+// _XOPEN_SOURCE_EXTENDED XPG things and X/Open Unix extensions.
+// _LARGEFILE_SOURCE Some more functions for correct standard I/O.
+// _LARGEFILE64_SOURCE Additional functionality from LFS for large files.
+// _FILE_OFFSET_BITS=N Select default filesystem interface.
+// _ATFILE_SOURCE Additional *at interfaces.
+// _DYNAMIC_STACK_SIZE_SOURCE Select correct (but non compile-time constant)
+// MINSIGSTKSZ, SIGSTKSZ and PTHREAD_STACK_MIN.
+// _GNU_SOURCE All of the above, plus GNU extensions.
+// _DEFAULT_SOURCE The default set of features (taking precedence over
+// __STRICT_ANSI__).
+//
+// _FORTIFY_SOURCE Add security hardening to many library functions.
+// Set to 1 or 2; 2 performs stricter checks than 1.
+//
+// _REENTRANT, _THREAD_SAFE
+// Obsolete; equivalent to _POSIX_C_SOURCE=199506L.
+//
+// The `-ansi' switch to the GNU C compiler, and standards conformance
+// options such as `-std=c99', define __STRICT_ANSI__. If none of
+// these are defined, or if _DEFAULT_SOURCE is defined, the default is
+// to have _POSIX_SOURCE set to one and _POSIX_C_SOURCE set to
+// 200809L, as well as enabling miscellaneous functions from BSD and
+// SVID. If more than one of these are defined, they accumulate. For
+// example __STRICT_ANSI__, _POSIX_SOURCE and _POSIX_C_SOURCE together
+// give you ISO C, 1003.1, and 1003.2, but nothing else.
+//
+// These are defined by this file and are used by the
+// header files to decide what to declare or define:
+//
+// __GLIBC_USE (F) Define things from feature set F. This is defined
+// to 1 or 0; the subsequent macros are either defined
+// or undefined, and those tests should be moved to
+// __GLIBC_USE.
+// __USE_ISOC11 Define ISO C11 things.
+// __USE_ISOC99 Define ISO C99 things.
+// __USE_ISOC95 Define ISO C90 AMD1 (C95) things.
+// __USE_ISOCXX11 Define ISO C++11 things.
+// __USE_POSIX Define IEEE Std 1003.1 things.
+// __USE_POSIX2 Define IEEE Std 1003.2 things.
+// __USE_POSIX199309 Define IEEE Std 1003.1, and .1b things.
+// __USE_POSIX199506 Define IEEE Std 1003.1, .1b, .1c and .1i things.
+// __USE_XOPEN Define XPG things.
+// __USE_XOPEN_EXTENDED Define X/Open Unix things.
+// __USE_UNIX98 Define Single Unix V2 things.
+// __USE_XOPEN2K Define XPG6 things.
+// __USE_XOPEN2KXSI Define XPG6 XSI things.
+// __USE_XOPEN2K8 Define XPG7 things.
+// __USE_XOPEN2K8XSI Define XPG7 XSI things.
+// __USE_LARGEFILE Define correct standard I/O things.
+// __USE_LARGEFILE64 Define LFS things with separate names.
+// __USE_FILE_OFFSET64 Define 64bit interface as default.
+// __USE_MISC Define things from 4.3BSD or System V Unix.
+// __USE_ATFILE Define *at interfaces and AT_* constants for them.
+// __USE_DYNAMIC_STACK_SIZE Define correct (but non compile-time constant)
+// MINSIGSTKSZ, SIGSTKSZ and PTHREAD_STACK_MIN.
+// __USE_GNU Define GNU extensions.
+// __USE_FORTIFY_LEVEL Additional security measures used, according to level.
+//
+// The macros `__GNU_LIBRARY__', `__GLIBC__', and `__GLIBC_MINOR__' are
+// defined by this file unconditionally. `__GNU_LIBRARY__' is provided
+// only for compatibility. All new code should use the other symbols
+// to test for features.
+//
+// All macros listed above as possibly being defined by this file are
+// explicitly undefined if they are not explicitly defined.
+// Feature-test macros that are not defined by the user or compiler
+// but are implied by the other feature-test macros defined (or by the
+// lack of any definitions) are defined by the file.
+//
+// ISO C feature test macros depend on the definition of the macro
+// when an affected header is included, not when the first system
+// header is included, and so they are handled in
+// <bits/libc-header-start.h>, which does not have a multiple include
+// guard. Feature test macros that can be handled from the first
+// system header included are handled here.
+
+// Undefine everything, so we get a clean slate.
+
+// Suppress kernel-name space pollution unless user expressedly asks
+// for it.
+
+// Convenience macro to test the version of gcc.
+// Use like this:
+// #if __GNUC_PREREQ (2,8)
+// ... code requiring gcc 2.8 or later ...
+// #endif
+// Note: only works for GCC 2.0 and later, because __GNUC_MINOR__ was
+// added in 2.0.
+
+// Similarly for clang. Features added to GCC after version 4.2 may
+// or may not also be available in clang, and clang's definitions of
+// __GNUC(_MINOR)__ are fixed at 4 and 2 respectively. Not all such
+// features can be queried via __has_extension/__has_feature.
+
+// Whether to use feature set F.
+
+// _BSD_SOURCE and _SVID_SOURCE are deprecated aliases for
+// _DEFAULT_SOURCE. If _DEFAULT_SOURCE is present we do not
+// issue a warning; the expectation is that the source is being
+// transitioned to use the new macro.
+
+// If _GNU_SOURCE was defined by the user, turn on all the other features.
+
+// If nothing (other than _GNU_SOURCE and _DEFAULT_SOURCE) is defined,
+// define _DEFAULT_SOURCE.
+
+// This is to enable the ISO C2X extension.
+
+// This is to enable the ISO C11 extension.
+
+// This is to enable the ISO C99 extension.
+
+// This is to enable the ISO C90 Amendment 1:1995 extension.
+
+// If none of the ANSI/POSIX macros are defined, or if _DEFAULT_SOURCE
+// is defined, use POSIX.1-2008 (or another version depending on
+// _XOPEN_SOURCE).
+
+// Some C libraries once required _REENTRANT and/or _THREAD_SAFE to be
+// defined in all multithreaded code. GNU libc has not required this
+// for many years. We now treat them as compatibility synonyms for
+// _POSIX_C_SOURCE=199506L, which is the earliest level of POSIX with
+// comprehensive support for multithreaded code. Using them never
+// lowers the selected level of POSIX conformance, only raises it.
+
+// Features part to handle 64-bit time_t support.
+// Copyright (C) 2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// We need to know the word size in order to check the time size.
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Bit size of the time_t type at glibc build time, RISC-V case.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// RV32 and RV64 both use 64-bit time_t
+
+// The function 'gets' existed in C89, but is impossible to use
+// safely. It has been removed from ISO C11 and ISO C++14. Note: for
+// compatibility with various implementations of <cstdio>, this test
+// must consider only the value of __cplusplus when compiling C++.
+
+// GNU formerly extended the scanf functions with modified format
+// specifiers %as, %aS, and %a[...] that allocate a buffer for the
+// input using malloc. This extension conflicts with ISO C99, which
+// defines %a as a standalone format specifier that reads a floating-
+// point number; moreover, POSIX.1-2008 provides the same feature
+// using the modifier letter 'm' instead (%ms, %mS, %m[...]).
+//
+// We now follow C99 unless GNU extensions are active and the compiler
+// is specifically in C89 or C++98 mode (strict or not). For
+// instance, with GCC, -std=gnu11 will have C99-compliant scanf with
+// or without -D_GNU_SOURCE, but -std=c89 -D_GNU_SOURCE will have the
+// old extension.
+
+// Get definitions of __STDC_* predefined macros, if the compiler has
+// not preincluded this header automatically.
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// This macro indicates that the installed library is the GNU C Library.
+// For historic reasons the value now is 6 and this will stay from now
+// on. The use of this variable is deprecated. Use __GLIBC__ and
+// __GLIBC_MINOR__ now (see below) when you want to test for a specific
+// GNU C library version and use the values in <gnu/lib-names.h> to get
+// the sonames of the shared libraries.
+
+// Major and minor version number of the GNU C library package. Use
+// these macros to test for features in specific releases.
+
+// This is here only because every header file already includes this one.
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// We are almost always included from features.h.
+
+// The GNU libc does not support any K&R compilers or the traditional mode
+// of ISO C compilers anymore. Check for some of the combinations not
+// supported anymore.
+
+// Some user header file might have defined this before.
+
+// Compilers that lack __has_attribute may object to
+// #if defined __has_attribute && __has_attribute (...)
+// even though they do not need to evaluate the right-hand side of the &&.
+// Similarly for __has_builtin, etc.
+
+// All functions, except those with callbacks or those that
+// synchronize memory, are leaf functions.
+
+// GCC can always grok prototypes. For C++ programs we add throw()
+// to help it optimize the function calls. But this only works with
+// gcc 2.8.x and egcs. For gcc 3.4 and up we even mark C functions
+// as non-throwing using a function attribute since programs can use
+// the -fexceptions options for C code as well.
+
+// These two macros are not used in glibc anymore. They are kept here
+// only because some other projects expect the macros to be defined.
+
+// For these things, GCC behaves the ANSI way normally,
+// and the non-ANSI way under -traditional.
+
+// This is not a typedef so `const __ptr_t' does the right thing.
+
+// C++ needs to know that types and declarations are C, not C++.
+
+// Fortify support.
+
+// Use __builtin_dynamic_object_size at _FORTIFY_SOURCE=3 when available.
+
+// Support for flexible arrays.
+// Headers that should use flexible arrays only if they're "real"
+// (e.g. only if they won't affect sizeof()) should test
+// #if __glibc_c99_flexarr_available.
+
+// __asm__ ("xyz") is used throughout the headers to rename functions
+// at the assembly language level. This is wrapped by the __REDIRECT
+// macro, in order to support compilers that can do this some other
+// way. When compilers don't support asm-names at all, we have to do
+// preprocessor tricks instead (which don't have exactly the right
+// semantics, but it's the best we can do).
+//
+// Example:
+// int __REDIRECT(setpgrp, (__pid_t pid, __pid_t pgrp), setpgid);
+
+//
+// #elif __SOME_OTHER_COMPILER__
+//
+// # define __REDIRECT(name, proto, alias) name proto; _Pragma("let " #name " = " #alias)
+
+// GCC and clang have various useful declarations that can be made with
+// the '__attribute__' syntax. All of the ways we use this do fine if
+// they are omitted for compilers that don't understand it.
+
+// At some point during the gcc 2.96 development the `malloc' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+
+// Tell the compiler which arguments to an allocation function
+// indicate the size of the allocation.
+
+// At some point during the gcc 2.96 development the `pure' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+
+// This declaration tells the compiler that the value is constant.
+
+// At some point during the gcc 3.1 development the `used' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+
+// Since version 3.2, gcc allows marking deprecated functions.
+
+// Since version 4.5, gcc also allows one to specify the message printed
+// when a deprecated function is used. clang claims to be gcc 4.2, but
+// may also support this feature.
+
+// At some point during the gcc 2.8 development the `format_arg' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+// If several `format_arg' attributes are given for the same function, in
+// gcc-3.0 and older, all but the last one are ignored. In newer gccs,
+// all designated arguments are considered.
+
+// At some point during the gcc 2.97 development the `strfmon' format
+// attribute for functions was introduced. We don't want to use it
+// unconditionally (although this would be possible) since it
+// generates warnings.
+
+// The nonnull function attribute marks pointer parameters that
+// must not be NULL.
+
+// The returns_nonnull function attribute marks the return type of the function
+// as always being non-null.
+
+// If fortification mode, we warn about unused results of certain
+// function calls which can lead to problems.
+
+// Forces a function to be always inlined.
+// The Linux kernel defines __always_inline in stddef.h (283d7573), and
+// it conflicts with this definition. Therefore undefine it first to
+// allow either header to be included first.
+
+// Associate error messages with the source location of the call site rather
+// than with the source location inside the function.
+
+// GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
+// inline semantics, unless -fgnu89-inline is used. Using __GNUC_STDC_INLINE__
+// or __GNUC_GNU_INLINE is not a good enough check for gcc because gcc versions
+// older than 4.3 may define these macros and still not guarantee GNU inlining
+// semantics.
+//
+// clang++ identifies itself as gcc-4.2, but has support for GNU inlining
+// semantics, that can be checked for by using the __GNUC_STDC_INLINE_ and
+// __GNUC_GNU_INLINE__ macro definitions.
+
+// GCC 4.3 and above allow passing all anonymous arguments of an
+// __extern_always_inline function to some other vararg function.
+
+// It is possible to compile containing GCC extensions even if GCC is
+// run in pedantic mode if the uses are carefully marked using the
+// `__extension__' keyword. But this is not generally available before
+// version 2.8.
+
+// __restrict is known in EGCS 1.2 and above, and in clang.
+// It works also in C++ mode (outside of arrays), but only when spelled
+// as '__restrict', not 'restrict'.
+
+// ISO C99 also allows to declare arrays as non-overlapping. The syntax is
+// array_name[restrict]
+// GCC 3.1 and clang support this.
+// This syntax is not usable in C++ mode.
+
+// Describes a char array whose address can safely be passed as the first
+// argument to strncpy and strncat, as the char array is not necessarily
+// a NUL-terminated string.
+
+// Undefine (also defined in libc-symbols.h).
+// Copies attributes from the declaration or type referenced by
+// the argument.
+
+// The #ifndef lets Gnulib avoid including these on non-glibc
+// platforms, where the includes typically do not exist.
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Properties of long double type. ldbl-128 version.
+// Copyright (C) 2016-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// long double is distinct from double, so there is nothing to
+// define here.
+
+// __glibc_macro_warning (MESSAGE) issues warning MESSAGE. This is
+// intended for use in preprocessor macros.
+//
+// Note: MESSAGE must be a _single_ string; concatenation of string
+// literals is not supported.
+
+// Generic selection (ISO C11) is a C-only feature, available in GCC
+// since version 4.9. Previous versions do not provide generic
+// selection, even though they might set __STDC_VERSION__ to 201112L,
+// when in -std=c11 mode. Thus, we must check for !defined __GNUC__
+// when testing __STDC_VERSION__ for generic selection support.
+// On the other hand, Clang also defines __GNUC__, so a clang-specific
+// check is required to enable the use of generic selection.
+
+// Designates a 1-based positional argument ref-index of pointer type
+// that can be used to access size-index elements of the pointed-to
+// array according to access mode, or at least one element when
+// size-index is not provided:
+// access (access-mode, <ref-index> [, <size-index>])
+
+// Designates dealloc as a function to call to deallocate objects
+// allocated by the declared function.
+
+// Specify that a function such as setjmp or vfork may return
+// twice.
+
+// If we don't have __REDIRECT, prototypes will be missing if
+// __USE_FILE_OFFSET64 but not __USE_LARGEFILE[64].
+
+// Decide whether we can define 'extern inline' functions in headers.
+
+// This is here only because every header file already includes this one.
+// Get the definitions of all the appropriate `__stub_FUNCTION' symbols.
+// <gnu/stubs.h> contains `#define __stub_FUNCTION' when FUNCTION is a stub
+// that will always return failure (and set errno to ENOSYS).
+// This file is automatically generated.
+// This file selects the right generated file of `__stub_FUNCTION' macros
+// based on the architecture being compiled for.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// This file is automatically generated.
+// It defines a symbol `__stub_FUNCTION' for each function
+// in the C library which is a stub, meaning it will fail
+// every time called, usually setting errno to ENOSYS.
+
+// Definitions for POSIX 1003.1b-1993 (aka POSIX.4) scheduling interface.
+// Copyright (C) 1996-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Get type definitions.
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Bit size of the time_t type at glibc build time, RISC-V case.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// RV32 and RV64 both use 64-bit time_t
+
+// Convenience types.
+type X__u_char = uint8 /* types.h:31:23 */
+type X__u_short = uint16 /* types.h:32:28 */
+type X__u_int = uint32 /* types.h:33:22 */
+type X__u_long = uint64 /* types.h:34:27 */
+
+// Fixed-size types, underlying types depend on word size and compiler.
+type X__int8_t = int8 /* types.h:37:21 */
+type X__uint8_t = uint8 /* types.h:38:23 */
+type X__int16_t = int16 /* types.h:39:26 */
+type X__uint16_t = uint16 /* types.h:40:28 */
+type X__int32_t = int32 /* types.h:41:20 */
+type X__uint32_t = uint32 /* types.h:42:22 */
+type X__int64_t = int64 /* types.h:44:25 */
+type X__uint64_t = uint64 /* types.h:45:27 */
+
+// Smallest types with at least a given width.
+type X__int_least8_t = X__int8_t /* types.h:52:18 */
+type X__uint_least8_t = X__uint8_t /* types.h:53:19 */
+type X__int_least16_t = X__int16_t /* types.h:54:19 */
+type X__uint_least16_t = X__uint16_t /* types.h:55:20 */
+type X__int_least32_t = X__int32_t /* types.h:56:19 */
+type X__uint_least32_t = X__uint32_t /* types.h:57:20 */
+type X__int_least64_t = X__int64_t /* types.h:58:19 */
+type X__uint_least64_t = X__uint64_t /* types.h:59:20 */
+
+// quad_t is also 64 bits.
+type X__quad_t = int64 /* types.h:63:18 */
+type X__u_quad_t = uint64 /* types.h:64:27 */
+
+// Largest integral types.
+type X__intmax_t = int64 /* types.h:72:18 */
+type X__uintmax_t = uint64 /* types.h:73:27 */
+
+// The machine-dependent file <bits/typesizes.h> defines __*_T_TYPE
+// macros for each of the OS types we define below. The definitions
+// of those macros must use the following macros for underlying types.
+// We define __S<SIZE>_TYPE and __U<SIZE>_TYPE for the signed and unsigned
+// variants of each of the following integer types on this machine.
+//
+// 16 -- "natural" 16-bit type (always short)
+// 32 -- "natural" 32-bit type (always int)
+// 64 -- "natural" 64-bit type (long or long long)
+// LONG32 -- 32-bit type, traditionally long
+// QUAD -- 64-bit type, traditionally long long
+// WORD -- natural type of __WORDSIZE bits (int or long)
+// LONGWORD -- type of __WORDSIZE bits, traditionally long
+//
+// We distinguish WORD/LONGWORD, 32/LONG32, and 64/QUAD so that the
+// conventional uses of `long' or `long long' type modifiers match the
+// types we define, even when a less-adorned type would be the same size.
+// This matters for (somewhat) portably writing printf/scanf formats for
+// these types, where using the appropriate l or ll format modifiers can
+// make the typedefs and the formats match up across all GNU platforms. If
+// we used `long' when it's 64 bits where `long long' is expected, then the
+// compiler would warn about the formats not matching the argument types,
+// and the programmer changing them to shut up the compiler would break the
+// program's portability.
+//
+// Here we assume what is presently the case in all the GCC configurations
+// we support: long long is always 64 bits, long is always word/address size,
+// and int is always 32 bits.
+
+// No need to mark the typedef with __extension__.
+// bits/typesizes.h -- underlying types for *_t. For the generic Linux ABI.
+// Copyright (C) 2011-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+// Contributed by Chris Metcalf <cmetcalf@tilera.com>, 2011.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// See <bits/types.h> for the meaning of these macros. This file exists so
+// that <bits/types.h> need not vary across different GNU platforms.
+
+// Tell the libc code that off_t and off64_t are actually the same type
+// for all ABI purposes, even if possibly expressed as different base types
+// for C type-checking purposes.
+
+// Same for ino_t and ino64_t.
+
+// And for __rlim_t and __rlim64_t.
+
+// And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t.
+
+// And for getitimer, setitimer and rusage
+
+// Number of descriptors that can fit in an `fd_set'.
+
+// bits/time64.h -- underlying types for __time64_t. RISC-V version.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Define __TIME64_T_TYPE so that it is always a 64-bit type.
+
+// If we already have 64-bit time type then use it.
+
+type X__dev_t = uint64 /* types.h:145:25 */ // Type of device numbers.
+type X__uid_t = uint32 /* types.h:146:25 */ // Type of user identifications.
+type X__gid_t = uint32 /* types.h:147:25 */ // Type of group identifications.
+type X__ino_t = uint64 /* types.h:148:25 */ // Type of file serial numbers.
+type X__ino64_t = uint64 /* types.h:149:27 */ // Type of file serial numbers (LFS).
+type X__mode_t = uint32 /* types.h:150:26 */ // Type of file attribute bitmasks.
+type X__nlink_t = uint32 /* types.h:151:27 */ // Type of file link counts.
+type X__off_t = int64 /* types.h:152:25 */ // Type of file sizes and offsets.
+type X__off64_t = int64 /* types.h:153:27 */ // Type of file sizes and offsets (LFS).
+type X__pid_t = int32 /* types.h:154:25 */ // Type of process identifications.
+type X__fsid_t = struct{ F__val [2]int32 } /* types.h:155:26 */ // Type of file system IDs.
+type X__clock_t = int64 /* types.h:156:27 */ // Type of CPU usage counts.
+type X__rlim_t = uint64 /* types.h:157:26 */ // Type for resource measurement.
+type X__rlim64_t = uint64 /* types.h:158:28 */ // Type for resource measurement (LFS).
+type X__id_t = uint32 /* types.h:159:24 */ // General type for IDs.
+type X__time_t = int64 /* types.h:160:26 */ // Seconds since the Epoch.
+type X__useconds_t = uint32 /* types.h:161:30 */ // Count of microseconds.
+type X__suseconds_t = int64 /* types.h:162:31 */ // Signed count of microseconds.
+type X__suseconds64_t = int64 /* types.h:163:33 */
+
+type X__daddr_t = int32 /* types.h:165:27 */ // The type of a disk address.
+type X__key_t = int32 /* types.h:166:25 */ // Type of an IPC key.
+
+// Clock ID used in clock and timer functions.
+type X__clockid_t = int32 /* types.h:169:29 */
+
+// Timer ID returned by `timer_create'.
+type X__timer_t = uintptr /* types.h:172:12 */
+
+// Type to represent block size.
+type X__blksize_t = int32 /* types.h:175:29 */
+
+// Types from the Large File Support interface.
+
+// Type to count number of disk blocks.
+type X__blkcnt_t = int64 /* types.h:180:28 */
+type X__blkcnt64_t = int64 /* types.h:181:30 */
+
+// Type to count file system blocks.
+type X__fsblkcnt_t = uint64 /* types.h:184:30 */
+type X__fsblkcnt64_t = uint64 /* types.h:185:32 */
+
+// Type to count file system nodes.
+type X__fsfilcnt_t = uint64 /* types.h:188:30 */
+type X__fsfilcnt64_t = uint64 /* types.h:189:32 */
+
+// Type of miscellaneous file system fields.
+type X__fsword_t = int64 /* types.h:192:28 */
+
+type X__ssize_t = int64 /* types.h:194:27 */ // Type of a byte count, or error.
+
+// Signed long type used in system calls.
+type X__syscall_slong_t = int64 /* types.h:197:33 */
+// Unsigned long type used in system calls.
+type X__syscall_ulong_t = uint64 /* types.h:199:33 */
+
+// These few don't really vary by system, they always correspond
+// to one of the other defined types.
+type X__loff_t = X__off64_t /* types.h:203:19 */ // Type of file sizes and offsets (LFS).
+type X__caddr_t = uintptr /* types.h:204:14 */
+
+// Duplicates info from stdint.h but this is used in unistd.h.
+type X__intptr_t = int64 /* types.h:207:25 */
+
+// Duplicate info from sys/socket.h.
+type X__socklen_t = uint32 /* types.h:210:23 */
+
+// C99: An integer type that can be accessed as an atomic entity,
+// even in the presence of asynchronous interrupts.
+// It is not currently necessary for this to be machine-specific.
+type X__sig_atomic_t = int32 /* types.h:215:13 */
+
+// Wide character type.
+// Locale-writers should change this as necessary to
+// be big enough to hold unique values not between 0 and 127,
+// and not (wchar_t) -1, for each defined multibyte character.
+
+// Define this type if we are doing the whole job,
+// or if we want this type in particular.
+
+// A null pointer constant.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Returned by `time'.
+type Time_t = X__time_t /* time_t.h:10:18 */
+
+// NB: Include guard matches what <linux/time.h> uses.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Endian macros for string.h functions
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <http://www.gnu.org/licenses/>.
+
+// Definitions for byte order, according to significance of bytes,
+// from low addresses to high addresses. The value is what you get by
+// putting '4' in the most significant byte, '3' in the second most
+// significant byte, '2' in the second least significant byte, and '1'
+// in the least significant byte, and then writing down one digit for
+// each byte, starting with the byte at the lowest address at the left,
+// and proceeding to the byte with the highest address at the right.
+
+// This file defines `__BYTE_ORDER' for the particular machine.
+
+// RISC-V is little-endian.
+
+// Some machines may need to use a different endianness for floating point
+// values.
+
+// POSIX.1b structure for a time value. This is like a `struct timeval' but
+// has nanoseconds instead of microseconds.
+type Timespec = struct {
+ Ftv_sec X__time_t
+ Ftv_nsec X__syscall_slong_t
+} /* struct_timespec.h:11:1 */
+
+type Pid_t = X__pid_t /* sched.h:38:17 */
+
+// Get system specific constant and data structure definitions.
+// Definitions of constants and data structure for POSIX 1003.1b-1993
+// scheduling interface.
+// Copyright (C) 1996-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Scheduling algorithms.
+
+// Sched parameter structure. Generic version.
+// Copyright (C) 1996-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Data structure to describe a process' schedulability.
+type Sched_param = struct{ Fsched_priority int32 } /* struct_sched_param.h:23:1 */
+
+// Definition of the cpu_set_t structure used by the POSIX 1003.1b-1993
+// scheduling interface.
+// Copyright (C) 1996-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Size definition for CPU sets.
+
+// Type for array elements in 'cpu_set_t'.
+type X__cpu_mask = uint64 /* cpu-set.h:32:25 */
+
+// Basic access functions.
+
+// Data structure to describe CPU mask.
+type Cpu_set_t = struct{ F__bits [16]X__cpu_mask } /* cpu-set.h:42:3 */
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// ISO C99 Standard: 7.23 Date and time <time.h>
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Copyright (C) 1989-2021 Free Software Foundation, Inc.
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+//
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+// <http://www.gnu.org/licenses/>.
+
+// ISO C Standard: 7.17 Common definitions <stddef.h>
+
+// Any one of these symbols __need_* means that GNU libc
+// wants us just to define one data type. So don't define
+// the symbols that indicate this file's entire job has been done.
+
+// This avoids lossage on SunOS but only if stdtypes.h comes first.
+// There's no way to win with the other order! Sun lossage.
+
+// Sequent's header files use _PTRDIFF_T_ in some conflicting way.
+// Just ignore it.
+
+// On VxWorks, <type/vxTypesBase.h> may have defined macros like
+// _TYPE_size_t which will typedef size_t. fixincludes patched the
+// vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is
+// not defined, and so that defining this macro defines _GCC_SIZE_T.
+// If we find that the macros are still defined at this point, we must
+// invoke them so that the type is defined as expected.
+
+// In case nobody has defined these types, but we aren't running under
+// GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and
+// __WCHAR_TYPE__ have reasonable values. This can happen if the
+// parts of GCC is compiled by an older compiler, that actually
+// include gstddef.h, such as collect2.
+
+// Signed type of difference of two pointers.
+
+// Define this type if we are doing the whole job,
+// or if we want this type in particular.
+
+// Unsigned type of `sizeof' something.
+
+// Define this type if we are doing the whole job,
+// or if we want this type in particular.
+
+// Wide character type.
+// Locale-writers should change this as necessary to
+// be big enough to hold unique values not between 0 and 127,
+// and not (wchar_t) -1, for each defined multibyte character.
+
+// Define this type if we are doing the whole job,
+// or if we want this type in particular.
+
+// A null pointer constant.
+
+// This defines CLOCKS_PER_SEC, which is the number of processor clock
+// ticks per second, and possibly a number of other constants.
+// System-dependent timing definitions. Linux version.
+// Copyright (C) 1996-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <time.h> instead.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// ISO/IEC 9899:1999 7.23.1: Components of time
+// The macro `CLOCKS_PER_SEC' is an expression with type `clock_t' that is
+// the number per second of the value returned by the `clock' function.
+// CAE XSH, Issue 4, Version 2: <time.h>
+// The value of CLOCKS_PER_SEC is required to be 1 million on all
+// XSI-conformant systems.
+
+// Identifier for system-wide realtime clock.
+// Monotonic system-wide clock.
+// High-resolution timer from the CPU.
+// Thread-specific CPU-time clock.
+// Monotonic system-wide clock, not adjusted for frequency scaling.
+// Identifier for system-wide realtime clock, updated only on ticks.
+// Monotonic system-wide clock, updated only on ticks.
+// Monotonic system-wide clock that includes time spent in suspension.
+// Like CLOCK_REALTIME but also wakes suspended system.
+// Like CLOCK_BOOTTIME but also wakes suspended system.
+// Like CLOCK_REALTIME but in International Atomic Time.
+
+// Flag to indicate time is absolute.
+
+// Many of the typedefs and structs whose official home is this header
+// may also need to be defined by other headers.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Returned by `clock'.
+type Clock_t = X__clock_t /* clock_t.h:7:19 */
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// ISO C `broken-down time' structure.
+type Tm = struct {
+ Ftm_sec int32
+ Ftm_min int32
+ Ftm_hour int32
+ Ftm_mday int32
+ Ftm_mon int32
+ Ftm_year int32
+ Ftm_wday int32
+ Ftm_yday int32
+ Ftm_isdst int32
+ F__ccgo_pad1 [4]byte
+ Ftm_gmtoff int64
+ Ftm_zone uintptr
+} /* struct_tm.h:7:1 */
+
+// NB: Include guard matches what <linux/time.h> uses.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Clock ID used in clock and timer functions.
+type Clockid_t = X__clockid_t /* clockid_t.h:7:21 */
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Timer ID returned by `timer_create'.
+type Timer_t = X__timer_t /* timer_t.h:7:19 */
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// NB: Include guard matches what <linux/time.h> uses.
+
+// POSIX.1b structure for timer start values and intervals.
+type Itimerspec = struct {
+ Fit_interval struct {
+ Ftv_sec X__time_t
+ Ftv_nsec X__syscall_slong_t
+ }
+ Fit_value struct {
+ Ftv_sec X__time_t
+ Ftv_nsec X__syscall_slong_t
+ }
+} /* struct_itimerspec.h:8:1 */
+
+// Definition of locale_t.
+// Copyright (C) 2017-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Definition of struct __locale_struct and __locale_t.
+// Copyright (C) 1997-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+// Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// POSIX.1-2008: the locale_t type, representing a locale context
+// (implementation-namespace version). This type should be treated
+// as opaque by applications; some details are exposed for the sake of
+// efficiency in e.g. ctype functions.
+
+type X__locale_struct = struct {
+ F__locales [13]uintptr
+ F__ctype_b uintptr
+ F__ctype_tolower uintptr
+ F__ctype_toupper uintptr
+ F__names [13]uintptr
+} /* __locale_t.h:28:1 */
+
+type X__locale_t = uintptr /* __locale_t.h:42:32 */
+
+type Locale_t = X__locale_t /* locale_t.h:24:20 */
+
+// Endian macros for string.h functions
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <http://www.gnu.org/licenses/>.
+
+// Declaration of common pthread types for all architectures.
+// Copyright (C) 2017-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// For internal mutex and condition variable definitions.
+// Common threading primitives definitions for both POSIX and C11.
+// Copyright (C) 2017-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Arch-specific definitions. Each architecture must define the following
+// macros to define the expected sizes of pthread data types:
+//
+// __SIZEOF_PTHREAD_ATTR_T - size of pthread_attr_t.
+// __SIZEOF_PTHREAD_MUTEX_T - size of pthread_mutex_t.
+// __SIZEOF_PTHREAD_MUTEXATTR_T - size of pthread_mutexattr_t.
+// __SIZEOF_PTHREAD_COND_T - size of pthread_cond_t.
+// __SIZEOF_PTHREAD_CONDATTR_T - size of pthread_condattr_t.
+// __SIZEOF_PTHREAD_RWLOCK_T - size of pthread_rwlock_t.
+// __SIZEOF_PTHREAD_RWLOCKATTR_T - size of pthread_rwlockattr_t.
+// __SIZEOF_PTHREAD_BARRIER_T - size of pthread_barrier_t.
+// __SIZEOF_PTHREAD_BARRIERATTR_T - size of pthread_barrierattr_t.
+//
+// The additional macro defines any constraint for the lock alignment
+// inside the thread structures:
+//
+// __LOCK_ALIGNMENT - for internal lock/futex usage.
+//
+// Same idea but for the once locking primitive:
+//
+// __ONCE_ALIGNMENT - for pthread_once_t/once_flag definition.
+
+// Machine-specific pthread type layouts. RISC-V version.
+// Copyright (C) 2011-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Endian macros for string.h functions
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <http://www.gnu.org/licenses/>.
+
+// Common definition of pthread_mutex_t.
+
+type X__pthread_internal_list = struct {
+ F__prev uintptr
+ F__next uintptr
+} /* thread-shared-types.h:49:9 */
+
+// Endian macros for string.h functions
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <http://www.gnu.org/licenses/>.
+
+// Declaration of common pthread types for all architectures.
+// Copyright (C) 2017-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// For internal mutex and condition variable definitions.
+// Common threading primitives definitions for both POSIX and C11.
+// Copyright (C) 2017-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Arch-specific definitions. Each architecture must define the following
+// macros to define the expected sizes of pthread data types:
+//
+// __SIZEOF_PTHREAD_ATTR_T - size of pthread_attr_t.
+// __SIZEOF_PTHREAD_MUTEX_T - size of pthread_mutex_t.
+// __SIZEOF_PTHREAD_MUTEXATTR_T - size of pthread_mutexattr_t.
+// __SIZEOF_PTHREAD_COND_T - size of pthread_cond_t.
+// __SIZEOF_PTHREAD_CONDATTR_T - size of pthread_condattr_t.
+// __SIZEOF_PTHREAD_RWLOCK_T - size of pthread_rwlock_t.
+// __SIZEOF_PTHREAD_RWLOCKATTR_T - size of pthread_rwlockattr_t.
+// __SIZEOF_PTHREAD_BARRIER_T - size of pthread_barrier_t.
+// __SIZEOF_PTHREAD_BARRIERATTR_T - size of pthread_barrierattr_t.
+//
+// The additional macro defines any constraint for the lock alignment
+// inside the thread structures:
+//
+// __LOCK_ALIGNMENT - for internal lock/futex usage.
+//
+// Same idea but for the once locking primitive:
+//
+// __ONCE_ALIGNMENT - for pthread_once_t/once_flag definition.
+
+// Machine-specific pthread type layouts. RISC-V version.
+// Copyright (C) 2011-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Endian macros for string.h functions
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <http://www.gnu.org/licenses/>.
+
+// Common definition of pthread_mutex_t.
+
+type X__pthread_list_t = X__pthread_internal_list /* thread-shared-types.h:53:3 */
+
+type X__pthread_internal_slist = struct{ F__next uintptr } /* thread-shared-types.h:55:9 */
+
+type X__pthread_slist_t = X__pthread_internal_slist /* thread-shared-types.h:58:3 */
+
+// Arch-specific mutex definitions. A generic implementation is provided
+// by sysdeps/nptl/bits/struct_mutex.h. If required, an architecture
+// can override it by defining:
+//
+// 1. struct __pthread_mutex_s (used on both pthread_mutex_t and mtx_t
+// definition). It should contains at least the internal members
+// defined in the generic version.
+//
+// 2. __LOCK_ALIGNMENT for any extra attribute for internal lock used with
+// atomic operations.
+//
+// 3. The macro __PTHREAD_MUTEX_INITIALIZER used for static initialization.
+// It should initialize the mutex internal flag.
+
+// Default mutex implementation struct definitions.
+// Copyright (C) 2019-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <http://www.gnu.org/licenses/>.
+
+// Generic struct for both POSIX and C11 mutexes. New ports are expected
+// to use the default layout, however architecture can redefine it to
+// add arch-specific extension (such as lock-elision). The struct have
+// a size of 32 bytes on LP32 and 40 bytes on LP64 architectures.
+
+type X__pthread_mutex_s = struct {
+ F__lock int32
+ F__count uint32
+ F__owner int32
+ F__nusers uint32
+ F__kind int32
+ F__spins int32
+ F__list X__pthread_list_t
+} /* struct_mutex.h:27:1 */
+
+// Arch-sepecific read-write lock definitions. A generic implementation is
+// provided by struct_rwlock.h. If required, an architecture can override it
+// by defining:
+//
+// 1. struct __pthread_rwlock_arch_t (used on pthread_rwlock_t definition).
+// It should contain at least the internal members defined in the
+// generic version.
+//
+// 2. The macro __PTHREAD_RWLOCK_INITIALIZER used for static initialization.
+// It should initialize the rwlock internal type.
+
+// RISC-V internal rwlock struct definitions.
+// Copyright (C) 2019-2021 Free Software Foundation, Inc.
+//
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// There is a lot of padding in this structure. While it's not strictly
+// necessary on RISC-V, we're going to leave it in to be on the safe side in
+// case it's needed in the future. Most other architectures have the padding,
+// so this gives us the same extensibility as everyone else has.
+type X__pthread_rwlock_arch_t = struct {
+ F__readers uint32
+ F__writers uint32
+ F__wrphase_futex uint32
+ F__writers_futex uint32
+ F__pad3 uint32
+ F__pad4 uint32
+ F__cur_writer int32
+ F__shared int32
+ F__pad1 uint64
+ F__pad2 uint64
+ F__flags uint32
+ F__ccgo_pad1 [4]byte
+} /* struct_rwlock.h:27:1 */
+
+// Common definition of pthread_cond_t.
+
+type X__pthread_cond_s = struct {
+ F__0 struct{ F__wseq uint64 }
+ F__8 struct{ F__g1_start uint64 }
+ F__g_refs [2]uint32
+ F__g_size [2]uint32
+ F__g1_orig_size uint32
+ F__wrefs uint32
+ F__g_signals [2]uint32
+} /* thread-shared-types.h:92:1 */
+
+type X__tss_t = uint32 /* thread-shared-types.h:119:22 */
+type X__thrd_t = uint64 /* thread-shared-types.h:120:27 */
+
+type X__once_flag = struct{ F__data int32 } /* thread-shared-types.h:125:3 */
+
+// Thread identifiers. The structure of the attribute type is not
+// exposed on purpose.
+type Pthread_t = uint64 /* pthreadtypes.h:27:27 */
+
+// Data structures for mutex handling. The structure of the attribute
+// type is not exposed on purpose.
+type Pthread_mutexattr_t = struct {
+ F__ccgo_pad1 [0]uint32
+ F__size [4]uint8
+} /* pthreadtypes.h:36:3 */
+
+// Data structure for condition variable handling. The structure of
+// the attribute type is not exposed on purpose.
+type Pthread_condattr_t = struct {
+ F__ccgo_pad1 [0]uint32
+ F__size [4]uint8
+} /* pthreadtypes.h:45:3 */
+
+// Keys for thread-specific data
+type Pthread_key_t = uint32 /* pthreadtypes.h:49:22 */
+
+// Once-only execution
+type Pthread_once_t = int32 /* pthreadtypes.h:53:30 */
+
+type Pthread_attr_t1 = struct {
+ F__ccgo_pad1 [0]uint64
+ F__size [56]uint8
+} /* pthreadtypes.h:56:1 */
+
+type Pthread_attr_t = Pthread_attr_t1 /* pthreadtypes.h:62:30 */
+
+type Pthread_mutex_t = struct{ F__data X__pthread_mutex_s } /* pthreadtypes.h:72:3 */
+
+type Pthread_cond_t = struct{ F__data X__pthread_cond_s } /* pthreadtypes.h:80:3 */
+
+// Data structure for reader-writer lock variable handling. The
+// structure of the attribute type is deliberately not exposed.
+type Pthread_rwlock_t = struct{ F__data X__pthread_rwlock_arch_t } /* pthreadtypes.h:91:3 */
+
+type Pthread_rwlockattr_t = struct {
+ F__ccgo_pad1 [0]uint64
+ F__size [8]uint8
+} /* pthreadtypes.h:97:3 */
+
+// POSIX spinlock data type.
+type Pthread_spinlock_t = int32 /* pthreadtypes.h:103:22 */
+
+// POSIX barriers data type. The structure of the type is
+// deliberately not exposed.
+type Pthread_barrier_t = struct {
+ F__ccgo_pad1 [0]uint64
+ F__size [32]uint8
+} /* pthreadtypes.h:112:3 */
+
+type Pthread_barrierattr_t = struct {
+ F__ccgo_pad1 [0]uint32
+ F__size [4]uint8
+} /* pthreadtypes.h:118:3 */
+
+// Define the machine-dependent type `jmp_buf'. RISC-V version.
+// Copyright (C) 2011-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+type X__jmp_buf_internal_tag = struct {
+ F__pc int64
+ F__regs [12]int64
+ F__sp int64
+ F__fpregs [12]float64
+} /* setjmp.h:22:9 */
+
+// Define the machine-dependent type `jmp_buf'. RISC-V version.
+// Copyright (C) 2011-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+type X__jmp_buf = [1]X__jmp_buf_internal_tag /* setjmp.h:37:5 */
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// NB: Include guard matches what <linux/time.h> uses.
+
+type X__sigset_t = struct{ F__val [16]uint64 } /* __sigset_t.h:8:3 */
+
+// Define struct __jmp_buf_tag.
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Define the machine-dependent type `jmp_buf'. RISC-V version.
+// Copyright (C) 2011-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Calling environment, plus possibly a saved signal mask.
+type X__jmp_buf_tag = struct {
+ F__jmpbuf X__jmp_buf
+ F__mask_was_saved int32
+ F__ccgo_pad1 [4]byte
+ F__saved_mask X__sigset_t
+} /* struct___jmp_buf_tag.h:26:1 */
+
+// Conditional variable handling.
+
+// Cleanup buffers
+type X_pthread_cleanup_buffer = struct {
+ F__routine uintptr
+ F__arg uintptr
+ F__canceltype int32
+ F__ccgo_pad1 [4]byte
+ F__prev uintptr
+} /* pthread.h:159:1 */
+
+// Cancellation handling with integration into exception handling.
+
+type X__cancel_jmp_buf_tag = struct {
+ F__cancel_jmp_buf X__jmp_buf
+ F__mask_was_saved int32
+ F__ccgo_pad1 [4]byte
+} /* pthread.h:538:1 */
+
+type X__pthread_unwind_buf_t = struct {
+ F__cancel_jmp_buf [1]X__cancel_jmp_buf_tag
+ F__pad [4]uintptr
+} /* pthread.h:548:3 */
+
+// No special attributes by default.
+
+// Structure to hold the cleanup handler information.
+type X__pthread_cleanup_frame = struct {
+ F__cancel_routine uintptr
+ F__cancel_arg uintptr
+ F__do_it int32
+ F__cancel_type int32
+} /* pthread.h:557:1 */
+
+var _ uint8 /* gen.c:2:13: */
diff --git a/vendor/modernc.org/libc/pwd/capi_linux_riscv64.go b/vendor/modernc.org/libc/pwd/capi_linux_riscv64.go
new file mode 100644
index 00000000..b5b0b965
--- /dev/null
+++ b/vendor/modernc.org/libc/pwd/capi_linux_riscv64.go
@@ -0,0 +1,5 @@
+// Code generated by 'ccgo pwd/gen.c -crt-import-path -export-defines -export-enums -export-externs X -export-fields F -export-structs -export-typedefs -header -hide _OSSwapInt16,_OSSwapInt32,_OSSwapInt64 -o pwd/pwd_linux_riscv64.go -pkgname pwd', DO NOT EDIT.
+
+package pwd
+
+var CAPI = map[string]struct{}{}
diff --git a/vendor/modernc.org/libc/pwd/pwd_linux_riscv64.go b/vendor/modernc.org/libc/pwd/pwd_linux_riscv64.go
new file mode 100644
index 00000000..c8727bd7
--- /dev/null
+++ b/vendor/modernc.org/libc/pwd/pwd_linux_riscv64.go
@@ -0,0 +1,958 @@
+// Code generated by 'ccgo pwd/gen.c -crt-import-path "" -export-defines "" -export-enums "" -export-externs X -export-fields F -export-structs "" -export-typedefs "" -header -hide _OSSwapInt16,_OSSwapInt32,_OSSwapInt64 -o pwd/pwd_linux_riscv64.go -pkgname pwd', DO NOT EDIT.
+
+package pwd
+
+import (
+ "math"
+ "reflect"
+ "sync/atomic"
+ "unsafe"
+)
+
+var _ = math.Pi
+var _ reflect.Kind
+var _ atomic.Value
+var _ unsafe.Pointer
+
+const (
+ NSS_BUFLEN_PASSWD = 1024
+ X_ATFILE_SOURCE = 1
+ X_BITS_TIME64_H = 1
+ X_BITS_TYPESIZES_H = 1
+ X_BITS_TYPES_H = 1
+ X_BSD_SIZE_T_ = 0
+ X_BSD_SIZE_T_DEFINED_ = 0
+ X_DEFAULT_SOURCE = 1
+ X_FEATURES_H = 1
+ X_FILE_OFFSET_BITS = 64
+ X_GCC_SIZE_T = 0
+ X_LP64 = 1
+ X_POSIX_C_SOURCE = 200809
+ X_POSIX_SOURCE = 1
+ X_PWD_H = 1
+ X_SIZET_ = 0
+ X_SIZE_T = 0
+ X_SIZE_T_ = 0
+ X_SIZE_T_DECLARED = 0
+ X_SIZE_T_DEFINED = 0
+ X_SIZE_T_DEFINED_ = 0
+ X_STDC_PREDEF_H = 1
+ X_SYS_CDEFS_H = 1
+ X_SYS_SIZE_T_H = 0
+ X_T_SIZE = 0
+ X_T_SIZE_ = 0
+ Linux = 1
+ Unix = 1
+)
+
+type Ptrdiff_t = int64 /* <builtin>:3:26 */
+
+type Size_t = uint64 /* <builtin>:9:23 */
+
+type Wchar_t = int32 /* <builtin>:15:24 */
+
+type X__int128_t = struct {
+ Flo int64
+ Fhi int64
+} /* <builtin>:21:43 */ // must match modernc.org/mathutil.Int128
+type X__uint128_t = struct {
+ Flo uint64
+ Fhi uint64
+} /* <builtin>:22:44 */ // must match modernc.org/mathutil.Int128
+
+type X__builtin_va_list = uintptr /* <builtin>:46:14 */
+type X__float128 = float64 /* <builtin>:47:21 */
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// POSIX Standard: 9.2.2 User Database Access <pwd.h>
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// These are defined by the user (or the compiler)
+// to specify the desired environment:
+//
+// __STRICT_ANSI__ ISO Standard C.
+// _ISOC99_SOURCE Extensions to ISO C89 from ISO C99.
+// _ISOC11_SOURCE Extensions to ISO C99 from ISO C11.
+// _ISOC2X_SOURCE Extensions to ISO C99 from ISO C2X.
+// __STDC_WANT_LIB_EXT2__
+// Extensions to ISO C99 from TR 27431-2:2010.
+// __STDC_WANT_IEC_60559_BFP_EXT__
+// Extensions to ISO C11 from TS 18661-1:2014.
+// __STDC_WANT_IEC_60559_FUNCS_EXT__
+// Extensions to ISO C11 from TS 18661-4:2015.
+// __STDC_WANT_IEC_60559_TYPES_EXT__
+// Extensions to ISO C11 from TS 18661-3:2015.
+// __STDC_WANT_IEC_60559_EXT__
+// ISO C2X interfaces defined only in Annex F.
+//
+// _POSIX_SOURCE IEEE Std 1003.1.
+// _POSIX_C_SOURCE If ==1, like _POSIX_SOURCE; if >=2 add IEEE Std 1003.2;
+// if >=199309L, add IEEE Std 1003.1b-1993;
+// if >=199506L, add IEEE Std 1003.1c-1995;
+// if >=200112L, all of IEEE 1003.1-2004
+// if >=200809L, all of IEEE 1003.1-2008
+// _XOPEN_SOURCE Includes POSIX and XPG things. Set to 500 if
+// Single Unix conformance is wanted, to 600 for the
+// sixth revision, to 700 for the seventh revision.
+// _XOPEN_SOURCE_EXTENDED XPG things and X/Open Unix extensions.
+// _LARGEFILE_SOURCE Some more functions for correct standard I/O.
+// _LARGEFILE64_SOURCE Additional functionality from LFS for large files.
+// _FILE_OFFSET_BITS=N Select default filesystem interface.
+// _ATFILE_SOURCE Additional *at interfaces.
+// _DYNAMIC_STACK_SIZE_SOURCE Select correct (but non compile-time constant)
+// MINSIGSTKSZ, SIGSTKSZ and PTHREAD_STACK_MIN.
+// _GNU_SOURCE All of the above, plus GNU extensions.
+// _DEFAULT_SOURCE The default set of features (taking precedence over
+// __STRICT_ANSI__).
+//
+// _FORTIFY_SOURCE Add security hardening to many library functions.
+// Set to 1 or 2; 2 performs stricter checks than 1.
+//
+// _REENTRANT, _THREAD_SAFE
+// Obsolete; equivalent to _POSIX_C_SOURCE=199506L.
+//
+// The `-ansi' switch to the GNU C compiler, and standards conformance
+// options such as `-std=c99', define __STRICT_ANSI__. If none of
+// these are defined, or if _DEFAULT_SOURCE is defined, the default is
+// to have _POSIX_SOURCE set to one and _POSIX_C_SOURCE set to
+// 200809L, as well as enabling miscellaneous functions from BSD and
+// SVID. If more than one of these are defined, they accumulate. For
+// example __STRICT_ANSI__, _POSIX_SOURCE and _POSIX_C_SOURCE together
+// give you ISO C, 1003.1, and 1003.2, but nothing else.
+//
+// These are defined by this file and are used by the
+// header files to decide what to declare or define:
+//
+// __GLIBC_USE (F) Define things from feature set F. This is defined
+// to 1 or 0; the subsequent macros are either defined
+// or undefined, and those tests should be moved to
+// __GLIBC_USE.
+// __USE_ISOC11 Define ISO C11 things.
+// __USE_ISOC99 Define ISO C99 things.
+// __USE_ISOC95 Define ISO C90 AMD1 (C95) things.
+// __USE_ISOCXX11 Define ISO C++11 things.
+// __USE_POSIX Define IEEE Std 1003.1 things.
+// __USE_POSIX2 Define IEEE Std 1003.2 things.
+// __USE_POSIX199309 Define IEEE Std 1003.1, and .1b things.
+// __USE_POSIX199506 Define IEEE Std 1003.1, .1b, .1c and .1i things.
+// __USE_XOPEN Define XPG things.
+// __USE_XOPEN_EXTENDED Define X/Open Unix things.
+// __USE_UNIX98 Define Single Unix V2 things.
+// __USE_XOPEN2K Define XPG6 things.
+// __USE_XOPEN2KXSI Define XPG6 XSI things.
+// __USE_XOPEN2K8 Define XPG7 things.
+// __USE_XOPEN2K8XSI Define XPG7 XSI things.
+// __USE_LARGEFILE Define correct standard I/O things.
+// __USE_LARGEFILE64 Define LFS things with separate names.
+// __USE_FILE_OFFSET64 Define 64bit interface as default.
+// __USE_MISC Define things from 4.3BSD or System V Unix.
+// __USE_ATFILE Define *at interfaces and AT_* constants for them.
+// __USE_DYNAMIC_STACK_SIZE Define correct (but non compile-time constant)
+// MINSIGSTKSZ, SIGSTKSZ and PTHREAD_STACK_MIN.
+// __USE_GNU Define GNU extensions.
+// __USE_FORTIFY_LEVEL Additional security measures used, according to level.
+//
+// The macros `__GNU_LIBRARY__', `__GLIBC__', and `__GLIBC_MINOR__' are
+// defined by this file unconditionally. `__GNU_LIBRARY__' is provided
+// only for compatibility. All new code should use the other symbols
+// to test for features.
+//
+// All macros listed above as possibly being defined by this file are
+// explicitly undefined if they are not explicitly defined.
+// Feature-test macros that are not defined by the user or compiler
+// but are implied by the other feature-test macros defined (or by the
+// lack of any definitions) are defined by the file.
+//
+// ISO C feature test macros depend on the definition of the macro
+// when an affected header is included, not when the first system
+// header is included, and so they are handled in
+// <bits/libc-header-start.h>, which does not have a multiple include
+// guard. Feature test macros that can be handled from the first
+// system header included are handled here.
+
+// Undefine everything, so we get a clean slate.
+
+// Suppress kernel-name space pollution unless user expressedly asks
+// for it.
+
+// Convenience macro to test the version of gcc.
+// Use like this:
+// #if __GNUC_PREREQ (2,8)
+// ... code requiring gcc 2.8 or later ...
+// #endif
+// Note: only works for GCC 2.0 and later, because __GNUC_MINOR__ was
+// added in 2.0.
+
+// Similarly for clang. Features added to GCC after version 4.2 may
+// or may not also be available in clang, and clang's definitions of
+// __GNUC(_MINOR)__ are fixed at 4 and 2 respectively. Not all such
+// features can be queried via __has_extension/__has_feature.
+
+// Whether to use feature set F.
+
+// _BSD_SOURCE and _SVID_SOURCE are deprecated aliases for
+// _DEFAULT_SOURCE. If _DEFAULT_SOURCE is present we do not
+// issue a warning; the expectation is that the source is being
+// transitioned to use the new macro.
+
+// If _GNU_SOURCE was defined by the user, turn on all the other features.
+
+// If nothing (other than _GNU_SOURCE and _DEFAULT_SOURCE) is defined,
+// define _DEFAULT_SOURCE.
+
+// This is to enable the ISO C2X extension.
+
+// This is to enable the ISO C11 extension.
+
+// This is to enable the ISO C99 extension.
+
+// This is to enable the ISO C90 Amendment 1:1995 extension.
+
+// If none of the ANSI/POSIX macros are defined, or if _DEFAULT_SOURCE
+// is defined, use POSIX.1-2008 (or another version depending on
+// _XOPEN_SOURCE).
+
+// Some C libraries once required _REENTRANT and/or _THREAD_SAFE to be
+// defined in all multithreaded code. GNU libc has not required this
+// for many years. We now treat them as compatibility synonyms for
+// _POSIX_C_SOURCE=199506L, which is the earliest level of POSIX with
+// comprehensive support for multithreaded code. Using them never
+// lowers the selected level of POSIX conformance, only raises it.
+
+// Features part to handle 64-bit time_t support.
+// Copyright (C) 2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// We need to know the word size in order to check the time size.
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Bit size of the time_t type at glibc build time, RISC-V case.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// RV32 and RV64 both use 64-bit time_t
+
+// The function 'gets' existed in C89, but is impossible to use
+// safely. It has been removed from ISO C11 and ISO C++14. Note: for
+// compatibility with various implementations of <cstdio>, this test
+// must consider only the value of __cplusplus when compiling C++.
+
+// GNU formerly extended the scanf functions with modified format
+// specifiers %as, %aS, and %a[...] that allocate a buffer for the
+// input using malloc. This extension conflicts with ISO C99, which
+// defines %a as a standalone format specifier that reads a floating-
+// point number; moreover, POSIX.1-2008 provides the same feature
+// using the modifier letter 'm' instead (%ms, %mS, %m[...]).
+//
+// We now follow C99 unless GNU extensions are active and the compiler
+// is specifically in C89 or C++98 mode (strict or not). For
+// instance, with GCC, -std=gnu11 will have C99-compliant scanf with
+// or without -D_GNU_SOURCE, but -std=c89 -D_GNU_SOURCE will have the
+// old extension.
+
+// Get definitions of __STDC_* predefined macros, if the compiler has
+// not preincluded this header automatically.
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// This macro indicates that the installed library is the GNU C Library.
+// For historic reasons the value now is 6 and this will stay from now
+// on. The use of this variable is deprecated. Use __GLIBC__ and
+// __GLIBC_MINOR__ now (see below) when you want to test for a specific
+// GNU C library version and use the values in <gnu/lib-names.h> to get
+// the sonames of the shared libraries.
+
+// Major and minor version number of the GNU C library package. Use
+// these macros to test for features in specific releases.
+
+// This is here only because every header file already includes this one.
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// We are almost always included from features.h.
+
+// The GNU libc does not support any K&R compilers or the traditional mode
+// of ISO C compilers anymore. Check for some of the combinations not
+// supported anymore.
+
+// Some user header file might have defined this before.
+
+// Compilers that lack __has_attribute may object to
+// #if defined __has_attribute && __has_attribute (...)
+// even though they do not need to evaluate the right-hand side of the &&.
+// Similarly for __has_builtin, etc.
+
+// All functions, except those with callbacks or those that
+// synchronize memory, are leaf functions.
+
+// GCC can always grok prototypes. For C++ programs we add throw()
+// to help it optimize the function calls. But this only works with
+// gcc 2.8.x and egcs. For gcc 3.4 and up we even mark C functions
+// as non-throwing using a function attribute since programs can use
+// the -fexceptions options for C code as well.
+
+// These two macros are not used in glibc anymore. They are kept here
+// only because some other projects expect the macros to be defined.
+
+// For these things, GCC behaves the ANSI way normally,
+// and the non-ANSI way under -traditional.
+
+// This is not a typedef so `const __ptr_t' does the right thing.
+
+// C++ needs to know that types and declarations are C, not C++.
+
+// Fortify support.
+
+// Use __builtin_dynamic_object_size at _FORTIFY_SOURCE=3 when available.
+
+// Support for flexible arrays.
+// Headers that should use flexible arrays only if they're "real"
+// (e.g. only if they won't affect sizeof()) should test
+// #if __glibc_c99_flexarr_available.
+
+// __asm__ ("xyz") is used throughout the headers to rename functions
+// at the assembly language level. This is wrapped by the __REDIRECT
+// macro, in order to support compilers that can do this some other
+// way. When compilers don't support asm-names at all, we have to do
+// preprocessor tricks instead (which don't have exactly the right
+// semantics, but it's the best we can do).
+//
+// Example:
+// int __REDIRECT(setpgrp, (__pid_t pid, __pid_t pgrp), setpgid);
+
+//
+// #elif __SOME_OTHER_COMPILER__
+//
+// # define __REDIRECT(name, proto, alias) name proto; _Pragma("let " #name " = " #alias)
+
+// GCC and clang have various useful declarations that can be made with
+// the '__attribute__' syntax. All of the ways we use this do fine if
+// they are omitted for compilers that don't understand it.
+
+// At some point during the gcc 2.96 development the `malloc' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+
+// Tell the compiler which arguments to an allocation function
+// indicate the size of the allocation.
+
+// At some point during the gcc 2.96 development the `pure' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+
+// This declaration tells the compiler that the value is constant.
+
+// At some point during the gcc 3.1 development the `used' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+
+// Since version 3.2, gcc allows marking deprecated functions.
+
+// Since version 4.5, gcc also allows one to specify the message printed
+// when a deprecated function is used. clang claims to be gcc 4.2, but
+// may also support this feature.
+
+// At some point during the gcc 2.8 development the `format_arg' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+// If several `format_arg' attributes are given for the same function, in
+// gcc-3.0 and older, all but the last one are ignored. In newer gccs,
+// all designated arguments are considered.
+
+// At some point during the gcc 2.97 development the `strfmon' format
+// attribute for functions was introduced. We don't want to use it
+// unconditionally (although this would be possible) since it
+// generates warnings.
+
+// The nonnull function attribute marks pointer parameters that
+// must not be NULL.
+
+// The returns_nonnull function attribute marks the return type of the function
+// as always being non-null.
+
+// If fortification mode, we warn about unused results of certain
+// function calls which can lead to problems.
+
+// Forces a function to be always inlined.
+// The Linux kernel defines __always_inline in stddef.h (283d7573), and
+// it conflicts with this definition. Therefore undefine it first to
+// allow either header to be included first.
+
+// Associate error messages with the source location of the call site rather
+// than with the source location inside the function.
+
+// GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
+// inline semantics, unless -fgnu89-inline is used. Using __GNUC_STDC_INLINE__
+// or __GNUC_GNU_INLINE is not a good enough check for gcc because gcc versions
+// older than 4.3 may define these macros and still not guarantee GNU inlining
+// semantics.
+//
+// clang++ identifies itself as gcc-4.2, but has support for GNU inlining
+// semantics, that can be checked for by using the __GNUC_STDC_INLINE_ and
+// __GNUC_GNU_INLINE__ macro definitions.
+
+// GCC 4.3 and above allow passing all anonymous arguments of an
+// __extern_always_inline function to some other vararg function.
+
+// It is possible to compile containing GCC extensions even if GCC is
+// run in pedantic mode if the uses are carefully marked using the
+// `__extension__' keyword. But this is not generally available before
+// version 2.8.
+
+// __restrict is known in EGCS 1.2 and above, and in clang.
+// It works also in C++ mode (outside of arrays), but only when spelled
+// as '__restrict', not 'restrict'.
+
+// ISO C99 also allows to declare arrays as non-overlapping. The syntax is
+// array_name[restrict]
+// GCC 3.1 and clang support this.
+// This syntax is not usable in C++ mode.
+
+// Describes a char array whose address can safely be passed as the first
+// argument to strncpy and strncat, as the char array is not necessarily
+// a NUL-terminated string.
+
+// Undefine (also defined in libc-symbols.h).
+// Copies attributes from the declaration or type referenced by
+// the argument.
+
+// The #ifndef lets Gnulib avoid including these on non-glibc
+// platforms, where the includes typically do not exist.
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Properties of long double type. ldbl-128 version.
+// Copyright (C) 2016-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// long double is distinct from double, so there is nothing to
+// define here.
+
+// __glibc_macro_warning (MESSAGE) issues warning MESSAGE. This is
+// intended for use in preprocessor macros.
+//
+// Note: MESSAGE must be a _single_ string; concatenation of string
+// literals is not supported.
+
+// Generic selection (ISO C11) is a C-only feature, available in GCC
+// since version 4.9. Previous versions do not provide generic
+// selection, even though they might set __STDC_VERSION__ to 201112L,
+// when in -std=c11 mode. Thus, we must check for !defined __GNUC__
+// when testing __STDC_VERSION__ for generic selection support.
+// On the other hand, Clang also defines __GNUC__, so a clang-specific
+// check is required to enable the use of generic selection.
+
+// Designates a 1-based positional argument ref-index of pointer type
+// that can be used to access size-index elements of the pointed-to
+// array according to access mode, or at least one element when
+// size-index is not provided:
+// access (access-mode, <ref-index> [, <size-index>])
+
+// Designates dealloc as a function to call to deallocate objects
+// allocated by the declared function.
+
+// Specify that a function such as setjmp or vfork may return
+// twice.
+
+// If we don't have __REDIRECT, prototypes will be missing if
+// __USE_FILE_OFFSET64 but not __USE_LARGEFILE[64].
+
+// Decide whether we can define 'extern inline' functions in headers.
+
+// This is here only because every header file already includes this one.
+// Get the definitions of all the appropriate `__stub_FUNCTION' symbols.
+// <gnu/stubs.h> contains `#define __stub_FUNCTION' when FUNCTION is a stub
+// that will always return failure (and set errno to ENOSYS).
+// This file is automatically generated.
+// This file selects the right generated file of `__stub_FUNCTION' macros
+// based on the architecture being compiled for.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// This file is automatically generated.
+// It defines a symbol `__stub_FUNCTION' for each function
+// in the C library which is a stub, meaning it will fail
+// every time called, usually setting errno to ENOSYS.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Bit size of the time_t type at glibc build time, RISC-V case.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// RV32 and RV64 both use 64-bit time_t
+
+// Convenience types.
+type X__u_char = uint8 /* types.h:31:23 */
+type X__u_short = uint16 /* types.h:32:28 */
+type X__u_int = uint32 /* types.h:33:22 */
+type X__u_long = uint64 /* types.h:34:27 */
+
+// Fixed-size types, underlying types depend on word size and compiler.
+type X__int8_t = int8 /* types.h:37:21 */
+type X__uint8_t = uint8 /* types.h:38:23 */
+type X__int16_t = int16 /* types.h:39:26 */
+type X__uint16_t = uint16 /* types.h:40:28 */
+type X__int32_t = int32 /* types.h:41:20 */
+type X__uint32_t = uint32 /* types.h:42:22 */
+type X__int64_t = int64 /* types.h:44:25 */
+type X__uint64_t = uint64 /* types.h:45:27 */
+
+// Smallest types with at least a given width.
+type X__int_least8_t = X__int8_t /* types.h:52:18 */
+type X__uint_least8_t = X__uint8_t /* types.h:53:19 */
+type X__int_least16_t = X__int16_t /* types.h:54:19 */
+type X__uint_least16_t = X__uint16_t /* types.h:55:20 */
+type X__int_least32_t = X__int32_t /* types.h:56:19 */
+type X__uint_least32_t = X__uint32_t /* types.h:57:20 */
+type X__int_least64_t = X__int64_t /* types.h:58:19 */
+type X__uint_least64_t = X__uint64_t /* types.h:59:20 */
+
+// quad_t is also 64 bits.
+type X__quad_t = int64 /* types.h:63:18 */
+type X__u_quad_t = uint64 /* types.h:64:27 */
+
+// Largest integral types.
+type X__intmax_t = int64 /* types.h:72:18 */
+type X__uintmax_t = uint64 /* types.h:73:27 */
+
+// The machine-dependent file <bits/typesizes.h> defines __*_T_TYPE
+// macros for each of the OS types we define below. The definitions
+// of those macros must use the following macros for underlying types.
+// We define __S<SIZE>_TYPE and __U<SIZE>_TYPE for the signed and unsigned
+// variants of each of the following integer types on this machine.
+//
+// 16 -- "natural" 16-bit type (always short)
+// 32 -- "natural" 32-bit type (always int)
+// 64 -- "natural" 64-bit type (long or long long)
+// LONG32 -- 32-bit type, traditionally long
+// QUAD -- 64-bit type, traditionally long long
+// WORD -- natural type of __WORDSIZE bits (int or long)
+// LONGWORD -- type of __WORDSIZE bits, traditionally long
+//
+// We distinguish WORD/LONGWORD, 32/LONG32, and 64/QUAD so that the
+// conventional uses of `long' or `long long' type modifiers match the
+// types we define, even when a less-adorned type would be the same size.
+// This matters for (somewhat) portably writing printf/scanf formats for
+// these types, where using the appropriate l or ll format modifiers can
+// make the typedefs and the formats match up across all GNU platforms. If
+// we used `long' when it's 64 bits where `long long' is expected, then the
+// compiler would warn about the formats not matching the argument types,
+// and the programmer changing them to shut up the compiler would break the
+// program's portability.
+//
+// Here we assume what is presently the case in all the GCC configurations
+// we support: long long is always 64 bits, long is always word/address size,
+// and int is always 32 bits.
+
+// No need to mark the typedef with __extension__.
+// bits/typesizes.h -- underlying types for *_t. For the generic Linux ABI.
+// Copyright (C) 2011-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+// Contributed by Chris Metcalf <cmetcalf@tilera.com>, 2011.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// See <bits/types.h> for the meaning of these macros. This file exists so
+// that <bits/types.h> need not vary across different GNU platforms.
+
+// Tell the libc code that off_t and off64_t are actually the same type
+// for all ABI purposes, even if possibly expressed as different base types
+// for C type-checking purposes.
+
+// Same for ino_t and ino64_t.
+
+// And for __rlim_t and __rlim64_t.
+
+// And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t.
+
+// And for getitimer, setitimer and rusage
+
+// Number of descriptors that can fit in an `fd_set'.
+
+// bits/time64.h -- underlying types for __time64_t. RISC-V version.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Define __TIME64_T_TYPE so that it is always a 64-bit type.
+
+// If we already have 64-bit time type then use it.
+
+type X__dev_t = uint64 /* types.h:145:25 */ // Type of device numbers.
+type X__uid_t = uint32 /* types.h:146:25 */ // Type of user identifications.
+type X__gid_t = uint32 /* types.h:147:25 */ // Type of group identifications.
+type X__ino_t = uint64 /* types.h:148:25 */ // Type of file serial numbers.
+type X__ino64_t = uint64 /* types.h:149:27 */ // Type of file serial numbers (LFS).
+type X__mode_t = uint32 /* types.h:150:26 */ // Type of file attribute bitmasks.
+type X__nlink_t = uint32 /* types.h:151:27 */ // Type of file link counts.
+type X__off_t = int64 /* types.h:152:25 */ // Type of file sizes and offsets.
+type X__off64_t = int64 /* types.h:153:27 */ // Type of file sizes and offsets (LFS).
+type X__pid_t = int32 /* types.h:154:25 */ // Type of process identifications.
+type X__fsid_t = struct{ F__val [2]int32 } /* types.h:155:26 */ // Type of file system IDs.
+type X__clock_t = int64 /* types.h:156:27 */ // Type of CPU usage counts.
+type X__rlim_t = uint64 /* types.h:157:26 */ // Type for resource measurement.
+type X__rlim64_t = uint64 /* types.h:158:28 */ // Type for resource measurement (LFS).
+type X__id_t = uint32 /* types.h:159:24 */ // General type for IDs.
+type X__time_t = int64 /* types.h:160:26 */ // Seconds since the Epoch.
+type X__useconds_t = uint32 /* types.h:161:30 */ // Count of microseconds.
+type X__suseconds_t = int64 /* types.h:162:31 */ // Signed count of microseconds.
+type X__suseconds64_t = int64 /* types.h:163:33 */
+
+type X__daddr_t = int32 /* types.h:165:27 */ // The type of a disk address.
+type X__key_t = int32 /* types.h:166:25 */ // Type of an IPC key.
+
+// Clock ID used in clock and timer functions.
+type X__clockid_t = int32 /* types.h:169:29 */
+
+// Timer ID returned by `timer_create'.
+type X__timer_t = uintptr /* types.h:172:12 */
+
+// Type to represent block size.
+type X__blksize_t = int32 /* types.h:175:29 */
+
+// Types from the Large File Support interface.
+
+// Type to count number of disk blocks.
+type X__blkcnt_t = int64 /* types.h:180:28 */
+type X__blkcnt64_t = int64 /* types.h:181:30 */
+
+// Type to count file system blocks.
+type X__fsblkcnt_t = uint64 /* types.h:184:30 */
+type X__fsblkcnt64_t = uint64 /* types.h:185:32 */
+
+// Type to count file system nodes.
+type X__fsfilcnt_t = uint64 /* types.h:188:30 */
+type X__fsfilcnt64_t = uint64 /* types.h:189:32 */
+
+// Type of miscellaneous file system fields.
+type X__fsword_t = int64 /* types.h:192:28 */
+
+type X__ssize_t = int64 /* types.h:194:27 */ // Type of a byte count, or error.
+
+// Signed long type used in system calls.
+type X__syscall_slong_t = int64 /* types.h:197:33 */
+// Unsigned long type used in system calls.
+type X__syscall_ulong_t = uint64 /* types.h:199:33 */
+
+// These few don't really vary by system, they always correspond
+// to one of the other defined types.
+type X__loff_t = X__off64_t /* types.h:203:19 */ // Type of file sizes and offsets (LFS).
+type X__caddr_t = uintptr /* types.h:204:14 */
+
+// Duplicates info from stdint.h but this is used in unistd.h.
+type X__intptr_t = int64 /* types.h:207:25 */
+
+// Duplicate info from sys/socket.h.
+type X__socklen_t = uint32 /* types.h:210:23 */
+
+// C99: An integer type that can be accessed as an atomic entity,
+// even in the presence of asynchronous interrupts.
+// It is not currently necessary for this to be machine-specific.
+type X__sig_atomic_t = int32 /* types.h:215:13 */
+
+// Wide character type.
+// Locale-writers should change this as necessary to
+// be big enough to hold unique values not between 0 and 127,
+// and not (wchar_t) -1, for each defined multibyte character.
+
+// Define this type if we are doing the whole job,
+// or if we want this type in particular.
+
+// A null pointer constant.
+
+// The Single Unix specification says that some more types are
+// available here.
+type Gid_t = X__gid_t /* pwd.h:38:17 */
+
+type Uid_t = X__uid_t /* pwd.h:43:17 */
+
+// A record in the user database.
+type Passwd = struct {
+ Fpw_name uintptr
+ Fpw_passwd uintptr
+ Fpw_uid X__uid_t
+ Fpw_gid X__gid_t
+ Fpw_gecos uintptr
+ Fpw_dir uintptr
+ Fpw_shell uintptr
+} /* pwd.h:49:1 */
+
+var _ uint8 /* gen.c:2:13: */
diff --git a/vendor/modernc.org/libc/signal/capi_linux_riscv64.go b/vendor/modernc.org/libc/signal/capi_linux_riscv64.go
new file mode 100644
index 00000000..81d5396e
--- /dev/null
+++ b/vendor/modernc.org/libc/signal/capi_linux_riscv64.go
@@ -0,0 +1,5 @@
+// Code generated by 'ccgo signal/gen.c -crt-import-path -export-defines -export-enums -export-externs X -export-fields F -export-structs -export-typedefs -header -hide _OSSwapInt16,_OSSwapInt32,_OSSwapInt64 -o signal/signal_linux_riscv64.go -pkgname signal', DO NOT EDIT.
+
+package signal
+
+var CAPI = map[string]struct{}{}
diff --git a/vendor/modernc.org/libc/signal/more_linux_riscv64.go b/vendor/modernc.org/libc/signal/more_linux_riscv64.go
new file mode 100644
index 00000000..25cc318b
--- /dev/null
+++ b/vendor/modernc.org/libc/signal/more_linux_riscv64.go
@@ -0,0 +1,12 @@
+// Copyright 2020 The Libc Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package signal
+
+const (
+ // /usr/include/asm-generic/signal-defs.h:24:#define SIG_DFL ((__sighandler_t)0) /* default signal handling */
+ SIG_DFL = 0
+ // /usr/include/asm-generic/signal-defs.h:25:#define SIG_IGN ((__sighandler_t)1) /* ignore signal */
+ SIG_IGN = 1
+)
diff --git a/vendor/modernc.org/libc/signal/signal_linux_riscv64.go b/vendor/modernc.org/libc/signal/signal_linux_riscv64.go
new file mode 100644
index 00000000..1a32b33c
--- /dev/null
+++ b/vendor/modernc.org/libc/signal/signal_linux_riscv64.go
@@ -0,0 +1,2359 @@
+// Code generated by 'ccgo signal/gen.c -crt-import-path "" -export-defines "" -export-enums "" -export-externs X -export-fields F -export-structs "" -export-typedefs "" -header -hide _OSSwapInt16,_OSSwapInt32,_OSSwapInt64 -o signal/signal_linux_riscv64.go -pkgname signal', DO NOT EDIT.
+
+package signal
+
+import (
+ "math"
+ "reflect"
+ "sync/atomic"
+ "unsafe"
+)
+
+var _ = math.Pi
+var _ reflect.Kind
+var _ atomic.Value
+var _ unsafe.Pointer
+
+const (
+ MINSIGSTKSZ = 2048
+ NGREG = 32
+ NSIG = 65
+ REG_A0 = 10
+ REG_NARGS = 8
+ REG_PC = 0
+ REG_RA = 1
+ REG_S0 = 8
+ REG_S1 = 9
+ REG_S2 = 18
+ REG_SP = 2
+ REG_TP = 4
+ SA_INTERRUPT = 0x20000000
+ SA_NOCLDSTOP = 1
+ SA_NOCLDWAIT = 2
+ SA_NODEFER = 0x40000000
+ SA_NOMASK = 1073741824
+ SA_ONESHOT = 2147483648
+ SA_ONSTACK = 0x08000000
+ SA_RESETHAND = 0x80000000
+ SA_RESTART = 0x10000000
+ SA_SIGINFO = 4
+ SA_STACK = 134217728
+ SIGABRT = 6
+ SIGALRM = 14
+ SIGBUS = 7
+ SIGCHLD = 17
+ SIGCLD = 17
+ SIGCONT = 18
+ SIGFPE = 8
+ SIGHUP = 1
+ SIGILL = 4
+ SIGINT = 2
+ SIGIO = 29
+ SIGIOT = 6
+ SIGKILL = 9
+ SIGPIPE = 13
+ SIGPOLL = 29
+ SIGPROF = 27
+ SIGPWR = 30
+ SIGQUIT = 3
+ SIGSEGV = 11
+ SIGSTKFLT = 16
+ SIGSTKSZ = 8192
+ SIGSTOP = 19
+ SIGSYS = 31
+ SIGTERM = 15
+ SIGTRAP = 5
+ SIGTSTP = 20
+ SIGTTIN = 21
+ SIGTTOU = 22
+ SIGURG = 23
+ SIGUSR1 = 10
+ SIGUSR2 = 12
+ SIGVTALRM = 26
+ SIGWINCH = 28
+ SIGXCPU = 24
+ SIGXFSZ = 25
+ SIG_BLOCK = 0
+ SIG_SETMASK = 2
+ SIG_UNBLOCK = 1
+ X_ATFILE_SOURCE = 1
+ X_BITS_ENDIANNESS_H = 1
+ X_BITS_ENDIAN_H = 1
+ X_BITS_PTHREADTYPES_ARCH_H = 1
+ X_BITS_PTHREADTYPES_COMMON_H = 1
+ X_BITS_SIGACTION_H = 1
+ X_BITS_SIGCONTEXT_H = 1
+ X_BITS_SIGEVENT_CONSTS_H = 1
+ X_BITS_SIGINFO_ARCH_H = 1
+ X_BITS_SIGINFO_CONSTS_H = 1
+ X_BITS_SIGNUM_ARCH_H = 1
+ X_BITS_SIGNUM_GENERIC_H = 1
+ X_BITS_SIGSTACK_H = 1
+ X_BITS_SIGTHREAD_H = 1
+ X_BITS_SS_FLAGS_H = 1
+ X_BITS_TIME64_H = 1
+ X_BITS_TYPESIZES_H = 1
+ X_BITS_TYPES_H = 1
+ X_BSD_SIZE_T_ = 0
+ X_BSD_SIZE_T_DEFINED_ = 0
+ X_DEFAULT_SOURCE = 1
+ X_FEATURES_H = 1
+ X_FILE_OFFSET_BITS = 64
+ X_GCC_SIZE_T = 0
+ X_LP64 = 1
+ X_NSIG = 65
+ X_POSIX_C_SOURCE = 200809
+ X_POSIX_SOURCE = 1
+ X_RWLOCK_INTERNAL_H = 0
+ X_SIGNAL_H = 0
+ X_SIZET_ = 0
+ X_SIZE_T = 0
+ X_SIZE_T_ = 0
+ X_SIZE_T_DECLARED = 0
+ X_SIZE_T_DEFINED = 0
+ X_SIZE_T_DEFINED_ = 0
+ X_STDC_PREDEF_H = 1
+ X_STRUCT_TIMESPEC = 1
+ X_SYS_CDEFS_H = 1
+ X_SYS_SIZE_T_H = 0
+ X_SYS_UCONTEXT_H = 1
+ X_THREAD_MUTEX_INTERNAL_H = 1
+ X_THREAD_SHARED_TYPES_H = 1
+ X_T_SIZE = 0
+ X_T_SIZE_ = 0
+ Linux = 1
+ Unix = 1
+)
+
+// POSIX names to access some of the members.
+
+// sigevent constants. Linux version.
+// Copyright (C) 1997-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// `sigev_notify' values.
+const ( /* sigevent-consts.h:27:1: */
+ SIGEV_SIGNAL = 0 // Notify via signal.
+ SIGEV_NONE = 1 // Other notification: meaningless.
+ SIGEV_THREAD = 2 // Deliver via thread creation.
+
+ SIGEV_THREAD_ID = 4
+)
+
+// `si_code' values for SIGSEGV signal.
+const ( /* siginfo-consts.h:119:1: */
+ SEGV_MAPERR = 1 // Address not mapped to object.
+ SEGV_ACCERR = 2 // Invalid permissions for mapped object.
+ SEGV_BNDERR = 3 // Bounds checking failure.
+ SEGV_PKUERR = 4 // Protection key checking failure.
+ SEGV_ACCADI = 5 // ADI not enabled for mapped object.
+ SEGV_ADIDERR = 6 // Disrupting MCD error.
+ SEGV_ADIPERR = 7 // Precise MCD exception.
+ SEGV_MTEAERR = 8 // Asynchronous ARM MTE error.
+ SEGV_MTESERR = 9
+)
+
+// `si_code' values for SIGBUS signal.
+const ( /* siginfo-consts.h:142:1: */
+ BUS_ADRALN = 1 // Invalid address alignment.
+ BUS_ADRERR = 2 // Non-existant physical address.
+ BUS_OBJERR = 3 // Object specific hardware error.
+ BUS_MCEERR_AR = 4 // Hardware memory error: action required.
+ BUS_MCEERR_AO = 5
+)
+
+// `si_code' values for SIGCHLD signal.
+const ( /* siginfo-consts.h:176:1: */
+ CLD_EXITED = 1 // Child has exited.
+ CLD_KILLED = 2 // Child was killed.
+ CLD_DUMPED = 3 // Child terminated abnormally.
+ CLD_TRAPPED = 4 // Traced child has trapped.
+ CLD_STOPPED = 5 // Child has stopped.
+ CLD_CONTINUED = 6
+)
+
+// `si_code' values for SIGPOLL signal.
+const ( /* siginfo-consts.h:193:1: */
+ POLL_IN = 1 // Data input available.
+ POLL_OUT = 2 // Output buffers available.
+ POLL_MSG = 3 // Input message available.
+ POLL_ERR = 4 // I/O error.
+ POLL_PRI = 5 // High priority input available.
+ POLL_HUP = 6
+)
+
+// X/Open requires some more fields with fixed names.
+
+// siginfo constants. Linux version.
+// Copyright (C) 1997-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Most of these constants are uniform across all architectures, but there
+// is one exception.
+// Architecture-specific adjustments to siginfo_t.
+
+// Values for `si_code'. Positive values are reserved for kernel-generated
+// signals.
+const ( /* siginfo-consts.h:35:1: */
+ SI_ASYNCNL = -60 // Sent by asynch name lookup completion.
+ SI_DETHREAD = -7 // Sent by execve killing subsidiary
+ // threads.
+ SI_TKILL = -6 // Sent by tkill.
+ SI_SIGIO = -5 // Sent by queued SIGIO.
+ SI_ASYNCIO = -4 // Sent by AIO completion.
+ SI_MESGQ = -3 // Sent by real time mesq state change.
+ SI_TIMER = -2 // Sent by timer expiration.
+ SI_QUEUE = -1 // Sent by sigqueue.
+ SI_USER = 0 // Sent by kill, sigsend.
+ SI_KERNEL = 128
+)
+
+// `si_code' values for SIGILL signal.
+const ( /* siginfo-consts.h:71:1: */
+ ILL_ILLOPC = 1 // Illegal opcode.
+ ILL_ILLOPN = 2 // Illegal operand.
+ ILL_ILLADR = 3 // Illegal addressing mode.
+ ILL_ILLTRP = 4 // Illegal trap.
+ ILL_PRVOPC = 5 // Privileged opcode.
+ ILL_PRVREG = 6 // Privileged register.
+ ILL_COPROC = 7 // Coprocessor error.
+ ILL_BADSTK = 8 // Internal stack error.
+ ILL_BADIADDR = 9
+)
+
+// `si_code' values for SIGFPE signal.
+const ( /* siginfo-consts.h:94:1: */
+ FPE_INTDIV = 1 // Integer divide by zero.
+ FPE_INTOVF = 2 // Integer overflow.
+ FPE_FLTDIV = 3 // Floating point divide by zero.
+ FPE_FLTOVF = 4 // Floating point overflow.
+ FPE_FLTUND = 5 // Floating point underflow.
+ FPE_FLTRES = 6 // Floating point inexact result.
+ FPE_FLTINV = 7 // Floating point invalid operation.
+ FPE_FLTSUB = 8 // Subscript out of range.
+ FPE_FLTUNK = 14 // Undiagnosed floating-point exception.
+ FPE_CONDTRAP = 15
+)
+
+// sigstack, sigaltstack definitions.
+// Copyright (C) 1998-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Minimum stack size for a signal handler.
+
+// System default stack size.
+
+// Definition of MINSIGSTKSZ and SIGSTKSZ. Linux version.
+// Copyright (C) 2020 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// ss_flags values for stack_t. Linux version.
+// Copyright (C) 1998-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Possible values for `ss_flags'.
+const ( /* ss_flags.h:27:1: */
+ SS_ONSTACK = 1
+ SS_DISABLE = 2
+)
+
+type Ptrdiff_t = int64 /* <builtin>:3:26 */
+
+type Size_t = uint64 /* <builtin>:9:23 */
+
+type Wchar_t = int32 /* <builtin>:15:24 */
+
+type X__int128_t = struct {
+ Flo int64
+ Fhi int64
+} /* <builtin>:21:43 */ // must match modernc.org/mathutil.Int128
+type X__uint128_t = struct {
+ Flo uint64
+ Fhi uint64
+} /* <builtin>:22:44 */ // must match modernc.org/mathutil.Int128
+
+type X__builtin_va_list = uintptr /* <builtin>:46:14 */
+type X__float128 = float64 /* <builtin>:47:21 */
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// ISO C99 Standard: 7.14 Signal handling <signal.h>
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// These are defined by the user (or the compiler)
+// to specify the desired environment:
+//
+// __STRICT_ANSI__ ISO Standard C.
+// _ISOC99_SOURCE Extensions to ISO C89 from ISO C99.
+// _ISOC11_SOURCE Extensions to ISO C99 from ISO C11.
+// _ISOC2X_SOURCE Extensions to ISO C99 from ISO C2X.
+// __STDC_WANT_LIB_EXT2__
+// Extensions to ISO C99 from TR 27431-2:2010.
+// __STDC_WANT_IEC_60559_BFP_EXT__
+// Extensions to ISO C11 from TS 18661-1:2014.
+// __STDC_WANT_IEC_60559_FUNCS_EXT__
+// Extensions to ISO C11 from TS 18661-4:2015.
+// __STDC_WANT_IEC_60559_TYPES_EXT__
+// Extensions to ISO C11 from TS 18661-3:2015.
+// __STDC_WANT_IEC_60559_EXT__
+// ISO C2X interfaces defined only in Annex F.
+//
+// _POSIX_SOURCE IEEE Std 1003.1.
+// _POSIX_C_SOURCE If ==1, like _POSIX_SOURCE; if >=2 add IEEE Std 1003.2;
+// if >=199309L, add IEEE Std 1003.1b-1993;
+// if >=199506L, add IEEE Std 1003.1c-1995;
+// if >=200112L, all of IEEE 1003.1-2004
+// if >=200809L, all of IEEE 1003.1-2008
+// _XOPEN_SOURCE Includes POSIX and XPG things. Set to 500 if
+// Single Unix conformance is wanted, to 600 for the
+// sixth revision, to 700 for the seventh revision.
+// _XOPEN_SOURCE_EXTENDED XPG things and X/Open Unix extensions.
+// _LARGEFILE_SOURCE Some more functions for correct standard I/O.
+// _LARGEFILE64_SOURCE Additional functionality from LFS for large files.
+// _FILE_OFFSET_BITS=N Select default filesystem interface.
+// _ATFILE_SOURCE Additional *at interfaces.
+// _DYNAMIC_STACK_SIZE_SOURCE Select correct (but non compile-time constant)
+// MINSIGSTKSZ, SIGSTKSZ and PTHREAD_STACK_MIN.
+// _GNU_SOURCE All of the above, plus GNU extensions.
+// _DEFAULT_SOURCE The default set of features (taking precedence over
+// __STRICT_ANSI__).
+//
+// _FORTIFY_SOURCE Add security hardening to many library functions.
+// Set to 1 or 2; 2 performs stricter checks than 1.
+//
+// _REENTRANT, _THREAD_SAFE
+// Obsolete; equivalent to _POSIX_C_SOURCE=199506L.
+//
+// The `-ansi' switch to the GNU C compiler, and standards conformance
+// options such as `-std=c99', define __STRICT_ANSI__. If none of
+// these are defined, or if _DEFAULT_SOURCE is defined, the default is
+// to have _POSIX_SOURCE set to one and _POSIX_C_SOURCE set to
+// 200809L, as well as enabling miscellaneous functions from BSD and
+// SVID. If more than one of these are defined, they accumulate. For
+// example __STRICT_ANSI__, _POSIX_SOURCE and _POSIX_C_SOURCE together
+// give you ISO C, 1003.1, and 1003.2, but nothing else.
+//
+// These are defined by this file and are used by the
+// header files to decide what to declare or define:
+//
+// __GLIBC_USE (F) Define things from feature set F. This is defined
+// to 1 or 0; the subsequent macros are either defined
+// or undefined, and those tests should be moved to
+// __GLIBC_USE.
+// __USE_ISOC11 Define ISO C11 things.
+// __USE_ISOC99 Define ISO C99 things.
+// __USE_ISOC95 Define ISO C90 AMD1 (C95) things.
+// __USE_ISOCXX11 Define ISO C++11 things.
+// __USE_POSIX Define IEEE Std 1003.1 things.
+// __USE_POSIX2 Define IEEE Std 1003.2 things.
+// __USE_POSIX199309 Define IEEE Std 1003.1, and .1b things.
+// __USE_POSIX199506 Define IEEE Std 1003.1, .1b, .1c and .1i things.
+// __USE_XOPEN Define XPG things.
+// __USE_XOPEN_EXTENDED Define X/Open Unix things.
+// __USE_UNIX98 Define Single Unix V2 things.
+// __USE_XOPEN2K Define XPG6 things.
+// __USE_XOPEN2KXSI Define XPG6 XSI things.
+// __USE_XOPEN2K8 Define XPG7 things.
+// __USE_XOPEN2K8XSI Define XPG7 XSI things.
+// __USE_LARGEFILE Define correct standard I/O things.
+// __USE_LARGEFILE64 Define LFS things with separate names.
+// __USE_FILE_OFFSET64 Define 64bit interface as default.
+// __USE_MISC Define things from 4.3BSD or System V Unix.
+// __USE_ATFILE Define *at interfaces and AT_* constants for them.
+// __USE_DYNAMIC_STACK_SIZE Define correct (but non compile-time constant)
+// MINSIGSTKSZ, SIGSTKSZ and PTHREAD_STACK_MIN.
+// __USE_GNU Define GNU extensions.
+// __USE_FORTIFY_LEVEL Additional security measures used, according to level.
+//
+// The macros `__GNU_LIBRARY__', `__GLIBC__', and `__GLIBC_MINOR__' are
+// defined by this file unconditionally. `__GNU_LIBRARY__' is provided
+// only for compatibility. All new code should use the other symbols
+// to test for features.
+//
+// All macros listed above as possibly being defined by this file are
+// explicitly undefined if they are not explicitly defined.
+// Feature-test macros that are not defined by the user or compiler
+// but are implied by the other feature-test macros defined (or by the
+// lack of any definitions) are defined by the file.
+//
+// ISO C feature test macros depend on the definition of the macro
+// when an affected header is included, not when the first system
+// header is included, and so they are handled in
+// <bits/libc-header-start.h>, which does not have a multiple include
+// guard. Feature test macros that can be handled from the first
+// system header included are handled here.
+
+// Undefine everything, so we get a clean slate.
+
+// Suppress kernel-name space pollution unless user expressedly asks
+// for it.
+
+// Convenience macro to test the version of gcc.
+// Use like this:
+// #if __GNUC_PREREQ (2,8)
+// ... code requiring gcc 2.8 or later ...
+// #endif
+// Note: only works for GCC 2.0 and later, because __GNUC_MINOR__ was
+// added in 2.0.
+
+// Similarly for clang. Features added to GCC after version 4.2 may
+// or may not also be available in clang, and clang's definitions of
+// __GNUC(_MINOR)__ are fixed at 4 and 2 respectively. Not all such
+// features can be queried via __has_extension/__has_feature.
+
+// Whether to use feature set F.
+
+// _BSD_SOURCE and _SVID_SOURCE are deprecated aliases for
+// _DEFAULT_SOURCE. If _DEFAULT_SOURCE is present we do not
+// issue a warning; the expectation is that the source is being
+// transitioned to use the new macro.
+
+// If _GNU_SOURCE was defined by the user, turn on all the other features.
+
+// If nothing (other than _GNU_SOURCE and _DEFAULT_SOURCE) is defined,
+// define _DEFAULT_SOURCE.
+
+// This is to enable the ISO C2X extension.
+
+// This is to enable the ISO C11 extension.
+
+// This is to enable the ISO C99 extension.
+
+// This is to enable the ISO C90 Amendment 1:1995 extension.
+
+// If none of the ANSI/POSIX macros are defined, or if _DEFAULT_SOURCE
+// is defined, use POSIX.1-2008 (or another version depending on
+// _XOPEN_SOURCE).
+
+// Some C libraries once required _REENTRANT and/or _THREAD_SAFE to be
+// defined in all multithreaded code. GNU libc has not required this
+// for many years. We now treat them as compatibility synonyms for
+// _POSIX_C_SOURCE=199506L, which is the earliest level of POSIX with
+// comprehensive support for multithreaded code. Using them never
+// lowers the selected level of POSIX conformance, only raises it.
+
+// Features part to handle 64-bit time_t support.
+// Copyright (C) 2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// We need to know the word size in order to check the time size.
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Bit size of the time_t type at glibc build time, RISC-V case.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// RV32 and RV64 both use 64-bit time_t
+
+// The function 'gets' existed in C89, but is impossible to use
+// safely. It has been removed from ISO C11 and ISO C++14. Note: for
+// compatibility with various implementations of <cstdio>, this test
+// must consider only the value of __cplusplus when compiling C++.
+
+// GNU formerly extended the scanf functions with modified format
+// specifiers %as, %aS, and %a[...] that allocate a buffer for the
+// input using malloc. This extension conflicts with ISO C99, which
+// defines %a as a standalone format specifier that reads a floating-
+// point number; moreover, POSIX.1-2008 provides the same feature
+// using the modifier letter 'm' instead (%ms, %mS, %m[...]).
+//
+// We now follow C99 unless GNU extensions are active and the compiler
+// is specifically in C89 or C++98 mode (strict or not). For
+// instance, with GCC, -std=gnu11 will have C99-compliant scanf with
+// or without -D_GNU_SOURCE, but -std=c89 -D_GNU_SOURCE will have the
+// old extension.
+
+// Get definitions of __STDC_* predefined macros, if the compiler has
+// not preincluded this header automatically.
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// This macro indicates that the installed library is the GNU C Library.
+// For historic reasons the value now is 6 and this will stay from now
+// on. The use of this variable is deprecated. Use __GLIBC__ and
+// __GLIBC_MINOR__ now (see below) when you want to test for a specific
+// GNU C library version and use the values in <gnu/lib-names.h> to get
+// the sonames of the shared libraries.
+
+// Major and minor version number of the GNU C library package. Use
+// these macros to test for features in specific releases.
+
+// This is here only because every header file already includes this one.
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// We are almost always included from features.h.
+
+// The GNU libc does not support any K&R compilers or the traditional mode
+// of ISO C compilers anymore. Check for some of the combinations not
+// supported anymore.
+
+// Some user header file might have defined this before.
+
+// Compilers that lack __has_attribute may object to
+// #if defined __has_attribute && __has_attribute (...)
+// even though they do not need to evaluate the right-hand side of the &&.
+// Similarly for __has_builtin, etc.
+
+// All functions, except those with callbacks or those that
+// synchronize memory, are leaf functions.
+
+// GCC can always grok prototypes. For C++ programs we add throw()
+// to help it optimize the function calls. But this only works with
+// gcc 2.8.x and egcs. For gcc 3.4 and up we even mark C functions
+// as non-throwing using a function attribute since programs can use
+// the -fexceptions options for C code as well.
+
+// These two macros are not used in glibc anymore. They are kept here
+// only because some other projects expect the macros to be defined.
+
+// For these things, GCC behaves the ANSI way normally,
+// and the non-ANSI way under -traditional.
+
+// This is not a typedef so `const __ptr_t' does the right thing.
+
+// C++ needs to know that types and declarations are C, not C++.
+
+// Fortify support.
+
+// Use __builtin_dynamic_object_size at _FORTIFY_SOURCE=3 when available.
+
+// Support for flexible arrays.
+// Headers that should use flexible arrays only if they're "real"
+// (e.g. only if they won't affect sizeof()) should test
+// #if __glibc_c99_flexarr_available.
+
+// __asm__ ("xyz") is used throughout the headers to rename functions
+// at the assembly language level. This is wrapped by the __REDIRECT
+// macro, in order to support compilers that can do this some other
+// way. When compilers don't support asm-names at all, we have to do
+// preprocessor tricks instead (which don't have exactly the right
+// semantics, but it's the best we can do).
+//
+// Example:
+// int __REDIRECT(setpgrp, (__pid_t pid, __pid_t pgrp), setpgid);
+
+//
+// #elif __SOME_OTHER_COMPILER__
+//
+// # define __REDIRECT(name, proto, alias) name proto; _Pragma("let " #name " = " #alias)
+
+// GCC and clang have various useful declarations that can be made with
+// the '__attribute__' syntax. All of the ways we use this do fine if
+// they are omitted for compilers that don't understand it.
+
+// At some point during the gcc 2.96 development the `malloc' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+
+// Tell the compiler which arguments to an allocation function
+// indicate the size of the allocation.
+
+// At some point during the gcc 2.96 development the `pure' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+
+// This declaration tells the compiler that the value is constant.
+
+// At some point during the gcc 3.1 development the `used' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+
+// Since version 3.2, gcc allows marking deprecated functions.
+
+// Since version 4.5, gcc also allows one to specify the message printed
+// when a deprecated function is used. clang claims to be gcc 4.2, but
+// may also support this feature.
+
+// At some point during the gcc 2.8 development the `format_arg' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+// If several `format_arg' attributes are given for the same function, in
+// gcc-3.0 and older, all but the last one are ignored. In newer gccs,
+// all designated arguments are considered.
+
+// At some point during the gcc 2.97 development the `strfmon' format
+// attribute for functions was introduced. We don't want to use it
+// unconditionally (although this would be possible) since it
+// generates warnings.
+
+// The nonnull function attribute marks pointer parameters that
+// must not be NULL.
+
+// The returns_nonnull function attribute marks the return type of the function
+// as always being non-null.
+
+// If fortification mode, we warn about unused results of certain
+// function calls which can lead to problems.
+
+// Forces a function to be always inlined.
+// The Linux kernel defines __always_inline in stddef.h (283d7573), and
+// it conflicts with this definition. Therefore undefine it first to
+// allow either header to be included first.
+
+// Associate error messages with the source location of the call site rather
+// than with the source location inside the function.
+
+// GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
+// inline semantics, unless -fgnu89-inline is used. Using __GNUC_STDC_INLINE__
+// or __GNUC_GNU_INLINE is not a good enough check for gcc because gcc versions
+// older than 4.3 may define these macros and still not guarantee GNU inlining
+// semantics.
+//
+// clang++ identifies itself as gcc-4.2, but has support for GNU inlining
+// semantics, that can be checked for by using the __GNUC_STDC_INLINE_ and
+// __GNUC_GNU_INLINE__ macro definitions.
+
+// GCC 4.3 and above allow passing all anonymous arguments of an
+// __extern_always_inline function to some other vararg function.
+
+// It is possible to compile containing GCC extensions even if GCC is
+// run in pedantic mode if the uses are carefully marked using the
+// `__extension__' keyword. But this is not generally available before
+// version 2.8.
+
+// __restrict is known in EGCS 1.2 and above, and in clang.
+// It works also in C++ mode (outside of arrays), but only when spelled
+// as '__restrict', not 'restrict'.
+
+// ISO C99 also allows to declare arrays as non-overlapping. The syntax is
+// array_name[restrict]
+// GCC 3.1 and clang support this.
+// This syntax is not usable in C++ mode.
+
+// Describes a char array whose address can safely be passed as the first
+// argument to strncpy and strncat, as the char array is not necessarily
+// a NUL-terminated string.
+
+// Undefine (also defined in libc-symbols.h).
+// Copies attributes from the declaration or type referenced by
+// the argument.
+
+// The #ifndef lets Gnulib avoid including these on non-glibc
+// platforms, where the includes typically do not exist.
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Properties of long double type. ldbl-128 version.
+// Copyright (C) 2016-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// long double is distinct from double, so there is nothing to
+// define here.
+
+// __glibc_macro_warning (MESSAGE) issues warning MESSAGE. This is
+// intended for use in preprocessor macros.
+//
+// Note: MESSAGE must be a _single_ string; concatenation of string
+// literals is not supported.
+
+// Generic selection (ISO C11) is a C-only feature, available in GCC
+// since version 4.9. Previous versions do not provide generic
+// selection, even though they might set __STDC_VERSION__ to 201112L,
+// when in -std=c11 mode. Thus, we must check for !defined __GNUC__
+// when testing __STDC_VERSION__ for generic selection support.
+// On the other hand, Clang also defines __GNUC__, so a clang-specific
+// check is required to enable the use of generic selection.
+
+// Designates a 1-based positional argument ref-index of pointer type
+// that can be used to access size-index elements of the pointed-to
+// array according to access mode, or at least one element when
+// size-index is not provided:
+// access (access-mode, <ref-index> [, <size-index>])
+
+// Designates dealloc as a function to call to deallocate objects
+// allocated by the declared function.
+
+// Specify that a function such as setjmp or vfork may return
+// twice.
+
+// If we don't have __REDIRECT, prototypes will be missing if
+// __USE_FILE_OFFSET64 but not __USE_LARGEFILE[64].
+
+// Decide whether we can define 'extern inline' functions in headers.
+
+// This is here only because every header file already includes this one.
+// Get the definitions of all the appropriate `__stub_FUNCTION' symbols.
+// <gnu/stubs.h> contains `#define __stub_FUNCTION' when FUNCTION is a stub
+// that will always return failure (and set errno to ENOSYS).
+// This file is automatically generated.
+// This file selects the right generated file of `__stub_FUNCTION' macros
+// based on the architecture being compiled for.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// This file is automatically generated.
+// It defines a symbol `__stub_FUNCTION' for each function
+// in the C library which is a stub, meaning it will fail
+// every time called, usually setting errno to ENOSYS.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Bit size of the time_t type at glibc build time, RISC-V case.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// RV32 and RV64 both use 64-bit time_t
+
+// Convenience types.
+type X__u_char = uint8 /* types.h:31:23 */
+type X__u_short = uint16 /* types.h:32:28 */
+type X__u_int = uint32 /* types.h:33:22 */
+type X__u_long = uint64 /* types.h:34:27 */
+
+// Fixed-size types, underlying types depend on word size and compiler.
+type X__int8_t = int8 /* types.h:37:21 */
+type X__uint8_t = uint8 /* types.h:38:23 */
+type X__int16_t = int16 /* types.h:39:26 */
+type X__uint16_t = uint16 /* types.h:40:28 */
+type X__int32_t = int32 /* types.h:41:20 */
+type X__uint32_t = uint32 /* types.h:42:22 */
+type X__int64_t = int64 /* types.h:44:25 */
+type X__uint64_t = uint64 /* types.h:45:27 */
+
+// Smallest types with at least a given width.
+type X__int_least8_t = X__int8_t /* types.h:52:18 */
+type X__uint_least8_t = X__uint8_t /* types.h:53:19 */
+type X__int_least16_t = X__int16_t /* types.h:54:19 */
+type X__uint_least16_t = X__uint16_t /* types.h:55:20 */
+type X__int_least32_t = X__int32_t /* types.h:56:19 */
+type X__uint_least32_t = X__uint32_t /* types.h:57:20 */
+type X__int_least64_t = X__int64_t /* types.h:58:19 */
+type X__uint_least64_t = X__uint64_t /* types.h:59:20 */
+
+// quad_t is also 64 bits.
+type X__quad_t = int64 /* types.h:63:18 */
+type X__u_quad_t = uint64 /* types.h:64:27 */
+
+// Largest integral types.
+type X__intmax_t = int64 /* types.h:72:18 */
+type X__uintmax_t = uint64 /* types.h:73:27 */
+
+// The machine-dependent file <bits/typesizes.h> defines __*_T_TYPE
+// macros for each of the OS types we define below. The definitions
+// of those macros must use the following macros for underlying types.
+// We define __S<SIZE>_TYPE and __U<SIZE>_TYPE for the signed and unsigned
+// variants of each of the following integer types on this machine.
+//
+// 16 -- "natural" 16-bit type (always short)
+// 32 -- "natural" 32-bit type (always int)
+// 64 -- "natural" 64-bit type (long or long long)
+// LONG32 -- 32-bit type, traditionally long
+// QUAD -- 64-bit type, traditionally long long
+// WORD -- natural type of __WORDSIZE bits (int or long)
+// LONGWORD -- type of __WORDSIZE bits, traditionally long
+//
+// We distinguish WORD/LONGWORD, 32/LONG32, and 64/QUAD so that the
+// conventional uses of `long' or `long long' type modifiers match the
+// types we define, even when a less-adorned type would be the same size.
+// This matters for (somewhat) portably writing printf/scanf formats for
+// these types, where using the appropriate l or ll format modifiers can
+// make the typedefs and the formats match up across all GNU platforms. If
+// we used `long' when it's 64 bits where `long long' is expected, then the
+// compiler would warn about the formats not matching the argument types,
+// and the programmer changing them to shut up the compiler would break the
+// program's portability.
+//
+// Here we assume what is presently the case in all the GCC configurations
+// we support: long long is always 64 bits, long is always word/address size,
+// and int is always 32 bits.
+
+// No need to mark the typedef with __extension__.
+// bits/typesizes.h -- underlying types for *_t. For the generic Linux ABI.
+// Copyright (C) 2011-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+// Contributed by Chris Metcalf <cmetcalf@tilera.com>, 2011.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// See <bits/types.h> for the meaning of these macros. This file exists so
+// that <bits/types.h> need not vary across different GNU platforms.
+
+// Tell the libc code that off_t and off64_t are actually the same type
+// for all ABI purposes, even if possibly expressed as different base types
+// for C type-checking purposes.
+
+// Same for ino_t and ino64_t.
+
+// And for __rlim_t and __rlim64_t.
+
+// And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t.
+
+// And for getitimer, setitimer and rusage
+
+// Number of descriptors that can fit in an `fd_set'.
+
+// bits/time64.h -- underlying types for __time64_t. RISC-V version.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Define __TIME64_T_TYPE so that it is always a 64-bit type.
+
+// If we already have 64-bit time type then use it.
+
+type X__dev_t = uint64 /* types.h:145:25 */ // Type of device numbers.
+type X__uid_t = uint32 /* types.h:146:25 */ // Type of user identifications.
+type X__gid_t = uint32 /* types.h:147:25 */ // Type of group identifications.
+type X__ino_t = uint64 /* types.h:148:25 */ // Type of file serial numbers.
+type X__ino64_t = uint64 /* types.h:149:27 */ // Type of file serial numbers (LFS).
+type X__mode_t = uint32 /* types.h:150:26 */ // Type of file attribute bitmasks.
+type X__nlink_t = uint32 /* types.h:151:27 */ // Type of file link counts.
+type X__off_t = int64 /* types.h:152:25 */ // Type of file sizes and offsets.
+type X__off64_t = int64 /* types.h:153:27 */ // Type of file sizes and offsets (LFS).
+type X__pid_t = int32 /* types.h:154:25 */ // Type of process identifications.
+type X__fsid_t = struct{ F__val [2]int32 } /* types.h:155:26 */ // Type of file system IDs.
+type X__clock_t = int64 /* types.h:156:27 */ // Type of CPU usage counts.
+type X__rlim_t = uint64 /* types.h:157:26 */ // Type for resource measurement.
+type X__rlim64_t = uint64 /* types.h:158:28 */ // Type for resource measurement (LFS).
+type X__id_t = uint32 /* types.h:159:24 */ // General type for IDs.
+type X__time_t = int64 /* types.h:160:26 */ // Seconds since the Epoch.
+type X__useconds_t = uint32 /* types.h:161:30 */ // Count of microseconds.
+type X__suseconds_t = int64 /* types.h:162:31 */ // Signed count of microseconds.
+type X__suseconds64_t = int64 /* types.h:163:33 */
+
+type X__daddr_t = int32 /* types.h:165:27 */ // The type of a disk address.
+type X__key_t = int32 /* types.h:166:25 */ // Type of an IPC key.
+
+// Clock ID used in clock and timer functions.
+type X__clockid_t = int32 /* types.h:169:29 */
+
+// Timer ID returned by `timer_create'.
+type X__timer_t = uintptr /* types.h:172:12 */
+
+// Type to represent block size.
+type X__blksize_t = int32 /* types.h:175:29 */
+
+// Types from the Large File Support interface.
+
+// Type to count number of disk blocks.
+type X__blkcnt_t = int64 /* types.h:180:28 */
+type X__blkcnt64_t = int64 /* types.h:181:30 */
+
+// Type to count file system blocks.
+type X__fsblkcnt_t = uint64 /* types.h:184:30 */
+type X__fsblkcnt64_t = uint64 /* types.h:185:32 */
+
+// Type to count file system nodes.
+type X__fsfilcnt_t = uint64 /* types.h:188:30 */
+type X__fsfilcnt64_t = uint64 /* types.h:189:32 */
+
+// Type of miscellaneous file system fields.
+type X__fsword_t = int64 /* types.h:192:28 */
+
+type X__ssize_t = int64 /* types.h:194:27 */ // Type of a byte count, or error.
+
+// Signed long type used in system calls.
+type X__syscall_slong_t = int64 /* types.h:197:33 */
+// Unsigned long type used in system calls.
+type X__syscall_ulong_t = uint64 /* types.h:199:33 */
+
+// These few don't really vary by system, they always correspond
+// to one of the other defined types.
+type X__loff_t = X__off64_t /* types.h:203:19 */ // Type of file sizes and offsets (LFS).
+type X__caddr_t = uintptr /* types.h:204:14 */
+
+// Duplicates info from stdint.h but this is used in unistd.h.
+type X__intptr_t = int64 /* types.h:207:25 */
+
+// Duplicate info from sys/socket.h.
+type X__socklen_t = uint32 /* types.h:210:23 */
+
+// C99: An integer type that can be accessed as an atomic entity,
+// even in the presence of asynchronous interrupts.
+// It is not currently necessary for this to be machine-specific.
+type X__sig_atomic_t = int32 /* types.h:215:13 */
+
+// Seconds since the Epoch, visible to user code when time_t is too
+// narrow only for consistency with the old way of widening too-narrow
+// types. User code should never use __time64_t.
+
+// Signal number constants. Generic template.
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Fake signal functions.
+
+// We define here all the signal names listed in POSIX (1003.1-2008);
+// as of 1003.1-2013, no additional signals have been added by POSIX.
+// We also define here signal names that historically exist in every
+// real-world POSIX variant (e.g. SIGWINCH).
+//
+// Signals in the 1-15 range are defined with their historical numbers.
+// For other signals, we use the BSD numbers.
+// There are two unallocated signal numbers in the 1-31 range: 7 and 29.
+// Signal number 0 is reserved for use as kill(pid, 0), to test whether
+// a process exists without sending it a signal.
+
+// ISO C99 signals.
+
+// Historical signals specified by POSIX.
+
+// Archaic names for compatibility.
+
+// Not all systems support real-time signals. bits/signum.h indicates
+// that they are supported by overriding __SIGRTMAX to a value greater
+// than __SIGRTMIN. These constants give the kernel-level hard limits,
+// but some real-time signals may be used internally by glibc. Do not
+// use these constants in application code; use SIGRTMIN and SIGRTMAX
+// (defined in signal.h) instead.
+
+// Include system specific bits.
+// Signal number definitions. Linux version.
+// Copyright (C) 1995-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Adjustments and additions to the signal number constants for
+// most Linux systems.
+
+// Historical signals specified by POSIX.
+
+// New(er) POSIX signals (1003.1-2008, 1003.1-2013).
+
+// Nonstandard signals found in all modern POSIX systems
+// (including both BSD and Linux).
+
+// Archaic names for compatibility.
+
+// Biggest signal number + 1 (including real-time signals).
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// An integral type that can be modified atomically, without the
+// possibility of a signal arriving in the middle of the operation.
+type Sig_atomic_t = X__sig_atomic_t /* sig_atomic_t.h:8:24 */
+
+type X__sigset_t = struct{ F__val [16]uint64 } /* __sigset_t.h:8:3 */
+
+// A set of signals to be blocked, unblocked, or waited for.
+type Sigset_t = X__sigset_t /* sigset_t.h:7:20 */
+
+type Pid_t = X__pid_t /* signal.h:40:17 */
+type Uid_t = X__uid_t /* signal.h:46:17 */
+
+// We need `struct timespec' later on.
+// NB: Include guard matches what <linux/time.h> uses.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Endian macros for string.h functions
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <http://www.gnu.org/licenses/>.
+
+// Definitions for byte order, according to significance of bytes,
+// from low addresses to high addresses. The value is what you get by
+// putting '4' in the most significant byte, '3' in the second most
+// significant byte, '2' in the second least significant byte, and '1'
+// in the least significant byte, and then writing down one digit for
+// each byte, starting with the byte at the lowest address at the left,
+// and proceeding to the byte with the highest address at the right.
+
+// This file defines `__BYTE_ORDER' for the particular machine.
+
+// RISC-V is little-endian.
+
+// Some machines may need to use a different endianness for floating point
+// values.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Returned by `time'.
+type Time_t = X__time_t /* time_t.h:10:18 */
+
+// POSIX.1b structure for a time value. This is like a `struct timeval' but
+// has nanoseconds instead of microseconds.
+type Timespec = struct {
+ Ftv_sec X__time_t
+ Ftv_nsec X__syscall_slong_t
+} /* struct_timespec.h:11:1 */
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Define __sigval_t.
+// Copyright (C) 1997-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Type for data associated with a signal.
+type Sigval = struct {
+ F__ccgo_pad1 [0]uint64
+ Fsival_int int32
+ F__ccgo_pad2 [4]byte
+} /* __sigval_t.h:24:1 */
+
+type X__sigval_t = Sigval /* __sigval_t.h:30:22 */
+
+// Some fields of siginfo_t have architecture-specific variations.
+// Architecture-specific adjustments to siginfo_t.
+
+// This architecture has no adjustments to make to siginfo_t.
+
+type Siginfo_t = struct {
+ Fsi_signo int32
+ Fsi_errno int32
+ Fsi_code int32
+ F__pad0 int32
+ F_sifields struct {
+ F__ccgo_pad1 [0]uint64
+ F_pad [28]int32
+ }
+} /* siginfo_t.h:124:5 */
+
+// Architectures might also add architecture-specific constants.
+// These are all considered GNU extensions.
+
+// Define __sigval_t.
+// Copyright (C) 1997-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// To avoid sigval_t (not a standard type name) having C++ name
+// mangling depending on whether the selected standard includes union
+// sigval, it should not be defined at all when using a standard for
+// which the sigval name is not reserved; in that case, headers should
+// not include <bits/types/sigval_t.h> and should use only the
+// internal __sigval_t name.
+
+type Sigval_t = X__sigval_t /* sigval_t.h:16:20 */
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Define __sigval_t.
+// Copyright (C) 1997-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Forward declaration.
+type Pthread_attr_t1 = struct {
+ F__ccgo_pad1 [0]uint64
+ F__size [56]uint8
+} /* sigevent_t.h:17:9 */
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Define __sigval_t.
+// Copyright (C) 1997-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Forward declaration.
+type Pthread_attr_t = Pthread_attr_t1 /* sigevent_t.h:17:30 */
+
+// Structure to transport application-defined values with signals.
+type Sigevent = struct {
+ Fsigev_value X__sigval_t
+ Fsigev_signo int32
+ Fsigev_notify int32
+ F_sigev_un struct {
+ F__ccgo_pad1 [0]uint64
+ F_pad [12]int32
+ }
+} /* sigevent_t.h:22:9 */
+
+// Structure to transport application-defined values with signals.
+type Sigevent_t = Sigevent /* sigevent_t.h:42:5 */
+
+// Type of a signal handler.
+type X__sighandler_t = uintptr /* signal.h:72:14 */
+
+// 4.4 BSD uses the name `sig_t' for this.
+type Sig_t = X__sighandler_t /* signal.h:193:24 */
+
+// Get the system-specific definitions of `struct sigaction'
+// and the `SA_*' and `SIG_*'. constants.
+// The proper definitions for Linux's sigaction.
+// Copyright (C) 1993-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Structure describing the action to be taken when a signal arrives.
+type Sigaction = struct {
+ F__sigaction_handler struct{ Fsa_handler X__sighandler_t }
+ Fsa_mask X__sigset_t
+ Fsa_flags int32
+ F__ccgo_pad1 [4]byte
+ Fsa_restorer uintptr
+} /* sigaction.h:27:1 */
+
+// Get machine-dependent `struct sigcontext' and signal subcodes.
+// Machine-dependent signal context structure for Linux. RISC-V version.
+// Copyright (C) 1996-2021 Free Software Foundation, Inc. This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+type Sigcontext = struct {
+ Fgregs [32]uint64
+ Ffpregs [66]uint64
+} /* sigcontext.h:25:1 */
+
+// Wide character type.
+// Locale-writers should change this as necessary to
+// be big enough to hold unique values not between 0 and 127,
+// and not (wchar_t) -1, for each defined multibyte character.
+
+// Define this type if we are doing the whole job,
+// or if we want this type in particular.
+
+// A null pointer constant.
+
+// Define stack_t. Linux version.
+// Copyright (C) 1998-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Copyright (C) 1989-2021 Free Software Foundation, Inc.
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+//
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+// <http://www.gnu.org/licenses/>.
+
+// ISO C Standard: 7.17 Common definitions <stddef.h>
+
+// Any one of these symbols __need_* means that GNU libc
+// wants us just to define one data type. So don't define
+// the symbols that indicate this file's entire job has been done.
+
+// This avoids lossage on SunOS but only if stdtypes.h comes first.
+// There's no way to win with the other order! Sun lossage.
+
+// Sequent's header files use _PTRDIFF_T_ in some conflicting way.
+// Just ignore it.
+
+// On VxWorks, <type/vxTypesBase.h> may have defined macros like
+// _TYPE_size_t which will typedef size_t. fixincludes patched the
+// vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is
+// not defined, and so that defining this macro defines _GCC_SIZE_T.
+// If we find that the macros are still defined at this point, we must
+// invoke them so that the type is defined as expected.
+
+// In case nobody has defined these types, but we aren't running under
+// GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and
+// __WCHAR_TYPE__ have reasonable values. This can happen if the
+// parts of GCC is compiled by an older compiler, that actually
+// include gstddef.h, such as collect2.
+
+// Signed type of difference of two pointers.
+
+// Define this type if we are doing the whole job,
+// or if we want this type in particular.
+
+// Unsigned type of `sizeof' something.
+
+// Define this type if we are doing the whole job,
+// or if we want this type in particular.
+
+// Wide character type.
+// Locale-writers should change this as necessary to
+// be big enough to hold unique values not between 0 and 127,
+// and not (wchar_t) -1, for each defined multibyte character.
+
+// Define this type if we are doing the whole job,
+// or if we want this type in particular.
+
+// A null pointer constant.
+
+// Structure describing a signal stack.
+type Stack_t = struct {
+ Fss_sp uintptr
+ Fss_flags int32
+ F__ccgo_pad1 [4]byte
+ Fss_size Size_t
+} /* stack_t.h:31:5 */
+
+// This will define `ucontext_t' and `mcontext_t'.
+// struct ucontext definition, RISC-V version.
+// Copyright (C) 1997-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Don't rely on this, the interface is currently messed up and may need to
+// be broken to be fixed.
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Define stack_t. Linux version.
+// Copyright (C) 1998-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+type X__riscv_mc_gp_state = [32]uint64 /* ucontext.h:29:27 */
+
+type Greg_t = uint64 /* ucontext.h:44:27 */
+
+// Container for all general registers.
+type Gregset_t = X__riscv_mc_gp_state /* ucontext.h:47:29 */
+
+// Container for floating-point state.
+type X__riscv_mc_fp_state = struct {
+ F__ccgo_pad1 [0]uint64
+ F__f struct {
+ F__f [32]uint32
+ F__fcsr uint32
+ }
+ F__ccgo_pad2 [396]byte
+} /* ucontext.h:50:9 */
+
+// Container for floating-point state.
+type Fpregset_t = X__riscv_mc_fp_state /* ucontext.h:50:35 */
+
+type X__riscv_mc_f_ext_state = struct {
+ F__f [32]uint32
+ F__fcsr uint32
+} /* ucontext.h:50:9 */
+
+type X__riscv_mc_d_ext_state = struct {
+ F__f [32]uint64
+ F__fcsr uint32
+ F__ccgo_pad1 [4]byte
+} /* ucontext.h:50:9 */
+
+type X__riscv_mc_q_ext_state = struct {
+ F__f [64]uint64
+ F__fcsr uint32
+ F__glibc_reserved [3]uint32
+} /* ucontext.h:50:9 */
+
+type Mcontext_t1 = struct {
+ F__gregs X__riscv_mc_gp_state
+ F__fpregs struct {
+ F__ccgo_pad1 [0]uint64
+ F__f struct {
+ F__f [32]uint32
+ F__fcsr uint32
+ }
+ F__ccgo_pad2 [396]byte
+ }
+} /* ucontext.h:81:9 */
+
+type Mcontext_t = Mcontext_t1 /* ucontext.h:85:5 */
+
+// Userlevel context.
+type Ucontext_t1 = struct {
+ F__ccgo_pad1 [0]uint64
+ F__uc_flags uint64
+ Fuc_link uintptr
+ Fuc_stack Stack_t
+ Fuc_sigmask Sigset_t
+ F__ccgo_pad2 [784]byte
+} /* ucontext.h:88:9 */
+
+// Userlevel context.
+type Ucontext_t = Ucontext_t1 /* ucontext.h:108:5 */
+
+// Define struct sigstack.
+// Copyright (C) 1998-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Structure describing a signal stack (obsolete).
+type Sigstack = struct {
+ Fss_sp uintptr
+ Fss_onstack int32
+ F__ccgo_pad1 [4]byte
+} /* struct_sigstack.h:23:1 */
+
+// Some of the functions for handling signals in threaded programs must
+// be defined here.
+// Declaration of common pthread types for all architectures.
+// Copyright (C) 2017-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// For internal mutex and condition variable definitions.
+// Common threading primitives definitions for both POSIX and C11.
+// Copyright (C) 2017-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Arch-specific definitions. Each architecture must define the following
+// macros to define the expected sizes of pthread data types:
+//
+// __SIZEOF_PTHREAD_ATTR_T - size of pthread_attr_t.
+// __SIZEOF_PTHREAD_MUTEX_T - size of pthread_mutex_t.
+// __SIZEOF_PTHREAD_MUTEXATTR_T - size of pthread_mutexattr_t.
+// __SIZEOF_PTHREAD_COND_T - size of pthread_cond_t.
+// __SIZEOF_PTHREAD_CONDATTR_T - size of pthread_condattr_t.
+// __SIZEOF_PTHREAD_RWLOCK_T - size of pthread_rwlock_t.
+// __SIZEOF_PTHREAD_RWLOCKATTR_T - size of pthread_rwlockattr_t.
+// __SIZEOF_PTHREAD_BARRIER_T - size of pthread_barrier_t.
+// __SIZEOF_PTHREAD_BARRIERATTR_T - size of pthread_barrierattr_t.
+//
+// The additional macro defines any constraint for the lock alignment
+// inside the thread structures:
+//
+// __LOCK_ALIGNMENT - for internal lock/futex usage.
+//
+// Same idea but for the once locking primitive:
+//
+// __ONCE_ALIGNMENT - for pthread_once_t/once_flag definition.
+
+// Machine-specific pthread type layouts. RISC-V version.
+// Copyright (C) 2011-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Endian macros for string.h functions
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <http://www.gnu.org/licenses/>.
+
+// Common definition of pthread_mutex_t.
+
+type X__pthread_internal_list = struct {
+ F__prev uintptr
+ F__next uintptr
+} /* thread-shared-types.h:49:9 */
+
+// Some of the functions for handling signals in threaded programs must
+// be defined here.
+// Declaration of common pthread types for all architectures.
+// Copyright (C) 2017-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// For internal mutex and condition variable definitions.
+// Common threading primitives definitions for both POSIX and C11.
+// Copyright (C) 2017-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Arch-specific definitions. Each architecture must define the following
+// macros to define the expected sizes of pthread data types:
+//
+// __SIZEOF_PTHREAD_ATTR_T - size of pthread_attr_t.
+// __SIZEOF_PTHREAD_MUTEX_T - size of pthread_mutex_t.
+// __SIZEOF_PTHREAD_MUTEXATTR_T - size of pthread_mutexattr_t.
+// __SIZEOF_PTHREAD_COND_T - size of pthread_cond_t.
+// __SIZEOF_PTHREAD_CONDATTR_T - size of pthread_condattr_t.
+// __SIZEOF_PTHREAD_RWLOCK_T - size of pthread_rwlock_t.
+// __SIZEOF_PTHREAD_RWLOCKATTR_T - size of pthread_rwlockattr_t.
+// __SIZEOF_PTHREAD_BARRIER_T - size of pthread_barrier_t.
+// __SIZEOF_PTHREAD_BARRIERATTR_T - size of pthread_barrierattr_t.
+//
+// The additional macro defines any constraint for the lock alignment
+// inside the thread structures:
+//
+// __LOCK_ALIGNMENT - for internal lock/futex usage.
+//
+// Same idea but for the once locking primitive:
+//
+// __ONCE_ALIGNMENT - for pthread_once_t/once_flag definition.
+
+// Machine-specific pthread type layouts. RISC-V version.
+// Copyright (C) 2011-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Endian macros for string.h functions
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <http://www.gnu.org/licenses/>.
+
+// Common definition of pthread_mutex_t.
+
+type X__pthread_list_t = X__pthread_internal_list /* thread-shared-types.h:53:3 */
+
+type X__pthread_internal_slist = struct{ F__next uintptr } /* thread-shared-types.h:55:9 */
+
+type X__pthread_slist_t = X__pthread_internal_slist /* thread-shared-types.h:58:3 */
+
+// Arch-specific mutex definitions. A generic implementation is provided
+// by sysdeps/nptl/bits/struct_mutex.h. If required, an architecture
+// can override it by defining:
+//
+// 1. struct __pthread_mutex_s (used on both pthread_mutex_t and mtx_t
+// definition). It should contains at least the internal members
+// defined in the generic version.
+//
+// 2. __LOCK_ALIGNMENT for any extra attribute for internal lock used with
+// atomic operations.
+//
+// 3. The macro __PTHREAD_MUTEX_INITIALIZER used for static initialization.
+// It should initialize the mutex internal flag.
+
+// Default mutex implementation struct definitions.
+// Copyright (C) 2019-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <http://www.gnu.org/licenses/>.
+
+// Generic struct for both POSIX and C11 mutexes. New ports are expected
+// to use the default layout, however architecture can redefine it to
+// add arch-specific extension (such as lock-elision). The struct have
+// a size of 32 bytes on LP32 and 40 bytes on LP64 architectures.
+
+type X__pthread_mutex_s = struct {
+ F__lock int32
+ F__count uint32
+ F__owner int32
+ F__nusers uint32
+ F__kind int32
+ F__spins int32
+ F__list X__pthread_list_t
+} /* struct_mutex.h:27:1 */
+
+// Arch-sepecific read-write lock definitions. A generic implementation is
+// provided by struct_rwlock.h. If required, an architecture can override it
+// by defining:
+//
+// 1. struct __pthread_rwlock_arch_t (used on pthread_rwlock_t definition).
+// It should contain at least the internal members defined in the
+// generic version.
+//
+// 2. The macro __PTHREAD_RWLOCK_INITIALIZER used for static initialization.
+// It should initialize the rwlock internal type.
+
+// RISC-V internal rwlock struct definitions.
+// Copyright (C) 2019-2021 Free Software Foundation, Inc.
+//
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// There is a lot of padding in this structure. While it's not strictly
+// necessary on RISC-V, we're going to leave it in to be on the safe side in
+// case it's needed in the future. Most other architectures have the padding,
+// so this gives us the same extensibility as everyone else has.
+type X__pthread_rwlock_arch_t = struct {
+ F__readers uint32
+ F__writers uint32
+ F__wrphase_futex uint32
+ F__writers_futex uint32
+ F__pad3 uint32
+ F__pad4 uint32
+ F__cur_writer int32
+ F__shared int32
+ F__pad1 uint64
+ F__pad2 uint64
+ F__flags uint32
+ F__ccgo_pad1 [4]byte
+} /* struct_rwlock.h:27:1 */
+
+// Common definition of pthread_cond_t.
+
+type X__pthread_cond_s = struct {
+ F__0 struct{ F__wseq uint64 }
+ F__8 struct{ F__g1_start uint64 }
+ F__g_refs [2]uint32
+ F__g_size [2]uint32
+ F__g1_orig_size uint32
+ F__wrefs uint32
+ F__g_signals [2]uint32
+} /* thread-shared-types.h:92:1 */
+
+type X__tss_t = uint32 /* thread-shared-types.h:119:22 */
+type X__thrd_t = uint64 /* thread-shared-types.h:120:27 */
+
+type X__once_flag = struct{ F__data int32 } /* thread-shared-types.h:125:3 */
+
+// Thread identifiers. The structure of the attribute type is not
+// exposed on purpose.
+type Pthread_t = uint64 /* pthreadtypes.h:27:27 */
+
+// Data structures for mutex handling. The structure of the attribute
+// type is not exposed on purpose.
+type Pthread_mutexattr_t = struct {
+ F__ccgo_pad1 [0]uint32
+ F__size [4]uint8
+} /* pthreadtypes.h:36:3 */
+
+// Data structure for condition variable handling. The structure of
+// the attribute type is not exposed on purpose.
+type Pthread_condattr_t = struct {
+ F__ccgo_pad1 [0]uint32
+ F__size [4]uint8
+} /* pthreadtypes.h:45:3 */
+
+// Keys for thread-specific data
+type Pthread_key_t = uint32 /* pthreadtypes.h:49:22 */
+
+// Once-only execution
+type Pthread_once_t = int32 /* pthreadtypes.h:53:30 */
+
+type Pthread_mutex_t = struct{ F__data X__pthread_mutex_s } /* pthreadtypes.h:72:3 */
+
+type Pthread_cond_t = struct{ F__data X__pthread_cond_s } /* pthreadtypes.h:80:3 */
+
+// Data structure for reader-writer lock variable handling. The
+// structure of the attribute type is deliberately not exposed.
+type Pthread_rwlock_t = struct{ F__data X__pthread_rwlock_arch_t } /* pthreadtypes.h:91:3 */
+
+type Pthread_rwlockattr_t = struct {
+ F__ccgo_pad1 [0]uint64
+ F__size [8]uint8
+} /* pthreadtypes.h:97:3 */
+
+// POSIX spinlock data type.
+type Pthread_spinlock_t = int32 /* pthreadtypes.h:103:22 */
+
+// POSIX barriers data type. The structure of the type is
+// deliberately not exposed.
+type Pthread_barrier_t = struct {
+ F__ccgo_pad1 [0]uint64
+ F__size [32]uint8
+} /* pthreadtypes.h:112:3 */
+
+type Pthread_barrierattr_t = struct {
+ F__ccgo_pad1 [0]uint32
+ F__size [4]uint8
+} /* pthreadtypes.h:118:3 */
+
+// System-specific extensions.
+// System-specific extensions of <signal.h>, Linux version.
+// Copyright (C) 2019-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+var _ uint8 /* gen.c:2:13: */
diff --git a/vendor/modernc.org/libc/stdio/capi_linux_riscv64.go b/vendor/modernc.org/libc/stdio/capi_linux_riscv64.go
new file mode 100644
index 00000000..fbb39ede
--- /dev/null
+++ b/vendor/modernc.org/libc/stdio/capi_linux_riscv64.go
@@ -0,0 +1,5 @@
+// Code generated by 'ccgo stdio/gen.c -crt-import-path -export-defines -export-enums -export-externs X -export-fields F -export-structs -export-typedefs -header -hide _OSSwapInt16,_OSSwapInt32,_OSSwapInt64 -o stdio/stdio_linux_riscv64.go -pkgname stdio', DO NOT EDIT.
+
+package stdio
+
+var CAPI = map[string]struct{}{}
diff --git a/vendor/modernc.org/libc/stdio/stdio_linux_riscv64.go b/vendor/modernc.org/libc/stdio/stdio_linux_riscv64.go
new file mode 100644
index 00000000..502ad77e
--- /dev/null
+++ b/vendor/modernc.org/libc/stdio/stdio_linux_riscv64.go
@@ -0,0 +1,589 @@
+// Code generated by 'ccgo stdio/gen.c -crt-import-path "" -export-defines "" -export-enums "" -export-externs X -export-fields F -export-structs "" -export-typedefs "" -header -hide _OSSwapInt16,_OSSwapInt32,_OSSwapInt64 -o stdio/stdio_linux_riscv64.go -pkgname stdio', DO NOT EDIT.
+
+package stdio
+
+import (
+ "math"
+ "reflect"
+ "sync/atomic"
+ "unsafe"
+)
+
+var _ = math.Pi
+var _ reflect.Kind
+var _ atomic.Value
+var _ unsafe.Pointer
+
+const (
+ BUFSIZ = 8192
+ EOF = -1
+ FILENAME_MAX = 4096
+ FOPEN_MAX = 16
+ L_ctermid = 9
+ L_tmpnam = 20
+ P_tmpdir = "/tmp"
+ SEEK_CUR = 1
+ SEEK_END = 2
+ SEEK_SET = 0
+ TMP_MAX = 238328
+ X_ATFILE_SOURCE = 1
+ X_BITS_FLOATN_COMMON_H = 0
+ X_BITS_FLOATN_H = 0
+ X_BITS_STDIO_LIM_H = 1
+ X_BITS_TIME64_H = 1
+ X_BITS_TYPESIZES_H = 1
+ X_BITS_TYPES_H = 1
+ X_BSD_SIZE_T_ = 0
+ X_BSD_SIZE_T_DEFINED_ = 0
+ X_DEFAULT_SOURCE = 1
+ X_FEATURES_H = 1
+ X_FILE_OFFSET_BITS = 64
+ X_GCC_SIZE_T = 0
+ X_IOFBF = 0
+ X_IOLBF = 1
+ X_IONBF = 2
+ X_IO_EOF_SEEN = 0x0010
+ X_IO_ERR_SEEN = 0x0020
+ X_IO_USER_LOCK = 0x8000
+ X_LP64 = 1
+ X_POSIX_C_SOURCE = 200809
+ X_POSIX_SOURCE = 1
+ X_SIZET_ = 0
+ X_SIZE_T = 0
+ X_SIZE_T_ = 0
+ X_SIZE_T_DECLARED = 0
+ X_SIZE_T_DEFINED = 0
+ X_SIZE_T_DEFINED_ = 0
+ X_STDC_PREDEF_H = 1
+ X_STDIO_H = 1
+ X_SYS_CDEFS_H = 1
+ X_SYS_SIZE_T_H = 0
+ X_T_SIZE = 0
+ X_T_SIZE_ = 0
+ X_VA_LIST_DEFINED = 0
+ Linux = 1
+ Unix = 1
+)
+
+type Ptrdiff_t = int64 /* <builtin>:3:26 */
+
+type Size_t = uint64 /* <builtin>:9:23 */
+
+type Wchar_t = int32 /* <builtin>:15:24 */
+
+type X__int128_t = struct {
+ Flo int64
+ Fhi int64
+} /* <builtin>:21:43 */ // must match modernc.org/mathutil.Int128
+type X__uint128_t = struct {
+ Flo uint64
+ Fhi uint64
+} /* <builtin>:22:44 */ // must match modernc.org/mathutil.Int128
+
+type X__builtin_va_list = uintptr /* <builtin>:46:14 */
+type X__float128 = float64 /* <builtin>:47:21 */
+
+// Wide character type.
+// Locale-writers should change this as necessary to
+// be big enough to hold unique values not between 0 and 127,
+// and not (wchar_t) -1, for each defined multibyte character.
+
+// Define this type if we are doing the whole job,
+// or if we want this type in particular.
+
+// A null pointer constant.
+
+// Copyright (C) 1989-2021 Free Software Foundation, Inc.
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+//
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+// <http://www.gnu.org/licenses/>.
+
+// ISO C Standard: 7.15 Variable arguments <stdarg.h>
+
+// Define __gnuc_va_list.
+
+type X__gnuc_va_list = X__builtin_va_list /* stdarg.h:40:27 */
+
+// Define the standard macros for the user,
+// if this invocation was from the user program.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Bit size of the time_t type at glibc build time, RISC-V case.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// RV32 and RV64 both use 64-bit time_t
+
+// Convenience types.
+type X__u_char = uint8 /* types.h:31:23 */
+type X__u_short = uint16 /* types.h:32:28 */
+type X__u_int = uint32 /* types.h:33:22 */
+type X__u_long = uint64 /* types.h:34:27 */
+
+// Fixed-size types, underlying types depend on word size and compiler.
+type X__int8_t = int8 /* types.h:37:21 */
+type X__uint8_t = uint8 /* types.h:38:23 */
+type X__int16_t = int16 /* types.h:39:26 */
+type X__uint16_t = uint16 /* types.h:40:28 */
+type X__int32_t = int32 /* types.h:41:20 */
+type X__uint32_t = uint32 /* types.h:42:22 */
+type X__int64_t = int64 /* types.h:44:25 */
+type X__uint64_t = uint64 /* types.h:45:27 */
+
+// Smallest types with at least a given width.
+type X__int_least8_t = X__int8_t /* types.h:52:18 */
+type X__uint_least8_t = X__uint8_t /* types.h:53:19 */
+type X__int_least16_t = X__int16_t /* types.h:54:19 */
+type X__uint_least16_t = X__uint16_t /* types.h:55:20 */
+type X__int_least32_t = X__int32_t /* types.h:56:19 */
+type X__uint_least32_t = X__uint32_t /* types.h:57:20 */
+type X__int_least64_t = X__int64_t /* types.h:58:19 */
+type X__uint_least64_t = X__uint64_t /* types.h:59:20 */
+
+// quad_t is also 64 bits.
+type X__quad_t = int64 /* types.h:63:18 */
+type X__u_quad_t = uint64 /* types.h:64:27 */
+
+// Largest integral types.
+type X__intmax_t = int64 /* types.h:72:18 */
+type X__uintmax_t = uint64 /* types.h:73:27 */
+
+// The machine-dependent file <bits/typesizes.h> defines __*_T_TYPE
+// macros for each of the OS types we define below. The definitions
+// of those macros must use the following macros for underlying types.
+// We define __S<SIZE>_TYPE and __U<SIZE>_TYPE for the signed and unsigned
+// variants of each of the following integer types on this machine.
+//
+// 16 -- "natural" 16-bit type (always short)
+// 32 -- "natural" 32-bit type (always int)
+// 64 -- "natural" 64-bit type (long or long long)
+// LONG32 -- 32-bit type, traditionally long
+// QUAD -- 64-bit type, traditionally long long
+// WORD -- natural type of __WORDSIZE bits (int or long)
+// LONGWORD -- type of __WORDSIZE bits, traditionally long
+//
+// We distinguish WORD/LONGWORD, 32/LONG32, and 64/QUAD so that the
+// conventional uses of `long' or `long long' type modifiers match the
+// types we define, even when a less-adorned type would be the same size.
+// This matters for (somewhat) portably writing printf/scanf formats for
+// these types, where using the appropriate l or ll format modifiers can
+// make the typedefs and the formats match up across all GNU platforms. If
+// we used `long' when it's 64 bits where `long long' is expected, then the
+// compiler would warn about the formats not matching the argument types,
+// and the programmer changing them to shut up the compiler would break the
+// program's portability.
+//
+// Here we assume what is presently the case in all the GCC configurations
+// we support: long long is always 64 bits, long is always word/address size,
+// and int is always 32 bits.
+
+// No need to mark the typedef with __extension__.
+// bits/typesizes.h -- underlying types for *_t. For the generic Linux ABI.
+// Copyright (C) 2011-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+// Contributed by Chris Metcalf <cmetcalf@tilera.com>, 2011.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// See <bits/types.h> for the meaning of these macros. This file exists so
+// that <bits/types.h> need not vary across different GNU platforms.
+
+// Tell the libc code that off_t and off64_t are actually the same type
+// for all ABI purposes, even if possibly expressed as different base types
+// for C type-checking purposes.
+
+// Same for ino_t and ino64_t.
+
+// And for __rlim_t and __rlim64_t.
+
+// And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t.
+
+// And for getitimer, setitimer and rusage
+
+// Number of descriptors that can fit in an `fd_set'.
+
+// bits/time64.h -- underlying types for __time64_t. RISC-V version.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Define __TIME64_T_TYPE so that it is always a 64-bit type.
+
+// If we already have 64-bit time type then use it.
+
+type X__dev_t = uint64 /* types.h:145:25 */ // Type of device numbers.
+type X__uid_t = uint32 /* types.h:146:25 */ // Type of user identifications.
+type X__gid_t = uint32 /* types.h:147:25 */ // Type of group identifications.
+type X__ino_t = uint64 /* types.h:148:25 */ // Type of file serial numbers.
+type X__ino64_t = uint64 /* types.h:149:27 */ // Type of file serial numbers (LFS).
+type X__mode_t = uint32 /* types.h:150:26 */ // Type of file attribute bitmasks.
+type X__nlink_t = uint32 /* types.h:151:27 */ // Type of file link counts.
+type X__off_t = int64 /* types.h:152:25 */ // Type of file sizes and offsets.
+type X__off64_t = int64 /* types.h:153:27 */ // Type of file sizes and offsets (LFS).
+type X__pid_t = int32 /* types.h:154:25 */ // Type of process identifications.
+type X__fsid_t = struct{ F__val [2]int32 } /* types.h:155:26 */ // Type of file system IDs.
+type X__clock_t = int64 /* types.h:156:27 */ // Type of CPU usage counts.
+type X__rlim_t = uint64 /* types.h:157:26 */ // Type for resource measurement.
+type X__rlim64_t = uint64 /* types.h:158:28 */ // Type for resource measurement (LFS).
+type X__id_t = uint32 /* types.h:159:24 */ // General type for IDs.
+type X__time_t = int64 /* types.h:160:26 */ // Seconds since the Epoch.
+type X__useconds_t = uint32 /* types.h:161:30 */ // Count of microseconds.
+type X__suseconds_t = int64 /* types.h:162:31 */ // Signed count of microseconds.
+type X__suseconds64_t = int64 /* types.h:163:33 */
+
+type X__daddr_t = int32 /* types.h:165:27 */ // The type of a disk address.
+type X__key_t = int32 /* types.h:166:25 */ // Type of an IPC key.
+
+// Clock ID used in clock and timer functions.
+type X__clockid_t = int32 /* types.h:169:29 */
+
+// Timer ID returned by `timer_create'.
+type X__timer_t = uintptr /* types.h:172:12 */
+
+// Type to represent block size.
+type X__blksize_t = int32 /* types.h:175:29 */
+
+// Types from the Large File Support interface.
+
+// Type to count number of disk blocks.
+type X__blkcnt_t = int64 /* types.h:180:28 */
+type X__blkcnt64_t = int64 /* types.h:181:30 */
+
+// Type to count file system blocks.
+type X__fsblkcnt_t = uint64 /* types.h:184:30 */
+type X__fsblkcnt64_t = uint64 /* types.h:185:32 */
+
+// Type to count file system nodes.
+type X__fsfilcnt_t = uint64 /* types.h:188:30 */
+type X__fsfilcnt64_t = uint64 /* types.h:189:32 */
+
+// Type of miscellaneous file system fields.
+type X__fsword_t = int64 /* types.h:192:28 */
+
+type X__ssize_t = int64 /* types.h:194:27 */ // Type of a byte count, or error.
+
+// Signed long type used in system calls.
+type X__syscall_slong_t = int64 /* types.h:197:33 */
+// Unsigned long type used in system calls.
+type X__syscall_ulong_t = uint64 /* types.h:199:33 */
+
+// These few don't really vary by system, they always correspond
+// to one of the other defined types.
+type X__loff_t = X__off64_t /* types.h:203:19 */ // Type of file sizes and offsets (LFS).
+type X__caddr_t = uintptr /* types.h:204:14 */
+
+// Duplicates info from stdint.h but this is used in unistd.h.
+type X__intptr_t = int64 /* types.h:207:25 */
+
+// Duplicate info from sys/socket.h.
+type X__socklen_t = uint32 /* types.h:210:23 */
+
+// C99: An integer type that can be accessed as an atomic entity,
+// even in the presence of asynchronous interrupts.
+// It is not currently necessary for this to be machine-specific.
+type X__sig_atomic_t = int32 /* types.h:215:13 */
+
+// Seconds since the Epoch, visible to user code when time_t is too
+// narrow only for consistency with the old way of widening too-narrow
+// types. User code should never use __time64_t.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Integral type unchanged by default argument promotions that can
+// hold any value corresponding to members of the extended character
+// set, as well as at least one value that does not correspond to any
+// member of the extended character set.
+
+// Conversion state information.
+type X__mbstate_t = struct {
+ F__count int32
+ F__value struct{ F__wch uint32 }
+} /* __mbstate_t.h:21:3 */
+
+// The tag name of this struct is _G_fpos_t to preserve historic
+// C++ mangled names for functions taking fpos_t arguments.
+// That name should not be used in new code.
+type X_G_fpos_t = struct {
+ F__pos X__off_t
+ F__state X__mbstate_t
+} /* __fpos_t.h:10:9 */
+
+// The tag name of this struct is _G_fpos_t to preserve historic
+// C++ mangled names for functions taking fpos_t arguments.
+// That name should not be used in new code.
+type X__fpos_t = X_G_fpos_t /* __fpos_t.h:14:3 */
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// The tag name of this struct is _G_fpos64_t to preserve historic
+// C++ mangled names for functions taking fpos_t and/or fpos64_t
+// arguments. That name should not be used in new code.
+type X_G_fpos64_t = struct {
+ F__pos X__off64_t
+ F__state X__mbstate_t
+} /* __fpos64_t.h:10:9 */
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// The tag name of this struct is _G_fpos64_t to preserve historic
+// C++ mangled names for functions taking fpos_t and/or fpos64_t
+// arguments. That name should not be used in new code.
+type X__fpos64_t = X_G_fpos64_t /* __fpos64_t.h:14:3 */
+
+type X_IO_FILE = struct {
+ F_flags int32
+ F__ccgo_pad1 [4]byte
+ F_IO_read_ptr uintptr
+ F_IO_read_end uintptr
+ F_IO_read_base uintptr
+ F_IO_write_base uintptr
+ F_IO_write_ptr uintptr
+ F_IO_write_end uintptr
+ F_IO_buf_base uintptr
+ F_IO_buf_end uintptr
+ F_IO_save_base uintptr
+ F_IO_backup_base uintptr
+ F_IO_save_end uintptr
+ F_markers uintptr
+ F_chain uintptr
+ F_fileno int32
+ F_flags2 int32
+ F_old_offset X__off_t
+ F_cur_column uint16
+ F_vtable_offset int8
+ F_shortbuf [1]uint8
+ F__ccgo_pad2 [4]byte
+ F_lock uintptr
+ F_offset X__off64_t
+ F_codecvt uintptr
+ F_wide_data uintptr
+ F_freeres_list uintptr
+ F_freeres_buf uintptr
+ F__pad5 Size_t
+ F_mode int32
+ F_unused2 [20]uint8
+} /* __FILE.h:4:1 */
+
+type X__FILE = X_IO_FILE /* __FILE.h:5:25 */
+
+// The opaque type of streams. This is the definition used elsewhere.
+type FILE = X_IO_FILE /* FILE.h:7:25 */
+
+// These macros are used by bits/stdio.h and internal headers.
+
+// Many more flag bits are defined internally.
+
+type Va_list = X__gnuc_va_list /* stdio.h:52:24 */
+
+type Off_t = X__off64_t /* stdio.h:65:19 */
+
+type Ssize_t = X__ssize_t /* stdio.h:77:19 */
+
+// The type of the second argument to `fgetpos' and `fsetpos'.
+type Fpos_t = X__fpos64_t /* stdio.h:86:20 */
+
+// If we are compiling with optimizing read this file. It contains
+// several optimizing inline functions and macros.
+
+// Macros to control TS 18661-3 glibc features on ldbl-128 platforms.
+// Copyright (C) 2017-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+var _ uint8 /* gen.c:2:13: */
diff --git a/vendor/modernc.org/libc/stdlib/capi_linux_riscv64.go b/vendor/modernc.org/libc/stdlib/capi_linux_riscv64.go
new file mode 100644
index 00000000..c464fb91
--- /dev/null
+++ b/vendor/modernc.org/libc/stdlib/capi_linux_riscv64.go
@@ -0,0 +1,5 @@
+// Code generated by 'ccgo stdlib/gen.c -crt-import-path -export-defines -export-enums -export-externs X -export-fields F -export-structs -export-typedefs -header -hide _OSSwapInt16,_OSSwapInt32,_OSSwapInt64 -o stdlib/stdlib_linux_riscv64.go -pkgname stdlib', DO NOT EDIT.
+
+package stdlib
+
+var CAPI = map[string]struct{}{}
diff --git a/vendor/modernc.org/libc/stdlib/stdlib_linux_riscv64.go b/vendor/modernc.org/libc/stdlib/stdlib_linux_riscv64.go
new file mode 100644
index 00000000..532565b6
--- /dev/null
+++ b/vendor/modernc.org/libc/stdlib/stdlib_linux_riscv64.go
@@ -0,0 +1,1591 @@
+// Code generated by 'ccgo stdlib/gen.c -crt-import-path "" -export-defines "" -export-enums "" -export-externs X -export-fields F -export-structs "" -export-typedefs "" -header -hide _OSSwapInt16,_OSSwapInt32,_OSSwapInt64 -o stdlib/stdlib_linux_riscv64.go -pkgname stdlib', DO NOT EDIT.
+
+package stdlib
+
+import (
+ "math"
+ "reflect"
+ "sync/atomic"
+ "unsafe"
+)
+
+var _ = math.Pi
+var _ reflect.Kind
+var _ atomic.Value
+var _ unsafe.Pointer
+
+const (
+ BIG_ENDIAN = 4321
+ BYTE_ORDER = 1234
+ EXIT_FAILURE = 1
+ EXIT_SUCCESS = 0
+ FD_SETSIZE = 1024
+ LITTLE_ENDIAN = 1234
+ PDP_ENDIAN = 3412
+ RAND_MAX = 2147483647
+ WCONTINUED = 8
+ WEXITED = 4
+ WNOHANG = 1
+ WNOWAIT = 0x01000000
+ WSTOPPED = 2
+ WUNTRACED = 2
+ X_ALLOCA_H = 1
+ X_ATFILE_SOURCE = 1
+ X_BITS_BYTESWAP_H = 1
+ X_BITS_ENDIANNESS_H = 1
+ X_BITS_ENDIAN_H = 1
+ X_BITS_FLOATN_COMMON_H = 0
+ X_BITS_FLOATN_H = 0
+ X_BITS_PTHREADTYPES_ARCH_H = 1
+ X_BITS_PTHREADTYPES_COMMON_H = 1
+ X_BITS_STDINT_INTN_H = 1
+ X_BITS_TIME64_H = 1
+ X_BITS_TYPESIZES_H = 1
+ X_BITS_TYPES_H = 1
+ X_BITS_UINTN_IDENTITY_H = 1
+ X_BSD_SIZE_T_ = 0
+ X_BSD_SIZE_T_DEFINED_ = 0
+ X_DEFAULT_SOURCE = 1
+ X_ENDIAN_H = 1
+ X_FEATURES_H = 1
+ X_FILE_OFFSET_BITS = 64
+ X_GCC_SIZE_T = 0
+ X_GCC_WCHAR_T = 0
+ X_LP64 = 1
+ X_POSIX_C_SOURCE = 200809
+ X_POSIX_SOURCE = 1
+ X_RWLOCK_INTERNAL_H = 0
+ X_SIZET_ = 0
+ X_SIZE_T = 0
+ X_SIZE_T_ = 0
+ X_SIZE_T_DECLARED = 0
+ X_SIZE_T_DEFINED = 0
+ X_SIZE_T_DEFINED_ = 0
+ X_STDC_PREDEF_H = 1
+ X_STDLIB_H = 1
+ X_STRUCT_TIMESPEC = 1
+ X_SYS_CDEFS_H = 1
+ X_SYS_SELECT_H = 1
+ X_SYS_SIZE_T_H = 0
+ X_SYS_TYPES_H = 1
+ X_THREAD_MUTEX_INTERNAL_H = 1
+ X_THREAD_SHARED_TYPES_H = 1
+ X_T_SIZE = 0
+ X_T_SIZE_ = 0
+ X_T_WCHAR = 0
+ X_T_WCHAR_ = 0
+ X_WCHAR_T = 0
+ X_WCHAR_T_ = 0
+ X_WCHAR_T_DECLARED = 0
+ X_WCHAR_T_DEFINED = 0
+ X_WCHAR_T_DEFINED_ = 0
+ X_WCHAR_T_H = 0
+ Linux = 1
+ Unix = 1
+)
+
+type Ptrdiff_t = int64 /* <builtin>:3:26 */
+
+type Size_t = uint64 /* <builtin>:9:23 */
+
+type Wchar_t = int32 /* <builtin>:15:24 */
+
+type X__int128_t = struct {
+ Flo int64
+ Fhi int64
+} /* <builtin>:21:43 */ // must match modernc.org/mathutil.Int128
+type X__uint128_t = struct {
+ Flo uint64
+ Fhi uint64
+} /* <builtin>:22:44 */ // must match modernc.org/mathutil.Int128
+
+type X__builtin_va_list = uintptr /* <builtin>:46:14 */
+type X__float128 = float64 /* <builtin>:47:21 */
+
+// A null pointer constant.
+
+// XPG requires a few symbols from <sys/wait.h> being defined.
+// Definitions of flag bits for `waitpid' et al.
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Bits in the third argument to `waitpid'.
+
+// Bits in the fourth argument to `waitid'.
+
+// Definitions of status bits for `wait' et al.
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Everything extant so far uses these same bits.
+
+// If WIFEXITED(STATUS), the low-order 8 bits of the status.
+
+// If WIFSIGNALED(STATUS), the terminating signal.
+
+// If WIFSTOPPED(STATUS), the signal that stopped the child.
+
+// Nonzero if STATUS indicates normal termination.
+
+// Nonzero if STATUS indicates termination by a signal.
+
+// Nonzero if STATUS indicates the child is stopped.
+
+// Nonzero if STATUS indicates the child continued after a stop. We only
+// define this if <bits/waitflags.h> provides the WCONTINUED flag bit.
+
+// Nonzero if STATUS indicates the child dumped core.
+
+// Macros for constructing status values.
+
+// Define the macros <sys/wait.h> also would define this way.
+
+// _FloatN API tests for enablement.
+// Macros to control TS 18661-3 glibc features on ldbl-128 platforms.
+// Copyright (C) 2017-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Properties of long double type. ldbl-128 version.
+// Copyright (C) 2016-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// long double is distinct from double, so there is nothing to
+// define here.
+
+// Defined to 1 if the current compiler invocation provides a
+// floating-point type with the IEEE 754 binary128 format, and this
+// glibc includes corresponding *f128 interfaces for it.
+
+// Defined to 1 if __HAVE_FLOAT128 is 1 and the type is ABI-distinct
+// from the default float, double and long double types in this glibc.
+
+// Defined to 1 if the current compiler invocation provides a
+// floating-point type with the right format for _Float64x, and this
+// glibc includes corresponding *f64x interfaces for it.
+
+// Defined to 1 if __HAVE_FLOAT64X is 1 and _Float64x has the format
+// of long double. Otherwise, if __HAVE_FLOAT64X is 1, _Float64x has
+// the format of _Float128, which must be different from that of long
+// double.
+
+// Defined to concatenate the literal suffix to be used with _Float128
+// types, if __HAVE_FLOAT128 is 1.
+
+// Defined to a complex binary128 type if __HAVE_FLOAT128 is 1.
+
+// The remaining of this file provides support for older compilers.
+
+// The type _Float128 exists only since GCC 7.0.
+
+// Various built-in functions do not exist before GCC 7.0.
+
+// Macros to control TS 18661-3 glibc features where the same
+// definitions are appropriate for all platforms.
+// Copyright (C) 2017-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Properties of long double type. ldbl-128 version.
+// Copyright (C) 2016-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// long double is distinct from double, so there is nothing to
+// define here.
+
+// This header should be included at the bottom of each bits/floatn.h.
+// It defines the following macros for each _FloatN and _FloatNx type,
+// where the same definitions, or definitions based only on the macros
+// in bits/floatn.h, are appropriate for all glibc configurations.
+
+// Defined to 1 if the current compiler invocation provides a
+// floating-point type with the right format for this type, and this
+// glibc includes corresponding *fN or *fNx interfaces for it.
+
+// Defined to 1 if the corresponding __HAVE_<type> macro is 1 and the
+// type is the first with its format in the sequence of (the default
+// choices for) float, double, long double, _Float16, _Float32,
+// _Float64, _Float128, _Float32x, _Float64x, _Float128x for this
+// glibc; that is, if functions present once per floating-point format
+// rather than once per type are present for this type.
+//
+// All configurations supported by glibc have _Float32 the same format
+// as float, _Float64 and _Float32x the same format as double, the
+// _Float64x the same format as either long double or _Float128. No
+// configurations support _Float128x or, as of GCC 7, have compiler
+// support for a type meeting the requirements for _Float128x.
+
+// Defined to 1 if the corresponding _FloatN type is not binary compatible
+// with the corresponding ISO C type in the current compilation unit as
+// opposed to __HAVE_DISTINCT_FLOATN, which indicates the default types built
+// in glibc.
+
+// Defined to 1 if any _FloatN or _FloatNx types that are not
+// ABI-distinct are however distinct types at the C language level (so
+// for the purposes of __builtin_types_compatible_p and _Generic).
+
+// Defined to concatenate the literal suffix to be used with _FloatN
+// or _FloatNx types, if __HAVE_<type> is 1. The corresponding
+// literal suffixes exist since GCC 7, for C only.
+
+// Defined to a complex type if __HAVE_<type> is 1.
+
+// The remaining of this file provides support for older compilers.
+
+// If double, long double and _Float64 all have the same set of
+// values, TS 18661-3 requires the usual arithmetic conversions on
+// long double and _Float64 to produce _Float64. For this to be the
+// case when building with a compiler without a distinct _Float64
+// type, _Float64 must be a typedef for long double, not for
+// double.
+
+// Returned by `div'.
+type Div_t = struct {
+ Fquot int32
+ Frem int32
+} /* stdlib.h:62:5 */
+
+// Returned by `ldiv'.
+type Ldiv_t = struct {
+ Fquot int64
+ Frem int64
+} /* stdlib.h:70:5 */
+
+// Returned by `lldiv'.
+type Lldiv_t = struct {
+ Fquot int64
+ Frem int64
+} /* stdlib.h:80:5 */
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// POSIX Standard: 2.6 Primitive System Data Types <sys/types.h>
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Bit size of the time_t type at glibc build time, RISC-V case.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// RV32 and RV64 both use 64-bit time_t
+
+// Convenience types.
+type X__u_char = uint8 /* types.h:31:23 */
+type X__u_short = uint16 /* types.h:32:28 */
+type X__u_int = uint32 /* types.h:33:22 */
+type X__u_long = uint64 /* types.h:34:27 */
+
+// Fixed-size types, underlying types depend on word size and compiler.
+type X__int8_t = int8 /* types.h:37:21 */
+type X__uint8_t = uint8 /* types.h:38:23 */
+type X__int16_t = int16 /* types.h:39:26 */
+type X__uint16_t = uint16 /* types.h:40:28 */
+type X__int32_t = int32 /* types.h:41:20 */
+type X__uint32_t = uint32 /* types.h:42:22 */
+type X__int64_t = int64 /* types.h:44:25 */
+type X__uint64_t = uint64 /* types.h:45:27 */
+
+// Smallest types with at least a given width.
+type X__int_least8_t = X__int8_t /* types.h:52:18 */
+type X__uint_least8_t = X__uint8_t /* types.h:53:19 */
+type X__int_least16_t = X__int16_t /* types.h:54:19 */
+type X__uint_least16_t = X__uint16_t /* types.h:55:20 */
+type X__int_least32_t = X__int32_t /* types.h:56:19 */
+type X__uint_least32_t = X__uint32_t /* types.h:57:20 */
+type X__int_least64_t = X__int64_t /* types.h:58:19 */
+type X__uint_least64_t = X__uint64_t /* types.h:59:20 */
+
+// quad_t is also 64 bits.
+type X__quad_t = int64 /* types.h:63:18 */
+type X__u_quad_t = uint64 /* types.h:64:27 */
+
+// Largest integral types.
+type X__intmax_t = int64 /* types.h:72:18 */
+type X__uintmax_t = uint64 /* types.h:73:27 */
+
+// The machine-dependent file <bits/typesizes.h> defines __*_T_TYPE
+// macros for each of the OS types we define below. The definitions
+// of those macros must use the following macros for underlying types.
+// We define __S<SIZE>_TYPE and __U<SIZE>_TYPE for the signed and unsigned
+// variants of each of the following integer types on this machine.
+//
+// 16 -- "natural" 16-bit type (always short)
+// 32 -- "natural" 32-bit type (always int)
+// 64 -- "natural" 64-bit type (long or long long)
+// LONG32 -- 32-bit type, traditionally long
+// QUAD -- 64-bit type, traditionally long long
+// WORD -- natural type of __WORDSIZE bits (int or long)
+// LONGWORD -- type of __WORDSIZE bits, traditionally long
+//
+// We distinguish WORD/LONGWORD, 32/LONG32, and 64/QUAD so that the
+// conventional uses of `long' or `long long' type modifiers match the
+// types we define, even when a less-adorned type would be the same size.
+// This matters for (somewhat) portably writing printf/scanf formats for
+// these types, where using the appropriate l or ll format modifiers can
+// make the typedefs and the formats match up across all GNU platforms. If
+// we used `long' when it's 64 bits where `long long' is expected, then the
+// compiler would warn about the formats not matching the argument types,
+// and the programmer changing them to shut up the compiler would break the
+// program's portability.
+//
+// Here we assume what is presently the case in all the GCC configurations
+// we support: long long is always 64 bits, long is always word/address size,
+// and int is always 32 bits.
+
+// No need to mark the typedef with __extension__.
+// bits/typesizes.h -- underlying types for *_t. For the generic Linux ABI.
+// Copyright (C) 2011-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+// Contributed by Chris Metcalf <cmetcalf@tilera.com>, 2011.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// See <bits/types.h> for the meaning of these macros. This file exists so
+// that <bits/types.h> need not vary across different GNU platforms.
+
+// Tell the libc code that off_t and off64_t are actually the same type
+// for all ABI purposes, even if possibly expressed as different base types
+// for C type-checking purposes.
+
+// Same for ino_t and ino64_t.
+
+// And for __rlim_t and __rlim64_t.
+
+// And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t.
+
+// And for getitimer, setitimer and rusage
+
+// Number of descriptors that can fit in an `fd_set'.
+
+// bits/time64.h -- underlying types for __time64_t. RISC-V version.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Define __TIME64_T_TYPE so that it is always a 64-bit type.
+
+// If we already have 64-bit time type then use it.
+
+type X__dev_t = uint64 /* types.h:145:25 */ // Type of device numbers.
+type X__uid_t = uint32 /* types.h:146:25 */ // Type of user identifications.
+type X__gid_t = uint32 /* types.h:147:25 */ // Type of group identifications.
+type X__ino_t = uint64 /* types.h:148:25 */ // Type of file serial numbers.
+type X__ino64_t = uint64 /* types.h:149:27 */ // Type of file serial numbers (LFS).
+type X__mode_t = uint32 /* types.h:150:26 */ // Type of file attribute bitmasks.
+type X__nlink_t = uint32 /* types.h:151:27 */ // Type of file link counts.
+type X__off_t = int64 /* types.h:152:25 */ // Type of file sizes and offsets.
+type X__off64_t = int64 /* types.h:153:27 */ // Type of file sizes and offsets (LFS).
+type X__pid_t = int32 /* types.h:154:25 */ // Type of process identifications.
+type X__fsid_t = struct{ F__val [2]int32 } /* types.h:155:26 */ // Type of file system IDs.
+type X__clock_t = int64 /* types.h:156:27 */ // Type of CPU usage counts.
+type X__rlim_t = uint64 /* types.h:157:26 */ // Type for resource measurement.
+type X__rlim64_t = uint64 /* types.h:158:28 */ // Type for resource measurement (LFS).
+type X__id_t = uint32 /* types.h:159:24 */ // General type for IDs.
+type X__time_t = int64 /* types.h:160:26 */ // Seconds since the Epoch.
+type X__useconds_t = uint32 /* types.h:161:30 */ // Count of microseconds.
+type X__suseconds_t = int64 /* types.h:162:31 */ // Signed count of microseconds.
+type X__suseconds64_t = int64 /* types.h:163:33 */
+
+type X__daddr_t = int32 /* types.h:165:27 */ // The type of a disk address.
+type X__key_t = int32 /* types.h:166:25 */ // Type of an IPC key.
+
+// Clock ID used in clock and timer functions.
+type X__clockid_t = int32 /* types.h:169:29 */
+
+// Timer ID returned by `timer_create'.
+type X__timer_t = uintptr /* types.h:172:12 */
+
+// Type to represent block size.
+type X__blksize_t = int32 /* types.h:175:29 */
+
+// Types from the Large File Support interface.
+
+// Type to count number of disk blocks.
+type X__blkcnt_t = int64 /* types.h:180:28 */
+type X__blkcnt64_t = int64 /* types.h:181:30 */
+
+// Type to count file system blocks.
+type X__fsblkcnt_t = uint64 /* types.h:184:30 */
+type X__fsblkcnt64_t = uint64 /* types.h:185:32 */
+
+// Type to count file system nodes.
+type X__fsfilcnt_t = uint64 /* types.h:188:30 */
+type X__fsfilcnt64_t = uint64 /* types.h:189:32 */
+
+// Type of miscellaneous file system fields.
+type X__fsword_t = int64 /* types.h:192:28 */
+
+type X__ssize_t = int64 /* types.h:194:27 */ // Type of a byte count, or error.
+
+// Signed long type used in system calls.
+type X__syscall_slong_t = int64 /* types.h:197:33 */
+// Unsigned long type used in system calls.
+type X__syscall_ulong_t = uint64 /* types.h:199:33 */
+
+// These few don't really vary by system, they always correspond
+// to one of the other defined types.
+type X__loff_t = X__off64_t /* types.h:203:19 */ // Type of file sizes and offsets (LFS).
+type X__caddr_t = uintptr /* types.h:204:14 */
+
+// Duplicates info from stdint.h but this is used in unistd.h.
+type X__intptr_t = int64 /* types.h:207:25 */
+
+// Duplicate info from sys/socket.h.
+type X__socklen_t = uint32 /* types.h:210:23 */
+
+// C99: An integer type that can be accessed as an atomic entity,
+// even in the presence of asynchronous interrupts.
+// It is not currently necessary for this to be machine-specific.
+type X__sig_atomic_t = int32 /* types.h:215:13 */
+
+// Seconds since the Epoch, visible to user code when time_t is too
+// narrow only for consistency with the old way of widening too-narrow
+// types. User code should never use __time64_t.
+
+type U_char = X__u_char /* types.h:33:18 */
+type U_short = X__u_short /* types.h:34:19 */
+type U_int = X__u_int /* types.h:35:17 */
+type U_long = X__u_long /* types.h:36:18 */
+type Quad_t = X__quad_t /* types.h:37:18 */
+type U_quad_t = X__u_quad_t /* types.h:38:20 */
+type Fsid_t = X__fsid_t /* types.h:39:18 */
+type Loff_t = X__loff_t /* types.h:42:18 */
+
+type Ino_t = X__ino64_t /* types.h:49:19 */
+
+type Dev_t = X__dev_t /* types.h:59:17 */
+
+type Gid_t = X__gid_t /* types.h:64:17 */
+
+type Mode_t = X__mode_t /* types.h:69:18 */
+
+type Nlink_t = X__nlink_t /* types.h:74:19 */
+
+type Uid_t = X__uid_t /* types.h:79:17 */
+
+type Off_t = X__off64_t /* types.h:87:19 */
+
+type Pid_t = X__pid_t /* types.h:97:17 */
+
+type Id_t = X__id_t /* types.h:103:16 */
+
+type Ssize_t = X__ssize_t /* types.h:108:19 */
+
+type Daddr_t = X__daddr_t /* types.h:114:19 */
+type Caddr_t = X__caddr_t /* types.h:115:19 */
+
+type Key_t = X__key_t /* types.h:121:17 */
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Returned by `clock'.
+type Clock_t = X__clock_t /* clock_t.h:7:19 */
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Clock ID used in clock and timer functions.
+type Clockid_t = X__clockid_t /* clockid_t.h:7:21 */
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Returned by `time'.
+type Time_t = X__time_t /* time_t.h:10:18 */
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Timer ID returned by `timer_create'.
+type Timer_t = X__timer_t /* timer_t.h:7:19 */
+
+// Copyright (C) 1989-2021 Free Software Foundation, Inc.
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+//
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+// <http://www.gnu.org/licenses/>.
+
+// ISO C Standard: 7.17 Common definitions <stddef.h>
+
+// Any one of these symbols __need_* means that GNU libc
+// wants us just to define one data type. So don't define
+// the symbols that indicate this file's entire job has been done.
+
+// This avoids lossage on SunOS but only if stdtypes.h comes first.
+// There's no way to win with the other order! Sun lossage.
+
+// Sequent's header files use _PTRDIFF_T_ in some conflicting way.
+// Just ignore it.
+
+// On VxWorks, <type/vxTypesBase.h> may have defined macros like
+// _TYPE_size_t which will typedef size_t. fixincludes patched the
+// vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is
+// not defined, and so that defining this macro defines _GCC_SIZE_T.
+// If we find that the macros are still defined at this point, we must
+// invoke them so that the type is defined as expected.
+
+// In case nobody has defined these types, but we aren't running under
+// GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and
+// __WCHAR_TYPE__ have reasonable values. This can happen if the
+// parts of GCC is compiled by an older compiler, that actually
+// include gstddef.h, such as collect2.
+
+// Signed type of difference of two pointers.
+
+// Define this type if we are doing the whole job,
+// or if we want this type in particular.
+
+// Unsigned type of `sizeof' something.
+
+// Define this type if we are doing the whole job,
+// or if we want this type in particular.
+
+// Wide character type.
+// Locale-writers should change this as necessary to
+// be big enough to hold unique values not between 0 and 127,
+// and not (wchar_t) -1, for each defined multibyte character.
+
+// Define this type if we are doing the whole job,
+// or if we want this type in particular.
+
+// A null pointer constant.
+
+// Old compatibility names for C types.
+type Ulong = uint64 /* types.h:148:27 */
+type Ushort = uint16 /* types.h:149:28 */
+type Uint = uint32 /* types.h:150:22 */
+
+// These size-specific names are used by some of the inet code.
+
+// Define intN_t types.
+// Copyright (C) 2017-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+type Int8_t = X__int8_t /* stdint-intn.h:24:18 */
+type Int16_t = X__int16_t /* stdint-intn.h:25:19 */
+type Int32_t = X__int32_t /* stdint-intn.h:26:19 */
+type Int64_t = X__int64_t /* stdint-intn.h:27:19 */
+
+// These were defined by ISO C without the first `_'.
+type U_int8_t = X__uint8_t /* types.h:158:19 */
+type U_int16_t = X__uint16_t /* types.h:159:20 */
+type U_int32_t = X__uint32_t /* types.h:160:20 */
+type U_int64_t = X__uint64_t /* types.h:161:20 */
+
+type Register_t = int32 /* types.h:164:13 */
+
+// It also defines `fd_set' and the FD_* macros for `select'.
+// `fd_set' type and related macros, and `select'/`pselect' declarations.
+// Copyright (C) 1996-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// POSIX 1003.1g: 6.2 Select from File Descriptor Sets <sys/select.h>
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Get definition of needed basic types.
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Get __FD_* definitions.
+// Copyright (C) 1997-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// We don't use `memset' because this would require a prototype and
+// the array isn't too big.
+
+// Get sigset_t.
+
+type X__sigset_t = struct{ F__val [16]uint64 } /* __sigset_t.h:8:3 */
+
+// A set of signals to be blocked, unblocked, or waited for.
+type Sigset_t = X__sigset_t /* sigset_t.h:7:20 */
+
+// Get definition of timer specification structures.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// A time value that is accurate to the nearest
+// microsecond but also has a range of years.
+type Timeval = struct {
+ Ftv_sec X__time_t
+ Ftv_usec X__suseconds_t
+} /* struct_timeval.h:8:1 */
+
+// NB: Include guard matches what <linux/time.h> uses.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Endian macros for string.h functions
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <http://www.gnu.org/licenses/>.
+
+// POSIX.1b structure for a time value. This is like a `struct timeval' but
+// has nanoseconds instead of microseconds.
+type Timespec = struct {
+ Ftv_sec X__time_t
+ Ftv_nsec X__syscall_slong_t
+} /* struct_timespec.h:11:1 */
+
+type Suseconds_t = X__suseconds_t /* select.h:43:23 */
+
+// The fd_set member is required to be an array of longs.
+type X__fd_mask = int64 /* select.h:49:18 */
+
+// Some versions of <linux/posix_types.h> define this macros.
+// It's easier to assume 8-bit bytes than to get CHAR_BIT.
+
+// fd_set for select and pselect.
+type Fd_set = struct{ F__fds_bits [16]X__fd_mask } /* select.h:70:5 */
+
+// Maximum number of file descriptors in `fd_set'.
+
+// Sometimes the fd_set member is assumed to have this type.
+type Fd_mask = X__fd_mask /* select.h:77:19 */
+
+// Define some inlines helping to catch common problems.
+
+type Blksize_t = X__blksize_t /* types.h:185:21 */
+
+// Types from the Large File Support interface.
+type Blkcnt_t = X__blkcnt64_t /* types.h:205:22 */ // Type to count number of disk blocks.
+type Fsblkcnt_t = X__fsblkcnt64_t /* types.h:209:24 */ // Type to count file system blocks.
+type Fsfilcnt_t = X__fsfilcnt64_t /* types.h:213:24 */ // Type to count file system inodes.
+
+// Now add the thread types.
+// Declaration of common pthread types for all architectures.
+// Copyright (C) 2017-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// For internal mutex and condition variable definitions.
+// Common threading primitives definitions for both POSIX and C11.
+// Copyright (C) 2017-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Arch-specific definitions. Each architecture must define the following
+// macros to define the expected sizes of pthread data types:
+//
+// __SIZEOF_PTHREAD_ATTR_T - size of pthread_attr_t.
+// __SIZEOF_PTHREAD_MUTEX_T - size of pthread_mutex_t.
+// __SIZEOF_PTHREAD_MUTEXATTR_T - size of pthread_mutexattr_t.
+// __SIZEOF_PTHREAD_COND_T - size of pthread_cond_t.
+// __SIZEOF_PTHREAD_CONDATTR_T - size of pthread_condattr_t.
+// __SIZEOF_PTHREAD_RWLOCK_T - size of pthread_rwlock_t.
+// __SIZEOF_PTHREAD_RWLOCKATTR_T - size of pthread_rwlockattr_t.
+// __SIZEOF_PTHREAD_BARRIER_T - size of pthread_barrier_t.
+// __SIZEOF_PTHREAD_BARRIERATTR_T - size of pthread_barrierattr_t.
+//
+// The additional macro defines any constraint for the lock alignment
+// inside the thread structures:
+//
+// __LOCK_ALIGNMENT - for internal lock/futex usage.
+//
+// Same idea but for the once locking primitive:
+//
+// __ONCE_ALIGNMENT - for pthread_once_t/once_flag definition.
+
+// Machine-specific pthread type layouts. RISC-V version.
+// Copyright (C) 2011-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Endian macros for string.h functions
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <http://www.gnu.org/licenses/>.
+
+// Common definition of pthread_mutex_t.
+
+type X__pthread_internal_list = struct {
+ F__prev uintptr
+ F__next uintptr
+} /* thread-shared-types.h:49:9 */
+
+// Type to count file system inodes.
+
+// Now add the thread types.
+// Declaration of common pthread types for all architectures.
+// Copyright (C) 2017-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// For internal mutex and condition variable definitions.
+// Common threading primitives definitions for both POSIX and C11.
+// Copyright (C) 2017-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Arch-specific definitions. Each architecture must define the following
+// macros to define the expected sizes of pthread data types:
+//
+// __SIZEOF_PTHREAD_ATTR_T - size of pthread_attr_t.
+// __SIZEOF_PTHREAD_MUTEX_T - size of pthread_mutex_t.
+// __SIZEOF_PTHREAD_MUTEXATTR_T - size of pthread_mutexattr_t.
+// __SIZEOF_PTHREAD_COND_T - size of pthread_cond_t.
+// __SIZEOF_PTHREAD_CONDATTR_T - size of pthread_condattr_t.
+// __SIZEOF_PTHREAD_RWLOCK_T - size of pthread_rwlock_t.
+// __SIZEOF_PTHREAD_RWLOCKATTR_T - size of pthread_rwlockattr_t.
+// __SIZEOF_PTHREAD_BARRIER_T - size of pthread_barrier_t.
+// __SIZEOF_PTHREAD_BARRIERATTR_T - size of pthread_barrierattr_t.
+//
+// The additional macro defines any constraint for the lock alignment
+// inside the thread structures:
+//
+// __LOCK_ALIGNMENT - for internal lock/futex usage.
+//
+// Same idea but for the once locking primitive:
+//
+// __ONCE_ALIGNMENT - for pthread_once_t/once_flag definition.
+
+// Machine-specific pthread type layouts. RISC-V version.
+// Copyright (C) 2011-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Endian macros for string.h functions
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <http://www.gnu.org/licenses/>.
+
+// Common definition of pthread_mutex_t.
+
+type X__pthread_list_t = X__pthread_internal_list /* thread-shared-types.h:53:3 */
+
+type X__pthread_internal_slist = struct{ F__next uintptr } /* thread-shared-types.h:55:9 */
+
+type X__pthread_slist_t = X__pthread_internal_slist /* thread-shared-types.h:58:3 */
+
+// Arch-specific mutex definitions. A generic implementation is provided
+// by sysdeps/nptl/bits/struct_mutex.h. If required, an architecture
+// can override it by defining:
+//
+// 1. struct __pthread_mutex_s (used on both pthread_mutex_t and mtx_t
+// definition). It should contains at least the internal members
+// defined in the generic version.
+//
+// 2. __LOCK_ALIGNMENT for any extra attribute for internal lock used with
+// atomic operations.
+//
+// 3. The macro __PTHREAD_MUTEX_INITIALIZER used for static initialization.
+// It should initialize the mutex internal flag.
+
+// Default mutex implementation struct definitions.
+// Copyright (C) 2019-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <http://www.gnu.org/licenses/>.
+
+// Generic struct for both POSIX and C11 mutexes. New ports are expected
+// to use the default layout, however architecture can redefine it to
+// add arch-specific extension (such as lock-elision). The struct have
+// a size of 32 bytes on LP32 and 40 bytes on LP64 architectures.
+
+type X__pthread_mutex_s = struct {
+ F__lock int32
+ F__count uint32
+ F__owner int32
+ F__nusers uint32
+ F__kind int32
+ F__spins int32
+ F__list X__pthread_list_t
+} /* struct_mutex.h:27:1 */
+
+// Arch-sepecific read-write lock definitions. A generic implementation is
+// provided by struct_rwlock.h. If required, an architecture can override it
+// by defining:
+//
+// 1. struct __pthread_rwlock_arch_t (used on pthread_rwlock_t definition).
+// It should contain at least the internal members defined in the
+// generic version.
+//
+// 2. The macro __PTHREAD_RWLOCK_INITIALIZER used for static initialization.
+// It should initialize the rwlock internal type.
+
+// RISC-V internal rwlock struct definitions.
+// Copyright (C) 2019-2021 Free Software Foundation, Inc.
+//
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// There is a lot of padding in this structure. While it's not strictly
+// necessary on RISC-V, we're going to leave it in to be on the safe side in
+// case it's needed in the future. Most other architectures have the padding,
+// so this gives us the same extensibility as everyone else has.
+type X__pthread_rwlock_arch_t = struct {
+ F__readers uint32
+ F__writers uint32
+ F__wrphase_futex uint32
+ F__writers_futex uint32
+ F__pad3 uint32
+ F__pad4 uint32
+ F__cur_writer int32
+ F__shared int32
+ F__pad1 uint64
+ F__pad2 uint64
+ F__flags uint32
+ F__ccgo_pad1 [4]byte
+} /* struct_rwlock.h:27:1 */
+
+// Common definition of pthread_cond_t.
+
+type X__pthread_cond_s = struct {
+ F__0 struct{ F__wseq uint64 }
+ F__8 struct{ F__g1_start uint64 }
+ F__g_refs [2]uint32
+ F__g_size [2]uint32
+ F__g1_orig_size uint32
+ F__wrefs uint32
+ F__g_signals [2]uint32
+} /* thread-shared-types.h:92:1 */
+
+type X__tss_t = uint32 /* thread-shared-types.h:119:22 */
+type X__thrd_t = uint64 /* thread-shared-types.h:120:27 */
+
+type X__once_flag = struct{ F__data int32 } /* thread-shared-types.h:125:3 */
+
+// Thread identifiers. The structure of the attribute type is not
+// exposed on purpose.
+type Pthread_t = uint64 /* pthreadtypes.h:27:27 */
+
+// Data structures for mutex handling. The structure of the attribute
+// type is not exposed on purpose.
+type Pthread_mutexattr_t = struct {
+ F__ccgo_pad1 [0]uint32
+ F__size [4]uint8
+} /* pthreadtypes.h:36:3 */
+
+// Data structure for condition variable handling. The structure of
+// the attribute type is not exposed on purpose.
+type Pthread_condattr_t = struct {
+ F__ccgo_pad1 [0]uint32
+ F__size [4]uint8
+} /* pthreadtypes.h:45:3 */
+
+// Keys for thread-specific data
+type Pthread_key_t = uint32 /* pthreadtypes.h:49:22 */
+
+// Once-only execution
+type Pthread_once_t = int32 /* pthreadtypes.h:53:30 */
+
+type Pthread_attr_t1 = struct {
+ F__ccgo_pad1 [0]uint64
+ F__size [56]uint8
+} /* pthreadtypes.h:56:1 */
+
+type Pthread_attr_t = Pthread_attr_t1 /* pthreadtypes.h:62:30 */
+
+type Pthread_mutex_t = struct{ F__data X__pthread_mutex_s } /* pthreadtypes.h:72:3 */
+
+type Pthread_cond_t = struct{ F__data X__pthread_cond_s } /* pthreadtypes.h:80:3 */
+
+// Data structure for reader-writer lock variable handling. The
+// structure of the attribute type is deliberately not exposed.
+type Pthread_rwlock_t = struct{ F__data X__pthread_rwlock_arch_t } /* pthreadtypes.h:91:3 */
+
+type Pthread_rwlockattr_t = struct {
+ F__ccgo_pad1 [0]uint64
+ F__size [8]uint8
+} /* pthreadtypes.h:97:3 */
+
+// POSIX spinlock data type.
+type Pthread_spinlock_t = int32 /* pthreadtypes.h:103:22 */
+
+// POSIX barriers data type. The structure of the type is
+// deliberately not exposed.
+type Pthread_barrier_t = struct {
+ F__ccgo_pad1 [0]uint64
+ F__size [32]uint8
+} /* pthreadtypes.h:112:3 */
+
+type Pthread_barrierattr_t = struct {
+ F__ccgo_pad1 [0]uint32
+ F__size [4]uint8
+} /* pthreadtypes.h:118:3 */
+
+// Reentrant versions of the `random' family of functions.
+// These functions all use the following data structure to contain
+// state, rather than global state variables.
+
+type Random_data = struct {
+ Ffptr uintptr
+ Frptr uintptr
+ Fstate uintptr
+ Frand_type int32
+ Frand_deg int32
+ Frand_sep int32
+ F__ccgo_pad1 [4]byte
+ Fend_ptr uintptr
+} /* stdlib.h:423:1 */
+
+// Data structure for communication with thread safe versions. This
+// type is to be regarded as opaque. It's only exported because users
+// have to allocate objects of this type.
+type Drand48_data = struct {
+ F__x [3]uint16
+ F__old_x [3]uint16
+ F__c uint16
+ F__init uint16
+ F__a uint64
+} /* stdlib.h:490:1 */
+
+// Shorthand for type of comparison functions.
+type X__compar_fn_t = uintptr /* stdlib.h:814:13 */
+
+// Floating-point inline functions for stdlib.h.
+// Copyright (C) 2012-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Define some macros helping to catch buffer overflows.
+
+// Macros to control TS 18661-3 glibc features on ldbl-128 platforms.
+// Copyright (C) 2017-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+var _ uint8 /* gen.c:2:13: */
diff --git a/vendor/modernc.org/libc/sys/socket/capi_linux_riscv64.go b/vendor/modernc.org/libc/sys/socket/capi_linux_riscv64.go
new file mode 100644
index 00000000..9fbf0ece
--- /dev/null
+++ b/vendor/modernc.org/libc/sys/socket/capi_linux_riscv64.go
@@ -0,0 +1,5 @@
+// Code generated by 'ccgo sys/socket/gen.c -crt-import-path -export-defines -export-enums -export-externs X -export-fields F -export-structs -export-typedefs -header -hide _OSSwapInt16,_OSSwapInt32,_OSSwapInt64 -o sys/socket/socket_linux_riscv64.go -pkgname socket', DO NOT EDIT.
+
+package socket
+
+var CAPI = map[string]struct{}{}
diff --git a/vendor/modernc.org/libc/sys/socket/socket_linux_riscv64.go b/vendor/modernc.org/libc/sys/socket/socket_linux_riscv64.go
new file mode 100644
index 00000000..c685bf6d
--- /dev/null
+++ b/vendor/modernc.org/libc/sys/socket/socket_linux_riscv64.go
@@ -0,0 +1,1909 @@
+// Code generated by 'ccgo sys/socket/gen.c -crt-import-path "" -export-defines "" -export-enums "" -export-externs X -export-fields F -export-structs "" -export-typedefs "" -header -hide _OSSwapInt16,_OSSwapInt32,_OSSwapInt64 -o sys/socket/socket_linux_riscv64.go -pkgname socket', DO NOT EDIT.
+
+package socket
+
+import (
+ "math"
+ "reflect"
+ "sync/atomic"
+ "unsafe"
+)
+
+var _ = math.Pi
+var _ reflect.Kind
+var _ atomic.Value
+var _ unsafe.Pointer
+
+const (
+ AF_ALG = 38
+ AF_APPLETALK = 5
+ AF_ASH = 18
+ AF_ATMPVC = 8
+ AF_ATMSVC = 20
+ AF_AX25 = 3
+ AF_BLUETOOTH = 31
+ AF_BRIDGE = 7
+ AF_CAIF = 37
+ AF_CAN = 29
+ AF_DECnet = 12
+ AF_ECONET = 19
+ AF_FILE = 1
+ AF_IB = 27
+ AF_IEEE802154 = 36
+ AF_INET = 2
+ AF_INET6 = 10
+ AF_IPX = 4
+ AF_IRDA = 23
+ AF_ISDN = 34
+ AF_IUCV = 32
+ AF_KCM = 41
+ AF_KEY = 15
+ AF_LLC = 26
+ AF_LOCAL = 1
+ AF_MAX = 45
+ AF_MPLS = 28
+ AF_NETBEUI = 13
+ AF_NETLINK = 16
+ AF_NETROM = 6
+ AF_NFC = 39
+ AF_PACKET = 17
+ AF_PHONET = 35
+ AF_PPPOX = 24
+ AF_QIPCRTR = 42
+ AF_RDS = 21
+ AF_ROSE = 11
+ AF_ROUTE = 16
+ AF_RXRPC = 33
+ AF_SECURITY = 14
+ AF_SMC = 43
+ AF_SNA = 22
+ AF_TIPC = 30
+ AF_UNIX = 1
+ AF_UNSPEC = 0
+ AF_VSOCK = 40
+ AF_WANPIPE = 25
+ AF_X25 = 9
+ AF_XDP = 44
+ BIG_ENDIAN = 4321
+ BYTE_ORDER = 1234
+ FD_SETSIZE = 1024
+ FIOGETOWN = 0x8903
+ FIOSETOWN = 0x8901
+ LITTLE_ENDIAN = 1234
+ PDP_ENDIAN = 3412
+ PF_ALG = 38
+ PF_APPLETALK = 5
+ PF_ASH = 18
+ PF_ATMPVC = 8
+ PF_ATMSVC = 20
+ PF_AX25 = 3
+ PF_BLUETOOTH = 31
+ PF_BRIDGE = 7
+ PF_CAIF = 37
+ PF_CAN = 29
+ PF_DECnet = 12
+ PF_ECONET = 19
+ PF_FILE = 1
+ PF_IB = 27
+ PF_IEEE802154 = 36
+ PF_INET = 2
+ PF_INET6 = 10
+ PF_IPX = 4
+ PF_IRDA = 23
+ PF_ISDN = 34
+ PF_IUCV = 32
+ PF_KCM = 41
+ PF_KEY = 15
+ PF_LLC = 26
+ PF_LOCAL = 1
+ PF_MAX = 45
+ PF_MPLS = 28
+ PF_NETBEUI = 13
+ PF_NETLINK = 16
+ PF_NETROM = 6
+ PF_NFC = 39
+ PF_PACKET = 17
+ PF_PHONET = 35
+ PF_PPPOX = 24
+ PF_QIPCRTR = 42
+ PF_RDS = 21
+ PF_ROSE = 11
+ PF_ROUTE = 16
+ PF_RXRPC = 33
+ PF_SECURITY = 14
+ PF_SMC = 43
+ PF_SNA = 22
+ PF_TIPC = 30
+ PF_UNIX = 1
+ PF_UNSPEC = 0
+ PF_VSOCK = 40
+ PF_WANPIPE = 25
+ PF_X25 = 9
+ PF_XDP = 44
+ SCM_TIMESTAMP = 29
+ SCM_TIMESTAMPING = 37
+ SCM_TIMESTAMPING_OPT_STATS = 54
+ SCM_TIMESTAMPING_PKTINFO = 58
+ SCM_TIMESTAMPNS = 35
+ SCM_TXTIME = 61
+ SCM_WIFI_STATUS = 41
+ SIOCATMARK = 0x8905
+ SIOCGPGRP = 0x8904
+ SIOCGSTAMPNS_OLD = 0x8907
+ SIOCGSTAMP_OLD = 0x8906
+ SIOCSPGRP = 0x8902
+ SOL_AAL = 265
+ SOL_ALG = 279
+ SOL_ATM = 264
+ SOL_BLUETOOTH = 274
+ SOL_CAIF = 278
+ SOL_DCCP = 269
+ SOL_DECNET = 261
+ SOL_IRDA = 266
+ SOL_IUCV = 277
+ SOL_KCM = 281
+ SOL_LLC = 268
+ SOL_NETBEUI = 267
+ SOL_NETLINK = 270
+ SOL_NFC = 280
+ SOL_PACKET = 263
+ SOL_PNPIPE = 275
+ SOL_PPPOL2TP = 273
+ SOL_RAW = 255
+ SOL_RDS = 276
+ SOL_RXRPC = 272
+ SOL_SOCKET = 1
+ SOL_TIPC = 271
+ SOL_TLS = 282
+ SOL_X25 = 262
+ SOL_XDP = 283
+ SOMAXCONN = 4096
+ SO_ACCEPTCONN = 30
+ SO_ATTACH_BPF = 50
+ SO_ATTACH_FILTER = 26
+ SO_ATTACH_REUSEPORT_CBPF = 51
+ SO_ATTACH_REUSEPORT_EBPF = 52
+ SO_BINDTODEVICE = 25
+ SO_BINDTOIFINDEX = 62
+ SO_BPF_EXTENSIONS = 48
+ SO_BROADCAST = 6
+ SO_BSDCOMPAT = 14
+ SO_BUSY_POLL = 46
+ SO_BUSY_POLL_BUDGET = 70
+ SO_CNX_ADVICE = 53
+ SO_COOKIE = 57
+ SO_DEBUG = 1
+ SO_DETACH_BPF = 27
+ SO_DETACH_FILTER = 27
+ SO_DETACH_REUSEPORT_BPF = 68
+ SO_DOMAIN = 39
+ SO_DONTROUTE = 5
+ SO_ERROR = 4
+ SO_GET_FILTER = 26
+ SO_INCOMING_CPU = 49
+ SO_INCOMING_NAPI_ID = 56
+ SO_KEEPALIVE = 9
+ SO_LINGER = 13
+ SO_LOCK_FILTER = 44
+ SO_MARK = 36
+ SO_MAX_PACING_RATE = 47
+ SO_MEMINFO = 55
+ SO_NETNS_COOKIE = 71
+ SO_NOFCS = 43
+ SO_NO_CHECK = 11
+ SO_OOBINLINE = 10
+ SO_PASSCRED = 16
+ SO_PASSSEC = 34
+ SO_PEEK_OFF = 42
+ SO_PEERCRED = 17
+ SO_PEERGROUPS = 59
+ SO_PEERNAME = 28
+ SO_PEERSEC = 31
+ SO_PREFER_BUSY_POLL = 69
+ SO_PRIORITY = 12
+ SO_PROTOCOL = 38
+ SO_RCVBUF = 8
+ SO_RCVBUFFORCE = 33
+ SO_RCVLOWAT = 18
+ SO_RCVTIMEO = 20
+ SO_RCVTIMEO_NEW = 66
+ SO_RCVTIMEO_OLD = 20
+ SO_REUSEADDR = 2
+ SO_REUSEPORT = 15
+ SO_RXQ_OVFL = 40
+ SO_SECURITY_AUTHENTICATION = 22
+ SO_SECURITY_ENCRYPTION_NETWORK = 24
+ SO_SECURITY_ENCRYPTION_TRANSPORT = 23
+ SO_SELECT_ERR_QUEUE = 45
+ SO_SNDBUF = 7
+ SO_SNDBUFFORCE = 32
+ SO_SNDLOWAT = 19
+ SO_SNDTIMEO = 21
+ SO_SNDTIMEO_NEW = 67
+ SO_SNDTIMEO_OLD = 21
+ SO_TIMESTAMP = 29
+ SO_TIMESTAMPING = 37
+ SO_TIMESTAMPING_NEW = 65
+ SO_TIMESTAMPING_OLD = 37
+ SO_TIMESTAMPNS = 35
+ SO_TIMESTAMPNS_NEW = 64
+ SO_TIMESTAMPNS_OLD = 35
+ SO_TIMESTAMP_NEW = 63
+ SO_TIMESTAMP_OLD = 29
+ SO_TXTIME = 61
+ SO_TYPE = 3
+ SO_WIFI_STATUS = 41
+ SO_ZEROCOPY = 60
+ X_ASM_RISCV_BITSPERLONG_H = 0
+ X_ATFILE_SOURCE = 1
+ X_BITS_BYTESWAP_H = 1
+ X_BITS_ENDIANNESS_H = 1
+ X_BITS_ENDIAN_H = 1
+ X_BITS_PTHREADTYPES_ARCH_H = 1
+ X_BITS_PTHREADTYPES_COMMON_H = 1
+ X_BITS_SOCKADDR_H = 1
+ X_BITS_STDINT_INTN_H = 1
+ X_BITS_TIME64_H = 1
+ X_BITS_TYPESIZES_H = 1
+ X_BITS_TYPES_H = 1
+ X_BITS_UINTN_IDENTITY_H = 1
+ X_BSD_SIZE_T_ = 0
+ X_BSD_SIZE_T_DEFINED_ = 0
+ X_DEFAULT_SOURCE = 1
+ X_ENDIAN_H = 1
+ X_FEATURES_H = 1
+ X_FILE_OFFSET_BITS = 64
+ X_GCC_SIZE_T = 0
+ X_LINUX_POSIX_TYPES_H = 0
+ X_LP64 = 1
+ X_POSIX_C_SOURCE = 200809
+ X_POSIX_SOURCE = 1
+ X_RWLOCK_INTERNAL_H = 0
+ X_SIZET_ = 0
+ X_SIZE_T = 0
+ X_SIZE_T_ = 0
+ X_SIZE_T_DECLARED = 0
+ X_SIZE_T_DEFINED = 0
+ X_SIZE_T_DEFINED_ = 0
+ X_SS_SIZE = 128
+ X_STDC_PREDEF_H = 1
+ X_STRUCT_TIMESPEC = 1
+ X_SYS_CDEFS_H = 1
+ X_SYS_SELECT_H = 1
+ X_SYS_SIZE_T_H = 0
+ X_SYS_SOCKET_H = 1
+ X_SYS_TYPES_H = 1
+ X_THREAD_MUTEX_INTERNAL_H = 1
+ X_THREAD_SHARED_TYPES_H = 1
+ X_T_SIZE = 0
+ X_T_SIZE_ = 0
+ Linux = 1
+ Unix = 1
+)
+
+// Bits in the FLAGS argument to `send', `recv', et al.
+const ( /* socket.h:200:1: */
+ MSG_OOB = 1 // Process out-of-band data.
+ MSG_PEEK = 2 // Peek at incoming messages.
+ MSG_DONTROUTE = 4 // Don't use local routing.
+ MSG_CTRUNC = 8 // Control data lost before delivery.
+ MSG_PROXY = 16 // Supply or ask second address.
+ MSG_TRUNC = 32
+ MSG_DONTWAIT = 64 // Nonblocking IO.
+ MSG_EOR = 128 // End of record.
+ MSG_WAITALL = 256 // Wait for a full request.
+ MSG_FIN = 512
+ MSG_SYN = 1024
+ MSG_CONFIRM = 2048 // Confirm path validity.
+ MSG_RST = 4096
+ MSG_ERRQUEUE = 8192 // Fetch message from error queue.
+ MSG_NOSIGNAL = 16384 // Do not generate SIGPIPE.
+ MSG_MORE = 32768 // Sender will send more.
+ MSG_WAITFORONE = 65536 // Wait for at least one packet to return.
+ MSG_BATCH = 262144 // sendmmsg: more messages coming.
+ MSG_ZEROCOPY = 67108864 // Use user data in kernel path.
+ MSG_FASTOPEN = 536870912 // Send data in TCP SYN.
+
+ MSG_CMSG_CLOEXEC = 1073741824
+)
+
+// Socket level message types. This must match the definitions in
+// <linux/socket.h>.
+const ( /* socket.h:332:1: */
+ SCM_RIGHTS = 1
+)
+
+// Get the architecture-dependent definition of enum __socket_type.
+// Define enum __socket_type for generic Linux.
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Types of sockets.
+const ( /* socket_type.h:24:1: */
+ SOCK_STREAM = 1 // Sequenced, reliable, connection-based
+ // byte streams.
+ SOCK_DGRAM = 2 // Connectionless, unreliable datagrams
+ // of fixed maximum length.
+ SOCK_RAW = 3 // Raw protocol interface.
+ SOCK_RDM = 4 // Reliably-delivered messages.
+ SOCK_SEQPACKET = 5 // Sequenced, reliable, connection-based,
+ // datagrams of fixed maximum length.
+ SOCK_DCCP = 6 // Datagram Congestion Control Protocol.
+ SOCK_PACKET = 10 // Linux specific way of getting packets
+ // at the dev level. For writing rarp and
+ // other similar things on the user level.
+
+ // Flags to be ORed into the type parameter of socket and socketpair and
+ // used for the flags parameter of paccept.
+
+ SOCK_CLOEXEC = 524288 // Atomically set close-on-exec flag for the
+ // new descriptor(s).
+ SOCK_NONBLOCK = 2048
+)
+
+// The following constants should be used for the second parameter of
+// `shutdown'.
+const ( /* socket.h:41:1: */
+ SHUT_RD = 0 // No more receptions.
+ SHUT_WR = 1 // No more transmissions.
+ SHUT_RDWR = 2
+)
+
+type Ptrdiff_t = int64 /* <builtin>:3:26 */
+
+type Size_t = uint64 /* <builtin>:9:23 */
+
+type Wchar_t = int32 /* <builtin>:15:24 */
+
+type X__int128_t = struct {
+ Flo int64
+ Fhi int64
+} /* <builtin>:21:43 */ // must match modernc.org/mathutil.Int128
+type X__uint128_t = struct {
+ Flo uint64
+ Fhi uint64
+} /* <builtin>:22:44 */ // must match modernc.org/mathutil.Int128
+
+type X__builtin_va_list = uintptr /* <builtin>:46:14 */
+type X__float128 = float64 /* <builtin>:47:21 */
+
+// Wide character type.
+// Locale-writers should change this as necessary to
+// be big enough to hold unique values not between 0 and 127,
+// and not (wchar_t) -1, for each defined multibyte character.
+
+// Define this type if we are doing the whole job,
+// or if we want this type in particular.
+
+// A null pointer constant.
+
+// Structure for scatter/gather I/O.
+type Iovec = struct {
+ Fiov_base uintptr
+ Fiov_len Size_t
+} /* struct_iovec.h:26:1 */
+
+// Copyright (C) 1989-2021 Free Software Foundation, Inc.
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+//
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+// <http://www.gnu.org/licenses/>.
+
+// ISO C Standard: 7.17 Common definitions <stddef.h>
+
+// Any one of these symbols __need_* means that GNU libc
+// wants us just to define one data type. So don't define
+// the symbols that indicate this file's entire job has been done.
+
+// This avoids lossage on SunOS but only if stdtypes.h comes first.
+// There's no way to win with the other order! Sun lossage.
+
+// Sequent's header files use _PTRDIFF_T_ in some conflicting way.
+// Just ignore it.
+
+// On VxWorks, <type/vxTypesBase.h> may have defined macros like
+// _TYPE_size_t which will typedef size_t. fixincludes patched the
+// vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is
+// not defined, and so that defining this macro defines _GCC_SIZE_T.
+// If we find that the macros are still defined at this point, we must
+// invoke them so that the type is defined as expected.
+
+// In case nobody has defined these types, but we aren't running under
+// GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and
+// __WCHAR_TYPE__ have reasonable values. This can happen if the
+// parts of GCC is compiled by an older compiler, that actually
+// include gstddef.h, such as collect2.
+
+// Signed type of difference of two pointers.
+
+// Define this type if we are doing the whole job,
+// or if we want this type in particular.
+
+// Unsigned type of `sizeof' something.
+
+// Define this type if we are doing the whole job,
+// or if we want this type in particular.
+
+// Wide character type.
+// Locale-writers should change this as necessary to
+// be big enough to hold unique values not between 0 and 127,
+// and not (wchar_t) -1, for each defined multibyte character.
+
+// Define this type if we are doing the whole job,
+// or if we want this type in particular.
+
+// A null pointer constant.
+
+// This operating system-specific header file defines the SOCK_*, PF_*,
+// AF_*, MSG_*, SOL_*, and SO_* constants, and the `struct sockaddr',
+// `struct msghdr', and `struct linger' types.
+// System-specific socket constants and types. Linux version.
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Copyright (C) 1989-2021 Free Software Foundation, Inc.
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+//
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+// <http://www.gnu.org/licenses/>.
+
+// ISO C Standard: 7.17 Common definitions <stddef.h>
+
+// Any one of these symbols __need_* means that GNU libc
+// wants us just to define one data type. So don't define
+// the symbols that indicate this file's entire job has been done.
+
+// This avoids lossage on SunOS but only if stdtypes.h comes first.
+// There's no way to win with the other order! Sun lossage.
+
+// Sequent's header files use _PTRDIFF_T_ in some conflicting way.
+// Just ignore it.
+
+// On VxWorks, <type/vxTypesBase.h> may have defined macros like
+// _TYPE_size_t which will typedef size_t. fixincludes patched the
+// vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is
+// not defined, and so that defining this macro defines _GCC_SIZE_T.
+// If we find that the macros are still defined at this point, we must
+// invoke them so that the type is defined as expected.
+
+// In case nobody has defined these types, but we aren't running under
+// GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and
+// __WCHAR_TYPE__ have reasonable values. This can happen if the
+// parts of GCC is compiled by an older compiler, that actually
+// include gstddef.h, such as collect2.
+
+// Signed type of difference of two pointers.
+
+// Define this type if we are doing the whole job,
+// or if we want this type in particular.
+
+// Unsigned type of `sizeof' something.
+
+// Define this type if we are doing the whole job,
+// or if we want this type in particular.
+
+// Wide character type.
+// Locale-writers should change this as necessary to
+// be big enough to hold unique values not between 0 and 127,
+// and not (wchar_t) -1, for each defined multibyte character.
+
+// Define this type if we are doing the whole job,
+// or if we want this type in particular.
+
+// A null pointer constant.
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// POSIX Standard: 2.6 Primitive System Data Types <sys/types.h>
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Bit size of the time_t type at glibc build time, RISC-V case.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// RV32 and RV64 both use 64-bit time_t
+
+// Convenience types.
+type X__u_char = uint8 /* types.h:31:23 */
+type X__u_short = uint16 /* types.h:32:28 */
+type X__u_int = uint32 /* types.h:33:22 */
+type X__u_long = uint64 /* types.h:34:27 */
+
+// Fixed-size types, underlying types depend on word size and compiler.
+type X__int8_t = int8 /* types.h:37:21 */
+type X__uint8_t = uint8 /* types.h:38:23 */
+type X__int16_t = int16 /* types.h:39:26 */
+type X__uint16_t = uint16 /* types.h:40:28 */
+type X__int32_t = int32 /* types.h:41:20 */
+type X__uint32_t = uint32 /* types.h:42:22 */
+type X__int64_t = int64 /* types.h:44:25 */
+type X__uint64_t = uint64 /* types.h:45:27 */
+
+// Smallest types with at least a given width.
+type X__int_least8_t = X__int8_t /* types.h:52:18 */
+type X__uint_least8_t = X__uint8_t /* types.h:53:19 */
+type X__int_least16_t = X__int16_t /* types.h:54:19 */
+type X__uint_least16_t = X__uint16_t /* types.h:55:20 */
+type X__int_least32_t = X__int32_t /* types.h:56:19 */
+type X__uint_least32_t = X__uint32_t /* types.h:57:20 */
+type X__int_least64_t = X__int64_t /* types.h:58:19 */
+type X__uint_least64_t = X__uint64_t /* types.h:59:20 */
+
+// quad_t is also 64 bits.
+type X__quad_t = int64 /* types.h:63:18 */
+type X__u_quad_t = uint64 /* types.h:64:27 */
+
+// Largest integral types.
+type X__intmax_t = int64 /* types.h:72:18 */
+type X__uintmax_t = uint64 /* types.h:73:27 */
+
+// The machine-dependent file <bits/typesizes.h> defines __*_T_TYPE
+// macros for each of the OS types we define below. The definitions
+// of those macros must use the following macros for underlying types.
+// We define __S<SIZE>_TYPE and __U<SIZE>_TYPE for the signed and unsigned
+// variants of each of the following integer types on this machine.
+//
+// 16 -- "natural" 16-bit type (always short)
+// 32 -- "natural" 32-bit type (always int)
+// 64 -- "natural" 64-bit type (long or long long)
+// LONG32 -- 32-bit type, traditionally long
+// QUAD -- 64-bit type, traditionally long long
+// WORD -- natural type of __WORDSIZE bits (int or long)
+// LONGWORD -- type of __WORDSIZE bits, traditionally long
+//
+// We distinguish WORD/LONGWORD, 32/LONG32, and 64/QUAD so that the
+// conventional uses of `long' or `long long' type modifiers match the
+// types we define, even when a less-adorned type would be the same size.
+// This matters for (somewhat) portably writing printf/scanf formats for
+// these types, where using the appropriate l or ll format modifiers can
+// make the typedefs and the formats match up across all GNU platforms. If
+// we used `long' when it's 64 bits where `long long' is expected, then the
+// compiler would warn about the formats not matching the argument types,
+// and the programmer changing them to shut up the compiler would break the
+// program's portability.
+//
+// Here we assume what is presently the case in all the GCC configurations
+// we support: long long is always 64 bits, long is always word/address size,
+// and int is always 32 bits.
+
+// No need to mark the typedef with __extension__.
+// bits/typesizes.h -- underlying types for *_t. For the generic Linux ABI.
+// Copyright (C) 2011-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+// Contributed by Chris Metcalf <cmetcalf@tilera.com>, 2011.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// See <bits/types.h> for the meaning of these macros. This file exists so
+// that <bits/types.h> need not vary across different GNU platforms.
+
+// Tell the libc code that off_t and off64_t are actually the same type
+// for all ABI purposes, even if possibly expressed as different base types
+// for C type-checking purposes.
+
+// Same for ino_t and ino64_t.
+
+// And for __rlim_t and __rlim64_t.
+
+// And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t.
+
+// And for getitimer, setitimer and rusage
+
+// Number of descriptors that can fit in an `fd_set'.
+
+// bits/time64.h -- underlying types for __time64_t. RISC-V version.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Define __TIME64_T_TYPE so that it is always a 64-bit type.
+
+// If we already have 64-bit time type then use it.
+
+type X__dev_t = uint64 /* types.h:145:25 */ // Type of device numbers.
+type X__uid_t = uint32 /* types.h:146:25 */ // Type of user identifications.
+type X__gid_t = uint32 /* types.h:147:25 */ // Type of group identifications.
+type X__ino_t = uint64 /* types.h:148:25 */ // Type of file serial numbers.
+type X__ino64_t = uint64 /* types.h:149:27 */ // Type of file serial numbers (LFS).
+type X__mode_t = uint32 /* types.h:150:26 */ // Type of file attribute bitmasks.
+type X__nlink_t = uint32 /* types.h:151:27 */ // Type of file link counts.
+type X__off_t = int64 /* types.h:152:25 */ // Type of file sizes and offsets.
+type X__off64_t = int64 /* types.h:153:27 */ // Type of file sizes and offsets (LFS).
+type X__pid_t = int32 /* types.h:154:25 */ // Type of process identifications.
+type X__fsid_t = struct{ F__val [2]int32 } /* types.h:155:26 */ // Type of file system IDs.
+type X__clock_t = int64 /* types.h:156:27 */ // Type of CPU usage counts.
+type X__rlim_t = uint64 /* types.h:157:26 */ // Type for resource measurement.
+type X__rlim64_t = uint64 /* types.h:158:28 */ // Type for resource measurement (LFS).
+type X__id_t = uint32 /* types.h:159:24 */ // General type for IDs.
+type X__time_t = int64 /* types.h:160:26 */ // Seconds since the Epoch.
+type X__useconds_t = uint32 /* types.h:161:30 */ // Count of microseconds.
+type X__suseconds_t = int64 /* types.h:162:31 */ // Signed count of microseconds.
+type X__suseconds64_t = int64 /* types.h:163:33 */
+
+type X__daddr_t = int32 /* types.h:165:27 */ // The type of a disk address.
+type X__key_t = int32 /* types.h:166:25 */ // Type of an IPC key.
+
+// Clock ID used in clock and timer functions.
+type X__clockid_t = int32 /* types.h:169:29 */
+
+// Timer ID returned by `timer_create'.
+type X__timer_t = uintptr /* types.h:172:12 */
+
+// Type to represent block size.
+type X__blksize_t = int32 /* types.h:175:29 */
+
+// Types from the Large File Support interface.
+
+// Type to count number of disk blocks.
+type X__blkcnt_t = int64 /* types.h:180:28 */
+type X__blkcnt64_t = int64 /* types.h:181:30 */
+
+// Type to count file system blocks.
+type X__fsblkcnt_t = uint64 /* types.h:184:30 */
+type X__fsblkcnt64_t = uint64 /* types.h:185:32 */
+
+// Type to count file system nodes.
+type X__fsfilcnt_t = uint64 /* types.h:188:30 */
+type X__fsfilcnt64_t = uint64 /* types.h:189:32 */
+
+// Type of miscellaneous file system fields.
+type X__fsword_t = int64 /* types.h:192:28 */
+
+type X__ssize_t = int64 /* types.h:194:27 */ // Type of a byte count, or error.
+
+// Signed long type used in system calls.
+type X__syscall_slong_t = int64 /* types.h:197:33 */
+// Unsigned long type used in system calls.
+type X__syscall_ulong_t = uint64 /* types.h:199:33 */
+
+// These few don't really vary by system, they always correspond
+// to one of the other defined types.
+type X__loff_t = X__off64_t /* types.h:203:19 */ // Type of file sizes and offsets (LFS).
+type X__caddr_t = uintptr /* types.h:204:14 */
+
+// Duplicates info from stdint.h but this is used in unistd.h.
+type X__intptr_t = int64 /* types.h:207:25 */
+
+// Duplicate info from sys/socket.h.
+type X__socklen_t = uint32 /* types.h:210:23 */
+
+// C99: An integer type that can be accessed as an atomic entity,
+// even in the presence of asynchronous interrupts.
+// It is not currently necessary for this to be machine-specific.
+type X__sig_atomic_t = int32 /* types.h:215:13 */
+
+// Seconds since the Epoch, visible to user code when time_t is too
+// narrow only for consistency with the old way of widening too-narrow
+// types. User code should never use __time64_t.
+
+type U_char = X__u_char /* types.h:33:18 */
+type U_short = X__u_short /* types.h:34:19 */
+type U_int = X__u_int /* types.h:35:17 */
+type U_long = X__u_long /* types.h:36:18 */
+type Quad_t = X__quad_t /* types.h:37:18 */
+type U_quad_t = X__u_quad_t /* types.h:38:20 */
+type Fsid_t = X__fsid_t /* types.h:39:18 */
+type Loff_t = X__loff_t /* types.h:42:18 */
+
+type Ino_t = X__ino64_t /* types.h:49:19 */
+
+type Dev_t = X__dev_t /* types.h:59:17 */
+
+type Gid_t = X__gid_t /* types.h:64:17 */
+
+type Mode_t = X__mode_t /* types.h:69:18 */
+
+type Nlink_t = X__nlink_t /* types.h:74:19 */
+
+type Uid_t = X__uid_t /* types.h:79:17 */
+
+type Off_t = X__off64_t /* types.h:87:19 */
+
+type Pid_t = X__pid_t /* types.h:97:17 */
+
+type Id_t = X__id_t /* types.h:103:16 */
+
+type Ssize_t = X__ssize_t /* types.h:108:19 */
+
+type Daddr_t = X__daddr_t /* types.h:114:19 */
+type Caddr_t = X__caddr_t /* types.h:115:19 */
+
+type Key_t = X__key_t /* types.h:121:17 */
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Returned by `clock'.
+type Clock_t = X__clock_t /* clock_t.h:7:19 */
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Clock ID used in clock and timer functions.
+type Clockid_t = X__clockid_t /* clockid_t.h:7:21 */
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Returned by `time'.
+type Time_t = X__time_t /* time_t.h:10:18 */
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Timer ID returned by `timer_create'.
+type Timer_t = X__timer_t /* timer_t.h:7:19 */
+
+// Copyright (C) 1989-2021 Free Software Foundation, Inc.
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+//
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+// <http://www.gnu.org/licenses/>.
+
+// ISO C Standard: 7.17 Common definitions <stddef.h>
+
+// Any one of these symbols __need_* means that GNU libc
+// wants us just to define one data type. So don't define
+// the symbols that indicate this file's entire job has been done.
+
+// This avoids lossage on SunOS but only if stdtypes.h comes first.
+// There's no way to win with the other order! Sun lossage.
+
+// Sequent's header files use _PTRDIFF_T_ in some conflicting way.
+// Just ignore it.
+
+// On VxWorks, <type/vxTypesBase.h> may have defined macros like
+// _TYPE_size_t which will typedef size_t. fixincludes patched the
+// vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is
+// not defined, and so that defining this macro defines _GCC_SIZE_T.
+// If we find that the macros are still defined at this point, we must
+// invoke them so that the type is defined as expected.
+
+// In case nobody has defined these types, but we aren't running under
+// GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and
+// __WCHAR_TYPE__ have reasonable values. This can happen if the
+// parts of GCC is compiled by an older compiler, that actually
+// include gstddef.h, such as collect2.
+
+// Signed type of difference of two pointers.
+
+// Define this type if we are doing the whole job,
+// or if we want this type in particular.
+
+// Unsigned type of `sizeof' something.
+
+// Define this type if we are doing the whole job,
+// or if we want this type in particular.
+
+// Wide character type.
+// Locale-writers should change this as necessary to
+// be big enough to hold unique values not between 0 and 127,
+// and not (wchar_t) -1, for each defined multibyte character.
+
+// Define this type if we are doing the whole job,
+// or if we want this type in particular.
+
+// A null pointer constant.
+
+// Old compatibility names for C types.
+type Ulong = uint64 /* types.h:148:27 */
+type Ushort = uint16 /* types.h:149:28 */
+type Uint = uint32 /* types.h:150:22 */
+
+// These size-specific names are used by some of the inet code.
+
+// Define intN_t types.
+// Copyright (C) 2017-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+type Int8_t = X__int8_t /* stdint-intn.h:24:18 */
+type Int16_t = X__int16_t /* stdint-intn.h:25:19 */
+type Int32_t = X__int32_t /* stdint-intn.h:26:19 */
+type Int64_t = X__int64_t /* stdint-intn.h:27:19 */
+
+// These were defined by ISO C without the first `_'.
+type U_int8_t = X__uint8_t /* types.h:158:19 */
+type U_int16_t = X__uint16_t /* types.h:159:20 */
+type U_int32_t = X__uint32_t /* types.h:160:20 */
+type U_int64_t = X__uint64_t /* types.h:161:20 */
+
+type Register_t = int32 /* types.h:164:13 */
+
+// It also defines `fd_set' and the FD_* macros for `select'.
+// `fd_set' type and related macros, and `select'/`pselect' declarations.
+// Copyright (C) 1996-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// POSIX 1003.1g: 6.2 Select from File Descriptor Sets <sys/select.h>
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Get definition of needed basic types.
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Get __FD_* definitions.
+// Copyright (C) 1997-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// We don't use `memset' because this would require a prototype and
+// the array isn't too big.
+
+// Get sigset_t.
+
+type X__sigset_t = struct{ F__val [16]uint64 } /* __sigset_t.h:8:3 */
+
+// A set of signals to be blocked, unblocked, or waited for.
+type Sigset_t = X__sigset_t /* sigset_t.h:7:20 */
+
+// Get definition of timer specification structures.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// A time value that is accurate to the nearest
+// microsecond but also has a range of years.
+type Timeval = struct {
+ Ftv_sec X__time_t
+ Ftv_usec X__suseconds_t
+} /* struct_timeval.h:8:1 */
+
+// NB: Include guard matches what <linux/time.h> uses.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Endian macros for string.h functions
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <http://www.gnu.org/licenses/>.
+
+// POSIX.1b structure for a time value. This is like a `struct timeval' but
+// has nanoseconds instead of microseconds.
+type Timespec = struct {
+ Ftv_sec X__time_t
+ Ftv_nsec X__syscall_slong_t
+} /* struct_timespec.h:11:1 */
+
+type Suseconds_t = X__suseconds_t /* select.h:43:23 */
+
+// The fd_set member is required to be an array of longs.
+type X__fd_mask = int64 /* select.h:49:18 */
+
+// Some versions of <linux/posix_types.h> define this macros.
+// It's easier to assume 8-bit bytes than to get CHAR_BIT.
+
+// fd_set for select and pselect.
+type Fd_set = struct{ F__fds_bits [16]X__fd_mask } /* select.h:70:5 */
+
+// Maximum number of file descriptors in `fd_set'.
+
+// Sometimes the fd_set member is assumed to have this type.
+type Fd_mask = X__fd_mask /* select.h:77:19 */
+
+// Define some inlines helping to catch common problems.
+
+type Blksize_t = X__blksize_t /* types.h:185:21 */
+
+// Types from the Large File Support interface.
+type Blkcnt_t = X__blkcnt64_t /* types.h:205:22 */ // Type to count number of disk blocks.
+type Fsblkcnt_t = X__fsblkcnt64_t /* types.h:209:24 */ // Type to count file system blocks.
+type Fsfilcnt_t = X__fsfilcnt64_t /* types.h:213:24 */ // Type to count file system inodes.
+
+// Now add the thread types.
+// Declaration of common pthread types for all architectures.
+// Copyright (C) 2017-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// For internal mutex and condition variable definitions.
+// Common threading primitives definitions for both POSIX and C11.
+// Copyright (C) 2017-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Arch-specific definitions. Each architecture must define the following
+// macros to define the expected sizes of pthread data types:
+//
+// __SIZEOF_PTHREAD_ATTR_T - size of pthread_attr_t.
+// __SIZEOF_PTHREAD_MUTEX_T - size of pthread_mutex_t.
+// __SIZEOF_PTHREAD_MUTEXATTR_T - size of pthread_mutexattr_t.
+// __SIZEOF_PTHREAD_COND_T - size of pthread_cond_t.
+// __SIZEOF_PTHREAD_CONDATTR_T - size of pthread_condattr_t.
+// __SIZEOF_PTHREAD_RWLOCK_T - size of pthread_rwlock_t.
+// __SIZEOF_PTHREAD_RWLOCKATTR_T - size of pthread_rwlockattr_t.
+// __SIZEOF_PTHREAD_BARRIER_T - size of pthread_barrier_t.
+// __SIZEOF_PTHREAD_BARRIERATTR_T - size of pthread_barrierattr_t.
+//
+// The additional macro defines any constraint for the lock alignment
+// inside the thread structures:
+//
+// __LOCK_ALIGNMENT - for internal lock/futex usage.
+//
+// Same idea but for the once locking primitive:
+//
+// __ONCE_ALIGNMENT - for pthread_once_t/once_flag definition.
+
+// Machine-specific pthread type layouts. RISC-V version.
+// Copyright (C) 2011-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Endian macros for string.h functions
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <http://www.gnu.org/licenses/>.
+
+// Common definition of pthread_mutex_t.
+
+type X__pthread_internal_list = struct {
+ F__prev uintptr
+ F__next uintptr
+} /* thread-shared-types.h:49:9 */
+
+// Type to count file system inodes.
+
+// Now add the thread types.
+// Declaration of common pthread types for all architectures.
+// Copyright (C) 2017-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// For internal mutex and condition variable definitions.
+// Common threading primitives definitions for both POSIX and C11.
+// Copyright (C) 2017-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Arch-specific definitions. Each architecture must define the following
+// macros to define the expected sizes of pthread data types:
+//
+// __SIZEOF_PTHREAD_ATTR_T - size of pthread_attr_t.
+// __SIZEOF_PTHREAD_MUTEX_T - size of pthread_mutex_t.
+// __SIZEOF_PTHREAD_MUTEXATTR_T - size of pthread_mutexattr_t.
+// __SIZEOF_PTHREAD_COND_T - size of pthread_cond_t.
+// __SIZEOF_PTHREAD_CONDATTR_T - size of pthread_condattr_t.
+// __SIZEOF_PTHREAD_RWLOCK_T - size of pthread_rwlock_t.
+// __SIZEOF_PTHREAD_RWLOCKATTR_T - size of pthread_rwlockattr_t.
+// __SIZEOF_PTHREAD_BARRIER_T - size of pthread_barrier_t.
+// __SIZEOF_PTHREAD_BARRIERATTR_T - size of pthread_barrierattr_t.
+//
+// The additional macro defines any constraint for the lock alignment
+// inside the thread structures:
+//
+// __LOCK_ALIGNMENT - for internal lock/futex usage.
+//
+// Same idea but for the once locking primitive:
+//
+// __ONCE_ALIGNMENT - for pthread_once_t/once_flag definition.
+
+// Machine-specific pthread type layouts. RISC-V version.
+// Copyright (C) 2011-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Endian macros for string.h functions
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <http://www.gnu.org/licenses/>.
+
+// Common definition of pthread_mutex_t.
+
+type X__pthread_list_t = X__pthread_internal_list /* thread-shared-types.h:53:3 */
+
+type X__pthread_internal_slist = struct{ F__next uintptr } /* thread-shared-types.h:55:9 */
+
+type X__pthread_slist_t = X__pthread_internal_slist /* thread-shared-types.h:58:3 */
+
+// Arch-specific mutex definitions. A generic implementation is provided
+// by sysdeps/nptl/bits/struct_mutex.h. If required, an architecture
+// can override it by defining:
+//
+// 1. struct __pthread_mutex_s (used on both pthread_mutex_t and mtx_t
+// definition). It should contains at least the internal members
+// defined in the generic version.
+//
+// 2. __LOCK_ALIGNMENT for any extra attribute for internal lock used with
+// atomic operations.
+//
+// 3. The macro __PTHREAD_MUTEX_INITIALIZER used for static initialization.
+// It should initialize the mutex internal flag.
+
+// Default mutex implementation struct definitions.
+// Copyright (C) 2019-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <http://www.gnu.org/licenses/>.
+
+// Generic struct for both POSIX and C11 mutexes. New ports are expected
+// to use the default layout, however architecture can redefine it to
+// add arch-specific extension (such as lock-elision). The struct have
+// a size of 32 bytes on LP32 and 40 bytes on LP64 architectures.
+
+type X__pthread_mutex_s = struct {
+ F__lock int32
+ F__count uint32
+ F__owner int32
+ F__nusers uint32
+ F__kind int32
+ F__spins int32
+ F__list X__pthread_list_t
+} /* struct_mutex.h:27:1 */
+
+// Arch-sepecific read-write lock definitions. A generic implementation is
+// provided by struct_rwlock.h. If required, an architecture can override it
+// by defining:
+//
+// 1. struct __pthread_rwlock_arch_t (used on pthread_rwlock_t definition).
+// It should contain at least the internal members defined in the
+// generic version.
+//
+// 2. The macro __PTHREAD_RWLOCK_INITIALIZER used for static initialization.
+// It should initialize the rwlock internal type.
+
+// RISC-V internal rwlock struct definitions.
+// Copyright (C) 2019-2021 Free Software Foundation, Inc.
+//
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// There is a lot of padding in this structure. While it's not strictly
+// necessary on RISC-V, we're going to leave it in to be on the safe side in
+// case it's needed in the future. Most other architectures have the padding,
+// so this gives us the same extensibility as everyone else has.
+type X__pthread_rwlock_arch_t = struct {
+ F__readers uint32
+ F__writers uint32
+ F__wrphase_futex uint32
+ F__writers_futex uint32
+ F__pad3 uint32
+ F__pad4 uint32
+ F__cur_writer int32
+ F__shared int32
+ F__pad1 uint64
+ F__pad2 uint64
+ F__flags uint32
+ F__ccgo_pad1 [4]byte
+} /* struct_rwlock.h:27:1 */
+
+// Common definition of pthread_cond_t.
+
+type X__pthread_cond_s = struct {
+ F__0 struct{ F__wseq uint64 }
+ F__8 struct{ F__g1_start uint64 }
+ F__g_refs [2]uint32
+ F__g_size [2]uint32
+ F__g1_orig_size uint32
+ F__wrefs uint32
+ F__g_signals [2]uint32
+} /* thread-shared-types.h:92:1 */
+
+type X__tss_t = uint32 /* thread-shared-types.h:119:22 */
+type X__thrd_t = uint64 /* thread-shared-types.h:120:27 */
+
+type X__once_flag = struct{ F__data int32 } /* thread-shared-types.h:125:3 */
+
+// Thread identifiers. The structure of the attribute type is not
+// exposed on purpose.
+type Pthread_t = uint64 /* pthreadtypes.h:27:27 */
+
+// Data structures for mutex handling. The structure of the attribute
+// type is not exposed on purpose.
+type Pthread_mutexattr_t = struct {
+ F__ccgo_pad1 [0]uint32
+ F__size [4]uint8
+} /* pthreadtypes.h:36:3 */
+
+// Data structure for condition variable handling. The structure of
+// the attribute type is not exposed on purpose.
+type Pthread_condattr_t = struct {
+ F__ccgo_pad1 [0]uint32
+ F__size [4]uint8
+} /* pthreadtypes.h:45:3 */
+
+// Keys for thread-specific data
+type Pthread_key_t = uint32 /* pthreadtypes.h:49:22 */
+
+// Once-only execution
+type Pthread_once_t = int32 /* pthreadtypes.h:53:30 */
+
+type Pthread_attr_t1 = struct {
+ F__ccgo_pad1 [0]uint64
+ F__size [56]uint8
+} /* pthreadtypes.h:56:1 */
+
+type Pthread_attr_t = Pthread_attr_t1 /* pthreadtypes.h:62:30 */
+
+type Pthread_mutex_t = struct{ F__data X__pthread_mutex_s } /* pthreadtypes.h:72:3 */
+
+type Pthread_cond_t = struct{ F__data X__pthread_cond_s } /* pthreadtypes.h:80:3 */
+
+// Data structure for reader-writer lock variable handling. The
+// structure of the attribute type is deliberately not exposed.
+type Pthread_rwlock_t = struct{ F__data X__pthread_rwlock_arch_t } /* pthreadtypes.h:91:3 */
+
+type Pthread_rwlockattr_t = struct {
+ F__ccgo_pad1 [0]uint64
+ F__size [8]uint8
+} /* pthreadtypes.h:97:3 */
+
+// POSIX spinlock data type.
+type Pthread_spinlock_t = int32 /* pthreadtypes.h:103:22 */
+
+// POSIX barriers data type. The structure of the type is
+// deliberately not exposed.
+type Pthread_barrier_t = struct {
+ F__ccgo_pad1 [0]uint64
+ F__size [32]uint8
+} /* pthreadtypes.h:112:3 */
+
+type Pthread_barrierattr_t = struct {
+ F__ccgo_pad1 [0]uint32
+ F__size [4]uint8
+} /* pthreadtypes.h:118:3 */
+
+// Type for length arguments in socket calls.
+type Socklen_t = X__socklen_t /* socket.h:33:21 */
+
+// Protocol families.
+
+// Address families.
+
+// Socket level values. Others are defined in the appropriate headers.
+//
+// XXX These definitions also should go into the appropriate headers as
+// far as they are available.
+
+// Maximum queue length specifiable by listen.
+
+// Get the definition of the macro to define the common sockaddr members.
+// Definition of struct sockaddr_* common members and sizes, generic version.
+// Copyright (C) 1995-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/socket.h> instead.
+
+// POSIX.1g specifies this type name for the `sa_family' member.
+type Sa_family_t = uint16 /* sockaddr.h:28:28 */
+
+// This macro is used to declare the initial common members
+// of the data types used for socket addresses, `struct sockaddr',
+// `struct sockaddr_in', `struct sockaddr_un', etc.
+
+// Size of struct sockaddr_storage.
+
+// Structure describing a generic socket address.
+type Sockaddr = struct {
+ Fsa_family Sa_family_t
+ Fsa_data [14]uint8
+} /* socket.h:178:1 */
+
+// Structure large enough to hold any socket address (with the historical
+// exception of AF_UNIX).
+
+type Sockaddr_storage = struct {
+ Fss_family Sa_family_t
+ F__ss_padding [118]uint8
+ F__ss_align uint64
+} /* socket.h:191:1 */
+
+// Structure describing messages sent by
+// `sendmsg' and received by `recvmsg'.
+type Msghdr = struct {
+ Fmsg_name uintptr
+ Fmsg_namelen Socklen_t
+ F__ccgo_pad1 [4]byte
+ Fmsg_iov uintptr
+ Fmsg_iovlen Size_t
+ Fmsg_control uintptr
+ Fmsg_controllen Size_t
+ Fmsg_flags int32
+ F__ccgo_pad2 [4]byte
+} /* socket.h:257:1 */
+
+// Structure used for storage of ancillary data object information.
+type Cmsghdr = struct {
+ F__ccgo_pad1 [0]uint64
+ Fcmsg_len Size_t
+ Fcmsg_level int32
+ Fcmsg_type int32
+} /* socket.h:275:1 */
+
+// SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
+
+// SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
+
+// SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
+
+// This allows for 1024 file descriptors: if NR_OPEN is ever grown
+// beyond that you'll have to change this too. But 1024 fd's seem to be
+// enough even for such "real" unices like OSF/1, so hopefully this is
+// one limit that doesn't have to be changed [again].
+//
+// Note that POSIX wants the FD_CLEAR(fd,fdsetp) defines to be in
+// <sys/time.h> (and thus <linux/time.h>) - but this is a more logical
+// place for them. Solved by having dummy defines in <sys/time.h>.
+
+// This macro may have been defined in <gnu/types.h>. But we always
+// use the one here.
+
+type X__kernel_fd_set = struct{ Ffds_bits [16]uint64 } /* posix_types.h:27:3 */
+
+// Type of a signal handler.
+type X__kernel_sighandler_t = uintptr /* posix_types.h:30:14 */
+
+// Type of a SYSV IPC key.
+type X__kernel_key_t = int32 /* posix_types.h:33:13 */
+type X__kernel_mqd_t = int32 /* posix_types.h:34:13 */
+
+// SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
+
+// SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note
+// Copyright (C) 2012 ARM Ltd.
+// Copyright (C) 2015 Regents of the University of California
+
+// SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
+
+// There seems to be no way of detecting this automatically from user
+// space, so 64 bit architectures should override this in their
+// bitsperlong.h. In particular, an architecture that supports
+// both 32 and 64 bit user space must not rely on CONFIG_64BIT
+// to decide it, but rather check a compiler provided macro.
+
+// This file is generally used by user-level software, so you need to
+// be a little careful about namespace pollution etc.
+//
+// First the types that are often defined in different ways across
+// architectures, so that you can override them.
+
+type X__kernel_long_t = int64 /* posix_types.h:15:15 */
+type X__kernel_ulong_t = uint64 /* posix_types.h:16:23 */
+
+type X__kernel_ino_t = X__kernel_ulong_t /* posix_types.h:20:26 */
+
+type X__kernel_mode_t = uint32 /* posix_types.h:24:22 */
+
+type X__kernel_pid_t = int32 /* posix_types.h:28:14 */
+
+type X__kernel_ipc_pid_t = int32 /* posix_types.h:32:14 */
+
+type X__kernel_uid_t = uint32 /* posix_types.h:36:22 */
+type X__kernel_gid_t = uint32 /* posix_types.h:37:22 */
+
+type X__kernel_suseconds_t = X__kernel_long_t /* posix_types.h:41:26 */
+
+type X__kernel_daddr_t = int32 /* posix_types.h:45:14 */
+
+type X__kernel_uid32_t = uint32 /* posix_types.h:49:22 */
+type X__kernel_gid32_t = uint32 /* posix_types.h:50:22 */
+
+type X__kernel_old_uid_t = X__kernel_uid_t /* posix_types.h:54:24 */
+type X__kernel_old_gid_t = X__kernel_gid_t /* posix_types.h:55:24 */
+
+type X__kernel_old_dev_t = uint32 /* posix_types.h:59:22 */
+
+// Most 32 bit architectures use "unsigned int" size_t,
+// and all 64 bit architectures use "unsigned long" size_t.
+type X__kernel_size_t = X__kernel_ulong_t /* posix_types.h:72:26 */
+type X__kernel_ssize_t = X__kernel_long_t /* posix_types.h:73:25 */
+type X__kernel_ptrdiff_t = X__kernel_long_t /* posix_types.h:74:25 */
+
+type X__kernel_fsid_t = struct{ Fval [2]int32 } /* posix_types.h:81:3 */
+
+// anything below here should be completely generic
+type X__kernel_off_t = X__kernel_long_t /* posix_types.h:87:25 */
+type X__kernel_loff_t = int64 /* posix_types.h:88:19 */
+type X__kernel_old_time_t = X__kernel_long_t /* posix_types.h:89:25 */
+type X__kernel_time_t = X__kernel_long_t /* posix_types.h:90:25 */
+type X__kernel_time64_t = int64 /* posix_types.h:91:19 */
+type X__kernel_clock_t = X__kernel_long_t /* posix_types.h:92:25 */
+type X__kernel_timer_t = int32 /* posix_types.h:93:14 */
+type X__kernel_clockid_t = int32 /* posix_types.h:94:14 */
+type X__kernel_caddr_t = uintptr /* posix_types.h:95:14 */
+type X__kernel_uid16_t = uint16 /* posix_types.h:96:24 */
+type X__kernel_gid16_t = uint16 /* posix_types.h:97:24 */
+
+// SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
+
+// Socket-level I/O control calls.
+
+// For setsockopt(2)
+
+// Security levels - as per NRL IPv6 - don't actually do anything
+
+// Socket filtering
+
+// Instruct lower device to use last 4-bytes of skb data as FCS
+
+// on 64-bit and x32, avoid the ?: operator
+
+// Structure used to manipulate the SO_LINGER option.
+type Linger = struct {
+ Fl_onoff int32
+ Fl_linger int32
+} /* socket.h:361:1 */
+
+// This is the 4.3 BSD `struct sockaddr' format, which is used as wire
+// format in the grotty old 4.3 `talk' protocol.
+type Osockaddr = struct {
+ Fsa_family uint16
+ Fsa_data [14]uint8
+} /* struct_osockaddr.h:6:1 */
+
+// Define some macros helping to catch buffer overflows.
+
+var _ uint8 /* gen.c:2:13: */
diff --git a/vendor/modernc.org/libc/sys/stat/capi_linux_riscv64.go b/vendor/modernc.org/libc/sys/stat/capi_linux_riscv64.go
new file mode 100644
index 00000000..17c10084
--- /dev/null
+++ b/vendor/modernc.org/libc/sys/stat/capi_linux_riscv64.go
@@ -0,0 +1,5 @@
+// Code generated by 'ccgo sys/stat/gen.c -crt-import-path -export-defines -export-enums -export-externs X -export-fields F -export-structs -export-typedefs -header -hide _OSSwapInt16,_OSSwapInt32,_OSSwapInt64 -o sys/stat/stat_linux_riscv64.go -pkgname stat', DO NOT EDIT.
+
+package stat
+
+var CAPI = map[string]struct{}{}
diff --git a/vendor/modernc.org/libc/sys/stat/stat_linux_riscv64.go b/vendor/modernc.org/libc/sys/stat/stat_linux_riscv64.go
new file mode 100644
index 00000000..edf9167e
--- /dev/null
+++ b/vendor/modernc.org/libc/sys/stat/stat_linux_riscv64.go
@@ -0,0 +1,1163 @@
+// Code generated by 'ccgo sys/stat/gen.c -crt-import-path "" -export-defines "" -export-enums "" -export-externs X -export-fields F -export-structs "" -export-typedefs "" -header -hide _OSSwapInt16,_OSSwapInt32,_OSSwapInt64 -o sys/stat/stat_linux_riscv64.go -pkgname stat', DO NOT EDIT.
+
+package stat
+
+import (
+ "math"
+ "reflect"
+ "sync/atomic"
+ "unsafe"
+)
+
+var _ = math.Pi
+var _ reflect.Kind
+var _ atomic.Value
+var _ unsafe.Pointer
+
+const (
+ ACCESSPERMS = 511
+ ALLPERMS = 4095
+ DEFFILEMODE = 438
+ S_BLKSIZE = 512
+ S_IEXEC = 64
+ S_IFBLK = 24576
+ S_IFCHR = 8192
+ S_IFDIR = 16384
+ S_IFIFO = 4096
+ S_IFLNK = 40960
+ S_IFMT = 61440
+ S_IFREG = 32768
+ S_IFSOCK = 49152
+ S_IREAD = 256
+ S_IRGRP = 32
+ S_IROTH = 4
+ S_IRUSR = 256
+ S_IRWXG = 56
+ S_IRWXO = 7
+ S_IRWXU = 448
+ S_ISGID = 1024
+ S_ISUID = 2048
+ S_ISVTX = 512
+ S_IWGRP = 16
+ S_IWOTH = 2
+ S_IWRITE = 128
+ S_IWUSR = 128
+ S_IXGRP = 8
+ S_IXOTH = 1
+ S_IXUSR = 64
+ UTIME_NOW = 1073741823
+ UTIME_OMIT = 1073741822
+ X_ATFILE_SOURCE = 1
+ X_BITS_ENDIANNESS_H = 1
+ X_BITS_ENDIAN_H = 1
+ X_BITS_STAT_H = 1
+ X_BITS_STRUCT_STAT_H = 1
+ X_BITS_TIME64_H = 1
+ X_BITS_TYPESIZES_H = 1
+ X_BITS_TYPES_H = 1
+ X_DEFAULT_SOURCE = 1
+ X_FEATURES_H = 1
+ X_FILE_OFFSET_BITS = 64
+ X_LP64 = 1
+ X_POSIX_C_SOURCE = 200809
+ X_POSIX_SOURCE = 1
+ X_STATBUF_ST_BLKSIZE = 0
+ X_STATBUF_ST_NSEC = 0
+ X_STATBUF_ST_RDEV = 0
+ X_STDC_PREDEF_H = 1
+ X_STRUCT_TIMESPEC = 1
+ X_SYS_CDEFS_H = 1
+ X_SYS_STAT_H = 1
+ Linux = 1
+ Unix = 1
+)
+
+type Ptrdiff_t = int64 /* <builtin>:3:26 */
+
+type Size_t = uint64 /* <builtin>:9:23 */
+
+type Wchar_t = int32 /* <builtin>:15:24 */
+
+type X__int128_t = struct {
+ Flo int64
+ Fhi int64
+} /* <builtin>:21:43 */ // must match modernc.org/mathutil.Int128
+type X__uint128_t = struct {
+ Flo uint64
+ Fhi uint64
+} /* <builtin>:22:44 */ // must match modernc.org/mathutil.Int128
+
+type X__builtin_va_list = uintptr /* <builtin>:46:14 */
+type X__float128 = float64 /* <builtin>:47:21 */
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// POSIX Standard: 5.6 File Characteristics <sys/stat.h>
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// These are defined by the user (or the compiler)
+// to specify the desired environment:
+//
+// __STRICT_ANSI__ ISO Standard C.
+// _ISOC99_SOURCE Extensions to ISO C89 from ISO C99.
+// _ISOC11_SOURCE Extensions to ISO C99 from ISO C11.
+// _ISOC2X_SOURCE Extensions to ISO C99 from ISO C2X.
+// __STDC_WANT_LIB_EXT2__
+// Extensions to ISO C99 from TR 27431-2:2010.
+// __STDC_WANT_IEC_60559_BFP_EXT__
+// Extensions to ISO C11 from TS 18661-1:2014.
+// __STDC_WANT_IEC_60559_FUNCS_EXT__
+// Extensions to ISO C11 from TS 18661-4:2015.
+// __STDC_WANT_IEC_60559_TYPES_EXT__
+// Extensions to ISO C11 from TS 18661-3:2015.
+// __STDC_WANT_IEC_60559_EXT__
+// ISO C2X interfaces defined only in Annex F.
+//
+// _POSIX_SOURCE IEEE Std 1003.1.
+// _POSIX_C_SOURCE If ==1, like _POSIX_SOURCE; if >=2 add IEEE Std 1003.2;
+// if >=199309L, add IEEE Std 1003.1b-1993;
+// if >=199506L, add IEEE Std 1003.1c-1995;
+// if >=200112L, all of IEEE 1003.1-2004
+// if >=200809L, all of IEEE 1003.1-2008
+// _XOPEN_SOURCE Includes POSIX and XPG things. Set to 500 if
+// Single Unix conformance is wanted, to 600 for the
+// sixth revision, to 700 for the seventh revision.
+// _XOPEN_SOURCE_EXTENDED XPG things and X/Open Unix extensions.
+// _LARGEFILE_SOURCE Some more functions for correct standard I/O.
+// _LARGEFILE64_SOURCE Additional functionality from LFS for large files.
+// _FILE_OFFSET_BITS=N Select default filesystem interface.
+// _ATFILE_SOURCE Additional *at interfaces.
+// _DYNAMIC_STACK_SIZE_SOURCE Select correct (but non compile-time constant)
+// MINSIGSTKSZ, SIGSTKSZ and PTHREAD_STACK_MIN.
+// _GNU_SOURCE All of the above, plus GNU extensions.
+// _DEFAULT_SOURCE The default set of features (taking precedence over
+// __STRICT_ANSI__).
+//
+// _FORTIFY_SOURCE Add security hardening to many library functions.
+// Set to 1 or 2; 2 performs stricter checks than 1.
+//
+// _REENTRANT, _THREAD_SAFE
+// Obsolete; equivalent to _POSIX_C_SOURCE=199506L.
+//
+// The `-ansi' switch to the GNU C compiler, and standards conformance
+// options such as `-std=c99', define __STRICT_ANSI__. If none of
+// these are defined, or if _DEFAULT_SOURCE is defined, the default is
+// to have _POSIX_SOURCE set to one and _POSIX_C_SOURCE set to
+// 200809L, as well as enabling miscellaneous functions from BSD and
+// SVID. If more than one of these are defined, they accumulate. For
+// example __STRICT_ANSI__, _POSIX_SOURCE and _POSIX_C_SOURCE together
+// give you ISO C, 1003.1, and 1003.2, but nothing else.
+//
+// These are defined by this file and are used by the
+// header files to decide what to declare or define:
+//
+// __GLIBC_USE (F) Define things from feature set F. This is defined
+// to 1 or 0; the subsequent macros are either defined
+// or undefined, and those tests should be moved to
+// __GLIBC_USE.
+// __USE_ISOC11 Define ISO C11 things.
+// __USE_ISOC99 Define ISO C99 things.
+// __USE_ISOC95 Define ISO C90 AMD1 (C95) things.
+// __USE_ISOCXX11 Define ISO C++11 things.
+// __USE_POSIX Define IEEE Std 1003.1 things.
+// __USE_POSIX2 Define IEEE Std 1003.2 things.
+// __USE_POSIX199309 Define IEEE Std 1003.1, and .1b things.
+// __USE_POSIX199506 Define IEEE Std 1003.1, .1b, .1c and .1i things.
+// __USE_XOPEN Define XPG things.
+// __USE_XOPEN_EXTENDED Define X/Open Unix things.
+// __USE_UNIX98 Define Single Unix V2 things.
+// __USE_XOPEN2K Define XPG6 things.
+// __USE_XOPEN2KXSI Define XPG6 XSI things.
+// __USE_XOPEN2K8 Define XPG7 things.
+// __USE_XOPEN2K8XSI Define XPG7 XSI things.
+// __USE_LARGEFILE Define correct standard I/O things.
+// __USE_LARGEFILE64 Define LFS things with separate names.
+// __USE_FILE_OFFSET64 Define 64bit interface as default.
+// __USE_MISC Define things from 4.3BSD or System V Unix.
+// __USE_ATFILE Define *at interfaces and AT_* constants for them.
+// __USE_DYNAMIC_STACK_SIZE Define correct (but non compile-time constant)
+// MINSIGSTKSZ, SIGSTKSZ and PTHREAD_STACK_MIN.
+// __USE_GNU Define GNU extensions.
+// __USE_FORTIFY_LEVEL Additional security measures used, according to level.
+//
+// The macros `__GNU_LIBRARY__', `__GLIBC__', and `__GLIBC_MINOR__' are
+// defined by this file unconditionally. `__GNU_LIBRARY__' is provided
+// only for compatibility. All new code should use the other symbols
+// to test for features.
+//
+// All macros listed above as possibly being defined by this file are
+// explicitly undefined if they are not explicitly defined.
+// Feature-test macros that are not defined by the user or compiler
+// but are implied by the other feature-test macros defined (or by the
+// lack of any definitions) are defined by the file.
+//
+// ISO C feature test macros depend on the definition of the macro
+// when an affected header is included, not when the first system
+// header is included, and so they are handled in
+// <bits/libc-header-start.h>, which does not have a multiple include
+// guard. Feature test macros that can be handled from the first
+// system header included are handled here.
+
+// Undefine everything, so we get a clean slate.
+
+// Suppress kernel-name space pollution unless user expressedly asks
+// for it.
+
+// Convenience macro to test the version of gcc.
+// Use like this:
+// #if __GNUC_PREREQ (2,8)
+// ... code requiring gcc 2.8 or later ...
+// #endif
+// Note: only works for GCC 2.0 and later, because __GNUC_MINOR__ was
+// added in 2.0.
+
+// Similarly for clang. Features added to GCC after version 4.2 may
+// or may not also be available in clang, and clang's definitions of
+// __GNUC(_MINOR)__ are fixed at 4 and 2 respectively. Not all such
+// features can be queried via __has_extension/__has_feature.
+
+// Whether to use feature set F.
+
+// _BSD_SOURCE and _SVID_SOURCE are deprecated aliases for
+// _DEFAULT_SOURCE. If _DEFAULT_SOURCE is present we do not
+// issue a warning; the expectation is that the source is being
+// transitioned to use the new macro.
+
+// If _GNU_SOURCE was defined by the user, turn on all the other features.
+
+// If nothing (other than _GNU_SOURCE and _DEFAULT_SOURCE) is defined,
+// define _DEFAULT_SOURCE.
+
+// This is to enable the ISO C2X extension.
+
+// This is to enable the ISO C11 extension.
+
+// This is to enable the ISO C99 extension.
+
+// This is to enable the ISO C90 Amendment 1:1995 extension.
+
+// If none of the ANSI/POSIX macros are defined, or if _DEFAULT_SOURCE
+// is defined, use POSIX.1-2008 (or another version depending on
+// _XOPEN_SOURCE).
+
+// Some C libraries once required _REENTRANT and/or _THREAD_SAFE to be
+// defined in all multithreaded code. GNU libc has not required this
+// for many years. We now treat them as compatibility synonyms for
+// _POSIX_C_SOURCE=199506L, which is the earliest level of POSIX with
+// comprehensive support for multithreaded code. Using them never
+// lowers the selected level of POSIX conformance, only raises it.
+
+// Features part to handle 64-bit time_t support.
+// Copyright (C) 2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// We need to know the word size in order to check the time size.
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Bit size of the time_t type at glibc build time, RISC-V case.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// RV32 and RV64 both use 64-bit time_t
+
+// The function 'gets' existed in C89, but is impossible to use
+// safely. It has been removed from ISO C11 and ISO C++14. Note: for
+// compatibility with various implementations of <cstdio>, this test
+// must consider only the value of __cplusplus when compiling C++.
+
+// GNU formerly extended the scanf functions with modified format
+// specifiers %as, %aS, and %a[...] that allocate a buffer for the
+// input using malloc. This extension conflicts with ISO C99, which
+// defines %a as a standalone format specifier that reads a floating-
+// point number; moreover, POSIX.1-2008 provides the same feature
+// using the modifier letter 'm' instead (%ms, %mS, %m[...]).
+//
+// We now follow C99 unless GNU extensions are active and the compiler
+// is specifically in C89 or C++98 mode (strict or not). For
+// instance, with GCC, -std=gnu11 will have C99-compliant scanf with
+// or without -D_GNU_SOURCE, but -std=c89 -D_GNU_SOURCE will have the
+// old extension.
+
+// Get definitions of __STDC_* predefined macros, if the compiler has
+// not preincluded this header automatically.
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// This macro indicates that the installed library is the GNU C Library.
+// For historic reasons the value now is 6 and this will stay from now
+// on. The use of this variable is deprecated. Use __GLIBC__ and
+// __GLIBC_MINOR__ now (see below) when you want to test for a specific
+// GNU C library version and use the values in <gnu/lib-names.h> to get
+// the sonames of the shared libraries.
+
+// Major and minor version number of the GNU C library package. Use
+// these macros to test for features in specific releases.
+
+// This is here only because every header file already includes this one.
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// We are almost always included from features.h.
+
+// The GNU libc does not support any K&R compilers or the traditional mode
+// of ISO C compilers anymore. Check for some of the combinations not
+// supported anymore.
+
+// Some user header file might have defined this before.
+
+// Compilers that lack __has_attribute may object to
+// #if defined __has_attribute && __has_attribute (...)
+// even though they do not need to evaluate the right-hand side of the &&.
+// Similarly for __has_builtin, etc.
+
+// All functions, except those with callbacks or those that
+// synchronize memory, are leaf functions.
+
+// GCC can always grok prototypes. For C++ programs we add throw()
+// to help it optimize the function calls. But this only works with
+// gcc 2.8.x and egcs. For gcc 3.4 and up we even mark C functions
+// as non-throwing using a function attribute since programs can use
+// the -fexceptions options for C code as well.
+
+// These two macros are not used in glibc anymore. They are kept here
+// only because some other projects expect the macros to be defined.
+
+// For these things, GCC behaves the ANSI way normally,
+// and the non-ANSI way under -traditional.
+
+// This is not a typedef so `const __ptr_t' does the right thing.
+
+// C++ needs to know that types and declarations are C, not C++.
+
+// Fortify support.
+
+// Use __builtin_dynamic_object_size at _FORTIFY_SOURCE=3 when available.
+
+// Support for flexible arrays.
+// Headers that should use flexible arrays only if they're "real"
+// (e.g. only if they won't affect sizeof()) should test
+// #if __glibc_c99_flexarr_available.
+
+// __asm__ ("xyz") is used throughout the headers to rename functions
+// at the assembly language level. This is wrapped by the __REDIRECT
+// macro, in order to support compilers that can do this some other
+// way. When compilers don't support asm-names at all, we have to do
+// preprocessor tricks instead (which don't have exactly the right
+// semantics, but it's the best we can do).
+//
+// Example:
+// int __REDIRECT(setpgrp, (__pid_t pid, __pid_t pgrp), setpgid);
+
+//
+// #elif __SOME_OTHER_COMPILER__
+//
+// # define __REDIRECT(name, proto, alias) name proto; _Pragma("let " #name " = " #alias)
+
+// GCC and clang have various useful declarations that can be made with
+// the '__attribute__' syntax. All of the ways we use this do fine if
+// they are omitted for compilers that don't understand it.
+
+// At some point during the gcc 2.96 development the `malloc' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+
+// Tell the compiler which arguments to an allocation function
+// indicate the size of the allocation.
+
+// At some point during the gcc 2.96 development the `pure' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+
+// This declaration tells the compiler that the value is constant.
+
+// At some point during the gcc 3.1 development the `used' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+
+// Since version 3.2, gcc allows marking deprecated functions.
+
+// Since version 4.5, gcc also allows one to specify the message printed
+// when a deprecated function is used. clang claims to be gcc 4.2, but
+// may also support this feature.
+
+// At some point during the gcc 2.8 development the `format_arg' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+// If several `format_arg' attributes are given for the same function, in
+// gcc-3.0 and older, all but the last one are ignored. In newer gccs,
+// all designated arguments are considered.
+
+// At some point during the gcc 2.97 development the `strfmon' format
+// attribute for functions was introduced. We don't want to use it
+// unconditionally (although this would be possible) since it
+// generates warnings.
+
+// The nonnull function attribute marks pointer parameters that
+// must not be NULL.
+
+// The returns_nonnull function attribute marks the return type of the function
+// as always being non-null.
+
+// If fortification mode, we warn about unused results of certain
+// function calls which can lead to problems.
+
+// Forces a function to be always inlined.
+// The Linux kernel defines __always_inline in stddef.h (283d7573), and
+// it conflicts with this definition. Therefore undefine it first to
+// allow either header to be included first.
+
+// Associate error messages with the source location of the call site rather
+// than with the source location inside the function.
+
+// GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
+// inline semantics, unless -fgnu89-inline is used. Using __GNUC_STDC_INLINE__
+// or __GNUC_GNU_INLINE is not a good enough check for gcc because gcc versions
+// older than 4.3 may define these macros and still not guarantee GNU inlining
+// semantics.
+//
+// clang++ identifies itself as gcc-4.2, but has support for GNU inlining
+// semantics, that can be checked for by using the __GNUC_STDC_INLINE_ and
+// __GNUC_GNU_INLINE__ macro definitions.
+
+// GCC 4.3 and above allow passing all anonymous arguments of an
+// __extern_always_inline function to some other vararg function.
+
+// It is possible to compile containing GCC extensions even if GCC is
+// run in pedantic mode if the uses are carefully marked using the
+// `__extension__' keyword. But this is not generally available before
+// version 2.8.
+
+// __restrict is known in EGCS 1.2 and above, and in clang.
+// It works also in C++ mode (outside of arrays), but only when spelled
+// as '__restrict', not 'restrict'.
+
+// ISO C99 also allows to declare arrays as non-overlapping. The syntax is
+// array_name[restrict]
+// GCC 3.1 and clang support this.
+// This syntax is not usable in C++ mode.
+
+// Describes a char array whose address can safely be passed as the first
+// argument to strncpy and strncat, as the char array is not necessarily
+// a NUL-terminated string.
+
+// Undefine (also defined in libc-symbols.h).
+// Copies attributes from the declaration or type referenced by
+// the argument.
+
+// The #ifndef lets Gnulib avoid including these on non-glibc
+// platforms, where the includes typically do not exist.
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Properties of long double type. ldbl-128 version.
+// Copyright (C) 2016-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// long double is distinct from double, so there is nothing to
+// define here.
+
+// __glibc_macro_warning (MESSAGE) issues warning MESSAGE. This is
+// intended for use in preprocessor macros.
+//
+// Note: MESSAGE must be a _single_ string; concatenation of string
+// literals is not supported.
+
+// Generic selection (ISO C11) is a C-only feature, available in GCC
+// since version 4.9. Previous versions do not provide generic
+// selection, even though they might set __STDC_VERSION__ to 201112L,
+// when in -std=c11 mode. Thus, we must check for !defined __GNUC__
+// when testing __STDC_VERSION__ for generic selection support.
+// On the other hand, Clang also defines __GNUC__, so a clang-specific
+// check is required to enable the use of generic selection.
+
+// Designates a 1-based positional argument ref-index of pointer type
+// that can be used to access size-index elements of the pointed-to
+// array according to access mode, or at least one element when
+// size-index is not provided:
+// access (access-mode, <ref-index> [, <size-index>])
+
+// Designates dealloc as a function to call to deallocate objects
+// allocated by the declared function.
+
+// Specify that a function such as setjmp or vfork may return
+// twice.
+
+// If we don't have __REDIRECT, prototypes will be missing if
+// __USE_FILE_OFFSET64 but not __USE_LARGEFILE[64].
+
+// Decide whether we can define 'extern inline' functions in headers.
+
+// This is here only because every header file already includes this one.
+// Get the definitions of all the appropriate `__stub_FUNCTION' symbols.
+// <gnu/stubs.h> contains `#define __stub_FUNCTION' when FUNCTION is a stub
+// that will always return failure (and set errno to ENOSYS).
+// This file is automatically generated.
+// This file selects the right generated file of `__stub_FUNCTION' macros
+// based on the architecture being compiled for.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// This file is automatically generated.
+// It defines a symbol `__stub_FUNCTION' for each function
+// in the C library which is a stub, meaning it will fail
+// every time called, usually setting errno to ENOSYS.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Bit size of the time_t type at glibc build time, RISC-V case.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// RV32 and RV64 both use 64-bit time_t
+
+// Convenience types.
+type X__u_char = uint8 /* types.h:31:23 */
+type X__u_short = uint16 /* types.h:32:28 */
+type X__u_int = uint32 /* types.h:33:22 */
+type X__u_long = uint64 /* types.h:34:27 */
+
+// Fixed-size types, underlying types depend on word size and compiler.
+type X__int8_t = int8 /* types.h:37:21 */
+type X__uint8_t = uint8 /* types.h:38:23 */
+type X__int16_t = int16 /* types.h:39:26 */
+type X__uint16_t = uint16 /* types.h:40:28 */
+type X__int32_t = int32 /* types.h:41:20 */
+type X__uint32_t = uint32 /* types.h:42:22 */
+type X__int64_t = int64 /* types.h:44:25 */
+type X__uint64_t = uint64 /* types.h:45:27 */
+
+// Smallest types with at least a given width.
+type X__int_least8_t = X__int8_t /* types.h:52:18 */
+type X__uint_least8_t = X__uint8_t /* types.h:53:19 */
+type X__int_least16_t = X__int16_t /* types.h:54:19 */
+type X__uint_least16_t = X__uint16_t /* types.h:55:20 */
+type X__int_least32_t = X__int32_t /* types.h:56:19 */
+type X__uint_least32_t = X__uint32_t /* types.h:57:20 */
+type X__int_least64_t = X__int64_t /* types.h:58:19 */
+type X__uint_least64_t = X__uint64_t /* types.h:59:20 */
+
+// quad_t is also 64 bits.
+type X__quad_t = int64 /* types.h:63:18 */
+type X__u_quad_t = uint64 /* types.h:64:27 */
+
+// Largest integral types.
+type X__intmax_t = int64 /* types.h:72:18 */
+type X__uintmax_t = uint64 /* types.h:73:27 */
+
+// The machine-dependent file <bits/typesizes.h> defines __*_T_TYPE
+// macros for each of the OS types we define below. The definitions
+// of those macros must use the following macros for underlying types.
+// We define __S<SIZE>_TYPE and __U<SIZE>_TYPE for the signed and unsigned
+// variants of each of the following integer types on this machine.
+//
+// 16 -- "natural" 16-bit type (always short)
+// 32 -- "natural" 32-bit type (always int)
+// 64 -- "natural" 64-bit type (long or long long)
+// LONG32 -- 32-bit type, traditionally long
+// QUAD -- 64-bit type, traditionally long long
+// WORD -- natural type of __WORDSIZE bits (int or long)
+// LONGWORD -- type of __WORDSIZE bits, traditionally long
+//
+// We distinguish WORD/LONGWORD, 32/LONG32, and 64/QUAD so that the
+// conventional uses of `long' or `long long' type modifiers match the
+// types we define, even when a less-adorned type would be the same size.
+// This matters for (somewhat) portably writing printf/scanf formats for
+// these types, where using the appropriate l or ll format modifiers can
+// make the typedefs and the formats match up across all GNU platforms. If
+// we used `long' when it's 64 bits where `long long' is expected, then the
+// compiler would warn about the formats not matching the argument types,
+// and the programmer changing them to shut up the compiler would break the
+// program's portability.
+//
+// Here we assume what is presently the case in all the GCC configurations
+// we support: long long is always 64 bits, long is always word/address size,
+// and int is always 32 bits.
+
+// No need to mark the typedef with __extension__.
+// bits/typesizes.h -- underlying types for *_t. For the generic Linux ABI.
+// Copyright (C) 2011-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+// Contributed by Chris Metcalf <cmetcalf@tilera.com>, 2011.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// See <bits/types.h> for the meaning of these macros. This file exists so
+// that <bits/types.h> need not vary across different GNU platforms.
+
+// Tell the libc code that off_t and off64_t are actually the same type
+// for all ABI purposes, even if possibly expressed as different base types
+// for C type-checking purposes.
+
+// Same for ino_t and ino64_t.
+
+// And for __rlim_t and __rlim64_t.
+
+// And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t.
+
+// And for getitimer, setitimer and rusage
+
+// Number of descriptors that can fit in an `fd_set'.
+
+// bits/time64.h -- underlying types for __time64_t. RISC-V version.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Define __TIME64_T_TYPE so that it is always a 64-bit type.
+
+// If we already have 64-bit time type then use it.
+
+type X__dev_t = uint64 /* types.h:145:25 */ // Type of device numbers.
+type X__uid_t = uint32 /* types.h:146:25 */ // Type of user identifications.
+type X__gid_t = uint32 /* types.h:147:25 */ // Type of group identifications.
+type X__ino_t = uint64 /* types.h:148:25 */ // Type of file serial numbers.
+type X__ino64_t = uint64 /* types.h:149:27 */ // Type of file serial numbers (LFS).
+type X__mode_t = uint32 /* types.h:150:26 */ // Type of file attribute bitmasks.
+type X__nlink_t = uint32 /* types.h:151:27 */ // Type of file link counts.
+type X__off_t = int64 /* types.h:152:25 */ // Type of file sizes and offsets.
+type X__off64_t = int64 /* types.h:153:27 */ // Type of file sizes and offsets (LFS).
+type X__pid_t = int32 /* types.h:154:25 */ // Type of process identifications.
+type X__fsid_t = struct{ F__val [2]int32 } /* types.h:155:26 */ // Type of file system IDs.
+type X__clock_t = int64 /* types.h:156:27 */ // Type of CPU usage counts.
+type X__rlim_t = uint64 /* types.h:157:26 */ // Type for resource measurement.
+type X__rlim64_t = uint64 /* types.h:158:28 */ // Type for resource measurement (LFS).
+type X__id_t = uint32 /* types.h:159:24 */ // General type for IDs.
+type X__time_t = int64 /* types.h:160:26 */ // Seconds since the Epoch.
+type X__useconds_t = uint32 /* types.h:161:30 */ // Count of microseconds.
+type X__suseconds_t = int64 /* types.h:162:31 */ // Signed count of microseconds.
+type X__suseconds64_t = int64 /* types.h:163:33 */
+
+type X__daddr_t = int32 /* types.h:165:27 */ // The type of a disk address.
+type X__key_t = int32 /* types.h:166:25 */ // Type of an IPC key.
+
+// Clock ID used in clock and timer functions.
+type X__clockid_t = int32 /* types.h:169:29 */
+
+// Timer ID returned by `timer_create'.
+type X__timer_t = uintptr /* types.h:172:12 */
+
+// Type to represent block size.
+type X__blksize_t = int32 /* types.h:175:29 */
+
+// Types from the Large File Support interface.
+
+// Type to count number of disk blocks.
+type X__blkcnt_t = int64 /* types.h:180:28 */
+type X__blkcnt64_t = int64 /* types.h:181:30 */
+
+// Type to count file system blocks.
+type X__fsblkcnt_t = uint64 /* types.h:184:30 */
+type X__fsblkcnt64_t = uint64 /* types.h:185:32 */
+
+// Type to count file system nodes.
+type X__fsfilcnt_t = uint64 /* types.h:188:30 */
+type X__fsfilcnt64_t = uint64 /* types.h:189:32 */
+
+// Type of miscellaneous file system fields.
+type X__fsword_t = int64 /* types.h:192:28 */
+
+type X__ssize_t = int64 /* types.h:194:27 */ // Type of a byte count, or error.
+
+// Signed long type used in system calls.
+type X__syscall_slong_t = int64 /* types.h:197:33 */
+// Unsigned long type used in system calls.
+type X__syscall_ulong_t = uint64 /* types.h:199:33 */
+
+// These few don't really vary by system, they always correspond
+// to one of the other defined types.
+type X__loff_t = X__off64_t /* types.h:203:19 */ // Type of file sizes and offsets (LFS).
+type X__caddr_t = uintptr /* types.h:204:14 */
+
+// Duplicates info from stdint.h but this is used in unistd.h.
+type X__intptr_t = int64 /* types.h:207:25 */
+
+// Duplicate info from sys/socket.h.
+type X__socklen_t = uint32 /* types.h:210:23 */
+
+// C99: An integer type that can be accessed as an atomic entity,
+// even in the presence of asynchronous interrupts.
+// It is not currently necessary for this to be machine-specific.
+type X__sig_atomic_t = int32 /* types.h:215:13 */
+
+// Seconds since the Epoch, visible to user code when time_t is too
+// narrow only for consistency with the old way of widening too-narrow
+// types. User code should never use __time64_t.
+
+// NB: Include guard matches what <linux/time.h> uses.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Endian macros for string.h functions
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <http://www.gnu.org/licenses/>.
+
+// Definitions for byte order, according to significance of bytes,
+// from low addresses to high addresses. The value is what you get by
+// putting '4' in the most significant byte, '3' in the second most
+// significant byte, '2' in the second least significant byte, and '1'
+// in the least significant byte, and then writing down one digit for
+// each byte, starting with the byte at the lowest address at the left,
+// and proceeding to the byte with the highest address at the right.
+
+// This file defines `__BYTE_ORDER' for the particular machine.
+
+// RISC-V is little-endian.
+
+// Some machines may need to use a different endianness for floating point
+// values.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Returned by `time'.
+type Time_t = X__time_t /* time_t.h:10:18 */
+
+// POSIX.1b structure for a time value. This is like a `struct timeval' but
+// has nanoseconds instead of microseconds.
+type Timespec = struct {
+ Ftv_sec X__time_t
+ Ftv_nsec X__syscall_slong_t
+} /* struct_timespec.h:11:1 */
+
+// The Single Unix specification says that some more types are
+// available here.
+
+type Dev_t = X__dev_t /* stat.h:40:17 */
+
+type Gid_t = X__gid_t /* stat.h:45:17 */
+
+type Ino_t = X__ino64_t /* stat.h:53:19 */
+
+type Mode_t = X__mode_t /* stat.h:59:18 */
+
+type Nlink_t = X__nlink_t /* stat.h:64:19 */
+
+type Off_t = X__off64_t /* stat.h:72:19 */
+
+type Uid_t = X__uid_t /* stat.h:78:17 */
+
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Definition for struct stat.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Endian macros for string.h functions
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <http://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+type Stat = struct {
+ Fst_dev X__dev_t
+ Fst_ino X__ino64_t
+ Fst_mode X__mode_t
+ Fst_nlink X__nlink_t
+ Fst_uid X__uid_t
+ Fst_gid X__gid_t
+ Fst_rdev X__dev_t
+ F__pad1 X__dev_t
+ Fst_size X__off64_t
+ Fst_blksize X__blksize_t
+ F__pad2 int32
+ Fst_blocks X__blkcnt64_t
+ Fst_atim struct {
+ Ftv_sec X__time_t
+ Ftv_nsec X__syscall_slong_t
+ }
+ Fst_mtim struct {
+ Ftv_sec X__time_t
+ Ftv_nsec X__syscall_slong_t
+ }
+ Fst_ctim struct {
+ Ftv_sec X__time_t
+ Ftv_nsec X__syscall_slong_t
+ }
+ F__glibc_reserved [2]int32
+} /* struct_stat.h:44:1 */
+
+var _ uint8 /* gen.c:2:13: */
diff --git a/vendor/modernc.org/libc/sys/types/capi_linux_riscv64.go b/vendor/modernc.org/libc/sys/types/capi_linux_riscv64.go
new file mode 100644
index 00000000..2fb48ebc
--- /dev/null
+++ b/vendor/modernc.org/libc/sys/types/capi_linux_riscv64.go
@@ -0,0 +1,5 @@
+// Code generated by 'ccgo sys/types/gen.c -crt-import-path -export-defines -export-enums -export-externs X -export-fields F -export-structs -export-typedefs -header -hide _OSSwapInt16,_OSSwapInt32,_OSSwapInt64 -o sys/types/types_linux_riscv64.go -pkgname types', DO NOT EDIT.
+
+package types
+
+var CAPI = map[string]struct{}{}
diff --git a/vendor/modernc.org/libc/sys/types/types_linux_riscv64.go b/vendor/modernc.org/libc/sys/types/types_linux_riscv64.go
new file mode 100644
index 00000000..f59fb019
--- /dev/null
+++ b/vendor/modernc.org/libc/sys/types/types_linux_riscv64.go
@@ -0,0 +1,1715 @@
+// Code generated by 'ccgo sys/types/gen.c -crt-import-path "" -export-defines "" -export-enums "" -export-externs X -export-fields F -export-structs "" -export-typedefs "" -header -hide _OSSwapInt16,_OSSwapInt32,_OSSwapInt64 -o sys/types/types_linux_riscv64.go -pkgname types', DO NOT EDIT.
+
+package types
+
+import (
+ "math"
+ "reflect"
+ "sync/atomic"
+ "unsafe"
+)
+
+var _ = math.Pi
+var _ reflect.Kind
+var _ atomic.Value
+var _ unsafe.Pointer
+
+const (
+ BIG_ENDIAN = 4321
+ BYTE_ORDER = 1234
+ FD_SETSIZE = 1024
+ LITTLE_ENDIAN = 1234
+ PDP_ENDIAN = 3412
+ X_ATFILE_SOURCE = 1
+ X_BITS_BYTESWAP_H = 1
+ X_BITS_ENDIANNESS_H = 1
+ X_BITS_ENDIAN_H = 1
+ X_BITS_PTHREADTYPES_ARCH_H = 1
+ X_BITS_PTHREADTYPES_COMMON_H = 1
+ X_BITS_STDINT_INTN_H = 1
+ X_BITS_TIME64_H = 1
+ X_BITS_TYPESIZES_H = 1
+ X_BITS_TYPES_H = 1
+ X_BITS_UINTN_IDENTITY_H = 1
+ X_BSD_SIZE_T_ = 0
+ X_BSD_SIZE_T_DEFINED_ = 0
+ X_DEFAULT_SOURCE = 1
+ X_ENDIAN_H = 1
+ X_FEATURES_H = 1
+ X_FILE_OFFSET_BITS = 64
+ X_GCC_SIZE_T = 0
+ X_LP64 = 1
+ X_POSIX_C_SOURCE = 200809
+ X_POSIX_SOURCE = 1
+ X_RWLOCK_INTERNAL_H = 0
+ X_SIZET_ = 0
+ X_SIZE_T = 0
+ X_SIZE_T_ = 0
+ X_SIZE_T_DECLARED = 0
+ X_SIZE_T_DEFINED = 0
+ X_SIZE_T_DEFINED_ = 0
+ X_STDC_PREDEF_H = 1
+ X_STRUCT_TIMESPEC = 1
+ X_SYS_CDEFS_H = 1
+ X_SYS_SELECT_H = 1
+ X_SYS_SIZE_T_H = 0
+ X_SYS_TYPES_H = 1
+ X_THREAD_MUTEX_INTERNAL_H = 1
+ X_THREAD_SHARED_TYPES_H = 1
+ X_T_SIZE = 0
+ X_T_SIZE_ = 0
+ Linux = 1
+ Unix = 1
+)
+
+type Ptrdiff_t = int64 /* <builtin>:3:26 */
+
+type Size_t = uint64 /* <builtin>:9:23 */
+
+type Wchar_t = int32 /* <builtin>:15:24 */
+
+type X__int128_t = struct {
+ Flo int64
+ Fhi int64
+} /* <builtin>:21:43 */ // must match modernc.org/mathutil.Int128
+type X__uint128_t = struct {
+ Flo uint64
+ Fhi uint64
+} /* <builtin>:22:44 */ // must match modernc.org/mathutil.Int128
+
+type X__builtin_va_list = uintptr /* <builtin>:46:14 */
+type X__float128 = float64 /* <builtin>:47:21 */
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// POSIX Standard: 2.6 Primitive System Data Types <sys/types.h>
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// These are defined by the user (or the compiler)
+// to specify the desired environment:
+//
+// __STRICT_ANSI__ ISO Standard C.
+// _ISOC99_SOURCE Extensions to ISO C89 from ISO C99.
+// _ISOC11_SOURCE Extensions to ISO C99 from ISO C11.
+// _ISOC2X_SOURCE Extensions to ISO C99 from ISO C2X.
+// __STDC_WANT_LIB_EXT2__
+// Extensions to ISO C99 from TR 27431-2:2010.
+// __STDC_WANT_IEC_60559_BFP_EXT__
+// Extensions to ISO C11 from TS 18661-1:2014.
+// __STDC_WANT_IEC_60559_FUNCS_EXT__
+// Extensions to ISO C11 from TS 18661-4:2015.
+// __STDC_WANT_IEC_60559_TYPES_EXT__
+// Extensions to ISO C11 from TS 18661-3:2015.
+// __STDC_WANT_IEC_60559_EXT__
+// ISO C2X interfaces defined only in Annex F.
+//
+// _POSIX_SOURCE IEEE Std 1003.1.
+// _POSIX_C_SOURCE If ==1, like _POSIX_SOURCE; if >=2 add IEEE Std 1003.2;
+// if >=199309L, add IEEE Std 1003.1b-1993;
+// if >=199506L, add IEEE Std 1003.1c-1995;
+// if >=200112L, all of IEEE 1003.1-2004
+// if >=200809L, all of IEEE 1003.1-2008
+// _XOPEN_SOURCE Includes POSIX and XPG things. Set to 500 if
+// Single Unix conformance is wanted, to 600 for the
+// sixth revision, to 700 for the seventh revision.
+// _XOPEN_SOURCE_EXTENDED XPG things and X/Open Unix extensions.
+// _LARGEFILE_SOURCE Some more functions for correct standard I/O.
+// _LARGEFILE64_SOURCE Additional functionality from LFS for large files.
+// _FILE_OFFSET_BITS=N Select default filesystem interface.
+// _ATFILE_SOURCE Additional *at interfaces.
+// _DYNAMIC_STACK_SIZE_SOURCE Select correct (but non compile-time constant)
+// MINSIGSTKSZ, SIGSTKSZ and PTHREAD_STACK_MIN.
+// _GNU_SOURCE All of the above, plus GNU extensions.
+// _DEFAULT_SOURCE The default set of features (taking precedence over
+// __STRICT_ANSI__).
+//
+// _FORTIFY_SOURCE Add security hardening to many library functions.
+// Set to 1 or 2; 2 performs stricter checks than 1.
+//
+// _REENTRANT, _THREAD_SAFE
+// Obsolete; equivalent to _POSIX_C_SOURCE=199506L.
+//
+// The `-ansi' switch to the GNU C compiler, and standards conformance
+// options such as `-std=c99', define __STRICT_ANSI__. If none of
+// these are defined, or if _DEFAULT_SOURCE is defined, the default is
+// to have _POSIX_SOURCE set to one and _POSIX_C_SOURCE set to
+// 200809L, as well as enabling miscellaneous functions from BSD and
+// SVID. If more than one of these are defined, they accumulate. For
+// example __STRICT_ANSI__, _POSIX_SOURCE and _POSIX_C_SOURCE together
+// give you ISO C, 1003.1, and 1003.2, but nothing else.
+//
+// These are defined by this file and are used by the
+// header files to decide what to declare or define:
+//
+// __GLIBC_USE (F) Define things from feature set F. This is defined
+// to 1 or 0; the subsequent macros are either defined
+// or undefined, and those tests should be moved to
+// __GLIBC_USE.
+// __USE_ISOC11 Define ISO C11 things.
+// __USE_ISOC99 Define ISO C99 things.
+// __USE_ISOC95 Define ISO C90 AMD1 (C95) things.
+// __USE_ISOCXX11 Define ISO C++11 things.
+// __USE_POSIX Define IEEE Std 1003.1 things.
+// __USE_POSIX2 Define IEEE Std 1003.2 things.
+// __USE_POSIX199309 Define IEEE Std 1003.1, and .1b things.
+// __USE_POSIX199506 Define IEEE Std 1003.1, .1b, .1c and .1i things.
+// __USE_XOPEN Define XPG things.
+// __USE_XOPEN_EXTENDED Define X/Open Unix things.
+// __USE_UNIX98 Define Single Unix V2 things.
+// __USE_XOPEN2K Define XPG6 things.
+// __USE_XOPEN2KXSI Define XPG6 XSI things.
+// __USE_XOPEN2K8 Define XPG7 things.
+// __USE_XOPEN2K8XSI Define XPG7 XSI things.
+// __USE_LARGEFILE Define correct standard I/O things.
+// __USE_LARGEFILE64 Define LFS things with separate names.
+// __USE_FILE_OFFSET64 Define 64bit interface as default.
+// __USE_MISC Define things from 4.3BSD or System V Unix.
+// __USE_ATFILE Define *at interfaces and AT_* constants for them.
+// __USE_DYNAMIC_STACK_SIZE Define correct (but non compile-time constant)
+// MINSIGSTKSZ, SIGSTKSZ and PTHREAD_STACK_MIN.
+// __USE_GNU Define GNU extensions.
+// __USE_FORTIFY_LEVEL Additional security measures used, according to level.
+//
+// The macros `__GNU_LIBRARY__', `__GLIBC__', and `__GLIBC_MINOR__' are
+// defined by this file unconditionally. `__GNU_LIBRARY__' is provided
+// only for compatibility. All new code should use the other symbols
+// to test for features.
+//
+// All macros listed above as possibly being defined by this file are
+// explicitly undefined if they are not explicitly defined.
+// Feature-test macros that are not defined by the user or compiler
+// but are implied by the other feature-test macros defined (or by the
+// lack of any definitions) are defined by the file.
+//
+// ISO C feature test macros depend on the definition of the macro
+// when an affected header is included, not when the first system
+// header is included, and so they are handled in
+// <bits/libc-header-start.h>, which does not have a multiple include
+// guard. Feature test macros that can be handled from the first
+// system header included are handled here.
+
+// Undefine everything, so we get a clean slate.
+
+// Suppress kernel-name space pollution unless user expressedly asks
+// for it.
+
+// Convenience macro to test the version of gcc.
+// Use like this:
+// #if __GNUC_PREREQ (2,8)
+// ... code requiring gcc 2.8 or later ...
+// #endif
+// Note: only works for GCC 2.0 and later, because __GNUC_MINOR__ was
+// added in 2.0.
+
+// Similarly for clang. Features added to GCC after version 4.2 may
+// or may not also be available in clang, and clang's definitions of
+// __GNUC(_MINOR)__ are fixed at 4 and 2 respectively. Not all such
+// features can be queried via __has_extension/__has_feature.
+
+// Whether to use feature set F.
+
+// _BSD_SOURCE and _SVID_SOURCE are deprecated aliases for
+// _DEFAULT_SOURCE. If _DEFAULT_SOURCE is present we do not
+// issue a warning; the expectation is that the source is being
+// transitioned to use the new macro.
+
+// If _GNU_SOURCE was defined by the user, turn on all the other features.
+
+// If nothing (other than _GNU_SOURCE and _DEFAULT_SOURCE) is defined,
+// define _DEFAULT_SOURCE.
+
+// This is to enable the ISO C2X extension.
+
+// This is to enable the ISO C11 extension.
+
+// This is to enable the ISO C99 extension.
+
+// This is to enable the ISO C90 Amendment 1:1995 extension.
+
+// If none of the ANSI/POSIX macros are defined, or if _DEFAULT_SOURCE
+// is defined, use POSIX.1-2008 (or another version depending on
+// _XOPEN_SOURCE).
+
+// Some C libraries once required _REENTRANT and/or _THREAD_SAFE to be
+// defined in all multithreaded code. GNU libc has not required this
+// for many years. We now treat them as compatibility synonyms for
+// _POSIX_C_SOURCE=199506L, which is the earliest level of POSIX with
+// comprehensive support for multithreaded code. Using them never
+// lowers the selected level of POSIX conformance, only raises it.
+
+// Features part to handle 64-bit time_t support.
+// Copyright (C) 2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// We need to know the word size in order to check the time size.
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Bit size of the time_t type at glibc build time, RISC-V case.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// RV32 and RV64 both use 64-bit time_t
+
+// The function 'gets' existed in C89, but is impossible to use
+// safely. It has been removed from ISO C11 and ISO C++14. Note: for
+// compatibility with various implementations of <cstdio>, this test
+// must consider only the value of __cplusplus when compiling C++.
+
+// GNU formerly extended the scanf functions with modified format
+// specifiers %as, %aS, and %a[...] that allocate a buffer for the
+// input using malloc. This extension conflicts with ISO C99, which
+// defines %a as a standalone format specifier that reads a floating-
+// point number; moreover, POSIX.1-2008 provides the same feature
+// using the modifier letter 'm' instead (%ms, %mS, %m[...]).
+//
+// We now follow C99 unless GNU extensions are active and the compiler
+// is specifically in C89 or C++98 mode (strict or not). For
+// instance, with GCC, -std=gnu11 will have C99-compliant scanf with
+// or without -D_GNU_SOURCE, but -std=c89 -D_GNU_SOURCE will have the
+// old extension.
+
+// Get definitions of __STDC_* predefined macros, if the compiler has
+// not preincluded this header automatically.
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// This macro indicates that the installed library is the GNU C Library.
+// For historic reasons the value now is 6 and this will stay from now
+// on. The use of this variable is deprecated. Use __GLIBC__ and
+// __GLIBC_MINOR__ now (see below) when you want to test for a specific
+// GNU C library version and use the values in <gnu/lib-names.h> to get
+// the sonames of the shared libraries.
+
+// Major and minor version number of the GNU C library package. Use
+// these macros to test for features in specific releases.
+
+// This is here only because every header file already includes this one.
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// We are almost always included from features.h.
+
+// The GNU libc does not support any K&R compilers or the traditional mode
+// of ISO C compilers anymore. Check for some of the combinations not
+// supported anymore.
+
+// Some user header file might have defined this before.
+
+// Compilers that lack __has_attribute may object to
+// #if defined __has_attribute && __has_attribute (...)
+// even though they do not need to evaluate the right-hand side of the &&.
+// Similarly for __has_builtin, etc.
+
+// All functions, except those with callbacks or those that
+// synchronize memory, are leaf functions.
+
+// GCC can always grok prototypes. For C++ programs we add throw()
+// to help it optimize the function calls. But this only works with
+// gcc 2.8.x and egcs. For gcc 3.4 and up we even mark C functions
+// as non-throwing using a function attribute since programs can use
+// the -fexceptions options for C code as well.
+
+// These two macros are not used in glibc anymore. They are kept here
+// only because some other projects expect the macros to be defined.
+
+// For these things, GCC behaves the ANSI way normally,
+// and the non-ANSI way under -traditional.
+
+// This is not a typedef so `const __ptr_t' does the right thing.
+
+// C++ needs to know that types and declarations are C, not C++.
+
+// Fortify support.
+
+// Use __builtin_dynamic_object_size at _FORTIFY_SOURCE=3 when available.
+
+// Support for flexible arrays.
+// Headers that should use flexible arrays only if they're "real"
+// (e.g. only if they won't affect sizeof()) should test
+// #if __glibc_c99_flexarr_available.
+
+// __asm__ ("xyz") is used throughout the headers to rename functions
+// at the assembly language level. This is wrapped by the __REDIRECT
+// macro, in order to support compilers that can do this some other
+// way. When compilers don't support asm-names at all, we have to do
+// preprocessor tricks instead (which don't have exactly the right
+// semantics, but it's the best we can do).
+//
+// Example:
+// int __REDIRECT(setpgrp, (__pid_t pid, __pid_t pgrp), setpgid);
+
+//
+// #elif __SOME_OTHER_COMPILER__
+//
+// # define __REDIRECT(name, proto, alias) name proto; _Pragma("let " #name " = " #alias)
+
+// GCC and clang have various useful declarations that can be made with
+// the '__attribute__' syntax. All of the ways we use this do fine if
+// they are omitted for compilers that don't understand it.
+
+// At some point during the gcc 2.96 development the `malloc' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+
+// Tell the compiler which arguments to an allocation function
+// indicate the size of the allocation.
+
+// At some point during the gcc 2.96 development the `pure' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+
+// This declaration tells the compiler that the value is constant.
+
+// At some point during the gcc 3.1 development the `used' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+
+// Since version 3.2, gcc allows marking deprecated functions.
+
+// Since version 4.5, gcc also allows one to specify the message printed
+// when a deprecated function is used. clang claims to be gcc 4.2, but
+// may also support this feature.
+
+// At some point during the gcc 2.8 development the `format_arg' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+// If several `format_arg' attributes are given for the same function, in
+// gcc-3.0 and older, all but the last one are ignored. In newer gccs,
+// all designated arguments are considered.
+
+// At some point during the gcc 2.97 development the `strfmon' format
+// attribute for functions was introduced. We don't want to use it
+// unconditionally (although this would be possible) since it
+// generates warnings.
+
+// The nonnull function attribute marks pointer parameters that
+// must not be NULL.
+
+// The returns_nonnull function attribute marks the return type of the function
+// as always being non-null.
+
+// If fortification mode, we warn about unused results of certain
+// function calls which can lead to problems.
+
+// Forces a function to be always inlined.
+// The Linux kernel defines __always_inline in stddef.h (283d7573), and
+// it conflicts with this definition. Therefore undefine it first to
+// allow either header to be included first.
+
+// Associate error messages with the source location of the call site rather
+// than with the source location inside the function.
+
+// GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
+// inline semantics, unless -fgnu89-inline is used. Using __GNUC_STDC_INLINE__
+// or __GNUC_GNU_INLINE is not a good enough check for gcc because gcc versions
+// older than 4.3 may define these macros and still not guarantee GNU inlining
+// semantics.
+//
+// clang++ identifies itself as gcc-4.2, but has support for GNU inlining
+// semantics, that can be checked for by using the __GNUC_STDC_INLINE_ and
+// __GNUC_GNU_INLINE__ macro definitions.
+
+// GCC 4.3 and above allow passing all anonymous arguments of an
+// __extern_always_inline function to some other vararg function.
+
+// It is possible to compile containing GCC extensions even if GCC is
+// run in pedantic mode if the uses are carefully marked using the
+// `__extension__' keyword. But this is not generally available before
+// version 2.8.
+
+// __restrict is known in EGCS 1.2 and above, and in clang.
+// It works also in C++ mode (outside of arrays), but only when spelled
+// as '__restrict', not 'restrict'.
+
+// ISO C99 also allows to declare arrays as non-overlapping. The syntax is
+// array_name[restrict]
+// GCC 3.1 and clang support this.
+// This syntax is not usable in C++ mode.
+
+// Describes a char array whose address can safely be passed as the first
+// argument to strncpy and strncat, as the char array is not necessarily
+// a NUL-terminated string.
+
+// Undefine (also defined in libc-symbols.h).
+// Copies attributes from the declaration or type referenced by
+// the argument.
+
+// The #ifndef lets Gnulib avoid including these on non-glibc
+// platforms, where the includes typically do not exist.
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Properties of long double type. ldbl-128 version.
+// Copyright (C) 2016-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// long double is distinct from double, so there is nothing to
+// define here.
+
+// __glibc_macro_warning (MESSAGE) issues warning MESSAGE. This is
+// intended for use in preprocessor macros.
+//
+// Note: MESSAGE must be a _single_ string; concatenation of string
+// literals is not supported.
+
+// Generic selection (ISO C11) is a C-only feature, available in GCC
+// since version 4.9. Previous versions do not provide generic
+// selection, even though they might set __STDC_VERSION__ to 201112L,
+// when in -std=c11 mode. Thus, we must check for !defined __GNUC__
+// when testing __STDC_VERSION__ for generic selection support.
+// On the other hand, Clang also defines __GNUC__, so a clang-specific
+// check is required to enable the use of generic selection.
+
+// Designates a 1-based positional argument ref-index of pointer type
+// that can be used to access size-index elements of the pointed-to
+// array according to access mode, or at least one element when
+// size-index is not provided:
+// access (access-mode, <ref-index> [, <size-index>])
+
+// Designates dealloc as a function to call to deallocate objects
+// allocated by the declared function.
+
+// Specify that a function such as setjmp or vfork may return
+// twice.
+
+// If we don't have __REDIRECT, prototypes will be missing if
+// __USE_FILE_OFFSET64 but not __USE_LARGEFILE[64].
+
+// Decide whether we can define 'extern inline' functions in headers.
+
+// This is here only because every header file already includes this one.
+// Get the definitions of all the appropriate `__stub_FUNCTION' symbols.
+// <gnu/stubs.h> contains `#define __stub_FUNCTION' when FUNCTION is a stub
+// that will always return failure (and set errno to ENOSYS).
+// This file is automatically generated.
+// This file selects the right generated file of `__stub_FUNCTION' macros
+// based on the architecture being compiled for.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// This file is automatically generated.
+// It defines a symbol `__stub_FUNCTION' for each function
+// in the C library which is a stub, meaning it will fail
+// every time called, usually setting errno to ENOSYS.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Bit size of the time_t type at glibc build time, RISC-V case.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// RV32 and RV64 both use 64-bit time_t
+
+// Convenience types.
+type X__u_char = uint8 /* types.h:31:23 */
+type X__u_short = uint16 /* types.h:32:28 */
+type X__u_int = uint32 /* types.h:33:22 */
+type X__u_long = uint64 /* types.h:34:27 */
+
+// Fixed-size types, underlying types depend on word size and compiler.
+type X__int8_t = int8 /* types.h:37:21 */
+type X__uint8_t = uint8 /* types.h:38:23 */
+type X__int16_t = int16 /* types.h:39:26 */
+type X__uint16_t = uint16 /* types.h:40:28 */
+type X__int32_t = int32 /* types.h:41:20 */
+type X__uint32_t = uint32 /* types.h:42:22 */
+type X__int64_t = int64 /* types.h:44:25 */
+type X__uint64_t = uint64 /* types.h:45:27 */
+
+// Smallest types with at least a given width.
+type X__int_least8_t = X__int8_t /* types.h:52:18 */
+type X__uint_least8_t = X__uint8_t /* types.h:53:19 */
+type X__int_least16_t = X__int16_t /* types.h:54:19 */
+type X__uint_least16_t = X__uint16_t /* types.h:55:20 */
+type X__int_least32_t = X__int32_t /* types.h:56:19 */
+type X__uint_least32_t = X__uint32_t /* types.h:57:20 */
+type X__int_least64_t = X__int64_t /* types.h:58:19 */
+type X__uint_least64_t = X__uint64_t /* types.h:59:20 */
+
+// quad_t is also 64 bits.
+type X__quad_t = int64 /* types.h:63:18 */
+type X__u_quad_t = uint64 /* types.h:64:27 */
+
+// Largest integral types.
+type X__intmax_t = int64 /* types.h:72:18 */
+type X__uintmax_t = uint64 /* types.h:73:27 */
+
+// The machine-dependent file <bits/typesizes.h> defines __*_T_TYPE
+// macros for each of the OS types we define below. The definitions
+// of those macros must use the following macros for underlying types.
+// We define __S<SIZE>_TYPE and __U<SIZE>_TYPE for the signed and unsigned
+// variants of each of the following integer types on this machine.
+//
+// 16 -- "natural" 16-bit type (always short)
+// 32 -- "natural" 32-bit type (always int)
+// 64 -- "natural" 64-bit type (long or long long)
+// LONG32 -- 32-bit type, traditionally long
+// QUAD -- 64-bit type, traditionally long long
+// WORD -- natural type of __WORDSIZE bits (int or long)
+// LONGWORD -- type of __WORDSIZE bits, traditionally long
+//
+// We distinguish WORD/LONGWORD, 32/LONG32, and 64/QUAD so that the
+// conventional uses of `long' or `long long' type modifiers match the
+// types we define, even when a less-adorned type would be the same size.
+// This matters for (somewhat) portably writing printf/scanf formats for
+// these types, where using the appropriate l or ll format modifiers can
+// make the typedefs and the formats match up across all GNU platforms. If
+// we used `long' when it's 64 bits where `long long' is expected, then the
+// compiler would warn about the formats not matching the argument types,
+// and the programmer changing them to shut up the compiler would break the
+// program's portability.
+//
+// Here we assume what is presently the case in all the GCC configurations
+// we support: long long is always 64 bits, long is always word/address size,
+// and int is always 32 bits.
+
+// No need to mark the typedef with __extension__.
+// bits/typesizes.h -- underlying types for *_t. For the generic Linux ABI.
+// Copyright (C) 2011-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+// Contributed by Chris Metcalf <cmetcalf@tilera.com>, 2011.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// See <bits/types.h> for the meaning of these macros. This file exists so
+// that <bits/types.h> need not vary across different GNU platforms.
+
+// Tell the libc code that off_t and off64_t are actually the same type
+// for all ABI purposes, even if possibly expressed as different base types
+// for C type-checking purposes.
+
+// Same for ino_t and ino64_t.
+
+// And for __rlim_t and __rlim64_t.
+
+// And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t.
+
+// And for getitimer, setitimer and rusage
+
+// Number of descriptors that can fit in an `fd_set'.
+
+// bits/time64.h -- underlying types for __time64_t. RISC-V version.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Define __TIME64_T_TYPE so that it is always a 64-bit type.
+
+// If we already have 64-bit time type then use it.
+
+type X__dev_t = uint64 /* types.h:145:25 */ // Type of device numbers.
+type X__uid_t = uint32 /* types.h:146:25 */ // Type of user identifications.
+type X__gid_t = uint32 /* types.h:147:25 */ // Type of group identifications.
+type X__ino_t = uint64 /* types.h:148:25 */ // Type of file serial numbers.
+type X__ino64_t = uint64 /* types.h:149:27 */ // Type of file serial numbers (LFS).
+type X__mode_t = uint32 /* types.h:150:26 */ // Type of file attribute bitmasks.
+type X__nlink_t = uint32 /* types.h:151:27 */ // Type of file link counts.
+type X__off_t = int64 /* types.h:152:25 */ // Type of file sizes and offsets.
+type X__off64_t = int64 /* types.h:153:27 */ // Type of file sizes and offsets (LFS).
+type X__pid_t = int32 /* types.h:154:25 */ // Type of process identifications.
+type X__fsid_t = struct{ F__val [2]int32 } /* types.h:155:26 */ // Type of file system IDs.
+type X__clock_t = int64 /* types.h:156:27 */ // Type of CPU usage counts.
+type X__rlim_t = uint64 /* types.h:157:26 */ // Type for resource measurement.
+type X__rlim64_t = uint64 /* types.h:158:28 */ // Type for resource measurement (LFS).
+type X__id_t = uint32 /* types.h:159:24 */ // General type for IDs.
+type X__time_t = int64 /* types.h:160:26 */ // Seconds since the Epoch.
+type X__useconds_t = uint32 /* types.h:161:30 */ // Count of microseconds.
+type X__suseconds_t = int64 /* types.h:162:31 */ // Signed count of microseconds.
+type X__suseconds64_t = int64 /* types.h:163:33 */
+
+type X__daddr_t = int32 /* types.h:165:27 */ // The type of a disk address.
+type X__key_t = int32 /* types.h:166:25 */ // Type of an IPC key.
+
+// Clock ID used in clock and timer functions.
+type X__clockid_t = int32 /* types.h:169:29 */
+
+// Timer ID returned by `timer_create'.
+type X__timer_t = uintptr /* types.h:172:12 */
+
+// Type to represent block size.
+type X__blksize_t = int32 /* types.h:175:29 */
+
+// Types from the Large File Support interface.
+
+// Type to count number of disk blocks.
+type X__blkcnt_t = int64 /* types.h:180:28 */
+type X__blkcnt64_t = int64 /* types.h:181:30 */
+
+// Type to count file system blocks.
+type X__fsblkcnt_t = uint64 /* types.h:184:30 */
+type X__fsblkcnt64_t = uint64 /* types.h:185:32 */
+
+// Type to count file system nodes.
+type X__fsfilcnt_t = uint64 /* types.h:188:30 */
+type X__fsfilcnt64_t = uint64 /* types.h:189:32 */
+
+// Type of miscellaneous file system fields.
+type X__fsword_t = int64 /* types.h:192:28 */
+
+type X__ssize_t = int64 /* types.h:194:27 */ // Type of a byte count, or error.
+
+// Signed long type used in system calls.
+type X__syscall_slong_t = int64 /* types.h:197:33 */
+// Unsigned long type used in system calls.
+type X__syscall_ulong_t = uint64 /* types.h:199:33 */
+
+// These few don't really vary by system, they always correspond
+// to one of the other defined types.
+type X__loff_t = X__off64_t /* types.h:203:19 */ // Type of file sizes and offsets (LFS).
+type X__caddr_t = uintptr /* types.h:204:14 */
+
+// Duplicates info from stdint.h but this is used in unistd.h.
+type X__intptr_t = int64 /* types.h:207:25 */
+
+// Duplicate info from sys/socket.h.
+type X__socklen_t = uint32 /* types.h:210:23 */
+
+// C99: An integer type that can be accessed as an atomic entity,
+// even in the presence of asynchronous interrupts.
+// It is not currently necessary for this to be machine-specific.
+type X__sig_atomic_t = int32 /* types.h:215:13 */
+
+// Seconds since the Epoch, visible to user code when time_t is too
+// narrow only for consistency with the old way of widening too-narrow
+// types. User code should never use __time64_t.
+
+type U_char = X__u_char /* types.h:33:18 */
+type U_short = X__u_short /* types.h:34:19 */
+type U_int = X__u_int /* types.h:35:17 */
+type U_long = X__u_long /* types.h:36:18 */
+type Quad_t = X__quad_t /* types.h:37:18 */
+type U_quad_t = X__u_quad_t /* types.h:38:20 */
+type Fsid_t = X__fsid_t /* types.h:39:18 */
+type Loff_t = X__loff_t /* types.h:42:18 */
+
+type Ino_t = X__ino64_t /* types.h:49:19 */
+
+type Dev_t = X__dev_t /* types.h:59:17 */
+
+type Gid_t = X__gid_t /* types.h:64:17 */
+
+type Mode_t = X__mode_t /* types.h:69:18 */
+
+type Nlink_t = X__nlink_t /* types.h:74:19 */
+
+type Uid_t = X__uid_t /* types.h:79:17 */
+
+type Off_t = X__off64_t /* types.h:87:19 */
+
+type Pid_t = X__pid_t /* types.h:97:17 */
+
+type Id_t = X__id_t /* types.h:103:16 */
+
+type Ssize_t = X__ssize_t /* types.h:108:19 */
+
+type Daddr_t = X__daddr_t /* types.h:114:19 */
+type Caddr_t = X__caddr_t /* types.h:115:19 */
+
+type Key_t = X__key_t /* types.h:121:17 */
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Returned by `clock'.
+type Clock_t = X__clock_t /* clock_t.h:7:19 */
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Clock ID used in clock and timer functions.
+type Clockid_t = X__clockid_t /* clockid_t.h:7:21 */
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Returned by `time'.
+type Time_t = X__time_t /* time_t.h:10:18 */
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Timer ID returned by `timer_create'.
+type Timer_t = X__timer_t /* timer_t.h:7:19 */
+
+// Wide character type.
+// Locale-writers should change this as necessary to
+// be big enough to hold unique values not between 0 and 127,
+// and not (wchar_t) -1, for each defined multibyte character.
+
+// Define this type if we are doing the whole job,
+// or if we want this type in particular.
+
+// A null pointer constant.
+
+// Old compatibility names for C types.
+type Ulong = uint64 /* types.h:148:27 */
+type Ushort = uint16 /* types.h:149:28 */
+type Uint = uint32 /* types.h:150:22 */
+
+// These size-specific names are used by some of the inet code.
+
+// Define intN_t types.
+// Copyright (C) 2017-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+type Int8_t = X__int8_t /* stdint-intn.h:24:18 */
+type Int16_t = X__int16_t /* stdint-intn.h:25:19 */
+type Int32_t = X__int32_t /* stdint-intn.h:26:19 */
+type Int64_t = X__int64_t /* stdint-intn.h:27:19 */
+
+// These were defined by ISO C without the first `_'.
+type U_int8_t = X__uint8_t /* types.h:158:19 */
+type U_int16_t = X__uint16_t /* types.h:159:20 */
+type U_int32_t = X__uint32_t /* types.h:160:20 */
+type U_int64_t = X__uint64_t /* types.h:161:20 */
+
+type Register_t = int32 /* types.h:164:13 */
+
+// It also defines `fd_set' and the FD_* macros for `select'.
+// `fd_set' type and related macros, and `select'/`pselect' declarations.
+// Copyright (C) 1996-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// POSIX 1003.1g: 6.2 Select from File Descriptor Sets <sys/select.h>
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Get definition of needed basic types.
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Get __FD_* definitions.
+// Copyright (C) 1997-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// We don't use `memset' because this would require a prototype and
+// the array isn't too big.
+
+// Get sigset_t.
+
+type X__sigset_t = struct{ F__val [16]uint64 } /* __sigset_t.h:8:3 */
+
+// A set of signals to be blocked, unblocked, or waited for.
+type Sigset_t = X__sigset_t /* sigset_t.h:7:20 */
+
+// Get definition of timer specification structures.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// A time value that is accurate to the nearest
+// microsecond but also has a range of years.
+type Timeval = struct {
+ Ftv_sec X__time_t
+ Ftv_usec X__suseconds_t
+} /* struct_timeval.h:8:1 */
+
+// NB: Include guard matches what <linux/time.h> uses.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Endian macros for string.h functions
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <http://www.gnu.org/licenses/>.
+
+// POSIX.1b structure for a time value. This is like a `struct timeval' but
+// has nanoseconds instead of microseconds.
+type Timespec = struct {
+ Ftv_sec X__time_t
+ Ftv_nsec X__syscall_slong_t
+} /* struct_timespec.h:11:1 */
+
+type Suseconds_t = X__suseconds_t /* select.h:43:23 */
+
+// The fd_set member is required to be an array of longs.
+type X__fd_mask = int64 /* select.h:49:18 */
+
+// Some versions of <linux/posix_types.h> define this macros.
+// It's easier to assume 8-bit bytes than to get CHAR_BIT.
+
+// fd_set for select and pselect.
+type Fd_set = struct{ F__fds_bits [16]X__fd_mask } /* select.h:70:5 */
+
+// Maximum number of file descriptors in `fd_set'.
+
+// Sometimes the fd_set member is assumed to have this type.
+type Fd_mask = X__fd_mask /* select.h:77:19 */
+
+// Define some inlines helping to catch common problems.
+
+type Blksize_t = X__blksize_t /* types.h:185:21 */
+
+// Types from the Large File Support interface.
+type Blkcnt_t = X__blkcnt64_t /* types.h:205:22 */ // Type to count number of disk blocks.
+type Fsblkcnt_t = X__fsblkcnt64_t /* types.h:209:24 */ // Type to count file system blocks.
+type Fsfilcnt_t = X__fsfilcnt64_t /* types.h:213:24 */ // Type to count file system inodes.
+
+// Now add the thread types.
+// Declaration of common pthread types for all architectures.
+// Copyright (C) 2017-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// For internal mutex and condition variable definitions.
+// Common threading primitives definitions for both POSIX and C11.
+// Copyright (C) 2017-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Arch-specific definitions. Each architecture must define the following
+// macros to define the expected sizes of pthread data types:
+//
+// __SIZEOF_PTHREAD_ATTR_T - size of pthread_attr_t.
+// __SIZEOF_PTHREAD_MUTEX_T - size of pthread_mutex_t.
+// __SIZEOF_PTHREAD_MUTEXATTR_T - size of pthread_mutexattr_t.
+// __SIZEOF_PTHREAD_COND_T - size of pthread_cond_t.
+// __SIZEOF_PTHREAD_CONDATTR_T - size of pthread_condattr_t.
+// __SIZEOF_PTHREAD_RWLOCK_T - size of pthread_rwlock_t.
+// __SIZEOF_PTHREAD_RWLOCKATTR_T - size of pthread_rwlockattr_t.
+// __SIZEOF_PTHREAD_BARRIER_T - size of pthread_barrier_t.
+// __SIZEOF_PTHREAD_BARRIERATTR_T - size of pthread_barrierattr_t.
+//
+// The additional macro defines any constraint for the lock alignment
+// inside the thread structures:
+//
+// __LOCK_ALIGNMENT - for internal lock/futex usage.
+//
+// Same idea but for the once locking primitive:
+//
+// __ONCE_ALIGNMENT - for pthread_once_t/once_flag definition.
+
+// Machine-specific pthread type layouts. RISC-V version.
+// Copyright (C) 2011-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Endian macros for string.h functions
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <http://www.gnu.org/licenses/>.
+
+// Common definition of pthread_mutex_t.
+
+type X__pthread_internal_list = struct {
+ F__prev uintptr
+ F__next uintptr
+} /* thread-shared-types.h:49:9 */
+
+// Type to count file system inodes.
+
+// Now add the thread types.
+// Declaration of common pthread types for all architectures.
+// Copyright (C) 2017-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// For internal mutex and condition variable definitions.
+// Common threading primitives definitions for both POSIX and C11.
+// Copyright (C) 2017-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Arch-specific definitions. Each architecture must define the following
+// macros to define the expected sizes of pthread data types:
+//
+// __SIZEOF_PTHREAD_ATTR_T - size of pthread_attr_t.
+// __SIZEOF_PTHREAD_MUTEX_T - size of pthread_mutex_t.
+// __SIZEOF_PTHREAD_MUTEXATTR_T - size of pthread_mutexattr_t.
+// __SIZEOF_PTHREAD_COND_T - size of pthread_cond_t.
+// __SIZEOF_PTHREAD_CONDATTR_T - size of pthread_condattr_t.
+// __SIZEOF_PTHREAD_RWLOCK_T - size of pthread_rwlock_t.
+// __SIZEOF_PTHREAD_RWLOCKATTR_T - size of pthread_rwlockattr_t.
+// __SIZEOF_PTHREAD_BARRIER_T - size of pthread_barrier_t.
+// __SIZEOF_PTHREAD_BARRIERATTR_T - size of pthread_barrierattr_t.
+//
+// The additional macro defines any constraint for the lock alignment
+// inside the thread structures:
+//
+// __LOCK_ALIGNMENT - for internal lock/futex usage.
+//
+// Same idea but for the once locking primitive:
+//
+// __ONCE_ALIGNMENT - for pthread_once_t/once_flag definition.
+
+// Machine-specific pthread type layouts. RISC-V version.
+// Copyright (C) 2011-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Endian macros for string.h functions
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <http://www.gnu.org/licenses/>.
+
+// Common definition of pthread_mutex_t.
+
+type X__pthread_list_t = X__pthread_internal_list /* thread-shared-types.h:53:3 */
+
+type X__pthread_internal_slist = struct{ F__next uintptr } /* thread-shared-types.h:55:9 */
+
+type X__pthread_slist_t = X__pthread_internal_slist /* thread-shared-types.h:58:3 */
+
+// Arch-specific mutex definitions. A generic implementation is provided
+// by sysdeps/nptl/bits/struct_mutex.h. If required, an architecture
+// can override it by defining:
+//
+// 1. struct __pthread_mutex_s (used on both pthread_mutex_t and mtx_t
+// definition). It should contains at least the internal members
+// defined in the generic version.
+//
+// 2. __LOCK_ALIGNMENT for any extra attribute for internal lock used with
+// atomic operations.
+//
+// 3. The macro __PTHREAD_MUTEX_INITIALIZER used for static initialization.
+// It should initialize the mutex internal flag.
+
+// Default mutex implementation struct definitions.
+// Copyright (C) 2019-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <http://www.gnu.org/licenses/>.
+
+// Generic struct for both POSIX and C11 mutexes. New ports are expected
+// to use the default layout, however architecture can redefine it to
+// add arch-specific extension (such as lock-elision). The struct have
+// a size of 32 bytes on LP32 and 40 bytes on LP64 architectures.
+
+type X__pthread_mutex_s = struct {
+ F__lock int32
+ F__count uint32
+ F__owner int32
+ F__nusers uint32
+ F__kind int32
+ F__spins int32
+ F__list X__pthread_list_t
+} /* struct_mutex.h:27:1 */
+
+// Arch-sepecific read-write lock definitions. A generic implementation is
+// provided by struct_rwlock.h. If required, an architecture can override it
+// by defining:
+//
+// 1. struct __pthread_rwlock_arch_t (used on pthread_rwlock_t definition).
+// It should contain at least the internal members defined in the
+// generic version.
+//
+// 2. The macro __PTHREAD_RWLOCK_INITIALIZER used for static initialization.
+// It should initialize the rwlock internal type.
+
+// RISC-V internal rwlock struct definitions.
+// Copyright (C) 2019-2021 Free Software Foundation, Inc.
+//
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// There is a lot of padding in this structure. While it's not strictly
+// necessary on RISC-V, we're going to leave it in to be on the safe side in
+// case it's needed in the future. Most other architectures have the padding,
+// so this gives us the same extensibility as everyone else has.
+type X__pthread_rwlock_arch_t = struct {
+ F__readers uint32
+ F__writers uint32
+ F__wrphase_futex uint32
+ F__writers_futex uint32
+ F__pad3 uint32
+ F__pad4 uint32
+ F__cur_writer int32
+ F__shared int32
+ F__pad1 uint64
+ F__pad2 uint64
+ F__flags uint32
+ F__ccgo_pad1 [4]byte
+} /* struct_rwlock.h:27:1 */
+
+// Common definition of pthread_cond_t.
+
+type X__pthread_cond_s = struct {
+ F__0 struct{ F__wseq uint64 }
+ F__8 struct{ F__g1_start uint64 }
+ F__g_refs [2]uint32
+ F__g_size [2]uint32
+ F__g1_orig_size uint32
+ F__wrefs uint32
+ F__g_signals [2]uint32
+} /* thread-shared-types.h:92:1 */
+
+type X__tss_t = uint32 /* thread-shared-types.h:119:22 */
+type X__thrd_t = uint64 /* thread-shared-types.h:120:27 */
+
+type X__once_flag = struct{ F__data int32 } /* thread-shared-types.h:125:3 */
+
+// Thread identifiers. The structure of the attribute type is not
+// exposed on purpose.
+type Pthread_t = uint64 /* pthreadtypes.h:27:27 */
+
+// Data structures for mutex handling. The structure of the attribute
+// type is not exposed on purpose.
+type Pthread_mutexattr_t = struct {
+ F__ccgo_pad1 [0]uint32
+ F__size [4]uint8
+} /* pthreadtypes.h:36:3 */
+
+// Data structure for condition variable handling. The structure of
+// the attribute type is not exposed on purpose.
+type Pthread_condattr_t = struct {
+ F__ccgo_pad1 [0]uint32
+ F__size [4]uint8
+} /* pthreadtypes.h:45:3 */
+
+// Keys for thread-specific data
+type Pthread_key_t = uint32 /* pthreadtypes.h:49:22 */
+
+// Once-only execution
+type Pthread_once_t = int32 /* pthreadtypes.h:53:30 */
+
+type Pthread_attr_t1 = struct {
+ F__ccgo_pad1 [0]uint64
+ F__size [56]uint8
+} /* pthreadtypes.h:56:1 */
+
+type Pthread_attr_t = Pthread_attr_t1 /* pthreadtypes.h:62:30 */
+
+type Pthread_mutex_t = struct{ F__data X__pthread_mutex_s } /* pthreadtypes.h:72:3 */
+
+type Pthread_cond_t = struct{ F__data X__pthread_cond_s } /* pthreadtypes.h:80:3 */
+
+// Data structure for reader-writer lock variable handling. The
+// structure of the attribute type is deliberately not exposed.
+type Pthread_rwlock_t = struct{ F__data X__pthread_rwlock_arch_t } /* pthreadtypes.h:91:3 */
+
+type Pthread_rwlockattr_t = struct {
+ F__ccgo_pad1 [0]uint64
+ F__size [8]uint8
+} /* pthreadtypes.h:97:3 */
+
+// POSIX spinlock data type.
+type Pthread_spinlock_t = int32 /* pthreadtypes.h:103:22 */
+
+// POSIX barriers data type. The structure of the type is
+// deliberately not exposed.
+type Pthread_barrier_t = struct {
+ F__ccgo_pad1 [0]uint64
+ F__size [32]uint8
+} /* pthreadtypes.h:112:3 */
+
+type Pthread_barrierattr_t = struct {
+ F__ccgo_pad1 [0]uint32
+ F__size [4]uint8
+} /* pthreadtypes.h:118:3 */
+
+var _ uint8 /* gen.c:2:13: */
diff --git a/vendor/modernc.org/libc/termios/capi_linux_riscv64.go b/vendor/modernc.org/libc/termios/capi_linux_riscv64.go
new file mode 100644
index 00000000..6edfd291
--- /dev/null
+++ b/vendor/modernc.org/libc/termios/capi_linux_riscv64.go
@@ -0,0 +1,5 @@
+// Code generated by 'ccgo termios/gen.c -crt-import-path -export-defines -export-enums -export-externs X -export-fields F -export-structs -export-typedefs -header -hide _OSSwapInt16,_OSSwapInt32,_OSSwapInt64 -o termios/termios_linux_riscv64.go -pkgname termios', DO NOT EDIT.
+
+package termios
+
+var CAPI = map[string]struct{}{}
diff --git a/vendor/modernc.org/libc/termios/termios_linux_riscv64.go b/vendor/modernc.org/libc/termios/termios_linux_riscv64.go
new file mode 100644
index 00000000..138f40ea
--- /dev/null
+++ b/vendor/modernc.org/libc/termios/termios_linux_riscv64.go
@@ -0,0 +1,1194 @@
+// Code generated by 'ccgo termios/gen.c -crt-import-path "" -export-defines "" -export-enums "" -export-externs X -export-fields F -export-structs "" -export-typedefs "" -header -hide _OSSwapInt16,_OSSwapInt32,_OSSwapInt64 -o termios/termios_linux_riscv64.go -pkgname termios', DO NOT EDIT.
+
+package termios
+
+import (
+ "math"
+ "reflect"
+ "sync/atomic"
+ "unsafe"
+)
+
+var _ = math.Pi
+var _ reflect.Kind
+var _ atomic.Value
+var _ unsafe.Pointer
+
+const (
+ B0 = 0000000
+ B1000000 = 0010010
+ B110 = 0000003
+ B115200 = 0010002
+ B1152000 = 0010011
+ B1200 = 0000011
+ B134 = 0000004
+ B150 = 0000005
+ B1500000 = 0010012
+ B1800 = 0000012
+ B19200 = 0000016
+ B200 = 0000006
+ B2000000 = 0010013
+ B230400 = 0010003
+ B2400 = 0000013
+ B2500000 = 0010014
+ B300 = 0000007
+ B3000000 = 0010015
+ B3500000 = 0010016
+ B38400 = 0000017
+ B4000000 = 0010017
+ B460800 = 0010004
+ B4800 = 0000014
+ B50 = 0000001
+ B500000 = 0010005
+ B57600 = 0010001
+ B576000 = 0010006
+ B600 = 0000010
+ B75 = 0000002
+ B921600 = 0010007
+ B9600 = 0000015
+ BRKINT = 0000002
+ BS0 = 0000000
+ BS1 = 0020000
+ BSDLY = 0020000
+ CBAUD = 000000010017
+ CBAUDEX = 000000010000
+ CBRK = 0
+ CDISCARD = 15
+ CDSUSP = 25
+ CEOF = 4
+ CEOL = 0
+ CEOT = 4
+ CERASE = 0177
+ CFLUSH = 15
+ CIBAUD = 002003600000
+ CINTR = 3
+ CKILL = 21
+ CLNEXT = 22
+ CLOCAL = 0004000
+ CMIN = 1
+ CMSPAR = 010000000000
+ CQUIT = 034
+ CR0 = 0000000
+ CR1 = 0001000
+ CR2 = 0002000
+ CR3 = 0003000
+ CRDLY = 0003000
+ CREAD = 0000200
+ CREPRINT = 18
+ CRPRNT = 18
+ CRTSCTS = 020000000000
+ CS5 = 0000000
+ CS6 = 0000020
+ CS7 = 0000040
+ CS8 = 0000060
+ CSIZE = 0000060
+ CSTART = 17
+ CSTATUS = 0
+ CSTOP = 19
+ CSTOPB = 0000100
+ CSUSP = 26
+ CTIME = 0
+ CWERASE = 23
+ ECHO = 0000010
+ ECHOCTL = 0001000
+ ECHOE = 0000020
+ ECHOK = 0000040
+ ECHOKE = 0004000
+ ECHONL = 0000100
+ ECHOPRT = 0002000
+ EXTA = 14
+ EXTB = 15
+ EXTPROC = 0200000
+ FF0 = 0000000
+ FF1 = 0100000
+ FFDLY = 0100000
+ FLUSHO = 0010000
+ HUPCL = 0002000
+ ICANON = 0000002
+ ICRNL = 0000400
+ IEXTEN = 0100000
+ IGNBRK = 0000001
+ IGNCR = 0000200
+ IGNPAR = 0000004
+ IMAXBEL = 0020000
+ INLCR = 0000100
+ INPCK = 0000020
+ ISIG = 0000001
+ ISTRIP = 0000040
+ IUCLC = 0001000
+ IUTF8 = 0040000
+ IXANY = 0004000
+ IXOFF = 0010000
+ IXON = 0002000
+ NCCS = 32
+ NL0 = 0000000
+ NL1 = 0000400
+ NLDLY = 0000400
+ NOFLSH = 0000200
+ OCRNL = 0000010
+ OFDEL = 0000200
+ OFILL = 0000100
+ OLCUC = 0000002
+ ONLCR = 0000004
+ ONLRET = 0000040
+ ONOCR = 0000020
+ OPOST = 0000001
+ PARENB = 0000400
+ PARMRK = 0000010
+ PARODD = 0001000
+ PENDIN = 0040000
+ TAB0 = 0000000
+ TAB1 = 0004000
+ TAB2 = 0010000
+ TAB3 = 0014000
+ TABDLY = 0014000
+ TCIFLUSH = 0
+ TCIOFF = 2
+ TCIOFLUSH = 2
+ TCION = 3
+ TCOFLUSH = 1
+ TCOOFF = 0
+ TCOON = 1
+ TCSADRAIN = 1
+ TCSAFLUSH = 2
+ TCSANOW = 0
+ TIOCSER_TEMT = 0x01
+ TOSTOP = 0000400
+ TTYDEF_CFLAG = 1440
+ TTYDEF_IFLAG = 11554
+ TTYDEF_LFLAG = 35355
+ TTYDEF_OFLAG = 6149
+ TTYDEF_SPEED = 13
+ VDISCARD = 13
+ VEOF = 4
+ VEOL = 11
+ VEOL2 = 16
+ VERASE = 2
+ VINTR = 0
+ VKILL = 3
+ VLNEXT = 15
+ VMIN = 6
+ VQUIT = 1
+ VREPRINT = 12
+ VSTART = 8
+ VSTOP = 9
+ VSUSP = 10
+ VSWTC = 7
+ VT0 = 0000000
+ VT1 = 0040000
+ VTDLY = 0040000
+ VTIME = 5
+ VWERASE = 14
+ XCASE = 0000004
+ XTABS = 0014000
+ X_ATFILE_SOURCE = 1
+ X_BITS_TIME64_H = 1
+ X_BITS_TYPESIZES_H = 1
+ X_BITS_TYPES_H = 1
+ X_DEFAULT_SOURCE = 1
+ X_FEATURES_H = 1
+ X_FILE_OFFSET_BITS = 64
+ X_HAVE_STRUCT_TERMIOS_C_ISPEED = 1
+ X_HAVE_STRUCT_TERMIOS_C_OSPEED = 1
+ X_LP64 = 1
+ X_POSIX_C_SOURCE = 200809
+ X_POSIX_SOURCE = 1
+ X_STDC_PREDEF_H = 1
+ X_SYS_CDEFS_H = 1
+ X_SYS_TTYDEFAULTS_H_ = 0
+ X_TERMIOS_H = 1
+ Linux = 1
+ Unix = 1
+)
+
+type Ptrdiff_t = int64 /* <builtin>:3:26 */
+
+type Size_t = uint64 /* <builtin>:9:23 */
+
+type Wchar_t = int32 /* <builtin>:15:24 */
+
+type X__int128_t = struct {
+ Flo int64
+ Fhi int64
+} /* <builtin>:21:43 */ // must match modernc.org/mathutil.Int128
+type X__uint128_t = struct {
+ Flo uint64
+ Fhi uint64
+} /* <builtin>:22:44 */ // must match modernc.org/mathutil.Int128
+
+type X__builtin_va_list = uintptr /* <builtin>:46:14 */
+type X__float128 = float64 /* <builtin>:47:21 */
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// POSIX Standard: 7.1-2 General Terminal Interface <termios.h>
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// These are defined by the user (or the compiler)
+// to specify the desired environment:
+//
+// __STRICT_ANSI__ ISO Standard C.
+// _ISOC99_SOURCE Extensions to ISO C89 from ISO C99.
+// _ISOC11_SOURCE Extensions to ISO C99 from ISO C11.
+// _ISOC2X_SOURCE Extensions to ISO C99 from ISO C2X.
+// __STDC_WANT_LIB_EXT2__
+// Extensions to ISO C99 from TR 27431-2:2010.
+// __STDC_WANT_IEC_60559_BFP_EXT__
+// Extensions to ISO C11 from TS 18661-1:2014.
+// __STDC_WANT_IEC_60559_FUNCS_EXT__
+// Extensions to ISO C11 from TS 18661-4:2015.
+// __STDC_WANT_IEC_60559_TYPES_EXT__
+// Extensions to ISO C11 from TS 18661-3:2015.
+// __STDC_WANT_IEC_60559_EXT__
+// ISO C2X interfaces defined only in Annex F.
+//
+// _POSIX_SOURCE IEEE Std 1003.1.
+// _POSIX_C_SOURCE If ==1, like _POSIX_SOURCE; if >=2 add IEEE Std 1003.2;
+// if >=199309L, add IEEE Std 1003.1b-1993;
+// if >=199506L, add IEEE Std 1003.1c-1995;
+// if >=200112L, all of IEEE 1003.1-2004
+// if >=200809L, all of IEEE 1003.1-2008
+// _XOPEN_SOURCE Includes POSIX and XPG things. Set to 500 if
+// Single Unix conformance is wanted, to 600 for the
+// sixth revision, to 700 for the seventh revision.
+// _XOPEN_SOURCE_EXTENDED XPG things and X/Open Unix extensions.
+// _LARGEFILE_SOURCE Some more functions for correct standard I/O.
+// _LARGEFILE64_SOURCE Additional functionality from LFS for large files.
+// _FILE_OFFSET_BITS=N Select default filesystem interface.
+// _ATFILE_SOURCE Additional *at interfaces.
+// _DYNAMIC_STACK_SIZE_SOURCE Select correct (but non compile-time constant)
+// MINSIGSTKSZ, SIGSTKSZ and PTHREAD_STACK_MIN.
+// _GNU_SOURCE All of the above, plus GNU extensions.
+// _DEFAULT_SOURCE The default set of features (taking precedence over
+// __STRICT_ANSI__).
+//
+// _FORTIFY_SOURCE Add security hardening to many library functions.
+// Set to 1 or 2; 2 performs stricter checks than 1.
+//
+// _REENTRANT, _THREAD_SAFE
+// Obsolete; equivalent to _POSIX_C_SOURCE=199506L.
+//
+// The `-ansi' switch to the GNU C compiler, and standards conformance
+// options such as `-std=c99', define __STRICT_ANSI__. If none of
+// these are defined, or if _DEFAULT_SOURCE is defined, the default is
+// to have _POSIX_SOURCE set to one and _POSIX_C_SOURCE set to
+// 200809L, as well as enabling miscellaneous functions from BSD and
+// SVID. If more than one of these are defined, they accumulate. For
+// example __STRICT_ANSI__, _POSIX_SOURCE and _POSIX_C_SOURCE together
+// give you ISO C, 1003.1, and 1003.2, but nothing else.
+//
+// These are defined by this file and are used by the
+// header files to decide what to declare or define:
+//
+// __GLIBC_USE (F) Define things from feature set F. This is defined
+// to 1 or 0; the subsequent macros are either defined
+// or undefined, and those tests should be moved to
+// __GLIBC_USE.
+// __USE_ISOC11 Define ISO C11 things.
+// __USE_ISOC99 Define ISO C99 things.
+// __USE_ISOC95 Define ISO C90 AMD1 (C95) things.
+// __USE_ISOCXX11 Define ISO C++11 things.
+// __USE_POSIX Define IEEE Std 1003.1 things.
+// __USE_POSIX2 Define IEEE Std 1003.2 things.
+// __USE_POSIX199309 Define IEEE Std 1003.1, and .1b things.
+// __USE_POSIX199506 Define IEEE Std 1003.1, .1b, .1c and .1i things.
+// __USE_XOPEN Define XPG things.
+// __USE_XOPEN_EXTENDED Define X/Open Unix things.
+// __USE_UNIX98 Define Single Unix V2 things.
+// __USE_XOPEN2K Define XPG6 things.
+// __USE_XOPEN2KXSI Define XPG6 XSI things.
+// __USE_XOPEN2K8 Define XPG7 things.
+// __USE_XOPEN2K8XSI Define XPG7 XSI things.
+// __USE_LARGEFILE Define correct standard I/O things.
+// __USE_LARGEFILE64 Define LFS things with separate names.
+// __USE_FILE_OFFSET64 Define 64bit interface as default.
+// __USE_MISC Define things from 4.3BSD or System V Unix.
+// __USE_ATFILE Define *at interfaces and AT_* constants for them.
+// __USE_DYNAMIC_STACK_SIZE Define correct (but non compile-time constant)
+// MINSIGSTKSZ, SIGSTKSZ and PTHREAD_STACK_MIN.
+// __USE_GNU Define GNU extensions.
+// __USE_FORTIFY_LEVEL Additional security measures used, according to level.
+//
+// The macros `__GNU_LIBRARY__', `__GLIBC__', and `__GLIBC_MINOR__' are
+// defined by this file unconditionally. `__GNU_LIBRARY__' is provided
+// only for compatibility. All new code should use the other symbols
+// to test for features.
+//
+// All macros listed above as possibly being defined by this file are
+// explicitly undefined if they are not explicitly defined.
+// Feature-test macros that are not defined by the user or compiler
+// but are implied by the other feature-test macros defined (or by the
+// lack of any definitions) are defined by the file.
+//
+// ISO C feature test macros depend on the definition of the macro
+// when an affected header is included, not when the first system
+// header is included, and so they are handled in
+// <bits/libc-header-start.h>, which does not have a multiple include
+// guard. Feature test macros that can be handled from the first
+// system header included are handled here.
+
+// Undefine everything, so we get a clean slate.
+
+// Suppress kernel-name space pollution unless user expressedly asks
+// for it.
+
+// Convenience macro to test the version of gcc.
+// Use like this:
+// #if __GNUC_PREREQ (2,8)
+// ... code requiring gcc 2.8 or later ...
+// #endif
+// Note: only works for GCC 2.0 and later, because __GNUC_MINOR__ was
+// added in 2.0.
+
+// Similarly for clang. Features added to GCC after version 4.2 may
+// or may not also be available in clang, and clang's definitions of
+// __GNUC(_MINOR)__ are fixed at 4 and 2 respectively. Not all such
+// features can be queried via __has_extension/__has_feature.
+
+// Whether to use feature set F.
+
+// _BSD_SOURCE and _SVID_SOURCE are deprecated aliases for
+// _DEFAULT_SOURCE. If _DEFAULT_SOURCE is present we do not
+// issue a warning; the expectation is that the source is being
+// transitioned to use the new macro.
+
+// If _GNU_SOURCE was defined by the user, turn on all the other features.
+
+// If nothing (other than _GNU_SOURCE and _DEFAULT_SOURCE) is defined,
+// define _DEFAULT_SOURCE.
+
+// This is to enable the ISO C2X extension.
+
+// This is to enable the ISO C11 extension.
+
+// This is to enable the ISO C99 extension.
+
+// This is to enable the ISO C90 Amendment 1:1995 extension.
+
+// If none of the ANSI/POSIX macros are defined, or if _DEFAULT_SOURCE
+// is defined, use POSIX.1-2008 (or another version depending on
+// _XOPEN_SOURCE).
+
+// Some C libraries once required _REENTRANT and/or _THREAD_SAFE to be
+// defined in all multithreaded code. GNU libc has not required this
+// for many years. We now treat them as compatibility synonyms for
+// _POSIX_C_SOURCE=199506L, which is the earliest level of POSIX with
+// comprehensive support for multithreaded code. Using them never
+// lowers the selected level of POSIX conformance, only raises it.
+
+// Features part to handle 64-bit time_t support.
+// Copyright (C) 2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// We need to know the word size in order to check the time size.
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Bit size of the time_t type at glibc build time, RISC-V case.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// RV32 and RV64 both use 64-bit time_t
+
+// The function 'gets' existed in C89, but is impossible to use
+// safely. It has been removed from ISO C11 and ISO C++14. Note: for
+// compatibility with various implementations of <cstdio>, this test
+// must consider only the value of __cplusplus when compiling C++.
+
+// GNU formerly extended the scanf functions with modified format
+// specifiers %as, %aS, and %a[...] that allocate a buffer for the
+// input using malloc. This extension conflicts with ISO C99, which
+// defines %a as a standalone format specifier that reads a floating-
+// point number; moreover, POSIX.1-2008 provides the same feature
+// using the modifier letter 'm' instead (%ms, %mS, %m[...]).
+//
+// We now follow C99 unless GNU extensions are active and the compiler
+// is specifically in C89 or C++98 mode (strict or not). For
+// instance, with GCC, -std=gnu11 will have C99-compliant scanf with
+// or without -D_GNU_SOURCE, but -std=c89 -D_GNU_SOURCE will have the
+// old extension.
+
+// Get definitions of __STDC_* predefined macros, if the compiler has
+// not preincluded this header automatically.
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// This macro indicates that the installed library is the GNU C Library.
+// For historic reasons the value now is 6 and this will stay from now
+// on. The use of this variable is deprecated. Use __GLIBC__ and
+// __GLIBC_MINOR__ now (see below) when you want to test for a specific
+// GNU C library version and use the values in <gnu/lib-names.h> to get
+// the sonames of the shared libraries.
+
+// Major and minor version number of the GNU C library package. Use
+// these macros to test for features in specific releases.
+
+// This is here only because every header file already includes this one.
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// We are almost always included from features.h.
+
+// The GNU libc does not support any K&R compilers or the traditional mode
+// of ISO C compilers anymore. Check for some of the combinations not
+// supported anymore.
+
+// Some user header file might have defined this before.
+
+// Compilers that lack __has_attribute may object to
+// #if defined __has_attribute && __has_attribute (...)
+// even though they do not need to evaluate the right-hand side of the &&.
+// Similarly for __has_builtin, etc.
+
+// All functions, except those with callbacks or those that
+// synchronize memory, are leaf functions.
+
+// GCC can always grok prototypes. For C++ programs we add throw()
+// to help it optimize the function calls. But this only works with
+// gcc 2.8.x and egcs. For gcc 3.4 and up we even mark C functions
+// as non-throwing using a function attribute since programs can use
+// the -fexceptions options for C code as well.
+
+// These two macros are not used in glibc anymore. They are kept here
+// only because some other projects expect the macros to be defined.
+
+// For these things, GCC behaves the ANSI way normally,
+// and the non-ANSI way under -traditional.
+
+// This is not a typedef so `const __ptr_t' does the right thing.
+
+// C++ needs to know that types and declarations are C, not C++.
+
+// Fortify support.
+
+// Use __builtin_dynamic_object_size at _FORTIFY_SOURCE=3 when available.
+
+// Support for flexible arrays.
+// Headers that should use flexible arrays only if they're "real"
+// (e.g. only if they won't affect sizeof()) should test
+// #if __glibc_c99_flexarr_available.
+
+// __asm__ ("xyz") is used throughout the headers to rename functions
+// at the assembly language level. This is wrapped by the __REDIRECT
+// macro, in order to support compilers that can do this some other
+// way. When compilers don't support asm-names at all, we have to do
+// preprocessor tricks instead (which don't have exactly the right
+// semantics, but it's the best we can do).
+//
+// Example:
+// int __REDIRECT(setpgrp, (__pid_t pid, __pid_t pgrp), setpgid);
+
+//
+// #elif __SOME_OTHER_COMPILER__
+//
+// # define __REDIRECT(name, proto, alias) name proto; _Pragma("let " #name " = " #alias)
+
+// GCC and clang have various useful declarations that can be made with
+// the '__attribute__' syntax. All of the ways we use this do fine if
+// they are omitted for compilers that don't understand it.
+
+// At some point during the gcc 2.96 development the `malloc' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+
+// Tell the compiler which arguments to an allocation function
+// indicate the size of the allocation.
+
+// At some point during the gcc 2.96 development the `pure' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+
+// This declaration tells the compiler that the value is constant.
+
+// At some point during the gcc 3.1 development the `used' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+
+// Since version 3.2, gcc allows marking deprecated functions.
+
+// Since version 4.5, gcc also allows one to specify the message printed
+// when a deprecated function is used. clang claims to be gcc 4.2, but
+// may also support this feature.
+
+// At some point during the gcc 2.8 development the `format_arg' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+// If several `format_arg' attributes are given for the same function, in
+// gcc-3.0 and older, all but the last one are ignored. In newer gccs,
+// all designated arguments are considered.
+
+// At some point during the gcc 2.97 development the `strfmon' format
+// attribute for functions was introduced. We don't want to use it
+// unconditionally (although this would be possible) since it
+// generates warnings.
+
+// The nonnull function attribute marks pointer parameters that
+// must not be NULL.
+
+// The returns_nonnull function attribute marks the return type of the function
+// as always being non-null.
+
+// If fortification mode, we warn about unused results of certain
+// function calls which can lead to problems.
+
+// Forces a function to be always inlined.
+// The Linux kernel defines __always_inline in stddef.h (283d7573), and
+// it conflicts with this definition. Therefore undefine it first to
+// allow either header to be included first.
+
+// Associate error messages with the source location of the call site rather
+// than with the source location inside the function.
+
+// GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
+// inline semantics, unless -fgnu89-inline is used. Using __GNUC_STDC_INLINE__
+// or __GNUC_GNU_INLINE is not a good enough check for gcc because gcc versions
+// older than 4.3 may define these macros and still not guarantee GNU inlining
+// semantics.
+//
+// clang++ identifies itself as gcc-4.2, but has support for GNU inlining
+// semantics, that can be checked for by using the __GNUC_STDC_INLINE_ and
+// __GNUC_GNU_INLINE__ macro definitions.
+
+// GCC 4.3 and above allow passing all anonymous arguments of an
+// __extern_always_inline function to some other vararg function.
+
+// It is possible to compile containing GCC extensions even if GCC is
+// run in pedantic mode if the uses are carefully marked using the
+// `__extension__' keyword. But this is not generally available before
+// version 2.8.
+
+// __restrict is known in EGCS 1.2 and above, and in clang.
+// It works also in C++ mode (outside of arrays), but only when spelled
+// as '__restrict', not 'restrict'.
+
+// ISO C99 also allows to declare arrays as non-overlapping. The syntax is
+// array_name[restrict]
+// GCC 3.1 and clang support this.
+// This syntax is not usable in C++ mode.
+
+// Describes a char array whose address can safely be passed as the first
+// argument to strncpy and strncat, as the char array is not necessarily
+// a NUL-terminated string.
+
+// Undefine (also defined in libc-symbols.h).
+// Copies attributes from the declaration or type referenced by
+// the argument.
+
+// The #ifndef lets Gnulib avoid including these on non-glibc
+// platforms, where the includes typically do not exist.
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Properties of long double type. ldbl-128 version.
+// Copyright (C) 2016-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// long double is distinct from double, so there is nothing to
+// define here.
+
+// __glibc_macro_warning (MESSAGE) issues warning MESSAGE. This is
+// intended for use in preprocessor macros.
+//
+// Note: MESSAGE must be a _single_ string; concatenation of string
+// literals is not supported.
+
+// Generic selection (ISO C11) is a C-only feature, available in GCC
+// since version 4.9. Previous versions do not provide generic
+// selection, even though they might set __STDC_VERSION__ to 201112L,
+// when in -std=c11 mode. Thus, we must check for !defined __GNUC__
+// when testing __STDC_VERSION__ for generic selection support.
+// On the other hand, Clang also defines __GNUC__, so a clang-specific
+// check is required to enable the use of generic selection.
+
+// Designates a 1-based positional argument ref-index of pointer type
+// that can be used to access size-index elements of the pointed-to
+// array according to access mode, or at least one element when
+// size-index is not provided:
+// access (access-mode, <ref-index> [, <size-index>])
+
+// Designates dealloc as a function to call to deallocate objects
+// allocated by the declared function.
+
+// Specify that a function such as setjmp or vfork may return
+// twice.
+
+// If we don't have __REDIRECT, prototypes will be missing if
+// __USE_FILE_OFFSET64 but not __USE_LARGEFILE[64].
+
+// Decide whether we can define 'extern inline' functions in headers.
+
+// This is here only because every header file already includes this one.
+// Get the definitions of all the appropriate `__stub_FUNCTION' symbols.
+// <gnu/stubs.h> contains `#define __stub_FUNCTION' when FUNCTION is a stub
+// that will always return failure (and set errno to ENOSYS).
+// This file is automatically generated.
+// This file selects the right generated file of `__stub_FUNCTION' macros
+// based on the architecture being compiled for.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// This file is automatically generated.
+// It defines a symbol `__stub_FUNCTION' for each function
+// in the C library which is a stub, meaning it will fail
+// every time called, usually setting errno to ENOSYS.
+
+// We need `pid_t'.
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Bit size of the time_t type at glibc build time, RISC-V case.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// RV32 and RV64 both use 64-bit time_t
+
+// Convenience types.
+type X__u_char = uint8 /* types.h:31:23 */
+type X__u_short = uint16 /* types.h:32:28 */
+type X__u_int = uint32 /* types.h:33:22 */
+type X__u_long = uint64 /* types.h:34:27 */
+
+// Fixed-size types, underlying types depend on word size and compiler.
+type X__int8_t = int8 /* types.h:37:21 */
+type X__uint8_t = uint8 /* types.h:38:23 */
+type X__int16_t = int16 /* types.h:39:26 */
+type X__uint16_t = uint16 /* types.h:40:28 */
+type X__int32_t = int32 /* types.h:41:20 */
+type X__uint32_t = uint32 /* types.h:42:22 */
+type X__int64_t = int64 /* types.h:44:25 */
+type X__uint64_t = uint64 /* types.h:45:27 */
+
+// Smallest types with at least a given width.
+type X__int_least8_t = X__int8_t /* types.h:52:18 */
+type X__uint_least8_t = X__uint8_t /* types.h:53:19 */
+type X__int_least16_t = X__int16_t /* types.h:54:19 */
+type X__uint_least16_t = X__uint16_t /* types.h:55:20 */
+type X__int_least32_t = X__int32_t /* types.h:56:19 */
+type X__uint_least32_t = X__uint32_t /* types.h:57:20 */
+type X__int_least64_t = X__int64_t /* types.h:58:19 */
+type X__uint_least64_t = X__uint64_t /* types.h:59:20 */
+
+// quad_t is also 64 bits.
+type X__quad_t = int64 /* types.h:63:18 */
+type X__u_quad_t = uint64 /* types.h:64:27 */
+
+// Largest integral types.
+type X__intmax_t = int64 /* types.h:72:18 */
+type X__uintmax_t = uint64 /* types.h:73:27 */
+
+// The machine-dependent file <bits/typesizes.h> defines __*_T_TYPE
+// macros for each of the OS types we define below. The definitions
+// of those macros must use the following macros for underlying types.
+// We define __S<SIZE>_TYPE and __U<SIZE>_TYPE for the signed and unsigned
+// variants of each of the following integer types on this machine.
+//
+// 16 -- "natural" 16-bit type (always short)
+// 32 -- "natural" 32-bit type (always int)
+// 64 -- "natural" 64-bit type (long or long long)
+// LONG32 -- 32-bit type, traditionally long
+// QUAD -- 64-bit type, traditionally long long
+// WORD -- natural type of __WORDSIZE bits (int or long)
+// LONGWORD -- type of __WORDSIZE bits, traditionally long
+//
+// We distinguish WORD/LONGWORD, 32/LONG32, and 64/QUAD so that the
+// conventional uses of `long' or `long long' type modifiers match the
+// types we define, even when a less-adorned type would be the same size.
+// This matters for (somewhat) portably writing printf/scanf formats for
+// these types, where using the appropriate l or ll format modifiers can
+// make the typedefs and the formats match up across all GNU platforms. If
+// we used `long' when it's 64 bits where `long long' is expected, then the
+// compiler would warn about the formats not matching the argument types,
+// and the programmer changing them to shut up the compiler would break the
+// program's portability.
+//
+// Here we assume what is presently the case in all the GCC configurations
+// we support: long long is always 64 bits, long is always word/address size,
+// and int is always 32 bits.
+
+// No need to mark the typedef with __extension__.
+// bits/typesizes.h -- underlying types for *_t. For the generic Linux ABI.
+// Copyright (C) 2011-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+// Contributed by Chris Metcalf <cmetcalf@tilera.com>, 2011.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// See <bits/types.h> for the meaning of these macros. This file exists so
+// that <bits/types.h> need not vary across different GNU platforms.
+
+// Tell the libc code that off_t and off64_t are actually the same type
+// for all ABI purposes, even if possibly expressed as different base types
+// for C type-checking purposes.
+
+// Same for ino_t and ino64_t.
+
+// And for __rlim_t and __rlim64_t.
+
+// And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t.
+
+// And for getitimer, setitimer and rusage
+
+// Number of descriptors that can fit in an `fd_set'.
+
+// bits/time64.h -- underlying types for __time64_t. RISC-V version.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Define __TIME64_T_TYPE so that it is always a 64-bit type.
+
+// If we already have 64-bit time type then use it.
+
+type X__dev_t = uint64 /* types.h:145:25 */ // Type of device numbers.
+type X__uid_t = uint32 /* types.h:146:25 */ // Type of user identifications.
+type X__gid_t = uint32 /* types.h:147:25 */ // Type of group identifications.
+type X__ino_t = uint64 /* types.h:148:25 */ // Type of file serial numbers.
+type X__ino64_t = uint64 /* types.h:149:27 */ // Type of file serial numbers (LFS).
+type X__mode_t = uint32 /* types.h:150:26 */ // Type of file attribute bitmasks.
+type X__nlink_t = uint32 /* types.h:151:27 */ // Type of file link counts.
+type X__off_t = int64 /* types.h:152:25 */ // Type of file sizes and offsets.
+type X__off64_t = int64 /* types.h:153:27 */ // Type of file sizes and offsets (LFS).
+type X__pid_t = int32 /* types.h:154:25 */ // Type of process identifications.
+type X__fsid_t = struct{ F__val [2]int32 } /* types.h:155:26 */ // Type of file system IDs.
+type X__clock_t = int64 /* types.h:156:27 */ // Type of CPU usage counts.
+type X__rlim_t = uint64 /* types.h:157:26 */ // Type for resource measurement.
+type X__rlim64_t = uint64 /* types.h:158:28 */ // Type for resource measurement (LFS).
+type X__id_t = uint32 /* types.h:159:24 */ // General type for IDs.
+type X__time_t = int64 /* types.h:160:26 */ // Seconds since the Epoch.
+type X__useconds_t = uint32 /* types.h:161:30 */ // Count of microseconds.
+type X__suseconds_t = int64 /* types.h:162:31 */ // Signed count of microseconds.
+type X__suseconds64_t = int64 /* types.h:163:33 */
+
+type X__daddr_t = int32 /* types.h:165:27 */ // The type of a disk address.
+type X__key_t = int32 /* types.h:166:25 */ // Type of an IPC key.
+
+// Clock ID used in clock and timer functions.
+type X__clockid_t = int32 /* types.h:169:29 */
+
+// Timer ID returned by `timer_create'.
+type X__timer_t = uintptr /* types.h:172:12 */
+
+// Type to represent block size.
+type X__blksize_t = int32 /* types.h:175:29 */
+
+// Types from the Large File Support interface.
+
+// Type to count number of disk blocks.
+type X__blkcnt_t = int64 /* types.h:180:28 */
+type X__blkcnt64_t = int64 /* types.h:181:30 */
+
+// Type to count file system blocks.
+type X__fsblkcnt_t = uint64 /* types.h:184:30 */
+type X__fsblkcnt64_t = uint64 /* types.h:185:32 */
+
+// Type to count file system nodes.
+type X__fsfilcnt_t = uint64 /* types.h:188:30 */
+type X__fsfilcnt64_t = uint64 /* types.h:189:32 */
+
+// Type of miscellaneous file system fields.
+type X__fsword_t = int64 /* types.h:192:28 */
+
+type X__ssize_t = int64 /* types.h:194:27 */ // Type of a byte count, or error.
+
+// Signed long type used in system calls.
+type X__syscall_slong_t = int64 /* types.h:197:33 */
+// Unsigned long type used in system calls.
+type X__syscall_ulong_t = uint64 /* types.h:199:33 */
+
+// These few don't really vary by system, they always correspond
+// to one of the other defined types.
+type X__loff_t = X__off64_t /* types.h:203:19 */ // Type of file sizes and offsets (LFS).
+type X__caddr_t = uintptr /* types.h:204:14 */
+
+// Duplicates info from stdint.h but this is used in unistd.h.
+type X__intptr_t = int64 /* types.h:207:25 */
+
+// Duplicate info from sys/socket.h.
+type X__socklen_t = uint32 /* types.h:210:23 */
+
+// C99: An integer type that can be accessed as an atomic entity,
+// even in the presence of asynchronous interrupts.
+// It is not currently necessary for this to be machine-specific.
+type X__sig_atomic_t = int32 /* types.h:215:13 */
+
+// Seconds since the Epoch, visible to user code when time_t is too
+// narrow only for consistency with the old way of widening too-narrow
+// types. User code should never use __time64_t.
+
+type Pid_t = X__pid_t /* termios.h:30:17 */
+
+// Get the system-dependent definitions of `struct termios', `tcflag_t',
+// `cc_t', `speed_t', and all the macros specifying the flag bits.
+// termios type and macro definitions. Linux version.
+// Copyright (C) 1993-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+type Cc_t = uint8 /* termios.h:23:23 */
+type Speed_t = uint32 /* termios.h:24:22 */
+type Tcflag_t = uint32 /* termios.h:25:22 */
+
+// struct termios definition. Linux/generic version.
+// Copyright (C) 2019-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+type Termios = struct {
+ Fc_iflag Tcflag_t
+ Fc_oflag Tcflag_t
+ Fc_cflag Tcflag_t
+ Fc_lflag Tcflag_t
+ Fc_line Cc_t
+ Fc_cc [32]Cc_t
+ F__ccgo_pad1 [3]byte
+ Fc_ispeed Speed_t
+ Fc_ospeed Speed_t
+} /* termios-struct.h:24:1 */
+
+// -
+// Copyright (c) 1982, 1986, 1993
+// The Regents of the University of California. All rights reserved.
+// (c) UNIX System Laboratories, Inc.
+// All or some portions of this file are derived from material licensed
+// to the University of California by American Telephone and Telegraph
+// Co. or Unix System Laboratories, Inc. and are reproduced herein with
+// the permission of UNIX System Laboratories, Inc.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions
+// are met:
+// 1. Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// 2. Redistributions in binary form must reproduce the above copyright
+// notice, this list of conditions and the following disclaimer in the
+// documentation and/or other materials provided with the distribution.
+// 4. Neither the name of the University nor the names of its contributors
+// may be used to endorse or promote products derived from this software
+// without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+// ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+// SUCH DAMAGE.
+//
+// @(#)ttydefaults.h 8.4 (Berkeley) 1/21/94
+
+// System wide defaults for terminal state. Linux version.
+
+// Defaults on "first" open.
+
+// Control Character Defaults
+// compat
+
+// PROTECTED INCLUSION ENDS HERE
+
+// #define TTYDEFCHARS to include an array of default control characters.
+
+var _ uint8 /* gen.c:2:13: */
diff --git a/vendor/modernc.org/libc/time/capi_linux_riscv64.go b/vendor/modernc.org/libc/time/capi_linux_riscv64.go
new file mode 100644
index 00000000..31f1a1a2
--- /dev/null
+++ b/vendor/modernc.org/libc/time/capi_linux_riscv64.go
@@ -0,0 +1,5 @@
+// Code generated by 'ccgo time/gen.c -crt-import-path -export-defines -export-enums -export-externs X -export-fields F -export-structs -export-typedefs -header -hide _OSSwapInt16,_OSSwapInt32,_OSSwapInt64 -o time/time_linux_riscv64.go -pkgname time', DO NOT EDIT.
+
+package time
+
+var CAPI = map[string]struct{}{}
diff --git a/vendor/modernc.org/libc/time/time_linux_riscv64.go b/vendor/modernc.org/libc/time/time_linux_riscv64.go
new file mode 100644
index 00000000..e60813d5
--- /dev/null
+++ b/vendor/modernc.org/libc/time/time_linux_riscv64.go
@@ -0,0 +1,711 @@
+// Code generated by 'ccgo time/gen.c -crt-import-path "" -export-defines "" -export-enums "" -export-externs X -export-fields F -export-structs "" -export-typedefs "" -header -hide _OSSwapInt16,_OSSwapInt32,_OSSwapInt64 -o time/time_linux_riscv64.go -pkgname time', DO NOT EDIT.
+
+package time
+
+import (
+ "math"
+ "reflect"
+ "sync/atomic"
+ "unsafe"
+)
+
+var _ = math.Pi
+var _ reflect.Kind
+var _ atomic.Value
+var _ unsafe.Pointer
+
+const (
+ CLOCK_BOOTTIME = 7
+ CLOCK_BOOTTIME_ALARM = 9
+ CLOCK_MONOTONIC = 1
+ CLOCK_MONOTONIC_COARSE = 6
+ CLOCK_MONOTONIC_RAW = 4
+ CLOCK_PROCESS_CPUTIME_ID = 2
+ CLOCK_REALTIME = 0
+ CLOCK_REALTIME_ALARM = 8
+ CLOCK_REALTIME_COARSE = 5
+ CLOCK_TAI = 11
+ CLOCK_THREAD_CPUTIME_ID = 3
+ TIMER_ABSTIME = 1
+ TIME_UTC = 1
+ X_ATFILE_SOURCE = 1
+ X_BITS_ENDIANNESS_H = 1
+ X_BITS_ENDIAN_H = 1
+ X_BITS_TIME64_H = 1
+ X_BITS_TIME_H = 1
+ X_BITS_TYPESIZES_H = 1
+ X_BITS_TYPES_H = 1
+ X_BITS_TYPES_LOCALE_T_H = 1
+ X_BITS_TYPES___LOCALE_T_H = 1
+ X_BSD_SIZE_T_ = 0
+ X_BSD_SIZE_T_DEFINED_ = 0
+ X_DEFAULT_SOURCE = 1
+ X_FEATURES_H = 1
+ X_FILE_OFFSET_BITS = 64
+ X_GCC_SIZE_T = 0
+ X_LP64 = 1
+ X_POSIX_C_SOURCE = 200809
+ X_POSIX_SOURCE = 1
+ X_SIZET_ = 0
+ X_SIZE_T = 0
+ X_SIZE_T_ = 0
+ X_SIZE_T_DECLARED = 0
+ X_SIZE_T_DEFINED = 0
+ X_SIZE_T_DEFINED_ = 0
+ X_STDC_PREDEF_H = 1
+ X_STRUCT_TIMESPEC = 1
+ X_SYS_CDEFS_H = 1
+ X_SYS_SIZE_T_H = 0
+ X_TIME_H = 1
+ X_T_SIZE = 0
+ X_T_SIZE_ = 0
+ Linux = 1
+ Unix = 1
+)
+
+type Ptrdiff_t = int64 /* <builtin>:3:26 */
+
+type Size_t = uint64 /* <builtin>:9:23 */
+
+type Wchar_t = int32 /* <builtin>:15:24 */
+
+type X__int128_t = struct {
+ Flo int64
+ Fhi int64
+} /* <builtin>:21:43 */ // must match modernc.org/mathutil.Int128
+type X__uint128_t = struct {
+ Flo uint64
+ Fhi uint64
+} /* <builtin>:22:44 */ // must match modernc.org/mathutil.Int128
+
+type X__builtin_va_list = uintptr /* <builtin>:46:14 */
+type X__float128 = float64 /* <builtin>:47:21 */
+
+// Wide character type.
+// Locale-writers should change this as necessary to
+// be big enough to hold unique values not between 0 and 127,
+// and not (wchar_t) -1, for each defined multibyte character.
+
+// Define this type if we are doing the whole job,
+// or if we want this type in particular.
+
+// A null pointer constant.
+
+// This defines CLOCKS_PER_SEC, which is the number of processor clock
+// ticks per second, and possibly a number of other constants.
+// System-dependent timing definitions. Linux version.
+// Copyright (C) 1996-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <time.h> instead.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Bit size of the time_t type at glibc build time, RISC-V case.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// RV32 and RV64 both use 64-bit time_t
+
+// Convenience types.
+type X__u_char = uint8 /* types.h:31:23 */
+type X__u_short = uint16 /* types.h:32:28 */
+type X__u_int = uint32 /* types.h:33:22 */
+type X__u_long = uint64 /* types.h:34:27 */
+
+// Fixed-size types, underlying types depend on word size and compiler.
+type X__int8_t = int8 /* types.h:37:21 */
+type X__uint8_t = uint8 /* types.h:38:23 */
+type X__int16_t = int16 /* types.h:39:26 */
+type X__uint16_t = uint16 /* types.h:40:28 */
+type X__int32_t = int32 /* types.h:41:20 */
+type X__uint32_t = uint32 /* types.h:42:22 */
+type X__int64_t = int64 /* types.h:44:25 */
+type X__uint64_t = uint64 /* types.h:45:27 */
+
+// Smallest types with at least a given width.
+type X__int_least8_t = X__int8_t /* types.h:52:18 */
+type X__uint_least8_t = X__uint8_t /* types.h:53:19 */
+type X__int_least16_t = X__int16_t /* types.h:54:19 */
+type X__uint_least16_t = X__uint16_t /* types.h:55:20 */
+type X__int_least32_t = X__int32_t /* types.h:56:19 */
+type X__uint_least32_t = X__uint32_t /* types.h:57:20 */
+type X__int_least64_t = X__int64_t /* types.h:58:19 */
+type X__uint_least64_t = X__uint64_t /* types.h:59:20 */
+
+// quad_t is also 64 bits.
+type X__quad_t = int64 /* types.h:63:18 */
+type X__u_quad_t = uint64 /* types.h:64:27 */
+
+// Largest integral types.
+type X__intmax_t = int64 /* types.h:72:18 */
+type X__uintmax_t = uint64 /* types.h:73:27 */
+
+// The machine-dependent file <bits/typesizes.h> defines __*_T_TYPE
+// macros for each of the OS types we define below. The definitions
+// of those macros must use the following macros for underlying types.
+// We define __S<SIZE>_TYPE and __U<SIZE>_TYPE for the signed and unsigned
+// variants of each of the following integer types on this machine.
+//
+// 16 -- "natural" 16-bit type (always short)
+// 32 -- "natural" 32-bit type (always int)
+// 64 -- "natural" 64-bit type (long or long long)
+// LONG32 -- 32-bit type, traditionally long
+// QUAD -- 64-bit type, traditionally long long
+// WORD -- natural type of __WORDSIZE bits (int or long)
+// LONGWORD -- type of __WORDSIZE bits, traditionally long
+//
+// We distinguish WORD/LONGWORD, 32/LONG32, and 64/QUAD so that the
+// conventional uses of `long' or `long long' type modifiers match the
+// types we define, even when a less-adorned type would be the same size.
+// This matters for (somewhat) portably writing printf/scanf formats for
+// these types, where using the appropriate l or ll format modifiers can
+// make the typedefs and the formats match up across all GNU platforms. If
+// we used `long' when it's 64 bits where `long long' is expected, then the
+// compiler would warn about the formats not matching the argument types,
+// and the programmer changing them to shut up the compiler would break the
+// program's portability.
+//
+// Here we assume what is presently the case in all the GCC configurations
+// we support: long long is always 64 bits, long is always word/address size,
+// and int is always 32 bits.
+
+// No need to mark the typedef with __extension__.
+// bits/typesizes.h -- underlying types for *_t. For the generic Linux ABI.
+// Copyright (C) 2011-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+// Contributed by Chris Metcalf <cmetcalf@tilera.com>, 2011.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// See <bits/types.h> for the meaning of these macros. This file exists so
+// that <bits/types.h> need not vary across different GNU platforms.
+
+// Tell the libc code that off_t and off64_t are actually the same type
+// for all ABI purposes, even if possibly expressed as different base types
+// for C type-checking purposes.
+
+// Same for ino_t and ino64_t.
+
+// And for __rlim_t and __rlim64_t.
+
+// And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t.
+
+// And for getitimer, setitimer and rusage
+
+// Number of descriptors that can fit in an `fd_set'.
+
+// bits/time64.h -- underlying types for __time64_t. RISC-V version.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Define __TIME64_T_TYPE so that it is always a 64-bit type.
+
+// If we already have 64-bit time type then use it.
+
+type X__dev_t = uint64 /* types.h:145:25 */ // Type of device numbers.
+type X__uid_t = uint32 /* types.h:146:25 */ // Type of user identifications.
+type X__gid_t = uint32 /* types.h:147:25 */ // Type of group identifications.
+type X__ino_t = uint64 /* types.h:148:25 */ // Type of file serial numbers.
+type X__ino64_t = uint64 /* types.h:149:27 */ // Type of file serial numbers (LFS).
+type X__mode_t = uint32 /* types.h:150:26 */ // Type of file attribute bitmasks.
+type X__nlink_t = uint32 /* types.h:151:27 */ // Type of file link counts.
+type X__off_t = int64 /* types.h:152:25 */ // Type of file sizes and offsets.
+type X__off64_t = int64 /* types.h:153:27 */ // Type of file sizes and offsets (LFS).
+type X__pid_t = int32 /* types.h:154:25 */ // Type of process identifications.
+type X__fsid_t = struct{ F__val [2]int32 } /* types.h:155:26 */ // Type of file system IDs.
+type X__clock_t = int64 /* types.h:156:27 */ // Type of CPU usage counts.
+type X__rlim_t = uint64 /* types.h:157:26 */ // Type for resource measurement.
+type X__rlim64_t = uint64 /* types.h:158:28 */ // Type for resource measurement (LFS).
+type X__id_t = uint32 /* types.h:159:24 */ // General type for IDs.
+type X__time_t = int64 /* types.h:160:26 */ // Seconds since the Epoch.
+type X__useconds_t = uint32 /* types.h:161:30 */ // Count of microseconds.
+type X__suseconds_t = int64 /* types.h:162:31 */ // Signed count of microseconds.
+type X__suseconds64_t = int64 /* types.h:163:33 */
+
+type X__daddr_t = int32 /* types.h:165:27 */ // The type of a disk address.
+type X__key_t = int32 /* types.h:166:25 */ // Type of an IPC key.
+
+// Clock ID used in clock and timer functions.
+type X__clockid_t = int32 /* types.h:169:29 */
+
+// Timer ID returned by `timer_create'.
+type X__timer_t = uintptr /* types.h:172:12 */
+
+// Type to represent block size.
+type X__blksize_t = int32 /* types.h:175:29 */
+
+// Types from the Large File Support interface.
+
+// Type to count number of disk blocks.
+type X__blkcnt_t = int64 /* types.h:180:28 */
+type X__blkcnt64_t = int64 /* types.h:181:30 */
+
+// Type to count file system blocks.
+type X__fsblkcnt_t = uint64 /* types.h:184:30 */
+type X__fsblkcnt64_t = uint64 /* types.h:185:32 */
+
+// Type to count file system nodes.
+type X__fsfilcnt_t = uint64 /* types.h:188:30 */
+type X__fsfilcnt64_t = uint64 /* types.h:189:32 */
+
+// Type of miscellaneous file system fields.
+type X__fsword_t = int64 /* types.h:192:28 */
+
+type X__ssize_t = int64 /* types.h:194:27 */ // Type of a byte count, or error.
+
+// Signed long type used in system calls.
+type X__syscall_slong_t = int64 /* types.h:197:33 */
+// Unsigned long type used in system calls.
+type X__syscall_ulong_t = uint64 /* types.h:199:33 */
+
+// These few don't really vary by system, they always correspond
+// to one of the other defined types.
+type X__loff_t = X__off64_t /* types.h:203:19 */ // Type of file sizes and offsets (LFS).
+type X__caddr_t = uintptr /* types.h:204:14 */
+
+// Duplicates info from stdint.h but this is used in unistd.h.
+type X__intptr_t = int64 /* types.h:207:25 */
+
+// Duplicate info from sys/socket.h.
+type X__socklen_t = uint32 /* types.h:210:23 */
+
+// C99: An integer type that can be accessed as an atomic entity,
+// even in the presence of asynchronous interrupts.
+// It is not currently necessary for this to be machine-specific.
+type X__sig_atomic_t = int32 /* types.h:215:13 */
+
+// Seconds since the Epoch, visible to user code when time_t is too
+// narrow only for consistency with the old way of widening too-narrow
+// types. User code should never use __time64_t.
+
+// ISO/IEC 9899:1999 7.23.1: Components of time
+// The macro `CLOCKS_PER_SEC' is an expression with type `clock_t' that is
+// the number per second of the value returned by the `clock' function.
+// CAE XSH, Issue 4, Version 2: <time.h>
+// The value of CLOCKS_PER_SEC is required to be 1 million on all
+// XSI-conformant systems.
+
+// Identifier for system-wide realtime clock.
+// Monotonic system-wide clock.
+// High-resolution timer from the CPU.
+// Thread-specific CPU-time clock.
+// Monotonic system-wide clock, not adjusted for frequency scaling.
+// Identifier for system-wide realtime clock, updated only on ticks.
+// Monotonic system-wide clock, updated only on ticks.
+// Monotonic system-wide clock that includes time spent in suspension.
+// Like CLOCK_REALTIME but also wakes suspended system.
+// Like CLOCK_BOOTTIME but also wakes suspended system.
+// Like CLOCK_REALTIME but in International Atomic Time.
+
+// Flag to indicate time is absolute.
+
+// Many of the typedefs and structs whose official home is this header
+// may also need to be defined by other headers.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Returned by `clock'.
+type Clock_t = X__clock_t /* clock_t.h:7:19 */
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Returned by `time'.
+type Time_t = X__time_t /* time_t.h:10:18 */
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// ISO C `broken-down time' structure.
+type Tm = struct {
+ Ftm_sec int32
+ Ftm_min int32
+ Ftm_hour int32
+ Ftm_mday int32
+ Ftm_mon int32
+ Ftm_year int32
+ Ftm_wday int32
+ Ftm_yday int32
+ Ftm_isdst int32
+ F__ccgo_pad1 [4]byte
+ Ftm_gmtoff int64
+ Ftm_zone uintptr
+} /* struct_tm.h:7:1 */
+
+// NB: Include guard matches what <linux/time.h> uses.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Endian macros for string.h functions
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <http://www.gnu.org/licenses/>.
+
+// Definitions for byte order, according to significance of bytes,
+// from low addresses to high addresses. The value is what you get by
+// putting '4' in the most significant byte, '3' in the second most
+// significant byte, '2' in the second least significant byte, and '1'
+// in the least significant byte, and then writing down one digit for
+// each byte, starting with the byte at the lowest address at the left,
+// and proceeding to the byte with the highest address at the right.
+
+// This file defines `__BYTE_ORDER' for the particular machine.
+
+// RISC-V is little-endian.
+
+// Some machines may need to use a different endianness for floating point
+// values.
+
+// POSIX.1b structure for a time value. This is like a `struct timeval' but
+// has nanoseconds instead of microseconds.
+type Timespec = struct {
+ Ftv_sec X__time_t
+ Ftv_nsec X__syscall_slong_t
+} /* struct_timespec.h:11:1 */
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Clock ID used in clock and timer functions.
+type Clockid_t = X__clockid_t /* clockid_t.h:7:21 */
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Timer ID returned by `timer_create'.
+type Timer_t = X__timer_t /* timer_t.h:7:19 */
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// NB: Include guard matches what <linux/time.h> uses.
+
+// POSIX.1b structure for timer start values and intervals.
+type Itimerspec = struct {
+ Fit_interval struct {
+ Ftv_sec X__time_t
+ Ftv_nsec X__syscall_slong_t
+ }
+ Fit_value struct {
+ Ftv_sec X__time_t
+ Ftv_nsec X__syscall_slong_t
+ }
+} /* struct_itimerspec.h:8:1 */
+
+type Pid_t = X__pid_t /* time.h:54:17 */
+
+// Definition of locale_t.
+// Copyright (C) 2017-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Definition of struct __locale_struct and __locale_t.
+// Copyright (C) 1997-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+// Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// POSIX.1-2008: the locale_t type, representing a locale context
+// (implementation-namespace version). This type should be treated
+// as opaque by applications; some details are exposed for the sake of
+// efficiency in e.g. ctype functions.
+
+type X__locale_struct = struct {
+ F__locales [13]uintptr
+ F__ctype_b uintptr
+ F__ctype_tolower uintptr
+ F__ctype_toupper uintptr
+ F__names [13]uintptr
+} /* __locale_t.h:28:1 */
+
+type X__locale_t = uintptr /* __locale_t.h:42:32 */
+
+type Locale_t = X__locale_t /* locale_t.h:24:20 */
+
+var _ uint8 /* gen.c:2:13: */
diff --git a/vendor/modernc.org/libc/unistd/capi_linux_riscv64.go b/vendor/modernc.org/libc/unistd/capi_linux_riscv64.go
new file mode 100644
index 00000000..24077fcd
--- /dev/null
+++ b/vendor/modernc.org/libc/unistd/capi_linux_riscv64.go
@@ -0,0 +1,5 @@
+// Code generated by 'ccgo unistd/gen.c -crt-import-path -export-defines -export-enums -export-externs X -export-fields F -export-structs -export-typedefs -header -hide _OSSwapInt16,_OSSwapInt32,_OSSwapInt64 -o unistd/unistd_linux_riscv64.go -pkgname unistd', DO NOT EDIT.
+
+package unistd
+
+var CAPI = map[string]struct{}{}
diff --git a/vendor/modernc.org/libc/unistd/unistd_linux_riscv64.go b/vendor/modernc.org/libc/unistd/unistd_linux_riscv64.go
new file mode 100644
index 00000000..a10adc11
--- /dev/null
+++ b/vendor/modernc.org/libc/unistd/unistd_linux_riscv64.go
@@ -0,0 +1,1776 @@
+// Code generated by 'ccgo unistd/gen.c -crt-import-path "" -export-defines "" -export-enums "" -export-externs X -export-fields F -export-structs "" -export-typedefs "" -header -hide _OSSwapInt16,_OSSwapInt32,_OSSwapInt64 -o unistd/unistd_linux_riscv64.go -pkgname unistd', DO NOT EDIT.
+
+package unistd
+
+import (
+ "math"
+ "reflect"
+ "sync/atomic"
+ "unsafe"
+)
+
+var _ = math.Pi
+var _ reflect.Kind
+var _ atomic.Value
+var _ unsafe.Pointer
+
+const (
+ F_LOCK = 1
+ F_OK = 0
+ F_TEST = 3
+ F_TLOCK = 2
+ F_ULOCK = 0
+ L_INCR = 1
+ L_SET = 0
+ L_XTND = 2
+ R_OK = 4
+ SEEK_CUR = 1
+ SEEK_END = 2
+ SEEK_SET = 0
+ STDERR_FILENO = 2
+ STDIN_FILENO = 0
+ STDOUT_FILENO = 1
+ W_OK = 2
+ X_OK = 1
+ X_ATFILE_SOURCE = 1
+ X_BITS_POSIX_OPT_H = 1
+ X_BITS_TIME64_H = 1
+ X_BITS_TYPESIZES_H = 1
+ X_BITS_TYPES_H = 1
+ X_BSD_SIZE_T_ = 0
+ X_BSD_SIZE_T_DEFINED_ = 0
+ X_DEFAULT_SOURCE = 1
+ X_FEATURES_H = 1
+ X_FILE_OFFSET_BITS = 64
+ X_GCC_SIZE_T = 0
+ X_GETOPT_CORE_H = 1
+ X_GETOPT_POSIX_H = 1
+ X_LFS64_ASYNCHRONOUS_IO = 1
+ X_LFS64_LARGEFILE = 1
+ X_LFS64_STDIO = 1
+ X_LFS_ASYNCHRONOUS_IO = 1
+ X_LFS_LARGEFILE = 1
+ X_LP64 = 1
+ X_POSIX2_CHAR_TERM = 200809
+ X_POSIX2_C_BIND = 200809
+ X_POSIX2_C_DEV = 200809
+ X_POSIX2_C_VERSION = 200809
+ X_POSIX2_LOCALEDEF = 200809
+ X_POSIX2_SW_DEV = 200809
+ X_POSIX2_VERSION = 200809
+ X_POSIX_ADVISORY_INFO = 200809
+ X_POSIX_ASYNCHRONOUS_IO = 200809
+ X_POSIX_ASYNC_IO = 1
+ X_POSIX_BARRIERS = 200809
+ X_POSIX_CHOWN_RESTRICTED = 0
+ X_POSIX_CLOCK_SELECTION = 200809
+ X_POSIX_CPUTIME = 0
+ X_POSIX_C_SOURCE = 200809
+ X_POSIX_FSYNC = 200809
+ X_POSIX_IPV6 = 200809
+ X_POSIX_JOB_CONTROL = 1
+ X_POSIX_MAPPED_FILES = 200809
+ X_POSIX_MEMLOCK = 200809
+ X_POSIX_MEMLOCK_RANGE = 200809
+ X_POSIX_MEMORY_PROTECTION = 200809
+ X_POSIX_MESSAGE_PASSING = 200809
+ X_POSIX_MONOTONIC_CLOCK = 0
+ X_POSIX_NO_TRUNC = 1
+ X_POSIX_PRIORITIZED_IO = 200809
+ X_POSIX_PRIORITY_SCHEDULING = 200809
+ X_POSIX_RAW_SOCKETS = 200809
+ X_POSIX_READER_WRITER_LOCKS = 200809
+ X_POSIX_REALTIME_SIGNALS = 200809
+ X_POSIX_REENTRANT_FUNCTIONS = 1
+ X_POSIX_REGEXP = 1
+ X_POSIX_SAVED_IDS = 1
+ X_POSIX_SEMAPHORES = 200809
+ X_POSIX_SHARED_MEMORY_OBJECTS = 200809
+ X_POSIX_SHELL = 1
+ X_POSIX_SOURCE = 1
+ X_POSIX_SPAWN = 200809
+ X_POSIX_SPIN_LOCKS = 200809
+ X_POSIX_SPORADIC_SERVER = -1
+ X_POSIX_SYNCHRONIZED_IO = 200809
+ X_POSIX_THREADS = 200809
+ X_POSIX_THREAD_ATTR_STACKADDR = 200809
+ X_POSIX_THREAD_ATTR_STACKSIZE = 200809
+ X_POSIX_THREAD_CPUTIME = 0
+ X_POSIX_THREAD_PRIORITY_SCHEDULING = 200809
+ X_POSIX_THREAD_PRIO_INHERIT = 200809
+ X_POSIX_THREAD_PRIO_PROTECT = 200809
+ X_POSIX_THREAD_PROCESS_SHARED = 200809
+ X_POSIX_THREAD_ROBUST_PRIO_INHERIT = 200809
+ X_POSIX_THREAD_ROBUST_PRIO_PROTECT = -1
+ X_POSIX_THREAD_SAFE_FUNCTIONS = 200809
+ X_POSIX_THREAD_SPORADIC_SERVER = -1
+ X_POSIX_TIMEOUTS = 200809
+ X_POSIX_TIMERS = 200809
+ X_POSIX_TRACE = -1
+ X_POSIX_TRACE_EVENT_FILTER = -1
+ X_POSIX_TRACE_INHERIT = -1
+ X_POSIX_TRACE_LOG = -1
+ X_POSIX_TYPED_MEMORY_OBJECTS = -1
+ X_POSIX_V6_ILP32_OFF32 = -1
+ X_POSIX_V6_ILP32_OFFBIG = -1
+ X_POSIX_V6_LP64_OFF64 = 1
+ X_POSIX_V6_LPBIG_OFFBIG = -1
+ X_POSIX_V7_ILP32_OFF32 = -1
+ X_POSIX_V7_ILP32_OFFBIG = -1
+ X_POSIX_V7_LP64_OFF64 = 1
+ X_POSIX_V7_LPBIG_OFFBIG = -1
+ X_POSIX_VDISABLE = 0
+ X_POSIX_VERSION = 200809
+ X_SIZET_ = 0
+ X_SIZE_T = 0
+ X_SIZE_T_ = 0
+ X_SIZE_T_DECLARED = 0
+ X_SIZE_T_DEFINED = 0
+ X_SIZE_T_DEFINED_ = 0
+ X_STDC_PREDEF_H = 1
+ X_SYS_CDEFS_H = 1
+ X_SYS_SIZE_T_H = 0
+ X_T_SIZE = 0
+ X_T_SIZE_ = 0
+ X_UNISTD_H = 1
+ X_XBS5_ILP32_OFF32 = -1
+ X_XBS5_ILP32_OFFBIG = -1
+ X_XBS5_LP64_OFF64 = 1
+ X_XBS5_LPBIG_OFFBIG = -1
+ X_XOPEN_ENH_I18N = 1
+ X_XOPEN_LEGACY = 1
+ X_XOPEN_REALTIME = 1
+ X_XOPEN_REALTIME_THREADS = 1
+ X_XOPEN_SHM = 1
+ X_XOPEN_UNIX = 1
+ X_XOPEN_VERSION = 700
+ X_XOPEN_XCU_VERSION = 4
+ X_XOPEN_XPG2 = 1
+ X_XOPEN_XPG3 = 1
+ X_XOPEN_XPG4 = 1
+ Linux = 1
+ Unix = 1
+)
+
+// Get the `_PC_*' symbols for the NAME argument to `pathconf' and `fpathconf';
+// the `_SC_*' symbols for the NAME argument to `sysconf';
+// and the `_CS_*' symbols for the NAME argument to `confstr'.
+// `sysconf', `pathconf', and `confstr' NAME values. Generic version.
+// Copyright (C) 1993-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Values for the NAME argument to `pathconf' and `fpathconf'.
+const ( /* confname.h:24:1: */
+ X_PC_LINK_MAX = 0
+ X_PC_MAX_CANON = 1
+ X_PC_MAX_INPUT = 2
+ X_PC_NAME_MAX = 3
+ X_PC_PATH_MAX = 4
+ X_PC_PIPE_BUF = 5
+ X_PC_CHOWN_RESTRICTED = 6
+ X_PC_NO_TRUNC = 7
+ X_PC_VDISABLE = 8
+ X_PC_SYNC_IO = 9
+ X_PC_ASYNC_IO = 10
+ X_PC_PRIO_IO = 11
+ X_PC_SOCK_MAXBUF = 12
+ X_PC_FILESIZEBITS = 13
+ X_PC_REC_INCR_XFER_SIZE = 14
+ X_PC_REC_MAX_XFER_SIZE = 15
+ X_PC_REC_MIN_XFER_SIZE = 16
+ X_PC_REC_XFER_ALIGN = 17
+ X_PC_ALLOC_SIZE_MIN = 18
+ X_PC_SYMLINK_MAX = 19
+ X_PC_2_SYMLINKS = 20
+)
+
+// Values for the NAME argument to `confstr'.
+const ( /* confname.h:539:1: */
+ X_CS_PATH = 0 // The default search path.
+
+ X_CS_V6_WIDTH_RESTRICTED_ENVS = 1
+
+ X_CS_GNU_LIBC_VERSION = 2
+ X_CS_GNU_LIBPTHREAD_VERSION = 3
+
+ X_CS_V5_WIDTH_RESTRICTED_ENVS = 4
+
+ X_CS_V7_WIDTH_RESTRICTED_ENVS = 5
+
+ X_CS_LFS_CFLAGS = 1000
+ X_CS_LFS_LDFLAGS = 1001
+ X_CS_LFS_LIBS = 1002
+ X_CS_LFS_LINTFLAGS = 1003
+ X_CS_LFS64_CFLAGS = 1004
+ X_CS_LFS64_LDFLAGS = 1005
+ X_CS_LFS64_LIBS = 1006
+ X_CS_LFS64_LINTFLAGS = 1007
+
+ X_CS_XBS5_ILP32_OFF32_CFLAGS = 1100
+ X_CS_XBS5_ILP32_OFF32_LDFLAGS = 1101
+ X_CS_XBS5_ILP32_OFF32_LIBS = 1102
+ X_CS_XBS5_ILP32_OFF32_LINTFLAGS = 1103
+ X_CS_XBS5_ILP32_OFFBIG_CFLAGS = 1104
+ X_CS_XBS5_ILP32_OFFBIG_LDFLAGS = 1105
+ X_CS_XBS5_ILP32_OFFBIG_LIBS = 1106
+ X_CS_XBS5_ILP32_OFFBIG_LINTFLAGS = 1107
+ X_CS_XBS5_LP64_OFF64_CFLAGS = 1108
+ X_CS_XBS5_LP64_OFF64_LDFLAGS = 1109
+ X_CS_XBS5_LP64_OFF64_LIBS = 1110
+ X_CS_XBS5_LP64_OFF64_LINTFLAGS = 1111
+ X_CS_XBS5_LPBIG_OFFBIG_CFLAGS = 1112
+ X_CS_XBS5_LPBIG_OFFBIG_LDFLAGS = 1113
+ X_CS_XBS5_LPBIG_OFFBIG_LIBS = 1114
+ X_CS_XBS5_LPBIG_OFFBIG_LINTFLAGS = 1115
+
+ X_CS_POSIX_V6_ILP32_OFF32_CFLAGS = 1116
+ X_CS_POSIX_V6_ILP32_OFF32_LDFLAGS = 1117
+ X_CS_POSIX_V6_ILP32_OFF32_LIBS = 1118
+ X_CS_POSIX_V6_ILP32_OFF32_LINTFLAGS = 1119
+ X_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS = 1120
+ X_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS = 1121
+ X_CS_POSIX_V6_ILP32_OFFBIG_LIBS = 1122
+ X_CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS = 1123
+ X_CS_POSIX_V6_LP64_OFF64_CFLAGS = 1124
+ X_CS_POSIX_V6_LP64_OFF64_LDFLAGS = 1125
+ X_CS_POSIX_V6_LP64_OFF64_LIBS = 1126
+ X_CS_POSIX_V6_LP64_OFF64_LINTFLAGS = 1127
+ X_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS = 1128
+ X_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS = 1129
+ X_CS_POSIX_V6_LPBIG_OFFBIG_LIBS = 1130
+ X_CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS = 1131
+
+ X_CS_POSIX_V7_ILP32_OFF32_CFLAGS = 1132
+ X_CS_POSIX_V7_ILP32_OFF32_LDFLAGS = 1133
+ X_CS_POSIX_V7_ILP32_OFF32_LIBS = 1134
+ X_CS_POSIX_V7_ILP32_OFF32_LINTFLAGS = 1135
+ X_CS_POSIX_V7_ILP32_OFFBIG_CFLAGS = 1136
+ X_CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS = 1137
+ X_CS_POSIX_V7_ILP32_OFFBIG_LIBS = 1138
+ X_CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS = 1139
+ X_CS_POSIX_V7_LP64_OFF64_CFLAGS = 1140
+ X_CS_POSIX_V7_LP64_OFF64_LDFLAGS = 1141
+ X_CS_POSIX_V7_LP64_OFF64_LIBS = 1142
+ X_CS_POSIX_V7_LP64_OFF64_LINTFLAGS = 1143
+ X_CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS = 1144
+ X_CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS = 1145
+ X_CS_POSIX_V7_LPBIG_OFFBIG_LIBS = 1146
+ X_CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS = 1147
+
+ X_CS_V6_ENV = 1148
+ X_CS_V7_ENV = 1149
+)
+
+// Values for the argument to `sysconf'.
+const ( /* confname.h:71:1: */
+ X_SC_ARG_MAX = 0
+ X_SC_CHILD_MAX = 1
+ X_SC_CLK_TCK = 2
+ X_SC_NGROUPS_MAX = 3
+ X_SC_OPEN_MAX = 4
+ X_SC_STREAM_MAX = 5
+ X_SC_TZNAME_MAX = 6
+ X_SC_JOB_CONTROL = 7
+ X_SC_SAVED_IDS = 8
+ X_SC_REALTIME_SIGNALS = 9
+ X_SC_PRIORITY_SCHEDULING = 10
+ X_SC_TIMERS = 11
+ X_SC_ASYNCHRONOUS_IO = 12
+ X_SC_PRIORITIZED_IO = 13
+ X_SC_SYNCHRONIZED_IO = 14
+ X_SC_FSYNC = 15
+ X_SC_MAPPED_FILES = 16
+ X_SC_MEMLOCK = 17
+ X_SC_MEMLOCK_RANGE = 18
+ X_SC_MEMORY_PROTECTION = 19
+ X_SC_MESSAGE_PASSING = 20
+ X_SC_SEMAPHORES = 21
+ X_SC_SHARED_MEMORY_OBJECTS = 22
+ X_SC_AIO_LISTIO_MAX = 23
+ X_SC_AIO_MAX = 24
+ X_SC_AIO_PRIO_DELTA_MAX = 25
+ X_SC_DELAYTIMER_MAX = 26
+ X_SC_MQ_OPEN_MAX = 27
+ X_SC_MQ_PRIO_MAX = 28
+ X_SC_VERSION = 29
+ X_SC_PAGESIZE = 30
+ X_SC_RTSIG_MAX = 31
+ X_SC_SEM_NSEMS_MAX = 32
+ X_SC_SEM_VALUE_MAX = 33
+ X_SC_SIGQUEUE_MAX = 34
+ X_SC_TIMER_MAX = 35
+
+ // Values for the argument to `sysconf'
+ // corresponding to _POSIX2_* symbols.
+ X_SC_BC_BASE_MAX = 36
+ X_SC_BC_DIM_MAX = 37
+ X_SC_BC_SCALE_MAX = 38
+ X_SC_BC_STRING_MAX = 39
+ X_SC_COLL_WEIGHTS_MAX = 40
+ X_SC_EQUIV_CLASS_MAX = 41
+ X_SC_EXPR_NEST_MAX = 42
+ X_SC_LINE_MAX = 43
+ X_SC_RE_DUP_MAX = 44
+ X_SC_CHARCLASS_NAME_MAX = 45
+
+ X_SC_2_VERSION = 46
+ X_SC_2_C_BIND = 47
+ X_SC_2_C_DEV = 48
+ X_SC_2_FORT_DEV = 49
+ X_SC_2_FORT_RUN = 50
+ X_SC_2_SW_DEV = 51
+ X_SC_2_LOCALEDEF = 52
+
+ X_SC_PII = 53
+ X_SC_PII_XTI = 54
+ X_SC_PII_SOCKET = 55
+ X_SC_PII_INTERNET = 56
+ X_SC_PII_OSI = 57
+ X_SC_POLL = 58
+ X_SC_SELECT = 59
+ X_SC_UIO_MAXIOV = 60
+ X_SC_IOV_MAX = 60
+ X_SC_PII_INTERNET_STREAM = 61
+ X_SC_PII_INTERNET_DGRAM = 62
+ X_SC_PII_OSI_COTS = 63
+ X_SC_PII_OSI_CLTS = 64
+ X_SC_PII_OSI_M = 65
+ X_SC_T_IOV_MAX = 66
+
+ // Values according to POSIX 1003.1c (POSIX threads).
+ X_SC_THREADS = 67
+ X_SC_THREAD_SAFE_FUNCTIONS = 68
+ X_SC_GETGR_R_SIZE_MAX = 69
+ X_SC_GETPW_R_SIZE_MAX = 70
+ X_SC_LOGIN_NAME_MAX = 71
+ X_SC_TTY_NAME_MAX = 72
+ X_SC_THREAD_DESTRUCTOR_ITERATIONS = 73
+ X_SC_THREAD_KEYS_MAX = 74
+ X_SC_THREAD_STACK_MIN = 75
+ X_SC_THREAD_THREADS_MAX = 76
+ X_SC_THREAD_ATTR_STACKADDR = 77
+ X_SC_THREAD_ATTR_STACKSIZE = 78
+ X_SC_THREAD_PRIORITY_SCHEDULING = 79
+ X_SC_THREAD_PRIO_INHERIT = 80
+ X_SC_THREAD_PRIO_PROTECT = 81
+ X_SC_THREAD_PROCESS_SHARED = 82
+
+ X_SC_NPROCESSORS_CONF = 83
+ X_SC_NPROCESSORS_ONLN = 84
+ X_SC_PHYS_PAGES = 85
+ X_SC_AVPHYS_PAGES = 86
+ X_SC_ATEXIT_MAX = 87
+ X_SC_PASS_MAX = 88
+
+ X_SC_XOPEN_VERSION = 89
+ X_SC_XOPEN_XCU_VERSION = 90
+ X_SC_XOPEN_UNIX = 91
+ X_SC_XOPEN_CRYPT = 92
+ X_SC_XOPEN_ENH_I18N = 93
+ X_SC_XOPEN_SHM = 94
+
+ X_SC_2_CHAR_TERM = 95
+ X_SC_2_C_VERSION = 96
+ X_SC_2_UPE = 97
+
+ X_SC_XOPEN_XPG2 = 98
+ X_SC_XOPEN_XPG3 = 99
+ X_SC_XOPEN_XPG4 = 100
+
+ X_SC_CHAR_BIT = 101
+ X_SC_CHAR_MAX = 102
+ X_SC_CHAR_MIN = 103
+ X_SC_INT_MAX = 104
+ X_SC_INT_MIN = 105
+ X_SC_LONG_BIT = 106
+ X_SC_WORD_BIT = 107
+ X_SC_MB_LEN_MAX = 108
+ X_SC_NZERO = 109
+ X_SC_SSIZE_MAX = 110
+ X_SC_SCHAR_MAX = 111
+ X_SC_SCHAR_MIN = 112
+ X_SC_SHRT_MAX = 113
+ X_SC_SHRT_MIN = 114
+ X_SC_UCHAR_MAX = 115
+ X_SC_UINT_MAX = 116
+ X_SC_ULONG_MAX = 117
+ X_SC_USHRT_MAX = 118
+
+ X_SC_NL_ARGMAX = 119
+ X_SC_NL_LANGMAX = 120
+ X_SC_NL_MSGMAX = 121
+ X_SC_NL_NMAX = 122
+ X_SC_NL_SETMAX = 123
+ X_SC_NL_TEXTMAX = 124
+
+ X_SC_XBS5_ILP32_OFF32 = 125
+ X_SC_XBS5_ILP32_OFFBIG = 126
+ X_SC_XBS5_LP64_OFF64 = 127
+ X_SC_XBS5_LPBIG_OFFBIG = 128
+
+ X_SC_XOPEN_LEGACY = 129
+ X_SC_XOPEN_REALTIME = 130
+ X_SC_XOPEN_REALTIME_THREADS = 131
+
+ X_SC_ADVISORY_INFO = 132
+ X_SC_BARRIERS = 133
+ X_SC_BASE = 134
+ X_SC_C_LANG_SUPPORT = 135
+ X_SC_C_LANG_SUPPORT_R = 136
+ X_SC_CLOCK_SELECTION = 137
+ X_SC_CPUTIME = 138
+ X_SC_THREAD_CPUTIME = 139
+ X_SC_DEVICE_IO = 140
+ X_SC_DEVICE_SPECIFIC = 141
+ X_SC_DEVICE_SPECIFIC_R = 142
+ X_SC_FD_MGMT = 143
+ X_SC_FIFO = 144
+ X_SC_PIPE = 145
+ X_SC_FILE_ATTRIBUTES = 146
+ X_SC_FILE_LOCKING = 147
+ X_SC_FILE_SYSTEM = 148
+ X_SC_MONOTONIC_CLOCK = 149
+ X_SC_MULTI_PROCESS = 150
+ X_SC_SINGLE_PROCESS = 151
+ X_SC_NETWORKING = 152
+ X_SC_READER_WRITER_LOCKS = 153
+ X_SC_SPIN_LOCKS = 154
+ X_SC_REGEXP = 155
+ X_SC_REGEX_VERSION = 156
+ X_SC_SHELL = 157
+ X_SC_SIGNALS = 158
+ X_SC_SPAWN = 159
+ X_SC_SPORADIC_SERVER = 160
+ X_SC_THREAD_SPORADIC_SERVER = 161
+ X_SC_SYSTEM_DATABASE = 162
+ X_SC_SYSTEM_DATABASE_R = 163
+ X_SC_TIMEOUTS = 164
+ X_SC_TYPED_MEMORY_OBJECTS = 165
+ X_SC_USER_GROUPS = 166
+ X_SC_USER_GROUPS_R = 167
+ X_SC_2_PBS = 168
+ X_SC_2_PBS_ACCOUNTING = 169
+ X_SC_2_PBS_LOCATE = 170
+ X_SC_2_PBS_MESSAGE = 171
+ X_SC_2_PBS_TRACK = 172
+ X_SC_SYMLOOP_MAX = 173
+ X_SC_STREAMS = 174
+ X_SC_2_PBS_CHECKPOINT = 175
+
+ X_SC_V6_ILP32_OFF32 = 176
+ X_SC_V6_ILP32_OFFBIG = 177
+ X_SC_V6_LP64_OFF64 = 178
+ X_SC_V6_LPBIG_OFFBIG = 179
+
+ X_SC_HOST_NAME_MAX = 180
+ X_SC_TRACE = 181
+ X_SC_TRACE_EVENT_FILTER = 182
+ X_SC_TRACE_INHERIT = 183
+ X_SC_TRACE_LOG = 184
+
+ X_SC_LEVEL1_ICACHE_SIZE = 185
+ X_SC_LEVEL1_ICACHE_ASSOC = 186
+ X_SC_LEVEL1_ICACHE_LINESIZE = 187
+ X_SC_LEVEL1_DCACHE_SIZE = 188
+ X_SC_LEVEL1_DCACHE_ASSOC = 189
+ X_SC_LEVEL1_DCACHE_LINESIZE = 190
+ X_SC_LEVEL2_CACHE_SIZE = 191
+ X_SC_LEVEL2_CACHE_ASSOC = 192
+ X_SC_LEVEL2_CACHE_LINESIZE = 193
+ X_SC_LEVEL3_CACHE_SIZE = 194
+ X_SC_LEVEL3_CACHE_ASSOC = 195
+ X_SC_LEVEL3_CACHE_LINESIZE = 196
+ X_SC_LEVEL4_CACHE_SIZE = 197
+ X_SC_LEVEL4_CACHE_ASSOC = 198
+ X_SC_LEVEL4_CACHE_LINESIZE = 199
+ // Leave room here, maybe we need a few more cache levels some day.
+
+ X_SC_IPV6 = 235
+ X_SC_RAW_SOCKETS = 236
+
+ X_SC_V7_ILP32_OFF32 = 237
+ X_SC_V7_ILP32_OFFBIG = 238
+ X_SC_V7_LP64_OFF64 = 239
+ X_SC_V7_LPBIG_OFFBIG = 240
+
+ X_SC_SS_REPL_MAX = 241
+
+ X_SC_TRACE_EVENT_NAME_MAX = 242
+ X_SC_TRACE_NAME_MAX = 243
+ X_SC_TRACE_SYS_MAX = 244
+ X_SC_TRACE_USER_EVENT_MAX = 245
+
+ X_SC_XOPEN_STREAMS = 246
+
+ X_SC_THREAD_ROBUST_PRIO_INHERIT = 247
+ X_SC_THREAD_ROBUST_PRIO_PROTECT = 248
+
+ X_SC_MINSIGSTKSZ = 249
+
+ X_SC_SIGSTKSZ = 250
+)
+
+type Ptrdiff_t = int64 /* <builtin>:3:26 */
+
+type Size_t = uint64 /* <builtin>:9:23 */
+
+type Wchar_t = int32 /* <builtin>:15:24 */
+
+type X__int128_t = struct {
+ Flo int64
+ Fhi int64
+} /* <builtin>:21:43 */ // must match modernc.org/mathutil.Int128
+type X__uint128_t = struct {
+ Flo uint64
+ Fhi uint64
+} /* <builtin>:22:44 */ // must match modernc.org/mathutil.Int128
+
+type X__builtin_va_list = uintptr /* <builtin>:46:14 */
+type X__float128 = float64 /* <builtin>:47:21 */
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// POSIX Standard: 2.10 Symbolic Constants <unistd.h>
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// These are defined by the user (or the compiler)
+// to specify the desired environment:
+//
+// __STRICT_ANSI__ ISO Standard C.
+// _ISOC99_SOURCE Extensions to ISO C89 from ISO C99.
+// _ISOC11_SOURCE Extensions to ISO C99 from ISO C11.
+// _ISOC2X_SOURCE Extensions to ISO C99 from ISO C2X.
+// __STDC_WANT_LIB_EXT2__
+// Extensions to ISO C99 from TR 27431-2:2010.
+// __STDC_WANT_IEC_60559_BFP_EXT__
+// Extensions to ISO C11 from TS 18661-1:2014.
+// __STDC_WANT_IEC_60559_FUNCS_EXT__
+// Extensions to ISO C11 from TS 18661-4:2015.
+// __STDC_WANT_IEC_60559_TYPES_EXT__
+// Extensions to ISO C11 from TS 18661-3:2015.
+// __STDC_WANT_IEC_60559_EXT__
+// ISO C2X interfaces defined only in Annex F.
+//
+// _POSIX_SOURCE IEEE Std 1003.1.
+// _POSIX_C_SOURCE If ==1, like _POSIX_SOURCE; if >=2 add IEEE Std 1003.2;
+// if >=199309L, add IEEE Std 1003.1b-1993;
+// if >=199506L, add IEEE Std 1003.1c-1995;
+// if >=200112L, all of IEEE 1003.1-2004
+// if >=200809L, all of IEEE 1003.1-2008
+// _XOPEN_SOURCE Includes POSIX and XPG things. Set to 500 if
+// Single Unix conformance is wanted, to 600 for the
+// sixth revision, to 700 for the seventh revision.
+// _XOPEN_SOURCE_EXTENDED XPG things and X/Open Unix extensions.
+// _LARGEFILE_SOURCE Some more functions for correct standard I/O.
+// _LARGEFILE64_SOURCE Additional functionality from LFS for large files.
+// _FILE_OFFSET_BITS=N Select default filesystem interface.
+// _ATFILE_SOURCE Additional *at interfaces.
+// _DYNAMIC_STACK_SIZE_SOURCE Select correct (but non compile-time constant)
+// MINSIGSTKSZ, SIGSTKSZ and PTHREAD_STACK_MIN.
+// _GNU_SOURCE All of the above, plus GNU extensions.
+// _DEFAULT_SOURCE The default set of features (taking precedence over
+// __STRICT_ANSI__).
+//
+// _FORTIFY_SOURCE Add security hardening to many library functions.
+// Set to 1 or 2; 2 performs stricter checks than 1.
+//
+// _REENTRANT, _THREAD_SAFE
+// Obsolete; equivalent to _POSIX_C_SOURCE=199506L.
+//
+// The `-ansi' switch to the GNU C compiler, and standards conformance
+// options such as `-std=c99', define __STRICT_ANSI__. If none of
+// these are defined, or if _DEFAULT_SOURCE is defined, the default is
+// to have _POSIX_SOURCE set to one and _POSIX_C_SOURCE set to
+// 200809L, as well as enabling miscellaneous functions from BSD and
+// SVID. If more than one of these are defined, they accumulate. For
+// example __STRICT_ANSI__, _POSIX_SOURCE and _POSIX_C_SOURCE together
+// give you ISO C, 1003.1, and 1003.2, but nothing else.
+//
+// These are defined by this file and are used by the
+// header files to decide what to declare or define:
+//
+// __GLIBC_USE (F) Define things from feature set F. This is defined
+// to 1 or 0; the subsequent macros are either defined
+// or undefined, and those tests should be moved to
+// __GLIBC_USE.
+// __USE_ISOC11 Define ISO C11 things.
+// __USE_ISOC99 Define ISO C99 things.
+// __USE_ISOC95 Define ISO C90 AMD1 (C95) things.
+// __USE_ISOCXX11 Define ISO C++11 things.
+// __USE_POSIX Define IEEE Std 1003.1 things.
+// __USE_POSIX2 Define IEEE Std 1003.2 things.
+// __USE_POSIX199309 Define IEEE Std 1003.1, and .1b things.
+// __USE_POSIX199506 Define IEEE Std 1003.1, .1b, .1c and .1i things.
+// __USE_XOPEN Define XPG things.
+// __USE_XOPEN_EXTENDED Define X/Open Unix things.
+// __USE_UNIX98 Define Single Unix V2 things.
+// __USE_XOPEN2K Define XPG6 things.
+// __USE_XOPEN2KXSI Define XPG6 XSI things.
+// __USE_XOPEN2K8 Define XPG7 things.
+// __USE_XOPEN2K8XSI Define XPG7 XSI things.
+// __USE_LARGEFILE Define correct standard I/O things.
+// __USE_LARGEFILE64 Define LFS things with separate names.
+// __USE_FILE_OFFSET64 Define 64bit interface as default.
+// __USE_MISC Define things from 4.3BSD or System V Unix.
+// __USE_ATFILE Define *at interfaces and AT_* constants for them.
+// __USE_DYNAMIC_STACK_SIZE Define correct (but non compile-time constant)
+// MINSIGSTKSZ, SIGSTKSZ and PTHREAD_STACK_MIN.
+// __USE_GNU Define GNU extensions.
+// __USE_FORTIFY_LEVEL Additional security measures used, according to level.
+//
+// The macros `__GNU_LIBRARY__', `__GLIBC__', and `__GLIBC_MINOR__' are
+// defined by this file unconditionally. `__GNU_LIBRARY__' is provided
+// only for compatibility. All new code should use the other symbols
+// to test for features.
+//
+// All macros listed above as possibly being defined by this file are
+// explicitly undefined if they are not explicitly defined.
+// Feature-test macros that are not defined by the user or compiler
+// but are implied by the other feature-test macros defined (or by the
+// lack of any definitions) are defined by the file.
+//
+// ISO C feature test macros depend on the definition of the macro
+// when an affected header is included, not when the first system
+// header is included, and so they are handled in
+// <bits/libc-header-start.h>, which does not have a multiple include
+// guard. Feature test macros that can be handled from the first
+// system header included are handled here.
+
+// Undefine everything, so we get a clean slate.
+
+// Suppress kernel-name space pollution unless user expressedly asks
+// for it.
+
+// Convenience macro to test the version of gcc.
+// Use like this:
+// #if __GNUC_PREREQ (2,8)
+// ... code requiring gcc 2.8 or later ...
+// #endif
+// Note: only works for GCC 2.0 and later, because __GNUC_MINOR__ was
+// added in 2.0.
+
+// Similarly for clang. Features added to GCC after version 4.2 may
+// or may not also be available in clang, and clang's definitions of
+// __GNUC(_MINOR)__ are fixed at 4 and 2 respectively. Not all such
+// features can be queried via __has_extension/__has_feature.
+
+// Whether to use feature set F.
+
+// _BSD_SOURCE and _SVID_SOURCE are deprecated aliases for
+// _DEFAULT_SOURCE. If _DEFAULT_SOURCE is present we do not
+// issue a warning; the expectation is that the source is being
+// transitioned to use the new macro.
+
+// If _GNU_SOURCE was defined by the user, turn on all the other features.
+
+// If nothing (other than _GNU_SOURCE and _DEFAULT_SOURCE) is defined,
+// define _DEFAULT_SOURCE.
+
+// This is to enable the ISO C2X extension.
+
+// This is to enable the ISO C11 extension.
+
+// This is to enable the ISO C99 extension.
+
+// This is to enable the ISO C90 Amendment 1:1995 extension.
+
+// If none of the ANSI/POSIX macros are defined, or if _DEFAULT_SOURCE
+// is defined, use POSIX.1-2008 (or another version depending on
+// _XOPEN_SOURCE).
+
+// Some C libraries once required _REENTRANT and/or _THREAD_SAFE to be
+// defined in all multithreaded code. GNU libc has not required this
+// for many years. We now treat them as compatibility synonyms for
+// _POSIX_C_SOURCE=199506L, which is the earliest level of POSIX with
+// comprehensive support for multithreaded code. Using them never
+// lowers the selected level of POSIX conformance, only raises it.
+
+// Features part to handle 64-bit time_t support.
+// Copyright (C) 2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// We need to know the word size in order to check the time size.
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Bit size of the time_t type at glibc build time, RISC-V case.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// RV32 and RV64 both use 64-bit time_t
+
+// The function 'gets' existed in C89, but is impossible to use
+// safely. It has been removed from ISO C11 and ISO C++14. Note: for
+// compatibility with various implementations of <cstdio>, this test
+// must consider only the value of __cplusplus when compiling C++.
+
+// GNU formerly extended the scanf functions with modified format
+// specifiers %as, %aS, and %a[...] that allocate a buffer for the
+// input using malloc. This extension conflicts with ISO C99, which
+// defines %a as a standalone format specifier that reads a floating-
+// point number; moreover, POSIX.1-2008 provides the same feature
+// using the modifier letter 'm' instead (%ms, %mS, %m[...]).
+//
+// We now follow C99 unless GNU extensions are active and the compiler
+// is specifically in C89 or C++98 mode (strict or not). For
+// instance, with GCC, -std=gnu11 will have C99-compliant scanf with
+// or without -D_GNU_SOURCE, but -std=c89 -D_GNU_SOURCE will have the
+// old extension.
+
+// Get definitions of __STDC_* predefined macros, if the compiler has
+// not preincluded this header automatically.
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// This macro indicates that the installed library is the GNU C Library.
+// For historic reasons the value now is 6 and this will stay from now
+// on. The use of this variable is deprecated. Use __GLIBC__ and
+// __GLIBC_MINOR__ now (see below) when you want to test for a specific
+// GNU C library version and use the values in <gnu/lib-names.h> to get
+// the sonames of the shared libraries.
+
+// Major and minor version number of the GNU C library package. Use
+// these macros to test for features in specific releases.
+
+// This is here only because every header file already includes this one.
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// We are almost always included from features.h.
+
+// The GNU libc does not support any K&R compilers or the traditional mode
+// of ISO C compilers anymore. Check for some of the combinations not
+// supported anymore.
+
+// Some user header file might have defined this before.
+
+// Compilers that lack __has_attribute may object to
+// #if defined __has_attribute && __has_attribute (...)
+// even though they do not need to evaluate the right-hand side of the &&.
+// Similarly for __has_builtin, etc.
+
+// All functions, except those with callbacks or those that
+// synchronize memory, are leaf functions.
+
+// GCC can always grok prototypes. For C++ programs we add throw()
+// to help it optimize the function calls. But this only works with
+// gcc 2.8.x and egcs. For gcc 3.4 and up we even mark C functions
+// as non-throwing using a function attribute since programs can use
+// the -fexceptions options for C code as well.
+
+// These two macros are not used in glibc anymore. They are kept here
+// only because some other projects expect the macros to be defined.
+
+// For these things, GCC behaves the ANSI way normally,
+// and the non-ANSI way under -traditional.
+
+// This is not a typedef so `const __ptr_t' does the right thing.
+
+// C++ needs to know that types and declarations are C, not C++.
+
+// Fortify support.
+
+// Use __builtin_dynamic_object_size at _FORTIFY_SOURCE=3 when available.
+
+// Support for flexible arrays.
+// Headers that should use flexible arrays only if they're "real"
+// (e.g. only if they won't affect sizeof()) should test
+// #if __glibc_c99_flexarr_available.
+
+// __asm__ ("xyz") is used throughout the headers to rename functions
+// at the assembly language level. This is wrapped by the __REDIRECT
+// macro, in order to support compilers that can do this some other
+// way. When compilers don't support asm-names at all, we have to do
+// preprocessor tricks instead (which don't have exactly the right
+// semantics, but it's the best we can do).
+//
+// Example:
+// int __REDIRECT(setpgrp, (__pid_t pid, __pid_t pgrp), setpgid);
+
+//
+// #elif __SOME_OTHER_COMPILER__
+//
+// # define __REDIRECT(name, proto, alias) name proto; _Pragma("let " #name " = " #alias)
+
+// GCC and clang have various useful declarations that can be made with
+// the '__attribute__' syntax. All of the ways we use this do fine if
+// they are omitted for compilers that don't understand it.
+
+// At some point during the gcc 2.96 development the `malloc' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+
+// Tell the compiler which arguments to an allocation function
+// indicate the size of the allocation.
+
+// At some point during the gcc 2.96 development the `pure' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+
+// This declaration tells the compiler that the value is constant.
+
+// At some point during the gcc 3.1 development the `used' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+
+// Since version 3.2, gcc allows marking deprecated functions.
+
+// Since version 4.5, gcc also allows one to specify the message printed
+// when a deprecated function is used. clang claims to be gcc 4.2, but
+// may also support this feature.
+
+// At some point during the gcc 2.8 development the `format_arg' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+// If several `format_arg' attributes are given for the same function, in
+// gcc-3.0 and older, all but the last one are ignored. In newer gccs,
+// all designated arguments are considered.
+
+// At some point during the gcc 2.97 development the `strfmon' format
+// attribute for functions was introduced. We don't want to use it
+// unconditionally (although this would be possible) since it
+// generates warnings.
+
+// The nonnull function attribute marks pointer parameters that
+// must not be NULL.
+
+// The returns_nonnull function attribute marks the return type of the function
+// as always being non-null.
+
+// If fortification mode, we warn about unused results of certain
+// function calls which can lead to problems.
+
+// Forces a function to be always inlined.
+// The Linux kernel defines __always_inline in stddef.h (283d7573), and
+// it conflicts with this definition. Therefore undefine it first to
+// allow either header to be included first.
+
+// Associate error messages with the source location of the call site rather
+// than with the source location inside the function.
+
+// GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
+// inline semantics, unless -fgnu89-inline is used. Using __GNUC_STDC_INLINE__
+// or __GNUC_GNU_INLINE is not a good enough check for gcc because gcc versions
+// older than 4.3 may define these macros and still not guarantee GNU inlining
+// semantics.
+//
+// clang++ identifies itself as gcc-4.2, but has support for GNU inlining
+// semantics, that can be checked for by using the __GNUC_STDC_INLINE_ and
+// __GNUC_GNU_INLINE__ macro definitions.
+
+// GCC 4.3 and above allow passing all anonymous arguments of an
+// __extern_always_inline function to some other vararg function.
+
+// It is possible to compile containing GCC extensions even if GCC is
+// run in pedantic mode if the uses are carefully marked using the
+// `__extension__' keyword. But this is not generally available before
+// version 2.8.
+
+// __restrict is known in EGCS 1.2 and above, and in clang.
+// It works also in C++ mode (outside of arrays), but only when spelled
+// as '__restrict', not 'restrict'.
+
+// ISO C99 also allows to declare arrays as non-overlapping. The syntax is
+// array_name[restrict]
+// GCC 3.1 and clang support this.
+// This syntax is not usable in C++ mode.
+
+// Describes a char array whose address can safely be passed as the first
+// argument to strncpy and strncat, as the char array is not necessarily
+// a NUL-terminated string.
+
+// Undefine (also defined in libc-symbols.h).
+// Copies attributes from the declaration or type referenced by
+// the argument.
+
+// The #ifndef lets Gnulib avoid including these on non-glibc
+// platforms, where the includes typically do not exist.
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Properties of long double type. ldbl-128 version.
+// Copyright (C) 2016-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// long double is distinct from double, so there is nothing to
+// define here.
+
+// __glibc_macro_warning (MESSAGE) issues warning MESSAGE. This is
+// intended for use in preprocessor macros.
+//
+// Note: MESSAGE must be a _single_ string; concatenation of string
+// literals is not supported.
+
+// Generic selection (ISO C11) is a C-only feature, available in GCC
+// since version 4.9. Previous versions do not provide generic
+// selection, even though they might set __STDC_VERSION__ to 201112L,
+// when in -std=c11 mode. Thus, we must check for !defined __GNUC__
+// when testing __STDC_VERSION__ for generic selection support.
+// On the other hand, Clang also defines __GNUC__, so a clang-specific
+// check is required to enable the use of generic selection.
+
+// Designates a 1-based positional argument ref-index of pointer type
+// that can be used to access size-index elements of the pointed-to
+// array according to access mode, or at least one element when
+// size-index is not provided:
+// access (access-mode, <ref-index> [, <size-index>])
+
+// Designates dealloc as a function to call to deallocate objects
+// allocated by the declared function.
+
+// Specify that a function such as setjmp or vfork may return
+// twice.
+
+// If we don't have __REDIRECT, prototypes will be missing if
+// __USE_FILE_OFFSET64 but not __USE_LARGEFILE[64].
+
+// Decide whether we can define 'extern inline' functions in headers.
+
+// This is here only because every header file already includes this one.
+// Get the definitions of all the appropriate `__stub_FUNCTION' symbols.
+// <gnu/stubs.h> contains `#define __stub_FUNCTION' when FUNCTION is a stub
+// that will always return failure (and set errno to ENOSYS).
+// This file is automatically generated.
+// This file selects the right generated file of `__stub_FUNCTION' macros
+// based on the architecture being compiled for.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// This file is automatically generated.
+// It defines a symbol `__stub_FUNCTION' for each function
+// in the C library which is a stub, meaning it will fail
+// every time called, usually setting errno to ENOSYS.
+
+// These may be used to determine what facilities are present at compile time.
+// Their values can be obtained at run time from `sysconf'.
+
+// POSIX Standard approved as ISO/IEC 9945-1 as of September 2008.
+
+// These are not #ifdef __USE_POSIX2 because they are
+// in the theoretically application-owned namespace.
+
+// The utilities on GNU systems also correspond to this version.
+
+// The utilities on GNU systems also correspond to this version.
+
+// This symbol was required until the 2001 edition of POSIX.
+
+// If defined, the implementation supports the
+// C Language Bindings Option.
+
+// If defined, the implementation supports the
+// C Language Development Utilities Option.
+
+// If defined, the implementation supports the
+// Software Development Utilities Option.
+
+// If defined, the implementation supports the
+// creation of locales with the localedef utility.
+
+// X/Open version number to which the library conforms. It is selectable.
+
+// Commands and utilities from XPG4 are available.
+
+// We are compatible with the old published standards as well.
+
+// The X/Open Unix extensions are available.
+
+// The enhanced internationalization capabilities according to XPG4.2
+// are present.
+
+// The legacy interfaces are also available.
+
+// Get values of POSIX options:
+//
+// If these symbols are defined, the corresponding features are
+// always available. If not, they may be available sometimes.
+// The current values can be obtained with `sysconf'.
+//
+// _POSIX_JOB_CONTROL Job control is supported.
+// _POSIX_SAVED_IDS Processes have a saved set-user-ID
+// and a saved set-group-ID.
+// _POSIX_REALTIME_SIGNALS Real-time, queued signals are supported.
+// _POSIX_PRIORITY_SCHEDULING Priority scheduling is supported.
+// _POSIX_TIMERS POSIX.4 clocks and timers are supported.
+// _POSIX_ASYNCHRONOUS_IO Asynchronous I/O is supported.
+// _POSIX_PRIORITIZED_IO Prioritized asynchronous I/O is supported.
+// _POSIX_SYNCHRONIZED_IO Synchronizing file data is supported.
+// _POSIX_FSYNC The fsync function is present.
+// _POSIX_MAPPED_FILES Mapping of files to memory is supported.
+// _POSIX_MEMLOCK Locking of all memory is supported.
+// _POSIX_MEMLOCK_RANGE Locking of ranges of memory is supported.
+// _POSIX_MEMORY_PROTECTION Setting of memory protections is supported.
+// _POSIX_MESSAGE_PASSING POSIX.4 message queues are supported.
+// _POSIX_SEMAPHORES POSIX.4 counting semaphores are supported.
+// _POSIX_SHARED_MEMORY_OBJECTS POSIX.4 shared memory objects are supported.
+// _POSIX_THREADS POSIX.1c pthreads are supported.
+// _POSIX_THREAD_ATTR_STACKADDR Thread stack address attribute option supported.
+// _POSIX_THREAD_ATTR_STACKSIZE Thread stack size attribute option supported.
+// _POSIX_THREAD_SAFE_FUNCTIONS Thread-safe functions are supported.
+// _POSIX_THREAD_PRIORITY_SCHEDULING
+// POSIX.1c thread execution scheduling supported.
+// _POSIX_THREAD_PRIO_INHERIT Thread priority inheritance option supported.
+// _POSIX_THREAD_PRIO_PROTECT Thread priority protection option supported.
+// _POSIX_THREAD_PROCESS_SHARED Process-shared synchronization supported.
+// _POSIX_PII Protocol-independent interfaces are supported.
+// _POSIX_PII_XTI XTI protocol-indep. interfaces are supported.
+// _POSIX_PII_SOCKET Socket protocol-indep. interfaces are supported.
+// _POSIX_PII_INTERNET Internet family of protocols supported.
+// _POSIX_PII_INTERNET_STREAM Connection-mode Internet protocol supported.
+// _POSIX_PII_INTERNET_DGRAM Connectionless Internet protocol supported.
+// _POSIX_PII_OSI ISO/OSI family of protocols supported.
+// _POSIX_PII_OSI_COTS Connection-mode ISO/OSI service supported.
+// _POSIX_PII_OSI_CLTS Connectionless ISO/OSI service supported.
+// _POSIX_POLL Implementation supports `poll' function.
+// _POSIX_SELECT Implementation supports `select' and `pselect'.
+//
+// _XOPEN_REALTIME X/Open realtime support is available.
+// _XOPEN_REALTIME_THREADS X/Open realtime thread support is available.
+// _XOPEN_SHM Shared memory interface according to XPG4.2.
+//
+// _XBS5_ILP32_OFF32 Implementation provides environment with 32-bit
+// int, long, pointer, and off_t types.
+// _XBS5_ILP32_OFFBIG Implementation provides environment with 32-bit
+// int, long, and pointer and off_t with at least
+// 64 bits.
+// _XBS5_LP64_OFF64 Implementation provides environment with 32-bit
+// int, and 64-bit long, pointer, and off_t types.
+// _XBS5_LPBIG_OFFBIG Implementation provides environment with at
+// least 32 bits int and long, pointer, and off_t
+// with at least 64 bits.
+//
+// If any of these symbols is defined as -1, the corresponding option is not
+// true for any file. If any is defined as other than -1, the corresponding
+// option is true for all files. If a symbol is not defined at all, the value
+// for a specific file can be obtained from `pathconf' and `fpathconf'.
+//
+// _POSIX_CHOWN_RESTRICTED Only the super user can use `chown' to change
+// the owner of a file. `chown' can only be used
+// to change the group ID of a file to a group of
+// which the calling process is a member.
+// _POSIX_NO_TRUNC Pathname components longer than
+// NAME_MAX generate an error.
+// _POSIX_VDISABLE If defined, if the value of an element of the
+// `c_cc' member of `struct termios' is
+// _POSIX_VDISABLE, no character will have the
+// effect associated with that element.
+// _POSIX_SYNC_IO Synchronous I/O may be performed.
+// _POSIX_ASYNC_IO Asynchronous I/O may be performed.
+// _POSIX_PRIO_IO Prioritized Asynchronous I/O may be performed.
+//
+// Support for the Large File Support interface is not generally available.
+// If it is available the following constants are defined to one.
+// _LFS64_LARGEFILE Low-level I/O supports large files.
+// _LFS64_STDIO Standard I/O supports large files.
+//
+
+// Define POSIX options for Linux.
+// Copyright (C) 1996-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public License as
+// published by the Free Software Foundation; either version 2.1 of the
+// License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; see the file COPYING.LIB. If
+// not, see <https://www.gnu.org/licenses/>.
+
+// Job control is supported.
+
+// Processes have a saved set-user-ID and a saved set-group-ID.
+
+// Priority scheduling is not supported with the correct semantics,
+// but GNU/Linux applications expect that the corresponding interfaces
+// are available, even though the semantics do not meet the POSIX
+// requirements. See glibc bug 14829.
+
+// Synchronizing file data is supported.
+
+// The fsync function is present.
+
+// Mapping of files to memory is supported.
+
+// Locking of all memory is supported.
+
+// Locking of ranges of memory is supported.
+
+// Setting of memory protections is supported.
+
+// Some filesystems allow all users to change file ownership.
+
+// `c_cc' member of 'struct termios' structure can be disabled by
+// using the value _POSIX_VDISABLE.
+
+// Filenames are not silently truncated.
+
+// X/Open realtime support is available.
+
+// X/Open thread realtime support is available.
+
+// XPG4.2 shared memory is supported.
+
+// Tell we have POSIX threads.
+
+// We have the reentrant functions described in POSIX.
+
+// We provide priority scheduling for threads.
+
+// We support user-defined stack sizes.
+
+// We support user-defined stacks.
+
+// We support priority inheritence.
+
+// We support priority protection, though only for non-robust
+// mutexes.
+
+// We support priority inheritence for robust mutexes.
+
+// We do not support priority protection for robust mutexes.
+
+// We support POSIX.1b semaphores.
+
+// Real-time signals are supported.
+
+// We support asynchronous I/O.
+// Alternative name for Unix98.
+// Support for prioritization is also available.
+
+// The LFS support in asynchronous I/O is also available.
+
+// The rest of the LFS is also available.
+
+// POSIX shared memory objects are implemented.
+
+// CPU-time clocks support needs to be checked at runtime.
+
+// Clock support in threads must be also checked at runtime.
+
+// GNU libc provides regular expression handling.
+
+// Reader/Writer locks are available.
+
+// We have a POSIX shell.
+
+// We support the Timeouts option.
+
+// We support spinlocks.
+
+// The `spawn' function family is supported.
+
+// We have POSIX timers.
+
+// The barrier functions are available.
+
+// POSIX message queues are available.
+
+// Thread process-shared synchronization is supported.
+
+// The monotonic clock might be available.
+
+// The clock selection interfaces are available.
+
+// Advisory information interfaces are available.
+
+// IPv6 support is available.
+
+// Raw socket support is available.
+
+// We have at least one terminal.
+
+// Neither process nor thread sporadic server interfaces is available.
+
+// trace.h is not available.
+
+// Typed memory objects are not available.
+
+// Get the environment definitions from Unix98.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// This header should define the following symbols under the described
+// situations. A value `1' means that the model is always supported,
+// `-1' means it is never supported. Undefined means it cannot be
+// statically decided.
+//
+// _POSIX_V7_ILP32_OFF32 32bit int, long, pointers, and off_t type
+// _POSIX_V7_ILP32_OFFBIG 32bit int, long, and pointers and larger off_t type
+//
+// _POSIX_V7_LP64_OFF32 64bit long and pointers and 32bit off_t type
+// _POSIX_V7_LPBIG_OFFBIG 64bit long and pointers and large off_t type
+//
+// The macros _POSIX_V6_ILP32_OFF32, _POSIX_V6_ILP32_OFFBIG,
+// _POSIX_V6_LP64_OFF32, _POSIX_V6_LPBIG_OFFBIG, _XBS5_ILP32_OFF32,
+// _XBS5_ILP32_OFFBIG, _XBS5_LP64_OFF32, and _XBS5_LPBIG_OFFBIG were
+// used in previous versions of the Unix standard and are available
+// only for compatibility.
+
+// We can never provide environments with 32-bit wide pointers.
+// We also have no use (for now) for an environment with bigger pointers
+// and offsets.
+
+// By default we have 64-bit wide `long int', pointers and `off_t'.
+
+// Standard file descriptors.
+
+// All functions that are not declared anywhere else.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Bit size of the time_t type at glibc build time, RISC-V case.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// RV32 and RV64 both use 64-bit time_t
+
+// Convenience types.
+type X__u_char = uint8 /* types.h:31:23 */
+type X__u_short = uint16 /* types.h:32:28 */
+type X__u_int = uint32 /* types.h:33:22 */
+type X__u_long = uint64 /* types.h:34:27 */
+
+// Fixed-size types, underlying types depend on word size and compiler.
+type X__int8_t = int8 /* types.h:37:21 */
+type X__uint8_t = uint8 /* types.h:38:23 */
+type X__int16_t = int16 /* types.h:39:26 */
+type X__uint16_t = uint16 /* types.h:40:28 */
+type X__int32_t = int32 /* types.h:41:20 */
+type X__uint32_t = uint32 /* types.h:42:22 */
+type X__int64_t = int64 /* types.h:44:25 */
+type X__uint64_t = uint64 /* types.h:45:27 */
+
+// Smallest types with at least a given width.
+type X__int_least8_t = X__int8_t /* types.h:52:18 */
+type X__uint_least8_t = X__uint8_t /* types.h:53:19 */
+type X__int_least16_t = X__int16_t /* types.h:54:19 */
+type X__uint_least16_t = X__uint16_t /* types.h:55:20 */
+type X__int_least32_t = X__int32_t /* types.h:56:19 */
+type X__uint_least32_t = X__uint32_t /* types.h:57:20 */
+type X__int_least64_t = X__int64_t /* types.h:58:19 */
+type X__uint_least64_t = X__uint64_t /* types.h:59:20 */
+
+// quad_t is also 64 bits.
+type X__quad_t = int64 /* types.h:63:18 */
+type X__u_quad_t = uint64 /* types.h:64:27 */
+
+// Largest integral types.
+type X__intmax_t = int64 /* types.h:72:18 */
+type X__uintmax_t = uint64 /* types.h:73:27 */
+
+// The machine-dependent file <bits/typesizes.h> defines __*_T_TYPE
+// macros for each of the OS types we define below. The definitions
+// of those macros must use the following macros for underlying types.
+// We define __S<SIZE>_TYPE and __U<SIZE>_TYPE for the signed and unsigned
+// variants of each of the following integer types on this machine.
+//
+// 16 -- "natural" 16-bit type (always short)
+// 32 -- "natural" 32-bit type (always int)
+// 64 -- "natural" 64-bit type (long or long long)
+// LONG32 -- 32-bit type, traditionally long
+// QUAD -- 64-bit type, traditionally long long
+// WORD -- natural type of __WORDSIZE bits (int or long)
+// LONGWORD -- type of __WORDSIZE bits, traditionally long
+//
+// We distinguish WORD/LONGWORD, 32/LONG32, and 64/QUAD so that the
+// conventional uses of `long' or `long long' type modifiers match the
+// types we define, even when a less-adorned type would be the same size.
+// This matters for (somewhat) portably writing printf/scanf formats for
+// these types, where using the appropriate l or ll format modifiers can
+// make the typedefs and the formats match up across all GNU platforms. If
+// we used `long' when it's 64 bits where `long long' is expected, then the
+// compiler would warn about the formats not matching the argument types,
+// and the programmer changing them to shut up the compiler would break the
+// program's portability.
+//
+// Here we assume what is presently the case in all the GCC configurations
+// we support: long long is always 64 bits, long is always word/address size,
+// and int is always 32 bits.
+
+// No need to mark the typedef with __extension__.
+// bits/typesizes.h -- underlying types for *_t. For the generic Linux ABI.
+// Copyright (C) 2011-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+// Contributed by Chris Metcalf <cmetcalf@tilera.com>, 2011.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// See <bits/types.h> for the meaning of these macros. This file exists so
+// that <bits/types.h> need not vary across different GNU platforms.
+
+// Tell the libc code that off_t and off64_t are actually the same type
+// for all ABI purposes, even if possibly expressed as different base types
+// for C type-checking purposes.
+
+// Same for ino_t and ino64_t.
+
+// And for __rlim_t and __rlim64_t.
+
+// And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t.
+
+// And for getitimer, setitimer and rusage
+
+// Number of descriptors that can fit in an `fd_set'.
+
+// bits/time64.h -- underlying types for __time64_t. RISC-V version.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Define __TIME64_T_TYPE so that it is always a 64-bit type.
+
+// If we already have 64-bit time type then use it.
+
+type X__dev_t = uint64 /* types.h:145:25 */ // Type of device numbers.
+type X__uid_t = uint32 /* types.h:146:25 */ // Type of user identifications.
+type X__gid_t = uint32 /* types.h:147:25 */ // Type of group identifications.
+type X__ino_t = uint64 /* types.h:148:25 */ // Type of file serial numbers.
+type X__ino64_t = uint64 /* types.h:149:27 */ // Type of file serial numbers (LFS).
+type X__mode_t = uint32 /* types.h:150:26 */ // Type of file attribute bitmasks.
+type X__nlink_t = uint32 /* types.h:151:27 */ // Type of file link counts.
+type X__off_t = int64 /* types.h:152:25 */ // Type of file sizes and offsets.
+type X__off64_t = int64 /* types.h:153:27 */ // Type of file sizes and offsets (LFS).
+type X__pid_t = int32 /* types.h:154:25 */ // Type of process identifications.
+type X__fsid_t = struct{ F__val [2]int32 } /* types.h:155:26 */ // Type of file system IDs.
+type X__clock_t = int64 /* types.h:156:27 */ // Type of CPU usage counts.
+type X__rlim_t = uint64 /* types.h:157:26 */ // Type for resource measurement.
+type X__rlim64_t = uint64 /* types.h:158:28 */ // Type for resource measurement (LFS).
+type X__id_t = uint32 /* types.h:159:24 */ // General type for IDs.
+type X__time_t = int64 /* types.h:160:26 */ // Seconds since the Epoch.
+type X__useconds_t = uint32 /* types.h:161:30 */ // Count of microseconds.
+type X__suseconds_t = int64 /* types.h:162:31 */ // Signed count of microseconds.
+type X__suseconds64_t = int64 /* types.h:163:33 */
+
+type X__daddr_t = int32 /* types.h:165:27 */ // The type of a disk address.
+type X__key_t = int32 /* types.h:166:25 */ // Type of an IPC key.
+
+// Clock ID used in clock and timer functions.
+type X__clockid_t = int32 /* types.h:169:29 */
+
+// Timer ID returned by `timer_create'.
+type X__timer_t = uintptr /* types.h:172:12 */
+
+// Type to represent block size.
+type X__blksize_t = int32 /* types.h:175:29 */
+
+// Types from the Large File Support interface.
+
+// Type to count number of disk blocks.
+type X__blkcnt_t = int64 /* types.h:180:28 */
+type X__blkcnt64_t = int64 /* types.h:181:30 */
+
+// Type to count file system blocks.
+type X__fsblkcnt_t = uint64 /* types.h:184:30 */
+type X__fsblkcnt64_t = uint64 /* types.h:185:32 */
+
+// Type to count file system nodes.
+type X__fsfilcnt_t = uint64 /* types.h:188:30 */
+type X__fsfilcnt64_t = uint64 /* types.h:189:32 */
+
+// Type of miscellaneous file system fields.
+type X__fsword_t = int64 /* types.h:192:28 */
+
+type X__ssize_t = int64 /* types.h:194:27 */ // Type of a byte count, or error.
+
+// Signed long type used in system calls.
+type X__syscall_slong_t = int64 /* types.h:197:33 */
+// Unsigned long type used in system calls.
+type X__syscall_ulong_t = uint64 /* types.h:199:33 */
+
+// These few don't really vary by system, they always correspond
+// to one of the other defined types.
+type X__loff_t = X__off64_t /* types.h:203:19 */ // Type of file sizes and offsets (LFS).
+type X__caddr_t = uintptr /* types.h:204:14 */
+
+// Duplicates info from stdint.h but this is used in unistd.h.
+type X__intptr_t = int64 /* types.h:207:25 */
+
+// Duplicate info from sys/socket.h.
+type X__socklen_t = uint32 /* types.h:210:23 */
+
+// C99: An integer type that can be accessed as an atomic entity,
+// even in the presence of asynchronous interrupts.
+// It is not currently necessary for this to be machine-specific.
+type X__sig_atomic_t = int32 /* types.h:215:13 */
+
+// Seconds since the Epoch, visible to user code when time_t is too
+// narrow only for consistency with the old way of widening too-narrow
+// types. User code should never use __time64_t.
+
+type Ssize_t = X__ssize_t /* unistd.h:220:19 */
+
+// Wide character type.
+// Locale-writers should change this as necessary to
+// be big enough to hold unique values not between 0 and 127,
+// and not (wchar_t) -1, for each defined multibyte character.
+
+// Define this type if we are doing the whole job,
+// or if we want this type in particular.
+
+// A null pointer constant.
+
+// The Single Unix specification says that some more types are
+// available here.
+type Gid_t = X__gid_t /* unistd.h:232:17 */
+
+type Uid_t = X__uid_t /* unistd.h:237:17 */
+
+type Off_t = X__off64_t /* unistd.h:245:19 */
+
+type Useconds_t = X__useconds_t /* unistd.h:255:22 */
+
+type Pid_t = X__pid_t /* unistd.h:260:17 */
+
+type Intptr_t = X__intptr_t /* unistd.h:267:20 */
+
+type Socklen_t = X__socklen_t /* unistd.h:274:21 */
+
+// Define some macros helping to catch buffer overflows.
+
+// System-specific extensions.
+// System-specific extensions of <unistd.h>, Linux version.
+// Copyright (C) 2019-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+var _ uint8 /* gen.c:2:13: */
diff --git a/vendor/modernc.org/libc/utime/capi_linux_riscv64.go b/vendor/modernc.org/libc/utime/capi_linux_riscv64.go
new file mode 100644
index 00000000..e1131046
--- /dev/null
+++ b/vendor/modernc.org/libc/utime/capi_linux_riscv64.go
@@ -0,0 +1,5 @@
+// Code generated by 'ccgo utime/gen.c -crt-import-path -export-defines -export-enums -export-externs X -export-fields F -export-structs -export-typedefs -header -hide _OSSwapInt16,_OSSwapInt32,_OSSwapInt64 -o utime/utime_linux_riscv64.go -pkgname utime', DO NOT EDIT.
+
+package utime
+
+var CAPI = map[string]struct{}{}
diff --git a/vendor/modernc.org/libc/utime/utime_linux_riscv64.go b/vendor/modernc.org/libc/utime/utime_linux_riscv64.go
new file mode 100644
index 00000000..56149f5c
--- /dev/null
+++ b/vendor/modernc.org/libc/utime/utime_linux_riscv64.go
@@ -0,0 +1,951 @@
+// Code generated by 'ccgo utime/gen.c -crt-import-path "" -export-defines "" -export-enums "" -export-externs X -export-fields F -export-structs "" -export-typedefs "" -header -hide _OSSwapInt16,_OSSwapInt32,_OSSwapInt64 -o utime/utime_linux_riscv64.go -pkgname utime', DO NOT EDIT.
+
+package utime
+
+import (
+ "math"
+ "reflect"
+ "sync/atomic"
+ "unsafe"
+)
+
+var _ = math.Pi
+var _ reflect.Kind
+var _ atomic.Value
+var _ unsafe.Pointer
+
+const (
+ X_ATFILE_SOURCE = 1
+ X_BITS_TIME64_H = 1
+ X_BITS_TYPESIZES_H = 1
+ X_BITS_TYPES_H = 1
+ X_DEFAULT_SOURCE = 1
+ X_FEATURES_H = 1
+ X_FILE_OFFSET_BITS = 64
+ X_LP64 = 1
+ X_POSIX_C_SOURCE = 200809
+ X_POSIX_SOURCE = 1
+ X_STDC_PREDEF_H = 1
+ X_SYS_CDEFS_H = 1
+ X_UTIME_H = 1
+ Linux = 1
+ Unix = 1
+)
+
+type Ptrdiff_t = int64 /* <builtin>:3:26 */
+
+type Size_t = uint64 /* <builtin>:9:23 */
+
+type Wchar_t = int32 /* <builtin>:15:24 */
+
+type X__int128_t = struct {
+ Flo int64
+ Fhi int64
+} /* <builtin>:21:43 */ // must match modernc.org/mathutil.Int128
+type X__uint128_t = struct {
+ Flo uint64
+ Fhi uint64
+} /* <builtin>:22:44 */ // must match modernc.org/mathutil.Int128
+
+type X__builtin_va_list = uintptr /* <builtin>:46:14 */
+type X__float128 = float64 /* <builtin>:47:21 */
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// POSIX Standard: 5.6.6 Set File Access and Modification Times <utime.h>
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// These are defined by the user (or the compiler)
+// to specify the desired environment:
+//
+// __STRICT_ANSI__ ISO Standard C.
+// _ISOC99_SOURCE Extensions to ISO C89 from ISO C99.
+// _ISOC11_SOURCE Extensions to ISO C99 from ISO C11.
+// _ISOC2X_SOURCE Extensions to ISO C99 from ISO C2X.
+// __STDC_WANT_LIB_EXT2__
+// Extensions to ISO C99 from TR 27431-2:2010.
+// __STDC_WANT_IEC_60559_BFP_EXT__
+// Extensions to ISO C11 from TS 18661-1:2014.
+// __STDC_WANT_IEC_60559_FUNCS_EXT__
+// Extensions to ISO C11 from TS 18661-4:2015.
+// __STDC_WANT_IEC_60559_TYPES_EXT__
+// Extensions to ISO C11 from TS 18661-3:2015.
+// __STDC_WANT_IEC_60559_EXT__
+// ISO C2X interfaces defined only in Annex F.
+//
+// _POSIX_SOURCE IEEE Std 1003.1.
+// _POSIX_C_SOURCE If ==1, like _POSIX_SOURCE; if >=2 add IEEE Std 1003.2;
+// if >=199309L, add IEEE Std 1003.1b-1993;
+// if >=199506L, add IEEE Std 1003.1c-1995;
+// if >=200112L, all of IEEE 1003.1-2004
+// if >=200809L, all of IEEE 1003.1-2008
+// _XOPEN_SOURCE Includes POSIX and XPG things. Set to 500 if
+// Single Unix conformance is wanted, to 600 for the
+// sixth revision, to 700 for the seventh revision.
+// _XOPEN_SOURCE_EXTENDED XPG things and X/Open Unix extensions.
+// _LARGEFILE_SOURCE Some more functions for correct standard I/O.
+// _LARGEFILE64_SOURCE Additional functionality from LFS for large files.
+// _FILE_OFFSET_BITS=N Select default filesystem interface.
+// _ATFILE_SOURCE Additional *at interfaces.
+// _DYNAMIC_STACK_SIZE_SOURCE Select correct (but non compile-time constant)
+// MINSIGSTKSZ, SIGSTKSZ and PTHREAD_STACK_MIN.
+// _GNU_SOURCE All of the above, plus GNU extensions.
+// _DEFAULT_SOURCE The default set of features (taking precedence over
+// __STRICT_ANSI__).
+//
+// _FORTIFY_SOURCE Add security hardening to many library functions.
+// Set to 1 or 2; 2 performs stricter checks than 1.
+//
+// _REENTRANT, _THREAD_SAFE
+// Obsolete; equivalent to _POSIX_C_SOURCE=199506L.
+//
+// The `-ansi' switch to the GNU C compiler, and standards conformance
+// options such as `-std=c99', define __STRICT_ANSI__. If none of
+// these are defined, or if _DEFAULT_SOURCE is defined, the default is
+// to have _POSIX_SOURCE set to one and _POSIX_C_SOURCE set to
+// 200809L, as well as enabling miscellaneous functions from BSD and
+// SVID. If more than one of these are defined, they accumulate. For
+// example __STRICT_ANSI__, _POSIX_SOURCE and _POSIX_C_SOURCE together
+// give you ISO C, 1003.1, and 1003.2, but nothing else.
+//
+// These are defined by this file and are used by the
+// header files to decide what to declare or define:
+//
+// __GLIBC_USE (F) Define things from feature set F. This is defined
+// to 1 or 0; the subsequent macros are either defined
+// or undefined, and those tests should be moved to
+// __GLIBC_USE.
+// __USE_ISOC11 Define ISO C11 things.
+// __USE_ISOC99 Define ISO C99 things.
+// __USE_ISOC95 Define ISO C90 AMD1 (C95) things.
+// __USE_ISOCXX11 Define ISO C++11 things.
+// __USE_POSIX Define IEEE Std 1003.1 things.
+// __USE_POSIX2 Define IEEE Std 1003.2 things.
+// __USE_POSIX199309 Define IEEE Std 1003.1, and .1b things.
+// __USE_POSIX199506 Define IEEE Std 1003.1, .1b, .1c and .1i things.
+// __USE_XOPEN Define XPG things.
+// __USE_XOPEN_EXTENDED Define X/Open Unix things.
+// __USE_UNIX98 Define Single Unix V2 things.
+// __USE_XOPEN2K Define XPG6 things.
+// __USE_XOPEN2KXSI Define XPG6 XSI things.
+// __USE_XOPEN2K8 Define XPG7 things.
+// __USE_XOPEN2K8XSI Define XPG7 XSI things.
+// __USE_LARGEFILE Define correct standard I/O things.
+// __USE_LARGEFILE64 Define LFS things with separate names.
+// __USE_FILE_OFFSET64 Define 64bit interface as default.
+// __USE_MISC Define things from 4.3BSD or System V Unix.
+// __USE_ATFILE Define *at interfaces and AT_* constants for them.
+// __USE_DYNAMIC_STACK_SIZE Define correct (but non compile-time constant)
+// MINSIGSTKSZ, SIGSTKSZ and PTHREAD_STACK_MIN.
+// __USE_GNU Define GNU extensions.
+// __USE_FORTIFY_LEVEL Additional security measures used, according to level.
+//
+// The macros `__GNU_LIBRARY__', `__GLIBC__', and `__GLIBC_MINOR__' are
+// defined by this file unconditionally. `__GNU_LIBRARY__' is provided
+// only for compatibility. All new code should use the other symbols
+// to test for features.
+//
+// All macros listed above as possibly being defined by this file are
+// explicitly undefined if they are not explicitly defined.
+// Feature-test macros that are not defined by the user or compiler
+// but are implied by the other feature-test macros defined (or by the
+// lack of any definitions) are defined by the file.
+//
+// ISO C feature test macros depend on the definition of the macro
+// when an affected header is included, not when the first system
+// header is included, and so they are handled in
+// <bits/libc-header-start.h>, which does not have a multiple include
+// guard. Feature test macros that can be handled from the first
+// system header included are handled here.
+
+// Undefine everything, so we get a clean slate.
+
+// Suppress kernel-name space pollution unless user expressedly asks
+// for it.
+
+// Convenience macro to test the version of gcc.
+// Use like this:
+// #if __GNUC_PREREQ (2,8)
+// ... code requiring gcc 2.8 or later ...
+// #endif
+// Note: only works for GCC 2.0 and later, because __GNUC_MINOR__ was
+// added in 2.0.
+
+// Similarly for clang. Features added to GCC after version 4.2 may
+// or may not also be available in clang, and clang's definitions of
+// __GNUC(_MINOR)__ are fixed at 4 and 2 respectively. Not all such
+// features can be queried via __has_extension/__has_feature.
+
+// Whether to use feature set F.
+
+// _BSD_SOURCE and _SVID_SOURCE are deprecated aliases for
+// _DEFAULT_SOURCE. If _DEFAULT_SOURCE is present we do not
+// issue a warning; the expectation is that the source is being
+// transitioned to use the new macro.
+
+// If _GNU_SOURCE was defined by the user, turn on all the other features.
+
+// If nothing (other than _GNU_SOURCE and _DEFAULT_SOURCE) is defined,
+// define _DEFAULT_SOURCE.
+
+// This is to enable the ISO C2X extension.
+
+// This is to enable the ISO C11 extension.
+
+// This is to enable the ISO C99 extension.
+
+// This is to enable the ISO C90 Amendment 1:1995 extension.
+
+// If none of the ANSI/POSIX macros are defined, or if _DEFAULT_SOURCE
+// is defined, use POSIX.1-2008 (or another version depending on
+// _XOPEN_SOURCE).
+
+// Some C libraries once required _REENTRANT and/or _THREAD_SAFE to be
+// defined in all multithreaded code. GNU libc has not required this
+// for many years. We now treat them as compatibility synonyms for
+// _POSIX_C_SOURCE=199506L, which is the earliest level of POSIX with
+// comprehensive support for multithreaded code. Using them never
+// lowers the selected level of POSIX conformance, only raises it.
+
+// Features part to handle 64-bit time_t support.
+// Copyright (C) 2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// We need to know the word size in order to check the time size.
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Bit size of the time_t type at glibc build time, RISC-V case.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// RV32 and RV64 both use 64-bit time_t
+
+// The function 'gets' existed in C89, but is impossible to use
+// safely. It has been removed from ISO C11 and ISO C++14. Note: for
+// compatibility with various implementations of <cstdio>, this test
+// must consider only the value of __cplusplus when compiling C++.
+
+// GNU formerly extended the scanf functions with modified format
+// specifiers %as, %aS, and %a[...] that allocate a buffer for the
+// input using malloc. This extension conflicts with ISO C99, which
+// defines %a as a standalone format specifier that reads a floating-
+// point number; moreover, POSIX.1-2008 provides the same feature
+// using the modifier letter 'm' instead (%ms, %mS, %m[...]).
+//
+// We now follow C99 unless GNU extensions are active and the compiler
+// is specifically in C89 or C++98 mode (strict or not). For
+// instance, with GCC, -std=gnu11 will have C99-compliant scanf with
+// or without -D_GNU_SOURCE, but -std=c89 -D_GNU_SOURCE will have the
+// old extension.
+
+// Get definitions of __STDC_* predefined macros, if the compiler has
+// not preincluded this header automatically.
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// This macro indicates that the installed library is the GNU C Library.
+// For historic reasons the value now is 6 and this will stay from now
+// on. The use of this variable is deprecated. Use __GLIBC__ and
+// __GLIBC_MINOR__ now (see below) when you want to test for a specific
+// GNU C library version and use the values in <gnu/lib-names.h> to get
+// the sonames of the shared libraries.
+
+// Major and minor version number of the GNU C library package. Use
+// these macros to test for features in specific releases.
+
+// This is here only because every header file already includes this one.
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// We are almost always included from features.h.
+
+// The GNU libc does not support any K&R compilers or the traditional mode
+// of ISO C compilers anymore. Check for some of the combinations not
+// supported anymore.
+
+// Some user header file might have defined this before.
+
+// Compilers that lack __has_attribute may object to
+// #if defined __has_attribute && __has_attribute (...)
+// even though they do not need to evaluate the right-hand side of the &&.
+// Similarly for __has_builtin, etc.
+
+// All functions, except those with callbacks or those that
+// synchronize memory, are leaf functions.
+
+// GCC can always grok prototypes. For C++ programs we add throw()
+// to help it optimize the function calls. But this only works with
+// gcc 2.8.x and egcs. For gcc 3.4 and up we even mark C functions
+// as non-throwing using a function attribute since programs can use
+// the -fexceptions options for C code as well.
+
+// These two macros are not used in glibc anymore. They are kept here
+// only because some other projects expect the macros to be defined.
+
+// For these things, GCC behaves the ANSI way normally,
+// and the non-ANSI way under -traditional.
+
+// This is not a typedef so `const __ptr_t' does the right thing.
+
+// C++ needs to know that types and declarations are C, not C++.
+
+// Fortify support.
+
+// Use __builtin_dynamic_object_size at _FORTIFY_SOURCE=3 when available.
+
+// Support for flexible arrays.
+// Headers that should use flexible arrays only if they're "real"
+// (e.g. only if they won't affect sizeof()) should test
+// #if __glibc_c99_flexarr_available.
+
+// __asm__ ("xyz") is used throughout the headers to rename functions
+// at the assembly language level. This is wrapped by the __REDIRECT
+// macro, in order to support compilers that can do this some other
+// way. When compilers don't support asm-names at all, we have to do
+// preprocessor tricks instead (which don't have exactly the right
+// semantics, but it's the best we can do).
+//
+// Example:
+// int __REDIRECT(setpgrp, (__pid_t pid, __pid_t pgrp), setpgid);
+
+//
+// #elif __SOME_OTHER_COMPILER__
+//
+// # define __REDIRECT(name, proto, alias) name proto; _Pragma("let " #name " = " #alias)
+
+// GCC and clang have various useful declarations that can be made with
+// the '__attribute__' syntax. All of the ways we use this do fine if
+// they are omitted for compilers that don't understand it.
+
+// At some point during the gcc 2.96 development the `malloc' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+
+// Tell the compiler which arguments to an allocation function
+// indicate the size of the allocation.
+
+// At some point during the gcc 2.96 development the `pure' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+
+// This declaration tells the compiler that the value is constant.
+
+// At some point during the gcc 3.1 development the `used' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+
+// Since version 3.2, gcc allows marking deprecated functions.
+
+// Since version 4.5, gcc also allows one to specify the message printed
+// when a deprecated function is used. clang claims to be gcc 4.2, but
+// may also support this feature.
+
+// At some point during the gcc 2.8 development the `format_arg' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+// If several `format_arg' attributes are given for the same function, in
+// gcc-3.0 and older, all but the last one are ignored. In newer gccs,
+// all designated arguments are considered.
+
+// At some point during the gcc 2.97 development the `strfmon' format
+// attribute for functions was introduced. We don't want to use it
+// unconditionally (although this would be possible) since it
+// generates warnings.
+
+// The nonnull function attribute marks pointer parameters that
+// must not be NULL.
+
+// The returns_nonnull function attribute marks the return type of the function
+// as always being non-null.
+
+// If fortification mode, we warn about unused results of certain
+// function calls which can lead to problems.
+
+// Forces a function to be always inlined.
+// The Linux kernel defines __always_inline in stddef.h (283d7573), and
+// it conflicts with this definition. Therefore undefine it first to
+// allow either header to be included first.
+
+// Associate error messages with the source location of the call site rather
+// than with the source location inside the function.
+
+// GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
+// inline semantics, unless -fgnu89-inline is used. Using __GNUC_STDC_INLINE__
+// or __GNUC_GNU_INLINE is not a good enough check for gcc because gcc versions
+// older than 4.3 may define these macros and still not guarantee GNU inlining
+// semantics.
+//
+// clang++ identifies itself as gcc-4.2, but has support for GNU inlining
+// semantics, that can be checked for by using the __GNUC_STDC_INLINE_ and
+// __GNUC_GNU_INLINE__ macro definitions.
+
+// GCC 4.3 and above allow passing all anonymous arguments of an
+// __extern_always_inline function to some other vararg function.
+
+// It is possible to compile containing GCC extensions even if GCC is
+// run in pedantic mode if the uses are carefully marked using the
+// `__extension__' keyword. But this is not generally available before
+// version 2.8.
+
+// __restrict is known in EGCS 1.2 and above, and in clang.
+// It works also in C++ mode (outside of arrays), but only when spelled
+// as '__restrict', not 'restrict'.
+
+// ISO C99 also allows to declare arrays as non-overlapping. The syntax is
+// array_name[restrict]
+// GCC 3.1 and clang support this.
+// This syntax is not usable in C++ mode.
+
+// Describes a char array whose address can safely be passed as the first
+// argument to strncpy and strncat, as the char array is not necessarily
+// a NUL-terminated string.
+
+// Undefine (also defined in libc-symbols.h).
+// Copies attributes from the declaration or type referenced by
+// the argument.
+
+// The #ifndef lets Gnulib avoid including these on non-glibc
+// platforms, where the includes typically do not exist.
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Properties of long double type. ldbl-128 version.
+// Copyright (C) 2016-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// long double is distinct from double, so there is nothing to
+// define here.
+
+// __glibc_macro_warning (MESSAGE) issues warning MESSAGE. This is
+// intended for use in preprocessor macros.
+//
+// Note: MESSAGE must be a _single_ string; concatenation of string
+// literals is not supported.
+
+// Generic selection (ISO C11) is a C-only feature, available in GCC
+// since version 4.9. Previous versions do not provide generic
+// selection, even though they might set __STDC_VERSION__ to 201112L,
+// when in -std=c11 mode. Thus, we must check for !defined __GNUC__
+// when testing __STDC_VERSION__ for generic selection support.
+// On the other hand, Clang also defines __GNUC__, so a clang-specific
+// check is required to enable the use of generic selection.
+
+// Designates a 1-based positional argument ref-index of pointer type
+// that can be used to access size-index elements of the pointed-to
+// array according to access mode, or at least one element when
+// size-index is not provided:
+// access (access-mode, <ref-index> [, <size-index>])
+
+// Designates dealloc as a function to call to deallocate objects
+// allocated by the declared function.
+
+// Specify that a function such as setjmp or vfork may return
+// twice.
+
+// If we don't have __REDIRECT, prototypes will be missing if
+// __USE_FILE_OFFSET64 but not __USE_LARGEFILE[64].
+
+// Decide whether we can define 'extern inline' functions in headers.
+
+// This is here only because every header file already includes this one.
+// Get the definitions of all the appropriate `__stub_FUNCTION' symbols.
+// <gnu/stubs.h> contains `#define __stub_FUNCTION' when FUNCTION is a stub
+// that will always return failure (and set errno to ENOSYS).
+// This file is automatically generated.
+// This file selects the right generated file of `__stub_FUNCTION' macros
+// based on the architecture being compiled for.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// This file is automatically generated.
+// It defines a symbol `__stub_FUNCTION' for each function
+// in the C library which is a stub, meaning it will fail
+// every time called, usually setting errno to ENOSYS.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Bit size of the time_t type at glibc build time, RISC-V case.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// RV32 and RV64 both use 64-bit time_t
+
+// Convenience types.
+type X__u_char = uint8 /* types.h:31:23 */
+type X__u_short = uint16 /* types.h:32:28 */
+type X__u_int = uint32 /* types.h:33:22 */
+type X__u_long = uint64 /* types.h:34:27 */
+
+// Fixed-size types, underlying types depend on word size and compiler.
+type X__int8_t = int8 /* types.h:37:21 */
+type X__uint8_t = uint8 /* types.h:38:23 */
+type X__int16_t = int16 /* types.h:39:26 */
+type X__uint16_t = uint16 /* types.h:40:28 */
+type X__int32_t = int32 /* types.h:41:20 */
+type X__uint32_t = uint32 /* types.h:42:22 */
+type X__int64_t = int64 /* types.h:44:25 */
+type X__uint64_t = uint64 /* types.h:45:27 */
+
+// Smallest types with at least a given width.
+type X__int_least8_t = X__int8_t /* types.h:52:18 */
+type X__uint_least8_t = X__uint8_t /* types.h:53:19 */
+type X__int_least16_t = X__int16_t /* types.h:54:19 */
+type X__uint_least16_t = X__uint16_t /* types.h:55:20 */
+type X__int_least32_t = X__int32_t /* types.h:56:19 */
+type X__uint_least32_t = X__uint32_t /* types.h:57:20 */
+type X__int_least64_t = X__int64_t /* types.h:58:19 */
+type X__uint_least64_t = X__uint64_t /* types.h:59:20 */
+
+// quad_t is also 64 bits.
+type X__quad_t = int64 /* types.h:63:18 */
+type X__u_quad_t = uint64 /* types.h:64:27 */
+
+// Largest integral types.
+type X__intmax_t = int64 /* types.h:72:18 */
+type X__uintmax_t = uint64 /* types.h:73:27 */
+
+// The machine-dependent file <bits/typesizes.h> defines __*_T_TYPE
+// macros for each of the OS types we define below. The definitions
+// of those macros must use the following macros for underlying types.
+// We define __S<SIZE>_TYPE and __U<SIZE>_TYPE for the signed and unsigned
+// variants of each of the following integer types on this machine.
+//
+// 16 -- "natural" 16-bit type (always short)
+// 32 -- "natural" 32-bit type (always int)
+// 64 -- "natural" 64-bit type (long or long long)
+// LONG32 -- 32-bit type, traditionally long
+// QUAD -- 64-bit type, traditionally long long
+// WORD -- natural type of __WORDSIZE bits (int or long)
+// LONGWORD -- type of __WORDSIZE bits, traditionally long
+//
+// We distinguish WORD/LONGWORD, 32/LONG32, and 64/QUAD so that the
+// conventional uses of `long' or `long long' type modifiers match the
+// types we define, even when a less-adorned type would be the same size.
+// This matters for (somewhat) portably writing printf/scanf formats for
+// these types, where using the appropriate l or ll format modifiers can
+// make the typedefs and the formats match up across all GNU platforms. If
+// we used `long' when it's 64 bits where `long long' is expected, then the
+// compiler would warn about the formats not matching the argument types,
+// and the programmer changing them to shut up the compiler would break the
+// program's portability.
+//
+// Here we assume what is presently the case in all the GCC configurations
+// we support: long long is always 64 bits, long is always word/address size,
+// and int is always 32 bits.
+
+// No need to mark the typedef with __extension__.
+// bits/typesizes.h -- underlying types for *_t. For the generic Linux ABI.
+// Copyright (C) 2011-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+// Contributed by Chris Metcalf <cmetcalf@tilera.com>, 2011.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// See <bits/types.h> for the meaning of these macros. This file exists so
+// that <bits/types.h> need not vary across different GNU platforms.
+
+// Tell the libc code that off_t and off64_t are actually the same type
+// for all ABI purposes, even if possibly expressed as different base types
+// for C type-checking purposes.
+
+// Same for ino_t and ino64_t.
+
+// And for __rlim_t and __rlim64_t.
+
+// And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t.
+
+// And for getitimer, setitimer and rusage
+
+// Number of descriptors that can fit in an `fd_set'.
+
+// bits/time64.h -- underlying types for __time64_t. RISC-V version.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Define __TIME64_T_TYPE so that it is always a 64-bit type.
+
+// If we already have 64-bit time type then use it.
+
+type X__dev_t = uint64 /* types.h:145:25 */ // Type of device numbers.
+type X__uid_t = uint32 /* types.h:146:25 */ // Type of user identifications.
+type X__gid_t = uint32 /* types.h:147:25 */ // Type of group identifications.
+type X__ino_t = uint64 /* types.h:148:25 */ // Type of file serial numbers.
+type X__ino64_t = uint64 /* types.h:149:27 */ // Type of file serial numbers (LFS).
+type X__mode_t = uint32 /* types.h:150:26 */ // Type of file attribute bitmasks.
+type X__nlink_t = uint32 /* types.h:151:27 */ // Type of file link counts.
+type X__off_t = int64 /* types.h:152:25 */ // Type of file sizes and offsets.
+type X__off64_t = int64 /* types.h:153:27 */ // Type of file sizes and offsets (LFS).
+type X__pid_t = int32 /* types.h:154:25 */ // Type of process identifications.
+type X__fsid_t = struct{ F__val [2]int32 } /* types.h:155:26 */ // Type of file system IDs.
+type X__clock_t = int64 /* types.h:156:27 */ // Type of CPU usage counts.
+type X__rlim_t = uint64 /* types.h:157:26 */ // Type for resource measurement.
+type X__rlim64_t = uint64 /* types.h:158:28 */ // Type for resource measurement (LFS).
+type X__id_t = uint32 /* types.h:159:24 */ // General type for IDs.
+type X__time_t = int64 /* types.h:160:26 */ // Seconds since the Epoch.
+type X__useconds_t = uint32 /* types.h:161:30 */ // Count of microseconds.
+type X__suseconds_t = int64 /* types.h:162:31 */ // Signed count of microseconds.
+type X__suseconds64_t = int64 /* types.h:163:33 */
+
+type X__daddr_t = int32 /* types.h:165:27 */ // The type of a disk address.
+type X__key_t = int32 /* types.h:166:25 */ // Type of an IPC key.
+
+// Clock ID used in clock and timer functions.
+type X__clockid_t = int32 /* types.h:169:29 */
+
+// Timer ID returned by `timer_create'.
+type X__timer_t = uintptr /* types.h:172:12 */
+
+// Type to represent block size.
+type X__blksize_t = int32 /* types.h:175:29 */
+
+// Types from the Large File Support interface.
+
+// Type to count number of disk blocks.
+type X__blkcnt_t = int64 /* types.h:180:28 */
+type X__blkcnt64_t = int64 /* types.h:181:30 */
+
+// Type to count file system blocks.
+type X__fsblkcnt_t = uint64 /* types.h:184:30 */
+type X__fsblkcnt64_t = uint64 /* types.h:185:32 */
+
+// Type to count file system nodes.
+type X__fsfilcnt_t = uint64 /* types.h:188:30 */
+type X__fsfilcnt64_t = uint64 /* types.h:189:32 */
+
+// Type of miscellaneous file system fields.
+type X__fsword_t = int64 /* types.h:192:28 */
+
+type X__ssize_t = int64 /* types.h:194:27 */ // Type of a byte count, or error.
+
+// Signed long type used in system calls.
+type X__syscall_slong_t = int64 /* types.h:197:33 */
+// Unsigned long type used in system calls.
+type X__syscall_ulong_t = uint64 /* types.h:199:33 */
+
+// These few don't really vary by system, they always correspond
+// to one of the other defined types.
+type X__loff_t = X__off64_t /* types.h:203:19 */ // Type of file sizes and offsets (LFS).
+type X__caddr_t = uintptr /* types.h:204:14 */
+
+// Duplicates info from stdint.h but this is used in unistd.h.
+type X__intptr_t = int64 /* types.h:207:25 */
+
+// Duplicate info from sys/socket.h.
+type X__socklen_t = uint32 /* types.h:210:23 */
+
+// C99: An integer type that can be accessed as an atomic entity,
+// even in the presence of asynchronous interrupts.
+// It is not currently necessary for this to be machine-specific.
+type X__sig_atomic_t = int32 /* types.h:215:13 */
+
+// Seconds since the Epoch, visible to user code when time_t is too
+// narrow only for consistency with the old way of widening too-narrow
+// types. User code should never use __time64_t.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Returned by `time'.
+type Time_t = X__time_t /* time_t.h:10:18 */
+
+// Structure describing file times.
+type Utimbuf = struct {
+ Factime X__time_t
+ Fmodtime X__time_t
+} /* utime.h:36:1 */
+
+var _ uint8 /* gen.c:2:13: */
diff --git a/vendor/modernc.org/libc/uuid/uuid/capi_linux_riscv64.go b/vendor/modernc.org/libc/uuid/uuid/capi_linux_riscv64.go
new file mode 100644
index 00000000..1439e9a1
--- /dev/null
+++ b/vendor/modernc.org/libc/uuid/uuid/capi_linux_riscv64.go
@@ -0,0 +1,5 @@
+// Code generated by 'ccgo uuid/uuid/gen.c -crt-import-path -export-defines -export-enums -export-externs X -export-fields F -export-structs -export-typedefs -header -hide _OSSwapInt16,_OSSwapInt32,_OSSwapInt64 -o uuid/uuid/uuid_linux_amd64.go -pkgname uuid', DO NOT EDIT.
+
+package uuid
+
+var CAPI = map[string]struct{}{}
diff --git a/vendor/modernc.org/libc/uuid/uuid/uuid_linux_riscv64.go b/vendor/modernc.org/libc/uuid/uuid/uuid_linux_riscv64.go
new file mode 100644
index 00000000..84c78a0e
--- /dev/null
+++ b/vendor/modernc.org/libc/uuid/uuid/uuid_linux_riscv64.go
@@ -0,0 +1,1975 @@
+// Code generated by 'ccgo uuid/uuid/gen.c -crt-import-path "" -export-defines "" -export-enums "" -export-externs X -export-fields F -export-structs "" -export-typedefs "" -header -hide _OSSwapInt16,_OSSwapInt32,_OSSwapInt64 -o uuid/uuid/uuid_linux_amd64.go -pkgname uuid', DO NOT EDIT.
+
+package uuid
+
+import (
+ "math"
+ "reflect"
+ "sync/atomic"
+ "unsafe"
+)
+
+var _ = math.Pi
+var _ reflect.Kind
+var _ atomic.Value
+var _ unsafe.Pointer
+
+const (
+ BIG_ENDIAN = 4321
+ BYTE_ORDER = 1234
+ CLOCK_BOOTTIME = 7
+ CLOCK_BOOTTIME_ALARM = 9
+ CLOCK_MONOTONIC = 1
+ CLOCK_MONOTONIC_COARSE = 6
+ CLOCK_MONOTONIC_RAW = 4
+ CLOCK_PROCESS_CPUTIME_ID = 2
+ CLOCK_REALTIME = 0
+ CLOCK_REALTIME_ALARM = 8
+ CLOCK_REALTIME_COARSE = 5
+ CLOCK_TAI = 11
+ CLOCK_THREAD_CPUTIME_ID = 3
+ FD_SETSIZE = 1024
+ LITTLE_ENDIAN = 1234
+ PDP_ENDIAN = 3412
+ TIMER_ABSTIME = 1
+ TIME_UTC = 1
+ UUID_STR_LEN = 37
+ UUID_TYPE_DCE_MD5 = 3
+ UUID_TYPE_DCE_RANDOM = 4
+ UUID_TYPE_DCE_SECURITY = 2
+ UUID_TYPE_DCE_SHA1 = 5
+ UUID_TYPE_DCE_TIME = 1
+ UUID_TYPE_MASK = 0xf
+ UUID_TYPE_SHIFT = 4
+ UUID_VARIANT_DCE = 1
+ UUID_VARIANT_MASK = 0x7
+ UUID_VARIANT_MICROSOFT = 2
+ UUID_VARIANT_NCS = 0
+ UUID_VARIANT_OTHER = 3
+ UUID_VARIANT_SHIFT = 5
+ X_ATFILE_SOURCE = 1
+ X_BITS_BYTESWAP_H = 1
+ X_BITS_ENDIANNESS_H = 1
+ X_BITS_ENDIAN_H = 1
+ X_BITS_PTHREADTYPES_ARCH_H = 1
+ X_BITS_PTHREADTYPES_COMMON_H = 1
+ X_BITS_STDINT_INTN_H = 1
+ X_BITS_TIME64_H = 1
+ X_BITS_TIME_H = 1
+ X_BITS_TYPESIZES_H = 1
+ X_BITS_TYPES_H = 1
+ X_BITS_TYPES_LOCALE_T_H = 1
+ X_BITS_TYPES___LOCALE_T_H = 1
+ X_BITS_UINTN_IDENTITY_H = 1
+ X_BSD_SIZE_T_ = 0
+ X_BSD_SIZE_T_DEFINED_ = 0
+ X_DEFAULT_SOURCE = 1
+ X_ENDIAN_H = 1
+ X_FEATURES_H = 1
+ X_FILE_OFFSET_BITS = 64
+ X_GCC_SIZE_T = 0
+ X_LP64 = 1
+ X_POSIX_C_SOURCE = 200809
+ X_POSIX_SOURCE = 1
+ X_RWLOCK_INTERNAL_H = 0
+ X_SIZET_ = 0
+ X_SIZE_T = 0
+ X_SIZE_T_ = 0
+ X_SIZE_T_DECLARED = 0
+ X_SIZE_T_DEFINED = 0
+ X_SIZE_T_DEFINED_ = 0
+ X_STDC_PREDEF_H = 1
+ X_STRUCT_TIMESPEC = 1
+ X_SYS_CDEFS_H = 1
+ X_SYS_SELECT_H = 1
+ X_SYS_SIZE_T_H = 0
+ X_SYS_TIME_H = 1
+ X_SYS_TYPES_H = 1
+ X_THREAD_MUTEX_INTERNAL_H = 1
+ X_THREAD_SHARED_TYPES_H = 1
+ X_TIME_H = 1
+ X_T_SIZE = 0
+ X_T_SIZE_ = 0
+ X_UUID_UUID_H = 0
+ Linux = 1
+ Unix = 1
+)
+
+// Values for the first argument to `getitimer' and `setitimer'.
+const ( /* time.h:89:1: */
+ // Timers run in real time.
+ ITIMER_REAL = 0
+ // Timers run only when the process is executing.
+ ITIMER_VIRTUAL = 1
+ // Timers run when the process is executing and when
+ // the system is executing on behalf of the process.
+ ITIMER_PROF = 2
+)
+
+type Ptrdiff_t = int64 /* <builtin>:3:26 */
+
+type Size_t = uint64 /* <builtin>:9:23 */
+
+type Wchar_t = int32 /* <builtin>:15:24 */
+
+type X__int128_t = struct {
+ Flo int64
+ Fhi int64
+} /* <builtin>:21:43 */ // must match modernc.org/mathutil.Int128
+type X__uint128_t = struct {
+ Flo uint64
+ Fhi uint64
+} /* <builtin>:22:44 */ // must match modernc.org/mathutil.Int128
+
+type X__builtin_va_list = uintptr /* <builtin>:46:14 */
+type X__float128 = float64 /* <builtin>:47:21 */
+
+// Public include file for the UUID library
+//
+// Copyright (C) 1996, 1997, 1998 Theodore Ts'o.
+//
+// %Begin-Header%
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions
+// are met:
+// 1. Redistributions of source code must retain the above copyright
+// notice, and the entire permission notice in its entirety,
+// including the disclaimer of warranties.
+// 2. Redistributions in binary form must reproduce the above copyright
+// notice, this list of conditions and the following disclaimer in the
+// documentation and/or other materials provided with the distribution.
+// 3. The name of the author may not be used to endorse or promote
+// products derived from this software without specific prior
+// written permission.
+//
+// THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
+// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF
+// WHICH ARE HEREBY DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE
+// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
+// OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+// USE OF THIS SOFTWARE, EVEN IF NOT ADVISED OF THE POSSIBILITY OF SUCH
+// DAMAGE.
+// %End-Header%
+
+// Copyright (C) 1991-2020 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// POSIX Standard: 2.6 Primitive System Data Types <sys/types.h>
+
+// Copyright (C) 1991-2020 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// These are defined by the user (or the compiler)
+// to specify the desired environment:
+//
+// __STRICT_ANSI__ ISO Standard C.
+// _ISOC99_SOURCE Extensions to ISO C89 from ISO C99.
+// _ISOC11_SOURCE Extensions to ISO C99 from ISO C11.
+// _ISOC2X_SOURCE Extensions to ISO C99 from ISO C2X.
+// __STDC_WANT_LIB_EXT2__
+// Extensions to ISO C99 from TR 27431-2:2010.
+// __STDC_WANT_IEC_60559_BFP_EXT__
+// Extensions to ISO C11 from TS 18661-1:2014.
+// __STDC_WANT_IEC_60559_FUNCS_EXT__
+// Extensions to ISO C11 from TS 18661-4:2015.
+// __STDC_WANT_IEC_60559_TYPES_EXT__
+// Extensions to ISO C11 from TS 18661-3:2015.
+//
+// _POSIX_SOURCE IEEE Std 1003.1.
+// _POSIX_C_SOURCE If ==1, like _POSIX_SOURCE; if >=2 add IEEE Std 1003.2;
+// if >=199309L, add IEEE Std 1003.1b-1993;
+// if >=199506L, add IEEE Std 1003.1c-1995;
+// if >=200112L, all of IEEE 1003.1-2004
+// if >=200809L, all of IEEE 1003.1-2008
+// _XOPEN_SOURCE Includes POSIX and XPG things. Set to 500 if
+// Single Unix conformance is wanted, to 600 for the
+// sixth revision, to 700 for the seventh revision.
+// _XOPEN_SOURCE_EXTENDED XPG things and X/Open Unix extensions.
+// _LARGEFILE_SOURCE Some more functions for correct standard I/O.
+// _LARGEFILE64_SOURCE Additional functionality from LFS for large files.
+// _FILE_OFFSET_BITS=N Select default filesystem interface.
+// _ATFILE_SOURCE Additional *at interfaces.
+// _GNU_SOURCE All of the above, plus GNU extensions.
+// _DEFAULT_SOURCE The default set of features (taking precedence over
+// __STRICT_ANSI__).
+//
+// _FORTIFY_SOURCE Add security hardening to many library functions.
+// Set to 1 or 2; 2 performs stricter checks than 1.
+//
+// _REENTRANT, _THREAD_SAFE
+// Obsolete; equivalent to _POSIX_C_SOURCE=199506L.
+//
+// The `-ansi' switch to the GNU C compiler, and standards conformance
+// options such as `-std=c99', define __STRICT_ANSI__. If none of
+// these are defined, or if _DEFAULT_SOURCE is defined, the default is
+// to have _POSIX_SOURCE set to one and _POSIX_C_SOURCE set to
+// 200809L, as well as enabling miscellaneous functions from BSD and
+// SVID. If more than one of these are defined, they accumulate. For
+// example __STRICT_ANSI__, _POSIX_SOURCE and _POSIX_C_SOURCE together
+// give you ISO C, 1003.1, and 1003.2, but nothing else.
+//
+// These are defined by this file and are used by the
+// header files to decide what to declare or define:
+//
+// __GLIBC_USE (F) Define things from feature set F. This is defined
+// to 1 or 0; the subsequent macros are either defined
+// or undefined, and those tests should be moved to
+// __GLIBC_USE.
+// __USE_ISOC11 Define ISO C11 things.
+// __USE_ISOC99 Define ISO C99 things.
+// __USE_ISOC95 Define ISO C90 AMD1 (C95) things.
+// __USE_ISOCXX11 Define ISO C++11 things.
+// __USE_POSIX Define IEEE Std 1003.1 things.
+// __USE_POSIX2 Define IEEE Std 1003.2 things.
+// __USE_POSIX199309 Define IEEE Std 1003.1, and .1b things.
+// __USE_POSIX199506 Define IEEE Std 1003.1, .1b, .1c and .1i things.
+// __USE_XOPEN Define XPG things.
+// __USE_XOPEN_EXTENDED Define X/Open Unix things.
+// __USE_UNIX98 Define Single Unix V2 things.
+// __USE_XOPEN2K Define XPG6 things.
+// __USE_XOPEN2KXSI Define XPG6 XSI things.
+// __USE_XOPEN2K8 Define XPG7 things.
+// __USE_XOPEN2K8XSI Define XPG7 XSI things.
+// __USE_LARGEFILE Define correct standard I/O things.
+// __USE_LARGEFILE64 Define LFS things with separate names.
+// __USE_FILE_OFFSET64 Define 64bit interface as default.
+// __USE_MISC Define things from 4.3BSD or System V Unix.
+// __USE_ATFILE Define *at interfaces and AT_* constants for them.
+// __USE_GNU Define GNU extensions.
+// __USE_FORTIFY_LEVEL Additional security measures used, according to level.
+//
+// The macros `__GNU_LIBRARY__', `__GLIBC__', and `__GLIBC_MINOR__' are
+// defined by this file unconditionally. `__GNU_LIBRARY__' is provided
+// only for compatibility. All new code should use the other symbols
+// to test for features.
+//
+// All macros listed above as possibly being defined by this file are
+// explicitly undefined if they are not explicitly defined.
+// Feature-test macros that are not defined by the user or compiler
+// but are implied by the other feature-test macros defined (or by the
+// lack of any definitions) are defined by the file.
+//
+// ISO C feature test macros depend on the definition of the macro
+// when an affected header is included, not when the first system
+// header is included, and so they are handled in
+// <bits/libc-header-start.h>, which does not have a multiple include
+// guard. Feature test macros that can be handled from the first
+// system header included are handled here.
+
+// Undefine everything, so we get a clean slate.
+
+// Suppress kernel-name space pollution unless user expressedly asks
+// for it.
+
+// Convenience macro to test the version of gcc.
+// Use like this:
+// #if __GNUC_PREREQ (2,8)
+// ... code requiring gcc 2.8 or later ...
+// #endif
+// Note: only works for GCC 2.0 and later, because __GNUC_MINOR__ was
+// added in 2.0.
+
+// Similarly for clang. Features added to GCC after version 4.2 may
+// or may not also be available in clang, and clang's definitions of
+// __GNUC(_MINOR)__ are fixed at 4 and 2 respectively. Not all such
+// features can be queried via __has_extension/__has_feature.
+
+// Whether to use feature set F.
+
+// _BSD_SOURCE and _SVID_SOURCE are deprecated aliases for
+// _DEFAULT_SOURCE. If _DEFAULT_SOURCE is present we do not
+// issue a warning; the expectation is that the source is being
+// transitioned to use the new macro.
+
+// If _GNU_SOURCE was defined by the user, turn on all the other features.
+
+// If nothing (other than _GNU_SOURCE and _DEFAULT_SOURCE) is defined,
+// define _DEFAULT_SOURCE.
+
+// This is to enable the ISO C2X extension.
+
+// This is to enable the ISO C11 extension.
+
+// This is to enable the ISO C99 extension.
+
+// This is to enable the ISO C90 Amendment 1:1995 extension.
+
+// If none of the ANSI/POSIX macros are defined, or if _DEFAULT_SOURCE
+// is defined, use POSIX.1-2008 (or another version depending on
+// _XOPEN_SOURCE).
+
+// Some C libraries once required _REENTRANT and/or _THREAD_SAFE to be
+// defined in all multithreaded code. GNU libc has not required this
+// for many years. We now treat them as compatibility synonyms for
+// _POSIX_C_SOURCE=199506L, which is the earliest level of POSIX with
+// comprehensive support for multithreaded code. Using them never
+// lowers the selected level of POSIX conformance, only raises it.
+
+// The function 'gets' existed in C89, but is impossible to use
+// safely. It has been removed from ISO C11 and ISO C++14. Note: for
+// compatibility with various implementations of <cstdio>, this test
+// must consider only the value of __cplusplus when compiling C++.
+
+// GNU formerly extended the scanf functions with modified format
+// specifiers %as, %aS, and %a[...] that allocate a buffer for the
+// input using malloc. This extension conflicts with ISO C99, which
+// defines %a as a standalone format specifier that reads a floating-
+// point number; moreover, POSIX.1-2008 provides the same feature
+// using the modifier letter 'm' instead (%ms, %mS, %m[...]).
+//
+// We now follow C99 unless GNU extensions are active and the compiler
+// is specifically in C89 or C++98 mode (strict or not). For
+// instance, with GCC, -std=gnu11 will have C99-compliant scanf with
+// or without -D_GNU_SOURCE, but -std=c89 -D_GNU_SOURCE will have the
+// old extension.
+
+// Get definitions of __STDC_* predefined macros, if the compiler has
+// not preincluded this header automatically.
+// Copyright (C) 1991-2020 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// This macro indicates that the installed library is the GNU C Library.
+// For historic reasons the value now is 6 and this will stay from now
+// on. The use of this variable is deprecated. Use __GLIBC__ and
+// __GLIBC_MINOR__ now (see below) when you want to test for a specific
+// GNU C library version and use the values in <gnu/lib-names.h> to get
+// the sonames of the shared libraries.
+
+// Major and minor version number of the GNU C library package. Use
+// these macros to test for features in specific releases.
+
+// This is here only because every header file already includes this one.
+// Copyright (C) 1992-2020 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// We are almost always included from features.h.
+
+// The GNU libc does not support any K&R compilers or the traditional mode
+// of ISO C compilers anymore. Check for some of the combinations not
+// anymore supported.
+
+// Some user header file might have defined this before.
+
+// All functions, except those with callbacks or those that
+// synchronize memory, are leaf functions.
+
+// GCC can always grok prototypes. For C++ programs we add throw()
+// to help it optimize the function calls. But this works only with
+// gcc 2.8.x and egcs. For gcc 3.2 and up we even mark C functions
+// as non-throwing using a function attribute since programs can use
+// the -fexceptions options for C code as well.
+
+// Compilers that are not clang may object to
+// #if defined __clang__ && __has_extension(...)
+// even though they do not need to evaluate the right-hand side of the &&.
+
+// These two macros are not used in glibc anymore. They are kept here
+// only because some other projects expect the macros to be defined.
+
+// For these things, GCC behaves the ANSI way normally,
+// and the non-ANSI way under -traditional.
+
+// This is not a typedef so `const __ptr_t' does the right thing.
+
+// C++ needs to know that types and declarations are C, not C++.
+
+// Fortify support.
+
+// Support for flexible arrays.
+// Headers that should use flexible arrays only if they're "real"
+// (e.g. only if they won't affect sizeof()) should test
+// #if __glibc_c99_flexarr_available.
+
+// __asm__ ("xyz") is used throughout the headers to rename functions
+// at the assembly language level. This is wrapped by the __REDIRECT
+// macro, in order to support compilers that can do this some other
+// way. When compilers don't support asm-names at all, we have to do
+// preprocessor tricks instead (which don't have exactly the right
+// semantics, but it's the best we can do).
+//
+// Example:
+// int __REDIRECT(setpgrp, (__pid_t pid, __pid_t pgrp), setpgid);
+
+//
+// #elif __SOME_OTHER_COMPILER__
+//
+// # define __REDIRECT(name, proto, alias) name proto; _Pragma("let " #name " = " #alias)
+
+// GCC has various useful declarations that can be made with the
+// `__attribute__' syntax. All of the ways we use this do fine if
+// they are omitted for compilers that don't understand it.
+
+// At some point during the gcc 2.96 development the `malloc' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+
+// Tell the compiler which arguments to an allocation function
+// indicate the size of the allocation.
+
+// At some point during the gcc 2.96 development the `pure' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+
+// This declaration tells the compiler that the value is constant.
+
+// At some point during the gcc 3.1 development the `used' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+
+// Since version 3.2, gcc allows marking deprecated functions.
+
+// Since version 4.5, gcc also allows one to specify the message printed
+// when a deprecated function is used. clang claims to be gcc 4.2, but
+// may also support this feature.
+
+// At some point during the gcc 2.8 development the `format_arg' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+// If several `format_arg' attributes are given for the same function, in
+// gcc-3.0 and older, all but the last one are ignored. In newer gccs,
+// all designated arguments are considered.
+
+// At some point during the gcc 2.97 development the `strfmon' format
+// attribute for functions was introduced. We don't want to use it
+// unconditionally (although this would be possible) since it
+// generates warnings.
+
+// The nonull function attribute allows to mark pointer parameters which
+// must not be NULL.
+
+// If fortification mode, we warn about unused results of certain
+// function calls which can lead to problems.
+
+// Forces a function to be always inlined.
+// The Linux kernel defines __always_inline in stddef.h (283d7573), and
+// it conflicts with this definition. Therefore undefine it first to
+// allow either header to be included first.
+
+// Associate error messages with the source location of the call site rather
+// than with the source location inside the function.
+
+// GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
+// inline semantics, unless -fgnu89-inline is used. Using __GNUC_STDC_INLINE__
+// or __GNUC_GNU_INLINE is not a good enough check for gcc because gcc versions
+// older than 4.3 may define these macros and still not guarantee GNU inlining
+// semantics.
+//
+// clang++ identifies itself as gcc-4.2, but has support for GNU inlining
+// semantics, that can be checked for by using the __GNUC_STDC_INLINE_ and
+// __GNUC_GNU_INLINE__ macro definitions.
+
+// GCC 4.3 and above allow passing all anonymous arguments of an
+// __extern_always_inline function to some other vararg function.
+
+// It is possible to compile containing GCC extensions even if GCC is
+// run in pedantic mode if the uses are carefully marked using the
+// `__extension__' keyword. But this is not generally available before
+// version 2.8.
+
+// __restrict is known in EGCS 1.2 and above.
+
+// ISO C99 also allows to declare arrays as non-overlapping. The syntax is
+// array_name[restrict]
+// GCC 3.1 supports this.
+
+// Describes a char array whose address can safely be passed as the first
+// argument to strncpy and strncat, as the char array is not necessarily
+// a NUL-terminated string.
+
+// Undefine (also defined in libc-symbols.h).
+// Copies attributes from the declaration or type referenced by
+// the argument.
+
+// Determine the wordsize from the preprocessor defines.
+
+// Both x86-64 and x32 use the 64-bit system call interface.
+// Properties of long double type. ldbl-96 version.
+// Copyright (C) 2016-2020 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// long double is distinct from double, so there is nothing to
+// define here.
+
+// __glibc_macro_warning (MESSAGE) issues warning MESSAGE. This is
+// intended for use in preprocessor macros.
+//
+// Note: MESSAGE must be a _single_ string; concatenation of string
+// literals is not supported.
+
+// Generic selection (ISO C11) is a C-only feature, available in GCC
+// since version 4.9. Previous versions do not provide generic
+// selection, even though they might set __STDC_VERSION__ to 201112L,
+// when in -std=c11 mode. Thus, we must check for !defined __GNUC__
+// when testing __STDC_VERSION__ for generic selection support.
+// On the other hand, Clang also defines __GNUC__, so a clang-specific
+// check is required to enable the use of generic selection.
+
+// If we don't have __REDIRECT, prototypes will be missing if
+// __USE_FILE_OFFSET64 but not __USE_LARGEFILE[64].
+
+// Decide whether we can define 'extern inline' functions in headers.
+
+// This is here only because every header file already includes this one.
+// Get the definitions of all the appropriate `__stub_FUNCTION' symbols.
+// <gnu/stubs.h> contains `#define __stub_FUNCTION' when FUNCTION is a stub
+// that will always return failure (and set errno to ENOSYS).
+// This file is automatically generated.
+// This file selects the right generated file of `__stub_FUNCTION' macros
+// based on the architecture being compiled for.
+
+// This file is automatically generated.
+// It defines a symbol `__stub_FUNCTION' for each function
+// in the C library which is a stub, meaning it will fail
+// every time called, usually setting errno to ENOSYS.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2020 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Copyright (C) 1991-2020 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines.
+
+// Both x86-64 and x32 use the 64-bit system call interface.
+// Bit size of the time_t type at glibc build time, x86-64 and x32 case.
+// Copyright (C) 2018-2020 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// For others, time size is word size.
+
+// Convenience types.
+type X__u_char = uint8 /* types.h:31:23 */
+type X__u_short = uint16 /* types.h:32:28 */
+type X__u_int = uint32 /* types.h:33:22 */
+type X__u_long = uint64 /* types.h:34:27 */
+
+// Fixed-size types, underlying types depend on word size and compiler.
+type X__int8_t = int8 /* types.h:37:21 */
+type X__uint8_t = uint8 /* types.h:38:23 */
+type X__int16_t = int16 /* types.h:39:26 */
+type X__uint16_t = uint16 /* types.h:40:28 */
+type X__int32_t = int32 /* types.h:41:20 */
+type X__uint32_t = uint32 /* types.h:42:22 */
+type X__int64_t = int64 /* types.h:44:25 */
+type X__uint64_t = uint64 /* types.h:45:27 */
+
+// Smallest types with at least a given width.
+type X__int_least8_t = X__int8_t /* types.h:52:18 */
+type X__uint_least8_t = X__uint8_t /* types.h:53:19 */
+type X__int_least16_t = X__int16_t /* types.h:54:19 */
+type X__uint_least16_t = X__uint16_t /* types.h:55:20 */
+type X__int_least32_t = X__int32_t /* types.h:56:19 */
+type X__uint_least32_t = X__uint32_t /* types.h:57:20 */
+type X__int_least64_t = X__int64_t /* types.h:58:19 */
+type X__uint_least64_t = X__uint64_t /* types.h:59:20 */
+
+// quad_t is also 64 bits.
+type X__quad_t = int64 /* types.h:63:18 */
+type X__u_quad_t = uint64 /* types.h:64:27 */
+
+// Largest integral types.
+type X__intmax_t = int64 /* types.h:72:18 */
+type X__uintmax_t = uint64 /* types.h:73:27 */
+
+// The machine-dependent file <bits/typesizes.h> defines __*_T_TYPE
+// macros for each of the OS types we define below. The definitions
+// of those macros must use the following macros for underlying types.
+// We define __S<SIZE>_TYPE and __U<SIZE>_TYPE for the signed and unsigned
+// variants of each of the following integer types on this machine.
+//
+// 16 -- "natural" 16-bit type (always short)
+// 32 -- "natural" 32-bit type (always int)
+// 64 -- "natural" 64-bit type (long or long long)
+// LONG32 -- 32-bit type, traditionally long
+// QUAD -- 64-bit type, traditionally long long
+// WORD -- natural type of __WORDSIZE bits (int or long)
+// LONGWORD -- type of __WORDSIZE bits, traditionally long
+//
+// We distinguish WORD/LONGWORD, 32/LONG32, and 64/QUAD so that the
+// conventional uses of `long' or `long long' type modifiers match the
+// types we define, even when a less-adorned type would be the same size.
+// This matters for (somewhat) portably writing printf/scanf formats for
+// these types, where using the appropriate l or ll format modifiers can
+// make the typedefs and the formats match up across all GNU platforms. If
+// we used `long' when it's 64 bits where `long long' is expected, then the
+// compiler would warn about the formats not matching the argument types,
+// and the programmer changing them to shut up the compiler would break the
+// program's portability.
+//
+// Here we assume what is presently the case in all the GCC configurations
+// we support: long long is always 64 bits, long is always word/address size,
+// and int is always 32 bits.
+
+// No need to mark the typedef with __extension__.
+// bits/typesizes.h -- underlying types for *_t. Linux/x86-64 version.
+// Copyright (C) 2012-2020 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// See <bits/types.h> for the meaning of these macros. This file exists so
+// that <bits/types.h> need not vary across different GNU platforms.
+
+// X32 kernel interface is 64-bit.
+
+// Tell the libc code that off_t and off64_t are actually the same type
+// for all ABI purposes, even if possibly expressed as different base types
+// for C type-checking purposes.
+
+// Same for ino_t and ino64_t.
+
+// And for __rlim_t and __rlim64_t.
+
+// And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t.
+
+// Number of descriptors that can fit in an `fd_set'.
+
+// bits/time64.h -- underlying types for __time64_t. Generic version.
+// Copyright (C) 2018-2020 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Define __TIME64_T_TYPE so that it is always a 64-bit type.
+
+// If we already have 64-bit time type then use it.
+
+type X__dev_t = uint64 /* types.h:145:25 */ // Type of device numbers.
+type X__uid_t = uint32 /* types.h:146:25 */ // Type of user identifications.
+type X__gid_t = uint32 /* types.h:147:25 */ // Type of group identifications.
+type X__ino_t = uint64 /* types.h:148:25 */ // Type of file serial numbers.
+type X__ino64_t = uint64 /* types.h:149:27 */ // Type of file serial numbers (LFS).
+type X__mode_t = uint32 /* types.h:150:26 */ // Type of file attribute bitmasks.
+type X__nlink_t = uint64 /* types.h:151:27 */ // Type of file link counts.
+type X__off_t = int64 /* types.h:152:25 */ // Type of file sizes and offsets.
+type X__off64_t = int64 /* types.h:153:27 */ // Type of file sizes and offsets (LFS).
+type X__pid_t = int32 /* types.h:154:25 */ // Type of process identifications.
+type X__fsid_t = struct{ F__val [2]int32 } /* types.h:155:26 */ // Type of file system IDs.
+type X__clock_t = int64 /* types.h:156:27 */ // Type of CPU usage counts.
+type X__rlim_t = uint64 /* types.h:157:26 */ // Type for resource measurement.
+type X__rlim64_t = uint64 /* types.h:158:28 */ // Type for resource measurement (LFS).
+type X__id_t = uint32 /* types.h:159:24 */ // General type for IDs.
+type X__time_t = int64 /* types.h:160:26 */ // Seconds since the Epoch.
+type X__useconds_t = uint32 /* types.h:161:30 */ // Count of microseconds.
+type X__suseconds_t = int64 /* types.h:162:31 */ // Signed count of microseconds.
+
+type X__daddr_t = int32 /* types.h:164:27 */ // The type of a disk address.
+type X__key_t = int32 /* types.h:165:25 */ // Type of an IPC key.
+
+// Clock ID used in clock and timer functions.
+type X__clockid_t = int32 /* types.h:168:29 */
+
+// Timer ID returned by `timer_create'.
+type X__timer_t = uintptr /* types.h:171:12 */
+
+// Type to represent block size.
+type X__blksize_t = int64 /* types.h:174:29 */
+
+// Types from the Large File Support interface.
+
+// Type to count number of disk blocks.
+type X__blkcnt_t = int64 /* types.h:179:28 */
+type X__blkcnt64_t = int64 /* types.h:180:30 */
+
+// Type to count file system blocks.
+type X__fsblkcnt_t = uint64 /* types.h:183:30 */
+type X__fsblkcnt64_t = uint64 /* types.h:184:32 */
+
+// Type to count file system nodes.
+type X__fsfilcnt_t = uint64 /* types.h:187:30 */
+type X__fsfilcnt64_t = uint64 /* types.h:188:32 */
+
+// Type of miscellaneous file system fields.
+type X__fsword_t = int64 /* types.h:191:28 */
+
+type X__ssize_t = int64 /* types.h:193:27 */ // Type of a byte count, or error.
+
+// Signed long type used in system calls.
+type X__syscall_slong_t = int64 /* types.h:196:33 */
+// Unsigned long type used in system calls.
+type X__syscall_ulong_t = uint64 /* types.h:198:33 */
+
+// These few don't really vary by system, they always correspond
+// to one of the other defined types.
+type X__loff_t = X__off64_t /* types.h:202:19 */ // Type of file sizes and offsets (LFS).
+type X__caddr_t = uintptr /* types.h:203:14 */
+
+// Duplicates info from stdint.h but this is used in unistd.h.
+type X__intptr_t = int64 /* types.h:206:25 */
+
+// Duplicate info from sys/socket.h.
+type X__socklen_t = uint32 /* types.h:209:23 */
+
+// C99: An integer type that can be accessed as an atomic entity,
+// even in the presence of asynchronous interrupts.
+// It is not currently necessary for this to be machine-specific.
+type X__sig_atomic_t = int32 /* types.h:214:13 */
+
+// Seconds since the Epoch, visible to user code when time_t is too
+// narrow only for consistency with the old way of widening too-narrow
+// types. User code should never use __time64_t.
+
+type U_char = X__u_char /* types.h:33:18 */
+type U_short = X__u_short /* types.h:34:19 */
+type U_int = X__u_int /* types.h:35:17 */
+type U_long = X__u_long /* types.h:36:18 */
+type Quad_t = X__quad_t /* types.h:37:18 */
+type U_quad_t = X__u_quad_t /* types.h:38:20 */
+type Fsid_t = X__fsid_t /* types.h:39:18 */
+type Loff_t = X__loff_t /* types.h:42:18 */
+
+type Ino_t = X__ino64_t /* types.h:49:19 */
+
+type Dev_t = X__dev_t /* types.h:59:17 */
+
+type Gid_t = X__gid_t /* types.h:64:17 */
+
+type Mode_t = X__mode_t /* types.h:69:18 */
+
+type Nlink_t = X__nlink_t /* types.h:74:19 */
+
+type Uid_t = X__uid_t /* types.h:79:17 */
+
+type Off_t = X__off64_t /* types.h:87:19 */
+
+type Pid_t = X__pid_t /* types.h:97:17 */
+
+type Id_t = X__id_t /* types.h:103:16 */
+
+type Ssize_t = X__ssize_t /* types.h:108:19 */
+
+type Daddr_t = X__daddr_t /* types.h:114:19 */
+type Caddr_t = X__caddr_t /* types.h:115:19 */
+
+type Key_t = X__key_t /* types.h:121:17 */
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2020 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Returned by `clock'.
+type Clock_t = X__clock_t /* clock_t.h:7:19 */
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2020 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Clock ID used in clock and timer functions.
+type Clockid_t = X__clockid_t /* clockid_t.h:7:21 */
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2020 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Returned by `time'.
+type Time_t = X__time_t /* time_t.h:7:18 */
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2020 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Timer ID returned by `timer_create'.
+type Timer_t = X__timer_t /* timer_t.h:7:19 */
+
+// Wide character type.
+// Locale-writers should change this as necessary to
+// be big enough to hold unique values not between 0 and 127,
+// and not (wchar_t) -1, for each defined multibyte character.
+
+// Define this type if we are doing the whole job,
+// or if we want this type in particular.
+
+// A null pointer constant.
+
+// Old compatibility names for C types.
+type Ulong = uint64 /* types.h:148:27 */
+type Ushort = uint16 /* types.h:149:28 */
+type Uint = uint32 /* types.h:150:22 */
+
+// These size-specific names are used by some of the inet code.
+
+// Define intN_t types.
+// Copyright (C) 2017-2020 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2020 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+type Int8_t = X__int8_t /* stdint-intn.h:24:18 */
+type Int16_t = X__int16_t /* stdint-intn.h:25:19 */
+type Int32_t = X__int32_t /* stdint-intn.h:26:19 */
+type Int64_t = X__int64_t /* stdint-intn.h:27:19 */
+
+// These were defined by ISO C without the first `_'.
+type U_int8_t = X__uint8_t /* types.h:158:19 */
+type U_int16_t = X__uint16_t /* types.h:159:20 */
+type U_int32_t = X__uint32_t /* types.h:160:20 */
+type U_int64_t = X__uint64_t /* types.h:161:20 */
+
+type Register_t = int32 /* types.h:164:13 */
+
+// It also defines `fd_set' and the FD_* macros for `select'.
+// `fd_set' type and related macros, and `select'/`pselect' declarations.
+// Copyright (C) 1996-2020 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// POSIX 1003.1g: 6.2 Select from File Descriptor Sets <sys/select.h>
+
+// Copyright (C) 1991-2020 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Get definition of needed basic types.
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2020 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Get __FD_* definitions.
+// Copyright (C) 1997-2020 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines.
+
+// Both x86-64 and x32 use the 64-bit system call interface.
+
+// Get sigset_t.
+
+type X__sigset_t = struct{ F__val [16]uint64 } /* __sigset_t.h:8:3 */
+
+// A set of signals to be blocked, unblocked, or waited for.
+type Sigset_t = X__sigset_t /* sigset_t.h:7:20 */
+
+// Get definition of timer specification structures.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2020 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// A time value that is accurate to the nearest
+// microsecond but also has a range of years.
+type Timeval = struct {
+ Ftv_sec X__time_t
+ Ftv_usec X__suseconds_t
+} /* struct_timeval.h:8:1 */
+
+// NB: Include guard matches what <linux/time.h> uses.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2020 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Endian macros for string.h functions
+// Copyright (C) 1992-2020 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <http://www.gnu.org/licenses/>.
+
+// POSIX.1b structure for a time value. This is like a `struct timeval' but
+// has nanoseconds instead of microseconds.
+type Timespec = struct {
+ Ftv_sec X__time_t
+ Ftv_nsec X__syscall_slong_t
+} /* struct_timespec.h:10:1 */
+
+type Suseconds_t = X__suseconds_t /* select.h:43:23 */
+
+// The fd_set member is required to be an array of longs.
+type X__fd_mask = int64 /* select.h:49:18 */
+
+// Some versions of <linux/posix_types.h> define this macros.
+// It's easier to assume 8-bit bytes than to get CHAR_BIT.
+
+// fd_set for select and pselect.
+type Fd_set = struct{ F__fds_bits [16]X__fd_mask } /* select.h:70:5 */
+
+// Maximum number of file descriptors in `fd_set'.
+
+// Sometimes the fd_set member is assumed to have this type.
+type Fd_mask = X__fd_mask /* select.h:77:19 */
+
+// Define some inlines helping to catch common problems.
+
+type Blksize_t = X__blksize_t /* types.h:185:21 */
+
+// Types from the Large File Support interface.
+type Blkcnt_t = X__blkcnt64_t /* types.h:205:22 */ // Type to count number of disk blocks.
+type Fsblkcnt_t = X__fsblkcnt64_t /* types.h:209:24 */ // Type to count file system blocks.
+type Fsfilcnt_t = X__fsfilcnt64_t /* types.h:213:24 */ // Type to count file system inodes.
+
+// Now add the thread types.
+// Declaration of common pthread types for all architectures.
+// Copyright (C) 2017-2020 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// For internal mutex and condition variable definitions.
+// Common threading primitives definitions for both POSIX and C11.
+// Copyright (C) 2017-2020 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Arch-specific definitions. Each architecture must define the following
+// macros to define the expected sizes of pthread data types:
+//
+// __SIZEOF_PTHREAD_ATTR_T - size of pthread_attr_t.
+// __SIZEOF_PTHREAD_MUTEX_T - size of pthread_mutex_t.
+// __SIZEOF_PTHREAD_MUTEXATTR_T - size of pthread_mutexattr_t.
+// __SIZEOF_PTHREAD_COND_T - size of pthread_cond_t.
+// __SIZEOF_PTHREAD_CONDATTR_T - size of pthread_condattr_t.
+// __SIZEOF_PTHREAD_RWLOCK_T - size of pthread_rwlock_t.
+// __SIZEOF_PTHREAD_RWLOCKATTR_T - size of pthread_rwlockattr_t.
+// __SIZEOF_PTHREAD_BARRIER_T - size of pthread_barrier_t.
+// __SIZEOF_PTHREAD_BARRIERATTR_T - size of pthread_barrierattr_t.
+//
+// The additional macro defines any constraint for the lock alignment
+// inside the thread structures:
+//
+// __LOCK_ALIGNMENT - for internal lock/futex usage.
+//
+// Same idea but for the once locking primitive:
+//
+// __ONCE_ALIGNMENT - for pthread_once_t/once_flag definition.
+
+// Copyright (C) 2002-2020 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines.
+
+// Both x86-64 and x32 use the 64-bit system call interface.
+
+// Common definition of pthread_mutex_t.
+
+type X__pthread_internal_list = struct {
+ F__prev uintptr
+ F__next uintptr
+} /* thread-shared-types.h:49:9 */
+
+// Type to count file system inodes.
+
+// Now add the thread types.
+// Declaration of common pthread types for all architectures.
+// Copyright (C) 2017-2020 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// For internal mutex and condition variable definitions.
+// Common threading primitives definitions for both POSIX and C11.
+// Copyright (C) 2017-2020 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Arch-specific definitions. Each architecture must define the following
+// macros to define the expected sizes of pthread data types:
+//
+// __SIZEOF_PTHREAD_ATTR_T - size of pthread_attr_t.
+// __SIZEOF_PTHREAD_MUTEX_T - size of pthread_mutex_t.
+// __SIZEOF_PTHREAD_MUTEXATTR_T - size of pthread_mutexattr_t.
+// __SIZEOF_PTHREAD_COND_T - size of pthread_cond_t.
+// __SIZEOF_PTHREAD_CONDATTR_T - size of pthread_condattr_t.
+// __SIZEOF_PTHREAD_RWLOCK_T - size of pthread_rwlock_t.
+// __SIZEOF_PTHREAD_RWLOCKATTR_T - size of pthread_rwlockattr_t.
+// __SIZEOF_PTHREAD_BARRIER_T - size of pthread_barrier_t.
+// __SIZEOF_PTHREAD_BARRIERATTR_T - size of pthread_barrierattr_t.
+//
+// The additional macro defines any constraint for the lock alignment
+// inside the thread structures:
+//
+// __LOCK_ALIGNMENT - for internal lock/futex usage.
+//
+// Same idea but for the once locking primitive:
+//
+// __ONCE_ALIGNMENT - for pthread_once_t/once_flag definition.
+
+// Copyright (C) 2002-2020 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines.
+
+// Both x86-64 and x32 use the 64-bit system call interface.
+
+// Common definition of pthread_mutex_t.
+
+type X__pthread_list_t = X__pthread_internal_list /* thread-shared-types.h:53:3 */
+
+type X__pthread_internal_slist = struct{ F__next uintptr } /* thread-shared-types.h:55:9 */
+
+type X__pthread_slist_t = X__pthread_internal_slist /* thread-shared-types.h:58:3 */
+
+// Arch-specific mutex definitions. A generic implementation is provided
+// by sysdeps/nptl/bits/struct_mutex.h. If required, an architecture
+// can override it by defining:
+//
+// 1. struct __pthread_mutex_s (used on both pthread_mutex_t and mtx_t
+// definition). It should contains at least the internal members
+// defined in the generic version.
+//
+// 2. __LOCK_ALIGNMENT for any extra attribute for internal lock used with
+// atomic operations.
+//
+// 3. The macro __PTHREAD_MUTEX_INITIALIZER used for static initialization.
+// It should initialize the mutex internal flag.
+
+// x86 internal mutex struct definitions.
+// Copyright (C) 2019-2020 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <http://www.gnu.org/licenses/>.
+
+type X__pthread_mutex_s = struct {
+ F__lock int32
+ F__count uint32
+ F__owner int32
+ F__nusers uint32
+ F__kind int32
+ F__spins int16
+ F__elision int16
+ F__list X__pthread_list_t
+} /* struct_mutex.h:22:1 */
+
+// Arch-sepecific read-write lock definitions. A generic implementation is
+// provided by struct_rwlock.h. If required, an architecture can override it
+// by defining:
+//
+// 1. struct __pthread_rwlock_arch_t (used on pthread_rwlock_t definition).
+// It should contain at least the internal members defined in the
+// generic version.
+//
+// 2. The macro __PTHREAD_RWLOCK_INITIALIZER used for static initialization.
+// It should initialize the rwlock internal type.
+
+// x86 internal rwlock struct definitions.
+// Copyright (C) 2019-2020 Free Software Foundation, Inc.
+//
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <http://www.gnu.org/licenses/>.
+
+type X__pthread_rwlock_arch_t = struct {
+ F__readers uint32
+ F__writers uint32
+ F__wrphase_futex uint32
+ F__writers_futex uint32
+ F__pad3 uint32
+ F__pad4 uint32
+ F__cur_writer int32
+ F__shared int32
+ F__rwelision int8
+ F__pad1 [7]uint8
+ F__pad2 uint64
+ F__flags uint32
+ F__ccgo_pad1 [4]byte
+} /* struct_rwlock.h:23:1 */
+
+// Common definition of pthread_cond_t.
+
+type X__pthread_cond_s = struct {
+ F__0 struct{ F__wseq uint64 }
+ F__8 struct{ F__g1_start uint64 }
+ F__g_refs [2]uint32
+ F__g_size [2]uint32
+ F__g1_orig_size uint32
+ F__wrefs uint32
+ F__g_signals [2]uint32
+} /* thread-shared-types.h:92:1 */
+
+// Thread identifiers. The structure of the attribute type is not
+// exposed on purpose.
+type Pthread_t = uint64 /* pthreadtypes.h:27:27 */
+
+// Data structures for mutex handling. The structure of the attribute
+// type is not exposed on purpose.
+type Pthread_mutexattr_t = struct {
+ F__ccgo_pad1 [0]uint32
+ F__size [4]int8
+} /* pthreadtypes.h:36:3 */
+
+// Data structure for condition variable handling. The structure of
+// the attribute type is not exposed on purpose.
+type Pthread_condattr_t = struct {
+ F__ccgo_pad1 [0]uint32
+ F__size [4]int8
+} /* pthreadtypes.h:45:3 */
+
+// Keys for thread-specific data
+type Pthread_key_t = uint32 /* pthreadtypes.h:49:22 */
+
+// Once-only execution
+type Pthread_once_t = int32 /* pthreadtypes.h:53:30 */
+
+type Pthread_attr_t1 = struct {
+ F__ccgo_pad1 [0]uint64
+ F__size [56]int8
+} /* pthreadtypes.h:56:1 */
+
+type Pthread_attr_t = Pthread_attr_t1 /* pthreadtypes.h:62:30 */
+
+type Pthread_mutex_t = struct{ F__data X__pthread_mutex_s } /* pthreadtypes.h:72:3 */
+
+type Pthread_cond_t = struct{ F__data X__pthread_cond_s } /* pthreadtypes.h:80:3 */
+
+// Data structure for reader-writer lock variable handling. The
+// structure of the attribute type is deliberately not exposed.
+type Pthread_rwlock_t = struct{ F__data X__pthread_rwlock_arch_t } /* pthreadtypes.h:91:3 */
+
+type Pthread_rwlockattr_t = struct {
+ F__ccgo_pad1 [0]uint64
+ F__size [8]int8
+} /* pthreadtypes.h:97:3 */
+
+// POSIX spinlock data type.
+type Pthread_spinlock_t = int32 /* pthreadtypes.h:103:22 */
+
+// POSIX barriers data type. The structure of the type is
+// deliberately not exposed.
+type Pthread_barrier_t = struct {
+ F__ccgo_pad1 [0]uint64
+ F__size [32]int8
+} /* pthreadtypes.h:112:3 */
+
+type Pthread_barrierattr_t = struct {
+ F__ccgo_pad1 [0]uint32
+ F__size [4]int8
+} /* pthreadtypes.h:118:3 */
+
+// Copyright (C) 1991-2020 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Copyright (C) 1991-2020 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2020 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// `fd_set' type and related macros, and `select'/`pselect' declarations.
+// Copyright (C) 1996-2020 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// POSIX 1003.1g: 6.2 Select from File Descriptor Sets <sys/select.h>
+
+// Structure crudely representing a timezone.
+// This is obsolete and should never be used.
+type Timezone = struct {
+ Ftz_minuteswest int32
+ Ftz_dsttime int32
+} /* time.h:52:1 */
+
+// Type of the second argument to `getitimer' and
+// the second and third arguments `setitimer'.
+type Itimerval = struct {
+ Fit_interval struct {
+ Ftv_sec X__time_t
+ Ftv_usec X__suseconds_t
+ }
+ Fit_value struct {
+ Ftv_sec X__time_t
+ Ftv_usec X__suseconds_t
+ }
+} /* time.h:105:1 */
+
+type X__itimer_which_t = int32 /* time.h:118:13 */
+
+// Convenience macros for operations on timevals.
+// NOTE: `timercmp' does not work for >= or <=.
+
+// Copyright (C) 1991-2020 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// ISO C99 Standard: 7.23 Date and time <time.h>
+
+// Copyright (C) 1991-2020 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Copyright (C) 1989-2020 Free Software Foundation, Inc.
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// GCC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+//
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+// <http://www.gnu.org/licenses/>.
+
+// ISO C Standard: 7.17 Common definitions <stddef.h>
+
+// Any one of these symbols __need_* means that GNU libc
+// wants us just to define one data type. So don't define
+// the symbols that indicate this file's entire job has been done.
+
+// This avoids lossage on SunOS but only if stdtypes.h comes first.
+// There's no way to win with the other order! Sun lossage.
+
+// Sequent's header files use _PTRDIFF_T_ in some conflicting way.
+// Just ignore it.
+
+// On VxWorks, <type/vxTypesBase.h> may have defined macros like
+// _TYPE_size_t which will typedef size_t. fixincludes patched the
+// vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is
+// not defined, and so that defining this macro defines _GCC_SIZE_T.
+// If we find that the macros are still defined at this point, we must
+// invoke them so that the type is defined as expected.
+
+// In case nobody has defined these types, but we aren't running under
+// GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and
+// __WCHAR_TYPE__ have reasonable values. This can happen if the
+// parts of GCC is compiled by an older compiler, that actually
+// include gstddef.h, such as collect2.
+
+// Signed type of difference of two pointers.
+
+// Define this type if we are doing the whole job,
+// or if we want this type in particular.
+
+// Unsigned type of `sizeof' something.
+
+// Define this type if we are doing the whole job,
+// or if we want this type in particular.
+
+// Wide character type.
+// Locale-writers should change this as necessary to
+// be big enough to hold unique values not between 0 and 127,
+// and not (wchar_t) -1, for each defined multibyte character.
+
+// Define this type if we are doing the whole job,
+// or if we want this type in particular.
+
+// A null pointer constant.
+
+// This defines CLOCKS_PER_SEC, which is the number of processor clock
+// ticks per second, and possibly a number of other constants.
+// System-dependent timing definitions. Linux version.
+// Copyright (C) 1996-2020 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <time.h> instead.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2020 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// ISO/IEC 9899:1999 7.23.1: Components of time
+// The macro `CLOCKS_PER_SEC' is an expression with type `clock_t' that is
+// the number per second of the value returned by the `clock' function.
+// CAE XSH, Issue 4, Version 2: <time.h>
+// The value of CLOCKS_PER_SEC is required to be 1 million on all
+// XSI-conformant systems.
+
+// Identifier for system-wide realtime clock.
+// Monotonic system-wide clock.
+// High-resolution timer from the CPU.
+// Thread-specific CPU-time clock.
+// Monotonic system-wide clock, not adjusted for frequency scaling.
+// Identifier for system-wide realtime clock, updated only on ticks.
+// Monotonic system-wide clock, updated only on ticks.
+// Monotonic system-wide clock that includes time spent in suspension.
+// Like CLOCK_REALTIME but also wakes suspended system.
+// Like CLOCK_BOOTTIME but also wakes suspended system.
+// Like CLOCK_REALTIME but in International Atomic Time.
+
+// Flag to indicate time is absolute.
+
+// Many of the typedefs and structs whose official home is this header
+// may also need to be defined by other headers.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2020 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// ISO C `broken-down time' structure.
+type Tm = struct {
+ Ftm_sec int32
+ Ftm_min int32
+ Ftm_hour int32
+ Ftm_mday int32
+ Ftm_mon int32
+ Ftm_year int32
+ Ftm_wday int32
+ Ftm_yday int32
+ Ftm_isdst int32
+ F__ccgo_pad1 [4]byte
+ Ftm_gmtoff int64
+ Ftm_zone uintptr
+} /* struct_tm.h:7:1 */
+
+// NB: Include guard matches what <linux/time.h> uses.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2020 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// NB: Include guard matches what <linux/time.h> uses.
+
+// POSIX.1b structure for timer start values and intervals.
+type Itimerspec = struct {
+ Fit_interval struct {
+ Ftv_sec X__time_t
+ Ftv_nsec X__syscall_slong_t
+ }
+ Fit_value struct {
+ Ftv_sec X__time_t
+ Ftv_nsec X__syscall_slong_t
+ }
+} /* struct_itimerspec.h:8:1 */
+
+// Definition of locale_t.
+// Copyright (C) 2017-2020 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Definition of struct __locale_struct and __locale_t.
+// Copyright (C) 1997-2020 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+// Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// POSIX.1-2008: the locale_t type, representing a locale context
+// (implementation-namespace version). This type should be treated
+// as opaque by applications; some details are exposed for the sake of
+// efficiency in e.g. ctype functions.
+
+type X__locale_struct = struct {
+ F__locales [13]uintptr
+ F__ctype_b uintptr
+ F__ctype_tolower uintptr
+ F__ctype_toupper uintptr
+ F__names [13]uintptr
+} /* __locale_t.h:28:1 */
+
+type X__locale_t = uintptr /* __locale_t.h:42:32 */
+
+type Locale_t = X__locale_t /* locale_t.h:24:20 */
+
+type Uuid_t = [16]uint8 /* uuid.h:44:23 */
+
+var _ int8 /* gen.c:2:13: */
diff --git a/vendor/modernc.org/libc/wctype/capi_linux_riscv64.go b/vendor/modernc.org/libc/wctype/capi_linux_riscv64.go
new file mode 100644
index 00000000..ca76e233
--- /dev/null
+++ b/vendor/modernc.org/libc/wctype/capi_linux_riscv64.go
@@ -0,0 +1,5 @@
+// Code generated by 'ccgo wctype/gen.c -crt-import-path -export-defines -export-enums -export-externs X -export-fields F -export-structs -export-typedefs -header -hide _OSSwapInt16,_OSSwapInt32,_OSSwapInt64 -o wctype/wctype_linux_riscv64.go -pkgname wctype', DO NOT EDIT.
+
+package wctype
+
+var CAPI = map[string]struct{}{}
diff --git a/vendor/modernc.org/libc/wctype/wctype_linux_riscv64.go b/vendor/modernc.org/libc/wctype/wctype_linux_riscv64.go
new file mode 100644
index 00000000..c6785405
--- /dev/null
+++ b/vendor/modernc.org/libc/wctype/wctype_linux_riscv64.go
@@ -0,0 +1,1121 @@
+// Code generated by 'ccgo wctype/gen.c -crt-import-path "" -export-defines "" -export-enums "" -export-externs X -export-fields F -export-structs "" -export-typedefs "" -header -hide _OSSwapInt16,_OSSwapInt32,_OSSwapInt64 -o wctype/wctype_linux_riscv64.go -pkgname wctype', DO NOT EDIT.
+
+package wctype
+
+import (
+ "math"
+ "reflect"
+ "sync/atomic"
+ "unsafe"
+)
+
+var _ = math.Pi
+var _ reflect.Kind
+var _ atomic.Value
+var _ unsafe.Pointer
+
+const (
+ WEOF = 4294967295
+ X_ATFILE_SOURCE = 1
+ X_BITS_ENDIANNESS_H = 1
+ X_BITS_ENDIAN_H = 1
+ X_BITS_TIME64_H = 1
+ X_BITS_TYPESIZES_H = 1
+ X_BITS_TYPES_H = 1
+ X_BITS_TYPES_LOCALE_T_H = 1
+ X_BITS_TYPES___LOCALE_T_H = 1
+ X_BITS_WCTYPE_WCHAR_H = 1
+ X_DEFAULT_SOURCE = 1
+ X_FEATURES_H = 1
+ X_FILE_OFFSET_BITS = 64
+ X_LP64 = 1
+ X_POSIX_C_SOURCE = 200809
+ X_POSIX_SOURCE = 1
+ X_STDC_PREDEF_H = 1
+ X_SYS_CDEFS_H = 1
+ X_WCTYPE_H = 1
+ X_WINT_T = 1
+ Linux = 1
+ Unix = 1
+)
+
+// The characteristics are stored always in network byte order (big
+// endian). We define the bit value interpretations here dependent on the
+// machine's byte order.
+
+// Endian macros for string.h functions
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <http://www.gnu.org/licenses/>.
+
+// Definitions for byte order, according to significance of bytes,
+// from low addresses to high addresses. The value is what you get by
+// putting '4' in the most significant byte, '3' in the second most
+// significant byte, '2' in the second least significant byte, and '1'
+// in the least significant byte, and then writing down one digit for
+// each byte, starting with the byte at the lowest address at the left,
+// and proceeding to the byte with the highest address at the right.
+
+// This file defines `__BYTE_ORDER' for the particular machine.
+
+// RISC-V is little-endian.
+
+// Some machines may need to use a different endianness for floating point
+// values.
+
+const ( /* wctype-wchar.h:56:1: */
+ X__ISwupper = 0 // UPPERCASE.
+ X__ISwlower = 1 // lowercase.
+ X__ISwalpha = 2 // Alphabetic.
+ X__ISwdigit = 3 // Numeric.
+ X__ISwxdigit = 4 // Hexadecimal numeric.
+ X__ISwspace = 5 // Whitespace.
+ X__ISwprint = 6 // Printing.
+ X__ISwgraph = 7 // Graphical.
+ X__ISwblank = 8 // Blank (usually SPC and TAB).
+ X__ISwcntrl = 9 // Control character.
+ X__ISwpunct = 10 // Punctuation.
+ X__ISwalnum = 11 // Alphanumeric.
+
+ X_ISwupper = 16777216 // UPPERCASE.
+ X_ISwlower = 33554432 // lowercase.
+ X_ISwalpha = 67108864 // Alphabetic.
+ X_ISwdigit = 134217728 // Numeric.
+ X_ISwxdigit = 268435456 // Hexadecimal numeric.
+ X_ISwspace = 536870912 // Whitespace.
+ X_ISwprint = 1073741824 // Printing.
+ X_ISwgraph = -2147483648 // Graphical.
+ X_ISwblank = 65536 // Blank (usually SPC and TAB).
+ X_ISwcntrl = 131072 // Control character.
+ X_ISwpunct = 262144 // Punctuation.
+ X_ISwalnum = 524288
+)
+
+type Ptrdiff_t = int64 /* <builtin>:3:26 */
+
+type Size_t = uint64 /* <builtin>:9:23 */
+
+type Wchar_t = int32 /* <builtin>:15:24 */
+
+type X__int128_t = struct {
+ Flo int64
+ Fhi int64
+} /* <builtin>:21:43 */ // must match modernc.org/mathutil.Int128
+type X__uint128_t = struct {
+ Flo uint64
+ Fhi uint64
+} /* <builtin>:22:44 */ // must match modernc.org/mathutil.Int128
+
+type X__builtin_va_list = uintptr /* <builtin>:46:14 */
+type X__float128 = float64 /* <builtin>:47:21 */
+
+// Copyright (C) 1996-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// ISO C99 Standard: 7.25
+// Wide character classification and mapping utilities <wctype.h>
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// These are defined by the user (or the compiler)
+// to specify the desired environment:
+//
+// __STRICT_ANSI__ ISO Standard C.
+// _ISOC99_SOURCE Extensions to ISO C89 from ISO C99.
+// _ISOC11_SOURCE Extensions to ISO C99 from ISO C11.
+// _ISOC2X_SOURCE Extensions to ISO C99 from ISO C2X.
+// __STDC_WANT_LIB_EXT2__
+// Extensions to ISO C99 from TR 27431-2:2010.
+// __STDC_WANT_IEC_60559_BFP_EXT__
+// Extensions to ISO C11 from TS 18661-1:2014.
+// __STDC_WANT_IEC_60559_FUNCS_EXT__
+// Extensions to ISO C11 from TS 18661-4:2015.
+// __STDC_WANT_IEC_60559_TYPES_EXT__
+// Extensions to ISO C11 from TS 18661-3:2015.
+// __STDC_WANT_IEC_60559_EXT__
+// ISO C2X interfaces defined only in Annex F.
+//
+// _POSIX_SOURCE IEEE Std 1003.1.
+// _POSIX_C_SOURCE If ==1, like _POSIX_SOURCE; if >=2 add IEEE Std 1003.2;
+// if >=199309L, add IEEE Std 1003.1b-1993;
+// if >=199506L, add IEEE Std 1003.1c-1995;
+// if >=200112L, all of IEEE 1003.1-2004
+// if >=200809L, all of IEEE 1003.1-2008
+// _XOPEN_SOURCE Includes POSIX and XPG things. Set to 500 if
+// Single Unix conformance is wanted, to 600 for the
+// sixth revision, to 700 for the seventh revision.
+// _XOPEN_SOURCE_EXTENDED XPG things and X/Open Unix extensions.
+// _LARGEFILE_SOURCE Some more functions for correct standard I/O.
+// _LARGEFILE64_SOURCE Additional functionality from LFS for large files.
+// _FILE_OFFSET_BITS=N Select default filesystem interface.
+// _ATFILE_SOURCE Additional *at interfaces.
+// _DYNAMIC_STACK_SIZE_SOURCE Select correct (but non compile-time constant)
+// MINSIGSTKSZ, SIGSTKSZ and PTHREAD_STACK_MIN.
+// _GNU_SOURCE All of the above, plus GNU extensions.
+// _DEFAULT_SOURCE The default set of features (taking precedence over
+// __STRICT_ANSI__).
+//
+// _FORTIFY_SOURCE Add security hardening to many library functions.
+// Set to 1 or 2; 2 performs stricter checks than 1.
+//
+// _REENTRANT, _THREAD_SAFE
+// Obsolete; equivalent to _POSIX_C_SOURCE=199506L.
+//
+// The `-ansi' switch to the GNU C compiler, and standards conformance
+// options such as `-std=c99', define __STRICT_ANSI__. If none of
+// these are defined, or if _DEFAULT_SOURCE is defined, the default is
+// to have _POSIX_SOURCE set to one and _POSIX_C_SOURCE set to
+// 200809L, as well as enabling miscellaneous functions from BSD and
+// SVID. If more than one of these are defined, they accumulate. For
+// example __STRICT_ANSI__, _POSIX_SOURCE and _POSIX_C_SOURCE together
+// give you ISO C, 1003.1, and 1003.2, but nothing else.
+//
+// These are defined by this file and are used by the
+// header files to decide what to declare or define:
+//
+// __GLIBC_USE (F) Define things from feature set F. This is defined
+// to 1 or 0; the subsequent macros are either defined
+// or undefined, and those tests should be moved to
+// __GLIBC_USE.
+// __USE_ISOC11 Define ISO C11 things.
+// __USE_ISOC99 Define ISO C99 things.
+// __USE_ISOC95 Define ISO C90 AMD1 (C95) things.
+// __USE_ISOCXX11 Define ISO C++11 things.
+// __USE_POSIX Define IEEE Std 1003.1 things.
+// __USE_POSIX2 Define IEEE Std 1003.2 things.
+// __USE_POSIX199309 Define IEEE Std 1003.1, and .1b things.
+// __USE_POSIX199506 Define IEEE Std 1003.1, .1b, .1c and .1i things.
+// __USE_XOPEN Define XPG things.
+// __USE_XOPEN_EXTENDED Define X/Open Unix things.
+// __USE_UNIX98 Define Single Unix V2 things.
+// __USE_XOPEN2K Define XPG6 things.
+// __USE_XOPEN2KXSI Define XPG6 XSI things.
+// __USE_XOPEN2K8 Define XPG7 things.
+// __USE_XOPEN2K8XSI Define XPG7 XSI things.
+// __USE_LARGEFILE Define correct standard I/O things.
+// __USE_LARGEFILE64 Define LFS things with separate names.
+// __USE_FILE_OFFSET64 Define 64bit interface as default.
+// __USE_MISC Define things from 4.3BSD or System V Unix.
+// __USE_ATFILE Define *at interfaces and AT_* constants for them.
+// __USE_DYNAMIC_STACK_SIZE Define correct (but non compile-time constant)
+// MINSIGSTKSZ, SIGSTKSZ and PTHREAD_STACK_MIN.
+// __USE_GNU Define GNU extensions.
+// __USE_FORTIFY_LEVEL Additional security measures used, according to level.
+//
+// The macros `__GNU_LIBRARY__', `__GLIBC__', and `__GLIBC_MINOR__' are
+// defined by this file unconditionally. `__GNU_LIBRARY__' is provided
+// only for compatibility. All new code should use the other symbols
+// to test for features.
+//
+// All macros listed above as possibly being defined by this file are
+// explicitly undefined if they are not explicitly defined.
+// Feature-test macros that are not defined by the user or compiler
+// but are implied by the other feature-test macros defined (or by the
+// lack of any definitions) are defined by the file.
+//
+// ISO C feature test macros depend on the definition of the macro
+// when an affected header is included, not when the first system
+// header is included, and so they are handled in
+// <bits/libc-header-start.h>, which does not have a multiple include
+// guard. Feature test macros that can be handled from the first
+// system header included are handled here.
+
+// Undefine everything, so we get a clean slate.
+
+// Suppress kernel-name space pollution unless user expressedly asks
+// for it.
+
+// Convenience macro to test the version of gcc.
+// Use like this:
+// #if __GNUC_PREREQ (2,8)
+// ... code requiring gcc 2.8 or later ...
+// #endif
+// Note: only works for GCC 2.0 and later, because __GNUC_MINOR__ was
+// added in 2.0.
+
+// Similarly for clang. Features added to GCC after version 4.2 may
+// or may not also be available in clang, and clang's definitions of
+// __GNUC(_MINOR)__ are fixed at 4 and 2 respectively. Not all such
+// features can be queried via __has_extension/__has_feature.
+
+// Whether to use feature set F.
+
+// _BSD_SOURCE and _SVID_SOURCE are deprecated aliases for
+// _DEFAULT_SOURCE. If _DEFAULT_SOURCE is present we do not
+// issue a warning; the expectation is that the source is being
+// transitioned to use the new macro.
+
+// If _GNU_SOURCE was defined by the user, turn on all the other features.
+
+// If nothing (other than _GNU_SOURCE and _DEFAULT_SOURCE) is defined,
+// define _DEFAULT_SOURCE.
+
+// This is to enable the ISO C2X extension.
+
+// This is to enable the ISO C11 extension.
+
+// This is to enable the ISO C99 extension.
+
+// This is to enable the ISO C90 Amendment 1:1995 extension.
+
+// If none of the ANSI/POSIX macros are defined, or if _DEFAULT_SOURCE
+// is defined, use POSIX.1-2008 (or another version depending on
+// _XOPEN_SOURCE).
+
+// Some C libraries once required _REENTRANT and/or _THREAD_SAFE to be
+// defined in all multithreaded code. GNU libc has not required this
+// for many years. We now treat them as compatibility synonyms for
+// _POSIX_C_SOURCE=199506L, which is the earliest level of POSIX with
+// comprehensive support for multithreaded code. Using them never
+// lowers the selected level of POSIX conformance, only raises it.
+
+// Features part to handle 64-bit time_t support.
+// Copyright (C) 2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// We need to know the word size in order to check the time size.
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Bit size of the time_t type at glibc build time, RISC-V case.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// RV32 and RV64 both use 64-bit time_t
+
+// The function 'gets' existed in C89, but is impossible to use
+// safely. It has been removed from ISO C11 and ISO C++14. Note: for
+// compatibility with various implementations of <cstdio>, this test
+// must consider only the value of __cplusplus when compiling C++.
+
+// GNU formerly extended the scanf functions with modified format
+// specifiers %as, %aS, and %a[...] that allocate a buffer for the
+// input using malloc. This extension conflicts with ISO C99, which
+// defines %a as a standalone format specifier that reads a floating-
+// point number; moreover, POSIX.1-2008 provides the same feature
+// using the modifier letter 'm' instead (%ms, %mS, %m[...]).
+//
+// We now follow C99 unless GNU extensions are active and the compiler
+// is specifically in C89 or C++98 mode (strict or not). For
+// instance, with GCC, -std=gnu11 will have C99-compliant scanf with
+// or without -D_GNU_SOURCE, but -std=c89 -D_GNU_SOURCE will have the
+// old extension.
+
+// Get definitions of __STDC_* predefined macros, if the compiler has
+// not preincluded this header automatically.
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// This macro indicates that the installed library is the GNU C Library.
+// For historic reasons the value now is 6 and this will stay from now
+// on. The use of this variable is deprecated. Use __GLIBC__ and
+// __GLIBC_MINOR__ now (see below) when you want to test for a specific
+// GNU C library version and use the values in <gnu/lib-names.h> to get
+// the sonames of the shared libraries.
+
+// Major and minor version number of the GNU C library package. Use
+// these macros to test for features in specific releases.
+
+// This is here only because every header file already includes this one.
+// Copyright (C) 1992-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// We are almost always included from features.h.
+
+// The GNU libc does not support any K&R compilers or the traditional mode
+// of ISO C compilers anymore. Check for some of the combinations not
+// supported anymore.
+
+// Some user header file might have defined this before.
+
+// Compilers that lack __has_attribute may object to
+// #if defined __has_attribute && __has_attribute (...)
+// even though they do not need to evaluate the right-hand side of the &&.
+// Similarly for __has_builtin, etc.
+
+// All functions, except those with callbacks or those that
+// synchronize memory, are leaf functions.
+
+// GCC can always grok prototypes. For C++ programs we add throw()
+// to help it optimize the function calls. But this only works with
+// gcc 2.8.x and egcs. For gcc 3.4 and up we even mark C functions
+// as non-throwing using a function attribute since programs can use
+// the -fexceptions options for C code as well.
+
+// These two macros are not used in glibc anymore. They are kept here
+// only because some other projects expect the macros to be defined.
+
+// For these things, GCC behaves the ANSI way normally,
+// and the non-ANSI way under -traditional.
+
+// This is not a typedef so `const __ptr_t' does the right thing.
+
+// C++ needs to know that types and declarations are C, not C++.
+
+// Fortify support.
+
+// Use __builtin_dynamic_object_size at _FORTIFY_SOURCE=3 when available.
+
+// Support for flexible arrays.
+// Headers that should use flexible arrays only if they're "real"
+// (e.g. only if they won't affect sizeof()) should test
+// #if __glibc_c99_flexarr_available.
+
+// __asm__ ("xyz") is used throughout the headers to rename functions
+// at the assembly language level. This is wrapped by the __REDIRECT
+// macro, in order to support compilers that can do this some other
+// way. When compilers don't support asm-names at all, we have to do
+// preprocessor tricks instead (which don't have exactly the right
+// semantics, but it's the best we can do).
+//
+// Example:
+// int __REDIRECT(setpgrp, (__pid_t pid, __pid_t pgrp), setpgid);
+
+//
+// #elif __SOME_OTHER_COMPILER__
+//
+// # define __REDIRECT(name, proto, alias) name proto; _Pragma("let " #name " = " #alias)
+
+// GCC and clang have various useful declarations that can be made with
+// the '__attribute__' syntax. All of the ways we use this do fine if
+// they are omitted for compilers that don't understand it.
+
+// At some point during the gcc 2.96 development the `malloc' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+
+// Tell the compiler which arguments to an allocation function
+// indicate the size of the allocation.
+
+// At some point during the gcc 2.96 development the `pure' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+
+// This declaration tells the compiler that the value is constant.
+
+// At some point during the gcc 3.1 development the `used' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+
+// Since version 3.2, gcc allows marking deprecated functions.
+
+// Since version 4.5, gcc also allows one to specify the message printed
+// when a deprecated function is used. clang claims to be gcc 4.2, but
+// may also support this feature.
+
+// At some point during the gcc 2.8 development the `format_arg' attribute
+// for functions was introduced. We don't want to use it unconditionally
+// (although this would be possible) since it generates warnings.
+// If several `format_arg' attributes are given for the same function, in
+// gcc-3.0 and older, all but the last one are ignored. In newer gccs,
+// all designated arguments are considered.
+
+// At some point during the gcc 2.97 development the `strfmon' format
+// attribute for functions was introduced. We don't want to use it
+// unconditionally (although this would be possible) since it
+// generates warnings.
+
+// The nonnull function attribute marks pointer parameters that
+// must not be NULL.
+
+// The returns_nonnull function attribute marks the return type of the function
+// as always being non-null.
+
+// If fortification mode, we warn about unused results of certain
+// function calls which can lead to problems.
+
+// Forces a function to be always inlined.
+// The Linux kernel defines __always_inline in stddef.h (283d7573), and
+// it conflicts with this definition. Therefore undefine it first to
+// allow either header to be included first.
+
+// Associate error messages with the source location of the call site rather
+// than with the source location inside the function.
+
+// GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
+// inline semantics, unless -fgnu89-inline is used. Using __GNUC_STDC_INLINE__
+// or __GNUC_GNU_INLINE is not a good enough check for gcc because gcc versions
+// older than 4.3 may define these macros and still not guarantee GNU inlining
+// semantics.
+//
+// clang++ identifies itself as gcc-4.2, but has support for GNU inlining
+// semantics, that can be checked for by using the __GNUC_STDC_INLINE_ and
+// __GNUC_GNU_INLINE__ macro definitions.
+
+// GCC 4.3 and above allow passing all anonymous arguments of an
+// __extern_always_inline function to some other vararg function.
+
+// It is possible to compile containing GCC extensions even if GCC is
+// run in pedantic mode if the uses are carefully marked using the
+// `__extension__' keyword. But this is not generally available before
+// version 2.8.
+
+// __restrict is known in EGCS 1.2 and above, and in clang.
+// It works also in C++ mode (outside of arrays), but only when spelled
+// as '__restrict', not 'restrict'.
+
+// ISO C99 also allows to declare arrays as non-overlapping. The syntax is
+// array_name[restrict]
+// GCC 3.1 and clang support this.
+// This syntax is not usable in C++ mode.
+
+// Describes a char array whose address can safely be passed as the first
+// argument to strncpy and strncat, as the char array is not necessarily
+// a NUL-terminated string.
+
+// Undefine (also defined in libc-symbols.h).
+// Copies attributes from the declaration or type referenced by
+// the argument.
+
+// The #ifndef lets Gnulib avoid including these on non-glibc
+// platforms, where the includes typically do not exist.
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Properties of long double type. ldbl-128 version.
+// Copyright (C) 2016-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// long double is distinct from double, so there is nothing to
+// define here.
+
+// __glibc_macro_warning (MESSAGE) issues warning MESSAGE. This is
+// intended for use in preprocessor macros.
+//
+// Note: MESSAGE must be a _single_ string; concatenation of string
+// literals is not supported.
+
+// Generic selection (ISO C11) is a C-only feature, available in GCC
+// since version 4.9. Previous versions do not provide generic
+// selection, even though they might set __STDC_VERSION__ to 201112L,
+// when in -std=c11 mode. Thus, we must check for !defined __GNUC__
+// when testing __STDC_VERSION__ for generic selection support.
+// On the other hand, Clang also defines __GNUC__, so a clang-specific
+// check is required to enable the use of generic selection.
+
+// Designates a 1-based positional argument ref-index of pointer type
+// that can be used to access size-index elements of the pointed-to
+// array according to access mode, or at least one element when
+// size-index is not provided:
+// access (access-mode, <ref-index> [, <size-index>])
+
+// Designates dealloc as a function to call to deallocate objects
+// allocated by the declared function.
+
+// Specify that a function such as setjmp or vfork may return
+// twice.
+
+// If we don't have __REDIRECT, prototypes will be missing if
+// __USE_FILE_OFFSET64 but not __USE_LARGEFILE[64].
+
+// Decide whether we can define 'extern inline' functions in headers.
+
+// This is here only because every header file already includes this one.
+// Get the definitions of all the appropriate `__stub_FUNCTION' symbols.
+// <gnu/stubs.h> contains `#define __stub_FUNCTION' when FUNCTION is a stub
+// that will always return failure (and set errno to ENOSYS).
+// This file is automatically generated.
+// This file selects the right generated file of `__stub_FUNCTION' macros
+// based on the architecture being compiled for.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// This file is automatically generated.
+// It defines a symbol `__stub_FUNCTION' for each function
+// in the C library which is a stub, meaning it will fail
+// every time called, usually setting errno to ENOSYS.
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// Copyright (C) 1991-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// Bit size of the time_t type at glibc build time, RISC-V case.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Determine the wordsize from the preprocessor defines. RISC-V version.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// RV32 and RV64 both use 64-bit time_t
+
+// Convenience types.
+type X__u_char = uint8 /* types.h:31:23 */
+type X__u_short = uint16 /* types.h:32:28 */
+type X__u_int = uint32 /* types.h:33:22 */
+type X__u_long = uint64 /* types.h:34:27 */
+
+// Fixed-size types, underlying types depend on word size and compiler.
+type X__int8_t = int8 /* types.h:37:21 */
+type X__uint8_t = uint8 /* types.h:38:23 */
+type X__int16_t = int16 /* types.h:39:26 */
+type X__uint16_t = uint16 /* types.h:40:28 */
+type X__int32_t = int32 /* types.h:41:20 */
+type X__uint32_t = uint32 /* types.h:42:22 */
+type X__int64_t = int64 /* types.h:44:25 */
+type X__uint64_t = uint64 /* types.h:45:27 */
+
+// Smallest types with at least a given width.
+type X__int_least8_t = X__int8_t /* types.h:52:18 */
+type X__uint_least8_t = X__uint8_t /* types.h:53:19 */
+type X__int_least16_t = X__int16_t /* types.h:54:19 */
+type X__uint_least16_t = X__uint16_t /* types.h:55:20 */
+type X__int_least32_t = X__int32_t /* types.h:56:19 */
+type X__uint_least32_t = X__uint32_t /* types.h:57:20 */
+type X__int_least64_t = X__int64_t /* types.h:58:19 */
+type X__uint_least64_t = X__uint64_t /* types.h:59:20 */
+
+// quad_t is also 64 bits.
+type X__quad_t = int64 /* types.h:63:18 */
+type X__u_quad_t = uint64 /* types.h:64:27 */
+
+// Largest integral types.
+type X__intmax_t = int64 /* types.h:72:18 */
+type X__uintmax_t = uint64 /* types.h:73:27 */
+
+// The machine-dependent file <bits/typesizes.h> defines __*_T_TYPE
+// macros for each of the OS types we define below. The definitions
+// of those macros must use the following macros for underlying types.
+// We define __S<SIZE>_TYPE and __U<SIZE>_TYPE for the signed and unsigned
+// variants of each of the following integer types on this machine.
+//
+// 16 -- "natural" 16-bit type (always short)
+// 32 -- "natural" 32-bit type (always int)
+// 64 -- "natural" 64-bit type (long or long long)
+// LONG32 -- 32-bit type, traditionally long
+// QUAD -- 64-bit type, traditionally long long
+// WORD -- natural type of __WORDSIZE bits (int or long)
+// LONGWORD -- type of __WORDSIZE bits, traditionally long
+//
+// We distinguish WORD/LONGWORD, 32/LONG32, and 64/QUAD so that the
+// conventional uses of `long' or `long long' type modifiers match the
+// types we define, even when a less-adorned type would be the same size.
+// This matters for (somewhat) portably writing printf/scanf formats for
+// these types, where using the appropriate l or ll format modifiers can
+// make the typedefs and the formats match up across all GNU platforms. If
+// we used `long' when it's 64 bits where `long long' is expected, then the
+// compiler would warn about the formats not matching the argument types,
+// and the programmer changing them to shut up the compiler would break the
+// program's portability.
+//
+// Here we assume what is presently the case in all the GCC configurations
+// we support: long long is always 64 bits, long is always word/address size,
+// and int is always 32 bits.
+
+// No need to mark the typedef with __extension__.
+// bits/typesizes.h -- underlying types for *_t. For the generic Linux ABI.
+// Copyright (C) 2011-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+// Contributed by Chris Metcalf <cmetcalf@tilera.com>, 2011.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library. If not, see
+// <https://www.gnu.org/licenses/>.
+
+// See <bits/types.h> for the meaning of these macros. This file exists so
+// that <bits/types.h> need not vary across different GNU platforms.
+
+// Tell the libc code that off_t and off64_t are actually the same type
+// for all ABI purposes, even if possibly expressed as different base types
+// for C type-checking purposes.
+
+// Same for ino_t and ino64_t.
+
+// And for __rlim_t and __rlim64_t.
+
+// And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t.
+
+// And for getitimer, setitimer and rusage
+
+// Number of descriptors that can fit in an `fd_set'.
+
+// bits/time64.h -- underlying types for __time64_t. RISC-V version.
+// Copyright (C) 2020-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Define __TIME64_T_TYPE so that it is always a 64-bit type.
+
+// If we already have 64-bit time type then use it.
+
+type X__dev_t = uint64 /* types.h:145:25 */ // Type of device numbers.
+type X__uid_t = uint32 /* types.h:146:25 */ // Type of user identifications.
+type X__gid_t = uint32 /* types.h:147:25 */ // Type of group identifications.
+type X__ino_t = uint64 /* types.h:148:25 */ // Type of file serial numbers.
+type X__ino64_t = uint64 /* types.h:149:27 */ // Type of file serial numbers (LFS).
+type X__mode_t = uint32 /* types.h:150:26 */ // Type of file attribute bitmasks.
+type X__nlink_t = uint32 /* types.h:151:27 */ // Type of file link counts.
+type X__off_t = int64 /* types.h:152:25 */ // Type of file sizes and offsets.
+type X__off64_t = int64 /* types.h:153:27 */ // Type of file sizes and offsets (LFS).
+type X__pid_t = int32 /* types.h:154:25 */ // Type of process identifications.
+type X__fsid_t = struct{ F__val [2]int32 } /* types.h:155:26 */ // Type of file system IDs.
+type X__clock_t = int64 /* types.h:156:27 */ // Type of CPU usage counts.
+type X__rlim_t = uint64 /* types.h:157:26 */ // Type for resource measurement.
+type X__rlim64_t = uint64 /* types.h:158:28 */ // Type for resource measurement (LFS).
+type X__id_t = uint32 /* types.h:159:24 */ // General type for IDs.
+type X__time_t = int64 /* types.h:160:26 */ // Seconds since the Epoch.
+type X__useconds_t = uint32 /* types.h:161:30 */ // Count of microseconds.
+type X__suseconds_t = int64 /* types.h:162:31 */ // Signed count of microseconds.
+type X__suseconds64_t = int64 /* types.h:163:33 */
+
+type X__daddr_t = int32 /* types.h:165:27 */ // The type of a disk address.
+type X__key_t = int32 /* types.h:166:25 */ // Type of an IPC key.
+
+// Clock ID used in clock and timer functions.
+type X__clockid_t = int32 /* types.h:169:29 */
+
+// Timer ID returned by `timer_create'.
+type X__timer_t = uintptr /* types.h:172:12 */
+
+// Type to represent block size.
+type X__blksize_t = int32 /* types.h:175:29 */
+
+// Types from the Large File Support interface.
+
+// Type to count number of disk blocks.
+type X__blkcnt_t = int64 /* types.h:180:28 */
+type X__blkcnt64_t = int64 /* types.h:181:30 */
+
+// Type to count file system blocks.
+type X__fsblkcnt_t = uint64 /* types.h:184:30 */
+type X__fsblkcnt64_t = uint64 /* types.h:185:32 */
+
+// Type to count file system nodes.
+type X__fsfilcnt_t = uint64 /* types.h:188:30 */
+type X__fsfilcnt64_t = uint64 /* types.h:189:32 */
+
+// Type of miscellaneous file system fields.
+type X__fsword_t = int64 /* types.h:192:28 */
+
+type X__ssize_t = int64 /* types.h:194:27 */ // Type of a byte count, or error.
+
+// Signed long type used in system calls.
+type X__syscall_slong_t = int64 /* types.h:197:33 */
+// Unsigned long type used in system calls.
+type X__syscall_ulong_t = uint64 /* types.h:199:33 */
+
+// These few don't really vary by system, they always correspond
+// to one of the other defined types.
+type X__loff_t = X__off64_t /* types.h:203:19 */ // Type of file sizes and offsets (LFS).
+type X__caddr_t = uintptr /* types.h:204:14 */
+
+// Duplicates info from stdint.h but this is used in unistd.h.
+type X__intptr_t = int64 /* types.h:207:25 */
+
+// Duplicate info from sys/socket.h.
+type X__socklen_t = uint32 /* types.h:210:23 */
+
+// C99: An integer type that can be accessed as an atomic entity,
+// even in the presence of asynchronous interrupts.
+// It is not currently necessary for this to be machine-specific.
+type X__sig_atomic_t = int32 /* types.h:215:13 */
+
+// Seconds since the Epoch, visible to user code when time_t is too
+// narrow only for consistency with the old way of widening too-narrow
+// types. User code should never use __time64_t.
+
+// Some versions of stddef.h provide wint_t, even though neither the
+// C nor C++ standards, nor POSIX, specifies this. We assume that
+// stddef.h will define the macro _WINT_T if and only if it provides
+// wint_t, and conversely, that it will avoid providing wint_t if
+// _WINT_T is already defined.
+
+// Integral type unchanged by default argument promotions that can
+// hold any value corresponding to members of the extended character
+// set, as well as at least one value that does not correspond to any
+// member of the extended character set.
+
+type Wint_t = uint32 /* wint_t.h:20:23 */
+
+// Constant expression of type `wint_t' whose value does not correspond
+// to any member of the extended character set.
+
+// Some definitions from this header also appear in <wchar.h> in
+// Unix98 mode.
+// Copyright (C) 1996-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// ISO C99 Standard: 7.25
+// Wide character classification and mapping utilities <wctype.h>
+
+// bits/types.h -- definitions of __*_t types underlying *_t types.
+// Copyright (C) 2002-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Never include this file directly; use <sys/types.h> instead.
+
+// The definitions in this header are specified to appear in <wctype.h>
+// in ISO C99, but in <wchar.h> in Unix98. _GNU_SOURCE follows C99.
+
+// Scalar type that can hold values which represent locale-specific
+// character classifications.
+type Wctype_t = uint64 /* wctype-wchar.h:38:27 */
+
+// Extensible wide-character mapping functions: 7.15.3.2.
+
+// Scalar type that can hold values which represent locale-specific
+// character mappings.
+type Wctrans_t = uintptr /* wctype.h:48:25 */
+
+// POSIX.1-2008 extended locale interface (see locale.h).
+// Definition of locale_t.
+// Copyright (C) 2017-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// Definition of struct __locale_struct and __locale_t.
+// Copyright (C) 1997-2021 Free Software Foundation, Inc.
+// This file is part of the GNU C Library.
+// Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+//
+// The GNU C Library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// The GNU C Library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with the GNU C Library; if not, see
+// <https://www.gnu.org/licenses/>.
+
+// POSIX.1-2008: the locale_t type, representing a locale context
+// (implementation-namespace version). This type should be treated
+// as opaque by applications; some details are exposed for the sake of
+// efficiency in e.g. ctype functions.
+
+type X__locale_struct = struct {
+ F__locales [13]uintptr
+ F__ctype_b uintptr
+ F__ctype_tolower uintptr
+ F__ctype_toupper uintptr
+ F__names [13]uintptr
+} /* __locale_t.h:28:1 */
+
+type X__locale_t = uintptr /* __locale_t.h:42:32 */
+
+type Locale_t = X__locale_t /* locale_t.h:24:20 */
+
+var _ uint8 /* gen.c:2:13: */