@zigc/lib 0.17.0-dev.56 → 0.17.0-dev.633

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 (1960) hide show
  1. package/c/fcntl.zig +5 -0
  2. package/c/inttypes.zig +0 -10
  3. package/c/math.zig +25 -96
  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 +28 -26
  11. package/c/wchar.zig +10 -0
  12. package/c.zig +2 -2
  13. package/{std/Build → compiler/Maker}/Fuzz.zig +177 -89
  14. package/compiler/Maker/Graph.zig +85 -0
  15. package/compiler/Maker/PkgConfig.zig +121 -0
  16. package/compiler/Maker/ScannedConfig.zig +370 -0
  17. package/compiler/Maker/Step/CheckFile.zig +63 -0
  18. package/compiler/Maker/Step/Compile.zig +1390 -0
  19. package/compiler/Maker/Step/ConfigHeader.zig +610 -0
  20. package/compiler/Maker/Step/FindProgram.zig +120 -0
  21. package/compiler/Maker/Step/Fmt.zig +65 -0
  22. package/compiler/Maker/Step/InstallArtifact.zig +141 -0
  23. package/compiler/Maker/Step/InstallDir.zig +99 -0
  24. package/compiler/Maker/Step/InstallFile.zig +26 -0
  25. package/compiler/Maker/Step/ObjCopy.zig +173 -0
  26. package/compiler/Maker/Step/Options.zig +104 -0
  27. package/compiler/Maker/Step/Run.zig +2375 -0
  28. package/compiler/Maker/Step/TranslateC.zig +152 -0
  29. package/compiler/Maker/Step/UpdateSourceFiles.zig +89 -0
  30. package/compiler/Maker/Step/WriteFile.zig +294 -0
  31. package/compiler/Maker/Step.zig +894 -0
  32. package/{std/Build → compiler/Maker}/Watch/FsEvents.zig +33 -24
  33. package/{std/Build → compiler/Maker}/Watch.zig +89 -68
  34. package/{std/Build → compiler/Maker}/WebServer.zig +145 -118
  35. package/compiler/Maker.zig +2061 -0
  36. package/compiler/aro/aro/CodeGen.zig +7 -8
  37. package/compiler/aro/aro/Compilation.zig +17 -17
  38. package/compiler/aro/aro/Driver.zig +18 -16
  39. package/compiler/aro/aro/Parser.zig +20 -15
  40. package/compiler/aro/aro/Pragma.zig +3 -2
  41. package/compiler/aro/aro/Preprocessor.zig +11 -8
  42. package/compiler/aro/aro/pragmas/message.zig +3 -2
  43. package/compiler/aro/aro/text_literal.zig +3 -2
  44. package/compiler/aro/assembly_backend/x86_64.zig +4 -4
  45. package/compiler/aro/backend/Ir/x86/Renderer.zig +3 -3
  46. package/compiler/configurer.zig +1402 -0
  47. package/compiler/reduce/Walk.zig +8 -13
  48. package/compiler/resinator/compile.zig +1 -1
  49. package/compiler/resinator/cvtres.zig +4 -4
  50. package/compiler/resinator/errors.zig +7 -7
  51. package/compiler/resinator/ico.zig +4 -4
  52. package/compiler/resinator/parse.zig +2 -2
  53. package/compiler/resinator/res.zig +1 -1
  54. package/compiler/std-docs.zig +17 -38
  55. package/compiler/test_runner.zig +25 -15
  56. package/compiler/translate-c/MacroTranslator.zig +1 -1
  57. package/compiler/translate-c/Translator.zig +2 -2
  58. package/compiler/translate-c/ast.zig +16 -23
  59. package/compiler/translate-c/main.zig +1 -1
  60. package/compiler_rt/addf3.zig +1 -1
  61. package/compiler_rt/arm.zig +3 -3
  62. package/compiler_rt/atomics.zig +1 -1
  63. package/compiler_rt/comparef.zig +3 -3
  64. package/compiler_rt/cos.zig +1 -1
  65. package/compiler_rt/count0bits.zig +1 -1
  66. package/compiler_rt/divdf3.zig +2 -2
  67. package/compiler_rt/divsf3.zig +1 -1
  68. package/compiler_rt/divtf3.zig +1 -1
  69. package/compiler_rt/divxf3.zig +1 -1
  70. package/compiler_rt/extendf.zig +5 -5
  71. package/compiler_rt/fabs.zig +1 -1
  72. package/compiler_rt/float_from_int.zig +4 -5
  73. package/compiler_rt/fmax.zig +1 -1
  74. package/compiler_rt/fmin.zig +1 -1
  75. package/compiler_rt/fmod.zig +2 -2
  76. package/compiler_rt/int_from_float.zig +1 -1
  77. package/compiler_rt/limb64.zig +3 -2
  78. package/compiler_rt/mulf3.zig +2 -2
  79. package/compiler_rt/rem_pio2l.zig +1 -1
  80. package/compiler_rt/sin.zig +1 -1
  81. package/compiler_rt/sincos.zig +1 -1
  82. package/compiler_rt/ssp.zig +2 -2
  83. package/compiler_rt/tan.zig +1 -1
  84. package/compiler_rt/truncf.zig +3 -3
  85. package/compiler_rt/trunctfhf2.zig +3 -0
  86. package/compiler_rt.zig +5 -26
  87. package/docs/main.js +8 -8
  88. package/docs/wasm/Walk.zig +1 -3
  89. package/docs/wasm/html_render.zig +1 -2
  90. package/docs/wasm/markdown/Parser.zig +16 -20
  91. package/fuzzer.zig +5 -3
  92. package/include/__clang_spirv_builtins.h +12 -12
  93. package/include/__float_float.h +176 -0
  94. package/include/__float_header_macro.h +12 -0
  95. package/include/__float_infinity_nan.h +20 -0
  96. package/include/amo.h +131 -0
  97. package/include/amxavx512intrin.h +215 -1
  98. package/include/amxintrin.h +0 -2
  99. package/include/arm_acle.h +37 -27
  100. package/include/arm_neon.h +218 -82
  101. package/include/arm_sme.h +8 -8
  102. package/include/arm_sve.h +4162 -3782
  103. package/include/avx10_2_512bf16intrin.h +19 -12
  104. package/include/avx10_2_512convertintrin.h +1 -1
  105. package/include/avx10_2_512niintrin.h +31 -31
  106. package/include/avx10_2_512satcvtdsintrin.h +1 -1
  107. package/include/avx10_2bf16intrin.h +54 -45
  108. package/include/avx10_2convertintrin.h +2 -2
  109. package/include/avx10_2copyintrin.h +1 -1
  110. package/include/avx10_2niintrin.h +14 -14
  111. package/include/avx10_2satcvtdsintrin.h +2 -2
  112. package/include/avx2intrin.h +275 -377
  113. package/include/avx512bf16intrin.h +25 -16
  114. package/include/avx512bitalgintrin.h +19 -30
  115. package/include/avx512bwintrin.h +386 -505
  116. package/include/avx512cdintrin.h +42 -55
  117. package/include/avx512dqintrin.h +132 -161
  118. package/include/avx512fintrin.h +1015 -1424
  119. package/include/avx512fp16intrin.h +112 -110
  120. package/include/avx512ifmaintrin.h +32 -34
  121. package/include/avx512ifmavlintrin.h +73 -46
  122. package/include/avx512vbmi2intrin.h +43 -32
  123. package/include/avx512vbmiintrin.h +19 -27
  124. package/include/avx512vbmivlintrin.h +35 -49
  125. package/include/avx512vlbf16intrin.h +32 -22
  126. package/include/avx512vlbitalgintrin.h +37 -53
  127. package/include/avx512vlbwintrin.h +470 -573
  128. package/include/avx512vlcdintrin.h +74 -102
  129. package/include/avx512vldqintrin.h +110 -127
  130. package/include/avx512vlfp16intrin.h +130 -111
  131. package/include/avx512vlintrin.h +945 -1299
  132. package/include/avx512vlvbmi2intrin.h +78 -63
  133. package/include/avx512vlvnniintrin.h +21 -18
  134. package/include/avx512vlvp2intersectintrin.h +2 -2
  135. package/include/avx512vnniintrin.h +10 -10
  136. package/include/avx512vp2intersectintrin.h +1 -2
  137. package/include/avx512vpopcntdqintrin.h +8 -10
  138. package/include/avx512vpopcntdqvlintrin.h +17 -15
  139. package/include/avxifmaintrin.h +16 -0
  140. package/include/avxintrin.h +165 -241
  141. package/include/avxvnniint16intrin.h +118 -99
  142. package/include/avxvnniint8intrin.h +56 -32
  143. package/include/avxvnniintrin.h +16 -8
  144. package/include/cpuid.h +101 -4
  145. package/include/emmintrin.h +168 -168
  146. package/include/f16cintrin.h +23 -9
  147. package/include/float.h +16 -155
  148. package/include/fma4intrin.h +98 -96
  149. package/include/fmaintrin.h +96 -66
  150. package/include/gfniintrin.h +21 -16
  151. package/include/hexagon_types.h +23 -20
  152. package/include/hvx_hexagon_protos.h +649 -860
  153. package/include/immintrin.h +0 -12
  154. package/include/intrin.h +4 -0
  155. package/include/lasxintrin.h +113 -0
  156. package/include/llvm_libc_wrappers/assert.h +3 -5
  157. package/include/llvm_libc_wrappers/ctype.h +3 -115
  158. package/include/llvm_libc_wrappers/inttypes.h +3 -5
  159. package/include/llvm_libc_wrappers/stdio.h +10 -38
  160. package/include/llvm_libc_wrappers/stdlib.h +3 -24
  161. package/include/llvm_libc_wrappers/string.h +2 -70
  162. package/include/llvm_libc_wrappers/time.h +4 -10
  163. package/include/mmintrin.h +188 -257
  164. package/include/module.modulemap +23 -4
  165. package/include/movrs_avx10_2_512intrin.h +2 -2
  166. package/include/movrs_avx10_2intrin.h +4 -4
  167. package/include/pmmintrin.h +12 -24
  168. package/include/ptrauth.h +16 -2
  169. package/include/riscv_mips.h +34 -0
  170. package/include/riscv_nds.h +89 -0
  171. package/include/sifive_vector.h +58 -2
  172. package/include/sm4evexintrin.h +2 -2
  173. package/include/smmintrin.h +77 -59
  174. package/include/spirvintrin.h +194 -0
  175. package/include/stddefer.h +19 -0
  176. package/include/tmmintrin.h +116 -147
  177. package/include/vaesintrin.h +1 -2
  178. package/include/xmmintrin.h +44 -70
  179. package/include/xopintrin.h +20 -10
  180. package/init/build.zig +1 -3
  181. package/libc/darwin/SDKSettings.json +1 -1
  182. package/libc/darwin/libSystem.tbd +88 -87
  183. package/libc/include/aarch64-linux-any/asm/hwcap.h +1 -0
  184. package/libc/include/aarch64-linux-any/asm/unistd_64.h +1 -0
  185. package/libc/include/aarch64-netbsd-none/aarch64/armreg.h +259 -22
  186. package/libc/include/aarch64-netbsd-none/aarch64/byte_swap.h +3 -2
  187. package/libc/include/aarch64-netbsd-none/aarch64/cpu.h +26 -1
  188. package/libc/include/aarch64-netbsd-none/aarch64/lwp_private.h +3 -0
  189. package/libc/include/aarch64-netbsd-none/aarch64/pmap.h +7 -33
  190. package/libc/include/aarch64-netbsd-none/aarch64/sljit_machdep.h +1 -1
  191. package/libc/include/aarch64-netbsd-none/aarch64/vmparam.h +4 -4
  192. package/libc/include/aarch64-netbsd-none/machine/armreg.h +259 -22
  193. package/libc/include/aarch64-netbsd-none/machine/byte_swap.h +3 -2
  194. package/libc/include/aarch64-netbsd-none/machine/cpu.h +26 -1
  195. package/libc/include/aarch64-netbsd-none/machine/lwp_private.h +3 -0
  196. package/libc/include/aarch64-netbsd-none/machine/pmap.h +7 -33
  197. package/libc/include/aarch64-netbsd-none/machine/sljit_machdep.h +1 -1
  198. package/libc/include/aarch64-netbsd-none/machine/vmparam.h +4 -4
  199. package/libc/include/aarch64-openbsd-none/arm64/cpu.h +7 -1
  200. package/libc/include/aarch64-openbsd-none/arm64/intr.h +9 -1
  201. package/libc/include/aarch64-openbsd-none/machine/cpu.h +7 -1
  202. package/libc/include/aarch64-openbsd-none/machine/intr.h +9 -1
  203. package/libc/include/any-darwin-any/AvailabilityInternal.h +10 -10
  204. package/libc/include/any-darwin-any/AvailabilityVersions.h +8 -0
  205. package/libc/include/any-darwin-any/mach/host_info.h +3 -1
  206. package/libc/include/any-darwin-any/mach/mach_voucher_types.h +2 -0
  207. package/libc/include/any-darwin-any/mach/vm_statistics.h +33 -2
  208. package/libc/include/any-darwin-any/spawn.h +3 -1
  209. package/libc/include/any-darwin-any/sys/_symbol_aliasing.h +12 -0
  210. package/libc/include/any-linux-any/asm-generic/errno.h +2 -0
  211. package/libc/include/any-linux-any/asm-generic/unistd.h +4 -1
  212. package/libc/include/any-linux-any/drm/amdgpu_drm.h +20 -6
  213. package/libc/include/any-linux-any/drm/amdxdna_accel.h +8 -0
  214. package/libc/include/any-linux-any/drm/drm_fourcc.h +6 -6
  215. package/libc/include/any-linux-any/drm/panfrost_drm.h +75 -1
  216. package/libc/include/any-linux-any/drm/panthor_drm.h +154 -3
  217. package/libc/include/any-linux-any/drm/rocket_accel.h +74 -24
  218. package/libc/include/any-linux-any/drm/xe_drm.h +89 -6
  219. package/libc/include/any-linux-any/linux/android/binder.h +1 -1
  220. package/libc/include/any-linux-any/linux/bpf.h +28 -0
  221. package/libc/include/any-linux-any/linux/btrfs.h +1 -0
  222. package/libc/include/any-linux-any/linux/btrfs_tree.h +32 -2
  223. package/libc/include/any-linux-any/linux/dma-buf.h +1 -0
  224. package/libc/include/any-linux-any/linux/dpll.h +1 -0
  225. package/libc/include/any-linux-any/linux/elf.h +2 -0
  226. package/libc/include/any-linux-any/linux/ethtool.h +21 -5
  227. package/libc/include/any-linux-any/linux/fs.h +1 -0
  228. package/libc/include/any-linux-any/linux/hyperv.h +1 -1
  229. package/libc/include/any-linux-any/linux/idxd.h +134 -134
  230. package/libc/include/any-linux-any/linux/if_alg.h +1 -1
  231. package/libc/include/any-linux-any/linux/if_link.h +1 -0
  232. package/libc/include/any-linux-any/linux/input-event-codes.h +4 -0
  233. package/libc/include/any-linux-any/linux/io_uring/bpf_filter.h +68 -0
  234. package/libc/include/any-linux-any/linux/io_uring/query.h +5 -1
  235. package/libc/include/any-linux-any/linux/io_uring.h +33 -2
  236. package/libc/include/any-linux-any/linux/iommufd.h +39 -0
  237. package/libc/include/any-linux-any/linux/kfd_ioctl.h +13 -3
  238. package/libc/include/any-linux-any/linux/kfd_sysfs.h +2 -1
  239. package/libc/include/any-linux-any/linux/kvm.h +30 -6
  240. package/libc/include/any-linux-any/linux/landlock.h +22 -8
  241. package/libc/include/any-linux-any/linux/magic.h +1 -0
  242. package/libc/include/any-linux-any/linux/mempolicy.h +3 -0
  243. package/libc/include/any-linux-any/linux/mount.h +11 -2
  244. package/libc/include/any-linux-any/linux/mptcp_pm.h +1 -1
  245. package/libc/include/any-linux-any/linux/mshv.h +2 -0
  246. package/libc/include/any-linux-any/linux/netfilter_bridge.h +5 -4
  247. package/libc/include/any-linux-any/linux/netfilter_ipv4.h +4 -5
  248. package/libc/include/any-linux-any/linux/netfilter_ipv6.h +3 -4
  249. package/libc/include/any-linux-any/linux/nfs.h +1 -1
  250. package/libc/include/any-linux-any/linux/nfsd_netlink.h +1 -0
  251. package/libc/include/any-linux-any/linux/nilfs2_api.h +2 -2
  252. package/libc/include/any-linux-any/linux/nilfs2_ondisk.h +97 -66
  253. package/libc/include/any-linux-any/linux/nl80211.h +104 -3
  254. package/libc/include/any-linux-any/linux/pci.h +7 -0
  255. package/libc/include/any-linux-any/linux/pci_regs.h +65 -6
  256. package/libc/include/any-linux-any/linux/pcitest.h +1 -0
  257. package/libc/include/any-linux-any/linux/perf_event.h +24 -3
  258. package/libc/include/any-linux-any/linux/pkt_sched.h +1 -0
  259. package/libc/include/any-linux-any/linux/prctl.h +30 -0
  260. package/libc/include/any-linux-any/linux/rseq.h +62 -5
  261. package/libc/include/any-linux-any/linux/shm.h +0 -1
  262. package/libc/include/any-linux-any/linux/stddef.h +4 -0
  263. package/libc/include/any-linux-any/linux/sysctl.h +1 -2
  264. package/libc/include/any-linux-any/linux/taskstats.h +12 -1
  265. package/libc/include/any-linux-any/linux/tcp.h +23 -3
  266. package/libc/include/any-linux-any/linux/typelimits.h +8 -0
  267. package/libc/include/any-linux-any/linux/ublk_cmd.h +120 -1
  268. package/libc/include/any-linux-any/linux/v4l2-controls.h +63 -0
  269. package/libc/include/any-linux-any/linux/vbox_vmmdev_types.h +2 -2
  270. package/libc/include/any-linux-any/linux/vduse.h +80 -5
  271. package/libc/include/any-linux-any/linux/version.h +3 -3
  272. package/libc/include/any-linux-any/linux/vfio.h +4 -0
  273. package/libc/include/any-linux-any/linux/videodev2.h +3 -0
  274. package/libc/include/any-linux-any/linux/virtio_ring.h +1 -2
  275. package/libc/include/any-linux-any/linux/vmclock-abi.h +20 -0
  276. package/libc/include/any-linux-any/rdma/bnxt_re-abi.h +16 -0
  277. package/libc/include/any-linux-any/rdma/ib_user_ioctl_cmds.h +16 -0
  278. package/libc/include/any-linux-any/rdma/mana-abi.h +3 -0
  279. package/libc/include/any-linux-any/scsi/scsi_bsg_ufs.h +8 -9
  280. package/libc/include/any-linux-any/sound/sof/tokens.h +6 -0
  281. package/libc/include/arc-linux-any/asm/swab.h +0 -63
  282. package/libc/include/arc-linux-any/asm/unistd_32.h +1 -0
  283. package/libc/include/arm-linux-any/asm/ptrace.h +0 -9
  284. package/libc/include/arm-linux-any/asm/unistd-eabi.h +1 -0
  285. package/libc/include/arm-linux-any/asm/unistd-oabi.h +1 -0
  286. package/libc/include/arm-netbsd-eabi/float.h +2 -1
  287. package/libc/include/arm-netbsd-eabi/machine/asm.h +48 -19
  288. package/libc/include/arm-netbsd-eabi/machine/byte_swap.h +121 -0
  289. package/libc/include/arm-netbsd-eabi/machine/cpu.h +1 -3
  290. package/libc/include/arm-netbsd-eabi/machine/float.h +2 -1
  291. package/libc/include/arm-netbsd-eabi/machine/lwp_private.h +81 -0
  292. package/libc/include/arm-netbsd-eabi/machine/mcontext.h +5 -51
  293. package/libc/include/arm-netbsd-eabi/machine/mutex.h +1 -1
  294. package/libc/include/arm-netbsd-eabi/machine/proc.h +2 -2
  295. package/libc/include/arm-netbsd-eabi/machine/profile.h +28 -96
  296. package/libc/include/arm-netbsd-eabi/machine/setjmp.h +7 -6
  297. package/libc/include/arm-netbsd-eabi/machine/sysarch.h +85 -0
  298. package/libc/include/csky-linux-any/asm/unistd_32.h +1 -0
  299. package/libc/include/generic-netbsd/altq/altq.h +2 -2
  300. package/libc/include/generic-netbsd/altq/altq_afmap.h +2 -1
  301. package/libc/include/generic-netbsd/altq/altq_classq.h +8 -6
  302. package/libc/include/generic-netbsd/altq/altq_jobs.h +37 -37
  303. package/libc/include/generic-netbsd/altq/altq_rmclass.h +8 -8
  304. package/libc/include/generic-netbsd/altq/altq_var.h +2 -2
  305. package/libc/include/generic-netbsd/arm/arm32/pmap.h +8 -32
  306. package/libc/include/generic-netbsd/arm/arm32/vmparam.h +5 -5
  307. package/libc/include/generic-netbsd/arm/asm.h +48 -19
  308. package/libc/include/generic-netbsd/arm/byte_swap.h +2 -2
  309. package/libc/include/generic-netbsd/arm/cpu.h +1 -3
  310. package/libc/include/generic-netbsd/arm/cputypes.h +12 -1
  311. package/libc/include/generic-netbsd/arm/float.h +2 -1
  312. package/libc/include/generic-netbsd/arm/lwp_private.h +81 -0
  313. package/libc/include/generic-netbsd/arm/mcontext.h +5 -51
  314. package/libc/include/generic-netbsd/arm/mutex.h +1 -1
  315. package/libc/include/generic-netbsd/arm/proc.h +2 -2
  316. package/libc/include/generic-netbsd/arm/profile.h +28 -96
  317. package/libc/include/generic-netbsd/arm/setjmp.h +7 -6
  318. package/libc/include/generic-netbsd/arpa/nameser.h +3 -3
  319. package/libc/include/generic-netbsd/arpa/nameser_compat.h +3 -3
  320. package/libc/include/generic-netbsd/assert.h +12 -22
  321. package/libc/include/generic-netbsd/bitstring.h +5 -5
  322. package/libc/include/generic-netbsd/cdbw.h +2 -2
  323. package/libc/include/generic-netbsd/crypto/cryptodev.h +99 -92
  324. package/libc/include/generic-netbsd/dev/i2c/emcfaninfo.h +234 -0
  325. package/libc/include/generic-netbsd/dev/i2c/emcfanreg.h +127 -0
  326. package/libc/include/generic-netbsd/dev/i2o/i2o.h +3 -366
  327. package/libc/include/generic-netbsd/dev/ic/hd44780var.h +3 -1
  328. package/libc/include/generic-netbsd/dev/ic/scmdreg.h +2 -2
  329. package/libc/include/generic-netbsd/dev/ic/stireg.h +777 -0
  330. package/libc/include/generic-netbsd/dev/ic/summitreg.h +214 -0
  331. package/libc/include/generic-netbsd/dev/iscsi/iscsi.h +1 -1
  332. package/libc/include/generic-netbsd/dev/pci/amrreg.h +2 -2
  333. package/libc/include/generic-netbsd/dev/pci/mlyreg.h +2 -2
  334. package/libc/include/generic-netbsd/dev/pci/pcidevs.h +177 -22
  335. package/libc/include/generic-netbsd/dev/pci/pcidevs_data.h +14971 -14588
  336. package/libc/include/generic-netbsd/dev/pci/pcireg.h +14 -14
  337. package/libc/include/generic-netbsd/dev/pckbc/pckbdreg.h +2 -1
  338. package/libc/include/generic-netbsd/dev/pcmcia/if_rayreg.h +2 -2
  339. package/libc/include/generic-netbsd/dev/raidframe/raidframeio.h +1 -1
  340. package/libc/include/generic-netbsd/dev/scsipi/scsi_disk.h +42 -7
  341. package/libc/include/generic-netbsd/dev/scsipi/scsi_spc.h +2 -2
  342. package/libc/include/generic-netbsd/dev/scsipi/scsipi_all.h +83 -2
  343. package/libc/include/generic-netbsd/dev/scsipi/scsipiconf.h +3 -1
  344. package/libc/include/generic-netbsd/dev/tc/sfbreg.h +3 -3
  345. package/libc/include/generic-netbsd/dev/tc/sticio.h +2 -2
  346. package/libc/include/generic-netbsd/dev/usb/umcpmio_hid_reports.h +499 -0
  347. package/libc/include/generic-netbsd/dev/usb/umcpmio_io.h +45 -0
  348. package/libc/include/generic-netbsd/dev/usb/usb.h +44 -6
  349. package/libc/include/generic-netbsd/dev/vndvar.h +2 -2
  350. package/libc/include/generic-netbsd/dev/wscons/wsconsio.h +19 -1
  351. package/libc/include/generic-netbsd/dev/wscons/wsksymdef.h +2 -2
  352. package/libc/include/generic-netbsd/dirent.h +1 -1
  353. package/libc/include/generic-netbsd/dlfcn.h +4 -2
  354. package/libc/include/generic-netbsd/elf.h +32 -20
  355. package/libc/include/generic-netbsd/elfdefinitions.h +1 -1
  356. package/libc/include/generic-netbsd/evbarm/intr.h +1 -1
  357. package/libc/include/generic-netbsd/evbmips/lwp_private.h +3 -0
  358. package/libc/include/generic-netbsd/execinfo.h +4 -2
  359. package/libc/include/generic-netbsd/fcntl.h +26 -2
  360. package/libc/include/generic-netbsd/float.h +58 -2
  361. package/libc/include/generic-netbsd/fmtmsg.h +2 -2
  362. package/libc/include/generic-netbsd/fs/hfs/libhfs.h +1 -1
  363. package/libc/include/generic-netbsd/fs/nilfs/nilfs_fs.h +2 -2
  364. package/libc/include/generic-netbsd/gelf.h +2 -2
  365. package/libc/include/generic-netbsd/i386/asm.h +12 -4
  366. package/libc/include/generic-netbsd/i386/byte_swap.h +2 -2
  367. package/libc/include/generic-netbsd/i386/cpu.h +15 -4
  368. package/libc/include/generic-netbsd/i386/elf_machdep.h +2 -1
  369. package/libc/include/generic-netbsd/i386/lwp_private.h +3 -0
  370. package/libc/include/generic-netbsd/i386/mcontext.h +6 -24
  371. package/libc/include/generic-netbsd/i386/param.h +9 -1
  372. package/libc/include/generic-netbsd/i386/pcb.h +6 -2
  373. package/libc/include/generic-netbsd/i386/ptrace.h +2 -2
  374. package/libc/include/generic-netbsd/i386/types.h +2 -1
  375. package/libc/include/generic-netbsd/i386/wchar_limits.h +1 -1
  376. package/libc/include/generic-netbsd/isofs/cd9660/cd9660_extern.h +6 -1
  377. package/libc/include/generic-netbsd/isofs/cd9660/cd9660_mount.h +7 -1
  378. package/libc/include/generic-netbsd/langinfo.h +2 -1
  379. package/libc/include/generic-netbsd/lauxlib.h +1 -1
  380. package/libc/include/generic-netbsd/libelf.h +6 -15
  381. package/libc/include/generic-netbsd/limits.h +1 -1
  382. package/libc/include/generic-netbsd/lua.h +1 -1
  383. package/libc/include/generic-netbsd/luaconf.h +1 -1
  384. package/libc/include/generic-netbsd/lualib.h +1 -1
  385. package/libc/include/generic-netbsd/lwp.h +1 -1
  386. package/libc/include/generic-netbsd/machine/ansi.h +2 -2
  387. package/libc/include/generic-netbsd/machine/aout_machdep.h +39 -2
  388. package/libc/include/generic-netbsd/machine/arm32/pmap.h +8 -32
  389. package/libc/include/generic-netbsd/machine/arm32/vmparam.h +5 -5
  390. package/libc/include/generic-netbsd/machine/asm.h +271 -2
  391. package/libc/include/generic-netbsd/machine/bswap.h +9 -1
  392. package/libc/include/generic-netbsd/machine/byte_swap.h +42 -64
  393. package/libc/include/generic-netbsd/machine/cdefs.h +7 -2
  394. package/libc/include/generic-netbsd/machine/cpu.h +207 -30
  395. package/libc/include/generic-netbsd/machine/cputypes.h +12 -1
  396. package/libc/include/generic-netbsd/machine/disklabel.h +41 -42
  397. package/libc/include/generic-netbsd/machine/elf_machdep.h +143 -2
  398. package/libc/include/generic-netbsd/machine/endian.h +1 -1
  399. package/libc/include/generic-netbsd/machine/fenv.h +35 -2
  400. package/libc/include/generic-netbsd/machine/float.h +58 -2
  401. package/libc/include/generic-netbsd/machine/frame.h +129 -2
  402. package/libc/include/generic-netbsd/machine/ieee.h +3 -2
  403. package/libc/include/generic-netbsd/machine/ieeefp.h +43 -2
  404. package/libc/include/generic-netbsd/machine/int_const.h +32 -2
  405. package/libc/include/generic-netbsd/machine/int_fmtio.h +380 -2
  406. package/libc/include/generic-netbsd/machine/int_limits.h +2 -2
  407. package/libc/include/generic-netbsd/machine/int_mwgwtypes.h +2 -2
  408. package/libc/include/generic-netbsd/machine/int_types.h +2 -2
  409. package/libc/include/generic-netbsd/machine/kcore.h +39 -2
  410. package/libc/include/generic-netbsd/machine/limits.h +2 -2
  411. package/libc/include/generic-netbsd/machine/lock.h +2 -2
  412. package/libc/include/generic-netbsd/machine/lwp_private.h +83 -0
  413. package/libc/include/generic-netbsd/machine/math.h +3 -2
  414. package/libc/include/generic-netbsd/machine/mcontext.h +149 -2
  415. package/libc/include/generic-netbsd/machine/mutex.h +127 -2
  416. package/libc/include/generic-netbsd/machine/param.h +90 -23
  417. package/libc/include/generic-netbsd/machine/pcb.h +54 -2
  418. package/libc/include/generic-netbsd/machine/pmap.h +262 -2
  419. package/libc/include/generic-netbsd/machine/proc.h +75 -2
  420. package/libc/include/generic-netbsd/machine/profile.h +116 -2
  421. package/libc/include/generic-netbsd/machine/psl.h +2 -2
  422. package/libc/include/generic-netbsd/machine/pte.h +346 -2
  423. package/libc/include/generic-netbsd/machine/ptrace.h +62 -2
  424. package/libc/include/generic-netbsd/machine/reg.h +124 -2
  425. package/libc/include/generic-netbsd/machine/reloc.h +2 -2
  426. package/libc/include/generic-netbsd/machine/setjmp.h +69 -2
  427. package/libc/include/generic-netbsd/machine/signal.h +39 -2
  428. package/libc/include/generic-netbsd/machine/sljit_machdep.h +1 -1
  429. package/libc/include/generic-netbsd/machine/sysarch.h +2 -84
  430. package/libc/include/generic-netbsd/machine/sysreg.h +354 -0
  431. package/libc/include/generic-netbsd/machine/trap.h +2 -2
  432. package/libc/include/generic-netbsd/machine/types.h +118 -6
  433. package/libc/include/generic-netbsd/machine/vmparam.h +235 -2
  434. package/libc/include/generic-netbsd/machine/wchar_limits.h +2 -2
  435. package/libc/include/generic-netbsd/math.h +19 -6
  436. package/libc/include/generic-netbsd/md2.h +6 -3
  437. package/libc/include/generic-netbsd/mips/asm.h +69 -17
  438. package/libc/include/generic-netbsd/mips/bswap.h +3 -1
  439. package/libc/include/generic-netbsd/mips/cpu.h +7 -7
  440. package/libc/include/generic-netbsd/mips/elf_machdep.h +2 -1
  441. package/libc/include/generic-netbsd/mips/fenv.h +2 -1
  442. package/libc/include/generic-netbsd/mips/float.h +3 -2
  443. package/libc/include/generic-netbsd/mips/frame.h +3 -2
  444. package/libc/include/generic-netbsd/mips/limits.h +4 -13
  445. package/libc/include/generic-netbsd/mips/lwp_private.h +87 -0
  446. package/libc/include/generic-netbsd/mips/mcontext.h +2 -53
  447. package/libc/include/generic-netbsd/mips/mips3_pte.h +2 -2
  448. package/libc/include/generic-netbsd/mips/mips_param.h +16 -2
  449. package/libc/include/generic-netbsd/mips/mutex.h +1 -1
  450. package/libc/include/generic-netbsd/mips/types.h +1 -1
  451. package/libc/include/generic-netbsd/mips/vmparam.h +1 -1
  452. package/libc/include/generic-netbsd/miscfs/kernfs/kernfs.h +2 -2
  453. package/libc/include/generic-netbsd/miscfs/procfs/procfs.h +33 -2
  454. package/libc/include/generic-netbsd/miscfs/specfs/specdev.h +1 -2
  455. package/libc/include/generic-netbsd/monetary.h +2 -1
  456. package/libc/include/generic-netbsd/net/agr/if_agrioctl.h +2 -2
  457. package/libc/include/generic-netbsd/net/bpf.h +11 -4
  458. package/libc/include/generic-netbsd/net/bpfdesc.h +1 -1
  459. package/libc/include/generic-netbsd/net/dlt.h +222 -48
  460. package/libc/include/generic-netbsd/net/if.h +20 -5
  461. package/libc/include/generic-netbsd/net/if_bridgevar.h +2 -3
  462. package/libc/include/generic-netbsd/net/if_ether.h +4 -3
  463. package/libc/include/generic-netbsd/net/if_lagg.h +2 -2
  464. package/libc/include/generic-netbsd/net/if_media.h +2 -2
  465. package/libc/include/generic-netbsd/net/if_ppp.h +1 -3
  466. package/libc/include/generic-netbsd/net/if_stats.h +19 -5
  467. package/libc/include/generic-netbsd/net/net_stats.h +13 -6
  468. package/libc/include/generic-netbsd/net/npf.h +33 -5
  469. package/libc/include/generic-netbsd/net/pfkeyv2.h +1 -1
  470. package/libc/include/generic-netbsd/net/route.h +4 -4
  471. package/libc/include/generic-netbsd/net80211/ieee80211_node.h +3 -2
  472. package/libc/include/generic-netbsd/net80211/ieee80211_var.h +2 -2
  473. package/libc/include/generic-netbsd/netbt/hci.h +3 -3
  474. package/libc/include/generic-netbsd/netdb.h +2 -2
  475. package/libc/include/generic-netbsd/netinet/icmp6.h +6 -2
  476. package/libc/include/generic-netbsd/netinet/in.h +17 -17
  477. package/libc/include/generic-netbsd/netinet/in_var.h +5 -9
  478. package/libc/include/generic-netbsd/netinet/ip_mroute.h +24 -28
  479. package/libc/include/generic-netbsd/netinet/ip_var.h +2 -2
  480. package/libc/include/generic-netbsd/netinet/sctp.h +4 -4
  481. package/libc/include/generic-netbsd/netinet/tcp_var.h +2 -2
  482. package/libc/include/generic-netbsd/netinet/tcp_vtw.h +2 -2
  483. package/libc/include/generic-netbsd/netinet6/in6_var.h +7 -33
  484. package/libc/include/generic-netbsd/netinet6/ip6_var.h +2 -2
  485. package/libc/include/generic-netbsd/nfs/krpc.h +9 -4
  486. package/libc/include/generic-netbsd/nfs/nfs.h +5 -3
  487. package/libc/include/generic-netbsd/nfs/nfsdiskless.h +37 -20
  488. package/libc/include/generic-netbsd/nfs/nfsm_subs.h +4 -7
  489. package/libc/include/generic-netbsd/nfs/nfsmount.h +3 -4
  490. package/libc/include/generic-netbsd/nfs/nfsnode.h +9 -6
  491. package/libc/include/generic-netbsd/nfs/nfsproto.h +5 -2
  492. package/libc/include/generic-netbsd/nfs/nfsrtt.h +8 -4
  493. package/libc/include/generic-netbsd/nfs/nfsrvcache.h +9 -3
  494. package/libc/include/generic-netbsd/nfs/rpcv2.h +5 -3
  495. package/libc/include/generic-netbsd/nfs/xdr_subs.h +6 -5
  496. package/libc/include/generic-netbsd/nl_types.h +3 -1
  497. package/libc/include/generic-netbsd/ntfs/ntfs_inode.h +2 -2
  498. package/libc/include/generic-netbsd/poll.h +8 -2
  499. package/libc/include/generic-netbsd/prop/prop_object.h +48 -3
  500. package/libc/include/generic-netbsd/protocols/talkd.h +2 -2
  501. package/libc/include/generic-netbsd/pthread.h +51 -12
  502. package/libc/include/generic-netbsd/regex.h +2 -1
  503. package/libc/include/generic-netbsd/riscv/ansi.h +3 -0
  504. package/libc/include/generic-netbsd/riscv/aout_machdep.h +40 -0
  505. package/libc/include/generic-netbsd/riscv/asm.h +272 -0
  506. package/libc/include/generic-netbsd/riscv/bswap.h +11 -0
  507. package/libc/include/generic-netbsd/riscv/byte_swap.h +99 -0
  508. package/libc/include/generic-netbsd/riscv/cdefs.h +8 -0
  509. package/libc/include/generic-netbsd/riscv/cpu.h +242 -0
  510. package/libc/include/generic-netbsd/riscv/disklabel.h +68 -0
  511. package/libc/include/generic-netbsd/riscv/elf_machdep.h +144 -0
  512. package/libc/include/generic-netbsd/riscv/endian.h +3 -0
  513. package/libc/include/generic-netbsd/riscv/endian_machdep.h +3 -0
  514. package/libc/include/generic-netbsd/riscv/fenv.h +36 -0
  515. package/libc/include/generic-netbsd/riscv/float.h +59 -0
  516. package/libc/include/generic-netbsd/riscv/ieee.h +4 -0
  517. package/libc/include/generic-netbsd/riscv/ieeefp.h +44 -0
  518. package/libc/include/generic-netbsd/riscv/int_const.h +33 -0
  519. package/libc/include/generic-netbsd/riscv/int_fmtio.h +381 -0
  520. package/libc/include/generic-netbsd/riscv/int_limits.h +3 -0
  521. package/libc/include/generic-netbsd/riscv/int_mwgwtypes.h +3 -0
  522. package/libc/include/generic-netbsd/riscv/int_types.h +3 -0
  523. package/libc/include/generic-netbsd/riscv/kcore.h +40 -0
  524. package/libc/include/generic-netbsd/riscv/limits.h +3 -0
  525. package/libc/include/generic-netbsd/riscv/lock.h +3 -0
  526. package/libc/include/generic-netbsd/riscv/lwp_private.h +83 -0
  527. package/libc/include/generic-netbsd/riscv/math.h +4 -0
  528. package/libc/include/generic-netbsd/riscv/mcontext.h +150 -0
  529. package/libc/include/generic-netbsd/riscv/mutex.h +128 -0
  530. package/libc/include/generic-netbsd/riscv/param.h +110 -0
  531. package/libc/include/generic-netbsd/riscv/pcb.h +55 -0
  532. package/libc/include/generic-netbsd/riscv/pmap.h +263 -0
  533. package/libc/include/generic-netbsd/riscv/proc.h +76 -0
  534. package/libc/include/generic-netbsd/riscv/profile.h +117 -0
  535. package/libc/include/generic-netbsd/riscv/pte.h +347 -0
  536. package/libc/include/generic-netbsd/riscv/ptrace.h +63 -0
  537. package/libc/include/generic-netbsd/riscv/reg.h +125 -0
  538. package/libc/include/generic-netbsd/riscv/rwlock.h +1 -0
  539. package/libc/include/generic-netbsd/riscv/setjmp.h +70 -0
  540. package/libc/include/generic-netbsd/riscv/signal.h +40 -0
  541. package/libc/include/generic-netbsd/riscv/sysarch.h +3 -0
  542. package/libc/include/generic-netbsd/riscv/sysreg.h +354 -0
  543. package/libc/include/generic-netbsd/riscv/types.h +123 -0
  544. package/libc/include/generic-netbsd/riscv/vmparam.h +236 -0
  545. package/libc/include/generic-netbsd/riscv/wchar_limits.h +13 -0
  546. package/libc/include/generic-netbsd/rmd160.h +3 -3
  547. package/libc/include/generic-netbsd/rpc/xdr.h +3 -3
  548. package/libc/include/generic-netbsd/rpcsvc/yp_prot.h +3 -2
  549. package/libc/include/generic-netbsd/rump/rump_namei.h +2 -2
  550. package/libc/include/generic-netbsd/rump/rump_syscalls.h +4 -4
  551. package/libc/include/generic-netbsd/rump/rumpuser.h +6 -1
  552. package/libc/include/generic-netbsd/rump/rumpvnode_if.h +2 -2
  553. package/libc/include/generic-netbsd/sha1.h +3 -3
  554. package/libc/include/generic-netbsd/sha2.h +8 -1
  555. package/libc/include/generic-netbsd/signal.h +4 -4
  556. package/libc/include/generic-netbsd/sparc/asm.h +10 -1
  557. package/libc/include/generic-netbsd/sparc/bswap.h +9 -1
  558. package/libc/include/generic-netbsd/sparc/cgtworeg.h +2 -2
  559. package/libc/include/generic-netbsd/sparc/cpu.h +1 -1
  560. package/libc/include/generic-netbsd/sparc/float.h +3 -1
  561. package/libc/include/generic-netbsd/sparc/limits.h +4 -6
  562. package/libc/include/generic-netbsd/sparc/lwp_private.h +51 -0
  563. package/libc/include/generic-netbsd/sparc/mcontext.h +4 -22
  564. package/libc/include/generic-netbsd/sparc/mutex.h +1 -1
  565. package/libc/include/generic-netbsd/sparc/param.h +4 -2
  566. package/libc/include/generic-netbsd/sparc/pmap.h +2 -2
  567. package/libc/include/generic-netbsd/sparc/psl.h +6 -3
  568. package/libc/include/generic-netbsd/sparc/types.h +2 -2
  569. package/libc/include/generic-netbsd/sparc64/bswap.h +9 -1
  570. package/libc/include/generic-netbsd/sparc64/cpu.h +2 -2
  571. package/libc/include/generic-netbsd/sparc64/ctlreg.h +8 -7
  572. package/libc/include/generic-netbsd/sparc64/intr.h +1 -1
  573. package/libc/include/generic-netbsd/sparc64/lwp_private.h +3 -0
  574. package/libc/include/generic-netbsd/sparc64/mcontext.h +4 -4
  575. package/libc/include/generic-netbsd/sparc64/mutex.h +1 -1
  576. package/libc/include/generic-netbsd/sparc64/param.h +8 -2
  577. package/libc/include/generic-netbsd/sparc64/psl.h +7 -2
  578. package/libc/include/generic-netbsd/sparc64/pte.h +2 -2
  579. package/libc/include/generic-netbsd/sparc64/vmparam.h +1 -1
  580. package/libc/include/generic-netbsd/ssp/ssp.h +16 -6
  581. package/libc/include/generic-netbsd/stdalign.h +3 -3
  582. package/libc/include/generic-netbsd/stdarg.h +2 -2
  583. package/libc/include/generic-netbsd/stddef.h +90 -12
  584. package/libc/include/generic-netbsd/stdlib.h +11 -2
  585. package/libc/include/generic-netbsd/stdnoreturn.h +2 -2
  586. package/libc/include/generic-netbsd/string.h +66 -39
  587. package/libc/include/generic-netbsd/strings.h +17 -3
  588. package/libc/include/generic-netbsd/sys/atomic.h +10 -5
  589. package/libc/include/generic-netbsd/sys/bitops.h +2 -2
  590. package/libc/include/generic-netbsd/sys/bootblock.h +13 -2
  591. package/libc/include/generic-netbsd/sys/bswap.h +46 -20
  592. package/libc/include/generic-netbsd/sys/buf.h +3 -3
  593. package/libc/include/generic-netbsd/sys/cdefs.h +44 -6
  594. package/libc/include/generic-netbsd/sys/cdefs_aout.h +8 -1
  595. package/libc/include/generic-netbsd/sys/cdefs_elf.h +9 -2
  596. package/libc/include/generic-netbsd/sys/chio.h +2 -2
  597. package/libc/include/generic-netbsd/sys/clock.h +5 -1
  598. package/libc/include/generic-netbsd/sys/common_limits.h +3 -1
  599. package/libc/include/generic-netbsd/sys/condvar.h +1 -1
  600. package/libc/include/generic-netbsd/sys/conf.h +4 -3
  601. package/libc/include/generic-netbsd/sys/container_of.h +75 -0
  602. package/libc/include/generic-netbsd/sys/device.h +20 -13
  603. package/libc/include/generic-netbsd/sys/disk.h +8 -1
  604. package/libc/include/generic-netbsd/sys/disklabel.h +2 -2
  605. package/libc/include/generic-netbsd/sys/disklabel_gpt.h +7 -1
  606. package/libc/include/generic-netbsd/sys/efiio.h +1 -1
  607. package/libc/include/generic-netbsd/sys/elfdefinitions.h +2368 -1591
  608. package/libc/include/generic-netbsd/sys/endian.h +17 -17
  609. package/libc/include/generic-netbsd/sys/evcnt.h +15 -2
  610. package/libc/include/generic-netbsd/sys/event.h +3 -2
  611. package/libc/include/generic-netbsd/sys/exec.h +2 -2
  612. package/libc/include/generic-netbsd/sys/exec_elf.h +32 -20
  613. package/libc/include/generic-netbsd/sys/fcntl.h +26 -2
  614. package/libc/include/generic-netbsd/sys/fd_set.h +3 -3
  615. package/libc/include/generic-netbsd/sys/featuretest.h +24 -6
  616. package/libc/include/generic-netbsd/sys/file.h +18 -6
  617. package/libc/include/generic-netbsd/sys/filedesc.h +8 -4
  618. package/libc/include/generic-netbsd/sys/futex.h +11 -11
  619. package/libc/include/generic-netbsd/sys/ieee754.h +2 -2
  620. package/libc/include/generic-netbsd/sys/ipc.h +2 -2
  621. package/libc/include/generic-netbsd/sys/ipmi.h +4 -2
  622. package/libc/include/generic-netbsd/sys/ksem.h +1 -1
  623. package/libc/include/generic-netbsd/sys/ktrace.h +6 -4
  624. package/libc/include/generic-netbsd/sys/lock.h +2 -2
  625. package/libc/include/generic-netbsd/sys/lua.h +1 -1
  626. package/libc/include/generic-netbsd/sys/lwp.h +25 -92
  627. package/libc/include/generic-netbsd/sys/mbuf.h +15 -13
  628. package/libc/include/generic-netbsd/sys/mman.h +11 -3
  629. package/libc/include/generic-netbsd/sys/mount.h +1 -2
  630. package/libc/include/generic-netbsd/sys/msg.h +3 -3
  631. package/libc/include/generic-netbsd/sys/mutex.h +1 -3
  632. package/libc/include/generic-netbsd/sys/namei.h +32 -17
  633. package/libc/include/generic-netbsd/sys/param.h +11 -8
  634. package/libc/include/generic-netbsd/sys/pipe.h +10 -11
  635. package/libc/include/generic-netbsd/sys/poll.h +8 -2
  636. package/libc/include/generic-netbsd/sys/proc.h +15 -15
  637. package/libc/include/generic-netbsd/sys/ptrace.h +24 -7
  638. package/libc/include/generic-netbsd/sys/ptree.h +2 -1
  639. package/libc/include/generic-netbsd/sys/queue.h +37 -37
  640. package/libc/include/generic-netbsd/sys/rbtree.h +23 -9
  641. package/libc/include/generic-netbsd/sys/resourcevar.h +2 -2
  642. package/libc/include/generic-netbsd/sys/rmd160.h +3 -3
  643. package/libc/include/generic-netbsd/sys/rndio.h +1 -1
  644. package/libc/include/generic-netbsd/sys/rwlock.h +1 -2
  645. package/libc/include/generic-netbsd/sys/sched.h +1 -1
  646. package/libc/include/generic-netbsd/sys/sdt.h +181 -111
  647. package/libc/include/generic-netbsd/sys/sem.h +7 -2
  648. package/libc/include/generic-netbsd/sys/sha1.h +3 -3
  649. package/libc/include/generic-netbsd/sys/sha2.h +8 -1
  650. package/libc/include/generic-netbsd/sys/shm.h +2 -2
  651. package/libc/include/generic-netbsd/sys/siginfo.h +5 -5
  652. package/libc/include/generic-netbsd/sys/signal.h +1 -1
  653. package/libc/include/generic-netbsd/sys/sigtypes.h +4 -4
  654. package/libc/include/generic-netbsd/sys/sleepq.h +14 -27
  655. package/libc/include/generic-netbsd/sys/socket.h +3 -1
  656. package/libc/include/generic-netbsd/sys/socketvar.h +4 -4
  657. package/libc/include/generic-netbsd/sys/stat.h +5 -5
  658. package/libc/include/generic-netbsd/sys/stdalign.h +55 -0
  659. package/libc/include/generic-netbsd/sys/stdarg.h +2 -2
  660. package/libc/include/generic-netbsd/sys/stddef.h +156 -0
  661. package/libc/include/generic-netbsd/sys/swap.h +2 -2
  662. package/libc/include/generic-netbsd/sys/syncobj.h +9 -6
  663. package/libc/include/generic-netbsd/sys/syscall.h +29 -8
  664. package/libc/include/generic-netbsd/sys/syscallargs.h +89 -12
  665. package/libc/include/generic-netbsd/sys/sysctl.h +94 -86
  666. package/libc/include/generic-netbsd/sys/syslimits.h +8 -1
  667. package/libc/include/generic-netbsd/sys/syslog.h +6 -7
  668. package/libc/include/generic-netbsd/sys/time.h +10 -8
  669. package/libc/include/generic-netbsd/sys/tree.h +13 -13
  670. package/libc/include/generic-netbsd/sys/tty.h +2 -2
  671. package/libc/include/generic-netbsd/sys/ttycom.h +7 -1
  672. package/libc/include/generic-netbsd/sys/types.h +1 -1
  673. package/libc/include/generic-netbsd/sys/ucontext.h +46 -49
  674. package/libc/include/generic-netbsd/sys/un.h +12 -4
  675. package/libc/include/generic-netbsd/sys/unistd.h +103 -102
  676. package/libc/include/generic-netbsd/sys/unpcb.h +2 -2
  677. package/libc/include/generic-netbsd/sys/vmmeter.h +1 -39
  678. package/libc/include/generic-netbsd/sys/vnode_if.h +2 -2
  679. package/libc/include/generic-netbsd/sys/vnode_impl.h +6 -3
  680. package/libc/include/generic-netbsd/sys/wapbl_replay.h +2 -2
  681. package/libc/include/generic-netbsd/sys/wchan.h +37 -0
  682. package/libc/include/generic-netbsd/syslog.h +6 -7
  683. package/libc/include/generic-netbsd/time.h +44 -8
  684. package/libc/include/generic-netbsd/tzfile.h +11 -6
  685. package/libc/include/generic-netbsd/uchar.h +1 -1
  686. package/libc/include/generic-netbsd/ucontext.h +2 -1
  687. package/libc/include/generic-netbsd/ufs/ext2fs/ext2fs.h +31 -16
  688. package/libc/include/generic-netbsd/ufs/ext2fs/ext2fs_dir.h +1 -1
  689. package/libc/include/generic-netbsd/ufs/ext2fs/ext2fs_extents.h +5 -5
  690. package/libc/include/generic-netbsd/ufs/ext2fs/ext2fs_extern.h +4 -4
  691. package/libc/include/generic-netbsd/ufs/ffs/ffs_extern.h +1 -1
  692. package/libc/include/generic-netbsd/ufs/ffs/fs.h +3 -3
  693. package/libc/include/generic-netbsd/ufs/ufs/quota2.h +2 -2
  694. package/libc/include/generic-netbsd/unistd.h +11 -5
  695. package/libc/include/generic-netbsd/unwind.h +1 -1
  696. package/libc/include/generic-netbsd/util.h +15 -1
  697. package/libc/include/generic-netbsd/uvm/uvm.h +1 -5
  698. package/libc/include/generic-netbsd/uvm/uvm_extern.h +3 -4
  699. package/libc/include/generic-netbsd/uvm/uvm_object.h +2 -2
  700. package/libc/include/generic-netbsd/uvm/uvm_param.h +1 -1
  701. package/libc/include/generic-netbsd/uvm/uvm_swap.h +14 -3
  702. package/libc/include/generic-netbsd/wchar.h +7 -2
  703. package/libc/include/generic-netbsd/x86/bootinfo.h +4 -1
  704. package/libc/include/generic-netbsd/x86/cpu.h +18 -1
  705. package/libc/include/generic-netbsd/x86/cpu_extended_state.h +3 -1
  706. package/libc/include/generic-netbsd/x86/cpuvar.h +4 -1
  707. package/libc/include/generic-netbsd/x86/float.h +24 -1
  708. package/libc/include/generic-netbsd/x86/ieee.h +11 -7
  709. package/libc/include/generic-netbsd/x86/lwp_private.h +56 -0
  710. package/libc/include/generic-netbsd/x86/mutex.h +1 -1
  711. package/libc/include/generic-netbsd/x86/specialreg.h +111 -23
  712. package/libc/include/generic-openbsd/db.h +1 -7
  713. package/libc/include/generic-openbsd/ddb/db_interface.h +2 -1
  714. package/libc/include/generic-openbsd/fnmatch.h +6 -2
  715. package/libc/include/generic-openbsd/login_cap.h +3 -1
  716. package/libc/include/generic-openbsd/miscfs/fuse/fusefs_node.h +2 -1
  717. package/libc/include/generic-openbsd/net/bpf.h +3 -1
  718. package/libc/include/generic-openbsd/net/hfsc.h +4 -4
  719. package/libc/include/generic-openbsd/net/if.h +5 -1
  720. package/libc/include/generic-openbsd/net/if_bridge.h +48 -1
  721. package/libc/include/generic-openbsd/net/if_etherbridge.h +20 -7
  722. package/libc/include/generic-openbsd/net/if_media.h +26 -1
  723. package/libc/include/generic-openbsd/net/if_pflow.h +71 -20
  724. package/libc/include/generic-openbsd/net/if_pfsync.h +2 -2
  725. package/libc/include/generic-openbsd/net/if_sppp.h +2 -1
  726. package/libc/include/generic-openbsd/net/if_trunk.h +3 -2
  727. package/libc/include/generic-openbsd/net/if_types.h +2 -2
  728. package/libc/include/generic-openbsd/net/if_var.h +34 -12
  729. package/libc/include/generic-openbsd/net/netisr.h +1 -3
  730. package/libc/include/generic-openbsd/net/pfvar.h +154 -1
  731. package/libc/include/generic-openbsd/net/pfvar_priv.h +256 -1
  732. package/libc/include/generic-openbsd/net80211/ieee80211.h +76 -4
  733. package/libc/include/generic-openbsd/net80211/ieee80211_ioctl.h +3 -2
  734. package/libc/include/generic-openbsd/net80211/ieee80211_node.h +48 -2
  735. package/libc/include/generic-openbsd/net80211/ieee80211_proto.h +4 -1
  736. package/libc/include/generic-openbsd/net80211/ieee80211_var.h +18 -2
  737. package/libc/include/generic-openbsd/netinet/if_ether.h +12 -11
  738. package/libc/include/generic-openbsd/netinet/igmp_var.h +17 -3
  739. package/libc/include/generic-openbsd/netinet/in_pcb.h +2 -1
  740. package/libc/include/generic-openbsd/netinet/in_var.h +17 -59
  741. package/libc/include/generic-openbsd/netinet/ip.h +3 -2
  742. package/libc/include/generic-openbsd/netinet/tcp_timer.h +1 -2
  743. package/libc/include/generic-openbsd/netinet6/in6_var.h +15 -29
  744. package/libc/include/generic-openbsd/netinet6/ip6_var.h +1 -2
  745. package/libc/include/generic-openbsd/netinet6/mld6_var.h +17 -4
  746. package/libc/include/generic-openbsd/netinet6/nd6.h +2 -2
  747. package/libc/include/generic-openbsd/pthread.h +2 -2
  748. package/libc/include/generic-openbsd/signal.h +2 -2
  749. package/libc/include/generic-openbsd/sndio.h +6 -12
  750. package/libc/include/generic-openbsd/strings.h +5 -1
  751. package/libc/include/generic-openbsd/sys/device.h +4 -3
  752. package/libc/include/generic-openbsd/sys/disklabel.h +17 -5
  753. package/libc/include/generic-openbsd/sys/dkio.h +3 -5
  754. package/libc/include/generic-openbsd/sys/filedesc.h +3 -2
  755. package/libc/include/generic-openbsd/sys/mbuf.h +1 -1
  756. package/libc/include/generic-openbsd/sys/mman.h +7 -2
  757. package/libc/include/generic-openbsd/sys/mutex.h +10 -7
  758. package/libc/include/generic-openbsd/sys/namei.h +8 -7
  759. package/libc/include/generic-openbsd/sys/param.h +1 -1
  760. package/libc/include/generic-openbsd/sys/pledge.h +1 -3
  761. package/libc/include/generic-openbsd/sys/protosw.h +8 -1
  762. package/libc/include/generic-openbsd/sys/ptrace.h +4 -1
  763. package/libc/include/generic-openbsd/sys/sched.h +8 -1
  764. package/libc/include/generic-openbsd/sys/signal.h +4 -2
  765. package/libc/include/generic-openbsd/sys/socketvar.h +2 -1
  766. package/libc/include/generic-openbsd/sys/sockio.h +11 -1
  767. package/libc/include/generic-openbsd/sys/syscall.h +5 -3
  768. package/libc/include/generic-openbsd/sys/syscallargs.h +9 -2
  769. package/libc/include/generic-openbsd/sys/sysctl.h +7 -4
  770. package/libc/include/generic-openbsd/sys/types.h +6 -2
  771. package/libc/include/generic-openbsd/sys/videoio.h +143 -68
  772. package/libc/include/generic-openbsd/sys/xcall.h +2 -2
  773. package/libc/include/generic-openbsd/time.h +2 -2
  774. package/libc/include/generic-openbsd/unistd.h +2 -2
  775. package/libc/include/generic-openbsd/uvm/uvm_anon.h +2 -3
  776. package/libc/include/generic-openbsd/uvm/uvm_extern.h +1 -19
  777. package/libc/include/generic-openbsd/uvm/uvm_pager.h +3 -4
  778. package/libc/include/generic-openbsd/uvm/uvm_pmemrange.h +1 -2
  779. package/libc/include/generic-openbsd/uvm/uvm_swap.h +4 -1
  780. package/libc/include/generic-openbsd/uvm/uvm_vnode.h +3 -4
  781. package/libc/include/generic-openbsd/uvm/uvmexp.h +41 -35
  782. package/libc/include/hexagon-linux-any/asm/unistd_32.h +1 -0
  783. package/libc/include/loongarch-linux-any/asm/hwcap.h +1 -0
  784. package/libc/include/loongarch-linux-any/asm/kvm.h +1 -0
  785. package/libc/include/loongarch-linux-any/asm/kvm_para.h +1 -0
  786. package/libc/include/loongarch-linux-any/asm/unistd_32.h +2 -0
  787. package/libc/include/loongarch-linux-any/asm/unistd_64.h +2 -0
  788. package/libc/include/m68k-linux-any/asm/unistd_32.h +1 -0
  789. package/libc/include/m68k-netbsd-none/m68k/asm.h +11 -2
  790. package/libc/include/m68k-netbsd-none/m68k/bus_dma.h +2 -2
  791. package/libc/include/m68k-netbsd-none/m68k/byte_swap.h +2 -2
  792. package/libc/include/m68k-netbsd-none/m68k/cacheops_30.h +2 -2
  793. package/libc/include/m68k-netbsd-none/m68k/cacheops_40.h +3 -1
  794. package/libc/include/m68k-netbsd-none/m68k/cacheops_60.h +5 -3
  795. package/libc/include/m68k-netbsd-none/m68k/cpu.h +86 -59
  796. package/libc/include/m68k-netbsd-none/m68k/cpuframe.h +5 -5
  797. package/libc/include/m68k-netbsd-none/m68k/fenv.h +6 -4
  798. package/libc/include/m68k-netbsd-none/m68k/float.h +26 -1
  799. package/libc/include/m68k-netbsd-none/m68k/frame.h +31 -19
  800. package/libc/include/m68k-netbsd-none/m68k/ieee.h +13 -8
  801. package/libc/include/m68k-netbsd-none/m68k/ieeefp.h +3 -3
  802. package/libc/include/m68k-netbsd-none/m68k/int_limits.h +2 -2
  803. package/libc/include/m68k-netbsd-none/m68k/intr.h +211 -0
  804. package/libc/include/m68k-netbsd-none/m68k/kcore.h +31 -31
  805. package/libc/include/m68k-netbsd-none/m68k/lwp_private.h +64 -0
  806. package/libc/include/m68k-netbsd-none/m68k/m68k.h +3 -7
  807. package/libc/include/m68k-netbsd-none/m68k/mcontext.h +5 -36
  808. package/libc/include/m68k-netbsd-none/m68k/mmu_30.h +105 -0
  809. package/libc/include/m68k-netbsd-none/m68k/mmu_40.h +232 -0
  810. package/libc/include/m68k-netbsd-none/m68k/mmu_51.h +273 -0
  811. package/libc/include/m68k-netbsd-none/m68k/mutex.h +1 -1
  812. package/libc/include/m68k-netbsd-none/m68k/pcb.h +2 -2
  813. package/libc/include/m68k-netbsd-none/m68k/pmap_motorola.h +32 -23
  814. package/libc/include/m68k-netbsd-none/m68k/psl.h +26 -7
  815. package/libc/include/m68k-netbsd-none/m68k/pte_motorola.h +37 -26
  816. package/libc/include/m68k-netbsd-none/m68k/trap.h +7 -7
  817. package/libc/include/m68k-netbsd-none/mac68k/cpu.h +1 -57
  818. package/libc/include/m68k-netbsd-none/mac68k/intr.h +3 -2
  819. package/libc/include/m68k-netbsd-none/mac68k/lwp_private.h +3 -0
  820. package/libc/include/m68k-netbsd-none/mac68k/pmap.h +20 -2
  821. package/libc/include/m68k-netbsd-none/mac68k/z8530var.h +2 -2
  822. package/libc/include/m68k-netbsd-none/machine/cpu.h +1 -57
  823. package/libc/include/m68k-netbsd-none/machine/intr.h +3 -2
  824. package/libc/include/m68k-netbsd-none/machine/lwp_private.h +3 -0
  825. package/libc/include/m68k-netbsd-none/machine/pmap.h +20 -2
  826. package/libc/include/m68k-netbsd-none/machine/z8530var.h +2 -2
  827. package/libc/include/mips-linux-any/asm/errno.h +2 -0
  828. package/libc/include/mips-linux-any/asm/unistd_n32.h +1 -0
  829. package/libc/include/mips-linux-any/asm/unistd_n64.h +1 -0
  830. package/libc/include/mips-linux-any/asm/unistd_o32.h +1 -0
  831. package/libc/include/mips-netbsd-eabi/machine/lwp_private.h +3 -0
  832. package/libc/include/mips64-openbsd-none/machine/octeonvar.h +1 -27
  833. package/libc/include/mips64-openbsd-none/octeon/octeonvar.h +1 -27
  834. package/libc/include/mips64el-openbsd-none/loongson/apmvar.h +1 -1
  835. package/libc/include/mips64el-openbsd-none/loongson/param.h +1 -5
  836. package/libc/include/mips64el-openbsd-none/machine/apmvar.h +1 -1
  837. package/libc/include/mips64el-openbsd-none/machine/param.h +1 -5
  838. package/libc/include/powerpc-linux-any/asm/unistd_32.h +1 -0
  839. package/libc/include/powerpc-linux-any/asm/unistd_64.h +1 -0
  840. package/libc/include/powerpc-netbsd-eabi/evbppc/lwp_private.h +3 -0
  841. package/libc/include/powerpc-netbsd-eabi/float.h +3 -0
  842. package/libc/include/powerpc-netbsd-eabi/machine/ansi.h +3 -0
  843. package/libc/include/powerpc-netbsd-eabi/machine/aout_machdep.h +3 -0
  844. package/libc/include/powerpc-netbsd-eabi/machine/asm.h +3 -0
  845. package/libc/include/powerpc-netbsd-eabi/machine/cdefs.h +3 -0
  846. package/libc/include/powerpc-netbsd-eabi/machine/cpu.h +65 -0
  847. package/libc/include/powerpc-netbsd-eabi/machine/disklabel.h +69 -0
  848. package/libc/include/powerpc-netbsd-eabi/machine/elf_machdep.h +3 -0
  849. package/libc/include/powerpc-netbsd-eabi/machine/endian.h +3 -0
  850. package/libc/include/powerpc-netbsd-eabi/machine/fenv.h +3 -0
  851. package/libc/include/powerpc-netbsd-eabi/machine/float.h +3 -0
  852. package/libc/include/powerpc-netbsd-eabi/machine/frame.h +3 -0
  853. package/libc/include/powerpc-netbsd-eabi/machine/ieee.h +3 -0
  854. package/libc/include/powerpc-netbsd-eabi/machine/ieeefp.h +3 -0
  855. package/libc/include/powerpc-netbsd-eabi/machine/int_const.h +3 -0
  856. package/libc/include/powerpc-netbsd-eabi/machine/int_fmtio.h +3 -0
  857. package/libc/include/powerpc-netbsd-eabi/machine/int_limits.h +3 -0
  858. package/libc/include/powerpc-netbsd-eabi/machine/int_mwgwtypes.h +3 -0
  859. package/libc/include/powerpc-netbsd-eabi/machine/int_types.h +3 -0
  860. package/libc/include/powerpc-netbsd-eabi/machine/kcore.h +3 -0
  861. package/libc/include/powerpc-netbsd-eabi/machine/limits.h +3 -0
  862. package/libc/include/powerpc-netbsd-eabi/machine/lock.h +3 -0
  863. package/libc/include/powerpc-netbsd-eabi/machine/lwp_private.h +3 -0
  864. package/libc/include/powerpc-netbsd-eabi/machine/math.h +3 -0
  865. package/libc/include/powerpc-netbsd-eabi/machine/mcontext.h +3 -0
  866. package/libc/include/powerpc-netbsd-eabi/machine/mutex.h +3 -0
  867. package/libc/include/powerpc-netbsd-eabi/machine/param.h +43 -0
  868. package/libc/include/powerpc-netbsd-eabi/machine/pcb.h +3 -0
  869. package/libc/include/powerpc-netbsd-eabi/machine/pmap.h +3 -0
  870. package/libc/include/powerpc-netbsd-eabi/machine/proc.h +3 -0
  871. package/libc/include/powerpc-netbsd-eabi/machine/profile.h +3 -0
  872. package/libc/include/powerpc-netbsd-eabi/machine/psl.h +3 -0
  873. package/libc/include/powerpc-netbsd-eabi/machine/pte.h +3 -0
  874. package/libc/include/powerpc-netbsd-eabi/machine/ptrace.h +3 -0
  875. package/libc/include/powerpc-netbsd-eabi/machine/reg.h +3 -0
  876. package/libc/include/powerpc-netbsd-eabi/machine/reloc.h +3 -0
  877. package/libc/include/powerpc-netbsd-eabi/machine/setjmp.h +3 -0
  878. package/libc/include/powerpc-netbsd-eabi/machine/signal.h +3 -0
  879. package/libc/include/{mips-netbsd-eabi → powerpc-netbsd-eabi}/machine/sljit_machdep.h +1 -1
  880. package/libc/include/powerpc-netbsd-eabi/machine/trap.h +3 -0
  881. package/libc/include/powerpc-netbsd-eabi/machine/types.h +11 -0
  882. package/libc/include/powerpc-netbsd-eabi/machine/vmparam.h +3 -0
  883. package/libc/include/powerpc-netbsd-eabi/machine/wchar_limits.h +3 -0
  884. package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/asm.h +12 -2
  885. package/libc/include/powerpc-netbsd-eabi/powerpc/bswap.h +14 -0
  886. package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/cpu.h +3 -3
  887. package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/fenv.h +2 -1
  888. package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/ibm4xx/pmap.h +3 -3
  889. package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/ieee.h +7 -2
  890. package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/limits.h +4 -13
  891. package/libc/include/powerpc-netbsd-eabi/powerpc/lwp_private.h +79 -0
  892. package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/mcontext.h +6 -50
  893. package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/mutex.h +1 -1
  894. package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/oea/hid.h +2 -2
  895. package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/oea/pmap.h +2 -2
  896. package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/pmap.h +1 -1
  897. package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/psl.h +2 -2
  898. package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/vmparam.h +1 -1
  899. package/libc/include/powerpc-openbsd-eabihf/powerpc/intr.h +1 -4
  900. package/libc/include/powerpc64-openbsd-none/machine/atomic.h +3 -3
  901. package/libc/include/powerpc64-openbsd-none/powerpc64/atomic.h +3 -3
  902. package/libc/include/riscv-linux-any/asm/hwprobe.h +4 -0
  903. package/libc/include/riscv-linux-any/asm/kvm.h +3 -0
  904. package/libc/include/riscv-linux-any/asm/ptrace.h +37 -0
  905. package/libc/include/riscv-linux-any/asm/sigcontext.h +1 -0
  906. package/libc/include/riscv-linux-any/asm/unistd_32.h +1 -0
  907. package/libc/include/riscv-linux-any/asm/unistd_64.h +1 -0
  908. package/libc/include/riscv32-netbsd-none/machine/bswap.h +11 -0
  909. package/libc/include/riscv32-netbsd-none/machine/endian_machdep.h +3 -0
  910. package/libc/include/riscv32-netbsd-none/machine/rwlock.h +1 -0
  911. package/libc/include/riscv32-netbsd-none/machine/wchar_limits.h +4 -0
  912. package/libc/include/riscv64-netbsd-none/machine/bswap.h +11 -0
  913. package/libc/include/riscv64-netbsd-none/machine/endian_machdep.h +3 -0
  914. package/libc/include/riscv64-netbsd-none/machine/rwlock.h +1 -0
  915. package/libc/include/riscv64-netbsd-none/machine/wchar_limits.h +4 -0
  916. package/libc/include/riscv64-openbsd-none/machine/cpu.h +4 -8
  917. package/libc/include/riscv64-openbsd-none/machine/cpufunc.h +4 -4
  918. package/libc/include/riscv64-openbsd-none/machine/pmap.h +5 -1
  919. package/libc/include/riscv64-openbsd-none/machine/pte.h +9 -1
  920. package/libc/include/riscv64-openbsd-none/riscv64/cpu.h +4 -8
  921. package/libc/include/riscv64-openbsd-none/riscv64/cpufunc.h +4 -4
  922. package/libc/include/riscv64-openbsd-none/riscv64/pmap.h +5 -1
  923. package/libc/include/riscv64-openbsd-none/riscv64/pte.h +9 -1
  924. package/libc/include/s390x-linux-any/asm/unistd_64.h +1 -0
  925. package/libc/include/sparc-linux-any/asm/errno.h +2 -0
  926. package/libc/include/sparc-linux-any/asm/ioctls.h +4 -4
  927. package/libc/include/sparc-linux-any/asm/unistd_32.h +2 -0
  928. package/libc/include/sparc-linux-any/asm/unistd_64.h +2 -0
  929. package/libc/include/sparc-netbsd-none/float.h +3 -1
  930. package/libc/include/sparc-netbsd-none/machine/asm.h +10 -1
  931. package/libc/include/sparc-netbsd-none/machine/cgtworeg.h +2 -2
  932. package/libc/include/sparc-netbsd-none/machine/cpu.h +1 -1
  933. package/libc/include/sparc-netbsd-none/machine/float.h +3 -1
  934. package/libc/include/sparc-netbsd-none/machine/limits.h +4 -6
  935. package/libc/include/sparc-netbsd-none/machine/lwp_private.h +51 -0
  936. package/libc/include/sparc-netbsd-none/machine/mcontext.h +4 -22
  937. package/libc/include/sparc-netbsd-none/machine/mutex.h +1 -1
  938. package/libc/include/sparc-netbsd-none/machine/param.h +4 -2
  939. package/libc/include/sparc-netbsd-none/machine/pmap.h +2 -2
  940. package/libc/include/sparc-netbsd-none/machine/psl.h +6 -3
  941. package/libc/include/sparc-netbsd-none/machine/sxreg.h +5 -1
  942. package/libc/include/sparc-netbsd-none/machine/types.h +2 -2
  943. package/libc/include/sparc-netbsd-none/sparc/sxreg.h +5 -1
  944. package/libc/include/sparc64-netbsd-none/machine/cpu.h +2 -2
  945. package/libc/include/sparc64-netbsd-none/machine/ctlreg.h +8 -7
  946. package/libc/include/sparc64-netbsd-none/machine/intr.h +1 -1
  947. package/libc/include/sparc64-netbsd-none/machine/lwp_private.h +3 -0
  948. package/libc/include/sparc64-netbsd-none/machine/mcontext.h +4 -4
  949. package/libc/include/sparc64-netbsd-none/machine/mutex.h +1 -1
  950. package/libc/include/sparc64-netbsd-none/machine/param.h +8 -2
  951. package/libc/include/sparc64-netbsd-none/machine/psl.h +7 -2
  952. package/libc/include/sparc64-netbsd-none/machine/pte.h +2 -2
  953. package/libc/include/sparc64-netbsd-none/machine/vmparam.h +1 -1
  954. package/libc/include/x86-linux-any/asm/auxvec.h +0 -4
  955. package/libc/include/x86-linux-any/asm/kvm.h +13 -8
  956. package/libc/include/x86-linux-any/asm/svm.h +16 -16
  957. package/libc/include/x86-linux-any/asm/unistd_32.h +1 -0
  958. package/libc/include/x86-linux-any/asm/unistd_64.h +1 -0
  959. package/libc/include/x86-linux-any/asm/unistd_x32.h +1 -0
  960. package/libc/include/x86-netbsd-none/machine/asm.h +12 -4
  961. package/libc/include/x86-netbsd-none/machine/byte_swap.h +2 -2
  962. package/libc/include/x86-netbsd-none/machine/cpu.h +15 -4
  963. package/libc/include/x86-netbsd-none/machine/elf_machdep.h +2 -1
  964. package/libc/include/x86-netbsd-none/machine/lwp_private.h +3 -0
  965. package/libc/include/x86-netbsd-none/machine/mcontext.h +6 -24
  966. package/libc/include/x86-netbsd-none/machine/param.h +9 -1
  967. package/libc/include/x86-netbsd-none/machine/pcb.h +6 -2
  968. package/libc/include/x86-netbsd-none/machine/ptrace.h +2 -2
  969. package/libc/include/x86-netbsd-none/machine/types.h +2 -1
  970. package/libc/include/x86-openbsd-none/i386/specialreg.h +3 -1
  971. package/libc/include/x86-openbsd-none/machine/specialreg.h +3 -1
  972. package/libc/include/x86_64-netbsd-none/amd64/asm.h +11 -3
  973. package/libc/include/x86_64-netbsd-none/amd64/byte_swap.h +2 -2
  974. package/libc/include/x86_64-netbsd-none/amd64/cpu.h +13 -3
  975. package/libc/include/x86_64-netbsd-none/amd64/frame.h +2 -2
  976. package/libc/include/x86_64-netbsd-none/amd64/lwp_private.h +3 -0
  977. package/libc/include/x86_64-netbsd-none/amd64/mcontext.h +5 -23
  978. package/libc/include/x86_64-netbsd-none/amd64/param.h +23 -4
  979. package/libc/include/x86_64-netbsd-none/amd64/pcb.h +14 -3
  980. package/libc/include/x86_64-netbsd-none/amd64/ptrace.h +2 -2
  981. package/libc/include/x86_64-netbsd-none/amd64/types.h +2 -1
  982. package/libc/include/x86_64-netbsd-none/machine/asm.h +11 -3
  983. package/libc/include/x86_64-netbsd-none/machine/byte_swap.h +2 -2
  984. package/libc/include/x86_64-netbsd-none/machine/cpu.h +13 -3
  985. package/libc/include/x86_64-netbsd-none/machine/frame.h +2 -2
  986. package/libc/include/x86_64-netbsd-none/machine/lwp_private.h +3 -0
  987. package/libc/include/x86_64-netbsd-none/machine/mcontext.h +5 -23
  988. package/libc/include/x86_64-netbsd-none/machine/param.h +23 -4
  989. package/libc/include/x86_64-netbsd-none/machine/pcb.h +14 -3
  990. package/libc/include/x86_64-netbsd-none/machine/ptrace.h +2 -2
  991. package/libc/include/x86_64-netbsd-none/machine/types.h +2 -1
  992. package/libc/include/x86_64-openbsd-none/amd64/conf.h +11 -2
  993. package/libc/include/x86_64-openbsd-none/amd64/cpu.h +14 -4
  994. package/libc/include/x86_64-openbsd-none/amd64/cpufunc.h +2 -3
  995. package/libc/include/x86_64-openbsd-none/amd64/ghcb.h +2 -1
  996. package/libc/include/x86_64-openbsd-none/amd64/i82489var.h +2 -4
  997. package/libc/include/x86_64-openbsd-none/amd64/i8259.h +1 -53
  998. package/libc/include/x86_64-openbsd-none/amd64/intr.h +5 -2
  999. package/libc/include/x86_64-openbsd-none/amd64/intrdefs.h +9 -7
  1000. package/libc/include/x86_64-openbsd-none/amd64/kexec.h +48 -0
  1001. package/libc/include/x86_64-openbsd-none/amd64/specialreg.h +4 -1
  1002. package/libc/include/x86_64-openbsd-none/machine/conf.h +11 -2
  1003. package/libc/include/x86_64-openbsd-none/machine/cpu.h +14 -4
  1004. package/libc/include/x86_64-openbsd-none/machine/cpufunc.h +2 -3
  1005. package/libc/include/x86_64-openbsd-none/machine/ghcb.h +2 -1
  1006. package/libc/include/x86_64-openbsd-none/machine/i82489var.h +2 -4
  1007. package/libc/include/x86_64-openbsd-none/machine/i8259.h +1 -53
  1008. package/libc/include/x86_64-openbsd-none/machine/intr.h +5 -2
  1009. package/libc/include/x86_64-openbsd-none/machine/intrdefs.h +9 -7
  1010. package/libc/include/x86_64-openbsd-none/machine/kexec.h +48 -0
  1011. package/libc/include/x86_64-openbsd-none/machine/specialreg.h +4 -1
  1012. package/libc/include/xtensa-linux-any/asm/unistd_32.h +1 -0
  1013. package/libc/netbsd/abilists +0 -0
  1014. package/libc/netbsd/lib/csu/arch/riscv/crt0.S +62 -0
  1015. package/libc/netbsd/lib/csu/common/crt0-common.c +32 -7
  1016. package/libc/netbsd/lib/csu/common/csu-common.h +2 -0
  1017. package/libc/openbsd/abilists +0 -0
  1018. package/libcxx/include/__algorithm/all_of.h +11 -5
  1019. package/libcxx/include/__algorithm/comp.h +4 -0
  1020. package/libcxx/include/__algorithm/copy.h +28 -147
  1021. package/libcxx/include/__algorithm/copy_backward.h +9 -24
  1022. package/libcxx/include/__algorithm/copy_n.h +50 -16
  1023. package/libcxx/include/__algorithm/count.h +2 -2
  1024. package/libcxx/include/__algorithm/equal.h +43 -55
  1025. package/libcxx/include/__algorithm/fill.h +26 -8
  1026. package/libcxx/include/__algorithm/fill_n.h +32 -46
  1027. package/libcxx/include/__algorithm/find.h +96 -39
  1028. package/libcxx/include/__algorithm/find_end.h +105 -0
  1029. package/libcxx/include/__algorithm/for_each.h +18 -24
  1030. package/libcxx/include/__algorithm/for_each_n.h +20 -47
  1031. package/libcxx/include/__algorithm/for_each_n_segment.h +1 -1
  1032. package/libcxx/include/__algorithm/for_each_segment.h +26 -0
  1033. package/libcxx/include/__algorithm/generate.h +4 -2
  1034. package/libcxx/include/__algorithm/generate_n.h +19 -6
  1035. package/libcxx/include/__algorithm/is_permutation.h +4 -4
  1036. package/libcxx/include/__algorithm/iterator_operations.h +3 -0
  1037. package/libcxx/include/__algorithm/lexicographical_compare.h +2 -2
  1038. package/libcxx/include/__algorithm/lexicographical_compare_three_way.h +6 -6
  1039. package/libcxx/include/__algorithm/make_heap.h +16 -4
  1040. package/libcxx/include/__algorithm/mismatch.h +2 -2
  1041. package/libcxx/include/__algorithm/move.h +8 -19
  1042. package/libcxx/include/__algorithm/move_backward.h +9 -24
  1043. package/libcxx/include/__algorithm/none_of.h +4 -4
  1044. package/libcxx/include/__algorithm/partial_sort.h +1 -1
  1045. package/libcxx/include/__algorithm/partial_sort_copy.h +1 -1
  1046. package/libcxx/include/__algorithm/pstl.h +9 -9
  1047. package/libcxx/include/__algorithm/radix_sort.h +27 -25
  1048. package/libcxx/include/__algorithm/ranges_copy_n.h +3 -26
  1049. package/libcxx/include/__algorithm/ranges_equal.h +17 -26
  1050. package/libcxx/include/__algorithm/ranges_fill.h +7 -6
  1051. package/libcxx/include/__algorithm/ranges_for_each.h +9 -1
  1052. package/libcxx/include/__algorithm/ranges_generate_n.h +2 -6
  1053. package/libcxx/include/__algorithm/ranges_search_n.h +2 -2
  1054. package/libcxx/include/__algorithm/rotate.h +27 -44
  1055. package/libcxx/include/__algorithm/search_n.h +49 -37
  1056. package/libcxx/include/__algorithm/sift_down.h +19 -18
  1057. package/libcxx/include/__algorithm/simd_utils.h +33 -4
  1058. package/libcxx/include/__algorithm/specialized_algorithms.h +54 -0
  1059. package/libcxx/include/__algorithm/stable_sort.h +1 -1
  1060. package/libcxx/include/__assertion_handler +31 -4
  1061. package/libcxx/include/__atomic/atomic.h +36 -60
  1062. package/libcxx/include/__atomic/atomic_flag.h +19 -37
  1063. package/libcxx/include/__atomic/atomic_ref.h +29 -12
  1064. package/libcxx/include/__atomic/atomic_sync.h +127 -55
  1065. package/libcxx/include/__atomic/atomic_sync_timed.h +144 -0
  1066. package/libcxx/include/__atomic/atomic_waitable_traits.h +103 -0
  1067. package/libcxx/include/__atomic/contention_t.h +27 -3
  1068. package/libcxx/include/__atomic/floating_point_helper.h +55 -0
  1069. package/libcxx/include/__bit/countl.h +1 -2
  1070. package/libcxx/include/__bit/countr.h +1 -2
  1071. package/libcxx/include/__bit/has_single_bit.h +1 -1
  1072. package/libcxx/include/__bit/popcount.h +0 -1
  1073. package/libcxx/include/__bit/rotate.h +15 -26
  1074. package/libcxx/include/__bit_reference +207 -18
  1075. package/libcxx/include/__charconv/from_chars_integral.h +1 -1
  1076. package/libcxx/include/__charconv/from_chars_result.h +1 -1
  1077. package/libcxx/include/__charconv/to_chars_integral.h +1 -0
  1078. package/libcxx/include/__charconv/to_chars_result.h +1 -1
  1079. package/libcxx/include/__charconv/traits.h +3 -24
  1080. package/libcxx/include/__chrono/day.h +11 -0
  1081. package/libcxx/include/__chrono/duration.h +58 -33
  1082. package/libcxx/include/__chrono/file_clock.h +4 -2
  1083. package/libcxx/include/__chrono/is_clock.h +72 -0
  1084. package/libcxx/include/__chrono/leap_second.h +13 -0
  1085. package/libcxx/include/__chrono/month.h +13 -0
  1086. package/libcxx/include/__chrono/month_weekday.h +22 -0
  1087. package/libcxx/include/__chrono/monthday.h +20 -0
  1088. package/libcxx/include/__chrono/steady_clock.h +1 -1
  1089. package/libcxx/include/__chrono/system_clock.h +3 -3
  1090. package/libcxx/include/__chrono/time_point.h +37 -13
  1091. package/libcxx/include/__chrono/weekday.h +25 -0
  1092. package/libcxx/include/__chrono/year.h +11 -0
  1093. package/libcxx/include/__chrono/year_month.h +13 -0
  1094. package/libcxx/include/__chrono/year_month_day.h +23 -0
  1095. package/libcxx/include/__chrono/year_month_weekday.h +26 -0
  1096. package/libcxx/include/__chrono/zoned_time.h +16 -0
  1097. package/libcxx/include/__compare/is_eq.h +6 -6
  1098. package/libcxx/include/__compare/strong_order.h +12 -30
  1099. package/libcxx/include/__compare/three_way_comparable.h +2 -2
  1100. package/libcxx/include/__concepts/comparison_common_type.h +40 -0
  1101. package/libcxx/include/__concepts/equality_comparable.h +2 -1
  1102. package/libcxx/include/__condition_variable/condition_variable.h +1 -1
  1103. package/libcxx/include/__config +63 -280
  1104. package/libcxx/include/__configuration/abi.h +14 -24
  1105. package/libcxx/include/__configuration/availability.h +65 -118
  1106. package/libcxx/include/__configuration/compiler.h +6 -6
  1107. package/libcxx/include/__configuration/experimental.h +38 -0
  1108. package/libcxx/include/__configuration/hardening.h +215 -0
  1109. package/libcxx/include/__configuration/language.h +3 -0
  1110. package/libcxx/include/__configuration/platform.h +9 -16
  1111. package/libcxx/include/__coroutine/coroutine_handle.h +9 -9
  1112. package/libcxx/include/__coroutine/noop_coroutine_handle.h +11 -13
  1113. package/libcxx/include/__debug_utils/strict_weak_ordering_check.h +1 -1
  1114. package/libcxx/include/__exception/exception.h +6 -4
  1115. package/libcxx/include/__exception/exception_ptr.h +27 -5
  1116. package/libcxx/include/__exception/nested_exception.h +2 -2
  1117. package/libcxx/include/__exception/operations.h +5 -5
  1118. package/libcxx/include/__expected/bad_expected_access.h +8 -6
  1119. package/libcxx/include/__expected/expected.h +62 -64
  1120. package/libcxx/include/__expected/unexpected.h +4 -4
  1121. package/libcxx/include/__filesystem/copy_options.h +4 -4
  1122. package/libcxx/include/__filesystem/directory_entry.h +37 -33
  1123. package/libcxx/include/__filesystem/directory_iterator.h +9 -11
  1124. package/libcxx/include/__filesystem/directory_options.h +7 -4
  1125. package/libcxx/include/__filesystem/file_status.h +3 -3
  1126. package/libcxx/include/__filesystem/filesystem_error.h +9 -10
  1127. package/libcxx/include/__filesystem/operations.h +97 -66
  1128. package/libcxx/include/__filesystem/path.h +68 -64
  1129. package/libcxx/include/__filesystem/path_iterator.h +1 -3
  1130. package/libcxx/include/__filesystem/perm_options.h +4 -4
  1131. package/libcxx/include/__filesystem/perms.h +4 -4
  1132. package/libcxx/include/__filesystem/recursive_directory_iterator.h +9 -14
  1133. package/libcxx/include/__filesystem/space_info.h +1 -1
  1134. package/libcxx/include/__filesystem/u8path.h +12 -14
  1135. package/libcxx/include/__flat_map/flat_map.h +88 -71
  1136. package/libcxx/include/__flat_map/flat_multimap.h +251 -172
  1137. package/libcxx/include/__flat_map/key_value_iterator.h +0 -1
  1138. package/libcxx/include/__flat_map/utils.h +1 -0
  1139. package/libcxx/include/__flat_set/flat_multiset.h +211 -143
  1140. package/libcxx/include/__flat_set/flat_set.h +86 -68
  1141. package/libcxx/include/__format/concepts.h +0 -14
  1142. package/libcxx/include/__format/extended_grapheme_cluster_table.h +3 -2
  1143. package/libcxx/include/__format/fmt_pair_like.h +42 -0
  1144. package/libcxx/include/__format/format_arg.h +7 -10
  1145. package/libcxx/include/__format/format_args.h +1 -1
  1146. package/libcxx/include/__format/format_context.h +5 -5
  1147. package/libcxx/include/__format/format_parse_context.h +2 -2
  1148. package/libcxx/include/__format/formatter_output.h +30 -34
  1149. package/libcxx/include/__format/indic_conjunct_break_table.h +3 -2
  1150. package/libcxx/include/__format/range_default_formatter.h +2 -41
  1151. package/libcxx/include/__format/range_format.h +71 -0
  1152. package/libcxx/include/__format/range_formatter.h +1 -0
  1153. package/libcxx/include/__format/width_estimation_table.h +4 -2
  1154. package/libcxx/include/__functional/bind.h +10 -15
  1155. package/libcxx/include/__functional/bind_back.h +1 -1
  1156. package/libcxx/include/__functional/bind_front.h +1 -1
  1157. package/libcxx/include/__functional/function.h +57 -75
  1158. package/libcxx/include/__functional/hash.h +1 -10
  1159. package/libcxx/include/__functional/identity.h +1 -1
  1160. package/libcxx/include/__functional/is_transparent.h +8 -0
  1161. package/libcxx/include/__functional/mem_fn.h +2 -1
  1162. package/libcxx/include/__functional/operations.h +18 -0
  1163. package/libcxx/include/__functional/ranges_operations.h +7 -0
  1164. package/libcxx/include/__functional/reference_wrapper.h +7 -5
  1165. package/libcxx/include/__functional/weak_result_type.h +14 -28
  1166. package/libcxx/include/__fwd/ios.h +1 -1
  1167. package/libcxx/include/__fwd/tuple.h +14 -0
  1168. package/libcxx/include/__hash_table +371 -357
  1169. package/libcxx/include/__ios/fpos.h +4 -4
  1170. package/libcxx/include/__iterator/back_insert_iterator.h +1 -7
  1171. package/libcxx/include/__iterator/bounded_iter.h +7 -8
  1172. package/libcxx/include/__iterator/concepts.h +6 -9
  1173. package/libcxx/include/__iterator/cpp17_iterator_concepts.h +13 -12
  1174. package/libcxx/include/__iterator/distance.h +40 -18
  1175. package/libcxx/include/__iterator/front_insert_iterator.h +1 -7
  1176. package/libcxx/include/__iterator/insert_iterator.h +1 -7
  1177. package/libcxx/include/__iterator/istream_iterator.h +6 -7
  1178. package/libcxx/include/__iterator/istreambuf_iterator.h +6 -7
  1179. package/libcxx/include/__iterator/iter_move.h +1 -1
  1180. package/libcxx/include/__iterator/iterator.h +13 -0
  1181. package/libcxx/include/__iterator/iterator_traits.h +13 -14
  1182. package/libcxx/include/__iterator/ostream_iterator.h +1 -7
  1183. package/libcxx/include/__iterator/ostreambuf_iterator.h +1 -7
  1184. package/libcxx/include/__iterator/reverse_iterator.h +8 -13
  1185. package/libcxx/include/__iterator/segmented_iterator.h +3 -8
  1186. package/libcxx/include/__iterator/static_bounded_iter.h +3 -3
  1187. package/libcxx/include/__iterator/wrap_iter.h +8 -6
  1188. package/libcxx/include/__locale +3 -10
  1189. package/libcxx/include/__locale_dir/locale_base_api/bsd_locale_fallbacks.h +0 -10
  1190. package/libcxx/include/__locale_dir/locale_base_api.h +5 -28
  1191. package/libcxx/include/__locale_dir/messages.h +1 -1
  1192. package/libcxx/include/__locale_dir/money.h +2 -2
  1193. package/libcxx/include/__locale_dir/num.h +190 -243
  1194. package/libcxx/include/__locale_dir/pad_and_output.h +5 -6
  1195. package/libcxx/include/__locale_dir/support/bsd_like.h +0 -20
  1196. package/libcxx/include/__locale_dir/support/fuchsia.h +0 -7
  1197. package/libcxx/include/__locale_dir/support/linux.h +0 -37
  1198. package/libcxx/include/__locale_dir/support/netbsd.h +0 -2
  1199. package/libcxx/include/__locale_dir/support/newlib.h +243 -0
  1200. package/libcxx/include/__locale_dir/support/no_locale/characters.h +0 -4
  1201. package/libcxx/include/__locale_dir/support/no_locale/strtonum.h +0 -9
  1202. package/libcxx/include/__locale_dir/support/windows.h +0 -29
  1203. package/libcxx/include/__locale_dir/time.h +3 -7
  1204. package/libcxx/include/__math/hypot.h +1 -1
  1205. package/libcxx/include/__math/logarithms.h +1 -1
  1206. package/libcxx/include/__math/traits.h +80 -11
  1207. package/libcxx/include/__mdspan/extents.h +7 -4
  1208. package/libcxx/include/__mdspan/layout_stride.h +4 -5
  1209. package/libcxx/include/__mdspan/mdspan.h +29 -23
  1210. package/libcxx/include/__memory/addressof.h +7 -5
  1211. package/libcxx/include/__memory/align.h +18 -1
  1212. package/libcxx/include/__memory/allocate_at_least.h +15 -10
  1213. package/libcxx/include/__memory/allocator.h +14 -26
  1214. package/libcxx/include/__memory/allocator_traits.h +6 -4
  1215. package/libcxx/include/__memory/compressed_pair.h +15 -9
  1216. package/libcxx/include/__memory/construct_at.h +12 -23
  1217. package/libcxx/include/__memory/inout_ptr.h +1 -1
  1218. package/libcxx/include/__memory/is_sufficiently_aligned.h +1 -1
  1219. package/libcxx/include/__memory/out_ptr.h +1 -1
  1220. package/libcxx/include/__memory/pointer_traits.h +1 -1
  1221. package/libcxx/include/__memory/raw_storage_iterator.h +3 -9
  1222. package/libcxx/include/__memory/shared_count.h +9 -30
  1223. package/libcxx/include/__memory/shared_ptr.h +100 -145
  1224. package/libcxx/include/__memory/temp_value.h +1 -2
  1225. package/libcxx/include/__memory/uninitialized_algorithms.h +44 -115
  1226. package/libcxx/include/__memory/unique_ptr.h +14 -16
  1227. package/libcxx/include/__memory/uses_allocator_construction.h +1 -0
  1228. package/libcxx/include/__memory_resource/memory_resource.h +4 -2
  1229. package/libcxx/include/__memory_resource/monotonic_buffer_resource.h +1 -1
  1230. package/libcxx/include/__memory_resource/polymorphic_allocator.h +13 -8
  1231. package/libcxx/include/__memory_resource/pool_options.h +1 -1
  1232. package/libcxx/include/__memory_resource/synchronized_pool_resource.h +4 -2
  1233. package/libcxx/include/__memory_resource/unsynchronized_pool_resource.h +1 -1
  1234. package/libcxx/include/__mutex/mutex.h +2 -2
  1235. package/libcxx/include/__mutex/once_flag.h +14 -11
  1236. package/libcxx/include/__mutex/tag_types.h +3 -3
  1237. package/libcxx/include/__mutex/unique_lock.h +8 -7
  1238. package/libcxx/include/__new/align_val_t.h +6 -0
  1239. package/libcxx/include/__new/allocate.h +1 -2
  1240. package/libcxx/include/__new/exceptions.h +8 -2
  1241. package/libcxx/include/__new/global_new_delete.h +4 -11
  1242. package/libcxx/include/__new/interference_size.h +0 -4
  1243. package/libcxx/include/__new/launder.h +3 -5
  1244. package/libcxx/include/__new/nothrow_t.h +1 -1
  1245. package/libcxx/include/__numeric/gcd_lcm.h +24 -34
  1246. package/libcxx/include/__numeric/midpoint.h +9 -14
  1247. package/libcxx/include/__numeric/pstl.h +2 -2
  1248. package/libcxx/include/__numeric/saturation_arithmetic.h +13 -5
  1249. package/libcxx/include/__ostream/basic_ostream.h +8 -8
  1250. package/libcxx/include/__pstl/backends/default.h +14 -14
  1251. package/libcxx/include/__pstl/backends/libdispatch.h +2 -2
  1252. package/libcxx/include/__pstl/cpu_algos/find_if.h +1 -1
  1253. package/libcxx/include/__pstl/cpu_algos/transform.h +5 -6
  1254. package/libcxx/include/__pstl/cpu_algos/transform_reduce.h +5 -4
  1255. package/libcxx/include/__random/binomial_distribution.h +10 -4
  1256. package/libcxx/include/__random/mersenne_twister_engine.h +50 -154
  1257. package/libcxx/include/__random/piecewise_constant_distribution.h +3 -2
  1258. package/libcxx/include/__random/piecewise_linear_distribution.h +3 -2
  1259. package/libcxx/include/__ranges/adjacent_transform_view.h +406 -0
  1260. package/libcxx/include/__ranges/adjacent_view.h +419 -0
  1261. package/libcxx/include/__ranges/as_rvalue_view.h +9 -9
  1262. package/libcxx/include/__ranges/chunk_by_view.h +6 -6
  1263. package/libcxx/include/__ranges/common_view.h +7 -7
  1264. package/libcxx/include/__ranges/drop_view.h +8 -8
  1265. package/libcxx/include/__ranges/drop_while_view.h +5 -5
  1266. package/libcxx/include/__ranges/elements_of.h +49 -0
  1267. package/libcxx/include/__ranges/empty_view.h +5 -5
  1268. package/libcxx/include/__ranges/filter_view.h +10 -10
  1269. package/libcxx/include/__ranges/iota_view.h +41 -22
  1270. package/libcxx/include/__ranges/owning_view.h +15 -15
  1271. package/libcxx/include/__ranges/ref_view.h +6 -6
  1272. package/libcxx/include/__ranges/repeat_view.h +17 -10
  1273. package/libcxx/include/__ranges/single_view.h +8 -8
  1274. package/libcxx/include/__ranges/take_view.h +9 -9
  1275. package/libcxx/include/__ranges/transform_view.h +1 -2
  1276. package/libcxx/include/__ranges/view_interface.h +10 -10
  1277. package/libcxx/include/__ranges/zip_transform_view.h +357 -0
  1278. package/libcxx/include/__ranges/zip_view.h +20 -20
  1279. package/libcxx/include/__split_buffer +612 -240
  1280. package/libcxx/include/__stop_token/atomic_unique_lock.h +1 -1
  1281. package/libcxx/include/__stop_token/stop_callback.h +2 -2
  1282. package/libcxx/include/__stop_token/stop_source.h +1 -1
  1283. package/libcxx/include/__stop_token/stop_state.h +4 -4
  1284. package/libcxx/include/__stop_token/stop_token.h +1 -1
  1285. package/libcxx/include/__string/char_traits.h +51 -31
  1286. package/libcxx/include/__string/constexpr_c_functions.h +5 -5
  1287. package/libcxx/include/__support/xlocale/__strtonum_fallback.h +0 -8
  1288. package/libcxx/include/__system_error/error_category.h +8 -8
  1289. package/libcxx/include/__system_error/error_code.h +5 -5
  1290. package/libcxx/include/__system_error/error_condition.h +4 -4
  1291. package/libcxx/include/__system_error/system_error.h +1 -1
  1292. package/libcxx/include/__thread/id.h +1 -1
  1293. package/libcxx/include/__thread/jthread.h +1 -1
  1294. package/libcxx/include/__thread/poll_with_backoff.h +27 -8
  1295. package/libcxx/include/__thread/support/c11.h +8 -8
  1296. package/libcxx/include/__thread/support/pthread.h +8 -8
  1297. package/libcxx/include/__thread/support/windows.h +8 -8
  1298. package/libcxx/include/__thread/thread.h +13 -8
  1299. package/libcxx/include/__thread/timed_backoff_policy.h +3 -2
  1300. package/libcxx/include/__tree +849 -701
  1301. package/libcxx/include/__tuple/sfinae_helpers.h +1 -44
  1302. package/libcxx/include/__tuple/tuple_element.h +0 -12
  1303. package/libcxx/include/__tuple/tuple_size.h +0 -4
  1304. package/libcxx/include/__tuple/tuple_transform.h +45 -0
  1305. package/libcxx/include/__type_traits/aligned_storage.h +13 -40
  1306. package/libcxx/include/__type_traits/desugars_to.h +4 -0
  1307. package/libcxx/include/__type_traits/invoke.h +8 -0
  1308. package/libcxx/include/__type_traits/is_allocator.h +6 -7
  1309. package/libcxx/include/__type_traits/is_array.h +26 -0
  1310. package/libcxx/include/__type_traits/is_equality_comparable.h +16 -21
  1311. package/libcxx/include/__type_traits/is_final.h +1 -1
  1312. package/libcxx/include/__type_traits/is_floating_point.h +7 -6
  1313. package/libcxx/include/__type_traits/is_generic_transparent_comparator.h +30 -0
  1314. package/libcxx/include/__type_traits/is_specialization.h +2 -6
  1315. package/libcxx/include/__type_traits/is_within_lifetime.h +29 -0
  1316. package/libcxx/include/__type_traits/make_transparent.h +52 -0
  1317. package/libcxx/include/__type_traits/reference_constructs_from_temporary.h +1 -7
  1318. package/libcxx/include/__type_traits/reference_converts_from_temporary.h +1 -1
  1319. package/libcxx/include/__utility/cmp.h +19 -7
  1320. package/libcxx/include/__utility/default_three_way_comparator.h +70 -0
  1321. package/libcxx/include/__utility/in_place.h +1 -1
  1322. package/libcxx/include/__utility/integer_sequence.h +56 -41
  1323. package/libcxx/include/__utility/lazy_synth_three_way_comparator.h +120 -0
  1324. package/libcxx/include/__utility/pair.h +22 -25
  1325. package/libcxx/include/__utility/scope_guard.h +2 -0
  1326. package/libcxx/include/__utility/try_key_extraction.h +114 -0
  1327. package/libcxx/include/__vector/vector.h +187 -160
  1328. package/libcxx/include/__vector/vector_bool.h +76 -83
  1329. package/libcxx/include/any +118 -155
  1330. package/libcxx/include/array +88 -56
  1331. package/libcxx/include/atomic +2 -0
  1332. package/libcxx/include/barrier +20 -24
  1333. package/libcxx/include/bitset +49 -30
  1334. package/libcxx/include/ccomplex +3 -11
  1335. package/libcxx/include/chrono +47 -0
  1336. package/libcxx/include/ciso646 +3 -6
  1337. package/libcxx/include/complex +77 -65
  1338. package/libcxx/include/complex.h +10 -10
  1339. package/libcxx/include/condition_variable +3 -3
  1340. package/libcxx/include/cstdalign +3 -10
  1341. package/libcxx/include/cstdbool +3 -10
  1342. package/libcxx/include/ctgmath +2 -11
  1343. package/libcxx/include/ctype.h +24 -24
  1344. package/libcxx/include/cwchar +2 -2
  1345. package/libcxx/include/deque +109 -225
  1346. package/libcxx/include/errno.h +269 -269
  1347. package/libcxx/include/exception +4 -1
  1348. package/libcxx/include/ext/hash_map +7 -48
  1349. package/libcxx/include/ext/hash_set +2 -8
  1350. package/libcxx/include/fenv.h +43 -43
  1351. package/libcxx/include/flat_map +663 -11
  1352. package/libcxx/include/flat_set +543 -8
  1353. package/libcxx/include/float.h +16 -16
  1354. package/libcxx/include/forward_list +33 -53
  1355. package/libcxx/include/fstream +57 -42
  1356. package/libcxx/include/future +41 -51
  1357. package/libcxx/include/initializer_list +9 -3
  1358. package/libcxx/include/inttypes.h +16 -16
  1359. package/libcxx/include/ios +28 -28
  1360. package/libcxx/include/istream +19 -13
  1361. package/libcxx/include/iterator +10 -0
  1362. package/libcxx/include/latch +7 -5
  1363. package/libcxx/include/limits +4 -4
  1364. package/libcxx/include/list +61 -79
  1365. package/libcxx/include/map +386 -274
  1366. package/libcxx/include/math.h +19 -0
  1367. package/libcxx/include/mdspan +1 -5
  1368. package/libcxx/include/mutex +29 -19
  1369. package/libcxx/include/optional +644 -149
  1370. package/libcxx/include/print +9 -5
  1371. package/libcxx/include/queue +39 -37
  1372. package/libcxx/include/ranges +48 -0
  1373. package/libcxx/include/regex +33 -31
  1374. package/libcxx/include/scoped_allocator +16 -11
  1375. package/libcxx/include/semaphore +15 -18
  1376. package/libcxx/include/set +220 -192
  1377. package/libcxx/include/shared_mutex +3 -8
  1378. package/libcxx/include/span +53 -37
  1379. package/libcxx/include/sstream +34 -28
  1380. package/libcxx/include/stack +13 -15
  1381. package/libcxx/include/stddef.h +10 -10
  1382. package/libcxx/include/stdexcept +2 -2
  1383. package/libcxx/include/stdio.h +20 -21
  1384. package/libcxx/include/streambuf +59 -19
  1385. package/libcxx/include/string +574 -573
  1386. package/libcxx/include/string_view +113 -89
  1387. package/libcxx/include/strstream +10 -10
  1388. package/libcxx/include/syncstream +4 -4
  1389. package/libcxx/include/tgmath.h +12 -12
  1390. package/libcxx/include/tuple +242 -212
  1391. package/libcxx/include/type_traits +8 -2
  1392. package/libcxx/include/typeindex +5 -3
  1393. package/libcxx/include/typeinfo +92 -89
  1394. package/libcxx/include/unordered_map +179 -304
  1395. package/libcxx/include/unordered_set +168 -195
  1396. package/libcxx/include/utility +12 -0
  1397. package/libcxx/include/valarray +106 -161
  1398. package/libcxx/include/variant +25 -33
  1399. package/libcxx/include/version +41 -24
  1400. package/libcxx/include/wctype.h +29 -29
  1401. package/libcxx/libc/hdr/errno_macros.h +3 -1
  1402. package/libcxx/libc/hdr/stdint_proxy.h +18 -0
  1403. package/libcxx/libc/hdr/types/wchar_t.h +23 -0
  1404. package/libcxx/libc/hdr/wchar_overlay.h +69 -0
  1405. package/libcxx/libc/include/llvm-libc-macros/cfloat128-macros.h +41 -0
  1406. package/libcxx/libc/include/llvm-libc-macros/cfloat16-macros.h +20 -0
  1407. package/libcxx/libc/include/llvm-libc-macros/wchar-macros.h +18 -0
  1408. package/libcxx/libc/include/llvm-libc-types/cfloat128.h +11 -28
  1409. package/libcxx/libc/include/llvm-libc-types/cfloat16.h +4 -7
  1410. package/libcxx/libc/include/llvm-libc-types/wint_t.h +14 -0
  1411. package/libcxx/libc/shared/libc_common.h +5 -0
  1412. package/libcxx/libc/src/__support/CPP/bit.h +50 -12
  1413. package/libcxx/libc/src/__support/CPP/type_traits/is_complex.h +7 -0
  1414. package/libcxx/libc/src/__support/CPP/type_traits/is_destructible.h +2 -1
  1415. package/libcxx/libc/src/__support/CPP/type_traits/is_unsigned.h +6 -0
  1416. package/libcxx/libc/src/__support/CPP/utility/integer_sequence.h +10 -0
  1417. package/libcxx/libc/src/__support/FPUtil/FPBits.h +6 -7
  1418. package/libcxx/libc/src/__support/FPUtil/rounding_mode.h +50 -4
  1419. package/libcxx/libc/src/__support/big_int.h +14 -14
  1420. package/libcxx/libc/src/__support/common.h +3 -2
  1421. package/libcxx/libc/src/__support/ctype_utils.h +19 -12
  1422. package/libcxx/libc/src/__support/detailed_powers_of_ten.h +1 -2
  1423. package/libcxx/libc/src/__support/high_precision_decimal.h +33 -14
  1424. package/libcxx/libc/src/__support/libc_assert.h +2 -0
  1425. package/libcxx/libc/src/__support/macros/attributes.h +44 -1
  1426. package/libcxx/libc/src/__support/macros/config.h +23 -0
  1427. package/libcxx/libc/src/__support/macros/null_check.h +1 -2
  1428. package/libcxx/libc/src/__support/macros/optimization.h +3 -0
  1429. package/libcxx/libc/src/__support/macros/properties/architectures.h +5 -1
  1430. package/libcxx/libc/src/__support/macros/properties/compiler.h +8 -3
  1431. package/libcxx/libc/src/__support/macros/properties/cpu_features.h +17 -1
  1432. package/libcxx/libc/src/__support/macros/properties/types.h +2 -3
  1433. package/libcxx/libc/src/__support/macros/sanitizer.h +0 -10
  1434. package/libcxx/libc/src/__support/math_extras.h +20 -4
  1435. package/libcxx/libc/src/__support/str_to_float.h +98 -125
  1436. package/libcxx/libc/src/__support/str_to_integer.h +39 -27
  1437. package/libcxx/libc/src/__support/wctype_utils.h +588 -0
  1438. package/libcxx/src/any.cpp +4 -0
  1439. package/libcxx/src/atomic.cpp +365 -80
  1440. package/libcxx/src/barrier.cpp +4 -3
  1441. package/libcxx/src/charconv.cpp +6 -3
  1442. package/libcxx/src/condition_variable_destructor.cpp +1 -1
  1443. package/libcxx/src/error_category.cpp +3 -1
  1444. package/libcxx/src/exception.cpp +2 -10
  1445. package/libcxx/src/experimental/time_zone.cpp +1 -1
  1446. package/libcxx/src/experimental/tzdb.cpp +4 -1
  1447. package/libcxx/src/filesystem/error.h +4 -22
  1448. package/libcxx/src/filesystem/format_string.h +9 -18
  1449. package/libcxx/src/filesystem/int128_builtins.cpp +2 -0
  1450. package/libcxx/src/filesystem/operations.cpp +2 -9
  1451. package/libcxx/src/filesystem/path.cpp +3 -1
  1452. package/libcxx/src/include/aligned_alloc.h +65 -0
  1453. package/libcxx/src/include/config_elast.h +1 -1
  1454. package/libcxx/src/include/from_chars_floating_point.h +11 -7
  1455. package/libcxx/src/include/overridable_function.h +8 -10
  1456. package/libcxx/src/iostream.cpp +56 -37
  1457. package/libcxx/src/locale.cpp +213 -196
  1458. package/libcxx/src/memory.cpp +12 -14
  1459. package/libcxx/src/mutex_destructor.cpp +1 -1
  1460. package/libcxx/src/new.cpp +5 -5
  1461. package/libcxx/src/optional.cpp +4 -0
  1462. package/libcxx/src/print.cpp +9 -1
  1463. package/libcxx/src/random.cpp +0 -26
  1464. package/libcxx/src/string.cpp +10 -25
  1465. package/libcxx/src/support/runtime/exception_fallback.ipp +2 -0
  1466. package/libcxx/src/support/runtime/exception_glibcxx.ipp +3 -0
  1467. package/libcxx/src/support/runtime/exception_libcxxabi.ipp +6 -2
  1468. package/libcxx/src/support/runtime/exception_libcxxrt.ipp +2 -0
  1469. package/libcxx/src/support/runtime/exception_msvc.ipp +2 -0
  1470. package/libcxx/src/support/runtime/exception_pointer_cxxabi.ipp +9 -10
  1471. package/libcxx/src/support/runtime/exception_pointer_glibcxx.ipp +2 -0
  1472. package/libcxx/src/support/runtime/exception_pointer_msvc.ipp +1 -0
  1473. package/libcxx/src/support/runtime/exception_pointer_unimplemented.ipp +1 -0
  1474. package/libcxx/src/support/win32/locale_win32.cpp +1 -1
  1475. package/libcxx/src/system_error.cpp +2 -0
  1476. package/libcxx/src/thread.cpp +1 -3
  1477. package/libcxx/src/valarray.cpp +1 -2
  1478. package/libcxx/src/vector.cpp +2 -2
  1479. package/libcxxabi/include/__cxxabi_config.h +42 -23
  1480. package/libcxxabi/src/cxa_exception.cpp +4 -2
  1481. package/libcxxabi/src/cxa_exception.h +16 -14
  1482. package/libcxxabi/src/cxa_personality.cpp +126 -9
  1483. package/libcxxabi/src/cxa_thread_atexit.cpp +2 -1
  1484. package/libcxxabi/src/demangle/DemangleConfig.h +4 -0
  1485. package/libcxxabi/src/demangle/ItaniumDemangle.h +9 -6
  1486. package/libcxxabi/src/demangle/Utility.h +21 -7
  1487. package/libcxxabi/src/fallback_malloc.cpp +1 -1
  1488. package/libcxxabi/src/private_typeinfo.cpp +6 -0
  1489. package/libcxxabi/src/stdlib_new_delete.cpp +5 -5
  1490. package/libtsan/LICENSE.TXT +311 -0
  1491. package/libtsan/builtins/assembly.h +41 -8
  1492. package/libtsan/interception/interception_win.cpp +4 -0
  1493. package/libtsan/sanitizer_common/sanitizer_allocator_primary32.h +1 -0
  1494. package/libtsan/sanitizer_common/sanitizer_allocator_primary64.h +18 -0
  1495. package/libtsan/sanitizer_common/sanitizer_common.h +15 -2
  1496. package/libtsan/sanitizer_common/sanitizer_common_interceptors.inc +30 -4
  1497. package/libtsan/sanitizer_common/sanitizer_common_interceptors_ioctl.inc +4 -0
  1498. package/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_aarch64.inc.S +2 -1
  1499. package/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_i386.inc.S +2 -0
  1500. package/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_x86_64.inc.S +2 -0
  1501. package/libtsan/sanitizer_common/sanitizer_common_syscalls.inc +18 -0
  1502. package/libtsan/sanitizer_common/sanitizer_file.cpp +40 -12
  1503. package/libtsan/sanitizer_common/sanitizer_file.h +3 -0
  1504. package/libtsan/sanitizer_common/sanitizer_flags.inc +7 -0
  1505. package/libtsan/sanitizer_common/sanitizer_fuchsia.cpp +30 -3
  1506. package/libtsan/sanitizer_common/sanitizer_haiku.cpp +2 -2
  1507. package/libtsan/sanitizer_common/sanitizer_internal_defs.h +1 -1
  1508. package/libtsan/sanitizer_common/sanitizer_libc.cpp +8 -0
  1509. package/libtsan/sanitizer_common/sanitizer_libc.h +1 -0
  1510. package/libtsan/sanitizer_common/sanitizer_linux.cpp +15 -7
  1511. package/libtsan/sanitizer_common/sanitizer_linux.h +3 -3
  1512. package/libtsan/sanitizer_common/sanitizer_linux_libcdep.cpp +1 -0
  1513. package/libtsan/sanitizer_common/sanitizer_mac.cpp +255 -104
  1514. package/libtsan/sanitizer_common/sanitizer_mac.h +5 -0
  1515. package/libtsan/sanitizer_common/sanitizer_netbsd.cpp +2 -2
  1516. package/libtsan/sanitizer_common/sanitizer_platform.h +27 -1
  1517. package/libtsan/sanitizer_common/sanitizer_platform_interceptors.h +5 -4
  1518. package/libtsan/sanitizer_common/sanitizer_platform_limits_posix.cpp +15 -17
  1519. package/libtsan/sanitizer_common/sanitizer_platform_limits_posix.h +32 -6
  1520. package/libtsan/sanitizer_common/sanitizer_posix.cpp +3 -12
  1521. package/libtsan/sanitizer_common/sanitizer_posix.h +2 -1
  1522. package/libtsan/sanitizer_common/sanitizer_posix_libcdep.cpp +19 -0
  1523. package/libtsan/sanitizer_common/sanitizer_procmaps_mac.cpp +102 -37
  1524. package/libtsan/sanitizer_common/sanitizer_redefine_builtins.h +1 -1
  1525. package/libtsan/sanitizer_common/sanitizer_signal_interceptors.inc +40 -2
  1526. package/libtsan/sanitizer_common/sanitizer_stoptheworld.h +1 -1
  1527. package/libtsan/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cpp +83 -12
  1528. package/libtsan/sanitizer_common/sanitizer_stoptheworld_mac.cpp +3 -3
  1529. package/libtsan/sanitizer_common/sanitizer_stoptheworld_netbsd_libcdep.cpp +7 -7
  1530. package/libtsan/sanitizer_common/sanitizer_stoptheworld_win.cpp +2 -2
  1531. package/libtsan/sanitizer_common/sanitizer_symbolizer_internal.h +5 -1
  1532. package/libtsan/sanitizer_common/sanitizer_symbolizer_libcdep.cpp +11 -1
  1533. package/libtsan/sanitizer_common/sanitizer_symbolizer_mac.cpp +86 -29
  1534. package/libtsan/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cpp +27 -16
  1535. package/libtsan/sanitizer_common/sanitizer_thread_registry.cpp +5 -4
  1536. package/libtsan/sanitizer_common/sanitizer_thread_registry.h +4 -4
  1537. package/libtsan/sanitizer_common/sanitizer_win.cpp +1 -3
  1538. package/libtsan/tsan_debugging.cpp +2 -2
  1539. package/libtsan/tsan_flags.cpp +37 -0
  1540. package/libtsan/tsan_flags.h +8 -0
  1541. package/libtsan/tsan_flags.inc +12 -0
  1542. package/libtsan/tsan_interceptors.h +9 -1
  1543. package/libtsan/tsan_interceptors_mac.cpp +19 -0
  1544. package/libtsan/tsan_interceptors_posix.cpp +78 -32
  1545. package/libtsan/tsan_interface.h +3 -3
  1546. package/libtsan/tsan_interface_ann.cpp +23 -9
  1547. package/libtsan/tsan_mman.cpp +18 -4
  1548. package/libtsan/tsan_platform.h +44 -7
  1549. package/libtsan/tsan_platform_linux.cpp +42 -14
  1550. package/libtsan/tsan_platform_mac.cpp +16 -3
  1551. package/libtsan/tsan_report.h +14 -1
  1552. package/libtsan/tsan_rtl.cpp +14 -0
  1553. package/libtsan/tsan_rtl.h +7 -2
  1554. package/libtsan/tsan_rtl_aarch64.S +3 -5
  1555. package/libtsan/tsan_rtl_access.cpp +8 -3
  1556. package/libtsan/tsan_rtl_amd64.S +2 -0
  1557. package/libtsan/tsan_rtl_mutex.cpp +94 -49
  1558. package/libtsan/tsan_rtl_report.cpp +132 -65
  1559. package/libtsan/tsan_rtl_thread.cpp +31 -9
  1560. package/libtsan/tsan_symbolize.cpp +1 -1
  1561. package/libtsan/tsan_symbolize.h +1 -1
  1562. package/libtsan/tsan_trace.h +1 -1
  1563. package/libunwind/include/__libunwind_config.h +11 -2
  1564. package/libunwind/include/libunwind.h +117 -11
  1565. package/libunwind/include/unwind_arm_ehabi.h +4 -1
  1566. package/libunwind/src/AddressSpace.hpp +42 -20
  1567. package/libunwind/src/CompactUnwinder.hpp +16 -5
  1568. package/libunwind/src/DwarfInstructions.hpp +24 -13
  1569. package/libunwind/src/DwarfParser.hpp +62 -23
  1570. package/libunwind/src/EHHeaderParser.hpp +7 -4
  1571. package/libunwind/src/Registers.hpp +226 -22
  1572. package/libunwind/src/Unwind-seh.cpp +6 -7
  1573. package/libunwind/src/Unwind-wasm.c +7 -7
  1574. package/libunwind/src/UnwindCursor.hpp +167 -49
  1575. package/libunwind/src/UnwindLevel1.c +46 -17
  1576. package/libunwind/src/UnwindRegistersRestore.S +46 -5
  1577. package/libunwind/src/UnwindRegistersSave.S +86 -2
  1578. package/libunwind/src/assembly.h +5 -1
  1579. package/libunwind/src/config.h +9 -0
  1580. package/libunwind/src/gcc_personality_v0.c +79 -6
  1581. package/libunwind/src/libunwind.cpp +104 -4
  1582. package/libunwind/src/libunwind_ext.h +7 -1
  1583. package/libunwind/src/shadow_stack_unwind.h +2 -2
  1584. package/lldb/pretty_printers.py +948 -0
  1585. package/package.json +1 -1
  1586. package/std/Build/Cache/Path.zig +35 -29
  1587. package/std/Build/Cache.zig +17 -7
  1588. package/std/Build/Configuration.zig +3428 -0
  1589. package/std/Build/Module.zig +99 -225
  1590. package/std/Build/Step/CheckFile.zig +17 -63
  1591. package/std/Build/Step/Compile.zig +97 -1426
  1592. package/std/Build/Step/ConfigHeader.zig +55 -944
  1593. package/std/Build/Step/Fail.zig +10 -20
  1594. package/std/Build/Step/FindProgram.zig +31 -0
  1595. package/std/Build/Step/Fmt.zig +22 -57
  1596. package/std/Build/Step/InstallArtifact.zig +26 -141
  1597. package/std/Build/Step/InstallDir.zig +14 -67
  1598. package/std/Build/Step/InstallFile.zig +12 -21
  1599. package/std/Build/Step/ObjCopy.zig +82 -199
  1600. package/std/Build/Step/Options.zig +27 -262
  1601. package/std/Build/Step/Run.zig +138 -2246
  1602. package/std/Build/Step/TranslateC.zig +55 -164
  1603. package/std/Build/Step/UpdateSourceFiles.zig +38 -91
  1604. package/std/Build/Step/WriteFile.zig +113 -328
  1605. package/std/Build/Step.zig +45 -916
  1606. package/std/Build/abi.zig +1 -1
  1607. package/std/Build.zig +644 -718
  1608. package/std/Io/Dir.zig +12 -7
  1609. package/std/Io/Dispatch.zig +5 -5
  1610. package/std/Io/File/Writer.zig +8 -6
  1611. package/std/Io/File.zig +6 -9
  1612. package/std/Io/Kqueue.zig +3 -3
  1613. package/std/Io/Reader.zig +8 -14
  1614. package/std/Io/RwLock.zig +2 -0
  1615. package/std/Io/Semaphore.zig +112 -17
  1616. package/std/Io/Terminal.zig +1 -1
  1617. package/std/Io/Threaded.zig +19 -16
  1618. package/std/Io/Uring.zig +7 -7
  1619. package/std/Io/Writer.zig +75 -10
  1620. package/std/Io/net/HostName.zig +11 -6
  1621. package/std/Io.zig +92 -28
  1622. package/std/Random/ChaCha.zig +2 -2
  1623. package/std/Random/benchmark.zig +2 -2
  1624. package/std/Random.zig +6 -6
  1625. package/std/SemanticVersion.zig +1 -1
  1626. package/std/Target/Query.zig +4 -5
  1627. package/std/Target/aarch64.zig +620 -77
  1628. package/std/Target/amdgcn.zig +421 -21
  1629. package/std/Target/arm.zig +40 -6
  1630. package/std/Target/bpf.zig +6 -0
  1631. package/std/Target/hexagon.zig +41 -6
  1632. package/std/Target/loongarch.zig +18 -0
  1633. package/std/Target/mips.zig +6 -0
  1634. package/std/Target/nvptx.zig +58 -35
  1635. package/std/Target/powerpc.zig +27 -19
  1636. package/std/Target/riscv.zig +512 -177
  1637. package/std/Target/sparc.zig +17 -0
  1638. package/std/Target/spirv.zig +1 -1
  1639. package/std/Target/wasm.zig +7 -0
  1640. package/std/Target/x86.zig +200 -31
  1641. package/std/Target/xtensa.zig +65 -0
  1642. package/std/Target.zig +97 -58
  1643. package/std/Thread.zig +17 -4
  1644. package/std/array_hash_map.zig +103 -57
  1645. package/std/array_list.zig +20 -35
  1646. package/std/ascii.zig +0 -9
  1647. package/std/atomic.zig +2 -0
  1648. package/std/base64.zig +5 -5
  1649. package/std/bit_set.zig +85 -93
  1650. package/std/c/serenity.zig +1 -6
  1651. package/std/c.zig +117 -36
  1652. package/std/compress/flate/Decompress.zig +3 -4
  1653. package/std/compress/zstd/Decompress.zig +7 -9
  1654. package/std/crypto/25519/curve25519.zig +2 -2
  1655. package/std/crypto/25519/edwards25519.zig +3 -3
  1656. package/std/crypto/25519/ristretto255.zig +2 -2
  1657. package/std/crypto/25519/scalar.zig +6 -6
  1658. package/std/crypto/25519/x25519.zig +1 -1
  1659. package/std/crypto/Certificate.zig +14 -2
  1660. package/std/crypto/Sha1.zig +1 -1
  1661. package/std/crypto/aegis.zig +45 -39
  1662. package/std/crypto/aes_ccm.zig +22 -22
  1663. package/std/crypto/aes_gcm.zig +10 -12
  1664. package/std/crypto/aes_ocb.zig +9 -9
  1665. package/std/crypto/argon2.zig +15 -15
  1666. package/std/crypto/ascon.zig +75 -35
  1667. package/std/crypto/bcrypt.zig +20 -10
  1668. package/std/crypto/benchmark.zig +7 -7
  1669. package/std/crypto/blake2.zig +100 -64
  1670. package/std/crypto/cbc_mac.zig +1 -1
  1671. package/std/crypto/chacha20.zig +10 -10
  1672. package/std/crypto/cmac.zig +3 -3
  1673. package/std/crypto/codecs/asn1/Oid.zig +12 -1
  1674. package/std/crypto/codecs/asn1/der/Encoder.zig +1 -1
  1675. package/std/crypto/codecs/asn1.zig +1 -1
  1676. package/std/crypto/codecs/base64_hex_ct.zig +3 -5
  1677. package/std/crypto/ecdsa.zig +9 -9
  1678. package/std/crypto/ff.zig +4 -5
  1679. package/std/crypto/ghash_polyval.zig +4 -4
  1680. package/std/crypto/hkdf.zig +1 -1
  1681. package/std/crypto/isap.zig +3 -3
  1682. package/std/crypto/kangarootwelve.zig +1 -1
  1683. package/std/crypto/keccak_p.zig +8 -8
  1684. package/std/crypto/md5.zig +1 -1
  1685. package/std/crypto/ml_dsa.zig +39 -39
  1686. package/std/crypto/ml_kem.zig +12 -34
  1687. package/std/crypto/modes.zig +2 -2
  1688. package/std/crypto/pbkdf2.zig +1 -1
  1689. package/std/crypto/pcurves/common.zig +4 -5
  1690. package/std/crypto/pcurves/p256/scalar.zig +3 -3
  1691. package/std/crypto/pcurves/p384/scalar.zig +2 -2
  1692. package/std/crypto/pcurves/secp256k1/scalar.zig +3 -3
  1693. package/std/crypto/pcurves/tests/p256.zig +5 -5
  1694. package/std/crypto/pcurves/tests/p384.zig +5 -5
  1695. package/std/crypto/pcurves/tests/secp256k1.zig +3 -3
  1696. package/std/crypto/salsa20.zig +8 -14
  1697. package/std/crypto/sha2.zig +2 -2
  1698. package/std/crypto/sha3.zig +2 -4
  1699. package/std/crypto/siphash.zig +1 -1
  1700. package/std/crypto/timing_safe.zig +10 -9
  1701. package/std/crypto/tls/Client.zig +89 -13
  1702. package/std/crypto/tls.zig +1 -1
  1703. package/std/crypto.zig +4 -3
  1704. package/std/debug/Dwarf.zig +21 -12
  1705. package/std/debug/Pdb.zig +86 -51
  1706. package/std/debug/SelfInfo/Elf.zig +13 -9
  1707. package/std/debug/SelfInfo/Windows.zig +3 -5
  1708. package/std/debug/cpu_context.zig +230 -38
  1709. package/std/debug.zig +16 -8
  1710. package/std/deque.zig +1 -1
  1711. package/std/elf.zig +22 -5
  1712. package/std/enums.zig +8 -20
  1713. package/std/fmt/float.zig +2 -0
  1714. package/std/fmt/parse_float/decimal.zig +1 -1
  1715. package/std/fmt/parse_float.zig +1 -1
  1716. package/std/fmt.zig +7 -8
  1717. package/std/fs/path.zig +7 -5
  1718. package/std/hash/Adler32.zig +3 -3
  1719. package/std/hash/benchmark.zig +2 -2
  1720. package/std/hash/wyhash.zig +2 -2
  1721. package/std/hash/xxhash.zig +0 -6
  1722. package/std/hash_map.zig +22 -2
  1723. package/std/heap/ArenaAllocator.zig +3 -5
  1724. package/std/heap/BufferFirstAllocator.zig +165 -0
  1725. package/std/heap/SafeAllocator.zig +2180 -0
  1726. package/std/heap/debug_allocator.zig +2 -2
  1727. package/std/heap/memory_pool.zig +34 -197
  1728. package/std/heap.zig +20 -133
  1729. package/std/http.zig +4 -5
  1730. package/std/json/Scanner.zig +2 -2
  1731. package/std/json/static.zig +2 -2
  1732. package/std/json.zig +1 -1
  1733. package/std/{builtin → lang}/assembly.zig +71 -0
  1734. package/std/{builtin.zig → lang.zig} +5 -3
  1735. package/std/leb128.zig +2 -2
  1736. package/std/math/acos.zig +6 -0
  1737. package/std/math/asin.zig +6 -0
  1738. package/std/math/atan.zig +5 -0
  1739. package/std/math/big/int.zig +5 -5
  1740. package/std/math/big.zig +4 -4
  1741. package/std/math/copysign.zig +1 -1
  1742. package/std/math/float.zig +62 -0
  1743. package/std/math/frexp.zig +4 -4
  1744. package/std/math/hypot.zig +4 -0
  1745. package/std/math/ilogb.zig +1 -1
  1746. package/std/math/isfinite.zig +1 -1
  1747. package/std/math/isinf.zig +1 -1
  1748. package/std/math/isnan.zig +1 -2
  1749. package/std/math/isnormal.zig +2 -2
  1750. package/std/math/iszero.zig +2 -2
  1751. package/std/math/ldexp.zig +2 -2
  1752. package/std/math/log10.zig +0 -2
  1753. package/std/math/modf.zig +1 -2
  1754. package/std/math/nextafter.zig +3 -4
  1755. package/std/math/pow.zig +1 -1
  1756. package/std/math/powi.zig +2 -3
  1757. package/std/math/signbit.zig +0 -1
  1758. package/std/math.zig +21 -26
  1759. package/std/mem/Allocator.zig +5 -9
  1760. package/std/mem.zig +52 -75
  1761. package/std/meta/trailer_flags.zig +1 -1
  1762. package/std/meta.zig +4 -36
  1763. package/std/multi_array_list.zig +24 -0
  1764. package/std/os/emscripten.zig +7 -6
  1765. package/std/os/linux/IoUring.zig +2 -0
  1766. package/std/os/linux/alpha.zig +358 -0
  1767. package/std/os/linux/arm.zig +0 -26
  1768. package/std/os/linux/bpf.zig +6 -0
  1769. package/std/os/linux/ioctl.zig +3 -2
  1770. package/std/os/linux/syscalls.zig +528 -1
  1771. package/std/os/linux/tls.zig +12 -1
  1772. package/std/os/linux/x86.zig +2 -2
  1773. package/std/os/linux/xtensa.zig +171 -0
  1774. package/std/os/linux.zig +794 -52
  1775. package/std/os/plan9.zig +1 -1
  1776. package/std/os/uefi/hii.zig +1 -1
  1777. package/std/os/uefi/tables/boot_services.zig +9 -8
  1778. package/std/os/uefi/tables/runtime_services.zig +1 -1
  1779. package/std/os/windows.zig +130 -1
  1780. package/std/os.zig +36 -0
  1781. package/std/pie.zig +21 -0
  1782. package/std/posix.zig +2 -2
  1783. package/std/process/Child.zig +20 -0
  1784. package/std/process/Environ.zig +28 -4
  1785. package/std/process.zig +13 -5
  1786. package/std/simd.zig +4 -21
  1787. package/std/start.zig +45 -12
  1788. package/std/std.zig +8 -1
  1789. package/std/tar/Writer.zig +39 -33
  1790. package/std/tar.zig +8 -4
  1791. package/std/testing.zig +68 -15
  1792. package/std/unicode.zig +13 -8
  1793. package/std/zig/Ast/Render.zig +6 -30
  1794. package/std/zig/Ast.zig +12 -37
  1795. package/std/zig/AstGen.zig +174 -258
  1796. package/std/zig/AstRlAnnotate.zig +1 -11
  1797. package/std/zig/AstSmith.zig +5 -11
  1798. package/std/zig/ErrorBundle.zig +6 -2
  1799. package/std/zig/LibCDirs.zig +14 -7
  1800. package/std/zig/LibCInstallation.zig +49 -14
  1801. package/std/zig/Parse.zig +11 -76
  1802. package/std/zig/PkgConfig.zig +146 -0
  1803. package/std/zig/TokenSmith.zig +0 -6
  1804. package/std/zig/WindowsSdk.zig +18 -18
  1805. package/std/zig/Zir.zig +15 -69
  1806. package/std/zig/ZonGen.zig +19 -27
  1807. package/std/zig/llvm/Builder.zig +39 -33
  1808. package/std/zig/llvm/bitcode_writer.zig +3 -3
  1809. package/std/zig/llvm/ir.zig +8 -8
  1810. package/std/zig/system/arm.zig +56 -2
  1811. package/std/zig/system/linux.zig +4 -0
  1812. package/std/zig/system/loongarch.zig +25 -9
  1813. package/std/zig/system/windows.zig +34 -1
  1814. package/std/zig/system/x86.zig +60 -16
  1815. package/std/zig/system.zig +18 -25
  1816. package/std/zig/target.zig +3 -5
  1817. package/std/zig/tokenizer.zig +4 -43
  1818. package/std/zig.zig +110 -22
  1819. package/std/zip.zig +5 -5
  1820. package/std/zon/Serializer.zig +6 -2
  1821. package/std/zon/parse.zig +1 -1
  1822. package/zig.h +24 -2
  1823. package/compiler/build_runner.zig +0 -1857
  1824. package/compiler_rt/long_double.zig +0 -37
  1825. package/include/amxbf16transposeintrin.h +0 -94
  1826. package/include/amxcomplextransposeintrin.h +0 -303
  1827. package/include/amxfp16transposeintrin.h +0 -94
  1828. package/include/amxmovrstransposeintrin.h +0 -200
  1829. package/include/amxtf32transposeintrin.h +0 -105
  1830. package/include/amxtransposeintrin.h +0 -248
  1831. package/libc/include/arm-netbsd-eabi/machine/frame.h +0 -130
  1832. package/libc/include/generic-netbsd/powerpc/bswap.h +0 -8
  1833. package/libc/include/hexagon-linux-any/asm/signal.h +0 -29
  1834. package/libc/include/mips-netbsd-eabi/machine/psl.h +0 -3
  1835. package/libc/include/mips-netbsd-eabi/machine/reloc.h +0 -3
  1836. package/libc/include/mips-netbsd-eabi/machine/trap.h +0 -3
  1837. package/libc/include/mips64el-openbsd-none/loongson/hibernate.h +0 -33
  1838. package/libc/include/mips64el-openbsd-none/loongson/hibernate_var.h +0 -39
  1839. package/libc/include/mips64el-openbsd-none/machine/hibernate.h +0 -33
  1840. package/libc/include/mips64el-openbsd-none/machine/hibernate_var.h +0 -39
  1841. package/libc/include/s390x-linux-any/asm/tape390.h +0 -103
  1842. package/libc/mingw/math/lrintl.c +0 -18
  1843. package/libc/mingw/math/rintl.c +0 -16
  1844. package/libc/mingw/winpthreads/spinlock.c +0 -82
  1845. package/libc/musl/src/linux/tee.c +0 -8
  1846. package/libc/musl/src/math/i386/lrintl.c +0 -8
  1847. package/libc/musl/src/math/i386/rintl.c +0 -7
  1848. package/libc/musl/src/math/lrintl.c +0 -36
  1849. package/libc/musl/src/math/rintl.c +0 -29
  1850. package/libc/musl/src/math/s390x/rintl.c +0 -15
  1851. package/libc/musl/src/math/x32/lrintl.s +0 -7
  1852. package/libc/musl/src/math/x32/rintl.s +0 -6
  1853. package/libc/musl/src/math/x86_64/lrintl.c +0 -8
  1854. package/libc/musl/src/math/x86_64/rintl.c +0 -7
  1855. package/libc/musl/src/string/strdup.c +0 -10
  1856. package/libc/musl/src/string/strndup.c +0 -12
  1857. package/libc/musl/src/string/wcsdup.c +0 -10
  1858. package/libc/musl/src/thread/pthread_spin_destroy.c +0 -6
  1859. package/libc/musl/src/thread/pthread_spin_init.c +0 -6
  1860. package/libc/musl/src/thread/pthread_spin_lock.c +0 -8
  1861. package/libc/musl/src/thread/pthread_spin_trylock.c +0 -7
  1862. package/libc/musl/src/thread/pthread_spin_unlock.c +0 -7
  1863. package/libc/musl/src/unistd/dup2.c +0 -20
  1864. package/libc/musl/src/unistd/dup3.c +0 -26
  1865. package/libc/wasi/thread-stub/pthread_spin_lock.c +0 -8
  1866. package/libc/wasi/thread-stub/pthread_spin_trylock.c +0 -8
  1867. package/libc/wasi/thread-stub/pthread_spin_unlock.c +0 -7
  1868. package/libtsan/sanitizer_common/sanitizer_coverage_interface.inc +0 -43
  1869. package/std/Build/Step/CheckObject.zig +0 -2764
  1870. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/ansi.h +0 -0
  1871. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/aout_machdep.h +0 -0
  1872. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/asm.h +0 -0
  1873. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/bswap.h +0 -0
  1874. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/cdefs.h +0 -0
  1875. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/cpu.h +0 -0
  1876. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/disklabel.h +0 -0
  1877. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/elf_machdep.h +0 -0
  1878. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/endian.h +0 -0
  1879. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/endian_machdep.h +0 -0
  1880. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/fenv.h +0 -0
  1881. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/float.h +0 -0
  1882. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/fpu.h +0 -0
  1883. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/frame.h +0 -0
  1884. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/ieee.h +0 -0
  1885. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/ieeefp.h +0 -0
  1886. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/int_const.h +0 -0
  1887. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/int_fmtio.h +0 -0
  1888. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/int_limits.h +0 -0
  1889. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/int_mwgwtypes.h +0 -0
  1890. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/int_types.h +0 -0
  1891. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/intr.h +0 -0
  1892. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/kcore.h +0 -0
  1893. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/limits.h +0 -0
  1894. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/lock.h +0 -0
  1895. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/math.h +0 -0
  1896. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/mcontext.h +0 -0
  1897. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/mutex.h +0 -0
  1898. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/param.h +0 -0
  1899. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/pcb.h +0 -0
  1900. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/pmap.h +0 -0
  1901. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/proc.h +0 -0
  1902. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/profile.h +0 -0
  1903. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/psl.h +0 -0
  1904. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/pte.h +0 -0
  1905. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/ptrace.h +0 -0
  1906. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/reg.h +0 -0
  1907. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/reloc.h +0 -0
  1908. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/rwlock.h +0 -0
  1909. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/setjmp.h +0 -0
  1910. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/signal.h +0 -0
  1911. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/sljit_machdep.h +0 -0
  1912. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/trap.h +0 -0
  1913. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/types.h +0 -0
  1914. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/vmparam.h +0 -0
  1915. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/wchar_limits.h +0 -0
  1916. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/machine/fpu.h +0 -0
  1917. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/machine/intr.h +0 -0
  1918. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/ansi.h +0 -0
  1919. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/aout_machdep.h +0 -0
  1920. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/cdefs.h +0 -0
  1921. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/elf_machdep.h +0 -0
  1922. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/endian.h +0 -0
  1923. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/endian_machdep.h +0 -0
  1924. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/float.h +0 -0
  1925. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/fpu.h +0 -0
  1926. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/frame.h +0 -0
  1927. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/ibm4xx/cpu.h +0 -0
  1928. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/ibm4xx/spr.h +0 -0
  1929. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/ibm4xx/tlb.h +0 -0
  1930. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/ieeefp.h +0 -0
  1931. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/int_const.h +0 -0
  1932. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/int_fmtio.h +0 -0
  1933. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/int_limits.h +0 -0
  1934. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/int_mwgwtypes.h +0 -0
  1935. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/int_types.h +0 -0
  1936. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/kcore.h +0 -0
  1937. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/lock.h +0 -0
  1938. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/math.h +0 -0
  1939. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/oea/bat.h +0 -0
  1940. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/oea/hid_601.h +0 -0
  1941. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/oea/pte.h +0 -0
  1942. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/oea/spr.h +0 -0
  1943. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/oea/sr_601.h +0 -0
  1944. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/oea/vmparam.h +0 -0
  1945. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/param.h +0 -0
  1946. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/pcb.h +0 -0
  1947. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/proc.h +0 -0
  1948. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/profile.h +0 -0
  1949. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/pte.h +0 -0
  1950. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/ptrace.h +0 -0
  1951. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/reg.h +0 -0
  1952. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/reloc.h +0 -0
  1953. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/rwlock.h +0 -0
  1954. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/setjmp.h +0 -0
  1955. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/signal.h +0 -0
  1956. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/sljit_machdep.h +0 -0
  1957. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/spr.h +0 -0
  1958. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/trap.h +0 -0
  1959. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/types.h +0 -0
  1960. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/wchar_limits.h +0 -0
