@zigc/lib 0.17.0-dev.27 → 0.17.0-dev.292

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1102) hide show
  1. package/c/fcntl.zig +6 -1
  2. package/c/inttypes.zig +0 -10
  3. package/c/math.zig +52 -112
  4. package/c/pthread.zig +57 -0
  5. package/c/search.zig +1 -27
  6. package/c/stdlib/drand48.zig +0 -57
  7. package/c/stdlib.zig +31 -121
  8. package/c/string.zig +20 -7
  9. package/c/strings.zig +0 -38
  10. package/c/unistd.zig +27 -26
  11. package/c/wchar.zig +10 -0
  12. package/c.zig +2 -2
  13. package/compiler/aro/aro/CodeGen.zig +7 -8
  14. package/compiler/aro/aro/Compilation.zig +17 -17
  15. package/compiler/aro/aro/Driver.zig +14 -13
  16. package/compiler/aro/aro/Parser.zig +20 -15
  17. package/compiler/aro/aro/Pragma.zig +3 -2
  18. package/compiler/aro/aro/Preprocessor.zig +9 -6
  19. package/compiler/aro/aro/pragmas/message.zig +3 -2
  20. package/compiler/aro/aro/text_literal.zig +3 -2
  21. package/compiler/aro/assembly_backend/x86_64.zig +4 -4
  22. package/compiler/build_runner.zig +2 -4
  23. package/compiler/reduce/Walk.zig +8 -13
  24. package/compiler/resinator/compile.zig +1 -1
  25. package/compiler/resinator/cvtres.zig +4 -4
  26. package/compiler/resinator/errors.zig +7 -7
  27. package/compiler/resinator/ico.zig +4 -4
  28. package/compiler/resinator/parse.zig +2 -2
  29. package/compiler/resinator/res.zig +1 -1
  30. package/compiler/std-docs.zig +1 -1
  31. package/compiler/test_runner.zig +1 -1
  32. package/compiler/translate-c/MacroTranslator.zig +1 -1
  33. package/compiler/translate-c/Translator.zig +6 -2
  34. package/compiler/translate-c/ast.zig +16 -23
  35. package/compiler/translate-c/main.zig +1 -1
  36. package/compiler_rt/addf3.zig +1 -1
  37. package/compiler_rt/arm.zig +3 -3
  38. package/compiler_rt/atomics.zig +1 -1
  39. package/compiler_rt/comparef.zig +3 -3
  40. package/compiler_rt/cos.zig +1 -3
  41. package/compiler_rt/count0bits.zig +1 -1
  42. package/compiler_rt/divdf3.zig +2 -2
  43. package/compiler_rt/divsf3.zig +1 -1
  44. package/compiler_rt/divtf3.zig +1 -1
  45. package/compiler_rt/divxf3.zig +1 -1
  46. package/compiler_rt/exp.zig +0 -2
  47. package/compiler_rt/exp2.zig +0 -2
  48. package/compiler_rt/extendf.zig +5 -5
  49. package/compiler_rt/fabs.zig +1 -3
  50. package/compiler_rt/float_from_int.zig +3 -4
  51. package/compiler_rt/fma.zig +0 -2
  52. package/compiler_rt/fmax.zig +1 -3
  53. package/compiler_rt/fmin.zig +1 -3
  54. package/compiler_rt/fmod.zig +2 -4
  55. package/compiler_rt/limb64.zig +3 -2
  56. package/compiler_rt/log.zig +0 -2
  57. package/compiler_rt/log10.zig +0 -2
  58. package/compiler_rt/log2.zig +0 -2
  59. package/compiler_rt/mulf3.zig +2 -2
  60. package/compiler_rt/rem_pio2l.zig +1 -1
  61. package/compiler_rt/round.zig +0 -2
  62. package/compiler_rt/sin.zig +1 -3
  63. package/compiler_rt/sincos.zig +1 -3
  64. package/compiler_rt/sqrt.zig +0 -2
  65. package/compiler_rt/ssp.zig +2 -2
  66. package/compiler_rt/tan.zig +1 -3
  67. package/compiler_rt/trunc.zig +0 -2
  68. package/compiler_rt/truncf.zig +3 -3
  69. package/compiler_rt/trunctfhf2.zig +3 -0
  70. package/compiler_rt.zig +5 -26
  71. package/docs/wasm/Walk.zig +1 -3
  72. package/docs/wasm/html_render.zig +1 -2
  73. package/docs/wasm/markdown/Parser.zig +16 -20
  74. package/fuzzer.zig +2 -0
  75. package/include/__clang_spirv_builtins.h +12 -12
  76. package/include/__float_float.h +176 -0
  77. package/include/__float_header_macro.h +12 -0
  78. package/include/__float_infinity_nan.h +20 -0
  79. package/include/amo.h +131 -0
  80. package/include/amxavx512intrin.h +215 -1
  81. package/include/amxintrin.h +0 -2
  82. package/include/arm_acle.h +37 -27
  83. package/include/arm_neon.h +218 -82
  84. package/include/arm_sme.h +8 -8
  85. package/include/arm_sve.h +4162 -3782
  86. package/include/avx10_2_512bf16intrin.h +19 -12
  87. package/include/avx10_2_512convertintrin.h +1 -1
  88. package/include/avx10_2_512niintrin.h +31 -31
  89. package/include/avx10_2_512satcvtdsintrin.h +1 -1
  90. package/include/avx10_2bf16intrin.h +54 -45
  91. package/include/avx10_2convertintrin.h +2 -2
  92. package/include/avx10_2copyintrin.h +1 -1
  93. package/include/avx10_2niintrin.h +14 -14
  94. package/include/avx10_2satcvtdsintrin.h +2 -2
  95. package/include/avx2intrin.h +275 -377
  96. package/include/avx512bf16intrin.h +25 -16
  97. package/include/avx512bitalgintrin.h +19 -30
  98. package/include/avx512bwintrin.h +386 -505
  99. package/include/avx512cdintrin.h +42 -55
  100. package/include/avx512dqintrin.h +132 -161
  101. package/include/avx512fintrin.h +1015 -1424
  102. package/include/avx512fp16intrin.h +112 -110
  103. package/include/avx512ifmaintrin.h +32 -34
  104. package/include/avx512ifmavlintrin.h +73 -46
  105. package/include/avx512vbmi2intrin.h +43 -32
  106. package/include/avx512vbmiintrin.h +19 -27
  107. package/include/avx512vbmivlintrin.h +35 -49
  108. package/include/avx512vlbf16intrin.h +32 -22
  109. package/include/avx512vlbitalgintrin.h +37 -53
  110. package/include/avx512vlbwintrin.h +470 -573
  111. package/include/avx512vlcdintrin.h +74 -102
  112. package/include/avx512vldqintrin.h +110 -127
  113. package/include/avx512vlfp16intrin.h +130 -111
  114. package/include/avx512vlintrin.h +945 -1299
  115. package/include/avx512vlvbmi2intrin.h +78 -63
  116. package/include/avx512vlvnniintrin.h +21 -18
  117. package/include/avx512vlvp2intersectintrin.h +2 -2
  118. package/include/avx512vnniintrin.h +10 -10
  119. package/include/avx512vp2intersectintrin.h +1 -2
  120. package/include/avx512vpopcntdqintrin.h +8 -10
  121. package/include/avx512vpopcntdqvlintrin.h +17 -15
  122. package/include/avxifmaintrin.h +16 -0
  123. package/include/avxintrin.h +165 -241
  124. package/include/avxvnniint16intrin.h +118 -99
  125. package/include/avxvnniint8intrin.h +56 -32
  126. package/include/avxvnniintrin.h +16 -8
  127. package/include/cpuid.h +101 -4
  128. package/include/emmintrin.h +168 -168
  129. package/include/f16cintrin.h +23 -9
  130. package/include/float.h +16 -155
  131. package/include/fma4intrin.h +98 -96
  132. package/include/fmaintrin.h +96 -66
  133. package/include/gfniintrin.h +21 -16
  134. package/include/hexagon_types.h +23 -20
  135. package/include/hvx_hexagon_protos.h +649 -860
  136. package/include/immintrin.h +0 -12
  137. package/include/intrin.h +4 -0
  138. package/include/lasxintrin.h +113 -0
  139. package/include/llvm_libc_wrappers/assert.h +3 -5
  140. package/include/llvm_libc_wrappers/ctype.h +3 -115
  141. package/include/llvm_libc_wrappers/inttypes.h +3 -5
  142. package/include/llvm_libc_wrappers/stdio.h +10 -38
  143. package/include/llvm_libc_wrappers/stdlib.h +3 -24
  144. package/include/llvm_libc_wrappers/string.h +2 -70
  145. package/include/llvm_libc_wrappers/time.h +4 -10
  146. package/include/mmintrin.h +188 -257
  147. package/include/module.modulemap +23 -4
  148. package/include/movrs_avx10_2_512intrin.h +2 -2
  149. package/include/movrs_avx10_2intrin.h +4 -4
  150. package/include/pmmintrin.h +12 -24
  151. package/include/ptrauth.h +16 -2
  152. package/include/riscv_mips.h +34 -0
  153. package/include/riscv_nds.h +89 -0
  154. package/include/sifive_vector.h +58 -2
  155. package/include/sm4evexintrin.h +2 -2
  156. package/include/smmintrin.h +77 -59
  157. package/include/spirvintrin.h +194 -0
  158. package/include/stddefer.h +19 -0
  159. package/include/tmmintrin.h +116 -147
  160. package/include/vaesintrin.h +1 -2
  161. package/include/xmmintrin.h +44 -70
  162. package/include/xopintrin.h +20 -10
  163. package/libc/include/aarch64-linux-any/asm/hwcap.h +1 -0
  164. package/libc/include/aarch64-linux-any/asm/unistd_64.h +1 -0
  165. package/libc/include/any-linux-any/asm-generic/errno.h +2 -0
  166. package/libc/include/any-linux-any/asm-generic/unistd.h +4 -1
  167. package/libc/include/any-linux-any/drm/amdgpu_drm.h +20 -6
  168. package/libc/include/any-linux-any/drm/amdxdna_accel.h +8 -0
  169. package/libc/include/any-linux-any/drm/drm_fourcc.h +6 -6
  170. package/libc/include/any-linux-any/drm/panfrost_drm.h +75 -1
  171. package/libc/include/any-linux-any/drm/panthor_drm.h +154 -3
  172. package/libc/include/any-linux-any/drm/rocket_accel.h +74 -24
  173. package/libc/include/any-linux-any/drm/xe_drm.h +89 -6
  174. package/libc/include/any-linux-any/linux/android/binder.h +1 -1
  175. package/libc/include/any-linux-any/linux/bpf.h +28 -0
  176. package/libc/include/any-linux-any/linux/btrfs.h +1 -0
  177. package/libc/include/any-linux-any/linux/btrfs_tree.h +32 -2
  178. package/libc/include/any-linux-any/linux/dma-buf.h +1 -0
  179. package/libc/include/any-linux-any/linux/dpll.h +1 -0
  180. package/libc/include/any-linux-any/linux/elf.h +2 -0
  181. package/libc/include/any-linux-any/linux/ethtool.h +21 -5
  182. package/libc/include/any-linux-any/linux/fs.h +1 -0
  183. package/libc/include/any-linux-any/linux/hyperv.h +1 -1
  184. package/libc/include/any-linux-any/linux/idxd.h +134 -134
  185. package/libc/include/any-linux-any/linux/if_alg.h +1 -1
  186. package/libc/include/any-linux-any/linux/if_link.h +1 -0
  187. package/libc/include/any-linux-any/linux/input-event-codes.h +4 -0
  188. package/libc/include/any-linux-any/linux/io_uring/bpf_filter.h +68 -0
  189. package/libc/include/any-linux-any/linux/io_uring/query.h +5 -1
  190. package/libc/include/any-linux-any/linux/io_uring.h +33 -2
  191. package/libc/include/any-linux-any/linux/iommufd.h +39 -0
  192. package/libc/include/any-linux-any/linux/kfd_ioctl.h +13 -3
  193. package/libc/include/any-linux-any/linux/kfd_sysfs.h +2 -1
  194. package/libc/include/any-linux-any/linux/kvm.h +30 -6
  195. package/libc/include/any-linux-any/linux/landlock.h +22 -8
  196. package/libc/include/any-linux-any/linux/magic.h +1 -0
  197. package/libc/include/any-linux-any/linux/mempolicy.h +3 -0
  198. package/libc/include/any-linux-any/linux/mount.h +11 -2
  199. package/libc/include/any-linux-any/linux/mptcp_pm.h +1 -1
  200. package/libc/include/any-linux-any/linux/mshv.h +2 -0
  201. package/libc/include/any-linux-any/linux/netfilter_bridge.h +5 -4
  202. package/libc/include/any-linux-any/linux/netfilter_ipv4.h +4 -5
  203. package/libc/include/any-linux-any/linux/netfilter_ipv6.h +3 -4
  204. package/libc/include/any-linux-any/linux/nfs.h +1 -1
  205. package/libc/include/any-linux-any/linux/nfsd_netlink.h +1 -0
  206. package/libc/include/any-linux-any/linux/nilfs2_api.h +2 -2
  207. package/libc/include/any-linux-any/linux/nilfs2_ondisk.h +97 -66
  208. package/libc/include/any-linux-any/linux/nl80211.h +104 -3
  209. package/libc/include/any-linux-any/linux/pci.h +7 -0
  210. package/libc/include/any-linux-any/linux/pci_regs.h +65 -6
  211. package/libc/include/any-linux-any/linux/pcitest.h +1 -0
  212. package/libc/include/any-linux-any/linux/perf_event.h +24 -3
  213. package/libc/include/any-linux-any/linux/pkt_sched.h +1 -0
  214. package/libc/include/any-linux-any/linux/prctl.h +30 -0
  215. package/libc/include/any-linux-any/linux/rseq.h +62 -5
  216. package/libc/include/any-linux-any/linux/shm.h +0 -1
  217. package/libc/include/any-linux-any/linux/stddef.h +4 -0
  218. package/libc/include/any-linux-any/linux/sysctl.h +1 -2
  219. package/libc/include/any-linux-any/linux/taskstats.h +12 -1
  220. package/libc/include/any-linux-any/linux/tcp.h +23 -3
  221. package/libc/include/any-linux-any/linux/typelimits.h +8 -0
  222. package/libc/include/any-linux-any/linux/ublk_cmd.h +120 -1
  223. package/libc/include/any-linux-any/linux/v4l2-controls.h +63 -0
  224. package/libc/include/any-linux-any/linux/vbox_vmmdev_types.h +2 -2
  225. package/libc/include/any-linux-any/linux/vduse.h +80 -5
  226. package/libc/include/any-linux-any/linux/version.h +3 -3
  227. package/libc/include/any-linux-any/linux/vfio.h +4 -0
  228. package/libc/include/any-linux-any/linux/videodev2.h +3 -0
  229. package/libc/include/any-linux-any/linux/virtio_ring.h +1 -2
  230. package/libc/include/any-linux-any/linux/vmclock-abi.h +20 -0
  231. package/libc/include/any-linux-any/rdma/bnxt_re-abi.h +16 -0
  232. package/libc/include/any-linux-any/rdma/ib_user_ioctl_cmds.h +16 -0
  233. package/libc/include/any-linux-any/rdma/mana-abi.h +3 -0
  234. package/libc/include/any-linux-any/scsi/scsi_bsg_ufs.h +8 -9
  235. package/libc/include/any-linux-any/sound/sof/tokens.h +6 -0
  236. package/libc/include/arc-linux-any/asm/swab.h +0 -63
  237. package/libc/include/arc-linux-any/asm/unistd_32.h +1 -0
  238. package/libc/include/arm-linux-any/asm/ptrace.h +0 -9
  239. package/libc/include/arm-linux-any/asm/unistd-eabi.h +1 -0
  240. package/libc/include/arm-linux-any/asm/unistd-oabi.h +1 -0
  241. package/libc/include/csky-linux-any/asm/unistd_32.h +1 -0
  242. package/libc/include/hexagon-linux-any/asm/unistd_32.h +1 -0
  243. package/libc/include/loongarch-linux-any/asm/hwcap.h +1 -0
  244. package/libc/include/loongarch-linux-any/asm/kvm.h +1 -0
  245. package/libc/include/loongarch-linux-any/asm/kvm_para.h +1 -0
  246. package/libc/include/loongarch-linux-any/asm/unistd_32.h +2 -0
  247. package/libc/include/loongarch-linux-any/asm/unistd_64.h +2 -0
  248. package/libc/include/m68k-linux-any/asm/unistd_32.h +1 -0
  249. package/libc/include/mips-linux-any/asm/errno.h +2 -0
  250. package/libc/include/mips-linux-any/asm/unistd_n32.h +1 -0
  251. package/libc/include/mips-linux-any/asm/unistd_n64.h +1 -0
  252. package/libc/include/mips-linux-any/asm/unistd_o32.h +1 -0
  253. package/libc/include/powerpc-linux-any/asm/unistd_32.h +1 -0
  254. package/libc/include/powerpc-linux-any/asm/unistd_64.h +1 -0
  255. package/libc/include/riscv-linux-any/asm/hwprobe.h +4 -0
  256. package/libc/include/riscv-linux-any/asm/kvm.h +3 -0
  257. package/libc/include/riscv-linux-any/asm/ptrace.h +37 -0
  258. package/libc/include/riscv-linux-any/asm/sigcontext.h +1 -0
  259. package/libc/include/riscv-linux-any/asm/unistd_32.h +1 -0
  260. package/libc/include/riscv-linux-any/asm/unistd_64.h +1 -0
  261. package/libc/include/s390x-linux-any/asm/unistd_64.h +1 -0
  262. package/libc/include/sparc-linux-any/asm/errno.h +2 -0
  263. package/libc/include/sparc-linux-any/asm/ioctls.h +4 -4
  264. package/libc/include/sparc-linux-any/asm/unistd_32.h +2 -0
  265. package/libc/include/sparc-linux-any/asm/unistd_64.h +2 -0
  266. package/libc/include/x86-linux-any/asm/auxvec.h +0 -4
  267. package/libc/include/x86-linux-any/asm/kvm.h +13 -8
  268. package/libc/include/x86-linux-any/asm/svm.h +16 -16
  269. package/libc/include/x86-linux-any/asm/unistd_32.h +1 -0
  270. package/libc/include/x86-linux-any/asm/unistd_64.h +1 -0
  271. package/libc/include/x86-linux-any/asm/unistd_x32.h +1 -0
  272. package/libc/include/xtensa-linux-any/asm/unistd_32.h +1 -0
  273. package/libc/musl/arch/mipsn32/syscall_arch.h +35 -32
  274. package/libcxx/include/__algorithm/all_of.h +11 -5
  275. package/libcxx/include/__algorithm/comp.h +4 -0
  276. package/libcxx/include/__algorithm/copy.h +28 -147
  277. package/libcxx/include/__algorithm/copy_backward.h +9 -24
  278. package/libcxx/include/__algorithm/copy_n.h +50 -16
  279. package/libcxx/include/__algorithm/count.h +2 -2
  280. package/libcxx/include/__algorithm/equal.h +43 -55
  281. package/libcxx/include/__algorithm/fill.h +26 -8
  282. package/libcxx/include/__algorithm/fill_n.h +32 -46
  283. package/libcxx/include/__algorithm/find.h +96 -39
  284. package/libcxx/include/__algorithm/find_end.h +105 -0
  285. package/libcxx/include/__algorithm/for_each.h +18 -24
  286. package/libcxx/include/__algorithm/for_each_n.h +20 -47
  287. package/libcxx/include/__algorithm/for_each_n_segment.h +1 -1
  288. package/libcxx/include/__algorithm/for_each_segment.h +26 -0
  289. package/libcxx/include/__algorithm/generate.h +4 -2
  290. package/libcxx/include/__algorithm/generate_n.h +19 -6
  291. package/libcxx/include/__algorithm/is_permutation.h +4 -4
  292. package/libcxx/include/__algorithm/iterator_operations.h +3 -0
  293. package/libcxx/include/__algorithm/lexicographical_compare.h +2 -2
  294. package/libcxx/include/__algorithm/lexicographical_compare_three_way.h +6 -6
  295. package/libcxx/include/__algorithm/make_heap.h +16 -4
  296. package/libcxx/include/__algorithm/mismatch.h +2 -2
  297. package/libcxx/include/__algorithm/move.h +8 -19
  298. package/libcxx/include/__algorithm/move_backward.h +9 -24
  299. package/libcxx/include/__algorithm/none_of.h +4 -4
  300. package/libcxx/include/__algorithm/partial_sort.h +1 -1
  301. package/libcxx/include/__algorithm/partial_sort_copy.h +1 -1
  302. package/libcxx/include/__algorithm/pstl.h +9 -9
  303. package/libcxx/include/__algorithm/radix_sort.h +27 -25
  304. package/libcxx/include/__algorithm/ranges_copy_n.h +3 -26
  305. package/libcxx/include/__algorithm/ranges_equal.h +17 -26
  306. package/libcxx/include/__algorithm/ranges_fill.h +7 -6
  307. package/libcxx/include/__algorithm/ranges_for_each.h +9 -1
  308. package/libcxx/include/__algorithm/ranges_generate_n.h +2 -6
  309. package/libcxx/include/__algorithm/ranges_search_n.h +2 -2
  310. package/libcxx/include/__algorithm/rotate.h +27 -44
  311. package/libcxx/include/__algorithm/search_n.h +49 -37
  312. package/libcxx/include/__algorithm/sift_down.h +19 -18
  313. package/libcxx/include/__algorithm/simd_utils.h +33 -4
  314. package/libcxx/include/__algorithm/specialized_algorithms.h +54 -0
  315. package/libcxx/include/__algorithm/stable_sort.h +1 -1
  316. package/libcxx/include/__assertion_handler +31 -4
  317. package/libcxx/include/__atomic/atomic.h +36 -60
  318. package/libcxx/include/__atomic/atomic_flag.h +19 -37
  319. package/libcxx/include/__atomic/atomic_ref.h +29 -12
  320. package/libcxx/include/__atomic/atomic_sync.h +127 -55
  321. package/libcxx/include/__atomic/atomic_sync_timed.h +144 -0
  322. package/libcxx/include/__atomic/atomic_waitable_traits.h +103 -0
  323. package/libcxx/include/__atomic/contention_t.h +27 -3
  324. package/libcxx/include/__atomic/floating_point_helper.h +55 -0
  325. package/libcxx/include/__bit/countl.h +1 -2
  326. package/libcxx/include/__bit/countr.h +1 -2
  327. package/libcxx/include/__bit/has_single_bit.h +1 -1
  328. package/libcxx/include/__bit/popcount.h +0 -1
  329. package/libcxx/include/__bit/rotate.h +15 -26
  330. package/libcxx/include/__bit_reference +207 -18
  331. package/libcxx/include/__charconv/from_chars_integral.h +1 -1
  332. package/libcxx/include/__charconv/from_chars_result.h +1 -1
  333. package/libcxx/include/__charconv/to_chars_integral.h +1 -0
  334. package/libcxx/include/__charconv/to_chars_result.h +1 -1
  335. package/libcxx/include/__charconv/traits.h +3 -24
  336. package/libcxx/include/__chrono/day.h +11 -0
  337. package/libcxx/include/__chrono/duration.h +58 -33
  338. package/libcxx/include/__chrono/file_clock.h +4 -2
  339. package/libcxx/include/__chrono/is_clock.h +72 -0
  340. package/libcxx/include/__chrono/leap_second.h +13 -0
  341. package/libcxx/include/__chrono/month.h +13 -0
  342. package/libcxx/include/__chrono/month_weekday.h +22 -0
  343. package/libcxx/include/__chrono/monthday.h +20 -0
  344. package/libcxx/include/__chrono/steady_clock.h +1 -1
  345. package/libcxx/include/__chrono/system_clock.h +3 -3
  346. package/libcxx/include/__chrono/time_point.h +37 -13
  347. package/libcxx/include/__chrono/weekday.h +25 -0
  348. package/libcxx/include/__chrono/year.h +11 -0
  349. package/libcxx/include/__chrono/year_month.h +13 -0
  350. package/libcxx/include/__chrono/year_month_day.h +23 -0
  351. package/libcxx/include/__chrono/year_month_weekday.h +26 -0
  352. package/libcxx/include/__chrono/zoned_time.h +16 -0
  353. package/libcxx/include/__compare/is_eq.h +6 -6
  354. package/libcxx/include/__compare/strong_order.h +12 -30
  355. package/libcxx/include/__compare/three_way_comparable.h +2 -2
  356. package/libcxx/include/__concepts/comparison_common_type.h +40 -0
  357. package/libcxx/include/__concepts/equality_comparable.h +2 -1
  358. package/libcxx/include/__condition_variable/condition_variable.h +1 -1
  359. package/libcxx/include/__config +63 -280
  360. package/libcxx/include/__configuration/abi.h +14 -24
  361. package/libcxx/include/__configuration/availability.h +65 -118
  362. package/libcxx/include/__configuration/compiler.h +6 -6
  363. package/libcxx/include/__configuration/experimental.h +38 -0
  364. package/libcxx/include/__configuration/hardening.h +215 -0
  365. package/libcxx/include/__configuration/language.h +3 -0
  366. package/libcxx/include/__configuration/platform.h +9 -16
  367. package/libcxx/include/__coroutine/coroutine_handle.h +9 -9
  368. package/libcxx/include/__coroutine/noop_coroutine_handle.h +11 -13
  369. package/libcxx/include/__debug_utils/strict_weak_ordering_check.h +1 -1
  370. package/libcxx/include/__exception/exception.h +6 -4
  371. package/libcxx/include/__exception/exception_ptr.h +27 -5
  372. package/libcxx/include/__exception/nested_exception.h +2 -2
  373. package/libcxx/include/__exception/operations.h +5 -5
  374. package/libcxx/include/__expected/bad_expected_access.h +8 -6
  375. package/libcxx/include/__expected/expected.h +62 -64
  376. package/libcxx/include/__expected/unexpected.h +4 -4
  377. package/libcxx/include/__filesystem/copy_options.h +4 -4
  378. package/libcxx/include/__filesystem/directory_entry.h +37 -33
  379. package/libcxx/include/__filesystem/directory_iterator.h +9 -11
  380. package/libcxx/include/__filesystem/directory_options.h +7 -4
  381. package/libcxx/include/__filesystem/file_status.h +3 -3
  382. package/libcxx/include/__filesystem/filesystem_error.h +9 -10
  383. package/libcxx/include/__filesystem/operations.h +97 -66
  384. package/libcxx/include/__filesystem/path.h +68 -64
  385. package/libcxx/include/__filesystem/path_iterator.h +1 -3
  386. package/libcxx/include/__filesystem/perm_options.h +4 -4
  387. package/libcxx/include/__filesystem/perms.h +4 -4
  388. package/libcxx/include/__filesystem/recursive_directory_iterator.h +9 -14
  389. package/libcxx/include/__filesystem/space_info.h +1 -1
  390. package/libcxx/include/__filesystem/u8path.h +12 -14
  391. package/libcxx/include/__flat_map/flat_map.h +88 -71
  392. package/libcxx/include/__flat_map/flat_multimap.h +251 -172
  393. package/libcxx/include/__flat_map/key_value_iterator.h +0 -1
  394. package/libcxx/include/__flat_map/utils.h +1 -0
  395. package/libcxx/include/__flat_set/flat_multiset.h +211 -143
  396. package/libcxx/include/__flat_set/flat_set.h +86 -68
  397. package/libcxx/include/__format/concepts.h +0 -14
  398. package/libcxx/include/__format/extended_grapheme_cluster_table.h +3 -2
  399. package/libcxx/include/__format/fmt_pair_like.h +42 -0
  400. package/libcxx/include/__format/format_arg.h +7 -10
  401. package/libcxx/include/__format/format_args.h +1 -1
  402. package/libcxx/include/__format/format_context.h +5 -5
  403. package/libcxx/include/__format/format_parse_context.h +2 -2
  404. package/libcxx/include/__format/formatter_output.h +30 -34
  405. package/libcxx/include/__format/indic_conjunct_break_table.h +3 -2
  406. package/libcxx/include/__format/range_default_formatter.h +2 -41
  407. package/libcxx/include/__format/range_format.h +71 -0
  408. package/libcxx/include/__format/range_formatter.h +1 -0
  409. package/libcxx/include/__format/width_estimation_table.h +4 -2
  410. package/libcxx/include/__functional/bind.h +10 -15
  411. package/libcxx/include/__functional/bind_back.h +1 -1
  412. package/libcxx/include/__functional/bind_front.h +1 -1
  413. package/libcxx/include/__functional/function.h +57 -75
  414. package/libcxx/include/__functional/hash.h +1 -10
  415. package/libcxx/include/__functional/identity.h +1 -1
  416. package/libcxx/include/__functional/is_transparent.h +8 -0
  417. package/libcxx/include/__functional/mem_fn.h +2 -1
  418. package/libcxx/include/__functional/operations.h +18 -0
  419. package/libcxx/include/__functional/ranges_operations.h +7 -0
  420. package/libcxx/include/__functional/reference_wrapper.h +7 -5
  421. package/libcxx/include/__functional/weak_result_type.h +14 -28
  422. package/libcxx/include/__fwd/ios.h +1 -1
  423. package/libcxx/include/__fwd/tuple.h +14 -0
  424. package/libcxx/include/__hash_table +371 -357
  425. package/libcxx/include/__ios/fpos.h +4 -4
  426. package/libcxx/include/__iterator/back_insert_iterator.h +1 -7
  427. package/libcxx/include/__iterator/bounded_iter.h +7 -8
  428. package/libcxx/include/__iterator/concepts.h +6 -9
  429. package/libcxx/include/__iterator/cpp17_iterator_concepts.h +13 -12
  430. package/libcxx/include/__iterator/distance.h +40 -18
  431. package/libcxx/include/__iterator/front_insert_iterator.h +1 -7
  432. package/libcxx/include/__iterator/insert_iterator.h +1 -7
  433. package/libcxx/include/__iterator/istream_iterator.h +6 -7
  434. package/libcxx/include/__iterator/istreambuf_iterator.h +6 -7
  435. package/libcxx/include/__iterator/iter_move.h +1 -1
  436. package/libcxx/include/__iterator/iterator.h +13 -0
  437. package/libcxx/include/__iterator/iterator_traits.h +13 -14
  438. package/libcxx/include/__iterator/ostream_iterator.h +1 -7
  439. package/libcxx/include/__iterator/ostreambuf_iterator.h +1 -7
  440. package/libcxx/include/__iterator/reverse_iterator.h +8 -13
  441. package/libcxx/include/__iterator/segmented_iterator.h +3 -8
  442. package/libcxx/include/__iterator/static_bounded_iter.h +3 -3
  443. package/libcxx/include/__iterator/wrap_iter.h +8 -6
  444. package/libcxx/include/__locale +3 -10
  445. package/libcxx/include/__locale_dir/locale_base_api/bsd_locale_fallbacks.h +0 -10
  446. package/libcxx/include/__locale_dir/locale_base_api.h +5 -28
  447. package/libcxx/include/__locale_dir/messages.h +1 -1
  448. package/libcxx/include/__locale_dir/money.h +2 -2
  449. package/libcxx/include/__locale_dir/num.h +190 -243
  450. package/libcxx/include/__locale_dir/pad_and_output.h +5 -6
  451. package/libcxx/include/__locale_dir/support/bsd_like.h +0 -20
  452. package/libcxx/include/__locale_dir/support/fuchsia.h +0 -7
  453. package/libcxx/include/__locale_dir/support/linux.h +0 -37
  454. package/libcxx/include/__locale_dir/support/netbsd.h +0 -2
  455. package/libcxx/include/__locale_dir/support/newlib.h +243 -0
  456. package/libcxx/include/__locale_dir/support/no_locale/characters.h +0 -4
  457. package/libcxx/include/__locale_dir/support/no_locale/strtonum.h +0 -9
  458. package/libcxx/include/__locale_dir/support/windows.h +0 -29
  459. package/libcxx/include/__locale_dir/time.h +3 -7
  460. package/libcxx/include/__math/hypot.h +1 -1
  461. package/libcxx/include/__math/logarithms.h +1 -1
  462. package/libcxx/include/__math/traits.h +80 -11
  463. package/libcxx/include/__mdspan/extents.h +7 -4
  464. package/libcxx/include/__mdspan/layout_stride.h +4 -5
  465. package/libcxx/include/__mdspan/mdspan.h +29 -23
  466. package/libcxx/include/__memory/addressof.h +7 -5
  467. package/libcxx/include/__memory/align.h +18 -1
  468. package/libcxx/include/__memory/allocate_at_least.h +15 -10
  469. package/libcxx/include/__memory/allocator.h +14 -26
  470. package/libcxx/include/__memory/allocator_traits.h +6 -4
  471. package/libcxx/include/__memory/compressed_pair.h +15 -9
  472. package/libcxx/include/__memory/construct_at.h +12 -23
  473. package/libcxx/include/__memory/inout_ptr.h +1 -1
  474. package/libcxx/include/__memory/is_sufficiently_aligned.h +1 -1
  475. package/libcxx/include/__memory/out_ptr.h +1 -1
  476. package/libcxx/include/__memory/pointer_traits.h +1 -1
  477. package/libcxx/include/__memory/raw_storage_iterator.h +3 -9
  478. package/libcxx/include/__memory/shared_count.h +9 -30
  479. package/libcxx/include/__memory/shared_ptr.h +100 -145
  480. package/libcxx/include/__memory/temp_value.h +1 -2
  481. package/libcxx/include/__memory/uninitialized_algorithms.h +44 -115
  482. package/libcxx/include/__memory/unique_ptr.h +14 -16
  483. package/libcxx/include/__memory/uses_allocator_construction.h +1 -0
  484. package/libcxx/include/__memory_resource/memory_resource.h +4 -2
  485. package/libcxx/include/__memory_resource/monotonic_buffer_resource.h +1 -1
  486. package/libcxx/include/__memory_resource/polymorphic_allocator.h +13 -8
  487. package/libcxx/include/__memory_resource/pool_options.h +1 -1
  488. package/libcxx/include/__memory_resource/synchronized_pool_resource.h +4 -2
  489. package/libcxx/include/__memory_resource/unsynchronized_pool_resource.h +1 -1
  490. package/libcxx/include/__mutex/mutex.h +2 -2
  491. package/libcxx/include/__mutex/once_flag.h +14 -11
  492. package/libcxx/include/__mutex/tag_types.h +3 -3
  493. package/libcxx/include/__mutex/unique_lock.h +8 -7
  494. package/libcxx/include/__new/align_val_t.h +6 -0
  495. package/libcxx/include/__new/allocate.h +1 -2
  496. package/libcxx/include/__new/exceptions.h +8 -2
  497. package/libcxx/include/__new/global_new_delete.h +4 -11
  498. package/libcxx/include/__new/interference_size.h +0 -4
  499. package/libcxx/include/__new/launder.h +3 -5
  500. package/libcxx/include/__new/nothrow_t.h +1 -1
  501. package/libcxx/include/__numeric/gcd_lcm.h +24 -34
  502. package/libcxx/include/__numeric/midpoint.h +9 -14
  503. package/libcxx/include/__numeric/pstl.h +2 -2
  504. package/libcxx/include/__numeric/saturation_arithmetic.h +13 -5
  505. package/libcxx/include/__ostream/basic_ostream.h +8 -8
  506. package/libcxx/include/__pstl/backends/default.h +14 -14
  507. package/libcxx/include/__pstl/backends/libdispatch.h +2 -2
  508. package/libcxx/include/__pstl/cpu_algos/find_if.h +1 -1
  509. package/libcxx/include/__pstl/cpu_algos/transform.h +5 -6
  510. package/libcxx/include/__pstl/cpu_algos/transform_reduce.h +5 -4
  511. package/libcxx/include/__random/binomial_distribution.h +10 -4
  512. package/libcxx/include/__random/mersenne_twister_engine.h +50 -154
  513. package/libcxx/include/__random/piecewise_constant_distribution.h +3 -2
  514. package/libcxx/include/__random/piecewise_linear_distribution.h +3 -2
  515. package/libcxx/include/__ranges/adjacent_transform_view.h +406 -0
  516. package/libcxx/include/__ranges/adjacent_view.h +419 -0
  517. package/libcxx/include/__ranges/as_rvalue_view.h +9 -9
  518. package/libcxx/include/__ranges/chunk_by_view.h +6 -6
  519. package/libcxx/include/__ranges/common_view.h +7 -7
  520. package/libcxx/include/__ranges/drop_view.h +8 -8
  521. package/libcxx/include/__ranges/drop_while_view.h +5 -5
  522. package/libcxx/include/__ranges/elements_of.h +49 -0
  523. package/libcxx/include/__ranges/empty_view.h +5 -5
  524. package/libcxx/include/__ranges/filter_view.h +10 -10
  525. package/libcxx/include/__ranges/iota_view.h +41 -22
  526. package/libcxx/include/__ranges/owning_view.h +15 -15
  527. package/libcxx/include/__ranges/ref_view.h +6 -6
  528. package/libcxx/include/__ranges/repeat_view.h +17 -10
  529. package/libcxx/include/__ranges/single_view.h +8 -8
  530. package/libcxx/include/__ranges/take_view.h +9 -9
  531. package/libcxx/include/__ranges/transform_view.h +1 -2
  532. package/libcxx/include/__ranges/view_interface.h +10 -10
  533. package/libcxx/include/__ranges/zip_transform_view.h +357 -0
  534. package/libcxx/include/__ranges/zip_view.h +20 -20
  535. package/libcxx/include/__split_buffer +612 -240
  536. package/libcxx/include/__stop_token/atomic_unique_lock.h +1 -1
  537. package/libcxx/include/__stop_token/stop_callback.h +2 -2
  538. package/libcxx/include/__stop_token/stop_source.h +1 -1
  539. package/libcxx/include/__stop_token/stop_state.h +4 -4
  540. package/libcxx/include/__stop_token/stop_token.h +1 -1
  541. package/libcxx/include/__string/char_traits.h +51 -31
  542. package/libcxx/include/__string/constexpr_c_functions.h +5 -5
  543. package/libcxx/include/__support/xlocale/__strtonum_fallback.h +0 -8
  544. package/libcxx/include/__system_error/error_category.h +8 -8
  545. package/libcxx/include/__system_error/error_code.h +5 -5
  546. package/libcxx/include/__system_error/error_condition.h +4 -4
  547. package/libcxx/include/__system_error/system_error.h +1 -1
  548. package/libcxx/include/__thread/id.h +1 -1
  549. package/libcxx/include/__thread/jthread.h +1 -1
  550. package/libcxx/include/__thread/poll_with_backoff.h +27 -8
  551. package/libcxx/include/__thread/support/c11.h +8 -8
  552. package/libcxx/include/__thread/support/pthread.h +8 -8
  553. package/libcxx/include/__thread/support/windows.h +8 -8
  554. package/libcxx/include/__thread/thread.h +13 -8
  555. package/libcxx/include/__thread/timed_backoff_policy.h +3 -2
  556. package/libcxx/include/__tree +849 -701
  557. package/libcxx/include/__tuple/sfinae_helpers.h +1 -44
  558. package/libcxx/include/__tuple/tuple_element.h +0 -12
  559. package/libcxx/include/__tuple/tuple_size.h +0 -4
  560. package/libcxx/include/__tuple/tuple_transform.h +45 -0
  561. package/libcxx/include/__type_traits/aligned_storage.h +13 -40
  562. package/libcxx/include/__type_traits/desugars_to.h +4 -0
  563. package/libcxx/include/__type_traits/invoke.h +8 -0
  564. package/libcxx/include/__type_traits/is_allocator.h +6 -7
  565. package/libcxx/include/__type_traits/is_array.h +26 -0
  566. package/libcxx/include/__type_traits/is_equality_comparable.h +16 -21
  567. package/libcxx/include/__type_traits/is_final.h +1 -1
  568. package/libcxx/include/__type_traits/is_floating_point.h +7 -6
  569. package/libcxx/include/__type_traits/is_generic_transparent_comparator.h +30 -0
  570. package/libcxx/include/__type_traits/is_specialization.h +2 -6
  571. package/libcxx/include/__type_traits/is_within_lifetime.h +29 -0
  572. package/libcxx/include/__type_traits/make_transparent.h +52 -0
  573. package/libcxx/include/__type_traits/reference_constructs_from_temporary.h +1 -7
  574. package/libcxx/include/__type_traits/reference_converts_from_temporary.h +1 -1
  575. package/libcxx/include/__utility/cmp.h +19 -7
  576. package/libcxx/include/__utility/default_three_way_comparator.h +70 -0
  577. package/libcxx/include/__utility/in_place.h +1 -1
  578. package/libcxx/include/__utility/integer_sequence.h +56 -41
  579. package/libcxx/include/__utility/lazy_synth_three_way_comparator.h +120 -0
  580. package/libcxx/include/__utility/pair.h +22 -25
  581. package/libcxx/include/__utility/scope_guard.h +2 -0
  582. package/libcxx/include/__utility/try_key_extraction.h +114 -0
  583. package/libcxx/include/__vector/vector.h +187 -160
  584. package/libcxx/include/__vector/vector_bool.h +76 -83
  585. package/libcxx/include/any +118 -155
  586. package/libcxx/include/array +88 -56
  587. package/libcxx/include/atomic +2 -0
  588. package/libcxx/include/barrier +20 -24
  589. package/libcxx/include/bitset +49 -30
  590. package/libcxx/include/ccomplex +3 -11
  591. package/libcxx/include/chrono +47 -0
  592. package/libcxx/include/ciso646 +3 -6
  593. package/libcxx/include/complex +77 -65
  594. package/libcxx/include/complex.h +10 -10
  595. package/libcxx/include/condition_variable +3 -3
  596. package/libcxx/include/cstdalign +3 -10
  597. package/libcxx/include/cstdbool +3 -10
  598. package/libcxx/include/ctgmath +2 -11
  599. package/libcxx/include/ctype.h +24 -24
  600. package/libcxx/include/cwchar +2 -2
  601. package/libcxx/include/deque +109 -225
  602. package/libcxx/include/errno.h +269 -269
  603. package/libcxx/include/exception +4 -1
  604. package/libcxx/include/ext/hash_map +7 -48
  605. package/libcxx/include/ext/hash_set +2 -8
  606. package/libcxx/include/fenv.h +43 -43
  607. package/libcxx/include/flat_map +663 -11
  608. package/libcxx/include/flat_set +543 -8
  609. package/libcxx/include/float.h +16 -16
  610. package/libcxx/include/forward_list +33 -53
  611. package/libcxx/include/fstream +57 -42
  612. package/libcxx/include/future +41 -51
  613. package/libcxx/include/initializer_list +9 -3
  614. package/libcxx/include/inttypes.h +16 -16
  615. package/libcxx/include/ios +28 -28
  616. package/libcxx/include/istream +19 -13
  617. package/libcxx/include/iterator +10 -0
  618. package/libcxx/include/latch +7 -5
  619. package/libcxx/include/limits +4 -4
  620. package/libcxx/include/list +61 -79
  621. package/libcxx/include/map +386 -274
  622. package/libcxx/include/math.h +19 -0
  623. package/libcxx/include/mdspan +1 -5
  624. package/libcxx/include/mutex +29 -19
  625. package/libcxx/include/optional +644 -149
  626. package/libcxx/include/print +9 -5
  627. package/libcxx/include/queue +39 -37
  628. package/libcxx/include/ranges +48 -0
  629. package/libcxx/include/regex +33 -31
  630. package/libcxx/include/scoped_allocator +16 -11
  631. package/libcxx/include/semaphore +15 -18
  632. package/libcxx/include/set +220 -192
  633. package/libcxx/include/shared_mutex +3 -8
  634. package/libcxx/include/span +53 -37
  635. package/libcxx/include/sstream +34 -28
  636. package/libcxx/include/stack +13 -15
  637. package/libcxx/include/stddef.h +10 -10
  638. package/libcxx/include/stdexcept +2 -2
  639. package/libcxx/include/stdio.h +20 -21
  640. package/libcxx/include/streambuf +59 -19
  641. package/libcxx/include/string +574 -573
  642. package/libcxx/include/string_view +113 -89
  643. package/libcxx/include/strstream +10 -10
  644. package/libcxx/include/syncstream +4 -4
  645. package/libcxx/include/tgmath.h +12 -12
  646. package/libcxx/include/tuple +242 -212
  647. package/libcxx/include/type_traits +8 -2
  648. package/libcxx/include/typeindex +5 -3
  649. package/libcxx/include/typeinfo +92 -89
  650. package/libcxx/include/unordered_map +179 -304
  651. package/libcxx/include/unordered_set +168 -195
  652. package/libcxx/include/utility +12 -0
  653. package/libcxx/include/valarray +106 -161
  654. package/libcxx/include/variant +25 -33
  655. package/libcxx/include/version +41 -24
  656. package/libcxx/include/wctype.h +29 -29
  657. package/libcxx/libc/hdr/errno_macros.h +3 -1
  658. package/libcxx/libc/hdr/stdint_proxy.h +18 -0
  659. package/libcxx/libc/hdr/types/wchar_t.h +23 -0
  660. package/libcxx/libc/hdr/wchar_overlay.h +69 -0
  661. package/libcxx/libc/include/llvm-libc-macros/cfloat128-macros.h +41 -0
  662. package/libcxx/libc/include/llvm-libc-macros/cfloat16-macros.h +20 -0
  663. package/libcxx/libc/include/llvm-libc-macros/wchar-macros.h +18 -0
  664. package/libcxx/libc/include/llvm-libc-types/cfloat128.h +11 -28
  665. package/libcxx/libc/include/llvm-libc-types/cfloat16.h +4 -7
  666. package/libcxx/libc/include/llvm-libc-types/wint_t.h +14 -0
  667. package/libcxx/libc/shared/libc_common.h +5 -0
  668. package/libcxx/libc/src/__support/CPP/bit.h +50 -12
  669. package/libcxx/libc/src/__support/CPP/type_traits/is_complex.h +7 -0
  670. package/libcxx/libc/src/__support/CPP/type_traits/is_destructible.h +2 -1
  671. package/libcxx/libc/src/__support/CPP/type_traits/is_unsigned.h +6 -0
  672. package/libcxx/libc/src/__support/CPP/utility/integer_sequence.h +10 -0
  673. package/libcxx/libc/src/__support/FPUtil/FPBits.h +6 -7
  674. package/libcxx/libc/src/__support/FPUtil/rounding_mode.h +50 -4
  675. package/libcxx/libc/src/__support/big_int.h +14 -14
  676. package/libcxx/libc/src/__support/common.h +3 -2
  677. package/libcxx/libc/src/__support/ctype_utils.h +19 -12
  678. package/libcxx/libc/src/__support/detailed_powers_of_ten.h +1 -2
  679. package/libcxx/libc/src/__support/high_precision_decimal.h +33 -14
  680. package/libcxx/libc/src/__support/libc_assert.h +2 -0
  681. package/libcxx/libc/src/__support/macros/attributes.h +44 -1
  682. package/libcxx/libc/src/__support/macros/config.h +23 -0
  683. package/libcxx/libc/src/__support/macros/null_check.h +1 -2
  684. package/libcxx/libc/src/__support/macros/optimization.h +3 -0
  685. package/libcxx/libc/src/__support/macros/properties/architectures.h +5 -1
  686. package/libcxx/libc/src/__support/macros/properties/compiler.h +8 -3
  687. package/libcxx/libc/src/__support/macros/properties/cpu_features.h +17 -1
  688. package/libcxx/libc/src/__support/macros/properties/types.h +2 -3
  689. package/libcxx/libc/src/__support/macros/sanitizer.h +0 -10
  690. package/libcxx/libc/src/__support/math_extras.h +20 -4
  691. package/libcxx/libc/src/__support/str_to_float.h +98 -125
  692. package/libcxx/libc/src/__support/str_to_integer.h +39 -27
  693. package/libcxx/libc/src/__support/wctype_utils.h +588 -0
  694. package/libcxx/src/any.cpp +4 -0
  695. package/libcxx/src/atomic.cpp +365 -80
  696. package/libcxx/src/barrier.cpp +4 -3
  697. package/libcxx/src/charconv.cpp +6 -3
  698. package/libcxx/src/condition_variable_destructor.cpp +1 -1
  699. package/libcxx/src/error_category.cpp +3 -1
  700. package/libcxx/src/exception.cpp +2 -10
  701. package/libcxx/src/experimental/time_zone.cpp +1 -1
  702. package/libcxx/src/experimental/tzdb.cpp +4 -1
  703. package/libcxx/src/filesystem/error.h +4 -22
  704. package/libcxx/src/filesystem/format_string.h +9 -18
  705. package/libcxx/src/filesystem/int128_builtins.cpp +2 -0
  706. package/libcxx/src/filesystem/operations.cpp +2 -9
  707. package/libcxx/src/filesystem/path.cpp +3 -1
  708. package/libcxx/src/include/aligned_alloc.h +65 -0
  709. package/libcxx/src/include/config_elast.h +1 -1
  710. package/libcxx/src/include/from_chars_floating_point.h +11 -7
  711. package/libcxx/src/include/overridable_function.h +8 -10
  712. package/libcxx/src/iostream.cpp +56 -37
  713. package/libcxx/src/locale.cpp +213 -196
  714. package/libcxx/src/memory.cpp +12 -14
  715. package/libcxx/src/mutex_destructor.cpp +1 -1
  716. package/libcxx/src/new.cpp +5 -5
  717. package/libcxx/src/optional.cpp +4 -0
  718. package/libcxx/src/print.cpp +9 -1
  719. package/libcxx/src/random.cpp +0 -26
  720. package/libcxx/src/string.cpp +10 -25
  721. package/libcxx/src/support/runtime/exception_fallback.ipp +2 -0
  722. package/libcxx/src/support/runtime/exception_glibcxx.ipp +3 -0
  723. package/libcxx/src/support/runtime/exception_libcxxabi.ipp +6 -2
  724. package/libcxx/src/support/runtime/exception_libcxxrt.ipp +2 -0
  725. package/libcxx/src/support/runtime/exception_msvc.ipp +2 -0
  726. package/libcxx/src/support/runtime/exception_pointer_cxxabi.ipp +9 -10
  727. package/libcxx/src/support/runtime/exception_pointer_glibcxx.ipp +2 -0
  728. package/libcxx/src/support/runtime/exception_pointer_msvc.ipp +1 -0
  729. package/libcxx/src/support/runtime/exception_pointer_unimplemented.ipp +1 -0
  730. package/libcxx/src/support/win32/locale_win32.cpp +1 -1
  731. package/libcxx/src/system_error.cpp +2 -0
  732. package/libcxx/src/thread.cpp +1 -3
  733. package/libcxx/src/valarray.cpp +1 -2
  734. package/libcxx/src/vector.cpp +2 -2
  735. package/libcxxabi/include/__cxxabi_config.h +42 -23
  736. package/libcxxabi/src/cxa_exception.cpp +4 -2
  737. package/libcxxabi/src/cxa_exception.h +16 -14
  738. package/libcxxabi/src/cxa_personality.cpp +126 -9
  739. package/libcxxabi/src/cxa_thread_atexit.cpp +2 -1
  740. package/libcxxabi/src/demangle/DemangleConfig.h +4 -0
  741. package/libcxxabi/src/demangle/ItaniumDemangle.h +9 -6
  742. package/libcxxabi/src/demangle/Utility.h +21 -7
  743. package/libcxxabi/src/fallback_malloc.cpp +1 -1
  744. package/libcxxabi/src/private_typeinfo.cpp +6 -0
  745. package/libcxxabi/src/stdlib_new_delete.cpp +5 -5
  746. package/libtsan/LICENSE.TXT +311 -0
  747. package/libtsan/builtins/assembly.h +41 -8
  748. package/libtsan/interception/interception_win.cpp +4 -0
  749. package/libtsan/sanitizer_common/sanitizer_allocator_primary32.h +1 -0
  750. package/libtsan/sanitizer_common/sanitizer_allocator_primary64.h +18 -0
  751. package/libtsan/sanitizer_common/sanitizer_common.h +15 -2
  752. package/libtsan/sanitizer_common/sanitizer_common_interceptors.inc +30 -4
  753. package/libtsan/sanitizer_common/sanitizer_common_interceptors_ioctl.inc +4 -0
  754. package/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_aarch64.inc.S +2 -1
  755. package/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_i386.inc.S +2 -0
  756. package/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_x86_64.inc.S +2 -0
  757. package/libtsan/sanitizer_common/sanitizer_common_syscalls.inc +18 -0
  758. package/libtsan/sanitizer_common/sanitizer_file.cpp +40 -12
  759. package/libtsan/sanitizer_common/sanitizer_file.h +3 -0
  760. package/libtsan/sanitizer_common/sanitizer_flags.inc +7 -0
  761. package/libtsan/sanitizer_common/sanitizer_fuchsia.cpp +30 -3
  762. package/libtsan/sanitizer_common/sanitizer_haiku.cpp +2 -2
  763. package/libtsan/sanitizer_common/sanitizer_internal_defs.h +1 -1
  764. package/libtsan/sanitizer_common/sanitizer_libc.cpp +8 -0
  765. package/libtsan/sanitizer_common/sanitizer_libc.h +1 -0
  766. package/libtsan/sanitizer_common/sanitizer_linux.cpp +15 -7
  767. package/libtsan/sanitizer_common/sanitizer_linux.h +3 -3
  768. package/libtsan/sanitizer_common/sanitizer_linux_libcdep.cpp +1 -0
  769. package/libtsan/sanitizer_common/sanitizer_mac.cpp +255 -104
  770. package/libtsan/sanitizer_common/sanitizer_mac.h +5 -0
  771. package/libtsan/sanitizer_common/sanitizer_netbsd.cpp +2 -2
  772. package/libtsan/sanitizer_common/sanitizer_platform.h +27 -1
  773. package/libtsan/sanitizer_common/sanitizer_platform_interceptors.h +5 -4
  774. package/libtsan/sanitizer_common/sanitizer_platform_limits_posix.cpp +15 -17
  775. package/libtsan/sanitizer_common/sanitizer_platform_limits_posix.h +32 -6
  776. package/libtsan/sanitizer_common/sanitizer_posix.cpp +3 -12
  777. package/libtsan/sanitizer_common/sanitizer_posix.h +2 -1
  778. package/libtsan/sanitizer_common/sanitizer_posix_libcdep.cpp +19 -0
  779. package/libtsan/sanitizer_common/sanitizer_procmaps_mac.cpp +102 -37
  780. package/libtsan/sanitizer_common/sanitizer_redefine_builtins.h +1 -1
  781. package/libtsan/sanitizer_common/sanitizer_signal_interceptors.inc +40 -2
  782. package/libtsan/sanitizer_common/sanitizer_stoptheworld.h +1 -1
  783. package/libtsan/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cpp +83 -12
  784. package/libtsan/sanitizer_common/sanitizer_stoptheworld_mac.cpp +3 -3
  785. package/libtsan/sanitizer_common/sanitizer_stoptheworld_netbsd_libcdep.cpp +7 -7
  786. package/libtsan/sanitizer_common/sanitizer_stoptheworld_win.cpp +2 -2
  787. package/libtsan/sanitizer_common/sanitizer_symbolizer_internal.h +5 -1
  788. package/libtsan/sanitizer_common/sanitizer_symbolizer_libcdep.cpp +11 -1
  789. package/libtsan/sanitizer_common/sanitizer_symbolizer_mac.cpp +86 -29
  790. package/libtsan/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cpp +27 -16
  791. package/libtsan/sanitizer_common/sanitizer_thread_registry.cpp +5 -4
  792. package/libtsan/sanitizer_common/sanitizer_thread_registry.h +4 -4
  793. package/libtsan/sanitizer_common/sanitizer_win.cpp +1 -3
  794. package/libtsan/tsan_debugging.cpp +2 -2
  795. package/libtsan/tsan_flags.cpp +37 -0
  796. package/libtsan/tsan_flags.h +8 -0
  797. package/libtsan/tsan_flags.inc +12 -0
  798. package/libtsan/tsan_interceptors.h +9 -1
  799. package/libtsan/tsan_interceptors_mac.cpp +19 -0
  800. package/libtsan/tsan_interceptors_posix.cpp +78 -32
  801. package/libtsan/tsan_interface.h +3 -3
  802. package/libtsan/tsan_interface_ann.cpp +23 -9
  803. package/libtsan/tsan_mman.cpp +18 -4
  804. package/libtsan/tsan_platform.h +44 -7
  805. package/libtsan/tsan_platform_linux.cpp +42 -14
  806. package/libtsan/tsan_platform_mac.cpp +16 -3
  807. package/libtsan/tsan_report.h +14 -1
  808. package/libtsan/tsan_rtl.cpp +14 -0
  809. package/libtsan/tsan_rtl.h +7 -2
  810. package/libtsan/tsan_rtl_aarch64.S +3 -5
  811. package/libtsan/tsan_rtl_access.cpp +8 -3
  812. package/libtsan/tsan_rtl_amd64.S +2 -0
  813. package/libtsan/tsan_rtl_mutex.cpp +94 -49
  814. package/libtsan/tsan_rtl_report.cpp +132 -65
  815. package/libtsan/tsan_rtl_thread.cpp +31 -9
  816. package/libtsan/tsan_symbolize.cpp +1 -1
  817. package/libtsan/tsan_symbolize.h +1 -1
  818. package/libtsan/tsan_trace.h +1 -1
  819. package/libunwind/include/__libunwind_config.h +11 -2
  820. package/libunwind/include/libunwind.h +117 -11
  821. package/libunwind/include/unwind_arm_ehabi.h +4 -1
  822. package/libunwind/src/AddressSpace.hpp +42 -20
  823. package/libunwind/src/CompactUnwinder.hpp +16 -5
  824. package/libunwind/src/DwarfInstructions.hpp +24 -13
  825. package/libunwind/src/DwarfParser.hpp +62 -23
  826. package/libunwind/src/EHHeaderParser.hpp +7 -4
  827. package/libunwind/src/Registers.hpp +226 -22
  828. package/libunwind/src/Unwind-seh.cpp +6 -7
  829. package/libunwind/src/Unwind-wasm.c +7 -7
  830. package/libunwind/src/UnwindCursor.hpp +167 -49
  831. package/libunwind/src/UnwindLevel1.c +46 -17
  832. package/libunwind/src/UnwindRegistersRestore.S +46 -5
  833. package/libunwind/src/UnwindRegistersSave.S +86 -2
  834. package/libunwind/src/assembly.h +5 -1
  835. package/libunwind/src/config.h +9 -0
  836. package/libunwind/src/gcc_personality_v0.c +79 -6
  837. package/libunwind/src/libunwind.cpp +104 -4
  838. package/libunwind/src/libunwind_ext.h +7 -1
  839. package/libunwind/src/shadow_stack_unwind.h +2 -2
  840. package/lldb/pretty_printers.py +948 -0
  841. package/package.json +1 -1
  842. package/std/Build/Cache/Path.zig +1 -1
  843. package/std/Build/Cache.zig +6 -6
  844. package/std/Build/Step/Compile.zig +18 -20
  845. package/std/Build/Step/ConfigHeader.zig +1 -1
  846. package/std/Build/Step/Run.zig +15 -8
  847. package/std/Build/Step.zig +2 -7
  848. package/std/Build/Watch/FsEvents.zig +1 -1
  849. package/std/Build/WebServer.zig +2 -2
  850. package/std/Build/abi.zig +1 -1
  851. package/std/Build.zig +0 -3
  852. package/std/Io/Dir.zig +9 -4
  853. package/std/Io/Dispatch.zig +8 -18
  854. package/std/Io/File/Writer.zig +8 -6
  855. package/std/Io/File.zig +0 -9
  856. package/std/Io/Kqueue.zig +3 -3
  857. package/std/Io/Reader.zig +8 -14
  858. package/std/Io/Semaphore.zig +112 -17
  859. package/std/Io/Terminal.zig +1 -1
  860. package/std/Io/Threaded.zig +183 -46
  861. package/std/Io/Uring.zig +18 -20
  862. package/std/Io/Writer.zig +10 -7
  863. package/std/Io/net/HostName.zig +11 -6
  864. package/std/Io/net.zig +11 -11
  865. package/std/Io.zig +104 -38
  866. package/std/Random/ChaCha.zig +2 -2
  867. package/std/Random/benchmark.zig +2 -2
  868. package/std/Random.zig +6 -6
  869. package/std/SemanticVersion.zig +1 -1
  870. package/std/Target/Query.zig +2 -2
  871. package/std/Target/aarch64.zig +620 -77
  872. package/std/Target/amdgcn.zig +421 -21
  873. package/std/Target/arm.zig +40 -6
  874. package/std/Target/bpf.zig +6 -0
  875. package/std/Target/hexagon.zig +41 -6
  876. package/std/Target/loongarch.zig +18 -0
  877. package/std/Target/mips.zig +6 -0
  878. package/std/Target/nvptx.zig +58 -35
  879. package/std/Target/powerpc.zig +27 -19
  880. package/std/Target/riscv.zig +415 -177
  881. package/std/Target/sparc.zig +17 -0
  882. package/std/Target/wasm.zig +7 -0
  883. package/std/Target/x86.zig +200 -31
  884. package/std/Target/xtensa.zig +65 -0
  885. package/std/Target.zig +67 -14
  886. package/std/Thread.zig +5 -2
  887. package/std/array_hash_map.zig +103 -57
  888. package/std/array_list.zig +10 -31
  889. package/std/base64.zig +5 -5
  890. package/std/bit_set.zig +86 -69
  891. package/std/c/haiku.zig +3 -0
  892. package/std/c/serenity.zig +1 -6
  893. package/std/c.zig +123 -32
  894. package/std/compress/flate/Decompress.zig +3 -4
  895. package/std/compress/zstd/Decompress.zig +7 -9
  896. package/std/crypto/25519/curve25519.zig +2 -2
  897. package/std/crypto/25519/edwards25519.zig +3 -3
  898. package/std/crypto/25519/ristretto255.zig +2 -2
  899. package/std/crypto/25519/scalar.zig +6 -6
  900. package/std/crypto/25519/x25519.zig +1 -1
  901. package/std/crypto/Certificate.zig +14 -2
  902. package/std/crypto/Sha1.zig +1 -1
  903. package/std/crypto/aegis.zig +45 -39
  904. package/std/crypto/aes_ccm.zig +22 -22
  905. package/std/crypto/aes_gcm.zig +10 -12
  906. package/std/crypto/aes_ocb.zig +9 -9
  907. package/std/crypto/argon2.zig +15 -15
  908. package/std/crypto/ascon.zig +75 -33
  909. package/std/crypto/bcrypt.zig +20 -10
  910. package/std/crypto/benchmark.zig +7 -7
  911. package/std/crypto/blake2.zig +100 -64
  912. package/std/crypto/cbc_mac.zig +1 -1
  913. package/std/crypto/chacha20.zig +10 -10
  914. package/std/crypto/cmac.zig +3 -3
  915. package/std/crypto/codecs/asn1/Oid.zig +12 -1
  916. package/std/crypto/codecs/asn1/der/Encoder.zig +1 -1
  917. package/std/crypto/codecs/asn1.zig +1 -1
  918. package/std/crypto/codecs/base64_hex_ct.zig +3 -5
  919. package/std/crypto/ecdsa.zig +9 -9
  920. package/std/crypto/ff.zig +4 -5
  921. package/std/crypto/ghash_polyval.zig +4 -4
  922. package/std/crypto/hkdf.zig +1 -1
  923. package/std/crypto/isap.zig +3 -3
  924. package/std/crypto/kangarootwelve.zig +1 -1
  925. package/std/crypto/keccak_p.zig +8 -8
  926. package/std/crypto/md5.zig +1 -1
  927. package/std/crypto/ml_dsa.zig +39 -39
  928. package/std/crypto/ml_kem.zig +12 -34
  929. package/std/crypto/modes.zig +2 -2
  930. package/std/crypto/pbkdf2.zig +1 -1
  931. package/std/crypto/pcurves/common.zig +4 -5
  932. package/std/crypto/pcurves/p256/scalar.zig +3 -3
  933. package/std/crypto/pcurves/p384/scalar.zig +2 -2
  934. package/std/crypto/pcurves/secp256k1/scalar.zig +3 -3
  935. package/std/crypto/pcurves/tests/p256.zig +5 -5
  936. package/std/crypto/pcurves/tests/p384.zig +5 -5
  937. package/std/crypto/pcurves/tests/secp256k1.zig +3 -3
  938. package/std/crypto/salsa20.zig +8 -8
  939. package/std/crypto/sha2.zig +2 -2
  940. package/std/crypto/sha3.zig +2 -2
  941. package/std/crypto/siphash.zig +1 -1
  942. package/std/crypto/timing_safe.zig +10 -9
  943. package/std/crypto/tls/Client.zig +89 -13
  944. package/std/crypto/tls.zig +1 -1
  945. package/std/crypto.zig +4 -3
  946. package/std/debug/Dwarf.zig +15 -12
  947. package/std/debug/Pdb.zig +25 -17
  948. package/std/debug.zig +14 -8
  949. package/std/deque.zig +1 -1
  950. package/std/elf.zig +1 -1
  951. package/std/enums.zig +8 -8
  952. package/std/fmt/parse_float/decimal.zig +1 -1
  953. package/std/fmt/parse_float.zig +1 -1
  954. package/std/fmt.zig +14 -10
  955. package/std/fs/path.zig +7 -5
  956. package/std/hash/Adler32.zig +3 -3
  957. package/std/hash/benchmark.zig +2 -2
  958. package/std/hash/wyhash.zig +2 -2
  959. package/std/hash/xxhash.zig +0 -6
  960. package/std/hash_map.zig +20 -1
  961. package/std/heap/BufferFirstAllocator.zig +165 -0
  962. package/std/heap/debug_allocator.zig +2 -2
  963. package/std/heap/memory_pool.zig +34 -197
  964. package/std/heap.zig +2 -133
  965. package/std/http/Client.zig +21 -24
  966. package/std/http.zig +4 -5
  967. package/std/json/Scanner.zig +2 -2
  968. package/std/json/static.zig +2 -2
  969. package/std/{builtin.zig → lang.zig} +5 -1
  970. package/std/leb128.zig +2 -2
  971. package/std/math/big/int.zig +5 -5
  972. package/std/math/big.zig +4 -4
  973. package/std/math/copysign.zig +1 -1
  974. package/std/math/float.zig +62 -0
  975. package/std/math/frexp.zig +4 -4
  976. package/std/math/ilogb.zig +1 -1
  977. package/std/math/isfinite.zig +1 -1
  978. package/std/math/isinf.zig +1 -1
  979. package/std/math/isnan.zig +1 -2
  980. package/std/math/isnormal.zig +2 -2
  981. package/std/math/iszero.zig +2 -2
  982. package/std/math/ldexp.zig +2 -2
  983. package/std/math/log10.zig +0 -2
  984. package/std/math/modf.zig +1 -2
  985. package/std/math/nextafter.zig +3 -4
  986. package/std/math/pow.zig +1 -1
  987. package/std/math/powi.zig +2 -3
  988. package/std/math/signbit.zig +0 -1
  989. package/std/math.zig +21 -26
  990. package/std/mem/Allocator.zig +0 -6
  991. package/std/mem.zig +31 -31
  992. package/std/meta/trailer_flags.zig +1 -1
  993. package/std/meta.zig +4 -36
  994. package/std/multi_array_list.zig +24 -0
  995. package/std/os/emscripten.zig +7 -6
  996. package/std/os/linux/IoUring.zig +2 -0
  997. package/std/os/linux/aarch64.zig +41 -12
  998. package/std/os/linux/arc.zig +41 -12
  999. package/std/os/linux/arm.zig +41 -12
  1000. package/std/os/linux/bpf.zig +6 -0
  1001. package/std/os/linux/hexagon.zig +33 -11
  1002. package/std/os/linux/ioctl.zig +2 -2
  1003. package/std/os/linux/loongarch32.zig +41 -13
  1004. package/std/os/linux/loongarch64.zig +41 -12
  1005. package/std/os/linux/m68k.zig +41 -13
  1006. package/std/os/linux/mips.zig +67 -36
  1007. package/std/os/linux/mips64.zig +60 -29
  1008. package/std/os/linux/mipsn32.zig +60 -29
  1009. package/std/os/linux/or1k.zig +41 -12
  1010. package/std/os/linux/powerpc.zig +41 -12
  1011. package/std/os/linux/powerpc64.zig +41 -12
  1012. package/std/os/linux/riscv32.zig +41 -12
  1013. package/std/os/linux/riscv64.zig +41 -12
  1014. package/std/os/linux/s390x.zig +44 -7
  1015. package/std/os/linux/sparc64.zig +83 -52
  1016. package/std/os/linux/syscalls.zig +26 -1
  1017. package/std/os/linux/thumb.zig +52 -36
  1018. package/std/os/linux/x32.zig +41 -12
  1019. package/std/os/linux/x86.zig +44 -15
  1020. package/std/os/linux/x86_64.zig +41 -12
  1021. package/std/os/linux.zig +416 -450
  1022. package/std/os/plan9.zig +1 -1
  1023. package/std/os/uefi/hii.zig +1 -1
  1024. package/std/os/uefi/tables/boot_services.zig +9 -8
  1025. package/std/os/uefi/tables/runtime_services.zig +1 -1
  1026. package/std/os/windows.zig +130 -1
  1027. package/std/os.zig +41 -0
  1028. package/std/posix.zig +1 -1
  1029. package/std/process/Environ.zig +1 -1
  1030. package/std/process.zig +5 -4
  1031. package/std/simd.zig +4 -21
  1032. package/std/sort.zig +3 -3
  1033. package/std/start.zig +17 -4
  1034. package/std/std.zig +8 -1
  1035. package/std/tar/Writer.zig +39 -33
  1036. package/std/tar.zig +8 -4
  1037. package/std/testing.zig +2 -2
  1038. package/std/unicode.zig +13 -8
  1039. package/std/zig/Ast/Render.zig +6 -30
  1040. package/std/zig/Ast.zig +12 -37
  1041. package/std/zig/AstGen.zig +175 -332
  1042. package/std/zig/AstRlAnnotate.zig +1 -22
  1043. package/std/zig/AstSmith.zig +5 -11
  1044. package/std/zig/BuiltinFn.zig +0 -32
  1045. package/std/zig/ErrorBundle.zig +6 -2
  1046. package/std/zig/LibCInstallation.zig +34 -12
  1047. package/std/zig/Parse.zig +11 -76
  1048. package/std/zig/TokenSmith.zig +0 -6
  1049. package/std/zig/WindowsSdk.zig +18 -18
  1050. package/std/zig/Zir.zig +65 -132
  1051. package/std/zig/ZonGen.zig +19 -27
  1052. package/std/zig/llvm/Builder.zig +39 -33
  1053. package/std/zig/llvm/bitcode_writer.zig +3 -3
  1054. package/std/zig/llvm/ir.zig +8 -8
  1055. package/std/zig/system/arm.zig +56 -2
  1056. package/std/zig/system/windows.zig +34 -1
  1057. package/std/zig/system/x86.zig +60 -16
  1058. package/std/zig/system.zig +0 -10
  1059. package/std/zig/target.zig +1 -4
  1060. package/std/zig/tokenizer.zig +4 -43
  1061. package/std/zig.zig +3 -14
  1062. package/std/zip.zig +5 -5
  1063. package/std/zon/parse.zig +1 -1
  1064. package/zig.h +340 -1
  1065. package/compiler_rt/long_double.zig +0 -37
  1066. package/include/amxbf16transposeintrin.h +0 -94
  1067. package/include/amxcomplextransposeintrin.h +0 -303
  1068. package/include/amxfp16transposeintrin.h +0 -94
  1069. package/include/amxmovrstransposeintrin.h +0 -200
  1070. package/include/amxtf32transposeintrin.h +0 -105
  1071. package/include/amxtransposeintrin.h +0 -248
  1072. package/libc/include/hexagon-linux-any/asm/signal.h +0 -29
  1073. package/libc/include/s390x-linux-any/asm/tape390.h +0 -103
  1074. package/libc/mingw/math/lrintl.c +0 -18
  1075. package/libc/mingw/math/rintl.c +0 -16
  1076. package/libc/mingw/winpthreads/spinlock.c +0 -82
  1077. package/libc/musl/src/linux/tee.c +0 -8
  1078. package/libc/musl/src/math/i386/lrintl.c +0 -8
  1079. package/libc/musl/src/math/i386/rintl.c +0 -7
  1080. package/libc/musl/src/math/lrintl.c +0 -36
  1081. package/libc/musl/src/math/rintl.c +0 -29
  1082. package/libc/musl/src/math/s390x/rintl.c +0 -15
  1083. package/libc/musl/src/math/x32/lrintl.s +0 -7
  1084. package/libc/musl/src/math/x32/rintl.s +0 -6
  1085. package/libc/musl/src/math/x86_64/lrintl.c +0 -8
  1086. package/libc/musl/src/math/x86_64/rintl.c +0 -7
  1087. package/libc/musl/src/string/strdup.c +0 -10
  1088. package/libc/musl/src/string/strndup.c +0 -12
  1089. package/libc/musl/src/string/wcsdup.c +0 -10
  1090. package/libc/musl/src/thread/pthread_spin_destroy.c +0 -6
  1091. package/libc/musl/src/thread/pthread_spin_init.c +0 -6
  1092. package/libc/musl/src/thread/pthread_spin_lock.c +0 -8
  1093. package/libc/musl/src/thread/pthread_spin_trylock.c +0 -7
  1094. package/libc/musl/src/thread/pthread_spin_unlock.c +0 -7
  1095. package/libc/musl/src/unistd/dup2.c +0 -20
  1096. package/libc/musl/src/unistd/dup3.c +0 -26
  1097. package/libc/wasi/thread-stub/pthread_spin_lock.c +0 -8
  1098. package/libc/wasi/thread-stub/pthread_spin_trylock.c +0 -8
  1099. package/libc/wasi/thread-stub/pthread_spin_unlock.c +0 -7
  1100. package/libtsan/sanitizer_common/sanitizer_coverage_interface.inc +0 -43
  1101. package/std/Build/Step/CheckObject.zig +0 -2764
  1102. /package/std/{builtin → lang}/assembly.zig +0 -0
