@zigc/lib 0.17.0-dev.76 → 0.17.0-dev.813

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