@@ -0,0 +1,2375 @@
1
+ const Run = @This();
2
+
3
+ const builtin = @import("builtin");
4
+
5
+ const std = @import("std");
6
+ const Cache = std.Build.Cache;
7
+ const Configuration = std.Build.Configuration;
8
+ const Dir = std.Io.Dir;
9
+ const EnvMap = std.process.Environ.Map;
10
+ const Io = std.Io;
11
+ const Path = std.Build.Cache.Path;
12
+ const assert = std.debug.assert;
13
+ const mem = std.mem;
14
+ const process = std.process;
15
+ const allocPrint = std.fmt.allocPrint;
16
+ const Allocator = std.mem.Allocator;
17
+
18
+ const Step = @import("../Step.zig");
19
+ const Maker = @import("../../Maker.zig");
20
+ const Fuzz = @import("../../Maker/Fuzz.zig");
21
+
22
+ /// If this is a Zig unit test binary, this tracks the names of the unit
23
+ /// tests that are also fuzz tests. Indexes cannot be used as they may
24
+ /// change between reruns.
25
+ fuzz_tests: std.ArrayList([]const u8) = .empty,
26
+ cached_test_metadata: ?CachedTestMetadata = null,
27
+
28
+ /// Populated during the fuzz phase if this run step corresponds to a unit test
29
+ /// executable that contains fuzz tests.
30
+ rebuilt_executable: ?Path = null,
31
+
32
+ pub fn make(
33
+ run: *Run,
34
+ run_index: Configuration.Step.Index,
35
+ maker: *Maker,
36
+ progress_node: std.Progress.Node,
37
+ ) Step.ExtendedMakeError!void {
38
+ const graph = maker.graph;
39
+ const gpa = maker.gpa;
40
+ const step = maker.stepByIndex(run_index);
41
+ const io = graph.io;
42
+ const conf = &maker.scanned_config.configuration;
43
+ const conf_step = run_index.ptr(conf);
44
+ const conf_run = conf_step.extended.get(conf.extra).run;
45
+ const cache_root = graph.local_cache_root;
46
+
47
+ var arena_allocator: std.heap.ArenaAllocator = .init(gpa);
48
+ defer arena_allocator.deinit();
49
+ const arena = arena_allocator.allocator();
50
+
51
+ var argv_list: std.ArrayList([]const u8) = .empty;
52
+ defer argv_list.deinit(gpa);
53
+
54
+ var output_placeholders: std.ArrayList(IndexedOutput) = .empty;
55
+ defer output_placeholders.deinit(gpa);
56
+
57
+ var man = graph.cache.obtain();
58
+ defer man.deinit();
59
+
60
+ if (conf_run.environ_map.value) |environ_map_index| {
61
+ const environ_map = environ_map_index.get(conf);
62
+ for (environ_map.keys.slice(conf), environ_map.values.slice(conf)) |key, value| {
63
+ man.hash.addBytesZ(key.slice(conf));
64
+ man.hash.addBytesZ(value.slice(conf));
65
+ }
66
+ }
67
+
68
+ man.hash.add(graph.fuzzing);
69
+ man.hash.add(conf_run.flags.color);
70
+ man.hash.add(conf_run.flags.disable_zig_progress);
71
+
72
+ var any_dep_files = false;
73
+ var any_output_args = false;
74
+ var any_cli_positionals = false;
75
+
76
+ for (conf_run.args.slice) |arg_index| {
77
+ const arg = arg_index.get(conf);
78
+ try argv_list.ensureUnusedCapacity(gpa, 1);
79
+ switch (arg.flags.tag) {
80
+ .string => {
81
+ const prefix = arg.prefix.value.?.slice(conf);
82
+ argv_list.appendAssumeCapacity(prefix);
83
+ man.hash.addBytesZ(prefix);
84
+ },
85
+ .path_file => {
86
+ const prefix = if (arg.prefix.value) |p| p.slice(conf) else "";
87
+ const suffix = if (arg.suffix.value) |p| p.slice(conf) else "";
88
+ const file_path = try maker.resolveLazyPathIndex(arena, arg.path.value.?, run_index);
89
+ argv_list.appendAssumeCapacity(try mem.concat(arena, u8, &.{
90
+ prefix, try convertPathArg(arena, run_index, maker, file_path), suffix,
91
+ }));
92
+ man.hash.addBytesZ(prefix);
93
+ man.hash.addBytesZ(suffix);
94
+ _ = try man.addFilePath(file_path, null);
95
+ },
96
+ .path_directory => {
97
+ const prefix = if (arg.prefix.value) |p| p.slice(conf) else "";
98
+ const suffix = if (arg.suffix.value) |p| p.slice(conf) else "";
99
+ const file_path = try maker.resolveLazyPathIndex(arena, arg.path.value.?, run_index);
100
+ const resolved_arg = try mem.concat(arena, u8, &.{
101
+ prefix, try convertPathArg(arena, run_index, maker, file_path), suffix,
102
+ });
103
+ argv_list.appendAssumeCapacity(resolved_arg);
104
+ man.hash.addBytes(resolved_arg);
105
+ },
106
+ .file_content => {
107
+ const prefix = if (arg.prefix.value) |p| p.slice(conf) else "";
108
+ const suffix = if (arg.suffix.value) |p| p.slice(conf) else "";
109
+ const file_path = try maker.resolveLazyPathIndex(arena, arg.path.value.?, run_index);
110
+
111
+ var result: std.Io.Writer.Allocating = .init(arena);
112
+ result.writer.writeAll(prefix) catch return error.OutOfMemory;
113
+
114
+ const file = file_path.root_dir.handle.openFile(io, file_path.sub_path, .{}) catch |err|
115
+ return step.fail(maker, "unable to open input file {f}: {t}", .{ file_path, err });
116
+ defer file.close(io);
117
+
118
+ var file_reader = file.reader(io, &.{});
119
+ _ = file_reader.interface.streamRemaining(&result.writer) catch |err| switch (err) {
120
+ error.ReadFailed => switch (file_reader.err.?) {
121
+ error.Canceled => |e| return e,
122
+ else => |e| return step.fail(maker, "failed to read from {f}: {t}", .{ file_path, e }),
123
+ },
124
+ error.WriteFailed => return error.OutOfMemory,
125
+ };
126
+ result.writer.writeAll(suffix) catch return error.OutOfMemory;
127
+
128
+ argv_list.appendAssumeCapacity(result.written());
129
+ man.hash.addBytesZ(prefix);
130
+ man.hash.addBytesZ(suffix);
131
+ _ = try man.addFilePath(file_path, null);
132
+ },
133
+ .artifact => {
134
+ const prefix = if (arg.prefix.value) |p| p.slice(conf) else "";
135
+ const suffix = if (arg.suffix.value) |p| p.slice(conf) else "";
136
+ const producer_index = arg.producer.value.?;
137
+ const producer_step = producer_index.ptr(conf);
138
+ const producer = producer_step.extended.get(conf.extra).compile;
139
+ const producer_make_comp_step = maker.stepByIndex(producer_index);
140
+ const producer_make_comp = &producer_make_comp_step.extended.compile;
141
+
142
+ const file_path = producer_make_comp.installed_path orelse maker.generatedPath(producer.generated_bin.value.?).*;
143
+
144
+ argv_list.appendAssumeCapacity(try mem.concat(arena, u8, &.{
145
+ prefix, try convertPathArg(arena, run_index, maker, file_path), suffix,
146
+ }));
147
+
148
+ _ = try man.addFilePath(file_path, null);
149
+ },
150
+ .output_file, .output_directory => {
151
+ const prefix = if (arg.prefix.value) |p| p.slice(conf) else "";
152
+ const suffix = if (arg.suffix.value) |p| p.slice(conf) else "";
153
+ const basename = arg.basename.value.?.slice(conf);
154
+
155
+ man.hash.addBytesZ(prefix);
156
+ man.hash.addBytesZ(basename);
157
+ man.hash.addBytesZ(suffix);
158
+ man.hash.add(arg.flags.dep_file);
159
+
160
+ any_dep_files = any_dep_files or arg.flags.dep_file;
161
+ any_output_args = true;
162
+
163
+ // Add a placeholder into the argument list because we need the
164
+ // manifest hash to be updated with all arguments before the
165
+ // object directory is computed.
166
+ try output_placeholders.append(gpa, .{
167
+ .index = @intCast(argv_list.items.len),
168
+ .arg_index = arg_index,
169
+ });
170
+ argv_list.items.len += 1;
171
+ },
172
+ .passthru => {
173
+ any_cli_positionals = true;
174
+ if (maker.run_args) |run_args| {
175
+ try argv_list.appendSlice(gpa, run_args);
176
+ man.hash.addListOfBytes(run_args);
177
+ }
178
+ },
179
+ }
180
+ }
181
+
182
+ man.hash.add(conf_run.flags.test_runner_mode);
183
+ if (conf_run.flags.test_runner_mode) {
184
+ const cache_dir_string = try convertPathArg(arena, run_index, maker, .{ .root_dir = cache_root });
185
+
186
+ try argv_list.ensureUnusedCapacity(gpa, 3);
187
+ argv_list.appendAssumeCapacity(try allocPrint(arena, "--cache-dir={s}", .{cache_dir_string}));
188
+ argv_list.appendAssumeCapacity(try allocPrint(arena, "--seed=0x{x}", .{graph.random_seed}));
189
+ argv_list.appendAssumeCapacity("--listen=-");
190
+ }
191
+
192
+ switch (conf_run.stdin.u) {
193
+ .bytes => |bytes| {
194
+ man.hash.addBytes(bytes.slice(conf));
195
+ },
196
+ .lazy_path => |lazy_path| {
197
+ const file_path = try maker.resolveLazyPathIndex(arena, lazy_path, run_index);
198
+ _ = try man.addFilePath(file_path, null);
199
+ },
200
+ .none => {},
201
+ }
202
+
203
+ if (conf_run.captured_stdout.value) |captured| {
204
+ man.hash.addBytes(captured.basename.slice(conf));
205
+ man.hash.add(conf_run.flags.stdout_trim_whitespace);
206
+ }
207
+
208
+ if (conf_run.captured_stderr.value) |captured| {
209
+ man.hash.addBytes(captured.basename.slice(conf));
210
+ man.hash.add(conf_run.flags.stderr_trim_whitespace);
211
+ }
212
+
213
+ switch (conf_run.flags.stdio) {
214
+ .infer_from_args, .inherit, .zig_test => {},
215
+ .check => {
216
+ man.hash.addBytes(if (conf_run.expect_stderr_exact.value) |bytes| bytes.slice(conf) else "");
217
+ man.hash.addBytes(if (conf_run.expect_stdout_exact.value) |bytes| bytes.slice(conf) else "");
218
+ for (conf_run.expect_stderr_match.slice) |bytes| man.hash.addBytes(bytes.slice(conf));
219
+ for (conf_run.expect_stdout_match.slice) |bytes| man.hash.addBytes(bytes.slice(conf));
220
+ man.hash.add(conf_run.flags2.expect_term_status);
221
+ man.hash.addOptional(conf_run.expect_term_value.value);
222
+ },
223
+ }
224
+
225
+ for (conf_run.file_inputs.slice) |lazy_path| {
226
+ const file_path = try maker.resolveLazyPathIndex(arena, lazy_path, run_index);
227
+ _ = try man.addFilePath(file_path, null);
228
+ }
229
+
230
+ if (conf_run.cwd.value) |lazy_path| {
231
+ const cwd_path = try maker.resolveLazyPathIndex(arena, lazy_path, run_index);
232
+ _ = man.hash.addBytes(try cwd_path.toString(arena));
233
+ }
234
+
235
+ // Whether the Run step has side effects *other than* updating the output arguments.
236
+ // When fuzzing we need to always run the test runner to populate fuzz_tests.
237
+ const has_side_effects = graph.fuzzing or conf_run.flags.has_side_effects or any_cli_positionals or
238
+ switch (conf_run.flags.stdio) {
239
+ .infer_from_args => !any_output_args and
240
+ conf_run.captured_stdout.value == null and
241
+ conf_run.captured_stderr.value == null,
242
+ .inherit => true,
243
+ .check, .zig_test => false,
244
+ };
245
+
246
+ if (!has_side_effects and try step.cacheHitAndWatch(maker, &man)) {
247
+ // Cache hit; skip running command.
248
+ const digest = man.final();
249
+ try populateGeneratedStdIo(maker, &conf_run, cache_root, &digest);
250
+ try populateGeneratedPaths(maker, output_placeholders.items, cache_root, &digest);
251
+ step.result_cached = true;
252
+ return;
253
+ }
254
+
255
+ if (!any_dep_files) {
256
+ // We already know the final output paths; use them directly.
257
+ const digest = if (has_side_effects) man.hash.final() else man.final();
258
+ const output_dir_path = "o" ++ Dir.path.sep_str ++ &digest;
259
+ try populateGeneratedStdIo(maker, &conf_run, cache_root, &digest);
260
+ try populateGeneratedPathsCreateDirs(arena, run_index, maker, output_dir_path, output_placeholders.items, argv_list.items);
261
+ try runCommand(arena, run, run_index, maker, progress_node, argv_list.items, has_side_effects, output_dir_path, null);
262
+ if (!has_side_effects) try step.writeManifestAndWatch(maker, &man);
263
+ return;
264
+ }
265
+
266
+ // We do not know the final output paths yet; use temporary directory to run the command.
267
+ var rand_int: u64 = undefined;
268
+ io.random(@ptrCast(&rand_int));
269
+ const tmp_dir_path = "tmp" ++ Dir.path.sep_str ++ std.fmt.hex(rand_int);
270
+
271
+ try populateGeneratedPathsCreateDirs(arena, run_index, maker, tmp_dir_path, output_placeholders.items, argv_list.items);
272
+ try runCommand(arena, run, run_index, maker, progress_node, argv_list.items, has_side_effects, tmp_dir_path, null);
273
+
274
+ for (output_placeholders.items) |placeholder| {
275
+ const arg = placeholder.arg_index.get(conf);
276
+ switch (arg.flags.tag) {
277
+ .output_file => if (arg.flags.dep_file) {
278
+ const generated_path = maker.generatedPath(arg.generated.value.?).*;
279
+ const result = if (has_side_effects)
280
+ man.addDepFile(generated_path.root_dir.handle, generated_path.sub_path)
281
+ else
282
+ man.addDepFilePost(generated_path.root_dir.handle, generated_path.sub_path);
283
+ result catch |err| switch (err) {
284
+ error.OutOfMemory, error.Canceled => |e| return e,
285
+ else => |e| return step.fail(maker, "failed adding to cache the file {f}: {t}", .{
286
+ generated_path, e,
287
+ }),
288
+ };
289
+ },
290
+ .output_directory => continue,
291
+ else => unreachable,
292
+ }
293
+ }
294
+
295
+ const digest = if (has_side_effects) man.hash.final() else man.final();
296
+
297
+ const any_output = output_placeholders.items.len > 0 or
298
+ conf_run.captured_stdout.value != null or conf_run.captured_stderr.value != null;
299
+
300
+ if (any_output) {
301
+ // Rename into place.
302
+ const tmp_path: Path = .{ .root_dir = cache_root, .sub_path = tmp_dir_path };
303
+ const dst_path: Path = .{ .root_dir = cache_root, .sub_path = "o" ++ Dir.path.sep_str ++ &digest };
304
+ Dir.rename(
305
+ tmp_path.root_dir.handle,
306
+ tmp_path.sub_path,
307
+ dst_path.root_dir.handle,
308
+ dst_path.sub_path,
309
+ io,
310
+ ) catch |err| switch (err) {
311
+ error.DirNotEmpty => {
312
+ dst_path.root_dir.handle.deleteTree(io, dst_path.sub_path) catch |del_err|
313
+ return step.fail(maker, "failed to remove tree {f}: {t}", .{ dst_path, del_err });
314
+
315
+ Dir.rename(
316
+ tmp_path.root_dir.handle,
317
+ tmp_path.sub_path,
318
+ dst_path.root_dir.handle,
319
+ dst_path.sub_path,
320
+ io,
321
+ ) catch |retry_err| return step.fail(maker, "failed to rename directory {f} to {f}: {t}", .{
322
+ tmp_path, dst_path, retry_err,
323
+ });
324
+ },
325
+ else => return step.fail(maker, "failed to rename directory {f} to {f}: {t}", .{
326
+ tmp_path, dst_path, err,
327
+ }),
328
+ };
329
+ }
330
+
331
+ if (!has_side_effects) try step.writeManifestAndWatch(maker, &man);
332
+
333
+ try populateGeneratedStdIo(maker, &conf_run, cache_root, &digest);
334
+ try populateGeneratedPaths(maker, output_placeholders.items, cache_root, &digest);
335
+ }
336
+
337
+ /// Reads stdout of a Zig test process until a termination condition is reached:
338
+ /// * A write fails, indicating the child unexpectedly closed stdin
339
+ /// * A test (or a response from the test runner) times out
340
+ /// * The wait fails, indicating the child closed stdout and stderr
341
+ fn waitZigTest(
342
+ arena: Allocator,
343
+ run: *Run,
344
+ run_index: Configuration.Step.Index,
345
+ maker: *Maker,
346
+ child: *process.Child,
347
+ progress_node: std.Progress.Node,
348
+ multi_reader: *Io.File.MultiReader,
349
+ opt_metadata: *?TestMetadata,
350
+ results: *Step.TestResults,
351
+ ) !union(enum) {
352
+ write_failed: anyerror,
353
+ no_poll: struct {
354
+ active_test_index: ?u32,
355
+ ns_elapsed: u64,
356
+ },
357
+ timeout: struct {
358
+ active_test_index: ?u32,
359
+ ns_elapsed: u64,
360
+ },
361
+ } {
362
+ const graph = maker.graph;
363
+ const gpa = maker.gpa;
364
+ const io = graph.io;
365
+ const step = maker.stepByIndex(run_index);
366
+
367
+ var sub_prog_node: ?std.Progress.Node = null;
368
+ defer if (sub_prog_node) |n| n.end();
369
+
370
+ if (opt_metadata.*) |*md| {
371
+ // Previous unit test process died or was killed; we're continuing where it left off
372
+ requestNextTest(io, child.stdin.?, md, &sub_prog_node) catch |err| return .{ .write_failed = err };
373
+ } else {
374
+ // Running unit tests normally
375
+ run.fuzz_tests.clearRetainingCapacity();
376
+ sendMessage(io, child.stdin.?, .query_test_metadata) catch |err| return .{ .write_failed = err };
377
+ }
378
+
379
+ var active_test_index: ?u32 = null;
380
+
381
+ var last_update: Io.Clock.Timestamp = .now(io, .awake);
382
+
383
+ // This timeout is used when we're waiting on the test runner itself rather than a user-specified
384
+ // test. For instance, if the test runner leaves this much time between us requesting a test to
385
+ // start and it acknowledging the test starting, we terminate the child and raise an error. This
386
+ // *should* never happen, but could in theory be caused by some very unlucky IB in a test.
387
+ const response_timeout: Io.Clock.Duration = t: {
388
+ const ns = @max(maker.unit_test_timeout_ns orelse 0, 60 * std.time.ns_per_s);
389
+ break :t .{ .clock = .awake, .raw = .fromNanoseconds(ns) };
390
+ };
391
+ const test_timeout: ?Io.Clock.Duration = if (maker.unit_test_timeout_ns) |ns| .{
392
+ .clock = .awake,
393
+ .raw = .fromNanoseconds(ns),
394
+ } else null;
395
+
396
+ const stdout = multi_reader.reader(0);
397
+ const stderr = multi_reader.reader(1);
398
+ const Header = std.zig.Server.Message.Header;
399
+
400
+ while (true) {
401
+ const timeout: Io.Timeout = t: {
402
+ const opt_duration = if (active_test_index == null) response_timeout else test_timeout;
403
+ const duration = opt_duration orelse break :t .none;
404
+ break :t .{ .deadline = last_update.addDuration(duration) };
405
+ };
406
+
407
+ // This block is exited when `stdout` contains enough bytes for a `Header`.
408
+ header_ready: {
409
+ if (stdout.buffered().len >= @sizeOf(Header)) {
410
+ // We already have one, no need to poll!
411
+ break :header_ready;
412
+ }
413
+
414
+ multi_reader.fill(64, timeout) catch |err| switch (err) {
415
+ error.Timeout => return .{ .timeout = .{
416
+ .active_test_index = active_test_index,
417
+ .ns_elapsed = @intCast(last_update.untilNow(io).raw.nanoseconds),
418
+ } },
419
+ error.EndOfStream => return .{ .no_poll = .{
420
+ .active_test_index = active_test_index,
421
+ .ns_elapsed = @intCast(last_update.untilNow(io).raw.nanoseconds),
422
+ } },
423
+ else => |e| return e,
424
+ };
425
+
426
+ continue;
427
+ }
428
+ // There is definitely a header available now -- read it.
429
+ const header = stdout.takeStruct(Header, .little) catch unreachable;
430
+
431
+ while (stdout.buffered().len < header.bytes_len) {
432
+ multi_reader.fill(64, timeout) catch |err| switch (err) {
433
+ error.Timeout => return .{ .timeout = .{
434
+ .active_test_index = active_test_index,
435
+ .ns_elapsed = @intCast(last_update.untilNow(io).raw.nanoseconds),
436
+ } },
437
+ error.EndOfStream => return .{ .no_poll = .{
438
+ .active_test_index = active_test_index,
439
+ .ns_elapsed = @intCast(last_update.untilNow(io).raw.nanoseconds),
440
+ } },
441
+ else => |e| return e,
442
+ };
443
+ }
444
+
445
+ const body = stdout.take(header.bytes_len) catch unreachable;
446
+ var body_r: std.Io.Reader = .fixed(body);
447
+ switch (header.tag) {
448
+ .zig_version => {
449
+ if (!std.mem.eql(u8, builtin.zig_version_string, body)) return step.fail(
450
+ maker,
451
+ "zig version mismatch build runner vs compiler: '{s}' vs '{s}'",
452
+ .{ builtin.zig_version_string, body },
453
+ );
454
+ },
455
+ .test_metadata => {
456
+ // `metadata` would only be populated if we'd already seen a `test_metadata`, but we
457
+ // only request it once (and importantly, we don't re-request it if we kill and
458
+ // restart the test runner).
459
+ assert(opt_metadata.* == null);
460
+
461
+ const tm_hdr = body_r.takeStruct(std.zig.Server.Message.TestMetadata, .little) catch unreachable;
462
+ results.test_count = tm_hdr.tests_len;
463
+
464
+ const names = try arena.alloc(u32, results.test_count);
465
+ for (names) |*dest| dest.* = body_r.takeInt(u32, .little) catch unreachable;
466
+
467
+ const expected_panic_msgs = try arena.alloc(u32, results.test_count);
468
+ for (expected_panic_msgs) |*dest| dest.* = body_r.takeInt(u32, .little) catch unreachable;
469
+
470
+ const string_bytes = body_r.take(tm_hdr.string_bytes_len) catch unreachable;
471
+
472
+ progress_node.setEstimatedTotalItems(names.len);
473
+ opt_metadata.* = .{
474
+ .string_bytes = try arena.dupe(u8, string_bytes),
475
+ .ns_per_test = try arena.alloc(u64, results.test_count),
476
+ .names = names,
477
+ .expected_panic_msgs = expected_panic_msgs,
478
+ .next_index = 0,
479
+ .prog_node = progress_node,
480
+ };
481
+ @memset(opt_metadata.*.?.ns_per_test, std.math.maxInt(u64));
482
+
483
+ active_test_index = null;
484
+ last_update = .now(io, .awake);
485
+
486
+ requestNextTest(io, child.stdin.?, &opt_metadata.*.?, &sub_prog_node) catch |err| return .{ .write_failed = err };
487
+ },
488
+ .test_started => {
489
+ active_test_index = opt_metadata.*.?.next_index - 1;
490
+ last_update = .now(io, .awake);
491
+ },
492
+ .test_results => {
493
+ const md = &opt_metadata.*.?;
494
+
495
+ const tr_hdr = body_r.takeStruct(std.zig.Server.Message.TestResults, .little) catch unreachable;
496
+ assert(tr_hdr.index == active_test_index);
497
+
498
+ switch (tr_hdr.flags.status) {
499
+ .pass => {},
500
+ .skip => results.skip_count +|= 1,
501
+ .fail => results.fail_count +|= 1,
502
+ }
503
+ const leak_count = tr_hdr.flags.leak_count;
504
+ const log_err_count = tr_hdr.flags.log_err_count;
505
+ results.leak_count +|= leak_count;
506
+ results.log_err_count +|= log_err_count;
507
+
508
+ if (tr_hdr.flags.fuzz) try run.fuzz_tests.append(gpa, md.testName(tr_hdr.index));
509
+
510
+ if (tr_hdr.flags.status == .fail) {
511
+ const name = md.testName(tr_hdr.index);
512
+ const stderr_bytes = std.mem.trim(u8, stderr.buffered(), "\n");
513
+ stderr.tossBuffered();
514
+ if (stderr_bytes.len == 0) {
515
+ try step.addError(maker, "'{s}' failed without output", .{name});
516
+ } else {
517
+ try step.addError(maker, "'{s}' failed:\n{s}", .{ name, stderr_bytes });
518
+ }
519
+ } else if (leak_count > 0) {
520
+ const name = md.testName(tr_hdr.index);
521
+ const stderr_bytes = std.mem.trim(u8, stderr.buffered(), "\n");
522
+ stderr.tossBuffered();
523
+ try step.addError(maker, "'{s}' leaked {d} allocations:\n{s}", .{ name, leak_count, stderr_bytes });
524
+ } else if (log_err_count > 0) {
525
+ const name = md.testName(tr_hdr.index);
526
+ const stderr_bytes = std.mem.trim(u8, stderr.buffered(), "\n");
527
+ stderr.tossBuffered();
528
+ try step.addError(maker, "'{s}' logged {d} errors:\n{s}", .{ name, log_err_count, stderr_bytes });
529
+ }
530
+
531
+ active_test_index = null;
532
+
533
+ const now: Io.Clock.Timestamp = .now(io, .awake);
534
+ md.ns_per_test[tr_hdr.index] = @intCast(last_update.durationTo(now).raw.nanoseconds);
535
+ last_update = now;
536
+
537
+ requestNextTest(io, child.stdin.?, md, &sub_prog_node) catch |err| return .{ .write_failed = err };
538
+ },
539
+ else => {}, // ignore other messages
540
+ }
541
+ }
542
+ }
543
+
544
+ const FuzzTestRunner = struct {
545
+ run: *Run,
546
+ run_index: Configuration.Step.Index,
547
+ ctx: FuzzContext,
548
+ coverage_id: ?u64,
549
+
550
+ instances: []Instance,
551
+ /// The indexes of this are layed out such that it is effectively an array
552
+ /// of `[instances.len][3]Io.Operation.Storage` of stdin, stdout, stderr.
553
+ batch: Io.Batch,
554
+ /// LIFO. Stream of message bodies trailed by PendingBroadcastFooter.
555
+ pending_broadcasts: std.ArrayList(u8),
556
+ broadcast: std.ArrayList(u8),
557
+ broadcast_undelivered: u32,
558
+
559
+ const Instance = struct {
560
+ child: process.Child,
561
+ message: std.ArrayListAligned(u8, .@"4"),
562
+ broadcast_written: usize,
563
+ stderr: std.ArrayList(u8),
564
+ stdin_vec: [1][]u8,
565
+ stdout_vec: [1][]u8,
566
+ stderr_vec: [1][]u8,
567
+ progress_node: std.Progress.Node,
568
+
569
+ fn messageHeader(instance: *Instance) InHeader {
570
+ assert(instance.message.items.len >= @sizeOf(InHeader));
571
+ const header_ptr: *InHeader = @ptrCast(instance.message.items);
572
+ var header = header_ptr.*;
573
+ if (std.builtin.Endian.native != .little) {
574
+ std.mem.byteSwapAllFields(InHeader, &header);
575
+ }
576
+ return header;
577
+ }
578
+ };
579
+
580
+ const PendingBroadcastFooter = struct {
581
+ from_id: u32,
582
+ body_len: u32,
583
+ };
584
+
585
+ const InHeader = std.zig.Server.Message.Header;
586
+ const OutHeader = std.zig.Client.Message.Header;
587
+
588
+ const stdin_i = 0;
589
+ const stdout_i = 1;
590
+ const stderr_i = 2;
591
+
592
+ fn init(
593
+ run: *Run,
594
+ run_index: Configuration.Step.Index,
595
+ ctx: FuzzContext,
596
+ progress_node: std.Progress.Node,
597
+ spawn_options: process.SpawnOptions,
598
+ ) !FuzzTestRunner {
599
+ const maker = ctx.fuzz.maker;
600
+ const graph = maker.graph;
601
+ const gpa = maker.gpa;
602
+ const io = graph.io;
603
+
604
+ const n_instances = switch (ctx.fuzz.mode) {
605
+ .forever => graph.max_jobs orelse @min(
606
+ std.Thread.getCpuCount() catch 1,
607
+ (std.math.maxInt(u32) - 2) / 3,
608
+ ),
609
+ .limit => 1,
610
+ };
611
+ const instances = try gpa.alloc(Instance, n_instances);
612
+ errdefer gpa.free(instances);
613
+ const batch_storage = try gpa.alloc(Io.Operation.Storage, instances.len * 3);
614
+ errdefer gpa.free(batch_storage);
615
+
616
+ @memset(instances, .{
617
+ .child = undefined,
618
+ .message = .empty,
619
+ .broadcast_written = undefined,
620
+ .stderr = .empty,
621
+ .stdin_vec = undefined,
622
+ .stdout_vec = undefined,
623
+ .stderr_vec = undefined,
624
+ .progress_node = undefined,
625
+ });
626
+ for (0.., instances) |id, *instance| {
627
+ errdefer for (instances[0..id]) |*spawned| {
628
+ spawned.child.kill(io);
629
+ spawned.progress_node.end();
630
+ };
631
+ instance.child = try process.spawn(io, spawn_options);
632
+ instance.progress_node = progress_node.start("starting fuzzer", 0);
633
+ }
634
+
635
+ return .{
636
+ .run = run,
637
+ .run_index = run_index,
638
+ .ctx = ctx,
639
+ .coverage_id = null,
640
+
641
+ .instances = instances,
642
+ .batch = .init(batch_storage),
643
+ .pending_broadcasts = .empty,
644
+ .broadcast = .empty,
645
+ .broadcast_undelivered = 0,
646
+ };
647
+ }
648
+
649
+ fn deinit(f: *FuzzTestRunner) void {
650
+ const maker = f.ctx.fuzz.maker;
651
+ const run_index = f.run_index;
652
+
653
+ const graph = maker.graph;
654
+ const gpa = maker.gpa;
655
+ const io = graph.io;
656
+ const step = maker.stepByIndex(run_index);
657
+
658
+ f.batch.cancel(io);
659
+ gpa.free(f.batch.storage);
660
+ var total_rss: usize = 0;
661
+ for (f.instances) |*instance| {
662
+ instance.child.kill(io);
663
+ instance.message.deinit(gpa);
664
+ instance.stderr.deinit(gpa);
665
+ instance.progress_node.end();
666
+ total_rss += instance.child.resource_usage_statistics.getMaxRss() orelse 0;
667
+ }
668
+ step.result_peak_rss = @max(step.result_peak_rss, total_rss);
669
+ gpa.free(f.instances);
670
+ }
671
+
672
+ fn startInstances(f: *FuzzTestRunner) !void {
673
+ const maker = f.ctx.fuzz.maker;
674
+ const run_index = f.run_index;
675
+ const run = f.run;
676
+
677
+ const graph = maker.graph;
678
+ const io = graph.io;
679
+ const step = maker.stepByIndex(run_index);
680
+
681
+ for (0.., f.instances) |id, *instance| {
682
+ const id32: u32 = @intCast(id);
683
+ (switch (f.ctx.fuzz.mode) {
684
+ .forever => sendRunFuzzTestMessage(
685
+ io,
686
+ instance.child.stdin.?,
687
+ run.fuzz_tests.items,
688
+ .forever,
689
+ id32,
690
+ ),
691
+ .limit => |limit| sendRunFuzzTestMessage(
692
+ io,
693
+ instance.child.stdin.?,
694
+ run.fuzz_tests.items,
695
+ .iterations,
696
+ limit.amount,
697
+ ),
698
+ }) catch |write_err| {
699
+ // The runner unexpectedly closed stdin, which means it crashed during initialization.
700
+ // Clean up everything and wait for the child to exit.
701
+ instance.child.stdin.?.close(io);
702
+ instance.child.stdin = null;
703
+ const term = try instance.child.wait(io);
704
+ return step.fail(
705
+ maker,
706
+ "unable to write stdin ({t}); test process unexpectedly {f}",
707
+ .{ write_err, fmtTerm(term) },
708
+ );
709
+ };
710
+
711
+ try f.addStdoutRead(id32, @sizeOf(InHeader));
712
+ try f.addStderrRead(id32);
713
+ }
714
+ }
715
+
716
+ fn listen(f: *FuzzTestRunner) !void {
717
+ const maker = f.ctx.fuzz.maker;
718
+ const graph = maker.graph;
719
+ const io = graph.io;
720
+
721
+ while (true) {
722
+ try f.batch.awaitConcurrent(io, .none);
723
+ while (f.batch.next()) |completion| {
724
+ const id = completion.index / 3;
725
+ const result = completion.result;
726
+ switch (completion.index % 3) {
727
+ 0 => try f.completeStdinWrite(id, result.file_write_streaming catch |e| switch (e) {
728
+ // Avoid calling `instanceEos` until EndOfStream is seen with stderr so
729
+ // that all stderr is collected.
730
+ error.BrokenPipe => continue,
731
+ else => |write_e| return write_e,
732
+ }),
733
+ 1 => try f.completeStdoutRead(id, result.file_read_streaming catch |e| switch (e) {
734
+ // Avoid calling `instanceEos` until EndOfStream is seen with stderr so
735
+ // that all stderr is collected.
736
+ error.EndOfStream => continue,
737
+ else => |read_e| return read_e,
738
+ }),
739
+ 2 => try f.completeStderrRead(id, result.file_read_streaming catch |e| switch (e) {
740
+ error.EndOfStream => return f.instanceEos(id),
741
+ else => |read_e| return read_e,
742
+ }),
743
+ else => unreachable,
744
+ }
745
+ }
746
+ }
747
+ }
748
+
749
+ fn completeStdoutRead(f: *FuzzTestRunner, id: u32, n: usize) !void {
750
+ const maker = f.ctx.fuzz.maker;
751
+ const instance = &f.instances[id];
752
+ const run_index = f.run_index;
753
+ const run = f.run;
754
+
755
+ const graph = maker.graph;
756
+ const gpa = maker.gpa;
757
+ const io = graph.io;
758
+ const step = maker.stepByIndex(run_index);
759
+
760
+ instance.message.items.len += n;
761
+ const total_read = instance.message.items.len;
762
+ if (total_read < @sizeOf(InHeader)) {
763
+ try f.addStdoutRead(id, @sizeOf(InHeader));
764
+ return;
765
+ }
766
+
767
+ const header = instance.messageHeader();
768
+ const body = instance.message.items[@sizeOf(InHeader)..];
769
+ if (body.len != header.bytes_len) {
770
+ try f.addStdoutRead(id, @sizeOf(InHeader) + header.bytes_len);
771
+ return;
772
+ }
773
+
774
+ switch (header.tag) {
775
+ .zig_version => {
776
+ if (!std.mem.eql(u8, builtin.zig_version_string, body)) return step.fail(
777
+ maker,
778
+ "zig version mismatch build runner vs compiler: '{s}' vs '{s}'",
779
+ .{ builtin.zig_version_string, body },
780
+ );
781
+ },
782
+ .coverage_id => {
783
+ var body_r: Io.Reader = .fixed(body);
784
+ f.coverage_id = body_r.takeInt(u64, .little) catch unreachable;
785
+ const cumulative_runs = body_r.takeInt(u64, .little) catch unreachable;
786
+ const cumulative_unique = body_r.takeInt(u64, .little) catch unreachable;
787
+ const cumulative_coverage = body_r.takeInt(u64, .little) catch unreachable;
788
+
789
+ const fuzz = f.ctx.fuzz;
790
+ fuzz.queue_mutex.lockUncancelable(io);
791
+ defer fuzz.queue_mutex.unlock(io);
792
+ try fuzz.msg_queue.append(gpa, .{ .coverage = .{
793
+ .id = f.coverage_id.?,
794
+ .cumulative = .{
795
+ .runs = cumulative_runs,
796
+ .unique = cumulative_unique,
797
+ .coverage = cumulative_coverage,
798
+ },
799
+ .run = run_index,
800
+ } });
801
+ fuzz.queue_cond.signal(io);
802
+ },
803
+ .fuzz_start_addr => {
804
+ var body_r: Io.Reader = .fixed(body);
805
+ const fuzz = f.ctx.fuzz;
806
+ const addr = body_r.takeInt(u64, .little) catch unreachable;
807
+
808
+ fuzz.queue_mutex.lockUncancelable(io);
809
+ defer fuzz.queue_mutex.unlock(io);
810
+ try fuzz.msg_queue.append(gpa, .{ .entry_point = .{
811
+ .addr = addr,
812
+ .coverage_id = f.coverage_id.?,
813
+ } });
814
+ fuzz.queue_cond.signal(io);
815
+ },
816
+ .fuzz_test_change => {
817
+ const test_i = std.mem.readInt(u32, body[0..4], .little);
818
+ instance.progress_node.setName(run.fuzz_tests.items[test_i]);
819
+ },
820
+ .broadcast_fuzz_input => {
821
+ if (f.instances.len == 1) {
822
+ // No other processes to broadcast to.
823
+ } else if (f.broadcast_undelivered == 0) {
824
+ try f.instanceBroadcast(id, body);
825
+ } else {
826
+ const footer: PendingBroadcastFooter = .{
827
+ .from_id = id,
828
+ .body_len = @intCast(body.len),
829
+ };
830
+ // There is another broadcast in progress so add this one to the queue.
831
+ const size = @sizeOf(PendingBroadcastFooter) + body.len;
832
+ try f.pending_broadcasts.ensureUnusedCapacity(gpa, size);
833
+ f.pending_broadcasts.appendSliceAssumeCapacity(body);
834
+ f.pending_broadcasts.appendSliceAssumeCapacity(@ptrCast(&footer));
835
+ }
836
+ },
837
+ else => {}, // ignore other messages
838
+ }
839
+
840
+ instance.message.clearRetainingCapacity();
841
+ try f.addStdoutRead(id, @sizeOf(InHeader));
842
+ }
843
+
844
+ fn completeStderrRead(f: *FuzzTestRunner, id: u32, n: usize) !void {
845
+ const instance = &f.instances[id];
846
+ instance.stderr.items.len += n;
847
+ try f.addStderrRead(id);
848
+ }
849
+
850
+ fn completeStdinWrite(f: *FuzzTestRunner, id: u32, n: usize) !void {
851
+ const instance = &f.instances[id];
852
+
853
+ instance.broadcast_written += n;
854
+ if (instance.broadcast_written == f.broadcast.items.len) {
855
+ f.broadcast_undelivered -= 1;
856
+ if (f.broadcast_undelivered == 0) {
857
+ try f.broadcastComplete();
858
+ }
859
+ } else {
860
+ f.addStdinWrite(id);
861
+ }
862
+ }
863
+
864
+ fn addStdoutRead(f: *FuzzTestRunner, id: u32, end: usize) !void {
865
+ const maker = f.ctx.fuzz.maker;
866
+ const gpa = maker.gpa;
867
+ const instance = &f.instances[id];
868
+
869
+ try instance.message.ensureTotalCapacity(gpa, end);
870
+ const start = instance.message.items.len;
871
+ instance.stdout_vec = .{instance.message.allocatedSlice()[start..end]};
872
+ f.batch.addAt(id * 3 + stdout_i, .{ .file_read_streaming = .{
873
+ .file = instance.child.stdout.?,
874
+ .data = &instance.stdout_vec,
875
+ } });
876
+ }
877
+
878
+ fn addStderrRead(f: *FuzzTestRunner, id: u32) !void {
879
+ const maker = f.ctx.fuzz.maker;
880
+ const gpa = maker.gpa;
881
+ const instance = &f.instances[id];
882
+
883
+ try instance.stderr.ensureUnusedCapacity(gpa, 1);
884
+ instance.stderr_vec = .{instance.stderr.unusedCapacitySlice()};
885
+ f.batch.addAt(id * 3 + stderr_i, .{ .file_read_streaming = .{
886
+ .file = instance.child.stderr.?,
887
+ .data = &instance.stderr_vec,
888
+ } });
889
+ }
890
+
891
+ fn addStdinWrite(f: *FuzzTestRunner, id: u32) void {
892
+ const instance = &f.instances[id];
893
+
894
+ assert(f.broadcast.items.len != instance.broadcast_written);
895
+ instance.stdin_vec = .{f.broadcast.items[instance.broadcast_written..]};
896
+ f.batch.addAt(id * 3 + stdin_i, .{ .file_write_streaming = .{
897
+ .file = instance.child.stdin.?,
898
+ .data = &instance.stdin_vec,
899
+ } });
900
+ }
901
+
902
+ fn instanceEos(f: *FuzzTestRunner, id: u32) !void {
903
+ const maker = f.ctx.fuzz.maker;
904
+ const gpa = maker.gpa;
905
+ const instance = &f.instances[id];
906
+ const run_index = f.run_index;
907
+
908
+ const graph = maker.graph;
909
+ const io = graph.io;
910
+ const step = maker.stepByIndex(run_index);
911
+
912
+ instance.child.stdin.?.close(io);
913
+ instance.child.stdin = null;
914
+ const term = try instance.child.wait(io);
915
+ if (!termMatches(.{ .exited = 0 }, term)) {
916
+ step.takeResultStderr(gpa, try f.mergedStderr(gpa));
917
+ try f.saveCrash(id, term);
918
+ return step.fail(maker, "test process unexpectedly {f}", .{fmtTerm(term)});
919
+ }
920
+ }
921
+
922
+ fn saveCrash(f: *FuzzTestRunner, id: u32, term: process.Child.Term) !void {
923
+ const fuzz = f.ctx.fuzz;
924
+ const run_index = f.run_index;
925
+ const run = f.run;
926
+
927
+ const maker = fuzz.maker;
928
+ const step = maker.stepByIndex(run_index);
929
+ const graph = maker.graph;
930
+ const io = graph.io;
931
+ const cache_root = graph.local_cache_root;
932
+
933
+ if (f.coverage_id == null) return;
934
+
935
+ // Search for the input file corresponding to the instance
936
+ const InputHeader = std.Build.abi.fuzz.MmapInputHeader;
937
+ var in_r_buf: [@sizeOf(InputHeader)]u8 = undefined;
938
+ var in_r: Io.File.Reader = undefined;
939
+ var in_f: Io.File = undefined;
940
+ var in_name_buf: [12]u8 = undefined;
941
+ var in_name: []const u8 = undefined;
942
+ var i: u32 = 0;
943
+ const header: InputHeader = while (true) : ({
944
+ if (i == std.math.maxInt(u32)) return;
945
+ i += 1;
946
+ }) {
947
+ const name_prefix = "f" ++ Dir.path.sep_str ++ "in";
948
+ in_name = std.fmt.bufPrint(&in_name_buf, name_prefix ++ "{x}", .{i}) catch unreachable;
949
+ in_f = cache_root.handle.openFile(io, in_name, .{
950
+ .lock = .exclusive,
951
+ .lock_nonblocking = true,
952
+ }) catch |e| switch (e) {
953
+ error.FileNotFound => return,
954
+ error.WouldBlock => continue, // Can not be from
955
+ // the crashed instance since it is still locked.
956
+ else => return step.fail(maker, "failed to open file '{f}{s}': {t}", .{
957
+ cache_root, in_name, e,
958
+ }),
959
+ };
960
+
961
+ in_r = in_f.readerStreaming(io, &in_r_buf);
962
+ const header = in_r.interface.takeStruct(InputHeader, .little) catch |e| {
963
+ in_f.close(io);
964
+ switch (e) {
965
+ error.ReadFailed => return step.fail(maker, "failed to read file '{f}{s}': {t}", .{
966
+ cache_root, in_name, in_r.err.?,
967
+ }),
968
+ error.EndOfStream => continue,
969
+ }
970
+ };
971
+
972
+ if (header.pc_digest == f.coverage_id.? and
973
+ header.instance_id == id and
974
+ header.test_i < run.fuzz_tests.items.len)
975
+ {
976
+ break header;
977
+ }
978
+
979
+ in_f.close(io);
980
+ };
981
+ defer in_f.close(io);
982
+
983
+ // Save it to a seperate file
984
+ const crash_name = "f" ++ Dir.path.sep_str ++ "crash";
985
+ const out = cache_root.handle.createFile(io, crash_name, .{
986
+ .lock = .exclusive, // Multiple run steps could have found a crash at the same time
987
+ }) catch |e| return step.fail(maker, "failed to create file '{f}{s}': {t}", .{
988
+ cache_root, crash_name, e,
989
+ });
990
+ defer out.close(io);
991
+
992
+ var out_w_buf: [512]u8 = undefined;
993
+ var out_w = out.writerStreaming(io, &out_w_buf);
994
+ _ = out_w.interface.sendFileAll(&in_r, .limited(header.len)) catch |e| switch (e) {
995
+ error.ReadFailed => return step.fail(maker, "failed to read file '{f}{s}': {t}", .{
996
+ cache_root, in_name, in_r.err.?,
997
+ }),
998
+ error.WriteFailed => return step.fail(maker, "failed to write file '{f}{s}': {t}", .{
999
+ cache_root, crash_name, out_w.err.?,
1000
+ }),
1001
+ };
1002
+
1003
+ return step.fail(maker, "test '{s}' {f}; input saved to '{f}{s}'", .{
1004
+ run.fuzz_tests.items[header.test_i],
1005
+ fmtTerm(term),
1006
+ cache_root,
1007
+ crash_name,
1008
+ });
1009
+ }
1010
+
1011
+ fn instanceBroadcast(f: *FuzzTestRunner, from_id: u32, bytes: []const u8) !void {
1012
+ assert(f.instances.len > 1);
1013
+ assert(f.broadcast_undelivered == 0); // no other broadcast is progress
1014
+ assert(f.broadcast.items.len == 0);
1015
+ assert(from_id < f.instances.len);
1016
+
1017
+ const maker = f.ctx.fuzz.maker;
1018
+ const gpa = maker.gpa;
1019
+
1020
+ var out_header: OutHeader = .{
1021
+ .tag = .new_fuzz_input,
1022
+ .bytes_len = @intCast(bytes.len),
1023
+ };
1024
+ if (std.builtin.Endian.native != .little) {
1025
+ std.mem.byteSwapAllFields(OutHeader, &out_header);
1026
+ }
1027
+ try f.broadcast.ensureTotalCapacity(gpa, @sizeOf(OutHeader) + bytes.len);
1028
+ f.broadcast.appendSliceAssumeCapacity(@ptrCast(&out_header));
1029
+ f.broadcast.appendSliceAssumeCapacity(bytes);
1030
+
1031
+ f.broadcast_undelivered = @intCast(f.instances.len - 1);
1032
+ for (0.., f.instances) |to_id, *instance| {
1033
+ if (to_id == from_id) continue;
1034
+ instance.broadcast_written = 0;
1035
+ f.addStdinWrite(@intCast(to_id));
1036
+ }
1037
+ }
1038
+
1039
+ fn broadcastComplete(f: *FuzzTestRunner) !void {
1040
+ assert(f.instances.len > 1);
1041
+ assert(f.broadcast_undelivered == 0);
1042
+ f.broadcast.clearRetainingCapacity();
1043
+
1044
+ const pending = &f.pending_broadcasts;
1045
+ if (pending.items.len != 0) {
1046
+ // Another broadcast is pending; copy it over to `broadcast`
1047
+
1048
+ const footer_len = @sizeOf(PendingBroadcastFooter);
1049
+ const footer_bytes = pending.items[pending.items.len - footer_len ..];
1050
+ const footer: *align(1) PendingBroadcastFooter = @ptrCast(footer_bytes);
1051
+ pending.items.len -= footer_len;
1052
+
1053
+ const body = pending.items[pending.items.len - footer.body_len ..];
1054
+ try f.instanceBroadcast(footer.from_id, body);
1055
+ pending.items.len -= body.len;
1056
+ }
1057
+ }
1058
+
1059
+ fn mergedStderr(f: *FuzzTestRunner, gpa: Allocator) Allocator.Error![]const u8 {
1060
+ // Collect any available stderr
1061
+ while (f.batch.next()) |completion| {
1062
+ if (completion.index % 3 != 2) continue;
1063
+ const len = completion.result.file_read_streaming catch continue;
1064
+ f.instances[completion.index / 3].stderr.items.len += len;
1065
+ }
1066
+
1067
+ var stderr_len: usize = 0;
1068
+ for (f.instances) |*instance| stderr_len += instance.stderr.items.len;
1069
+ const stderr = try gpa.alloc(u8, stderr_len);
1070
+
1071
+ stderr_len = 0;
1072
+ for (f.instances) |*instance| {
1073
+ @memcpy(stderr[stderr_len..][0..instance.stderr.items.len], instance.stderr.items);
1074
+ stderr_len += instance.stderr.items.len;
1075
+ }
1076
+ return stderr;
1077
+ }
1078
+ };
1079
+
1080
+ fn evalFuzzTest(
1081
+ run: *Run,
1082
+ run_index: Configuration.Step.Index,
1083
+ progress_node: std.Progress.Node,
1084
+ spawn_options: process.SpawnOptions,
1085
+ fuzz_context: FuzzContext,
1086
+ ) !void {
1087
+ var f: FuzzTestRunner = try .init(run, run_index, fuzz_context, progress_node, spawn_options);
1088
+ defer f.deinit();
1089
+ try f.startInstances();
1090
+ try f.listen();
1091
+ }
1092
+
1093
+ const StdioPollEnum = enum { stdout, stderr };
1094
+
1095
+ fn evalZigTest(
1096
+ run: *Run,
1097
+ run_index: Configuration.Step.Index,
1098
+ maker: *Maker,
1099
+ progress_node: std.Progress.Node,
1100
+ spawn_options: process.SpawnOptions,
1101
+ fuzz_context: ?FuzzContext,
1102
+ ) !void {
1103
+ if (fuzz_context != null) {
1104
+ try evalFuzzTest(run, run_index, progress_node, spawn_options, fuzz_context.?);
1105
+ return;
1106
+ }
1107
+
1108
+ const graph = maker.graph;
1109
+ const gpa = maker.gpa;
1110
+ const io = graph.io;
1111
+ const step = maker.stepByIndex(run_index);
1112
+
1113
+ // We will update this every time a child runs.
1114
+ step.result_peak_rss = 0;
1115
+
1116
+ var test_results: Step.TestResults = .{
1117
+ .test_count = 0,
1118
+ .skip_count = 0,
1119
+ .fail_count = 0,
1120
+ .crash_count = 0,
1121
+ .timeout_count = 0,
1122
+ .leak_count = 0,
1123
+ .log_err_count = 0,
1124
+ };
1125
+ var test_metadata: ?TestMetadata = null;
1126
+
1127
+ while (true) {
1128
+ var child = try process.spawn(io, spawn_options);
1129
+ var multi_reader_buffer: Io.File.MultiReader.Buffer(2) = undefined;
1130
+ var multi_reader: Io.File.MultiReader = undefined;
1131
+ multi_reader.init(gpa, io, multi_reader_buffer.toStreams(), &.{ child.stdout.?, child.stderr.? });
1132
+ var child_killed = false;
1133
+ defer if (!child_killed) {
1134
+ child.kill(io);
1135
+ multi_reader.deinit();
1136
+ step.result_peak_rss = @max(
1137
+ step.result_peak_rss,
1138
+ child.resource_usage_statistics.getMaxRss() orelse 0,
1139
+ );
1140
+ };
1141
+
1142
+ switch (try waitZigTest(
1143
+ graph.arena,
1144
+ run,
1145
+ run_index,
1146
+ maker,
1147
+ &child,
1148
+ progress_node,
1149
+ &multi_reader,
1150
+ &test_metadata,
1151
+ &test_results,
1152
+ )) {
1153
+ .write_failed => |err| {
1154
+ // The runner unexpectedly closed a stdio pipe, which means a crash. Make sure we've captured
1155
+ // all available stderr to make our error output as useful as possible.
1156
+ const stderr_fr = multi_reader.fileReader(1);
1157
+ while (stderr_fr.interface.fillMore()) |_| {} else |e| switch (e) {
1158
+ error.ReadFailed => return stderr_fr.err.?,
1159
+ error.EndOfStream => {},
1160
+ }
1161
+ step.takeResultStderr(gpa, try multi_reader.toOwnedSlice(1));
1162
+
1163
+ // Clean up everything and wait for the child to exit.
1164
+ child.stdin.?.close(io);
1165
+ child.stdin = null;
1166
+ multi_reader.deinit();
1167
+ child_killed = true;
1168
+ const term = try child.wait(io);
1169
+ step.result_peak_rss = @max(
1170
+ step.result_peak_rss,
1171
+ child.resource_usage_statistics.getMaxRss() orelse 0,
1172
+ );
1173
+
1174
+ // The individual unit test results are irrelevant: the test runner itself broke!
1175
+ // Fail immediately without populating `s.test_results`.
1176
+ return step.fail(maker, "unable to write stdin ({t}); test process unexpectedly {f}", .{
1177
+ err, fmtTerm(term),
1178
+ });
1179
+ },
1180
+ .no_poll => |no_poll| {
1181
+ // This might be a success (we requested exit and the child dutifully closed stdout) or
1182
+ // a crash of some kind. Either way, the child will terminate by itself -- wait for it.
1183
+ const stderr_owned = try multi_reader.toOwnedSlice(1);
1184
+ var keep_stderr_owned = false;
1185
+ defer if (!keep_stderr_owned) gpa.free(stderr_owned);
1186
+
1187
+ // Clean up everything and wait for the child to exit.
1188
+ child.stdin.?.close(io);
1189
+ child.stdin = null;
1190
+ multi_reader.deinit();
1191
+ child_killed = true;
1192
+ const term = try child.wait(io);
1193
+ step.result_peak_rss = @max(
1194
+ step.result_peak_rss,
1195
+ child.resource_usage_statistics.getMaxRss() orelse 0,
1196
+ );
1197
+
1198
+ if (no_poll.active_test_index) |test_index| {
1199
+ // A test was running, so this is definitely a crash. Report it against that
1200
+ // test, and continue to the next test.
1201
+ test_metadata.?.ns_per_test[test_index] = no_poll.ns_elapsed;
1202
+ test_results.crash_count += 1;
1203
+ try step.addError(maker, "'{s}' {f}{s}{s}", .{
1204
+ test_metadata.?.testName(test_index),
1205
+ fmtTerm(term),
1206
+ if (stderr_owned.len != 0) " with stderr:\n" else "",
1207
+ std.mem.trim(u8, stderr_owned, "\n"),
1208
+ });
1209
+ continue;
1210
+ }
1211
+
1212
+ // Report an error if the child terminated uncleanly or if we were still trying to run more tests.
1213
+ step.takeResultStderr(gpa, stderr_owned);
1214
+ keep_stderr_owned = true;
1215
+
1216
+ const tests_done = test_metadata != null and test_metadata.?.next_index == std.math.maxInt(u32);
1217
+ if (!tests_done or !termMatches(.{ .exited = 0 }, term)) {
1218
+ // The individual unit test results are irrelevant: the test runner itself broke!
1219
+ // Fail immediately without populating `s.test_results`.
1220
+ return step.fail(maker, "test process unexpectedly {f}", .{fmtTerm(term)});
1221
+ }
1222
+
1223
+ // We're done with all of the tests! Commit the test results and return.
1224
+ step.test_results = test_results;
1225
+ if (test_metadata) |tm| {
1226
+ run.cached_test_metadata = tm.toCachedTestMetadata();
1227
+ if (maker.web_server) |*ws| {
1228
+ if (graph.time_report) {
1229
+ ws.updateTimeReportRunTest(
1230
+ run_index,
1231
+ &run.cached_test_metadata.?,
1232
+ tm.ns_per_test,
1233
+ );
1234
+ }
1235
+ }
1236
+ }
1237
+ return;
1238
+ },
1239
+ .timeout => |timeout| {
1240
+ const stderr_owned = try multi_reader.toOwnedSlice(1);
1241
+ var keep_stderr_owned = false;
1242
+ defer if (!keep_stderr_owned) gpa.free(stderr_owned);
1243
+
1244
+ if (timeout.active_test_index) |test_index| {
1245
+ // A test was running. Report the timeout against that test, and continue on to
1246
+ // the next test.
1247
+ test_metadata.?.ns_per_test[test_index] = timeout.ns_elapsed;
1248
+ test_results.timeout_count += 1;
1249
+ try step.addError(maker, "'{s}' timed out after {f}{s}{s}", .{
1250
+ test_metadata.?.testName(test_index),
1251
+ Io.Duration{ .nanoseconds = timeout.ns_elapsed },
1252
+ if (stderr_owned.len != 0) " with stderr:\n" else "",
1253
+ std.mem.trim(u8, stderr_owned, "\n"),
1254
+ });
1255
+ continue;
1256
+ }
1257
+ // Just log an error and let the child be killed.
1258
+ step.takeResultStderr(gpa, stderr_owned);
1259
+ keep_stderr_owned = true;
1260
+
1261
+ // The individual unit test results in `results` are irrelevant: the test runner
1262
+ // is broken! Fail immediately without populating `s.test_results`.
1263
+ return step.fail(maker, "test runner failed to respond for {f}", .{
1264
+ Io.Duration{ .nanoseconds = timeout.ns_elapsed },
1265
+ });
1266
+ },
1267
+ }
1268
+ comptime unreachable;
1269
+ }
1270
+ }
1271
+
1272
+ const TestMetadata = struct {
1273
+ names: []const u32,
1274
+ ns_per_test: []u64,
1275
+ expected_panic_msgs: []const u32,
1276
+ string_bytes: []const u8,
1277
+ next_index: u32,
1278
+ prog_node: std.Progress.Node,
1279
+
1280
+ fn toCachedTestMetadata(tm: TestMetadata) CachedTestMetadata {
1281
+ return .{
1282
+ .names = tm.names,
1283
+ .string_bytes = tm.string_bytes,
1284
+ };
1285
+ }
1286
+
1287
+ fn testName(tm: TestMetadata, index: u32) []const u8 {
1288
+ return tm.toCachedTestMetadata().testName(index);
1289
+ }
1290
+ };
1291
+
1292
+ pub const CachedTestMetadata = struct {
1293
+ names: []const u32,
1294
+ string_bytes: []const u8,
1295
+
1296
+ pub fn testName(tm: CachedTestMetadata, index: u32) []const u8 {
1297
+ return std.mem.sliceTo(tm.string_bytes[tm.names[index]..], 0);
1298
+ }
1299
+ };
1300
+
1301
+ fn requestNextTest(io: Io, in: Io.File, metadata: *TestMetadata, sub_prog_node: *?std.Progress.Node) !void {
1302
+ while (metadata.next_index < metadata.names.len) {
1303
+ const i = metadata.next_index;
1304
+ metadata.next_index += 1;
1305
+
1306
+ if (metadata.expected_panic_msgs[i] != 0) continue;
1307
+
1308
+ const name = metadata.testName(i);
1309
+ if (sub_prog_node.*) |n| n.end();
1310
+ sub_prog_node.* = metadata.prog_node.start(name, 0);
1311
+
1312
+ try sendRunTestMessage(io, in, .run_test, i);
1313
+ return;
1314
+ } else {
1315
+ metadata.next_index = std.math.maxInt(u32); // indicate that all tests are done
1316
+ try sendMessage(io, in, .exit);
1317
+ }
1318
+ }
1319
+
1320
+ fn sendMessage(io: Io, file: Io.File, tag: std.zig.Client.Message.Tag) !void {
1321
+ const header: std.zig.Client.Message.Header = .{
1322
+ .tag = tag,
1323
+ .bytes_len = 0,
1324
+ };
1325
+ var w = file.writerStreaming(io, &.{});
1326
+ w.interface.writeStruct(header, .little) catch |err| switch (err) {
1327
+ error.WriteFailed => return w.err.?,
1328
+ };
1329
+ }
1330
+
1331
+ fn sendRunTestMessage(io: Io, file: Io.File, tag: std.zig.Client.Message.Tag, index: u32) !void {
1332
+ const header: std.zig.Client.Message.Header = .{
1333
+ .tag = tag,
1334
+ .bytes_len = 4,
1335
+ };
1336
+ var w = file.writerStreaming(io, &.{});
1337
+ w.interface.writeStruct(header, .little) catch |err| switch (err) {
1338
+ error.WriteFailed => return w.err.?,
1339
+ };
1340
+ w.interface.writeInt(u32, index, .little) catch |err| switch (err) {
1341
+ error.WriteFailed => return w.err.?,
1342
+ };
1343
+ }
1344
+
1345
+ fn sendRunFuzzTestMessage(
1346
+ io: Io,
1347
+ file: Io.File,
1348
+ test_names: []const []const u8,
1349
+ kind: std.Build.abi.fuzz.LimitKind,
1350
+ amount_or_instance: u64,
1351
+ ) !void {
1352
+ const header: std.zig.Client.Message.Header = .{
1353
+ .tag = .start_fuzzing,
1354
+ .bytes_len = 1 + 8 + 4 + count: {
1355
+ var c: u32 = @intCast(test_names.len * 4);
1356
+ for (test_names) |name| {
1357
+ c += @intCast(name.len);
1358
+ }
1359
+ break :count c;
1360
+ },
1361
+ };
1362
+ var w = file.writerStreaming(io, &.{});
1363
+ w.interface.writeStruct(header, .little) catch |err| switch (err) {
1364
+ error.WriteFailed => return w.err.?,
1365
+ };
1366
+ w.interface.writeByte(@intFromEnum(kind)) catch |err| switch (err) {
1367
+ error.WriteFailed => return w.err.?,
1368
+ };
1369
+ w.interface.writeInt(u64, amount_or_instance, .little) catch |err| switch (err) {
1370
+ error.WriteFailed => return w.err.?,
1371
+ };
1372
+ w.interface.writeInt(u32, @intCast(test_names.len), .little) catch |err| switch (err) {
1373
+ error.WriteFailed => return w.err.?,
1374
+ };
1375
+ for (test_names) |test_name| {
1376
+ w.interface.writeInt(u32, @intCast(test_name.len), .little) catch |err| switch (err) {
1377
+ error.WriteFailed => return w.err.?,
1378
+ };
1379
+ w.interface.writeAll(test_name) catch |err| switch (err) {
1380
+ error.WriteFailed => return w.err.?,
1381
+ };
1382
+ }
1383
+ }
1384
+
1385
+ /// Uses `arena` to allocate the result.
1386
+ fn evalGeneric(
1387
+ arena: Allocator,
1388
+ run_index: Configuration.Step.Index,
1389
+ maker: *Maker,
1390
+ spawn_options: process.SpawnOptions,
1391
+ ) !EvalGenericResult {
1392
+ const graph = maker.graph;
1393
+ const io = graph.io;
1394
+ const conf = &maker.scanned_config.configuration;
1395
+ const conf_step = run_index.ptr(conf);
1396
+ const conf_run = conf_step.extended.get(conf.extra).run;
1397
+ const step = maker.stepByIndex(run_index);
1398
+
1399
+ var child = try process.spawn(io, spawn_options);
1400
+ defer child.kill(io);
1401
+
1402
+ switch (conf_run.stdin.u) {
1403
+ .bytes => |bytes| {
1404
+ child.stdin.?.writeStreamingAll(io, bytes.slice(conf)) catch |err| {
1405
+ return step.fail(maker, "failed to write stdin: {t}", .{err});
1406
+ };
1407
+ child.stdin.?.close(io);
1408
+ child.stdin = null;
1409
+ },
1410
+ .lazy_path => |lazy_path| {
1411
+ const path = try maker.resolveLazyPathIndex(arena, lazy_path, run_index);
1412
+ const file = path.root_dir.handle.openFile(io, path.subPathOrDot(), .{}) catch |err| {
1413
+ return step.fail(maker, "failed to open stdin file: {t}", .{err});
1414
+ };
1415
+ defer file.close(io);
1416
+ // TODO https://github.com/ziglang/zig/issues/23955
1417
+ var read_buffer: [1024]u8 = undefined;
1418
+ var file_reader = file.reader(io, &read_buffer);
1419
+ var write_buffer: [1024]u8 = undefined;
1420
+ var stdin_writer = child.stdin.?.writerStreaming(io, &write_buffer);
1421
+ _ = stdin_writer.interface.sendFileAll(&file_reader, .unlimited) catch |err| switch (err) {
1422
+ error.ReadFailed => return step.fail(maker, "failed to read from {f}: {t}", .{
1423
+ path, file_reader.err.?,
1424
+ }),
1425
+ error.WriteFailed => return step.fail(maker, "failed to write to stdin: {t}", .{
1426
+ stdin_writer.err.?,
1427
+ }),
1428
+ };
1429
+ stdin_writer.interface.flush() catch |err| switch (err) {
1430
+ error.WriteFailed => return step.fail(maker, "failed to write to stdin: {t}", .{
1431
+ stdin_writer.err.?,
1432
+ }),
1433
+ };
1434
+ child.stdin.?.close(io);
1435
+ child.stdin = null;
1436
+ },
1437
+ .none => {},
1438
+ }
1439
+
1440
+ var stdout_bytes: ?[]const u8 = null;
1441
+ var stderr_bytes: ?[]const u8 = null;
1442
+
1443
+ if (child.stdout) |stdout| {
1444
+ if (child.stderr) |stderr| {
1445
+ var multi_reader_buffer: Io.File.MultiReader.Buffer(2) = undefined;
1446
+ var multi_reader: Io.File.MultiReader = undefined;
1447
+ multi_reader.init(arena, io, multi_reader_buffer.toStreams(), &.{ stdout, stderr });
1448
+
1449
+ const stdout_reader = multi_reader.reader(0);
1450
+ const stderr_reader = multi_reader.reader(1);
1451
+
1452
+ while (multi_reader.fill(64, .none)) |_| {
1453
+ if (conf_run.stdio_limit.value) |limit| {
1454
+ if (stdout_reader.buffered().len > limit)
1455
+ return error.StdoutStreamTooLong;
1456
+ if (stderr_reader.buffered().len > limit)
1457
+ return error.StderrStreamTooLong;
1458
+ }
1459
+ } else |err| switch (err) {
1460
+ error.Timeout => unreachable,
1461
+ error.EndOfStream => {},
1462
+ else => |e| return e,
1463
+ }
1464
+
1465
+ try multi_reader.checkAnyError();
1466
+
1467
+ stdout_bytes = multi_reader.reader(0).buffered();
1468
+ stderr_bytes = multi_reader.reader(1).buffered();
1469
+ } else {
1470
+ var stdout_reader = stdout.readerStreaming(io, &.{});
1471
+ const stdio_limit: Io.Limit = if (conf_run.stdio_limit.value) |x| .limited64(x) else .unlimited;
1472
+ stdout_bytes = stdout_reader.interface.allocRemaining(arena, stdio_limit) catch |err| switch (err) {
1473
+ error.OutOfMemory => |e| return e,
1474
+ error.ReadFailed => return stdout_reader.err.?,
1475
+ error.StreamTooLong => return error.StdoutStreamTooLong,
1476
+ };
1477
+ }
1478
+ } else if (child.stderr) |stderr| {
1479
+ var stderr_reader = stderr.readerStreaming(io, &.{});
1480
+ const stdio_limit: Io.Limit = if (conf_run.stdio_limit.value) |x| .limited64(x) else .unlimited;
1481
+ stderr_bytes = stderr_reader.interface.allocRemaining(arena, stdio_limit) catch |err| switch (err) {
1482
+ error.OutOfMemory => |e| return e,
1483
+ error.ReadFailed => return stderr_reader.err.?,
1484
+ error.StreamTooLong => return error.StderrStreamTooLong,
1485
+ };
1486
+ }
1487
+
1488
+ if (stderr_bytes) |bytes| if (bytes.len > 0) {
1489
+ // Treat stderr as an error message.
1490
+ const stderr_is_diagnostic = conf_run.captured_stderr.value == null and switch (conf_run.flags.stdio) {
1491
+ .check => !checksContainStderr(&conf_run),
1492
+ else => true,
1493
+ };
1494
+ if (stderr_is_diagnostic) {
1495
+ try step.setResultStderr(maker.gpa, bytes);
1496
+ }
1497
+ };
1498
+
1499
+ step.result_peak_rss = child.resource_usage_statistics.getMaxRss() orelse 0;
1500
+
1501
+ return .{
1502
+ .term = try child.wait(io),
1503
+ .stdout = stdout_bytes,
1504
+ .stderr = stderr_bytes,
1505
+ };
1506
+ }
1507
+
1508
+ const IndexedOutput = struct {
1509
+ index: u32,
1510
+ arg_index: Configuration.Step.Run.Arg.Index,
1511
+ };
1512
+
1513
+ pub fn rerunInFuzzMode(
1514
+ run: *Run,
1515
+ run_index: Configuration.Step.Index,
1516
+ fuzz: *Fuzz,
1517
+ prog_node: std.Progress.Node,
1518
+ ) !void {
1519
+ const maker = fuzz.maker;
1520
+ const graph = maker.graph;
1521
+ const step = maker.stepByIndex(run_index);
1522
+ const io = graph.io;
1523
+ const gpa = maker.gpa;
1524
+ const conf = &maker.scanned_config.configuration;
1525
+ const conf_step = run_index.ptr(conf);
1526
+ const conf_run = conf_step.extended.get(conf.extra).run;
1527
+ const cache_root = graph.local_cache_root;
1528
+
1529
+ var arena_allocator: std.heap.ArenaAllocator = .init(gpa);
1530
+ defer arena_allocator.deinit();
1531
+ const arena = arena_allocator.allocator();
1532
+
1533
+ var argv_list: std.ArrayList([]const u8) = .empty;
1534
+ defer argv_list.deinit(gpa);
1535
+
1536
+ for (conf_run.args.slice) |arg_index| {
1537
+ const arg = arg_index.get(conf);
1538
+ try argv_list.ensureUnusedCapacity(gpa, 1);
1539
+ switch (arg.flags.tag) {
1540
+ .string => {
1541
+ const prefix = arg.prefix.value.?.slice(conf);
1542
+ argv_list.appendAssumeCapacity(prefix);
1543
+ },
1544
+ .path_file => {
1545
+ const prefix = if (arg.prefix.value) |p| p.slice(conf) else "";
1546
+ const suffix = if (arg.suffix.value) |p| p.slice(conf) else "";
1547
+ const file_path = try maker.resolveLazyPathIndex(arena, arg.path.value.?, run_index);
1548
+ argv_list.appendAssumeCapacity(try mem.concat(arena, u8, &.{
1549
+ prefix, try convertPathArg(arena, run_index, maker, file_path), suffix,
1550
+ }));
1551
+ },
1552
+ .path_directory => {
1553
+ const prefix = if (arg.prefix.value) |p| p.slice(conf) else "";
1554
+ const suffix = if (arg.suffix.value) |p| p.slice(conf) else "";
1555
+ const file_path = try maker.resolveLazyPathIndex(arena, arg.path.value.?, run_index);
1556
+ const resolved_arg = try mem.concat(arena, u8, &.{
1557
+ prefix, try convertPathArg(arena, run_index, maker, file_path), suffix,
1558
+ });
1559
+ argv_list.appendAssumeCapacity(resolved_arg);
1560
+ },
1561
+ .file_content => {
1562
+ const prefix = if (arg.prefix.value) |p| p.slice(conf) else "";
1563
+ const suffix = if (arg.suffix.value) |p| p.slice(conf) else "";
1564
+ const file_path = try maker.resolveLazyPathIndex(arena, arg.path.value.?, run_index);
1565
+
1566
+ var result: std.Io.Writer.Allocating = .init(arena);
1567
+ result.writer.writeAll(prefix) catch return error.OutOfMemory;
1568
+
1569
+ const file = file_path.root_dir.handle.openFile(io, file_path.sub_path, .{}) catch |err|
1570
+ return step.fail(maker, "unable to open input file {f}: {t}", .{ file_path, err });
1571
+ defer file.close(io);
1572
+
1573
+ var file_reader = file.reader(io, &.{});
1574
+ _ = file_reader.interface.streamRemaining(&result.writer) catch |err| switch (err) {
1575
+ error.ReadFailed => switch (file_reader.err.?) {
1576
+ error.Canceled => |e| return e,
1577
+ else => |e| return step.fail(maker, "failed to read from {f}: {t}", .{ file_path, e }),
1578
+ },
1579
+ error.WriteFailed => return error.OutOfMemory,
1580
+ };
1581
+ result.writer.writeAll(suffix) catch return error.OutOfMemory;
1582
+
1583
+ argv_list.appendAssumeCapacity(result.written());
1584
+ },
1585
+ .artifact => {
1586
+ const prefix = if (arg.prefix.value) |p| p.slice(conf) else "";
1587
+ const suffix = if (arg.suffix.value) |p| p.slice(conf) else "";
1588
+ const producer_index = arg.producer.value.?;
1589
+ const producer_step = producer_index.ptr(conf);
1590
+ const producer = producer_step.extended.get(conf.extra).compile;
1591
+ const producer_make_comp_step = maker.stepByIndex(producer_index);
1592
+ const producer_make_comp = &producer_make_comp_step.extended.compile;
1593
+ const file_path: Path = if (producer_index == conf_run.producer.value.?)
1594
+ run.rebuilt_executable.?
1595
+ else
1596
+ producer_make_comp.installed_path orelse
1597
+ maker.generatedPath(producer.generated_bin.value.?).*;
1598
+ argv_list.appendAssumeCapacity(try mem.concat(arena, u8, &.{
1599
+ prefix, try convertPathArg(arena, run_index, maker, file_path), suffix,
1600
+ }));
1601
+ },
1602
+ .output_file => unreachable,
1603
+ .output_directory => unreachable,
1604
+ .passthru => unreachable,
1605
+ }
1606
+ }
1607
+
1608
+ if (conf_run.flags.test_runner_mode) {
1609
+ const cache_dir_string = try convertPathArg(arena, run_index, maker, .{ .root_dir = cache_root });
1610
+
1611
+ try argv_list.ensureUnusedCapacity(gpa, 3);
1612
+ argv_list.appendAssumeCapacity(try allocPrint(arena, "--cache-dir={s}", .{cache_dir_string}));
1613
+ argv_list.appendAssumeCapacity(try allocPrint(arena, "--seed=0x{x}", .{graph.random_seed}));
1614
+ argv_list.appendAssumeCapacity("--listen=-");
1615
+ }
1616
+
1617
+ step.clearFailedCommand(gpa);
1618
+
1619
+ const has_side_effects = false;
1620
+ var rand_int: u64 = undefined;
1621
+ io.random(@ptrCast(&rand_int));
1622
+ const tmp_dir_path = "tmp" ++ Dir.path.sep_str ++ std.fmt.hex(rand_int);
1623
+ try runCommand(arena, run, run_index, maker, prog_node, argv_list.items, has_side_effects, tmp_dir_path, .{
1624
+ .fuzz = fuzz,
1625
+ });
1626
+ }
1627
+
1628
+ fn populateGeneratedPaths(
1629
+ maker: *Maker,
1630
+ output_placeholders: []const IndexedOutput,
1631
+ cache_root: Cache.Directory,
1632
+ digest: *const Cache.HexDigest,
1633
+ ) !void {
1634
+ const conf = &maker.scanned_config.configuration;
1635
+ const graph = maker.graph;
1636
+
1637
+ for (output_placeholders) |placeholder| {
1638
+ const arg = placeholder.arg_index.get(conf);
1639
+ maker.generatedPath(arg.generated.value.?).* = .{
1640
+ .root_dir = cache_root,
1641
+ .sub_path = try Dir.path.join(graph.arena, &.{
1642
+ "o", digest, arg.basename.value.?.slice(conf),
1643
+ }),
1644
+ };
1645
+ }
1646
+ }
1647
+
1648
+ fn populateGeneratedPathsCreateDirs(
1649
+ arena: Allocator,
1650
+ run_index: Configuration.Step.Index,
1651
+ maker: *Maker,
1652
+ output_dir_path: []const u8,
1653
+ output_placeholders: []const IndexedOutput,
1654
+ argv: [][]const u8,
1655
+ ) !void {
1656
+ const step = maker.stepByIndex(run_index);
1657
+ const conf = &maker.scanned_config.configuration;
1658
+ const graph = maker.graph;
1659
+ const io = graph.io;
1660
+ const cache_root = graph.local_cache_root;
1661
+
1662
+ for (output_placeholders) |placeholder| {
1663
+ const arg = placeholder.arg_index.get(conf);
1664
+ const prefix = if (arg.prefix.value) |p| p.slice(conf) else "";
1665
+ const suffix = if (arg.suffix.value) |p| p.slice(conf) else "";
1666
+ const basename = arg.basename.value.?.slice(conf);
1667
+
1668
+ const generated_path: Path = .{
1669
+ .root_dir = cache_root,
1670
+ .sub_path = try Dir.path.join(graph.arena, &.{ output_dir_path, basename }),
1671
+ };
1672
+ const create_path: Path = .{
1673
+ .root_dir = cache_root,
1674
+ .sub_path = switch (arg.flags.tag) {
1675
+ .output_file => Dir.path.dirname(generated_path.sub_path).?,
1676
+ .output_directory => generated_path.sub_path,
1677
+ else => unreachable,
1678
+ },
1679
+ };
1680
+ create_path.root_dir.handle.createDirPath(io, create_path.sub_path) catch |err|
1681
+ return step.fail(maker, "unable to make path {f}: {t}", .{ create_path, err });
1682
+
1683
+ maker.generatedPath(arg.generated.value.?).* = generated_path;
1684
+
1685
+ const arg_output_path = try convertPathArg(arena, run_index, maker, generated_path);
1686
+ argv[placeholder.index] = try mem.concat(arena, u8, &.{ prefix, arg_output_path, suffix });
1687
+ }
1688
+ }
1689
+
1690
+ fn populateGeneratedStdIo(
1691
+ maker: *Maker,
1692
+ conf_run: *const Configuration.Step.Run,
1693
+ cache_root: Cache.Directory,
1694
+ digest: *const Cache.HexDigest,
1695
+ ) !void {
1696
+ const conf = &maker.scanned_config.configuration;
1697
+ const graph = maker.graph;
1698
+
1699
+ if (conf_run.captured_stdout.value) |captured| {
1700
+ maker.generatedPath(captured.generated_file).* = .{
1701
+ .root_dir = cache_root,
1702
+ .sub_path = try Dir.path.join(graph.arena, &.{
1703
+ "o", digest, captured.basename.slice(conf),
1704
+ }),
1705
+ };
1706
+ }
1707
+
1708
+ if (conf_run.captured_stderr.value) |captured| {
1709
+ maker.generatedPath(captured.generated_file).* = .{
1710
+ .root_dir = cache_root,
1711
+ .sub_path = try Dir.path.join(graph.arena, &.{
1712
+ "o", digest, captured.basename.slice(conf),
1713
+ }),
1714
+ };
1715
+ }
1716
+ }
1717
+
1718
+ fn formatTerm(term: ?process.Child.Term, w: *std.Io.Writer) std.Io.Writer.Error!void {
1719
+ if (term) |t| switch (t) {
1720
+ .exited => |code| try w.print("exited with code {d}", .{code}),
1721
+ .signal => |sig| try w.print("terminated with signal {t}", .{sig}),
1722
+ .stopped => |sig| try w.print("stopped with signal {t}", .{sig}),
1723
+ .unknown => |code| try w.print("terminated for unknown reason with code {d}", .{code}),
1724
+ } else {
1725
+ try w.writeAll("exited with any code");
1726
+ }
1727
+ }
1728
+ fn fmtTerm(term: ?process.Child.Term) std.fmt.Alt(?process.Child.Term, formatTerm) {
1729
+ return .{ .data = term };
1730
+ }
1731
+
1732
+ const FuzzContext = struct {
1733
+ fuzz: *Fuzz,
1734
+ };
1735
+
1736
+ fn runCommand(
1737
+ arena: Allocator,
1738
+ run: *Run,
1739
+ run_index: Configuration.Step.Index,
1740
+ maker: *Maker,
1741
+ progress_node: std.Progress.Node,
1742
+ argv: []const []const u8,
1743
+ has_side_effects: bool,
1744
+ output_dir_path: []const u8,
1745
+ fuzz_context: ?FuzzContext,
1746
+ ) Step.ExtendedMakeError!void {
1747
+ const graph = maker.graph;
1748
+ const gpa = maker.gpa;
1749
+ const step = maker.stepByIndex(run_index);
1750
+ const io = graph.io;
1751
+ const cache_root = graph.local_cache_root;
1752
+ const conf = &maker.scanned_config.configuration;
1753
+ const conf_step = run_index.ptr(conf);
1754
+ const conf_run = conf_step.extended.get(conf.extra).run;
1755
+
1756
+ const cwd: process.Child.Cwd = if (conf_run.cwd.value) |lazy_cwd|
1757
+ .{ .path = try maker.resolveLazyPathIndexAbs(arena, lazy_cwd, run_index) }
1758
+ else
1759
+ .inherit;
1760
+
1761
+ const allow_skip = switch (conf_run.flags.stdio) {
1762
+ .check, .zig_test => conf_run.flags.skip_foreign_checks,
1763
+ else => false,
1764
+ };
1765
+
1766
+ var interp_argv: std.ArrayList([]const u8) = .empty;
1767
+
1768
+ var environ_map: std.process.Environ.Map = .init(gpa);
1769
+ defer environ_map.deinit();
1770
+
1771
+ // In either case we add to this mutatable data structure so that we can
1772
+ // tweak the environment below.
1773
+ if (conf_run.environ_map.value) |env_map_index| {
1774
+ const conf_env_map = env_map_index.get(conf);
1775
+ for (conf_env_map.keys.slice(conf), conf_env_map.values.slice(conf)) |k, v| {
1776
+ try environ_map.put(k.slice(conf), v.slice(conf));
1777
+ }
1778
+ } else {
1779
+ try environ_map.putAll(&graph.environ_map);
1780
+ }
1781
+
1782
+ // Now that we have the environ map, we might need to mutate it to insert
1783
+ // .dll search paths because Windows doesn't have rpaths.
1784
+ const arg0 = conf_run.args.slice[0].get(conf);
1785
+ if (arg0.producer.value) |producer_index| {
1786
+ const producer_step = producer_index.ptr(conf);
1787
+ const producer = producer_step.extended.get(conf.extra).compile;
1788
+ const root_module = producer.root_module.get(conf);
1789
+ const root_module_target = root_module.resolved_target.get(conf).?.result.get(conf);
1790
+ if (root_module_target.flags.os_tag == .windows) {
1791
+ try addPathForDynLibs(maker, arena, producer_index, &environ_map, argv[0]);
1792
+ }
1793
+ }
1794
+
1795
+ const cwd_string = switch (cwd) {
1796
+ .path => |p| p,
1797
+ .dir => unreachable,
1798
+ .inherit => null,
1799
+ };
1800
+ try graph.handleVerbose(cwd_string, &environ_map, argv);
1801
+
1802
+ const opt_generic_result = spawnChildAndCollect(
1803
+ arena,
1804
+ run_index,
1805
+ run,
1806
+ maker,
1807
+ progress_node,
1808
+ argv,
1809
+ &environ_map,
1810
+ has_side_effects,
1811
+ fuzz_context,
1812
+ ) catch |err| term: {
1813
+ switch (err) {
1814
+ error.InvalidExe, // cpu arch mismatch
1815
+ error.FileNotFound, // can happen with a wrong dynamic linker path
1816
+ => interpret: {
1817
+ const producer_index = arg0.producer.value orelse break :interpret;
1818
+ const producer_step = producer_index.ptr(conf);
1819
+ const producer = producer_step.extended.get(conf.extra).compile;
1820
+ switch (producer.flags3.kind) {
1821
+ .exe, .@"test" => {},
1822
+ else => break :interpret,
1823
+ }
1824
+ const root_module = producer.root_module.get(conf);
1825
+ const root_module_target = root_module.resolved_target.get(conf).?.result.get(conf);
1826
+ const other_target_query = root_module_target.unwrap(conf);
1827
+ const root_target = std.zig.system.resolveTargetQuery(io, other_target_query) catch unreachable;
1828
+ const link_libc = maker.stepByIndex(producer_index).extended.compile.is_linking_libc;
1829
+
1830
+ const host: std.Target = std.zig.system.resolveTargetQuery(io, .{}) catch |he| switch (he) {
1831
+ error.Canceled => |e| return e,
1832
+ else => builtin.target,
1833
+ };
1834
+
1835
+ const need_cross_libc = link_libc and root_target.os.tag == .linux and
1836
+ switch (producer.flags2.linkage) {
1837
+ .static => false,
1838
+ .dynamic => true,
1839
+ .default => root_target.isGnuLibC(),
1840
+ };
1841
+ switch (std.zig.system.getExternalExecutor(io, &root_target, .{
1842
+ .host_cpu_arch = host.cpu.arch,
1843
+ .host_os_tag = host.os.tag,
1844
+ .qemu_fixes_dl = need_cross_libc and graph.libc_runtimes_dir != null,
1845
+ .link_libc = link_libc,
1846
+ })) {
1847
+ .native, .rosetta => {
1848
+ if (allow_skip) return error.MakeSkipped;
1849
+ break :interpret;
1850
+ },
1851
+ .wine => |bin_name| {
1852
+ if (graph.enable_wine) {
1853
+ try interp_argv.ensureUnusedCapacity(arena, 1 + argv.len);
1854
+ interp_argv.appendAssumeCapacity(bin_name);
1855
+ interp_argv.appendSliceAssumeCapacity(argv);
1856
+
1857
+ // Wine's excessive stderr logging is only situationally helpful. Disable it by default, but
1858
+ // allow the user to override it (e.g. with `WINEDEBUG=err+all`) if desired.
1859
+ if (environ_map.get("WINEDEBUG") == null) {
1860
+ try environ_map.put("WINEDEBUG", "-all");
1861
+ }
1862
+ } else {
1863
+ return failForeign(arena, &conf_run, maker, run_index, "-fwine", argv[0], &root_target, &host);
1864
+ }
1865
+ },
1866
+ .qemu => |bin_name| {
1867
+ if (graph.enable_qemu) {
1868
+ try interp_argv.ensureUnusedCapacity(arena, 3 + argv.len);
1869
+ interp_argv.appendAssumeCapacity(bin_name);
1870
+
1871
+ if (need_cross_libc) {
1872
+ if (graph.libc_runtimes_dir) |dir| {
1873
+ interp_argv.appendAssumeCapacity("-L");
1874
+ interp_argv.appendAssumeCapacity(try Dir.path.join(arena, &.{
1875
+ dir,
1876
+ try if (root_target.isGnuLibC()) std.zig.target.glibcRuntimeTriple(
1877
+ arena,
1878
+ root_target.cpu.arch,
1879
+ root_target.os.tag,
1880
+ root_target.abi,
1881
+ ) else if (root_target.isMuslLibC()) std.zig.target.muslRuntimeTriple(
1882
+ arena,
1883
+ root_target.cpu.arch,
1884
+ root_target.abi,
1885
+ ) else unreachable,
1886
+ }));
1887
+ } else return failForeign(arena, &conf_run, maker, run_index, "--libc-runtimes", argv[0], &root_target, &host);
1888
+ }
1889
+
1890
+ interp_argv.appendSliceAssumeCapacity(argv);
1891
+ } else return failForeign(arena, &conf_run, maker, run_index, "-fqemu", argv[0], &root_target, &host);
1892
+ },
1893
+ .darling => |bin_name| {
1894
+ if (graph.enable_darling) {
1895
+ try interp_argv.ensureUnusedCapacity(arena, 1 + argv.len);
1896
+ interp_argv.appendAssumeCapacity(bin_name);
1897
+ interp_argv.appendSliceAssumeCapacity(argv);
1898
+ } else {
1899
+ return failForeign(arena, &conf_run, maker, run_index, "-fdarling", argv[0], &root_target, &host);
1900
+ }
1901
+ },
1902
+ .wasmtime => |bin_name| {
1903
+ if (graph.enable_wasmtime) {
1904
+ try interp_argv.ensureUnusedCapacity(arena, 3 + argv.len);
1905
+ interp_argv.appendAssumeCapacity(bin_name);
1906
+ interp_argv.appendAssumeCapacity("--dir=.");
1907
+ // Wasmtime doeesn't inherit environment variables from the parent process
1908
+ // by default. '-S inherit-env' was added in Wasmtime version 20.
1909
+ interp_argv.appendAssumeCapacity("-Sinherit-env");
1910
+ interp_argv.appendSliceAssumeCapacity(argv);
1911
+ } else {
1912
+ return failForeign(arena, &conf_run, maker, run_index, "-fwasmtime", argv[0], &root_target, &host);
1913
+ }
1914
+ },
1915
+ .bad_dl => |foreign_dl| {
1916
+ if (allow_skip) return error.MakeSkipped;
1917
+
1918
+ const host_dl = host.dynamic_linker.get() orelse "(none)";
1919
+
1920
+ return step.fail(maker,
1921
+ \\the host system is unable to execute binaries from the target
1922
+ \\ because the host dynamic linker is '{s}',
1923
+ \\ while the target dynamic linker is '{s}'.
1924
+ \\ consider setting the dynamic linker or enabling skip_foreign_checks in the Run step
1925
+ , .{ host_dl, foreign_dl });
1926
+ },
1927
+ .bad_os_or_cpu => {
1928
+ if (allow_skip) return error.MakeSkipped;
1929
+
1930
+ const host_name = try host.zigTriple(arena);
1931
+ const foreign_name = try root_target.zigTriple(arena);
1932
+
1933
+ return step.fail(maker, "the host system ({s}) is unable to execute binaries from the target ({s})", .{
1934
+ host_name, foreign_name,
1935
+ });
1936
+ },
1937
+ }
1938
+
1939
+ step.clearFailedCommand(gpa);
1940
+ try graph.handleVerbose(cwd_string, &environ_map, interp_argv.items);
1941
+
1942
+ break :term spawnChildAndCollect(
1943
+ arena,
1944
+ run_index,
1945
+ run,
1946
+ maker,
1947
+ progress_node,
1948
+ interp_argv.items,
1949
+ &environ_map,
1950
+ has_side_effects,
1951
+ fuzz_context,
1952
+ ) catch |e| {
1953
+ if (!conf_run.flags.failing_to_execute_foreign_is_an_error) return error.MakeSkipped;
1954
+ if (e == error.MakeFailed) return error.MakeFailed; // error already reported
1955
+ return step.fail(maker, "unable to spawn interpreter {s}: {t}", .{ interp_argv.items[0], e });
1956
+ };
1957
+ },
1958
+ error.MakeFailed, error.OutOfMemory, error.Canceled => |e| return e,
1959
+ else => {},
1960
+ }
1961
+ return step.fail(maker, "failed to spawn and capture stdio from {s}: {t}", .{ argv[0], err });
1962
+ };
1963
+
1964
+ const generic_result = opt_generic_result orelse {
1965
+ assert(conf_run.flags.stdio == .zig_test);
1966
+ // Specific errors have already been reported, and test results are populated. All we need
1967
+ // to do is report step failure if any test failed.
1968
+ if (!step.test_results.isSuccess()) return error.MakeFailed;
1969
+ return;
1970
+ };
1971
+
1972
+ assert(fuzz_context == null);
1973
+ assert(conf_run.flags.stdio != .zig_test);
1974
+
1975
+ // Capture stdout and stderr to GeneratedFile objects.
1976
+ const Stream = struct {
1977
+ captured: ?Configuration.Step.Run.CapturedStream,
1978
+ bytes: ?[]const u8,
1979
+ trim_whitespace: Configuration.Step.Run.TrimWhitespace,
1980
+ };
1981
+ for (&[_]Stream{
1982
+ .{
1983
+ .captured = conf_run.captured_stdout.value,
1984
+ .bytes = generic_result.stdout,
1985
+ .trim_whitespace = conf_run.flags.stdout_trim_whitespace,
1986
+ },
1987
+ .{
1988
+ .captured = conf_run.captured_stderr.value,
1989
+ .bytes = generic_result.stderr,
1990
+ .trim_whitespace = conf_run.flags.stderr_trim_whitespace,
1991
+ },
1992
+ }) |*stream| {
1993
+ if (stream.captured) |captured| {
1994
+ const output_path: Path = .{
1995
+ .root_dir = cache_root,
1996
+ .sub_path = try Dir.path.join(graph.arena, &.{
1997
+ output_dir_path, captured.basename.slice(conf),
1998
+ }),
1999
+ };
2000
+ maker.generatedPath(captured.generated_file).* = output_path;
2001
+
2002
+ const sub_path_parent = output_path.dirname().?;
2003
+ sub_path_parent.root_dir.handle.createDirPath(io, sub_path_parent.sub_path) catch |err|
2004
+ return step.fail(maker, "unable to make path {f}: {t}", .{ sub_path_parent, err });
2005
+
2006
+ const data = switch (stream.trim_whitespace) {
2007
+ .none => stream.bytes.?,
2008
+ .all => mem.trim(u8, stream.bytes.?, &std.ascii.whitespace),
2009
+ .leading => mem.trimStart(u8, stream.bytes.?, &std.ascii.whitespace),
2010
+ .trailing => mem.trimEnd(u8, stream.bytes.?, &std.ascii.whitespace),
2011
+ };
2012
+ output_path.root_dir.handle.writeFile(io, .{
2013
+ .sub_path = output_path.sub_path,
2014
+ .data = data,
2015
+ }) catch |err| return step.fail(maker, "unable to write file {f}: {t}", .{ output_path, err });
2016
+ }
2017
+ }
2018
+
2019
+ switch (conf_run.flags.stdio) {
2020
+ .zig_test => unreachable,
2021
+ .check => {
2022
+ if (conf_run.expect_stderr_exact.value) |bytes| {
2023
+ const expected_bytes = bytes.slice(conf);
2024
+ if (!mem.eql(u8, expected_bytes, generic_result.stderr.?)) {
2025
+ return step.fail(maker,
2026
+ \\========= expected this stderr: =========
2027
+ \\{s}
2028
+ \\========= but found: ====================
2029
+ \\{s}
2030
+ , .{
2031
+ expected_bytes,
2032
+ generic_result.stderr.?,
2033
+ });
2034
+ }
2035
+ }
2036
+ if (conf_run.expect_stdout_exact.value) |bytes| {
2037
+ const expected_bytes = bytes.slice(conf);
2038
+ if (!mem.eql(u8, expected_bytes, generic_result.stdout.?)) {
2039
+ return step.fail(maker,
2040
+ \\========= expected this stdout: =========
2041
+ \\{s}
2042
+ \\========= but found: ====================
2043
+ \\{s}
2044
+ , .{
2045
+ expected_bytes,
2046
+ generic_result.stdout.?,
2047
+ });
2048
+ }
2049
+ }
2050
+ for (conf_run.expect_stderr_match.slice) |bytes| {
2051
+ const match = bytes.slice(conf);
2052
+ if (mem.find(u8, generic_result.stderr.?, match) == null) {
2053
+ return step.fail(maker,
2054
+ \\========= expected to find in stderr: =========
2055
+ \\{s}
2056
+ \\========= but stderr does not contain it: =====
2057
+ \\{s}
2058
+ , .{
2059
+ match,
2060
+ generic_result.stderr.?,
2061
+ });
2062
+ }
2063
+ }
2064
+ for (conf_run.expect_stdout_match.slice) |bytes| {
2065
+ const match = bytes.slice(conf);
2066
+ if (mem.find(u8, generic_result.stdout.?, match) == null) {
2067
+ return step.fail(maker,
2068
+ \\========= expected to find in stdout: =========
2069
+ \\{s}
2070
+ \\========= but stdout does not contain it: =====
2071
+ \\{s}
2072
+ , .{
2073
+ match,
2074
+ generic_result.stdout.?,
2075
+ });
2076
+ }
2077
+ }
2078
+ if (conf_run.expect_term_value.value) |expected_term_value| {
2079
+ const expected_term: process.Child.Term = switch (conf_run.flags2.expect_term_status) {
2080
+ .exited => .{ .exited = @intCast(expected_term_value) },
2081
+ .signal => .{ .signal = @enumFromInt(expected_term_value) },
2082
+ .stopped => .{ .stopped = @enumFromInt(expected_term_value) },
2083
+ .unknown => .{ .unknown = expected_term_value },
2084
+ };
2085
+ if (!termMatches(expected_term, generic_result.term)) {
2086
+ return step.fail(maker, "process {f} (expected {f})", .{
2087
+ fmtTerm(generic_result.term),
2088
+ fmtTerm(expected_term),
2089
+ });
2090
+ }
2091
+ }
2092
+ },
2093
+ else => {
2094
+ // On failure, report captured stderr like normal standard error output.
2095
+ if (!generic_result.term.success()) {
2096
+ if (generic_result.stderr) |bytes| {
2097
+ try step.setResultStderr(gpa, bytes);
2098
+ }
2099
+ }
2100
+ try step.handleChildProcessTerm(maker, generic_result.term);
2101
+ },
2102
+ }
2103
+ }
2104
+
2105
+ const EvalGenericResult = struct {
2106
+ term: process.Child.Term,
2107
+ stdout: ?[]const u8,
2108
+ stderr: ?[]const u8,
2109
+ };
2110
+
2111
+ fn spawnChildAndCollect(
2112
+ arena: Allocator,
2113
+ run_index: Configuration.Step.Index,
2114
+ run: *Run,
2115
+ maker: *Maker,
2116
+ progress_node: std.Progress.Node,
2117
+ argv: []const []const u8,
2118
+ environ_map: *EnvMap,
2119
+ has_side_effects: bool,
2120
+ fuzz_context: ?FuzzContext,
2121
+ ) !?EvalGenericResult {
2122
+ const step = maker.stepByIndex(run_index);
2123
+ const graph = maker.graph;
2124
+ const io = graph.io;
2125
+ const gpa = maker.gpa;
2126
+ const conf = &maker.scanned_config.configuration;
2127
+ const conf_step = run_index.ptr(conf);
2128
+ const conf_run = conf_step.extended.get(conf.extra).run;
2129
+
2130
+ if (fuzz_context != null) {
2131
+ assert(!has_side_effects);
2132
+ assert(conf_run.flags.stdio == .zig_test);
2133
+ }
2134
+
2135
+ const child_cwd: process.Child.Cwd = if (conf_run.cwd.value) |lazy_cwd|
2136
+ .{ .path = try maker.resolveLazyPathIndexAbs(arena, lazy_cwd, run_index) }
2137
+ else
2138
+ .inherit;
2139
+
2140
+ // If an error occurs, it's caused by this command:
2141
+ const cwd_string = switch (child_cwd) {
2142
+ .path => |p| p,
2143
+ .dir => unreachable,
2144
+ .inherit => null,
2145
+ };
2146
+ errdefer step.setFailedCommand(gpa, argv, .{
2147
+ .cwd = cwd_string,
2148
+ .child_env = environ_map,
2149
+ .parent_env = &graph.environ_map,
2150
+ });
2151
+
2152
+ try step.handleChildProcUnsupported(maker);
2153
+
2154
+ var spawn_options: process.SpawnOptions = .{
2155
+ .argv = argv,
2156
+ .cwd = child_cwd,
2157
+ .environ_map = environ_map,
2158
+ .request_resource_usage_statistics = true,
2159
+ .stdin = if (conf_run.stdin.u != .none) s: {
2160
+ assert(conf_run.flags.stdio != .inherit);
2161
+ break :s .pipe;
2162
+ } else switch (conf_run.flags.stdio) {
2163
+ .infer_from_args => if (has_side_effects) .inherit else .ignore,
2164
+ .inherit => .inherit,
2165
+ .check => .ignore,
2166
+ .zig_test => .pipe,
2167
+ },
2168
+ .stdout = if (conf_run.captured_stdout.value != null) .pipe else switch (conf_run.flags.stdio) {
2169
+ .infer_from_args => if (has_side_effects) .inherit else .ignore,
2170
+ .inherit => .inherit,
2171
+ .check => if (checksContainStdout(&conf_run)) .pipe else .ignore,
2172
+ .zig_test => .pipe,
2173
+ },
2174
+ .stderr = if (conf_run.captured_stderr.value != null) .pipe else switch (conf_run.flags.stdio) {
2175
+ .infer_from_args => if (has_side_effects) .inherit else .pipe,
2176
+ .inherit => .inherit,
2177
+ .check => .pipe,
2178
+ .zig_test => .pipe,
2179
+ },
2180
+ };
2181
+
2182
+ if (conf_run.flags.stdio == .zig_test) {
2183
+ const started: Io.Clock.Timestamp = .now(io, .awake);
2184
+ const result = evalZigTest(run, run_index, maker, progress_node, spawn_options, fuzz_context) catch |err| switch (err) {
2185
+ error.Canceled => |e| return e,
2186
+ else => |e| e,
2187
+ };
2188
+ step.result_duration_ns = @intCast(started.untilNow(io).raw.nanoseconds);
2189
+ try result;
2190
+ return null;
2191
+ } else {
2192
+ const inherit = spawn_options.stdout == .inherit or spawn_options.stderr == .inherit;
2193
+ if (!conf_run.flags.disable_zig_progress and !inherit) {
2194
+ spawn_options.progress_node = progress_node;
2195
+ }
2196
+ const terminal_mode: Io.Terminal.Mode = if (inherit) m: {
2197
+ const stderr = try io.lockStderr(&.{}, graph.stderr_mode);
2198
+ break :m stderr.terminal_mode;
2199
+ } else .no_color;
2200
+ defer if (inherit) io.unlockStderr();
2201
+ try setColorEnvironmentVariables(&conf_run, environ_map, terminal_mode);
2202
+
2203
+ const started: Io.Clock.Timestamp = .now(io, .awake);
2204
+ const result = evalGeneric(arena, run_index, maker, spawn_options) catch |err| switch (err) {
2205
+ error.Canceled => |e| return e,
2206
+ else => |e| e,
2207
+ };
2208
+ step.result_duration_ns = @intCast(started.untilNow(io).raw.nanoseconds);
2209
+ return try result;
2210
+ }
2211
+ }
2212
+
2213
+ fn termMatches(expected: ?process.Child.Term, actual: process.Child.Term) bool {
2214
+ return if (expected) |e| switch (e) {
2215
+ .exited => |expected_code| switch (actual) {
2216
+ .exited => |actual_code| expected_code == actual_code,
2217
+ else => false,
2218
+ },
2219
+ .signal => |expected_sig| switch (actual) {
2220
+ .signal => |actual_sig| expected_sig == actual_sig,
2221
+ else => false,
2222
+ },
2223
+ .stopped => |expected_sig| switch (actual) {
2224
+ .stopped => |actual_sig| expected_sig == actual_sig,
2225
+ else => false,
2226
+ },
2227
+ .unknown => |expected_code| switch (actual) {
2228
+ .unknown => |actual_code| expected_code == actual_code,
2229
+ else => false,
2230
+ },
2231
+ } else switch (actual) {
2232
+ .exited => true,
2233
+ else => false,
2234
+ };
2235
+ }
2236
+
2237
+ fn setColorEnvironmentVariables(
2238
+ conf_run: *const Configuration.Step.Run,
2239
+ environ_map: *EnvMap,
2240
+ terminal_mode: Io.Terminal.Mode,
2241
+ ) !void {
2242
+ color: switch (conf_run.flags.color) {
2243
+ .manual => {},
2244
+ .enable => {
2245
+ try environ_map.put("CLICOLOR_FORCE", "1");
2246
+ _ = environ_map.swapRemove("NO_COLOR");
2247
+ },
2248
+ .disable => {
2249
+ try environ_map.put("NO_COLOR", "1");
2250
+ _ = environ_map.swapRemove("CLICOLOR_FORCE");
2251
+ },
2252
+ .inherit => switch (terminal_mode) {
2253
+ .no_color, .windows_api => continue :color .disable,
2254
+ .escape_codes => continue :color .enable,
2255
+ },
2256
+ .auto => {
2257
+ const capture_stderr = conf_run.captured_stderr.value != null or switch (conf_run.flags.stdio) {
2258
+ .check => checksContainStderr(conf_run),
2259
+ .infer_from_args, .inherit, .zig_test => false,
2260
+ };
2261
+ if (capture_stderr) {
2262
+ continue :color .disable;
2263
+ } else {
2264
+ continue :color .inherit;
2265
+ }
2266
+ },
2267
+ }
2268
+ }
2269
+
2270
+ fn checksContainStdout(conf_run: *const Configuration.Step.Run) bool {
2271
+ return conf_run.expect_stdout_exact.value != null or conf_run.expect_stdout_match.slice.len != 0;
2272
+ }
2273
+
2274
+ fn checksContainStderr(conf_run: *const Configuration.Step.Run) bool {
2275
+ return conf_run.expect_stderr_exact.value != null or conf_run.expect_stderr_match.slice.len != 0;
2276
+ }
2277
+
2278
+ /// If `path` is cwd-relative, make it relative to the cwd of the child instead.
2279
+ ///
2280
+ /// Whenever a path is included in the argv of a child, it should be put through this function first
2281
+ /// to make sure the child doesn't see paths relative to a cwd other than its own.
2282
+ fn convertPathArg(arena: Allocator, run_index: Configuration.Step.Index, maker: *Maker, path: Path) ![]const u8 {
2283
+ const conf = &maker.scanned_config.configuration;
2284
+ const conf_step = run_index.ptr(conf);
2285
+ const conf_run = conf_step.extended.get(conf.extra).run;
2286
+ const graph = maker.graph;
2287
+
2288
+ const path_str = try path.toString(arena);
2289
+ if (Dir.path.isAbsolute(path_str)) {
2290
+ // Absolute paths don't need changing.
2291
+ return path_str;
2292
+ }
2293
+ const child_cwd_rel: []const u8 = rel: {
2294
+ const child_lazy_cwd = conf_run.cwd.value orelse break :rel path_str;
2295
+ const child_cwd = try maker.resolveLazyPathIndexAbs(arena, child_lazy_cwd, run_index);
2296
+ // Convert it from relative to *our* cwd, to relative to the *child's* cwd.
2297
+ break :rel try Dir.path.relative(arena, graph.cache.cwd, &graph.environ_map, child_cwd, path_str);
2298
+ };
2299
+ // Not every path can be made relative, e.g. if the path and the child cwd are on different
2300
+ // disk designators on Windows. In that case, `relative` will return an absolute path which we can
2301
+ // just return.
2302
+ if (Dir.path.isAbsolute(child_cwd_rel)) return child_cwd_rel;
2303
+
2304
+ // We're not done yet. In some cases this path must be prefixed with './':
2305
+ // * On POSIX, the executable name cannot be a single component like 'foo'
2306
+ // * Some executables might treat a leading '-' like a flag, which we must avoid
2307
+ // There's no harm in it, so just *always* apply this prefix.
2308
+ return Dir.path.join(arena, &.{ ".", child_cwd_rel });
2309
+ }
2310
+
2311
+ fn addPathForDynLibs(
2312
+ maker: *Maker,
2313
+ arena: Allocator,
2314
+ artifact: Configuration.Step.Index,
2315
+ environ_map: *process.Environ.Map,
2316
+ argv0: []const u8,
2317
+ ) !void {
2318
+ const conf = &maker.scanned_config.configuration;
2319
+ const graph = maker.graph;
2320
+ const use_wine = graph.enable_wine and builtin.os.tag != .windows and std.ascii.endsWithIgnoreCase(argv0, ".exe");
2321
+ const path_key = if (use_wine) "WINEPATH" else "PATH";
2322
+ const path_delimiter: u8 = if (builtin.os.tag == .windows or use_wine)
2323
+ Dir.path.delimiter_windows
2324
+ else
2325
+ Dir.path.delimiter;
2326
+
2327
+ var module_graph: Step.Compile.ModuleGraph = .empty;
2328
+ const compile_deps = try Step.Compile.getCompileDependencies(arena, &module_graph, conf, artifact, true);
2329
+
2330
+ for (compile_deps) |dep_index| {
2331
+ const conf_comp_step = dep_index.ptr(conf);
2332
+ const conf_comp = conf_comp_step.extended.get(conf.extra).compile;
2333
+ const root_module = conf_comp.root_module.get(conf);
2334
+ const target = root_module.resolved_target.get(conf).?.result.get(conf);
2335
+ if (target.flags.os_tag == .windows and conf_comp.isDynamicLibrary()) {
2336
+ const dll_path = try maker.generatedPath(conf_comp.generated_bin.value.?).toString(arena);
2337
+ const search_path = Dir.path.dirname(dll_path).?;
2338
+ if (environ_map.get(path_key)) |prev_path| {
2339
+ const new_path = try allocPrint(arena, "{s}{c}{s}", .{ prev_path, path_delimiter, search_path });
2340
+ try environ_map.put(path_key, new_path);
2341
+ } else {
2342
+ try environ_map.put(path_key, search_path);
2343
+ }
2344
+ }
2345
+ }
2346
+ }
2347
+
2348
+ fn failForeign(
2349
+ arena: Allocator,
2350
+ conf_run: *const Configuration.Step.Run,
2351
+ maker: *Maker,
2352
+ step_index: Configuration.Step.Index,
2353
+ suggested_flag: []const u8,
2354
+ argv0: []const u8,
2355
+ artifact_target: *const std.Target,
2356
+ host_target: *const std.Target,
2357
+ ) Step.ExtendedMakeError {
2358
+ const step = maker.stepByIndex(step_index);
2359
+ switch (conf_run.flags.stdio) {
2360
+ .check, .zig_test => {
2361
+ if (conf_run.flags.skip_foreign_checks) return error.MakeSkipped;
2362
+
2363
+ const host_name = try host_target.zigTriple(arena);
2364
+ const foreign_name = try artifact_target.zigTriple(arena);
2365
+
2366
+ return step.fail(maker,
2367
+ \\unable to spawn foreign binary '{s}' ({s}) on host system ({s})
2368
+ \\ consider using {s} or enabling skip_foreign_checks in the Run step
2369
+ , .{ argv0, foreign_name, host_name, suggested_flag });
2370
+ },
2371
+ else => {
2372
+ return step.fail(maker, "unable to spawn foreign binary '{s}'", .{argv0});
2373
+ },
2374
+ }
2375
+ }