package/std/os/linux.zig CHANGED
@@ -59,6 +59,7 @@ const arch_bits = switch (native_arch) {
59
59
 
60
60
  const syscall_bits = if (native_arch.isThumb()) @import("linux/thumb.zig") else arch_bits;
61
61
 
62
+ pub const syscall_arg_t = syscall_bits.syscall_arg_t;
62
63
  pub const syscall0 = syscall_bits.syscall0;
63
64
  pub const syscall1 = syscall_bits.syscall1;
64
65
  pub const syscall2 = syscall_bits.syscall2;
@@ -78,9 +79,9 @@ pub fn clone(
78
79
  stack: usize,
79
80
  flags: u32,
80
81
  arg: usize,
81
- ptid: ?*i32,
82
+ ptid: ?*pid_t,
82
83
  tp: usize, // aka tls
83
- ctid: ?*i32,
84
+ ctid: ?*pid_t,
84
85
  ) usize {
85
86
  // Can't directly call a naked function; cast to C calling convention first.
86
87
  return @as(*const fn (
@@ -88,9 +89,9 @@ pub fn clone(
88
89
  usize,
89
90
  u32,
90
91
  usize,
91
- ?*i32,
92
+ ?*pid_t,
92
93
  usize,
93
- ?*i32,
94
+ ?*pid_t,
94
95
  ) callconv(.c) usize, @ptrCast(&syscall_bits.clone))(func, stack, flags, arg, ptid, tp, ctid);
95
96
  }
96
97
 
@@ -98,6 +99,8 @@ pub const ARCH = arch_bits.ARCH;
98
99
  pub const HWCAP = arch_bits.HWCAP;
99
100
  pub const SC = arch_bits.SC;
100
101
  pub const VDSO = arch_bits.VDSO;
102
+ pub const user_desc = arch_bits.user_desc;
103
+
101
104
  pub const blkcnt_t = u64;
102
105
  pub const blksize_t = u32;
103
106
  pub const dev_t = u64;
@@ -105,8 +108,13 @@ pub const ino_t = u64;
105
108
  pub const mode_t = u32;
106
109
  pub const nlink_t = u32;
107
110
  pub const off_t = i64;
111
+ pub const pid_t = i32;
112
+ pub const fd_t = i32;
113
+ pub const socket_t = fd_t;
114
+ pub const uid_t = u32;
115
+ pub const gid_t = u32;
116
+ pub const clock_t = isize;
108
117
  pub const time_t = arch_bits.time_t;
109
- pub const user_desc = arch_bits.user_desc;
110
118
 
111
119
  pub const tls = @import("linux/tls.zig");
112
120
  pub const BPF = @import("linux/bpf.zig");
@@ -566,9 +574,11 @@ fn getauxvalImpl(index: usize) callconv(.c) usize {
566
574
  // in a even-aligned register pair.
567
575
  const require_aligned_register_pair =
568
576
  builtin.cpu.arch.isArm() or
577
+ builtin.cpu.arch == .csky or
569
578
  builtin.cpu.arch == .hexagon or
570
579
  builtin.cpu.arch.isMIPS32() or
571
- builtin.cpu.arch.isPowerPC32();
580
+ builtin.cpu.arch.isPowerPC32() or
581
+ builtin.cpu.arch.isXtensa();
572
582
 
573
583
  // Split a 64bit value into a {LSB,MSB} pair.
574
584
  // The LE/BE variants specify the endianness to assume.
@@ -611,13 +621,13 @@ pub fn brk(addr: usize) usize {
611
621
  return syscall1(.brk, addr);
612
622
  }
613
623
 
614
- pub fn dup(old: i32) usize {
615
- return syscall1(.dup, @as(usize, @bitCast(@as(isize, old))));
624
+ pub fn dup(old: fd_t) usize {
625
+ return syscall1(.dup, @as(u32, @bitCast(old)));
616
626
  }
617
627
 
618
- pub fn dup2(old: i32, new: i32) usize {
628
+ pub fn dup2(old: fd_t, new: fd_t) usize {
619
629
  if (@hasField(SYS, "dup2")) {
620
- return syscall2(.dup2, @as(usize, @bitCast(@as(isize, old))), @as(usize, @bitCast(@as(isize, new))));
630
+ return syscall2(.dup2, @as(u32, @bitCast(old)), @as(u32, @bitCast(new)));
621
631
  } else {
622
632
  if (old == new) {
623
633
  if (std.debug.runtime_safety) {
@@ -626,13 +636,13 @@ pub fn dup2(old: i32, new: i32) usize {
626
636
  }
627
637
  return @as(usize, @intCast(old));
628
638
  } else {
629
- return syscall3(.dup3, @as(usize, @bitCast(@as(isize, old))), @as(usize, @bitCast(@as(isize, new))), 0);
639
+ return syscall3(.dup3, @as(u32, @bitCast(old)), @as(u32, @bitCast(new)), 0);
630
640
  }
631
641
  }
632
642
  }
633
643
 
634
- pub fn dup3(old: i32, new: i32, flags: u32) usize {
635
- return syscall3(.dup3, @as(usize, @bitCast(@as(isize, old))), @as(usize, @bitCast(@as(isize, new))), flags);
644
+ pub fn dup3(old: fd_t, new: fd_t, flags: u32) usize {
645
+ return syscall3(.dup3, @as(u32, @bitCast(old)), @as(u32, @bitCast(new)), flags);
636
646
  }
637
647
 
638
648
  pub fn chdir(path: [*:0]const u8) usize {
@@ -640,7 +650,7 @@ pub fn chdir(path: [*:0]const u8) usize {
640
650
  }
641
651
 
642
652
  pub fn fchdir(fd: fd_t) usize {
643
- return syscall1(.fchdir, @as(usize, @bitCast(@as(isize, fd))));
653
+ return syscall1(.fchdir, @as(u32, @bitCast(fd)));
644
654
  }
645
655
 
646
656
  pub fn chroot(path: [*:0]const u8) usize {
@@ -662,7 +672,7 @@ pub const EXECVEAT = packed struct(u32) {
662
672
  };
663
673
 
664
674
  pub fn execveat(dirfd: fd_t, path: [*:0]const u8, argv: [*:null]const ?[*:0]const u8, envp: [*:null]const ?[*:0]const u8, flags: EXECVEAT) usize {
665
- return syscall5(.execveat, fd_to_usize(dirfd), @intFromPtr(path), @intFromPtr(argv), @intFromPtr(envp), @as(u32, @bitCast(flags)));
675
+ return syscall5(.execveat, @as(u32, @bitCast(dirfd)), @intFromPtr(path), @intFromPtr(argv), @intFromPtr(envp), @as(u32, @bitCast(flags)));
666
676
  }
667
677
 
668
678
  pub fn fork() usize {
@@ -675,37 +685,28 @@ pub fn fork() usize {
675
685
  }
676
686
  }
677
687
 
678
- /// This must be inline, and inline call the syscall function, because if the
679
- /// child does a return it will clobber the parent's stack.
680
- /// It is advised to avoid this function and use clone instead, because
681
- /// the compiler is not aware of how vfork affects control flow and you may
682
- /// see different results in optimized builds.
683
- pub inline fn vfork() usize {
684
- return @call(.always_inline, syscall0, .{.vfork});
685
- }
686
-
687
- pub fn futimens(fd: i32, times: ?*const [2]timespec) usize {
688
+ pub fn futimens(fd: fd_t, times: ?*const [2]timespec) usize {
688
689
  return utimensat(fd, null, times, 0);
689
690
  }
690
691
 
691
- pub fn utimensat(dirfd: i32, path: ?[*:0]const u8, times: ?*const [2]timespec, flags: u32) usize {
692
+ pub fn utimensat(dirfd: fd_t, path: ?[*:0]const u8, times: ?*const [2]timespec, flags: u32) usize {
692
693
  return syscall4(
693
694
  if (@hasField(SYS, "utimensat") and native_arch != .hexagon) .utimensat else .utimensat_time64,
694
- @as(usize, @bitCast(@as(isize, dirfd))),
695
+ @as(u32, @bitCast(dirfd)),
695
696
  @intFromPtr(path),
696
697
  @intFromPtr(times),
697
698
  flags,
698
699
  );
699
700
  }
700
701
 
701
- pub fn fallocate(fd: i32, mode: i32, offset: i64, length: i64) usize {
702
- if (usize_bits < 64) {
702
+ pub fn fallocate(fd: fd_t, mode: mode_t, offset: off_t, length: off_t) usize {
703
+ if (@sizeOf(syscall_arg_t) < @sizeOf(u64)) {
703
704
  const offset_halves = splitValue64(offset);
704
705
  const length_halves = splitValue64(length);
705
706
  return syscall6(
706
707
  .fallocate,
707
- @as(usize, @bitCast(@as(isize, fd))),
708
- @as(usize, @bitCast(@as(isize, mode))),
708
+ @as(u32, @bitCast(fd)),
709
+ mode,
709
710
  offset_halves[0],
710
711
  offset_halves[1],
711
712
  length_halves[0],
@@ -714,8 +715,8 @@ pub fn fallocate(fd: i32, mode: i32, offset: i64, length: i64) usize {
714
715
  } else {
715
716
  return syscall4(
716
717
  .fallocate,
717
- @as(usize, @bitCast(@as(isize, fd))),
718
- @as(usize, @bitCast(@as(isize, mode))),
718
+ @as(u32, @bitCast(fd)),
719
+ mode,
719
720
  @as(u64, @bitCast(offset)),
720
721
  @as(u64, @bitCast(length)),
721
722
  );
@@ -886,21 +887,21 @@ pub fn getcwd(buf: [*]u8, size: usize) usize {
886
887
  return syscall2(.getcwd, @intFromPtr(buf), size);
887
888
  }
888
889
 
889
- pub fn getdents(fd: i32, dirp: [*]u8, len: usize) usize {
890
+ pub fn getdents(fd: fd_t, dirp: [*]u8, len: c_uint) usize {
890
891
  return syscall3(
891
892
  .getdents,
892
- @as(usize, @bitCast(@as(isize, fd))),
893
+ @as(u32, @bitCast(fd)),
893
894
  @intFromPtr(dirp),
894
- @min(len, maxInt(c_int)),
895
+ len,
895
896
  );
896
897
  }
897
898
 
898
- pub fn getdents64(fd: i32, dirp: [*]u8, len: usize) usize {
899
+ pub fn getdents64(fd: fd_t, dirp: [*]u8, len: c_uint) usize {
899
900
  return syscall3(
900
901
  .getdents64,
901
- @as(usize, @bitCast(@as(isize, fd))),
902
+ @as(u32, @bitCast(fd)),
902
903
  @intFromPtr(dirp),
903
- @min(len, maxInt(c_int)),
904
+ len,
904
905
  );
905
906
  }
906
907
 
@@ -908,12 +909,12 @@ pub fn inotify_init1(flags: u32) usize {
908
909
  return syscall1(.inotify_init1, flags);
909
910
  }
910
911
 
911
- pub fn inotify_add_watch(fd: i32, pathname: [*:0]const u8, mask: u32) usize {
912
- return syscall3(.inotify_add_watch, @as(usize, @bitCast(@as(isize, fd))), @intFromPtr(pathname), mask);
912
+ pub fn inotify_add_watch(fd: fd_t, pathname: [*:0]const u8, mask: u32) usize {
913
+ return syscall3(.inotify_add_watch, @as(u32, @bitCast(fd)), @intFromPtr(pathname), mask);
913
914
  }
914
915
 
915
- pub fn inotify_rm_watch(fd: i32, wd: i32) usize {
916
- return syscall2(.inotify_rm_watch, @as(usize, @bitCast(@as(isize, fd))), @as(usize, @bitCast(@as(isize, wd))));
916
+ pub fn inotify_rm_watch(fd: fd_t, wd: fd_t) usize {
917
+ return syscall2(.inotify_rm_watch, @as(u32, @bitCast(fd)), @as(u32, @bitCast(wd)));
917
918
  }
918
919
 
919
920
  pub fn fanotify_init(flags: fanotify.InitFlags, event_f_flags: u32) usize {
@@ -927,24 +928,24 @@ pub fn fanotify_mark(
927
928
  dirfd: fd_t,
928
929
  pathname: ?[*:0]const u8,
929
930
  ) usize {
930
- if (usize_bits < 64) {
931
+ if (@sizeOf(syscall_arg_t) < @sizeOf(u64)) {
931
932
  const mask_halves = splitValue64(@bitCast(mask));
932
933
  return syscall6(
933
934
  .fanotify_mark,
934
- @bitCast(@as(isize, fd)),
935
+ @as(u32, @bitCast(fd)),
935
936
  @as(u32, @bitCast(flags)),
936
937
  mask_halves[0],
937
938
  mask_halves[1],
938
- @bitCast(@as(isize, dirfd)),
939
+ @as(u32, @bitCast(dirfd)),
939
940
  @intFromPtr(pathname),
940
941
  );
941
942
  } else {
942
943
  return syscall5(
943
944
  .fanotify_mark,
944
- @bitCast(@as(isize, fd)),
945
+ @as(u32, @bitCast(fd)),
945
946
  @as(u32, @bitCast(flags)),
946
- @bitCast(mask),
947
- @bitCast(@as(isize, dirfd)),
947
+ @as(u64, @bitCast(mask)),
948
+ @as(u32, @bitCast(dirfd)),
948
949
  @intFromPtr(pathname),
949
950
  );
950
951
  }
@@ -953,7 +954,7 @@ pub fn fanotify_mark(
953
954
  pub fn name_to_handle_at(
954
955
  dirfd: fd_t,
955
956
  pathname: [*:0]const u8,
956
- handle: *std.os.linux.file_handle,
957
+ handle: *file_handle,
957
958
  mount_id: *i32,
958
959
  flags: u32,
959
960
  ) usize {
@@ -971,27 +972,27 @@ pub fn readlink(noalias path: [*:0]const u8, noalias buf_ptr: [*]u8, buf_len: us
971
972
  if (@hasField(SYS, "readlink")) {
972
973
  return syscall3(.readlink, @intFromPtr(path), @intFromPtr(buf_ptr), buf_len);
973
974
  } else {
974
- return syscall4(.readlinkat, @as(usize, @bitCast(@as(isize, AT.FDCWD))), @intFromPtr(path), @intFromPtr(buf_ptr), buf_len);
975
+ return syscall4(.readlinkat, @as(u32, @bitCast(@as(i32, AT.FDCWD))), @intFromPtr(path), @intFromPtr(buf_ptr), buf_len);
975
976
  }
976
977
  }
977
978
 
978
- pub fn readlinkat(dirfd: i32, noalias path: [*:0]const u8, noalias buf_ptr: [*]u8, buf_len: usize) usize {
979
- return syscall4(.readlinkat, @as(usize, @bitCast(@as(isize, dirfd))), @intFromPtr(path), @intFromPtr(buf_ptr), buf_len);
979
+ pub fn readlinkat(dirfd: fd_t, noalias path: [*:0]const u8, noalias buf_ptr: [*]u8, buf_len: usize) usize {
980
+ return syscall4(.readlinkat, @as(u32, @bitCast(dirfd)), @intFromPtr(path), @intFromPtr(buf_ptr), buf_len);
980
981
  }
981
982
 
982
983
  pub fn mkdir(path: [*:0]const u8, mode: mode_t) usize {
983
984
  if (@hasField(SYS, "mkdir")) {
984
985
  return syscall2(.mkdir, @intFromPtr(path), mode);
985
986
  } else {
986
- return syscall3(.mkdirat, @as(usize, @bitCast(@as(isize, AT.FDCWD))), @intFromPtr(path), mode);
987
+ return syscall3(.mkdirat, @as(u32, @bitCast(@as(i32, AT.FDCWD))), @intFromPtr(path), mode);
987
988
  }
988
989
  }
989
990
 
990
- pub fn mkdirat(dirfd: i32, path: [*:0]const u8, mode: mode_t) usize {
991
- return syscall3(.mkdirat, @as(usize, @bitCast(@as(isize, dirfd))), @intFromPtr(path), mode);
991
+ pub fn mkdirat(dirfd: fd_t, path: [*:0]const u8, mode: mode_t) usize {
992
+ return syscall3(.mkdirat, @as(u32, @bitCast(dirfd)), @intFromPtr(path), mode);
992
993
  }
993
994
 
994
- pub fn mknod(path: [*:0]const u8, mode: u32, dev: u32) usize {
995
+ pub fn mknod(path: [*:0]const u8, mode: mode_t, dev: dev_t) usize {
995
996
  if (@hasField(SYS, "mknod")) {
996
997
  return syscall3(.mknod, @intFromPtr(path), mode, dev);
997
998
  } else {
@@ -999,8 +1000,8 @@ pub fn mknod(path: [*:0]const u8, mode: u32, dev: u32) usize {
999
1000
  }
1000
1001
  }
1001
1002
 
1002
- pub fn mknodat(dirfd: i32, path: [*:0]const u8, mode: u32, dev: u32) usize {
1003
- return syscall4(.mknodat, @as(usize, @bitCast(@as(isize, dirfd))), @intFromPtr(path), mode, dev);
1003
+ pub fn mknodat(dirfd: dev_t, path: [*:0]const u8, mode: mode_t, dev: dev_t) usize {
1004
+ return syscall4(.mknodat, @as(u32, @bitCast(dirfd)), @intFromPtr(path), mode, dev);
1004
1005
  }
1005
1006
 
1006
1007
  pub fn mount(special: ?[*:0]const u8, dir: [*:0]const u8, fstype: ?[*:0]const u8, flags: u32, data: usize) usize {
@@ -1036,7 +1037,14 @@ pub const MOVE_MOUNT = packed struct(u32) {
1036
1037
  };
1037
1038
 
1038
1039
  pub fn move_mount(from_dirfd: fd_t, from_path: [*:0]const u8, to_dirfd: fd_t, to_path: [*:0]const u8, flags: MOVE_MOUNT) usize {
1039
- return syscall5(.move_mount, fd_to_usize(from_dirfd), @intFromPtr(from_path), fd_to_usize(to_dirfd), @intFromPtr(to_path), @as(u32, @bitCast(flags)));
1040
+ return syscall5(
1041
+ .move_mount,
1042
+ @as(u32, @bitCast(from_dirfd)),
1043
+ @intFromPtr(from_path),
1044
+ @as(u32, @bitCast(to_dirfd)),
1045
+ @intFromPtr(to_path),
1046
+ @as(u32, @bitCast(flags)),
1047
+ );
1040
1048
  }
1041
1049
 
1042
1050
  pub const MOUNT_ATTR = packed struct(u32) {
@@ -1068,7 +1076,7 @@ pub const MOUNT_ATTR = packed struct(u32) {
1068
1076
  };
1069
1077
 
1070
1078
  pub fn mount_setattr(dirfd: fd_t, path: [*:0]const u8, flags: MOUNT_ATTR) usize {
1071
- return syscall3(.mount_setattr, fd_to_usize(dirfd), @intFromPtr(path), @as(u32, @bitCast(flags)));
1079
+ return syscall3(.mount_setattr, @as(u32, @bitCast(dirfd)), @intFromPtr(path), @as(u32, @bitCast(flags)));
1072
1080
  }
1073
1081
 
1074
1082
  pub const FSOPEN = packed struct(u32) {
@@ -1101,7 +1109,7 @@ pub const FSCONFIG_CMD = enum(u32) {
1101
1109
  };
1102
1110
 
1103
1111
  pub fn fsconfig(fd: fd_t, cmd: FSCONFIG_CMD, key: ?[*:0]const u8, value: ?[*:0]const u8, aux: u32) usize {
1104
- return syscall5(.fsconfig, fd_to_usize(fd), @intFromEnum(cmd), @intFromPtr(key), @intFromPtr(value), aux);
1112
+ return syscall5(.fsconfig, @as(u32, @bitCast(fd)), @intFromEnum(cmd), @intFromPtr(key), @intFromPtr(value), aux);
1105
1113
  }
1106
1114
 
1107
1115
  pub const FSMOUNT = packed struct(u32) {
@@ -1111,7 +1119,7 @@ pub const FSMOUNT = packed struct(u32) {
1111
1119
  };
1112
1120
 
1113
1121
  pub fn fsmount(fsfd: fd_t, flags: FSMOUNT, attr_flags: MOUNT_ATTR) usize {
1114
- return syscall3(.fsmount, fd_to_usize(fsfd), @as(u32, @bitCast(flags)), @as(u32, @bitCast(attr_flags)));
1122
+ return syscall3(.fsmount, @as(u32, @bitCast(fsfd)), @as(u32, @bitCast(flags)), @as(u32, @bitCast(attr_flags)));
1115
1123
  }
1116
1124
 
1117
1125
  pub const FSPICK = packed struct(u32) {
@@ -1124,7 +1132,7 @@ pub const FSPICK = packed struct(u32) {
1124
1132
  };
1125
1133
 
1126
1134
  pub fn fspick(dirfd: fd_t, path: [*:0]const u8, flags: FSPICK) usize {
1127
- return syscall3(.fspick, fd_to_usize(dirfd), @intFromPtr(path), @as(u32, @bitCast(flags)));
1135
+ return syscall3(.fspick, @as(u32, @bitCast(dirfd)), @intFromPtr(path), @as(u32, @bitCast(flags)));
1128
1136
  }
1129
1137
 
1130
1138
  pub fn pivot_root(new_root: [*:0]const u8, put_old: [*:0]const u8) usize {
@@ -1139,7 +1147,7 @@ fn mmap2Unit() u64 {
1139
1147
  };
1140
1148
  }
1141
1149
 
1142
- pub fn mmap(address: ?[*]u8, length: usize, prot: PROT, flags: MAP, fd: i32, offset: i64) usize {
1150
+ pub fn mmap(address: ?[*]u8, length: usize, prot: PROT, flags: MAP, fd: fd_t, offset: off_t) usize {
1143
1151
  if (@hasField(SYS, "mmap2")) {
1144
1152
  return syscall6(
1145
1153
  .mmap2,
@@ -1147,7 +1155,7 @@ pub fn mmap(address: ?[*]u8, length: usize, prot: PROT, flags: MAP, fd: i32, off
1147
1155
  length,
1148
1156
  @as(u32, @bitCast(prot)),
1149
1157
  @as(u32, @bitCast(flags)),
1150
- @bitCast(@as(isize, fd)),
1158
+ @as(u32, @bitCast(fd)),
1151
1159
  @truncate(@as(u64, @bitCast(offset)) / mmap2Unit()),
1152
1160
  );
1153
1161
  } else {
@@ -1160,7 +1168,7 @@ pub fn mmap(address: ?[*]u8, length: usize, prot: PROT, flags: MAP, fd: i32, off
1160
1168
  length,
1161
1169
  @as(u32, @bitCast(prot)),
1162
1170
  @as(u32, @bitCast(flags)),
1163
- @bitCast(@as(isize, fd)),
1171
+ @as(u32, @bitCast(fd)),
1164
1172
  @as(u64, @bitCast(offset)),
1165
1173
  }),
1166
1174
  ) else syscall6(
@@ -1169,7 +1177,7 @@ pub fn mmap(address: ?[*]u8, length: usize, prot: PROT, flags: MAP, fd: i32, off
1169
1177
  length,
1170
1178
  @as(u32, @bitCast(prot)),
1171
1179
  @as(u32, @bitCast(flags)),
1172
- @bitCast(@as(isize, fd)),
1180
+ @as(u32, @bitCast(fd)),
1173
1181
  @as(u64, @bitCast(offset)),
1174
1182
  );
1175
1183
  }
@@ -1248,21 +1256,23 @@ pub fn munlockall() usize {
1248
1256
  }
1249
1257
 
1250
1258
  pub fn poll(fds: [*]pollfd, n: nfds_t, timeout: i32) usize {
1251
- return if (@hasField(SYS, "poll"))
1252
- return syscall3(.poll, @intFromPtr(fds), n, @as(u32, @bitCast(timeout)))
1253
- else
1254
- ppoll(
1259
+ if (@hasField(SYS, "poll")) {
1260
+ return syscall3(.poll, @intFromPtr(fds), n, @as(u32, @bitCast(timeout)));
1261
+ } else {
1262
+ var ts: timespec = if (timeout >= 0)
1263
+ .{
1264
+ .sec = @divTrunc(timeout, 1000),
1265
+ .nsec = @rem(timeout, 1000) * 1000000,
1266
+ }
1267
+ else
1268
+ undefined;
1269
+ return ppoll(
1255
1270
  fds,
1256
1271
  n,
1257
- if (timeout >= 0)
1258
- @constCast(&timespec{
1259
- .sec = @divTrunc(timeout, 1000),
1260
- .nsec = @rem(timeout, 1000) * 1000000,
1261
- })
1262
- else
1263
- null,
1272
+ if (timeout >= 0) &ts else null,
1264
1273
  null,
1265
1274
  );
1275
+ }
1266
1276
  }
1267
1277
 
1268
1278
  pub fn ppoll(fds: [*]pollfd, n: nfds_t, timeout: ?*timespec, sigmask: ?*const sigset_t) usize {
@@ -1276,70 +1286,142 @@ pub fn ppoll(fds: [*]pollfd, n: nfds_t, timeout: ?*timespec, sigmask: ?*const si
1276
1286
  );
1277
1287
  }
1278
1288
 
1279
- pub fn read(fd: i32, buf: [*]u8, count: usize) usize {
1280
- return syscall3(.read, @as(usize, @bitCast(@as(isize, fd))), @intFromPtr(buf), count);
1289
+ pub fn read(fd: fd_t, buf: [*]u8, count: usize) usize {
1290
+ return syscall3(.read, @as(u32, @bitCast(fd)), @intFromPtr(buf), count);
1291
+ }
1292
+
1293
+ pub fn pread(fd: fd_t, buf: [*]u8, count: usize, offset: off_t) usize {
1294
+ if (@sizeOf(syscall_arg_t) < @sizeOf(u64)) {
1295
+ const offset_halves = splitValue64(offset);
1296
+ if (require_aligned_register_pair) {
1297
+ return syscall6(
1298
+ .pread64,
1299
+ @as(u32, @bitCast(fd)),
1300
+ @intFromPtr(buf),
1301
+ count,
1302
+ 0,
1303
+ offset_halves[0],
1304
+ offset_halves[1],
1305
+ );
1306
+ } else {
1307
+ return syscall5(
1308
+ .pread64,
1309
+ @as(u32, @bitCast(fd)),
1310
+ @intFromPtr(buf),
1311
+ count,
1312
+ offset_halves[0],
1313
+ offset_halves[1],
1314
+ );
1315
+ }
1316
+ } else {
1317
+ return syscall4(
1318
+ .pread64,
1319
+ @as(u32, @bitCast(fd)),
1320
+ @intFromPtr(buf),
1321
+ count,
1322
+ @as(u64, @bitCast(offset)),
1323
+ );
1324
+ }
1325
+ }
1326
+
1327
+ pub fn readv(fd: fd_t, iov: [*]const iovec, count: usize) usize {
1328
+ return syscall3(.readv, @as(u32, @bitCast(fd)), @intFromPtr(iov), count);
1281
1329
  }
1282
1330
 
1283
- pub fn preadv(fd: i32, iov: [*]const iovec, count: usize, offset: i64) usize {
1331
+ pub fn preadv(fd: fd_t, iov: [*]const iovec, count: usize, offset: off_t) usize {
1284
1332
  const offset_u: u64 = @bitCast(offset);
1285
1333
  return syscall5(
1286
1334
  .preadv,
1287
- @as(usize, @bitCast(@as(isize, fd))),
1335
+ @as(u32, @bitCast(fd)),
1288
1336
  @intFromPtr(iov),
1289
1337
  count,
1290
1338
  // Kernel expects the offset is split into largest natural word-size.
1291
1339
  // See following link for detail:
1292
1340
  // https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=601cc11d054ae4b5e9b5babec3d8e4667a2cb9b5
1293
- @as(usize, @truncate(offset_u)),
1294
- if (usize_bits < 64) @as(usize, @truncate(offset_u >> 32)) else 0,
1341
+ @truncate(offset_u),
1342
+ if (@sizeOf(syscall_arg_t) < @sizeOf(u64)) @truncate(offset_u >> 32) else 0,
1295
1343
  );
1296
1344
  }
1297
1345
 
1298
- pub fn preadv2(fd: i32, iov: [*]const iovec, count: usize, offset: i64, flags: kernel_rwf) usize {
1346
+ pub fn preadv2(fd: fd_t, iov: [*]const iovec, count: usize, offset: off_t, flags: kernel_rwf) usize {
1299
1347
  const offset_u: u64 = @bitCast(offset);
1300
1348
  return syscall6(
1301
1349
  .preadv2,
1302
- @as(usize, @bitCast(@as(isize, fd))),
1350
+ @as(u32, @bitCast(fd)),
1303
1351
  @intFromPtr(iov),
1304
1352
  count,
1305
1353
  // See comments in preadv
1306
- @as(usize, @truncate(offset_u)),
1307
- if (usize_bits < 64) @as(usize, @truncate(offset_u >> 32)) else 0,
1354
+ @truncate(offset_u),
1355
+ if (@sizeOf(syscall_arg_t) < @sizeOf(u64)) @truncate(offset_u >> 32) else 0,
1308
1356
  flags,
1309
1357
  );
1310
1358
  }
1311
1359
 
1312
- pub fn readv(fd: i32, iov: [*]const iovec, count: usize) usize {
1313
- return syscall3(.readv, @as(usize, @bitCast(@as(isize, fd))), @intFromPtr(iov), count);
1360
+ pub fn write(fd: fd_t, buf: [*]const u8, count: usize) usize {
1361
+ return syscall3(.write, @as(u32, @bitCast(fd)), @intFromPtr(buf), count);
1362
+ }
1363
+
1364
+ pub fn pwrite(fd: fd_t, buf: [*]const u8, count: usize, offset: off_t) usize {
1365
+ if (@sizeOf(syscall_arg_t) < @sizeOf(u64)) {
1366
+ const offset_halves = splitValue64(offset);
1367
+ if (require_aligned_register_pair) {
1368
+ return syscall6(
1369
+ .pwrite64,
1370
+ @as(u32, @bitCast(fd)),
1371
+ @intFromPtr(buf),
1372
+ count,
1373
+ 0,
1374
+ offset_halves[0],
1375
+ offset_halves[1],
1376
+ );
1377
+ } else {
1378
+ return syscall5(
1379
+ .pwrite64,
1380
+ @as(u32, @bitCast(fd)),
1381
+ @intFromPtr(buf),
1382
+ count,
1383
+ offset_halves[0],
1384
+ offset_halves[1],
1385
+ );
1386
+ }
1387
+ } else {
1388
+ return syscall4(
1389
+ .pwrite64,
1390
+ @as(u32, @bitCast(fd)),
1391
+ @intFromPtr(buf),
1392
+ count,
1393
+ @as(u64, @bitCast(offset)),
1394
+ );
1395
+ }
1314
1396
  }
1315
1397
 
1316
- pub fn writev(fd: i32, iov: [*]const iovec_const, count: usize) usize {
1317
- return syscall3(.writev, @as(usize, @bitCast(@as(isize, fd))), @intFromPtr(iov), count);
1398
+ pub fn writev(fd: fd_t, iov: [*]const iovec_const, count: usize) usize {
1399
+ return syscall3(.writev, @as(u32, @bitCast(fd)), @intFromPtr(iov), count);
1318
1400
  }
1319
1401
 
1320
- pub fn pwritev(fd: i32, iov: [*]const iovec_const, count: usize, offset: i64) usize {
1402
+ pub fn pwritev(fd: fd_t, iov: [*]const iovec_const, count: usize, offset: off_t) usize {
1321
1403
  const offset_u: u64 = @bitCast(offset);
1322
1404
  return syscall5(
1323
1405
  .pwritev,
1324
- @as(usize, @bitCast(@as(isize, fd))),
1406
+ @as(u32, @bitCast(fd)),
1325
1407
  @intFromPtr(iov),
1326
1408
  count,
1327
1409
  // See comments in preadv
1328
- @as(usize, @truncate(offset_u)),
1329
- if (usize_bits < 64) @as(usize, @truncate(offset_u >> 32)) else 0,
1410
+ @truncate(offset_u),
1411
+ if (@sizeOf(syscall_arg_t) < @sizeOf(u64)) @truncate(offset_u >> 32) else 0,
1330
1412
  );
1331
1413
  }
1332
1414
 
1333
- pub fn pwritev2(fd: i32, iov: [*]const iovec_const, count: usize, offset: i64, flags: kernel_rwf) usize {
1415
+ pub fn pwritev2(fd: fd_t, iov: [*]const iovec_const, count: usize, offset: off_t, flags: kernel_rwf) usize {
1334
1416
  const offset_u: u64 = @bitCast(offset);
1335
1417
  return syscall6(
1336
1418
  .pwritev2,
1337
- @as(usize, @bitCast(@as(isize, fd))),
1419
+ @as(u32, @bitCast(fd)),
1338
1420
  @intFromPtr(iov),
1339
1421
  count,
1340
1422
  // See comments in preadv
1341
- @as(usize, @truncate(offset_u)),
1342
- if (usize_bits < 64) @as(usize, @truncate(offset_u >> 32)) else 0,
1423
+ @truncate(offset_u),
1424
+ if (@sizeOf(syscall_arg_t) < @sizeOf(u64)) @truncate(offset_u >> 32) else 0,
1343
1425
  flags,
1344
1426
  );
1345
1427
  }
@@ -1348,7 +1430,7 @@ pub fn rmdir(path: [*:0]const u8) usize {
1348
1430
  if (@hasField(SYS, "rmdir")) {
1349
1431
  return syscall1(.rmdir, @intFromPtr(path));
1350
1432
  } else {
1351
- return syscall3(.unlinkat, @as(usize, @bitCast(@as(isize, AT.FDCWD))), @intFromPtr(path), AT.REMOVEDIR);
1433
+ return syscall3(.unlinkat, @as(u32, @bitCast(@as(i32, AT.FDCWD))), @intFromPtr(path), AT.REMOVEDIR);
1352
1434
  }
1353
1435
  }
1354
1436
 
@@ -1356,54 +1438,15 @@ pub fn symlink(existing: [*:0]const u8, new: [*:0]const u8) usize {
1356
1438
  if (@hasField(SYS, "symlink")) {
1357
1439
  return syscall2(.symlink, @intFromPtr(existing), @intFromPtr(new));
1358
1440
  } else {
1359
- return syscall3(.symlinkat, @intFromPtr(existing), @as(usize, @bitCast(@as(isize, AT.FDCWD))), @intFromPtr(new));
1441
+ return syscall3(.symlinkat, @intFromPtr(existing), @as(u32, @bitCast(@as(i32, AT.FDCWD))), @intFromPtr(new));
1360
1442
  }
1361
1443
  }
1362
1444
 
1363
- pub fn symlinkat(existing: [*:0]const u8, newfd: i32, newpath: [*:0]const u8) usize {
1364
- return syscall3(.symlinkat, @intFromPtr(existing), @as(usize, @bitCast(@as(isize, newfd))), @intFromPtr(newpath));
1445
+ pub fn symlinkat(existing: [*:0]const u8, newfd: fd_t, newpath: [*:0]const u8) usize {
1446
+ return syscall3(.symlinkat, @intFromPtr(existing), @as(u32, @bitCast(newfd)), @intFromPtr(newpath));
1365
1447
  }
1366
1448
 
1367
- pub fn pread(fd: i32, buf: [*]u8, count: usize, offset: i64) usize {
1368
- if (@hasField(SYS, "pread64") and usize_bits < 64) {
1369
- const offset_halves = splitValue64(offset);
1370
- if (require_aligned_register_pair) {
1371
- return syscall6(
1372
- .pread64,
1373
- @as(usize, @bitCast(@as(isize, fd))),
1374
- @intFromPtr(buf),
1375
- count,
1376
- 0,
1377
- offset_halves[0],
1378
- offset_halves[1],
1379
- );
1380
- } else {
1381
- return syscall5(
1382
- .pread64,
1383
- @as(usize, @bitCast(@as(isize, fd))),
1384
- @intFromPtr(buf),
1385
- count,
1386
- offset_halves[0],
1387
- offset_halves[1],
1388
- );
1389
- }
1390
- } else {
1391
- // Some architectures (eg. 64bit SPARC) pread is called pread64.
1392
- const syscall_number = if (!@hasField(SYS, "pread") and @hasField(SYS, "pread64"))
1393
- .pread64
1394
- else
1395
- .pread;
1396
- return syscall4(
1397
- syscall_number,
1398
- @as(usize, @bitCast(@as(isize, fd))),
1399
- @intFromPtr(buf),
1400
- count,
1401
- @as(u64, @bitCast(offset)),
1402
- );
1403
- }
1404
- }
1405
-
1406
- pub fn access(path: [*:0]const u8, mode: u32) usize {
1449
+ pub fn access(path: [*:0]const u8, mode: mode_t) usize {
1407
1450
  if (@hasField(SYS, "access")) {
1408
1451
  return syscall2(.access, @intFromPtr(path), mode);
1409
1452
  } else {
@@ -1411,19 +1454,19 @@ pub fn access(path: [*:0]const u8, mode: u32) usize {
1411
1454
  }
1412
1455
  }
1413
1456
 
1414
- pub fn faccessat(dirfd: i32, path: [*:0]const u8, mode: u32, flags: u32) usize {
1457
+ pub fn faccessat(dirfd: fd_t, path: [*:0]const u8, mode: mode_t, flags: u32) usize {
1415
1458
  if (flags == 0) {
1416
- return syscall3(.faccessat, @as(usize, @bitCast(@as(isize, dirfd))), @intFromPtr(path), mode);
1459
+ return syscall3(.faccessat, @as(u32, @bitCast(dirfd)), @intFromPtr(path), mode);
1417
1460
  }
1418
- return syscall4(.faccessat2, @as(usize, @bitCast(@as(isize, dirfd))), @intFromPtr(path), mode, flags);
1461
+ return syscall4(.faccessat2, @as(u32, @bitCast(dirfd)), @intFromPtr(path), mode, flags);
1419
1462
  }
1420
1463
 
1421
1464
  pub fn acct(path: [*:0]const u8) usize {
1422
1465
  return syscall1(.acct, @intFromPtr(path));
1423
1466
  }
1424
1467
 
1425
- pub fn pipe(fd: *[2]i32) usize {
1426
- if (comptime (native_arch.isMIPS() or native_arch.isSPARC())) {
1468
+ pub fn pipe(fd: *[2]fd_t) usize {
1469
+ if (native_arch.isMIPS() or native_arch.isSPARC()) {
1427
1470
  return syscall_pipe(fd);
1428
1471
  } else if (@hasField(SYS, "pipe")) {
1429
1472
  return syscall1(.pipe, @intFromPtr(fd));
@@ -1432,21 +1475,17 @@ pub fn pipe(fd: *[2]i32) usize {
1432
1475
  }
1433
1476
  }
1434
1477
 
1435
- pub fn pipe2(fd: *[2]i32, flags: O) usize {
1478
+ pub fn pipe2(fd: *[2]fd_t, flags: O) usize {
1436
1479
  return syscall2(.pipe2, @intFromPtr(fd), @as(u32, @bitCast(flags)));
1437
1480
  }
1438
1481
 
1439
- pub fn write(fd: i32, buf: [*]const u8, count: usize) usize {
1440
- return syscall3(.write, @bitCast(@as(isize, fd)), @intFromPtr(buf), count);
1441
- }
1442
-
1443
- pub fn ftruncate(fd: i32, length: i64) usize {
1444
- if (@hasField(SYS, "ftruncate64") and usize_bits < 64) {
1482
+ pub fn ftruncate(fd: fd_t, length: off_t) usize {
1483
+ if (@sizeOf(syscall_arg_t) < @sizeOf(u64)) {
1445
1484
  const length_halves = splitValue64(length);
1446
1485
  if (require_aligned_register_pair) {
1447
1486
  return syscall4(
1448
1487
  .ftruncate64,
1449
- @as(usize, @bitCast(@as(isize, fd))),
1488
+ @as(u32, @bitCast(fd)),
1450
1489
  0,
1451
1490
  length_halves[0],
1452
1491
  length_halves[1],
@@ -1454,7 +1493,7 @@ pub fn ftruncate(fd: i32, length: i64) usize {
1454
1493
  } else {
1455
1494
  return syscall3(
1456
1495
  .ftruncate64,
1457
- @as(usize, @bitCast(@as(isize, fd))),
1496
+ @as(u32, @bitCast(fd)),
1458
1497
  length_halves[0],
1459
1498
  length_halves[1],
1460
1499
  );
@@ -1462,48 +1501,8 @@ pub fn ftruncate(fd: i32, length: i64) usize {
1462
1501
  } else {
1463
1502
  return syscall2(
1464
1503
  .ftruncate,
1465
- @as(usize, @bitCast(@as(isize, fd))),
1466
- @as(usize, @bitCast(length)),
1467
- );
1468
- }
1469
- }
1470
-
1471
- pub fn pwrite(fd: i32, buf: [*]const u8, count: usize, offset: i64) usize {
1472
- if (@hasField(SYS, "pwrite64") and usize_bits < 64) {
1473
- const offset_halves = splitValue64(offset);
1474
-
1475
- if (require_aligned_register_pair) {
1476
- return syscall6(
1477
- .pwrite64,
1478
- @as(usize, @bitCast(@as(isize, fd))),
1479
- @intFromPtr(buf),
1480
- count,
1481
- 0,
1482
- offset_halves[0],
1483
- offset_halves[1],
1484
- );
1485
- } else {
1486
- return syscall5(
1487
- .pwrite64,
1488
- @as(usize, @bitCast(@as(isize, fd))),
1489
- @intFromPtr(buf),
1490
- count,
1491
- offset_halves[0],
1492
- offset_halves[1],
1493
- );
1494
- }
1495
- } else {
1496
- // Some architectures (eg. 64bit SPARC) pwrite is called pwrite64.
1497
- const syscall_number = if (!@hasField(SYS, "pwrite") and @hasField(SYS, "pwrite64"))
1498
- .pwrite64
1499
- else
1500
- .pwrite;
1501
- return syscall4(
1502
- syscall_number,
1503
- @as(usize, @bitCast(@as(isize, fd))),
1504
- @intFromPtr(buf),
1505
- count,
1506
- @as(u64, @bitCast(offset)),
1504
+ @as(u32, @bitCast(fd)),
1505
+ @as(u64, @bitCast(length)),
1507
1506
  );
1508
1507
  }
1509
1508
  }
@@ -1514,50 +1513,50 @@ pub fn rename(old: [*:0]const u8, new: [*:0]const u8) usize {
1514
1513
  } else if (@hasField(SYS, "renameat")) {
1515
1514
  return syscall4(
1516
1515
  .renameat,
1517
- @as(usize, @bitCast(@as(isize, AT.FDCWD))),
1516
+ @as(u32, @bitCast(@as(i32, AT.FDCWD))),
1518
1517
  @intFromPtr(old),
1519
- @as(usize, @bitCast(@as(isize, AT.FDCWD))),
1518
+ @as(u32, @bitCast(@as(i32, AT.FDCWD))),
1520
1519
  @intFromPtr(new),
1521
1520
  );
1522
1521
  } else {
1523
1522
  return syscall5(
1524
1523
  .renameat2,
1525
- @as(usize, @bitCast(@as(isize, AT.FDCWD))),
1524
+ @as(u32, @bitCast(@as(i32, AT.FDCWD))),
1526
1525
  @intFromPtr(old),
1527
- @as(usize, @bitCast(@as(isize, AT.FDCWD))),
1526
+ @as(u32, @bitCast(@as(i32, AT.FDCWD))),
1528
1527
  @intFromPtr(new),
1529
1528
  0,
1530
1529
  );
1531
1530
  }
1532
1531
  }
1533
1532
 
1534
- pub fn renameat(oldfd: i32, oldpath: [*:0]const u8, newfd: i32, newpath: [*:0]const u8) usize {
1533
+ pub fn renameat(oldfd: fd_t, oldpath: [*:0]const u8, newfd: fd_t, newpath: [*:0]const u8) usize {
1535
1534
  if (@hasField(SYS, "renameat")) {
1536
1535
  return syscall4(
1537
1536
  .renameat,
1538
- @as(usize, @bitCast(@as(isize, oldfd))),
1537
+ @as(u32, @bitCast(oldfd)),
1539
1538
  @intFromPtr(oldpath),
1540
- @as(usize, @bitCast(@as(isize, newfd))),
1539
+ @as(u32, @bitCast(newfd)),
1541
1540
  @intFromPtr(newpath),
1542
1541
  );
1543
1542
  } else {
1544
1543
  return syscall5(
1545
1544
  .renameat2,
1546
- @as(usize, @bitCast(@as(isize, oldfd))),
1545
+ @as(u32, @bitCast(oldfd)),
1547
1546
  @intFromPtr(oldpath),
1548
- @as(usize, @bitCast(@as(isize, newfd))),
1547
+ @as(u32, @bitCast(newfd)),
1549
1548
  @intFromPtr(newpath),
1550
1549
  0,
1551
1550
  );
1552
1551
  }
1553
1552
  }
1554
1553
 
1555
- pub fn renameat2(oldfd: i32, oldpath: [*:0]const u8, newfd: i32, newpath: [*:0]const u8, flags: RENAME) usize {
1554
+ pub fn renameat2(oldfd: fd_t, oldpath: [*:0]const u8, newfd: fd_t, newpath: [*:0]const u8, flags: RENAME) usize {
1556
1555
  return syscall5(
1557
1556
  .renameat2,
1558
- @as(usize, @bitCast(@as(isize, oldfd))),
1557
+ @as(u32, @bitCast(oldfd)),
1559
1558
  @intFromPtr(oldpath),
1560
- @as(usize, @bitCast(@as(isize, newfd))),
1559
+ @as(u32, @bitCast(newfd)),
1561
1560
  @intFromPtr(newpath),
1562
1561
  @as(u32, @bitCast(flags)),
1563
1562
  );
@@ -1569,7 +1568,7 @@ pub fn open(path: [*:0]const u8, flags: O, perm: mode_t) usize {
1569
1568
  } else {
1570
1569
  return syscall4(
1571
1570
  .openat,
1572
- @bitCast(@as(isize, AT.FDCWD)),
1571
+ @as(u32, @bitCast(@as(i32, AT.FDCWD))),
1573
1572
  @intFromPtr(path),
1574
1573
  @as(u32, @bitCast(flags)),
1575
1574
  perm,
@@ -1581,13 +1580,13 @@ pub fn create(path: [*:0]const u8, perm: mode_t) usize {
1581
1580
  return syscall2(.creat, @intFromPtr(path), perm);
1582
1581
  }
1583
1582
 
1584
- pub fn openat(dirfd: i32, path: [*:0]const u8, flags: O, mode: mode_t) usize {
1583
+ pub fn openat(dirfd: fd_t, path: [*:0]const u8, flags: O, mode: mode_t) usize {
1585
1584
  // dirfd could be negative, for example AT.FDCWD is -100
1586
- return syscall4(.openat, @bitCast(@as(isize, dirfd)), @intFromPtr(path), @as(u32, @bitCast(flags)), mode);
1585
+ return syscall4(.openat, @as(u32, @bitCast(dirfd)), @intFromPtr(path), @as(u32, @bitCast(flags)), mode);
1587
1586
  }
1588
1587
 
1589
1588
  /// See also `clone` (from the arch-specific include)
1590
- pub fn clone5(flags: usize, child_stack_ptr: usize, parent_tid: *i32, child_tid: *i32, newtls: usize) usize {
1589
+ pub fn clone5(flags: usize, child_stack_ptr: usize, parent_tid: *pid_t, child_tid: *pid_t, newtls: usize) usize {
1591
1590
  return syscall5(.clone, flags, child_stack_ptr, @intFromPtr(parent_tid), @intFromPtr(child_tid), newtls);
1592
1591
  }
1593
1592
 
@@ -1602,7 +1601,7 @@ pub fn set_tid_address(tidptr: ?*pid_t) pid_t {
1602
1601
  }
1603
1602
 
1604
1603
  pub fn close(fd: fd_t) usize {
1605
- return syscall1(.close, @as(usize, @bitCast(@as(isize, fd))));
1604
+ return syscall1(.close, @as(u32, @bitCast(fd)));
1606
1605
  }
1607
1606
 
1608
1607
  pub const CLOSE_RANGE = packed struct(u32) {
@@ -1614,11 +1613,11 @@ pub const CLOSE_RANGE = packed struct(u32) {
1614
1613
  };
1615
1614
 
1616
1615
  pub fn close_range(first: fd_t, last: fd_t, flags: CLOSE_RANGE) usize {
1617
- return syscall3(.close_range, fd_to_usize(first), fd_to_usize(last), @as(u32, @bitCast(flags)));
1616
+ return syscall3(.close_range, @as(u32, @bitCast(first)), @as(u32, @bitCast(last)), @as(u32, @bitCast(flags)));
1618
1617
  }
1619
1618
 
1620
- pub fn fchmod(fd: i32, mode: mode_t) usize {
1621
- return syscall2(.fchmod, @as(usize, @bitCast(@as(isize, fd))), mode);
1619
+ pub fn fchmod(fd: fd_t, mode: mode_t) usize {
1620
+ return syscall2(.fchmod, @as(u32, @bitCast(fd)), mode);
1622
1621
  }
1623
1622
 
1624
1623
  pub fn chmod(path: [*:0]const u8, mode: mode_t) usize {
@@ -1629,16 +1628,16 @@ pub fn chmod(path: [*:0]const u8, mode: mode_t) usize {
1629
1628
  }
1630
1629
  }
1631
1630
 
1632
- pub fn fchown(fd: i32, owner: uid_t, group: gid_t) usize {
1631
+ pub fn fchown(fd: fd_t, owner: uid_t, group: gid_t) usize {
1633
1632
  if (@hasField(SYS, "fchown32")) {
1634
- return syscall3(.fchown32, @as(usize, @bitCast(@as(isize, fd))), owner, group);
1633
+ return syscall3(.fchown32, @as(u32, @bitCast(fd)), owner, group);
1635
1634
  } else {
1636
- return syscall3(.fchown, @as(usize, @bitCast(@as(isize, fd))), owner, group);
1635
+ return syscall3(.fchown, @as(u32, @bitCast(fd)), owner, group);
1637
1636
  }
1638
1637
  }
1639
1638
 
1640
- pub fn fchownat(fd: i32, path: [*:0]const u8, owner: uid_t, group: gid_t, flags: u32) usize {
1641
- return syscall5(.fchownat, @as(usize, @bitCast(@as(isize, fd))), @intFromPtr(path), owner, group, flags);
1639
+ pub fn fchownat(fd: fd_t, path: [*:0]const u8, owner: uid_t, group: gid_t, flags: u32) usize {
1640
+ return syscall5(.fchownat, @as(u32, @bitCast(fd)), @intFromPtr(path), owner, group, flags);
1642
1641
  }
1643
1642
 
1644
1643
  pub fn chown(path: [*:0]const u8, owner: uid_t, group: gid_t) usize {
@@ -1661,40 +1660,40 @@ pub fn lchown(path: [*:0]const u8, owner: uid_t, group: gid_t) usize {
1661
1660
  }
1662
1661
  }
1663
1662
 
1664
- pub fn fchmodat(fd: i32, path: [*:0]const u8, mode: mode_t) usize {
1665
- return syscall3(.fchmodat, @bitCast(@as(isize, fd)), @intFromPtr(path), mode);
1663
+ pub fn fchmodat(fd: fd_t, path: [*:0]const u8, mode: mode_t) usize {
1664
+ return syscall3(.fchmodat, @as(u32, @bitCast(fd)), @intFromPtr(path), mode);
1666
1665
  }
1667
1666
 
1668
- pub fn fchmodat2(fd: i32, path: [*:0]const u8, mode: mode_t, flags: u32) usize {
1669
- return syscall4(.fchmodat2, @bitCast(@as(isize, fd)), @intFromPtr(path), mode, flags);
1667
+ pub fn fchmodat2(fd: fd_t, path: [*:0]const u8, mode: mode_t, flags: u32) usize {
1668
+ return syscall4(.fchmodat2, @as(u32, @bitCast(fd)), @intFromPtr(path), mode, flags);
1670
1669
  }
1671
1670
 
1672
1671
  /// Can only be called on 32 bit systems. For 64 bit see `lseek`.
1673
- pub fn llseek(fd: i32, offset: u64, result: ?*u64, whence: usize) usize {
1672
+ pub fn llseek(fd: fd_t, offset: off_t, result: ?*off_t, whence: u32) usize {
1674
1673
  // NOTE: The offset parameter splitting is independent from the target
1675
1674
  // endianness.
1676
1675
  return syscall5(
1677
1676
  .llseek,
1678
- @as(usize, @bitCast(@as(isize, fd))),
1679
- @as(usize, @truncate(offset >> 32)),
1680
- @as(usize, @truncate(offset)),
1677
+ @as(u32, @bitCast(fd)),
1678
+ @truncate(@as(u64, @bitCast(offset >> 32))),
1679
+ @truncate(@as(u64, @bitCast(offset))),
1681
1680
  @intFromPtr(result),
1682
1681
  whence,
1683
1682
  );
1684
1683
  }
1685
1684
 
1686
1685
  /// Can only be called on 64 bit systems. For 32 bit see `llseek`.
1687
- pub fn lseek(fd: i32, offset: i64, whence: usize) usize {
1688
- return syscall3(.lseek, @as(usize, @bitCast(@as(isize, fd))), @as(usize, @bitCast(offset)), whence);
1686
+ pub fn lseek(fd: fd_t, offset: off_t, whence: u32) usize {
1687
+ return syscall3(.lseek, @as(u32, @bitCast(fd)), @as(u64, @bitCast(offset)), whence);
1689
1688
  }
1690
1689
 
1691
1690
  pub fn exit(status: i32) noreturn {
1692
- _ = syscall1(.exit, @as(usize, @bitCast(@as(isize, status))));
1691
+ _ = syscall1(.exit, @as(u32, @bitCast(status)));
1693
1692
  unreachable;
1694
1693
  }
1695
1694
 
1696
1695
  pub fn exit_group(status: i32) noreturn {
1697
- _ = syscall1(.exit_group, @as(usize, @bitCast(@as(isize, status))));
1696
+ _ = syscall1(.exit_group, @as(u32, @bitCast(status)));
1698
1697
  unreachable;
1699
1698
  }
1700
1699
 
@@ -1760,15 +1759,15 @@ pub fn getrandom(buf: [*]u8, count: usize, flags: u32) usize {
1760
1759
  }
1761
1760
 
1762
1761
  pub fn kill(pid: pid_t, sig: SIG) usize {
1763
- return syscall2(.kill, @as(usize, @bitCast(@as(isize, pid))), @intFromEnum(sig));
1762
+ return syscall2(.kill, @as(u32, @bitCast(pid)), @intFromEnum(sig));
1764
1763
  }
1765
1764
 
1766
1765
  pub fn tkill(tid: pid_t, sig: SIG) usize {
1767
- return syscall2(.tkill, @as(usize, @bitCast(@as(isize, tid))), @intFromEnum(sig));
1766
+ return syscall2(.tkill, @as(u32, @bitCast(tid)), @intFromEnum(sig));
1768
1767
  }
1769
1768
 
1770
1769
  pub fn tgkill(tgid: pid_t, tid: pid_t, sig: SIG) usize {
1771
- return syscall3(.tgkill, @as(usize, @bitCast(@as(isize, tgid))), @as(usize, @bitCast(@as(isize, tid))), @intFromEnum(sig));
1770
+ return syscall3(.tgkill, @as(u32, @bitCast(tgid)), @as(u32, @bitCast(tid)), @intFromEnum(sig));
1772
1771
  }
1773
1772
 
1774
1773
  pub fn link(oldpath: [*:0]const u8, newpath: [*:0]const u8) usize {
@@ -1781,9 +1780,9 @@ pub fn link(oldpath: [*:0]const u8, newpath: [*:0]const u8) usize {
1781
1780
  } else {
1782
1781
  return syscall5(
1783
1782
  .linkat,
1784
- @as(usize, @bitCast(@as(isize, AT.FDCWD))),
1783
+ @as(u32, @bitCast(@as(i32, AT.FDCWD))),
1785
1784
  @intFromPtr(oldpath),
1786
- @as(usize, @bitCast(@as(isize, AT.FDCWD))),
1785
+ @as(u32, @bitCast(@as(i32, AT.FDCWD))),
1787
1786
  @intFromPtr(newpath),
1788
1787
  0,
1789
1788
  );
@@ -1793,9 +1792,9 @@ pub fn link(oldpath: [*:0]const u8, newpath: [*:0]const u8) usize {
1793
1792
  pub fn linkat(oldfd: fd_t, oldpath: [*:0]const u8, newfd: fd_t, newpath: [*:0]const u8, flags: u32) usize {
1794
1793
  return syscall5(
1795
1794
  .linkat,
1796
- @as(usize, @bitCast(@as(isize, oldfd))),
1795
+ @as(u32, @bitCast(oldfd)),
1797
1796
  @intFromPtr(oldpath),
1798
- @as(usize, @bitCast(@as(isize, newfd))),
1797
+ @as(u32, @bitCast(newfd)),
1799
1798
  @intFromPtr(newpath),
1800
1799
  flags,
1801
1800
  );
@@ -1805,33 +1804,33 @@ pub fn unlink(path: [*:0]const u8) usize {
1805
1804
  if (@hasField(SYS, "unlink")) {
1806
1805
  return syscall1(.unlink, @intFromPtr(path));
1807
1806
  } else {
1808
- return syscall3(.unlinkat, @as(usize, @bitCast(@as(isize, AT.FDCWD))), @intFromPtr(path), 0);
1807
+ return syscall3(.unlinkat, @as(u32, @bitCast(@as(i32, AT.FDCWD))), @intFromPtr(path), 0);
1809
1808
  }
1810
1809
  }
1811
1810
 
1812
- pub fn unlinkat(dirfd: i32, path: [*:0]const u8, flags: u32) usize {
1813
- return syscall3(.unlinkat, @as(usize, @bitCast(@as(isize, dirfd))), @intFromPtr(path), flags);
1811
+ pub fn unlinkat(dirfd: fd_t, path: [*:0]const u8, flags: u32) usize {
1812
+ return syscall3(.unlinkat, @as(u32, @bitCast(dirfd)), @intFromPtr(path), flags);
1814
1813
  }
1815
1814
 
1816
- pub fn waitpid(pid: pid_t, status: *u32, flags: u32) usize {
1817
- return syscall4(.wait4, @as(usize, @bitCast(@as(isize, pid))), @intFromPtr(status), flags, 0);
1815
+ pub fn waitpid(pid: pid_t, status: *i32, flags: u32) usize {
1816
+ return syscall4(.wait4, @as(u32, @bitCast(pid)), @intFromPtr(status), flags, 0);
1818
1817
  }
1819
1818
 
1820
- pub fn wait4(pid: pid_t, status: *u32, flags: u32, usage: ?*rusage) usize {
1819
+ pub fn wait4(pid: pid_t, status: *i32, flags: u32, usage: ?*rusage) usize {
1821
1820
  return syscall4(
1822
1821
  .wait4,
1823
- @as(usize, @bitCast(@as(isize, pid))),
1822
+ @as(u32, @bitCast(pid)),
1824
1823
  @intFromPtr(status),
1825
1824
  flags,
1826
1825
  @intFromPtr(usage),
1827
1826
  );
1828
1827
  }
1829
1828
 
1830
- pub fn waitid(id_type: P, id: i32, infop: *siginfo_t, flags: u32, usage: ?*rusage) usize {
1829
+ pub fn waitid(id_type: P, id: pid_t, infop: *siginfo_t, flags: u32, usage: ?*rusage) usize {
1831
1830
  return syscall5(
1832
1831
  .waitid,
1833
1832
  @intFromEnum(id_type),
1834
- @as(usize, @bitCast(@as(isize, id))),
1833
+ @as(u32, @bitCast(id)),
1835
1834
  @intFromPtr(infop),
1836
1835
  flags,
1837
1836
  @intFromPtr(usage),
@@ -1930,14 +1929,14 @@ pub const Flock = extern struct {
1930
1929
 
1931
1930
  pub fn fcntl(fd: fd_t, cmd: i32, arg: usize) usize {
1932
1931
  if (@hasField(SYS, "fcntl64")) {
1933
- return syscall3(.fcntl64, @as(usize, @bitCast(@as(isize, fd))), @as(usize, @bitCast(@as(isize, cmd))), arg);
1932
+ return syscall3(.fcntl64, @as(u32, @bitCast(fd)), @as(u32, @bitCast(cmd)), arg);
1934
1933
  } else {
1935
- return syscall3(.fcntl, @as(usize, @bitCast(@as(isize, fd))), @as(usize, @bitCast(@as(isize, cmd))), arg);
1934
+ return syscall3(.fcntl, @as(u32, @bitCast(fd)), @as(u32, @bitCast(cmd)), arg);
1936
1935
  }
1937
1936
  }
1938
1937
 
1939
1938
  pub fn flock(fd: fd_t, operation: i32) usize {
1940
- return syscall2(.flock, @as(usize, @bitCast(@as(isize, fd))), @as(usize, @bitCast(@as(isize, operation))));
1939
+ return syscall2(.flock, @as(u32, @bitCast(fd)), @as(u32, @bitCast(operation)));
1941
1940
  }
1942
1941
 
1943
1942
  pub const Elf_Symndx = if (native_arch == .s390x) u64 else u32;
@@ -1977,7 +1976,7 @@ fn init_vdso_clock_gettime(clk: clockid_t, ts: *timespec) callconv(.c) usize {
1977
1976
  pub fn clock_getres(clk_id: clockid_t, tp: *timespec) usize {
1978
1977
  return syscall2(
1979
1978
  if (@hasField(SYS, "clock_getres") and native_arch != .hexagon) .clock_getres else .clock_getres_time64,
1980
- @as(usize, @intFromEnum(clk_id)),
1979
+ @intFromEnum(clk_id),
1981
1980
  @intFromPtr(tp),
1982
1981
  );
1983
1982
  }
@@ -1985,7 +1984,7 @@ pub fn clock_getres(clk_id: clockid_t, tp: *timespec) usize {
1985
1984
  pub fn clock_settime(clk_id: clockid_t, tp: *const timespec) usize {
1986
1985
  return syscall2(
1987
1986
  if (@hasField(SYS, "clock_settime") and native_arch != .hexagon) .clock_settime else .clock_settime64,
1988
- @as(usize, @intFromEnum(clk_id)),
1987
+ @intFromEnum(clk_id),
1989
1988
  @intFromPtr(tp),
1990
1989
  );
1991
1990
  }
@@ -2139,11 +2138,11 @@ pub fn setresgid(rgid: gid_t, egid: gid_t, sgid: gid_t) usize {
2139
2138
  }
2140
2139
 
2141
2140
  pub fn setpgid(pid: pid_t, pgid: pid_t) usize {
2142
- return syscall2(.setpgid, @intCast(pid), @intCast(pgid));
2141
+ return syscall2(.setpgid, @as(u32, @bitCast(pid)), @as(u32, @bitCast(pgid)));
2143
2142
  }
2144
2143
 
2145
2144
  pub fn getpgid(pid: pid_t) usize {
2146
- return syscall1(.getpgid, @intCast(pid));
2145
+ return syscall1(.getpgid, @as(u32, @bitCast(pid)));
2147
2146
  }
2148
2147
 
2149
2148
  pub fn getgroups(size: usize, list: ?[*]gid_t) usize {
@@ -2167,7 +2166,7 @@ pub fn setsid() usize {
2167
2166
  }
2168
2167
 
2169
2168
  pub fn getsid(pid: pid_t) usize {
2170
- return syscall1(.getsid, @intCast(pid));
2169
+ return syscall1(.getsid, @as(u32, @bitCast(pid)));
2171
2170
  }
2172
2171
 
2173
2172
  pub fn getpid() pid_t {
@@ -2238,8 +2237,6 @@ pub fn sigaction(sig: SIG, noalias act: ?*const Sigaction, noalias oact: ?*Sigac
2238
2237
  return 0;
2239
2238
  }
2240
2239
 
2241
- const usize_bits = @typeInfo(usize).int.bits;
2242
-
2243
2240
  /// Defined as one greater than the largest defined signal number.
2244
2241
  pub const NSIG = if (is_mips) 128 else 65;
2245
2242
 
@@ -2267,12 +2264,12 @@ pub fn sigrtmax() u8 {
2267
2264
 
2268
2265
  /// Zig's version of sigemptyset. Returns initialized sigset_t.
2269
2266
  pub fn sigemptyset() sigset_t {
2270
- return [_]SigsetElement{0} ** sigset_len;
2267
+ return @splat(0);
2271
2268
  }
2272
2269
 
2273
2270
  /// Zig's version of sigfillset. Returns initalized sigset_t.
2274
2271
  pub fn sigfillset() sigset_t {
2275
- return [_]SigsetElement{~@as(SigsetElement, 0)} ** sigset_len;
2272
+ return @splat(~@as(SigsetElement, 0));
2276
2273
  }
2277
2274
 
2278
2275
  fn sigset_bit_index(sig: SIG) struct { word: usize, mask: SigsetElement } {
@@ -2300,18 +2297,18 @@ pub fn sigismember(set: *const sigset_t, sig: SIG) bool {
2300
2297
  return ((set.*)[index.word] & index.mask) != 0;
2301
2298
  }
2302
2299
 
2303
- pub fn getsockname(fd: i32, noalias addr: *sockaddr, noalias len: *socklen_t) usize {
2300
+ pub fn getsockname(fd: fd_t, noalias addr: *sockaddr, noalias len: *socklen_t) usize {
2304
2301
  if (native_arch == .x86) {
2305
- return socketcall(SC.getsockname, &[3]usize{ @as(usize, @bitCast(@as(isize, fd))), @intFromPtr(addr), @intFromPtr(len) });
2302
+ return socketcall(SC.getsockname, &[3]usize{ @as(u32, @bitCast(fd)), @intFromPtr(addr), @intFromPtr(len) });
2306
2303
  }
2307
- return syscall3(.getsockname, @as(usize, @bitCast(@as(isize, fd))), @intFromPtr(addr), @intFromPtr(len));
2304
+ return syscall3(.getsockname, @as(u32, @bitCast(fd)), @intFromPtr(addr), @intFromPtr(len));
2308
2305
  }
2309
2306
 
2310
- pub fn getpeername(fd: i32, noalias addr: *sockaddr, noalias len: *socklen_t) usize {
2307
+ pub fn getpeername(fd: fd_t, noalias addr: *sockaddr, noalias len: *socklen_t) usize {
2311
2308
  if (native_arch == .x86) {
2312
- return socketcall(SC.getpeername, &[3]usize{ @as(usize, @bitCast(@as(isize, fd))), @intFromPtr(addr), @intFromPtr(len) });
2309
+ return socketcall(SC.getpeername, &[3]usize{ @as(u32, @bitCast(fd)), @intFromPtr(addr), @intFromPtr(len) });
2313
2310
  }
2314
- return syscall3(.getpeername, @as(usize, @bitCast(@as(isize, fd))), @intFromPtr(addr), @intFromPtr(len));
2311
+ return syscall3(.getpeername, @as(u32, @bitCast(fd)), @intFromPtr(addr), @intFromPtr(len));
2315
2312
  }
2316
2313
 
2317
2314
  pub fn socket(domain: u32, socket_type: u32, protocol: u32) usize {
@@ -2321,58 +2318,52 @@ pub fn socket(domain: u32, socket_type: u32, protocol: u32) usize {
2321
2318
  return syscall3(.socket, domain, socket_type, protocol);
2322
2319
  }
2323
2320
 
2324
- pub fn setsockopt(fd: i32, level: i32, optname: u32, optval: [*]const u8, optlen: socklen_t) usize {
2321
+ pub fn setsockopt(fd: fd_t, level: i32, optname: u32, optval: [*]const u8, optlen: socklen_t) usize {
2325
2322
  if (native_arch == .x86) {
2326
- return socketcall(SC.setsockopt, &[5]usize{ @as(usize, @bitCast(@as(isize, fd))), @as(usize, @bitCast(@as(isize, level))), optname, @intFromPtr(optval), @as(usize, @intCast(optlen)) });
2323
+ return socketcall(SC.setsockopt, &[5]usize{ @as(u32, @bitCast(fd)), @as(usize, @bitCast(@as(isize, level))), optname, @intFromPtr(optval), @as(usize, @intCast(optlen)) });
2327
2324
  }
2328
- return syscall5(.setsockopt, @as(usize, @bitCast(@as(isize, fd))), @as(usize, @bitCast(@as(isize, level))), optname, @intFromPtr(optval), @as(usize, @intCast(optlen)));
2325
+ return syscall5(.setsockopt, @as(u32, @bitCast(fd)), @as(usize, @bitCast(@as(isize, level))), optname, @intFromPtr(optval), @as(usize, @intCast(optlen)));
2329
2326
  }
2330
2327
 
2331
- pub fn getsockopt(fd: i32, level: i32, optname: u32, noalias optval: [*]u8, noalias optlen: *socklen_t) usize {
2328
+ pub fn getsockopt(fd: fd_t, level: i32, optname: u32, noalias optval: [*]u8, noalias optlen: *socklen_t) usize {
2332
2329
  if (native_arch == .x86) {
2333
- return socketcall(SC.getsockopt, &[5]usize{ @as(usize, @bitCast(@as(isize, fd))), @as(usize, @bitCast(@as(isize, level))), optname, @intFromPtr(optval), @intFromPtr(optlen) });
2330
+ return socketcall(SC.getsockopt, &[5]usize{ @as(u32, @bitCast(fd)), @as(usize, @bitCast(@as(isize, level))), optname, @intFromPtr(optval), @intFromPtr(optlen) });
2334
2331
  }
2335
- return syscall5(.getsockopt, @as(usize, @bitCast(@as(isize, fd))), @as(usize, @bitCast(@as(isize, level))), optname, @intFromPtr(optval), @intFromPtr(optlen));
2332
+ return syscall5(.getsockopt, @as(u32, @bitCast(fd)), @as(usize, @bitCast(@as(isize, level))), optname, @intFromPtr(optval), @intFromPtr(optlen));
2336
2333
  }
2337
2334
 
2338
- pub fn sendmsg(fd: i32, msg: *const msghdr_const, flags: u32) usize {
2339
- const fd_usize = @as(usize, @bitCast(@as(isize, fd)));
2340
- const msg_usize = @intFromPtr(msg);
2335
+ pub fn sendmsg(fd: fd_t, msg: *const msghdr_const, flags: u32) usize {
2341
2336
  if (native_arch == .x86) {
2342
- return socketcall(SC.sendmsg, &[3]usize{ fd_usize, msg_usize, flags });
2337
+ return socketcall(SC.sendmsg, &[3]usize{ @as(u32, @bitCast(fd)), @intFromPtr(msg), flags });
2343
2338
  } else {
2344
- return syscall3(.sendmsg, fd_usize, msg_usize, flags);
2339
+ return syscall3(.sendmsg, @as(u32, @bitCast(fd)), @intFromPtr(msg), flags);
2345
2340
  }
2346
2341
  }
2347
2342
 
2348
- pub fn sendmmsg(fd: i32, msgvec: [*]mmsghdr, vlen: u32, flags: u32) usize {
2349
- return syscall4(.sendmmsg, @as(usize, @bitCast(@as(isize, fd))), @intFromPtr(msgvec), vlen, flags);
2343
+ pub fn sendmmsg(fd: fd_t, msgvec: [*]mmsghdr, vlen: u32, flags: u32) usize {
2344
+ return syscall4(.sendmmsg, @as(u32, @bitCast(fd)), @intFromPtr(msgvec), vlen, flags);
2350
2345
  }
2351
2346
 
2352
- pub fn connect(fd: i32, addr: *const anyopaque, len: socklen_t) usize {
2353
- const fd_usize = @as(usize, @bitCast(@as(isize, fd)));
2354
- const addr_usize = @intFromPtr(addr);
2347
+ pub fn connect(fd: fd_t, addr: *const anyopaque, len: socklen_t) usize {
2355
2348
  if (native_arch == .x86) {
2356
- return socketcall(SC.connect, &[3]usize{ fd_usize, addr_usize, len });
2349
+ return socketcall(SC.connect, &[3]usize{ @as(u32, @bitCast(fd)), @intFromPtr(addr), len });
2357
2350
  } else {
2358
- return syscall3(.connect, fd_usize, addr_usize, len);
2351
+ return syscall3(.connect, @as(u32, @bitCast(fd)), @intFromPtr(addr), len);
2359
2352
  }
2360
2353
  }
2361
2354
 
2362
- pub fn recvmsg(fd: i32, msg: *msghdr, flags: u32) usize {
2363
- const fd_usize = @as(usize, @bitCast(@as(isize, fd)));
2364
- const msg_usize = @intFromPtr(msg);
2355
+ pub fn recvmsg(fd: fd_t, msg: *msghdr, flags: u32) usize {
2365
2356
  if (native_arch == .x86) {
2366
- return socketcall(SC.recvmsg, &[3]usize{ fd_usize, msg_usize, flags });
2357
+ return socketcall(SC.recvmsg, &[3]usize{ @as(u32, @bitCast(fd)), @intFromPtr(msg), flags });
2367
2358
  } else {
2368
- return syscall3(.recvmsg, fd_usize, msg_usize, flags);
2359
+ return syscall3(.recvmsg, @as(u32, @bitCast(fd)), @intFromPtr(msg), flags);
2369
2360
  }
2370
2361
  }
2371
2362
 
2372
- pub fn recvmmsg(fd: i32, msgvec: ?[*]mmsghdr, vlen: u32, flags: u32, timeout: ?*timespec) usize {
2363
+ pub fn recvmmsg(fd: fd_t, msgvec: ?[*]mmsghdr, vlen: u32, flags: u32, timeout: ?*timespec) usize {
2373
2364
  return syscall5(
2374
2365
  if (@hasField(SYS, "recvmmsg") and native_arch != .hexagon) .recvmmsg else .recvmmsg_time64,
2375
- @as(usize, @bitCast(@as(isize, fd))),
2366
+ @as(u32, @bitCast(fd)),
2376
2367
  @intFromPtr(msgvec),
2377
2368
  vlen,
2378
2369
  flags,
@@ -2381,43 +2372,39 @@ pub fn recvmmsg(fd: i32, msgvec: ?[*]mmsghdr, vlen: u32, flags: u32, timeout: ?*
2381
2372
  }
2382
2373
 
2383
2374
  pub fn recvfrom(
2384
- fd: i32,
2375
+ fd: fd_t,
2385
2376
  noalias buf: [*]u8,
2386
2377
  len: usize,
2387
2378
  flags: u32,
2388
2379
  noalias addr: ?*sockaddr,
2389
2380
  noalias alen: ?*socklen_t,
2390
2381
  ) usize {
2391
- const fd_usize = @as(usize, @bitCast(@as(isize, fd)));
2392
- const buf_usize = @intFromPtr(buf);
2393
- const addr_usize = @intFromPtr(addr);
2394
- const alen_usize = @intFromPtr(alen);
2395
2382
  if (native_arch == .x86) {
2396
- return socketcall(SC.recvfrom, &[6]usize{ fd_usize, buf_usize, len, flags, addr_usize, alen_usize });
2383
+ return socketcall(SC.recvfrom, &[6]usize{ @as(u32, @bitCast(fd)), @intFromPtr(buf), len, flags, @intFromPtr(addr), @intFromPtr(alen) });
2397
2384
  } else {
2398
- return syscall6(.recvfrom, fd_usize, buf_usize, len, flags, addr_usize, alen_usize);
2385
+ return syscall6(.recvfrom, @as(u32, @bitCast(fd)), @intFromPtr(buf), len, flags, @intFromPtr(addr), @intFromPtr(alen));
2399
2386
  }
2400
2387
  }
2401
2388
 
2402
- pub fn shutdown(fd: i32, how: i32) usize {
2389
+ pub fn shutdown(fd: fd_t, how: i32) usize {
2403
2390
  if (native_arch == .x86) {
2404
- return socketcall(SC.shutdown, &[2]usize{ @as(usize, @bitCast(@as(isize, fd))), @as(usize, @bitCast(@as(isize, how))) });
2391
+ return socketcall(SC.shutdown, &[2]usize{ @as(u32, @bitCast(fd)), @as(u32, @bitCast(how)) });
2405
2392
  }
2406
- return syscall2(.shutdown, @as(usize, @bitCast(@as(isize, fd))), @as(usize, @bitCast(@as(isize, how))));
2393
+ return syscall2(.shutdown, @as(u32, @bitCast(fd)), @as(u32, @bitCast(how)));
2407
2394
  }
2408
2395
 
2409
- pub fn bind(fd: i32, addr: *const sockaddr, len: socklen_t) usize {
2396
+ pub fn bind(fd: fd_t, addr: *const sockaddr, len: socklen_t) usize {
2410
2397
  if (native_arch == .x86) {
2411
- return socketcall(SC.bind, &[3]usize{ @as(usize, @bitCast(@as(isize, fd))), @intFromPtr(addr), @as(usize, @intCast(len)) });
2398
+ return socketcall(SC.bind, &[3]usize{ @as(u32, @bitCast(fd)), @intFromPtr(addr), len });
2412
2399
  }
2413
- return syscall3(.bind, @as(usize, @bitCast(@as(isize, fd))), @intFromPtr(addr), @as(usize, @intCast(len)));
2400
+ return syscall3(.bind, @as(u32, @bitCast(fd)), @intFromPtr(addr), len);
2414
2401
  }
2415
2402
 
2416
- pub fn listen(fd: i32, backlog: u32) usize {
2403
+ pub fn listen(fd: fd_t, backlog: u32) usize {
2417
2404
  if (native_arch == .x86) {
2418
- return socketcall(SC.listen, &[2]usize{ @as(usize, @bitCast(@as(isize, fd))), backlog });
2405
+ return socketcall(SC.listen, &[2]usize{ @as(u32, @bitCast(fd)), backlog });
2419
2406
  }
2420
- return syscall2(.listen, @as(usize, @bitCast(@as(isize, fd))), backlog);
2407
+ return syscall2(.listen, @as(u32, @bitCast(fd)), backlog);
2421
2408
  }
2422
2409
 
2423
2410
  pub fn sendto(fd: i32, buf: [*]const u8, len: usize, flags: u32, addr: ?*const sockaddr, alen: socklen_t) usize {
@@ -2427,51 +2414,41 @@ pub fn sendto(fd: i32, buf: [*]const u8, len: usize, flags: u32, addr: ?*const s
2427
2414
  return syscall6(.sendto, @as(usize, @bitCast(@as(isize, fd))), @intFromPtr(buf), len, flags, @intFromPtr(addr), @as(usize, @intCast(alen)));
2428
2415
  }
2429
2416
 
2430
- pub fn sendfile(outfd: i32, infd: i32, offset: ?*i64, count: usize) usize {
2431
- if (@hasField(SYS, "sendfile64")) {
2432
- return syscall4(
2433
- .sendfile64,
2434
- @as(usize, @bitCast(@as(isize, outfd))),
2435
- @as(usize, @bitCast(@as(isize, infd))),
2436
- @intFromPtr(offset),
2437
- count,
2438
- );
2439
- } else {
2440
- return syscall4(
2441
- .sendfile,
2442
- @as(usize, @bitCast(@as(isize, outfd))),
2443
- @as(usize, @bitCast(@as(isize, infd))),
2444
- @intFromPtr(offset),
2445
- count,
2446
- );
2447
- }
2417
+ pub fn sendfile(outfd: fd_t, infd: fd_t, offset: ?*off_t, count: usize) usize {
2418
+ return syscall4(
2419
+ if (@hasField(SYS, "sendfile64")) .sendfile64 else .sendfile,
2420
+ @as(u32, @bitCast(outfd)),
2421
+ @as(u32, @bitCast(infd)),
2422
+ @intFromPtr(offset),
2423
+ count,
2424
+ );
2448
2425
  }
2449
2426
 
2450
- pub fn socketpair(domain: u32, socket_type: u32, protocol: u32, fd: *[2]i32) usize {
2427
+ pub fn socketpair(domain: u32, socket_type: u32, protocol: u32, fd: *[2]fd_t) usize {
2451
2428
  if (native_arch == .x86) {
2452
2429
  return socketcall(SC.socketpair, &[4]usize{ domain, socket_type, protocol, @intFromPtr(fd) });
2453
2430
  }
2454
2431
  return syscall4(.socketpair, domain, socket_type, protocol, @intFromPtr(fd));
2455
2432
  }
2456
2433
 
2457
- pub fn accept(fd: i32, noalias addr: ?*sockaddr, noalias len: ?*socklen_t) usize {
2434
+ pub fn accept(fd: fd_t, noalias addr: ?*sockaddr, noalias len: ?*socklen_t) usize {
2458
2435
  if (native_arch == .x86) {
2459
- return socketcall(SC.accept, &[4]usize{ @as(usize, @bitCast(@as(isize, fd))), @intFromPtr(addr), @intFromPtr(len), 0 });
2436
+ return socketcall(SC.accept, &[4]usize{ @as(u32, @bitCast(fd)), @intFromPtr(addr), @intFromPtr(len), 0 });
2460
2437
  }
2461
2438
  return accept4(fd, addr, len, 0);
2462
2439
  }
2463
2440
 
2464
- pub fn accept4(fd: i32, noalias addr: ?*sockaddr, noalias len: ?*socklen_t, flags: u32) usize {
2441
+ pub fn accept4(fd: fd_t, noalias addr: ?*sockaddr, noalias len: ?*socklen_t, flags: u32) usize {
2465
2442
  if (native_arch == .x86) {
2466
- return socketcall(SC.accept4, &[4]usize{ @as(usize, @bitCast(@as(isize, fd))), @intFromPtr(addr), @intFromPtr(len), flags });
2443
+ return socketcall(SC.accept4, &[4]usize{ @as(u32, @bitCast(fd)), @intFromPtr(addr), @intFromPtr(len), flags });
2467
2444
  }
2468
- return syscall4(.accept4, @as(usize, @bitCast(@as(isize, fd))), @intFromPtr(addr), @intFromPtr(len), flags);
2445
+ return syscall4(.accept4, @as(u32, @bitCast(fd)), @intFromPtr(addr), @intFromPtr(len), flags);
2469
2446
  }
2470
2447
 
2471
- pub fn statx(dirfd: i32, path: [*:0]const u8, flags: u32, mask: STATX, statx_buf: *Statx) usize {
2448
+ pub fn statx(dirfd: fd_t, path: [*:0]const u8, flags: u32, mask: STATX, statx_buf: *Statx) usize {
2472
2449
  return syscall5(
2473
2450
  .statx,
2474
- @as(usize, @bitCast(@as(isize, dirfd))),
2451
+ @as(u32, @bitCast(dirfd)),
2475
2452
  @intFromPtr(path),
2476
2453
  flags,
2477
2454
  @as(u32, @bitCast(mask)),
@@ -2488,7 +2465,7 @@ pub fn llistxattr(path: [*:0]const u8, list: [*]u8, size: usize) usize {
2488
2465
  }
2489
2466
 
2490
2467
  pub fn flistxattr(fd: fd_t, list: [*]u8, size: usize) usize {
2491
- return syscall3(.flistxattr, @as(usize, @bitCast(@as(isize, fd))), @intFromPtr(list), size);
2468
+ return syscall3(.flistxattr, @as(u32, @bitCast(fd)), @intFromPtr(list), size);
2492
2469
  }
2493
2470
 
2494
2471
  pub fn getxattr(path: [*:0]const u8, name: [*:0]const u8, value: [*]u8, size: usize) usize {
@@ -2500,7 +2477,7 @@ pub fn lgetxattr(path: [*:0]const u8, name: [*:0]const u8, value: [*]u8, size: u
2500
2477
  }
2501
2478
 
2502
2479
  pub fn fgetxattr(fd: fd_t, name: [*:0]const u8, value: [*]u8, size: usize) usize {
2503
- return syscall4(.fgetxattr, @as(usize, @bitCast(@as(isize, fd))), @intFromPtr(name), @intFromPtr(value), size);
2480
+ return syscall4(.fgetxattr, @as(u32, @bitCast(fd)), @intFromPtr(name), @intFromPtr(value), size);
2504
2481
  }
2505
2482
 
2506
2483
  pub fn setxattr(path: [*:0]const u8, name: [*:0]const u8, value: [*]const u8, size: usize, flags: usize) usize {
@@ -2512,7 +2489,7 @@ pub fn lsetxattr(path: [*:0]const u8, name: [*:0]const u8, value: [*]const u8, s
2512
2489
  }
2513
2490
 
2514
2491
  pub fn fsetxattr(fd: fd_t, name: [*:0]const u8, value: [*]const u8, size: usize, flags: usize) usize {
2515
- return syscall5(.fsetxattr, @as(usize, @bitCast(@as(isize, fd))), @intFromPtr(name), @intFromPtr(value), size, flags);
2492
+ return syscall5(.fsetxattr, @as(u32, @bitCast(fd)), @intFromPtr(name), @intFromPtr(value), size, flags);
2516
2493
  }
2517
2494
 
2518
2495
  pub fn removexattr(path: [*:0]const u8, name: [*:0]const u8) usize {
@@ -2523,8 +2500,8 @@ pub fn lremovexattr(path: [*:0]const u8, name: [*:0]const u8) usize {
2523
2500
  return syscall2(.lremovexattr, @intFromPtr(path), @intFromPtr(name));
2524
2501
  }
2525
2502
 
2526
- pub fn fremovexattr(fd: usize, name: [*:0]const u8) usize {
2527
- return syscall2(.fremovexattr, fd, @intFromPtr(name));
2503
+ pub fn fremovexattr(fd: fd_t, name: [*:0]const u8) usize {
2504
+ return syscall2(.fremovexattr, @as(u32, @bitCast(fd)), @intFromPtr(name));
2528
2505
  }
2529
2506
 
2530
2507
  pub const sched_param = extern struct {
@@ -2554,27 +2531,27 @@ pub const SCHED = packed struct(i32) {
2554
2531
  };
2555
2532
 
2556
2533
  pub fn sched_setparam(pid: pid_t, param: *const sched_param) usize {
2557
- return syscall2(.sched_setparam, @as(usize, @bitCast(@as(isize, pid))), @intFromPtr(param));
2534
+ return syscall2(.sched_setparam, @as(u32, @bitCast(pid)), @intFromPtr(param));
2558
2535
  }
2559
2536
 
2560
2537
  pub fn sched_getparam(pid: pid_t, param: *sched_param) usize {
2561
- return syscall2(.sched_getparam, @as(usize, @bitCast(@as(isize, pid))), @intFromPtr(param));
2538
+ return syscall2(.sched_getparam, @as(u32, @bitCast(pid)), @intFromPtr(param));
2562
2539
  }
2563
2540
 
2564
2541
  pub fn sched_setscheduler(pid: pid_t, policy: SCHED, param: *const sched_param) usize {
2565
- return syscall3(.sched_setscheduler, @as(usize, @bitCast(@as(isize, pid))), @intCast(@as(u32, @bitCast(policy))), @intFromPtr(param));
2542
+ return syscall3(.sched_setscheduler, @as(u32, @bitCast(pid)), @as(u32, @bitCast(policy)), @intFromPtr(param));
2566
2543
  }
2567
2544
 
2568
2545
  pub fn sched_getscheduler(pid: pid_t) usize {
2569
- return syscall1(.sched_getscheduler, @as(usize, @bitCast(@as(isize, pid))));
2546
+ return syscall1(.sched_getscheduler, @as(u32, @bitCast(pid)));
2570
2547
  }
2571
2548
 
2572
2549
  pub fn sched_get_priority_max(policy: SCHED) usize {
2573
- return syscall1(.sched_get_priority_max, @intCast(@as(u32, @bitCast(policy))));
2550
+ return syscall1(.sched_get_priority_max, @as(u32, @bitCast(policy)));
2574
2551
  }
2575
2552
 
2576
2553
  pub fn sched_get_priority_min(policy: SCHED) usize {
2577
- return syscall1(.sched_get_priority_min, @intCast(@as(u32, @bitCast(policy))));
2554
+ return syscall1(.sched_get_priority_min, @as(u32, @bitCast(policy)));
2578
2555
  }
2579
2556
 
2580
2557
  pub fn getcpu(cpu: ?*usize, node: ?*usize) usize {
@@ -2593,24 +2570,24 @@ pub const sched_attr = extern struct {
2593
2570
  period: u64 = 0,
2594
2571
  };
2595
2572
 
2596
- pub fn sched_setattr(pid: pid_t, attr: *const sched_attr, flags: usize) usize {
2597
- return syscall3(.sched_setattr, @as(usize, @bitCast(@as(isize, pid))), @intFromPtr(attr), flags);
2573
+ pub fn sched_setattr(pid: pid_t, attr: *const sched_attr, flags: u32) usize {
2574
+ return syscall3(.sched_setattr, @as(u32, @bitCast(pid)), @intFromPtr(attr), flags);
2598
2575
  }
2599
2576
 
2600
- pub fn sched_getattr(pid: pid_t, attr: *sched_attr, size: usize, flags: usize) usize {
2601
- return syscall4(.sched_getattr, @as(usize, @bitCast(@as(isize, pid))), @intFromPtr(attr), size, flags);
2577
+ pub fn sched_getattr(pid: pid_t, attr: *sched_attr, size: u32, flags: u32) usize {
2578
+ return syscall4(.sched_getattr, @as(u32, @bitCast(pid)), @intFromPtr(attr), size, flags);
2602
2579
  }
2603
2580
 
2604
2581
  pub fn sched_rr_get_interval(pid: pid_t, tp: *timespec) usize {
2605
- return syscall2(.sched_rr_get_interval, @as(usize, @bitCast(@as(isize, pid))), @intFromPtr(tp));
2582
+ return syscall2(.sched_rr_get_interval, @as(u32, @bitCast(pid)), @intFromPtr(tp));
2606
2583
  }
2607
2584
 
2608
2585
  pub fn sched_yield() usize {
2609
2586
  return syscall0(.sched_yield);
2610
2587
  }
2611
2588
 
2612
- pub fn sched_getaffinity(pid: pid_t, size: usize, set: *cpu_set_t) usize {
2613
- const rc = syscall3(.sched_getaffinity, @as(usize, @bitCast(@as(isize, pid))), size, @intFromPtr(set));
2589
+ pub fn sched_getaffinity(pid: pid_t, size: u32, set: *cpu_set_t) usize {
2590
+ const rc = syscall3(.sched_getaffinity, @as(u32, @bitCast(pid)), size, @intFromPtr(set));
2614
2591
  if (@as(isize, @bitCast(rc)) < 0) return rc;
2615
2592
  if (rc < size) @memset(@as([*]u8, @ptrCast(set))[rc..size], 0);
2616
2593
  return 0;
@@ -2618,7 +2595,7 @@ pub fn sched_getaffinity(pid: pid_t, size: usize, set: *cpu_set_t) usize {
2618
2595
 
2619
2596
  pub fn sched_setaffinity(pid: pid_t, set: *const cpu_set_t) !void {
2620
2597
  const size = @sizeOf(cpu_set_t);
2621
- const rc = syscall3(.sched_setaffinity, @as(usize, @bitCast(@as(isize, pid))), size, @intFromPtr(set));
2598
+ const rc = syscall3(.sched_setaffinity, @as(u32, @bitCast(pid)), size, @intFromPtr(set));
2622
2599
 
2623
2600
  switch (errno(rc)) {
2624
2601
  .SUCCESS => return,
@@ -2630,25 +2607,25 @@ pub fn epoll_create() usize {
2630
2607
  return epoll_create1(0);
2631
2608
  }
2632
2609
 
2633
- pub fn epoll_create1(flags: usize) usize {
2610
+ pub fn epoll_create1(flags: u32) usize {
2634
2611
  return syscall1(.epoll_create1, flags);
2635
2612
  }
2636
2613
 
2637
- pub fn epoll_ctl(epoll_fd: i32, op: u32, fd: i32, ev: ?*epoll_event) usize {
2638
- return syscall4(.epoll_ctl, @as(usize, @bitCast(@as(isize, epoll_fd))), @as(usize, @intCast(op)), @as(usize, @bitCast(@as(isize, fd))), @intFromPtr(ev));
2614
+ pub fn epoll_ctl(epoll_fd: fd_t, op: u32, fd: fd_t, ev: ?*epoll_event) usize {
2615
+ return syscall4(.epoll_ctl, @as(u32, @bitCast(epoll_fd)), op, @as(u32, @bitCast(fd)), @intFromPtr(ev));
2639
2616
  }
2640
2617
 
2641
- pub fn epoll_wait(epoll_fd: i32, events: [*]epoll_event, maxevents: u32, timeout: i32) usize {
2618
+ pub fn epoll_wait(epoll_fd: fd_t, events: [*]epoll_event, maxevents: u32, timeout: i32) usize {
2642
2619
  return epoll_pwait(epoll_fd, events, maxevents, timeout, null);
2643
2620
  }
2644
2621
 
2645
- pub fn epoll_pwait(epoll_fd: i32, events: [*]epoll_event, maxevents: u32, timeout: i32, sigmask: ?*const sigset_t) usize {
2622
+ pub fn epoll_pwait(epoll_fd: fd_t, events: [*]epoll_event, maxevents: u32, timeout: i32, sigmask: ?*const sigset_t) usize {
2646
2623
  return syscall6(
2647
2624
  .epoll_pwait,
2648
- @as(usize, @bitCast(@as(isize, epoll_fd))),
2625
+ @as(u32, @bitCast(epoll_fd)),
2649
2626
  @intFromPtr(events),
2650
- @as(usize, @intCast(maxevents)),
2651
- @as(usize, @bitCast(@as(isize, timeout))),
2627
+ maxevents,
2628
+ @as(u32, @bitCast(timeout)),
2652
2629
  @intFromPtr(sigmask),
2653
2630
  NSIG / 8,
2654
2631
  );
@@ -2671,18 +2648,18 @@ pub const itimerspec = extern struct {
2671
2648
  it_value: timespec,
2672
2649
  };
2673
2650
 
2674
- pub fn timerfd_gettime(fd: i32, curr_value: *itimerspec) usize {
2651
+ pub fn timerfd_gettime(fd: fd_t, curr_value: *itimerspec) usize {
2675
2652
  return syscall2(
2676
2653
  if (@hasField(SYS, "timerfd_gettime") and native_arch != .hexagon) .timerfd_gettime else .timerfd_gettime64,
2677
- @bitCast(@as(isize, fd)),
2654
+ @as(u32, @bitCast(fd)),
2678
2655
  @intFromPtr(curr_value),
2679
2656
  );
2680
2657
  }
2681
2658
 
2682
- pub fn timerfd_settime(fd: i32, flags: TFD.TIMER, new_value: *const itimerspec, old_value: ?*itimerspec) usize {
2659
+ pub fn timerfd_settime(fd: fd_t, flags: TFD.TIMER, new_value: *const itimerspec, old_value: ?*itimerspec) usize {
2683
2660
  return syscall4(
2684
2661
  if (@hasField(SYS, "timerfd_settime") and native_arch != .hexagon) .timerfd_settime else .timerfd_settime64,
2685
- @bitCast(@as(isize, fd)),
2662
+ @as(u32, @bitCast(fd)),
2686
2663
  @as(u32, @bitCast(flags)),
2687
2664
  @intFromPtr(new_value),
2688
2665
  @intFromPtr(old_value),
@@ -2697,11 +2674,11 @@ pub const ITIMER = enum(i32) {
2697
2674
  };
2698
2675
 
2699
2676
  pub fn getitimer(which: i32, curr_value: *itimerspec) usize {
2700
- return syscall2(.getitimer, @as(usize, @bitCast(@as(isize, which))), @intFromPtr(curr_value));
2677
+ return syscall2(.getitimer, @as(u32, @bitCast(which)), @intFromPtr(curr_value));
2701
2678
  }
2702
2679
 
2703
2680
  pub fn setitimer(which: i32, new_value: *const itimerspec, old_value: ?*itimerspec) usize {
2704
- return syscall3(.setitimer, @as(usize, @bitCast(@as(isize, which))), @intFromPtr(new_value), @intFromPtr(old_value));
2681
+ return syscall3(.setitimer, @as(u32, @bitCast(which)), @intFromPtr(new_value), @intFromPtr(old_value));
2705
2682
  }
2706
2683
 
2707
2684
  pub fn unshare(flags: usize) usize {
@@ -2709,7 +2686,7 @@ pub fn unshare(flags: usize) usize {
2709
2686
  }
2710
2687
 
2711
2688
  pub fn setns(fd: fd_t, flags: u32) usize {
2712
- return syscall2(.setns, @as(usize, @bitCast(@as(isize, fd))), flags);
2689
+ return syscall2(.setns, @as(u32, @bitCast(fd)), flags);
2713
2690
  }
2714
2691
 
2715
2692
  pub fn capget(hdrp: *cap_user_header_t, datap: *cap_user_data_t) usize {
@@ -2732,12 +2709,12 @@ pub fn io_uring_setup(entries: u32, p: *io_uring_params) usize {
2732
2709
  return syscall2(.io_uring_setup, entries, @intFromPtr(p));
2733
2710
  }
2734
2711
 
2735
- pub fn io_uring_enter(fd: i32, to_submit: u32, min_complete: u32, flags: u32, sig: ?*sigset_t) usize {
2736
- return syscall6(.io_uring_enter, @as(usize, @bitCast(@as(isize, fd))), to_submit, min_complete, flags, @intFromPtr(sig), NSIG / 8);
2712
+ pub fn io_uring_enter(fd: fd_t, to_submit: u32, min_complete: u32, flags: u32, sig: ?*sigset_t) usize {
2713
+ return syscall6(.io_uring_enter, @as(u32, @bitCast(fd)), to_submit, min_complete, flags, @intFromPtr(sig), NSIG / 8);
2737
2714
  }
2738
2715
 
2739
- pub fn io_uring_register(fd: i32, opcode: IORING_REGISTER, arg: ?*const anyopaque, nr_args: u32) usize {
2740
- return syscall4(.io_uring_register, @as(usize, @bitCast(@as(isize, fd))), @intFromEnum(opcode), @intFromPtr(arg), nr_args);
2716
+ pub fn io_uring_register(fd: fd_t, opcode: IORING_REGISTER, arg: ?*const anyopaque, nr_args: u32) usize {
2717
+ return syscall4(.io_uring_register, @as(u32, @bitCast(fd)), @intFromEnum(opcode), @intFromPtr(arg), nr_args);
2741
2718
  }
2742
2719
 
2743
2720
  pub fn memfd_create(name: [*:0]const u8, flags: u32) usize {
@@ -2745,43 +2722,43 @@ pub fn memfd_create(name: [*:0]const u8, flags: u32) usize {
2745
2722
  }
2746
2723
 
2747
2724
  pub fn getrusage(who: i32, usage: *rusage) usize {
2748
- return syscall2(.getrusage, @as(usize, @bitCast(@as(isize, who))), @intFromPtr(usage));
2725
+ return syscall2(.getrusage, @as(u32, @bitCast(who)), @intFromPtr(usage));
2749
2726
  }
2750
2727
 
2751
2728
  pub fn tcgetattr(fd: fd_t, termios_p: *termios) usize {
2752
- return syscall3(.ioctl, @as(usize, @bitCast(@as(isize, fd))), T.CGETS, @intFromPtr(termios_p));
2729
+ return syscall3(.ioctl, @as(u32, @bitCast(fd)), T.CGETS, @intFromPtr(termios_p));
2753
2730
  }
2754
2731
 
2755
2732
  pub fn tcsetattr(fd: fd_t, optional_action: TCSA, termios_p: *const termios) usize {
2756
- return syscall3(.ioctl, @as(usize, @bitCast(@as(isize, fd))), T.CSETS + @intFromEnum(optional_action), @intFromPtr(termios_p));
2733
+ return syscall3(.ioctl, @as(u32, @bitCast(fd)), T.CSETS + @intFromEnum(optional_action), @intFromPtr(termios_p));
2757
2734
  }
2758
2735
 
2759
2736
  pub fn tcgetpgrp(fd: fd_t, pgrp: *pid_t) usize {
2760
- return syscall3(.ioctl, @as(usize, @bitCast(@as(isize, fd))), T.IOCGPGRP, @intFromPtr(pgrp));
2737
+ return syscall3(.ioctl, @as(u32, @bitCast(fd)), T.IOCGPGRP, @intFromPtr(pgrp));
2761
2738
  }
2762
2739
 
2763
2740
  pub fn tcsetpgrp(fd: fd_t, pgrp: *const pid_t) usize {
2764
- return syscall3(.ioctl, @as(usize, @bitCast(@as(isize, fd))), T.IOCSPGRP, @intFromPtr(pgrp));
2741
+ return syscall3(.ioctl, @as(u32, @bitCast(fd)), T.IOCSPGRP, @intFromPtr(pgrp));
2765
2742
  }
2766
2743
 
2767
2744
  pub fn tcdrain(fd: fd_t) usize {
2768
- return syscall3(.ioctl, @as(usize, @bitCast(@as(isize, fd))), T.CSBRK, 1);
2745
+ return syscall3(.ioctl, @as(u32, @bitCast(fd)), T.CSBRK, 1);
2769
2746
  }
2770
2747
 
2771
2748
  pub fn ioctl(fd: fd_t, request: u32, arg: usize) usize {
2772
- return syscall3(.ioctl, @as(usize, @bitCast(@as(isize, fd))), request, arg);
2749
+ return syscall3(.ioctl, @as(u32, @bitCast(fd)), request, arg);
2773
2750
  }
2774
2751
 
2775
2752
  pub fn signalfd(fd: fd_t, mask: *const sigset_t, flags: u32) usize {
2776
- return syscall4(.signalfd4, @as(usize, @bitCast(@as(isize, fd))), @intFromPtr(mask), NSIG / 8, flags);
2753
+ return syscall4(.signalfd4, @as(u32, @bitCast(fd)), @intFromPtr(mask), NSIG / 8, flags);
2777
2754
  }
2778
2755
 
2779
- pub fn copy_file_range(fd_in: fd_t, off_in: ?*i64, fd_out: fd_t, off_out: ?*i64, len: usize, flags: u32) usize {
2756
+ pub fn copy_file_range(fd_in: fd_t, off_in: ?*off_t, fd_out: fd_t, off_out: ?*off_t, len: usize, flags: u32) usize {
2780
2757
  return syscall6(
2781
2758
  .copy_file_range,
2782
- @as(usize, @bitCast(@as(isize, fd_in))),
2759
+ @as(u32, @bitCast(fd_in)),
2783
2760
  @intFromPtr(off_in),
2784
- @as(usize, @bitCast(@as(isize, fd_out))),
2761
+ @as(u32, @bitCast(fd_out)),
2785
2762
  @intFromPtr(off_out),
2786
2763
  len,
2787
2764
  flags,
@@ -2797,19 +2774,19 @@ pub fn sync() void {
2797
2774
  }
2798
2775
 
2799
2776
  pub fn syncfs(fd: fd_t) usize {
2800
- return syscall1(.syncfs, @as(usize, @bitCast(@as(isize, fd))));
2777
+ return syscall1(.syncfs, @as(u32, @bitCast(fd)));
2801
2778
  }
2802
2779
 
2803
2780
  pub fn fsync(fd: fd_t) usize {
2804
- return syscall1(.fsync, @as(usize, @bitCast(@as(isize, fd))));
2781
+ return syscall1(.fsync, @as(u32, @bitCast(fd)));
2805
2782
  }
2806
2783
 
2807
2784
  pub fn fdatasync(fd: fd_t) usize {
2808
- return syscall1(.fdatasync, @as(usize, @bitCast(@as(isize, fd))));
2785
+ return syscall1(.fdatasync, @as(u32, @bitCast(fd)));
2809
2786
  }
2810
2787
 
2811
2788
  pub fn prctl(option: i32, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize {
2812
- return syscall5(.prctl, @as(usize, @bitCast(@as(isize, option))), arg2, arg3, arg4, arg5);
2789
+ return syscall5(.prctl, @as(u32, @bitCast(option)), arg2, arg3, arg4, arg5);
2813
2790
  }
2814
2791
 
2815
2792
  pub fn getrlimit(resource: rlimit_resource, rlim: *rlimit) usize {
@@ -2825,8 +2802,8 @@ pub fn setrlimit(resource: rlimit_resource, rlim: *const rlimit) usize {
2825
2802
  pub fn prlimit(pid: pid_t, resource: rlimit_resource, new_limit: ?*const rlimit, old_limit: ?*rlimit) usize {
2826
2803
  return syscall4(
2827
2804
  .prlimit64,
2828
- @as(usize, @bitCast(@as(isize, pid))),
2829
- @as(usize, @bitCast(@as(isize, @intFromEnum(resource)))),
2805
+ @as(u32, @bitCast(pid)),
2806
+ @as(u32, @bitCast(@as(i32, @intFromEnum(resource)))),
2830
2807
  @intFromPtr(new_limit),
2831
2808
  @intFromPtr(old_limit),
2832
2809
  );
@@ -2841,14 +2818,14 @@ pub fn madvise(address: [*]u8, len: usize, advice: u32) usize {
2841
2818
  }
2842
2819
 
2843
2820
  pub fn pidfd_open(pid: pid_t, flags: u32) usize {
2844
- return syscall2(.pidfd_open, @as(usize, @bitCast(@as(isize, pid))), flags);
2821
+ return syscall2(.pidfd_open, @as(u32, @bitCast(pid)), flags);
2845
2822
  }
2846
2823
 
2847
2824
  pub fn pidfd_getfd(pidfd: fd_t, targetfd: fd_t, flags: u32) usize {
2848
2825
  return syscall3(
2849
2826
  .pidfd_getfd,
2850
- @as(usize, @bitCast(@as(isize, pidfd))),
2851
- @as(usize, @bitCast(@as(isize, targetfd))),
2827
+ @as(u32, @bitCast(pidfd)),
2828
+ @as(u32, @bitCast(targetfd)),
2852
2829
  flags,
2853
2830
  );
2854
2831
  }
@@ -2856,7 +2833,7 @@ pub fn pidfd_getfd(pidfd: fd_t, targetfd: fd_t, flags: u32) usize {
2856
2833
  pub fn pidfd_send_signal(pidfd: fd_t, sig: SIG, info: ?*siginfo_t, flags: u32) usize {
2857
2834
  return syscall4(
2858
2835
  .pidfd_send_signal,
2859
- @as(usize, @bitCast(@as(isize, pidfd))),
2836
+ @as(u32, @bitCast(pidfd)),
2860
2837
  @intFromEnum(sig),
2861
2838
  @intFromPtr(info),
2862
2839
  flags,
@@ -2866,7 +2843,7 @@ pub fn pidfd_send_signal(pidfd: fd_t, sig: SIG, info: ?*siginfo_t, flags: u32) u
2866
2843
  pub fn process_vm_readv(pid: pid_t, local: []const iovec, remote: []const iovec_const, flags: usize) usize {
2867
2844
  return syscall6(
2868
2845
  .process_vm_readv,
2869
- @as(usize, @bitCast(@as(isize, pid))),
2846
+ @as(u32, @bitCast(pid)),
2870
2847
  @intFromPtr(local.ptr),
2871
2848
  local.len,
2872
2849
  @intFromPtr(remote.ptr),
@@ -2878,7 +2855,7 @@ pub fn process_vm_readv(pid: pid_t, local: []const iovec, remote: []const iovec_
2878
2855
  pub fn process_vm_writev(pid: pid_t, local: []const iovec_const, remote: []const iovec_const, flags: usize) usize {
2879
2856
  return syscall6(
2880
2857
  .process_vm_writev,
2881
- @as(usize, @bitCast(@as(isize, pid))),
2858
+ @as(u32, @bitCast(pid)),
2882
2859
  @intFromPtr(local.ptr),
2883
2860
  local.len,
2884
2861
  @intFromPtr(remote.ptr),
@@ -2888,50 +2865,43 @@ pub fn process_vm_writev(pid: pid_t, local: []const iovec_const, remote: []const
2888
2865
  }
2889
2866
 
2890
2867
  pub fn fadvise(fd: fd_t, offset: i64, len: i64, advice: usize) usize {
2891
- if (comptime native_arch.isArm() or native_arch == .hexagon or native_arch.isPowerPC32()) {
2892
- // These architectures reorder the arguments so that a register is not skipped to align the
2893
- // register number that `offset` is passed in.
2868
+ if (native_arch.isMIPS32()) {
2869
+ // MIPS O32 weirdly differs from the other architectures that require
2870
+ // aligned register pairs for this specific syscall.
2894
2871
 
2895
2872
  const offset_halves = splitValue64(offset);
2896
2873
  const length_halves = splitValue64(len);
2897
2874
 
2898
- return syscall6(
2899
- .fadvise64_64,
2900
- @as(usize, @bitCast(@as(isize, fd))),
2901
- advice,
2875
+ return syscall7(
2876
+ .fadvise64,
2877
+ @as(u32, @bitCast(fd)),
2878
+ 0,
2902
2879
  offset_halves[0],
2903
2880
  offset_halves[1],
2904
2881
  length_halves[0],
2905
2882
  length_halves[1],
2883
+ advice,
2906
2884
  );
2907
- } else if (native_arch.isMIPS32()) {
2908
- // MIPS O32 does not deal with the register alignment issue, so pass a dummy value.
2909
-
2885
+ } else if (require_aligned_register_pair) {
2910
2886
  const offset_halves = splitValue64(offset);
2911
2887
  const length_halves = splitValue64(len);
2912
2888
 
2913
- return syscall7(
2914
- .fadvise64,
2915
- @as(usize, @bitCast(@as(isize, fd))),
2916
- 0,
2889
+ return syscall6(
2890
+ .fadvise64_64,
2891
+ @as(u32, @bitCast(fd)),
2892
+ advice,
2917
2893
  offset_halves[0],
2918
2894
  offset_halves[1],
2919
2895
  length_halves[0],
2920
2896
  length_halves[1],
2921
- advice,
2922
2897
  );
2923
- } else if (comptime usize_bits < 64) {
2924
- // Other 32-bit architectures do not require register alignment.
2925
-
2898
+ } else if (@sizeOf(syscall_arg_t) < @sizeOf(u64)) {
2926
2899
  const offset_halves = splitValue64(offset);
2927
2900
  const length_halves = splitValue64(len);
2928
2901
 
2929
2902
  return syscall6(
2930
- switch (builtin.abi) {
2931
- .gnuabin32, .gnux32, .muslabin32, .muslx32 => .fadvise64,
2932
- else => .fadvise64_64,
2933
- },
2934
- @as(usize, @bitCast(@as(isize, fd))),
2903
+ .fadvise64_64,
2904
+ @as(u32, @bitCast(fd)),
2935
2905
  offset_halves[0],
2936
2906
  offset_halves[1],
2937
2907
  length_halves[0],
@@ -2939,14 +2909,11 @@ pub fn fadvise(fd: fd_t, offset: i64, len: i64, advice: usize) usize {
2939
2909
  advice,
2940
2910
  );
2941
2911
  } else {
2942
- // On 64-bit architectures, fadvise64_64 and fadvise64 are the same. Generally, older ports
2943
- // call it fadvise64 (x86, PowerPC, etc), while newer ports call it fadvise64_64 (RISC-V,
2944
- // LoongArch, etc). SPARC is the odd one out because it has both.
2945
2912
  return syscall4(
2946
- if (@hasField(SYS, "fadvise64_64")) .fadvise64_64 else .fadvise64,
2947
- @as(usize, @bitCast(@as(isize, fd))),
2948
- @as(usize, @bitCast(offset)),
2949
- @as(usize, @bitCast(len)),
2913
+ .fadvise64,
2914
+ @as(u32, @bitCast(fd)),
2915
+ @as(u64, @bitCast(offset)),
2916
+ @as(u64, @bitCast(len)),
2950
2917
  advice,
2951
2918
  );
2952
2919
  }
@@ -2962,9 +2929,9 @@ pub fn perf_event_open(
2962
2929
  return syscall5(
2963
2930
  .perf_event_open,
2964
2931
  @intFromPtr(attr),
2965
- @as(usize, @bitCast(@as(isize, pid))),
2966
- @as(usize, @bitCast(@as(isize, cpu))),
2967
- @as(usize, @bitCast(@as(isize, group_fd))),
2932
+ @as(u32, @bitCast(pid)),
2933
+ @as(u32, @bitCast(cpu)),
2934
+ @as(u32, @bitCast(group_fd)),
2968
2935
  flags,
2969
2936
  );
2970
2937
  }
@@ -2983,7 +2950,7 @@ pub fn ptrace(
2983
2950
  return syscall5(
2984
2951
  .ptrace,
2985
2952
  req,
2986
- @as(usize, @bitCast(@as(isize, pid))),
2953
+ @as(u32, @bitCast(pid)),
2987
2954
  addr,
2988
2955
  data,
2989
2956
  addr2,
@@ -3005,17 +2972,27 @@ pub fn cachestat(
3005
2972
  ) usize {
3006
2973
  return syscall4(
3007
2974
  .cachestat,
3008
- @as(usize, @bitCast(@as(isize, fd))),
2975
+ @as(u32, @bitCast(fd)),
3009
2976
  @intFromPtr(cstat_range),
3010
2977
  @intFromPtr(cstat),
3011
2978
  flags,
3012
2979
  );
3013
2980
  }
3014
2981
 
3015
- pub fn map_shadow_stack(addr: u64, size: u64, flags: u32) usize {
2982
+ pub fn map_shadow_stack(addr: usize, size: usize, flags: u32) usize {
3016
2983
  return syscall3(.map_shadow_stack, addr, size, flags);
3017
2984
  }
3018
2985
 
2986
+ pub fn tee(src: fd_t, dest: fd_t, len: usize, flags: u32) usize {
2987
+ return syscall4(
2988
+ .tee,
2989
+ @as(u32, @bitCast(src)),
2990
+ @as(u32, @bitCast(dest)),
2991
+ len,
2992
+ flags,
2993
+ );
2994
+ }
2995
+
3019
2996
  pub const Sysinfo = switch (native_abi) {
3020
2997
  .gnux32, .muslx32 => extern struct {
3021
2998
  /// Seconds since boot
@@ -3676,13 +3653,6 @@ pub const E = switch (native_arch) {
3676
3653
  },
3677
3654
  };
3678
3655
 
3679
- pub const pid_t = i32;
3680
- pub const fd_t = i32;
3681
- pub const socket_t = i32;
3682
- pub const uid_t = u32;
3683
- pub const gid_t = u32;
3684
- pub const clock_t = isize;
3685
-
3686
3656
  pub const NAME_MAX = 255;
3687
3657
  pub const PATH_MAX = 4096;
3688
3658
  pub const IOV_MAX = 1024;
@@ -6161,7 +6131,7 @@ pub const sockaddr = extern struct {
6161
6131
  flags: u8,
6162
6132
 
6163
6133
  /// The total size of this structure should be exactly the same as that of struct sockaddr.
6164
- zero: [3]u8 = [_]u8{0} ** 3,
6134
+ zero: [3]u8 = @splat(0),
6165
6135
  comptime {
6166
6136
  std.debug.assert(@sizeOf(vm) == @sizeOf(sockaddr));
6167
6137
  }
@@ -6323,7 +6293,7 @@ pub const dl_phdr_info = extern struct {
6323
6293
 
6324
6294
  pub const CPU_SETSIZE = 128;
6325
6295
  pub const cpu_set_t = [CPU_SETSIZE / @sizeOf(usize)]usize;
6326
- pub const cpu_count_t = std.meta.Int(.unsigned, std.math.log2(CPU_SETSIZE * 8));
6296
+ pub const cpu_count_t = @Int(.unsigned, std.math.log2(CPU_SETSIZE * 8));
6327
6297
 
6328
6298
  pub fn CPU_COUNT(set: cpu_set_t) cpu_count_t {
6329
6299
  var sum: cpu_count_t = 0;
@@ -7507,7 +7477,7 @@ pub const rusage = extern struct {
7507
7477
  nsignals: isize,
7508
7478
  nvcsw: isize,
7509
7479
  nivcsw: isize,
7510
- __reserved: [16]isize = [1]isize{0} ** 16,
7480
+ __reserved: [16]isize = @splat(0),
7511
7481
 
7512
7482
  pub const SELF = 0;
7513
7483
  pub const CHILDREN = -1;
@@ -10174,7 +10144,3 @@ pub const cmsghdr = extern struct {
10174
10144
  level: i32,
10175
10145
  type: i32,
10176
10146
  };
10177
-
10178
- inline fn fd_to_usize(fd: fd_t) usize {
10179
- return @as(usize, @bitCast(@as(isize, fd)));
10180
- }