@zigc/lib 0.17.0-dev.131 → 0.17.0-dev.215

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 (786) hide show
  1. package/c/stdlib.zig +32 -22
  2. package/compiler/aro/aro/Compilation.zig +0 -3
  3. package/compiler/translate-c/ast.zig +5 -2
  4. package/compiler_rt/arm.zig +3 -3
  5. package/compiler_rt/trunctfhf2.zig +3 -0
  6. package/compiler_rt.zig +1 -22
  7. package/docs/wasm/markdown/Parser.zig +5 -9
  8. package/include/__clang_spirv_builtins.h +12 -12
  9. package/include/__float_float.h +176 -0
  10. package/include/__float_header_macro.h +12 -0
  11. package/include/__float_infinity_nan.h +20 -0
  12. package/include/amo.h +131 -0
  13. package/include/amxavx512intrin.h +215 -1
  14. package/include/amxintrin.h +0 -2
  15. package/include/arm_acle.h +37 -27
  16. package/include/arm_neon.h +218 -82
  17. package/include/arm_sme.h +8 -8
  18. package/include/arm_sve.h +4162 -3782
  19. package/include/avx10_2_512bf16intrin.h +19 -12
  20. package/include/avx10_2_512convertintrin.h +1 -1
  21. package/include/avx10_2_512niintrin.h +31 -31
  22. package/include/avx10_2_512satcvtdsintrin.h +1 -1
  23. package/include/avx10_2bf16intrin.h +54 -45
  24. package/include/avx10_2convertintrin.h +2 -2
  25. package/include/avx10_2copyintrin.h +1 -1
  26. package/include/avx10_2niintrin.h +14 -14
  27. package/include/avx10_2satcvtdsintrin.h +2 -2
  28. package/include/avx2intrin.h +275 -377
  29. package/include/avx512bf16intrin.h +25 -16
  30. package/include/avx512bitalgintrin.h +19 -30
  31. package/include/avx512bwintrin.h +386 -505
  32. package/include/avx512cdintrin.h +42 -55
  33. package/include/avx512dqintrin.h +132 -161
  34. package/include/avx512fintrin.h +1015 -1424
  35. package/include/avx512fp16intrin.h +112 -110
  36. package/include/avx512ifmaintrin.h +32 -34
  37. package/include/avx512ifmavlintrin.h +73 -46
  38. package/include/avx512vbmi2intrin.h +43 -32
  39. package/include/avx512vbmiintrin.h +19 -27
  40. package/include/avx512vbmivlintrin.h +35 -49
  41. package/include/avx512vlbf16intrin.h +32 -22
  42. package/include/avx512vlbitalgintrin.h +37 -53
  43. package/include/avx512vlbwintrin.h +470 -573
  44. package/include/avx512vlcdintrin.h +74 -102
  45. package/include/avx512vldqintrin.h +110 -127
  46. package/include/avx512vlfp16intrin.h +130 -111
  47. package/include/avx512vlintrin.h +945 -1299
  48. package/include/avx512vlvbmi2intrin.h +78 -63
  49. package/include/avx512vlvnniintrin.h +21 -18
  50. package/include/avx512vlvp2intersectintrin.h +2 -2
  51. package/include/avx512vnniintrin.h +10 -10
  52. package/include/avx512vp2intersectintrin.h +1 -2
  53. package/include/avx512vpopcntdqintrin.h +8 -10
  54. package/include/avx512vpopcntdqvlintrin.h +17 -15
  55. package/include/avxifmaintrin.h +16 -0
  56. package/include/avxintrin.h +165 -241
  57. package/include/avxvnniint16intrin.h +118 -99
  58. package/include/avxvnniint8intrin.h +56 -32
  59. package/include/avxvnniintrin.h +16 -8
  60. package/include/cpuid.h +101 -4
  61. package/include/emmintrin.h +168 -168
  62. package/include/f16cintrin.h +23 -9
  63. package/include/float.h +16 -155
  64. package/include/fma4intrin.h +98 -96
  65. package/include/fmaintrin.h +96 -66
  66. package/include/gfniintrin.h +21 -16
  67. package/include/hexagon_types.h +23 -20
  68. package/include/hvx_hexagon_protos.h +649 -860
  69. package/include/immintrin.h +0 -12
  70. package/include/intrin.h +4 -0
  71. package/include/lasxintrin.h +113 -0
  72. package/include/llvm_libc_wrappers/assert.h +3 -5
  73. package/include/llvm_libc_wrappers/ctype.h +3 -115
  74. package/include/llvm_libc_wrappers/inttypes.h +3 -5
  75. package/include/llvm_libc_wrappers/stdio.h +10 -38
  76. package/include/llvm_libc_wrappers/stdlib.h +3 -24
  77. package/include/llvm_libc_wrappers/string.h +2 -70
  78. package/include/llvm_libc_wrappers/time.h +4 -10
  79. package/include/mmintrin.h +188 -257
  80. package/include/module.modulemap +23 -4
  81. package/include/movrs_avx10_2_512intrin.h +2 -2
  82. package/include/movrs_avx10_2intrin.h +4 -4
  83. package/include/pmmintrin.h +12 -24
  84. package/include/ptrauth.h +16 -2
  85. package/include/riscv_mips.h +34 -0
  86. package/include/riscv_nds.h +89 -0
  87. package/include/sifive_vector.h +58 -2
  88. package/include/sm4evexintrin.h +2 -2
  89. package/include/smmintrin.h +77 -59
  90. package/include/spirvintrin.h +194 -0
  91. package/include/stddefer.h +19 -0
  92. package/include/tmmintrin.h +116 -147
  93. package/include/vaesintrin.h +1 -2
  94. package/include/xmmintrin.h +44 -70
  95. package/include/xopintrin.h +20 -10
  96. package/libc/include/aarch64-linux-any/asm/hwcap.h +1 -0
  97. package/libc/include/aarch64-linux-any/asm/unistd_64.h +1 -0
  98. package/libc/include/any-linux-any/asm-generic/errno.h +2 -0
  99. package/libc/include/any-linux-any/asm-generic/unistd.h +4 -1
  100. package/libc/include/any-linux-any/drm/amdgpu_drm.h +20 -6
  101. package/libc/include/any-linux-any/drm/amdxdna_accel.h +8 -0
  102. package/libc/include/any-linux-any/drm/drm_fourcc.h +6 -6
  103. package/libc/include/any-linux-any/drm/panfrost_drm.h +75 -1
  104. package/libc/include/any-linux-any/drm/panthor_drm.h +154 -3
  105. package/libc/include/any-linux-any/drm/rocket_accel.h +74 -24
  106. package/libc/include/any-linux-any/drm/xe_drm.h +89 -6
  107. package/libc/include/any-linux-any/linux/android/binder.h +1 -1
  108. package/libc/include/any-linux-any/linux/bpf.h +28 -0
  109. package/libc/include/any-linux-any/linux/btrfs.h +1 -0
  110. package/libc/include/any-linux-any/linux/btrfs_tree.h +32 -2
  111. package/libc/include/any-linux-any/linux/dma-buf.h +1 -0
  112. package/libc/include/any-linux-any/linux/dpll.h +1 -0
  113. package/libc/include/any-linux-any/linux/elf.h +2 -0
  114. package/libc/include/any-linux-any/linux/ethtool.h +21 -5
  115. package/libc/include/any-linux-any/linux/fs.h +1 -0
  116. package/libc/include/any-linux-any/linux/hyperv.h +1 -1
  117. package/libc/include/any-linux-any/linux/idxd.h +134 -134
  118. package/libc/include/any-linux-any/linux/if_alg.h +1 -1
  119. package/libc/include/any-linux-any/linux/if_link.h +1 -0
  120. package/libc/include/any-linux-any/linux/input-event-codes.h +4 -0
  121. package/libc/include/any-linux-any/linux/io_uring/bpf_filter.h +68 -0
  122. package/libc/include/any-linux-any/linux/io_uring/query.h +5 -1
  123. package/libc/include/any-linux-any/linux/io_uring.h +33 -2
  124. package/libc/include/any-linux-any/linux/iommufd.h +39 -0
  125. package/libc/include/any-linux-any/linux/kfd_ioctl.h +13 -3
  126. package/libc/include/any-linux-any/linux/kfd_sysfs.h +2 -1
  127. package/libc/include/any-linux-any/linux/kvm.h +30 -6
  128. package/libc/include/any-linux-any/linux/landlock.h +22 -8
  129. package/libc/include/any-linux-any/linux/magic.h +1 -0
  130. package/libc/include/any-linux-any/linux/mempolicy.h +3 -0
  131. package/libc/include/any-linux-any/linux/mount.h +11 -2
  132. package/libc/include/any-linux-any/linux/mptcp_pm.h +1 -1
  133. package/libc/include/any-linux-any/linux/mshv.h +2 -0
  134. package/libc/include/any-linux-any/linux/netfilter_bridge.h +5 -4
  135. package/libc/include/any-linux-any/linux/netfilter_ipv4.h +4 -5
  136. package/libc/include/any-linux-any/linux/netfilter_ipv6.h +3 -4
  137. package/libc/include/any-linux-any/linux/nfs.h +1 -1
  138. package/libc/include/any-linux-any/linux/nfsd_netlink.h +1 -0
  139. package/libc/include/any-linux-any/linux/nilfs2_api.h +2 -2
  140. package/libc/include/any-linux-any/linux/nilfs2_ondisk.h +97 -66
  141. package/libc/include/any-linux-any/linux/nl80211.h +104 -3
  142. package/libc/include/any-linux-any/linux/pci.h +7 -0
  143. package/libc/include/any-linux-any/linux/pci_regs.h +65 -6
  144. package/libc/include/any-linux-any/linux/pcitest.h +1 -0
  145. package/libc/include/any-linux-any/linux/perf_event.h +24 -3
  146. package/libc/include/any-linux-any/linux/pkt_sched.h +1 -0
  147. package/libc/include/any-linux-any/linux/prctl.h +30 -0
  148. package/libc/include/any-linux-any/linux/rseq.h +62 -5
  149. package/libc/include/any-linux-any/linux/shm.h +0 -1
  150. package/libc/include/any-linux-any/linux/stddef.h +4 -0
  151. package/libc/include/any-linux-any/linux/sysctl.h +1 -2
  152. package/libc/include/any-linux-any/linux/taskstats.h +12 -1
  153. package/libc/include/any-linux-any/linux/tcp.h +23 -3
  154. package/libc/include/any-linux-any/linux/typelimits.h +8 -0
  155. package/libc/include/any-linux-any/linux/ublk_cmd.h +120 -1
  156. package/libc/include/any-linux-any/linux/v4l2-controls.h +63 -0
  157. package/libc/include/any-linux-any/linux/vbox_vmmdev_types.h +2 -2
  158. package/libc/include/any-linux-any/linux/vduse.h +80 -5
  159. package/libc/include/any-linux-any/linux/version.h +3 -3
  160. package/libc/include/any-linux-any/linux/vfio.h +4 -0
  161. package/libc/include/any-linux-any/linux/videodev2.h +3 -0
  162. package/libc/include/any-linux-any/linux/virtio_ring.h +1 -2
  163. package/libc/include/any-linux-any/linux/vmclock-abi.h +20 -0
  164. package/libc/include/any-linux-any/rdma/bnxt_re-abi.h +16 -0
  165. package/libc/include/any-linux-any/rdma/ib_user_ioctl_cmds.h +16 -0
  166. package/libc/include/any-linux-any/rdma/mana-abi.h +3 -0
  167. package/libc/include/any-linux-any/scsi/scsi_bsg_ufs.h +8 -9
  168. package/libc/include/any-linux-any/sound/sof/tokens.h +6 -0
  169. package/libc/include/arc-linux-any/asm/swab.h +0 -63
  170. package/libc/include/arc-linux-any/asm/unistd_32.h +1 -0
  171. package/libc/include/arm-linux-any/asm/ptrace.h +0 -9
  172. package/libc/include/arm-linux-any/asm/unistd-eabi.h +1 -0
  173. package/libc/include/arm-linux-any/asm/unistd-oabi.h +1 -0
  174. package/libc/include/csky-linux-any/asm/unistd_32.h +1 -0
  175. package/libc/include/hexagon-linux-any/asm/unistd_32.h +1 -0
  176. package/libc/include/loongarch-linux-any/asm/hwcap.h +1 -0
  177. package/libc/include/loongarch-linux-any/asm/kvm.h +1 -0
  178. package/libc/include/loongarch-linux-any/asm/kvm_para.h +1 -0
  179. package/libc/include/loongarch-linux-any/asm/unistd_32.h +2 -0
  180. package/libc/include/loongarch-linux-any/asm/unistd_64.h +2 -0
  181. package/libc/include/m68k-linux-any/asm/unistd_32.h +1 -0
  182. package/libc/include/mips-linux-any/asm/errno.h +2 -0
  183. package/libc/include/mips-linux-any/asm/unistd_n32.h +1 -0
  184. package/libc/include/mips-linux-any/asm/unistd_n64.h +1 -0
  185. package/libc/include/mips-linux-any/asm/unistd_o32.h +1 -0
  186. package/libc/include/powerpc-linux-any/asm/unistd_32.h +1 -0
  187. package/libc/include/powerpc-linux-any/asm/unistd_64.h +1 -0
  188. package/libc/include/riscv-linux-any/asm/hwprobe.h +4 -0
  189. package/libc/include/riscv-linux-any/asm/kvm.h +3 -0
  190. package/libc/include/riscv-linux-any/asm/ptrace.h +37 -0
  191. package/libc/include/riscv-linux-any/asm/sigcontext.h +1 -0
  192. package/libc/include/riscv-linux-any/asm/unistd_32.h +1 -0
  193. package/libc/include/riscv-linux-any/asm/unistd_64.h +1 -0
  194. package/libc/include/s390x-linux-any/asm/unistd_64.h +1 -0
  195. package/libc/include/sparc-linux-any/asm/errno.h +2 -0
  196. package/libc/include/sparc-linux-any/asm/ioctls.h +4 -4
  197. package/libc/include/sparc-linux-any/asm/unistd_32.h +2 -0
  198. package/libc/include/sparc-linux-any/asm/unistd_64.h +2 -0
  199. package/libc/include/x86-linux-any/asm/auxvec.h +0 -4
  200. package/libc/include/x86-linux-any/asm/kvm.h +13 -8
  201. package/libc/include/x86-linux-any/asm/svm.h +16 -16
  202. package/libc/include/x86-linux-any/asm/unistd_32.h +1 -0
  203. package/libc/include/x86-linux-any/asm/unistd_64.h +1 -0
  204. package/libc/include/x86-linux-any/asm/unistd_x32.h +1 -0
  205. package/libc/include/xtensa-linux-any/asm/unistd_32.h +1 -0
  206. package/libcxx/include/__algorithm/all_of.h +11 -5
  207. package/libcxx/include/__algorithm/comp.h +4 -0
  208. package/libcxx/include/__algorithm/copy.h +28 -147
  209. package/libcxx/include/__algorithm/copy_backward.h +9 -24
  210. package/libcxx/include/__algorithm/copy_n.h +50 -16
  211. package/libcxx/include/__algorithm/count.h +2 -2
  212. package/libcxx/include/__algorithm/equal.h +43 -55
  213. package/libcxx/include/__algorithm/fill.h +26 -8
  214. package/libcxx/include/__algorithm/fill_n.h +32 -46
  215. package/libcxx/include/__algorithm/find.h +96 -39
  216. package/libcxx/include/__algorithm/find_end.h +105 -0
  217. package/libcxx/include/__algorithm/for_each.h +18 -24
  218. package/libcxx/include/__algorithm/for_each_n.h +20 -47
  219. package/libcxx/include/__algorithm/for_each_n_segment.h +1 -1
  220. package/libcxx/include/__algorithm/for_each_segment.h +26 -0
  221. package/libcxx/include/__algorithm/generate.h +4 -2
  222. package/libcxx/include/__algorithm/generate_n.h +19 -6
  223. package/libcxx/include/__algorithm/is_permutation.h +4 -4
  224. package/libcxx/include/__algorithm/iterator_operations.h +3 -0
  225. package/libcxx/include/__algorithm/lexicographical_compare.h +2 -2
  226. package/libcxx/include/__algorithm/lexicographical_compare_three_way.h +6 -6
  227. package/libcxx/include/__algorithm/make_heap.h +16 -4
  228. package/libcxx/include/__algorithm/mismatch.h +2 -2
  229. package/libcxx/include/__algorithm/move.h +8 -19
  230. package/libcxx/include/__algorithm/move_backward.h +9 -24
  231. package/libcxx/include/__algorithm/none_of.h +4 -4
  232. package/libcxx/include/__algorithm/partial_sort.h +1 -1
  233. package/libcxx/include/__algorithm/partial_sort_copy.h +1 -1
  234. package/libcxx/include/__algorithm/pstl.h +9 -9
  235. package/libcxx/include/__algorithm/radix_sort.h +27 -25
  236. package/libcxx/include/__algorithm/ranges_copy_n.h +3 -26
  237. package/libcxx/include/__algorithm/ranges_equal.h +17 -26
  238. package/libcxx/include/__algorithm/ranges_fill.h +7 -6
  239. package/libcxx/include/__algorithm/ranges_for_each.h +9 -1
  240. package/libcxx/include/__algorithm/ranges_generate_n.h +2 -6
  241. package/libcxx/include/__algorithm/ranges_search_n.h +2 -2
  242. package/libcxx/include/__algorithm/rotate.h +27 -44
  243. package/libcxx/include/__algorithm/search_n.h +49 -37
  244. package/libcxx/include/__algorithm/sift_down.h +19 -18
  245. package/libcxx/include/__algorithm/simd_utils.h +33 -4
  246. package/libcxx/include/__algorithm/specialized_algorithms.h +54 -0
  247. package/libcxx/include/__algorithm/stable_sort.h +1 -1
  248. package/libcxx/include/__assertion_handler +31 -4
  249. package/libcxx/include/__atomic/atomic.h +36 -60
  250. package/libcxx/include/__atomic/atomic_flag.h +19 -37
  251. package/libcxx/include/__atomic/atomic_ref.h +29 -12
  252. package/libcxx/include/__atomic/atomic_sync.h +127 -55
  253. package/libcxx/include/__atomic/atomic_sync_timed.h +144 -0
  254. package/libcxx/include/__atomic/atomic_waitable_traits.h +103 -0
  255. package/libcxx/include/__atomic/contention_t.h +27 -3
  256. package/libcxx/include/__atomic/floating_point_helper.h +55 -0
  257. package/libcxx/include/__bit/countl.h +1 -2
  258. package/libcxx/include/__bit/countr.h +1 -2
  259. package/libcxx/include/__bit/has_single_bit.h +1 -1
  260. package/libcxx/include/__bit/popcount.h +0 -1
  261. package/libcxx/include/__bit/rotate.h +15 -26
  262. package/libcxx/include/__bit_reference +207 -18
  263. package/libcxx/include/__charconv/from_chars_integral.h +1 -1
  264. package/libcxx/include/__charconv/from_chars_result.h +1 -1
  265. package/libcxx/include/__charconv/to_chars_integral.h +1 -0
  266. package/libcxx/include/__charconv/to_chars_result.h +1 -1
  267. package/libcxx/include/__charconv/traits.h +3 -24
  268. package/libcxx/include/__chrono/day.h +11 -0
  269. package/libcxx/include/__chrono/duration.h +58 -33
  270. package/libcxx/include/__chrono/file_clock.h +4 -2
  271. package/libcxx/include/__chrono/is_clock.h +72 -0
  272. package/libcxx/include/__chrono/leap_second.h +13 -0
  273. package/libcxx/include/__chrono/month.h +13 -0
  274. package/libcxx/include/__chrono/month_weekday.h +22 -0
  275. package/libcxx/include/__chrono/monthday.h +20 -0
  276. package/libcxx/include/__chrono/steady_clock.h +1 -1
  277. package/libcxx/include/__chrono/system_clock.h +3 -3
  278. package/libcxx/include/__chrono/time_point.h +37 -13
  279. package/libcxx/include/__chrono/weekday.h +25 -0
  280. package/libcxx/include/__chrono/year.h +11 -0
  281. package/libcxx/include/__chrono/year_month.h +13 -0
  282. package/libcxx/include/__chrono/year_month_day.h +23 -0
  283. package/libcxx/include/__chrono/year_month_weekday.h +26 -0
  284. package/libcxx/include/__chrono/zoned_time.h +16 -0
  285. package/libcxx/include/__compare/is_eq.h +6 -6
  286. package/libcxx/include/__compare/strong_order.h +12 -30
  287. package/libcxx/include/__compare/three_way_comparable.h +2 -2
  288. package/libcxx/include/__concepts/comparison_common_type.h +40 -0
  289. package/libcxx/include/__concepts/equality_comparable.h +2 -1
  290. package/libcxx/include/__condition_variable/condition_variable.h +1 -1
  291. package/libcxx/include/__config +63 -280
  292. package/libcxx/include/__configuration/abi.h +14 -24
  293. package/libcxx/include/__configuration/availability.h +65 -118
  294. package/libcxx/include/__configuration/compiler.h +6 -6
  295. package/libcxx/include/__configuration/experimental.h +38 -0
  296. package/libcxx/include/__configuration/hardening.h +215 -0
  297. package/libcxx/include/__configuration/language.h +3 -0
  298. package/libcxx/include/__configuration/platform.h +9 -16
  299. package/libcxx/include/__coroutine/coroutine_handle.h +9 -9
  300. package/libcxx/include/__coroutine/noop_coroutine_handle.h +11 -13
  301. package/libcxx/include/__debug_utils/strict_weak_ordering_check.h +1 -1
  302. package/libcxx/include/__exception/exception.h +6 -4
  303. package/libcxx/include/__exception/exception_ptr.h +27 -5
  304. package/libcxx/include/__exception/nested_exception.h +2 -2
  305. package/libcxx/include/__exception/operations.h +5 -5
  306. package/libcxx/include/__expected/bad_expected_access.h +8 -6
  307. package/libcxx/include/__expected/expected.h +62 -64
  308. package/libcxx/include/__expected/unexpected.h +4 -4
  309. package/libcxx/include/__filesystem/copy_options.h +4 -4
  310. package/libcxx/include/__filesystem/directory_entry.h +37 -33
  311. package/libcxx/include/__filesystem/directory_iterator.h +9 -11
  312. package/libcxx/include/__filesystem/directory_options.h +7 -4
  313. package/libcxx/include/__filesystem/file_status.h +3 -3
  314. package/libcxx/include/__filesystem/filesystem_error.h +9 -10
  315. package/libcxx/include/__filesystem/operations.h +97 -66
  316. package/libcxx/include/__filesystem/path.h +68 -64
  317. package/libcxx/include/__filesystem/path_iterator.h +1 -3
  318. package/libcxx/include/__filesystem/perm_options.h +4 -4
  319. package/libcxx/include/__filesystem/perms.h +4 -4
  320. package/libcxx/include/__filesystem/recursive_directory_iterator.h +9 -14
  321. package/libcxx/include/__filesystem/space_info.h +1 -1
  322. package/libcxx/include/__filesystem/u8path.h +12 -14
  323. package/libcxx/include/__flat_map/flat_map.h +88 -71
  324. package/libcxx/include/__flat_map/flat_multimap.h +251 -172
  325. package/libcxx/include/__flat_map/key_value_iterator.h +0 -1
  326. package/libcxx/include/__flat_map/utils.h +1 -0
  327. package/libcxx/include/__flat_set/flat_multiset.h +211 -143
  328. package/libcxx/include/__flat_set/flat_set.h +86 -68
  329. package/libcxx/include/__format/concepts.h +0 -14
  330. package/libcxx/include/__format/extended_grapheme_cluster_table.h +3 -2
  331. package/libcxx/include/__format/fmt_pair_like.h +42 -0
  332. package/libcxx/include/__format/format_arg.h +7 -10
  333. package/libcxx/include/__format/format_args.h +1 -1
  334. package/libcxx/include/__format/format_context.h +5 -5
  335. package/libcxx/include/__format/format_parse_context.h +2 -2
  336. package/libcxx/include/__format/formatter_output.h +30 -34
  337. package/libcxx/include/__format/indic_conjunct_break_table.h +3 -2
  338. package/libcxx/include/__format/range_default_formatter.h +2 -41
  339. package/libcxx/include/__format/range_format.h +71 -0
  340. package/libcxx/include/__format/range_formatter.h +1 -0
  341. package/libcxx/include/__format/width_estimation_table.h +4 -2
  342. package/libcxx/include/__functional/bind.h +10 -15
  343. package/libcxx/include/__functional/bind_back.h +1 -1
  344. package/libcxx/include/__functional/bind_front.h +1 -1
  345. package/libcxx/include/__functional/function.h +57 -75
  346. package/libcxx/include/__functional/hash.h +1 -10
  347. package/libcxx/include/__functional/identity.h +1 -1
  348. package/libcxx/include/__functional/is_transparent.h +8 -0
  349. package/libcxx/include/__functional/mem_fn.h +2 -1
  350. package/libcxx/include/__functional/operations.h +18 -0
  351. package/libcxx/include/__functional/ranges_operations.h +7 -0
  352. package/libcxx/include/__functional/reference_wrapper.h +7 -5
  353. package/libcxx/include/__functional/weak_result_type.h +14 -28
  354. package/libcxx/include/__fwd/ios.h +1 -1
  355. package/libcxx/include/__fwd/tuple.h +14 -0
  356. package/libcxx/include/__hash_table +371 -357
  357. package/libcxx/include/__ios/fpos.h +4 -4
  358. package/libcxx/include/__iterator/back_insert_iterator.h +1 -7
  359. package/libcxx/include/__iterator/bounded_iter.h +7 -8
  360. package/libcxx/include/__iterator/concepts.h +6 -9
  361. package/libcxx/include/__iterator/cpp17_iterator_concepts.h +13 -12
  362. package/libcxx/include/__iterator/distance.h +40 -18
  363. package/libcxx/include/__iterator/front_insert_iterator.h +1 -7
  364. package/libcxx/include/__iterator/insert_iterator.h +1 -7
  365. package/libcxx/include/__iterator/istream_iterator.h +6 -7
  366. package/libcxx/include/__iterator/istreambuf_iterator.h +6 -7
  367. package/libcxx/include/__iterator/iter_move.h +1 -1
  368. package/libcxx/include/__iterator/iterator.h +13 -0
  369. package/libcxx/include/__iterator/iterator_traits.h +13 -14
  370. package/libcxx/include/__iterator/ostream_iterator.h +1 -7
  371. package/libcxx/include/__iterator/ostreambuf_iterator.h +1 -7
  372. package/libcxx/include/__iterator/reverse_iterator.h +8 -13
  373. package/libcxx/include/__iterator/segmented_iterator.h +3 -8
  374. package/libcxx/include/__iterator/static_bounded_iter.h +3 -3
  375. package/libcxx/include/__iterator/wrap_iter.h +8 -6
  376. package/libcxx/include/__locale +3 -10
  377. package/libcxx/include/__locale_dir/locale_base_api/bsd_locale_fallbacks.h +0 -10
  378. package/libcxx/include/__locale_dir/locale_base_api.h +5 -28
  379. package/libcxx/include/__locale_dir/messages.h +1 -1
  380. package/libcxx/include/__locale_dir/money.h +2 -2
  381. package/libcxx/include/__locale_dir/num.h +190 -243
  382. package/libcxx/include/__locale_dir/pad_and_output.h +5 -6
  383. package/libcxx/include/__locale_dir/support/bsd_like.h +0 -20
  384. package/libcxx/include/__locale_dir/support/fuchsia.h +0 -7
  385. package/libcxx/include/__locale_dir/support/linux.h +0 -37
  386. package/libcxx/include/__locale_dir/support/netbsd.h +0 -2
  387. package/libcxx/include/__locale_dir/support/newlib.h +243 -0
  388. package/libcxx/include/__locale_dir/support/no_locale/characters.h +0 -4
  389. package/libcxx/include/__locale_dir/support/no_locale/strtonum.h +0 -9
  390. package/libcxx/include/__locale_dir/support/windows.h +0 -29
  391. package/libcxx/include/__locale_dir/time.h +3 -7
  392. package/libcxx/include/__math/hypot.h +1 -1
  393. package/libcxx/include/__math/logarithms.h +1 -1
  394. package/libcxx/include/__math/traits.h +80 -11
  395. package/libcxx/include/__mdspan/extents.h +7 -4
  396. package/libcxx/include/__mdspan/layout_stride.h +4 -5
  397. package/libcxx/include/__mdspan/mdspan.h +29 -23
  398. package/libcxx/include/__memory/addressof.h +7 -5
  399. package/libcxx/include/__memory/align.h +18 -1
  400. package/libcxx/include/__memory/allocate_at_least.h +15 -10
  401. package/libcxx/include/__memory/allocator.h +14 -26
  402. package/libcxx/include/__memory/allocator_traits.h +6 -4
  403. package/libcxx/include/__memory/compressed_pair.h +15 -9
  404. package/libcxx/include/__memory/construct_at.h +12 -23
  405. package/libcxx/include/__memory/inout_ptr.h +1 -1
  406. package/libcxx/include/__memory/is_sufficiently_aligned.h +1 -1
  407. package/libcxx/include/__memory/out_ptr.h +1 -1
  408. package/libcxx/include/__memory/pointer_traits.h +1 -1
  409. package/libcxx/include/__memory/raw_storage_iterator.h +3 -9
  410. package/libcxx/include/__memory/shared_count.h +9 -30
  411. package/libcxx/include/__memory/shared_ptr.h +100 -145
  412. package/libcxx/include/__memory/temp_value.h +1 -2
  413. package/libcxx/include/__memory/uninitialized_algorithms.h +44 -115
  414. package/libcxx/include/__memory/unique_ptr.h +14 -16
  415. package/libcxx/include/__memory/uses_allocator_construction.h +1 -0
  416. package/libcxx/include/__memory_resource/memory_resource.h +4 -2
  417. package/libcxx/include/__memory_resource/monotonic_buffer_resource.h +1 -1
  418. package/libcxx/include/__memory_resource/polymorphic_allocator.h +13 -8
  419. package/libcxx/include/__memory_resource/pool_options.h +1 -1
  420. package/libcxx/include/__memory_resource/synchronized_pool_resource.h +4 -2
  421. package/libcxx/include/__memory_resource/unsynchronized_pool_resource.h +1 -1
  422. package/libcxx/include/__mutex/mutex.h +2 -2
  423. package/libcxx/include/__mutex/once_flag.h +14 -11
  424. package/libcxx/include/__mutex/tag_types.h +3 -3
  425. package/libcxx/include/__mutex/unique_lock.h +8 -7
  426. package/libcxx/include/__new/align_val_t.h +6 -0
  427. package/libcxx/include/__new/allocate.h +1 -2
  428. package/libcxx/include/__new/exceptions.h +8 -2
  429. package/libcxx/include/__new/global_new_delete.h +4 -11
  430. package/libcxx/include/__new/interference_size.h +0 -4
  431. package/libcxx/include/__new/launder.h +3 -5
  432. package/libcxx/include/__new/nothrow_t.h +1 -1
  433. package/libcxx/include/__numeric/gcd_lcm.h +24 -34
  434. package/libcxx/include/__numeric/midpoint.h +9 -14
  435. package/libcxx/include/__numeric/pstl.h +2 -2
  436. package/libcxx/include/__numeric/saturation_arithmetic.h +13 -5
  437. package/libcxx/include/__ostream/basic_ostream.h +8 -8
  438. package/libcxx/include/__pstl/backends/default.h +14 -14
  439. package/libcxx/include/__pstl/backends/libdispatch.h +2 -2
  440. package/libcxx/include/__pstl/cpu_algos/find_if.h +1 -1
  441. package/libcxx/include/__pstl/cpu_algos/transform.h +5 -6
  442. package/libcxx/include/__pstl/cpu_algos/transform_reduce.h +5 -4
  443. package/libcxx/include/__random/binomial_distribution.h +10 -4
  444. package/libcxx/include/__random/mersenne_twister_engine.h +50 -154
  445. package/libcxx/include/__random/piecewise_constant_distribution.h +3 -2
  446. package/libcxx/include/__random/piecewise_linear_distribution.h +3 -2
  447. package/libcxx/include/__ranges/adjacent_transform_view.h +406 -0
  448. package/libcxx/include/__ranges/adjacent_view.h +419 -0
  449. package/libcxx/include/__ranges/as_rvalue_view.h +9 -9
  450. package/libcxx/include/__ranges/chunk_by_view.h +6 -6
  451. package/libcxx/include/__ranges/common_view.h +7 -7
  452. package/libcxx/include/__ranges/drop_view.h +8 -8
  453. package/libcxx/include/__ranges/drop_while_view.h +5 -5
  454. package/libcxx/include/__ranges/elements_of.h +49 -0
  455. package/libcxx/include/__ranges/empty_view.h +5 -5
  456. package/libcxx/include/__ranges/filter_view.h +10 -10
  457. package/libcxx/include/__ranges/iota_view.h +41 -22
  458. package/libcxx/include/__ranges/owning_view.h +15 -15
  459. package/libcxx/include/__ranges/ref_view.h +6 -6
  460. package/libcxx/include/__ranges/repeat_view.h +17 -10
  461. package/libcxx/include/__ranges/single_view.h +8 -8
  462. package/libcxx/include/__ranges/take_view.h +9 -9
  463. package/libcxx/include/__ranges/transform_view.h +1 -2
  464. package/libcxx/include/__ranges/view_interface.h +10 -10
  465. package/libcxx/include/__ranges/zip_transform_view.h +357 -0
  466. package/libcxx/include/__ranges/zip_view.h +20 -20
  467. package/libcxx/include/__split_buffer +612 -240
  468. package/libcxx/include/__stop_token/atomic_unique_lock.h +1 -1
  469. package/libcxx/include/__stop_token/stop_callback.h +2 -2
  470. package/libcxx/include/__stop_token/stop_source.h +1 -1
  471. package/libcxx/include/__stop_token/stop_state.h +4 -4
  472. package/libcxx/include/__stop_token/stop_token.h +1 -1
  473. package/libcxx/include/__string/char_traits.h +51 -31
  474. package/libcxx/include/__string/constexpr_c_functions.h +5 -5
  475. package/libcxx/include/__support/xlocale/__strtonum_fallback.h +0 -8
  476. package/libcxx/include/__system_error/error_category.h +8 -8
  477. package/libcxx/include/__system_error/error_code.h +5 -5
  478. package/libcxx/include/__system_error/error_condition.h +4 -4
  479. package/libcxx/include/__system_error/system_error.h +1 -1
  480. package/libcxx/include/__thread/id.h +1 -1
  481. package/libcxx/include/__thread/jthread.h +1 -1
  482. package/libcxx/include/__thread/poll_with_backoff.h +27 -8
  483. package/libcxx/include/__thread/support/c11.h +8 -8
  484. package/libcxx/include/__thread/support/pthread.h +8 -8
  485. package/libcxx/include/__thread/support/windows.h +8 -8
  486. package/libcxx/include/__thread/thread.h +13 -8
  487. package/libcxx/include/__thread/timed_backoff_policy.h +3 -2
  488. package/libcxx/include/__tree +849 -701
  489. package/libcxx/include/__tuple/sfinae_helpers.h +1 -44
  490. package/libcxx/include/__tuple/tuple_element.h +0 -12
  491. package/libcxx/include/__tuple/tuple_size.h +0 -4
  492. package/libcxx/include/__tuple/tuple_transform.h +45 -0
  493. package/libcxx/include/__type_traits/aligned_storage.h +13 -40
  494. package/libcxx/include/__type_traits/desugars_to.h +4 -0
  495. package/libcxx/include/__type_traits/invoke.h +8 -0
  496. package/libcxx/include/__type_traits/is_allocator.h +6 -7
  497. package/libcxx/include/__type_traits/is_array.h +26 -0
  498. package/libcxx/include/__type_traits/is_equality_comparable.h +16 -21
  499. package/libcxx/include/__type_traits/is_final.h +1 -1
  500. package/libcxx/include/__type_traits/is_floating_point.h +7 -6
  501. package/libcxx/include/__type_traits/is_generic_transparent_comparator.h +30 -0
  502. package/libcxx/include/__type_traits/is_specialization.h +2 -6
  503. package/libcxx/include/__type_traits/is_within_lifetime.h +29 -0
  504. package/libcxx/include/__type_traits/make_transparent.h +52 -0
  505. package/libcxx/include/__type_traits/reference_constructs_from_temporary.h +1 -7
  506. package/libcxx/include/__type_traits/reference_converts_from_temporary.h +1 -1
  507. package/libcxx/include/__utility/cmp.h +19 -7
  508. package/libcxx/include/__utility/default_three_way_comparator.h +70 -0
  509. package/libcxx/include/__utility/in_place.h +1 -1
  510. package/libcxx/include/__utility/integer_sequence.h +56 -41
  511. package/libcxx/include/__utility/lazy_synth_three_way_comparator.h +120 -0
  512. package/libcxx/include/__utility/pair.h +22 -25
  513. package/libcxx/include/__utility/scope_guard.h +2 -0
  514. package/libcxx/include/__utility/try_key_extraction.h +114 -0
  515. package/libcxx/include/__vector/vector.h +187 -160
  516. package/libcxx/include/__vector/vector_bool.h +76 -83
  517. package/libcxx/include/any +118 -155
  518. package/libcxx/include/array +88 -56
  519. package/libcxx/include/atomic +2 -0
  520. package/libcxx/include/barrier +20 -24
  521. package/libcxx/include/bitset +49 -30
  522. package/libcxx/include/ccomplex +3 -11
  523. package/libcxx/include/chrono +47 -0
  524. package/libcxx/include/ciso646 +3 -6
  525. package/libcxx/include/complex +77 -65
  526. package/libcxx/include/complex.h +10 -10
  527. package/libcxx/include/condition_variable +3 -3
  528. package/libcxx/include/cstdalign +3 -10
  529. package/libcxx/include/cstdbool +3 -10
  530. package/libcxx/include/ctgmath +2 -11
  531. package/libcxx/include/ctype.h +24 -24
  532. package/libcxx/include/cwchar +2 -2
  533. package/libcxx/include/deque +109 -225
  534. package/libcxx/include/errno.h +269 -269
  535. package/libcxx/include/exception +4 -1
  536. package/libcxx/include/ext/hash_map +7 -48
  537. package/libcxx/include/ext/hash_set +2 -8
  538. package/libcxx/include/fenv.h +43 -43
  539. package/libcxx/include/flat_map +663 -11
  540. package/libcxx/include/flat_set +543 -8
  541. package/libcxx/include/float.h +16 -16
  542. package/libcxx/include/forward_list +33 -53
  543. package/libcxx/include/fstream +57 -42
  544. package/libcxx/include/future +41 -51
  545. package/libcxx/include/initializer_list +9 -3
  546. package/libcxx/include/inttypes.h +16 -16
  547. package/libcxx/include/ios +28 -28
  548. package/libcxx/include/istream +19 -13
  549. package/libcxx/include/iterator +10 -0
  550. package/libcxx/include/latch +7 -5
  551. package/libcxx/include/limits +4 -4
  552. package/libcxx/include/list +61 -79
  553. package/libcxx/include/map +386 -274
  554. package/libcxx/include/math.h +19 -0
  555. package/libcxx/include/mdspan +1 -5
  556. package/libcxx/include/mutex +29 -19
  557. package/libcxx/include/optional +644 -149
  558. package/libcxx/include/print +9 -5
  559. package/libcxx/include/queue +39 -37
  560. package/libcxx/include/ranges +48 -0
  561. package/libcxx/include/regex +33 -31
  562. package/libcxx/include/scoped_allocator +16 -11
  563. package/libcxx/include/semaphore +15 -18
  564. package/libcxx/include/set +220 -192
  565. package/libcxx/include/shared_mutex +3 -8
  566. package/libcxx/include/span +53 -37
  567. package/libcxx/include/sstream +34 -28
  568. package/libcxx/include/stack +13 -15
  569. package/libcxx/include/stddef.h +10 -10
  570. package/libcxx/include/stdexcept +2 -2
  571. package/libcxx/include/stdio.h +20 -21
  572. package/libcxx/include/streambuf +59 -19
  573. package/libcxx/include/string +574 -573
  574. package/libcxx/include/string_view +113 -89
  575. package/libcxx/include/strstream +10 -10
  576. package/libcxx/include/syncstream +4 -4
  577. package/libcxx/include/tgmath.h +12 -12
  578. package/libcxx/include/tuple +242 -212
  579. package/libcxx/include/type_traits +8 -2
  580. package/libcxx/include/typeindex +5 -3
  581. package/libcxx/include/typeinfo +92 -89
  582. package/libcxx/include/unordered_map +179 -304
  583. package/libcxx/include/unordered_set +168 -195
  584. package/libcxx/include/utility +12 -0
  585. package/libcxx/include/valarray +106 -161
  586. package/libcxx/include/variant +25 -33
  587. package/libcxx/include/version +41 -24
  588. package/libcxx/include/wctype.h +29 -29
  589. package/libcxx/src/any.cpp +4 -0
  590. package/libcxx/src/atomic.cpp +365 -80
  591. package/libcxx/src/barrier.cpp +4 -3
  592. package/libcxx/src/charconv.cpp +6 -3
  593. package/libcxx/src/condition_variable_destructor.cpp +1 -1
  594. package/libcxx/src/error_category.cpp +3 -1
  595. package/libcxx/src/exception.cpp +2 -10
  596. package/libcxx/src/experimental/time_zone.cpp +1 -1
  597. package/libcxx/src/experimental/tzdb.cpp +4 -1
  598. package/libcxx/src/filesystem/error.h +4 -22
  599. package/libcxx/src/filesystem/format_string.h +9 -18
  600. package/libcxx/src/filesystem/int128_builtins.cpp +2 -0
  601. package/libcxx/src/filesystem/operations.cpp +2 -9
  602. package/libcxx/src/filesystem/path.cpp +3 -1
  603. package/libcxx/src/include/aligned_alloc.h +65 -0
  604. package/libcxx/src/include/config_elast.h +1 -1
  605. package/libcxx/src/include/from_chars_floating_point.h +11 -7
  606. package/libcxx/src/include/overridable_function.h +8 -10
  607. package/libcxx/src/iostream.cpp +56 -37
  608. package/libcxx/src/locale.cpp +213 -196
  609. package/libcxx/src/memory.cpp +12 -14
  610. package/libcxx/src/mutex_destructor.cpp +1 -1
  611. package/libcxx/src/new.cpp +5 -5
  612. package/libcxx/src/optional.cpp +4 -0
  613. package/libcxx/src/print.cpp +9 -1
  614. package/libcxx/src/random.cpp +0 -26
  615. package/libcxx/src/string.cpp +10 -25
  616. package/libcxx/src/support/runtime/exception_fallback.ipp +2 -0
  617. package/libcxx/src/support/runtime/exception_glibcxx.ipp +3 -0
  618. package/libcxx/src/support/runtime/exception_libcxxabi.ipp +6 -2
  619. package/libcxx/src/support/runtime/exception_libcxxrt.ipp +2 -0
  620. package/libcxx/src/support/runtime/exception_msvc.ipp +2 -0
  621. package/libcxx/src/support/runtime/exception_pointer_cxxabi.ipp +9 -10
  622. package/libcxx/src/support/runtime/exception_pointer_glibcxx.ipp +2 -0
  623. package/libcxx/src/support/runtime/exception_pointer_msvc.ipp +1 -0
  624. package/libcxx/src/support/runtime/exception_pointer_unimplemented.ipp +1 -0
  625. package/libcxx/src/support/win32/locale_win32.cpp +1 -1
  626. package/libcxx/src/system_error.cpp +2 -0
  627. package/libcxx/src/thread.cpp +1 -3
  628. package/libcxx/src/valarray.cpp +1 -2
  629. package/libcxx/src/vector.cpp +2 -2
  630. package/libcxxabi/include/__cxxabi_config.h +42 -23
  631. package/libcxxabi/src/cxa_exception.cpp +4 -2
  632. package/libcxxabi/src/cxa_exception.h +16 -14
  633. package/libcxxabi/src/cxa_personality.cpp +126 -9
  634. package/libcxxabi/src/cxa_thread_atexit.cpp +2 -1
  635. package/libcxxabi/src/demangle/DemangleConfig.h +4 -0
  636. package/libcxxabi/src/demangle/ItaniumDemangle.h +9 -6
  637. package/libcxxabi/src/demangle/Utility.h +21 -7
  638. package/libcxxabi/src/fallback_malloc.cpp +1 -1
  639. package/libcxxabi/src/private_typeinfo.cpp +6 -0
  640. package/libcxxabi/src/stdlib_new_delete.cpp +5 -5
  641. package/libtsan/LICENSE.TXT +311 -0
  642. package/libtsan/builtins/assembly.h +41 -8
  643. package/libtsan/interception/interception_win.cpp +4 -0
  644. package/libtsan/sanitizer_common/sanitizer_allocator_primary32.h +1 -0
  645. package/libtsan/sanitizer_common/sanitizer_allocator_primary64.h +18 -0
  646. package/libtsan/sanitizer_common/sanitizer_common.h +15 -2
  647. package/libtsan/sanitizer_common/sanitizer_common_interceptors.inc +30 -4
  648. package/libtsan/sanitizer_common/sanitizer_common_interceptors_ioctl.inc +4 -0
  649. package/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_aarch64.inc.S +2 -1
  650. package/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_i386.inc.S +2 -0
  651. package/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_x86_64.inc.S +2 -0
  652. package/libtsan/sanitizer_common/sanitizer_common_syscalls.inc +18 -0
  653. package/libtsan/sanitizer_common/sanitizer_file.cpp +40 -12
  654. package/libtsan/sanitizer_common/sanitizer_file.h +3 -0
  655. package/libtsan/sanitizer_common/sanitizer_flags.inc +7 -0
  656. package/libtsan/sanitizer_common/sanitizer_fuchsia.cpp +30 -3
  657. package/libtsan/sanitizer_common/sanitizer_haiku.cpp +2 -2
  658. package/libtsan/sanitizer_common/sanitizer_internal_defs.h +1 -1
  659. package/libtsan/sanitizer_common/sanitizer_libc.cpp +8 -0
  660. package/libtsan/sanitizer_common/sanitizer_libc.h +1 -0
  661. package/libtsan/sanitizer_common/sanitizer_linux.cpp +15 -7
  662. package/libtsan/sanitizer_common/sanitizer_linux.h +3 -3
  663. package/libtsan/sanitizer_common/sanitizer_linux_libcdep.cpp +1 -0
  664. package/libtsan/sanitizer_common/sanitizer_mac.cpp +255 -104
  665. package/libtsan/sanitizer_common/sanitizer_mac.h +5 -0
  666. package/libtsan/sanitizer_common/sanitizer_netbsd.cpp +2 -2
  667. package/libtsan/sanitizer_common/sanitizer_platform.h +27 -1
  668. package/libtsan/sanitizer_common/sanitizer_platform_interceptors.h +5 -4
  669. package/libtsan/sanitizer_common/sanitizer_platform_limits_posix.cpp +15 -17
  670. package/libtsan/sanitizer_common/sanitizer_platform_limits_posix.h +32 -6
  671. package/libtsan/sanitizer_common/sanitizer_posix.cpp +3 -12
  672. package/libtsan/sanitizer_common/sanitizer_posix.h +2 -1
  673. package/libtsan/sanitizer_common/sanitizer_posix_libcdep.cpp +19 -0
  674. package/libtsan/sanitizer_common/sanitizer_procmaps_mac.cpp +102 -37
  675. package/libtsan/sanitizer_common/sanitizer_redefine_builtins.h +1 -1
  676. package/libtsan/sanitizer_common/sanitizer_signal_interceptors.inc +40 -2
  677. package/libtsan/sanitizer_common/sanitizer_stoptheworld.h +1 -1
  678. package/libtsan/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cpp +83 -12
  679. package/libtsan/sanitizer_common/sanitizer_stoptheworld_mac.cpp +3 -3
  680. package/libtsan/sanitizer_common/sanitizer_stoptheworld_netbsd_libcdep.cpp +7 -7
  681. package/libtsan/sanitizer_common/sanitizer_stoptheworld_win.cpp +2 -2
  682. package/libtsan/sanitizer_common/sanitizer_symbolizer_internal.h +5 -1
  683. package/libtsan/sanitizer_common/sanitizer_symbolizer_libcdep.cpp +11 -1
  684. package/libtsan/sanitizer_common/sanitizer_symbolizer_mac.cpp +86 -29
  685. package/libtsan/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cpp +27 -16
  686. package/libtsan/sanitizer_common/sanitizer_thread_registry.cpp +5 -4
  687. package/libtsan/sanitizer_common/sanitizer_thread_registry.h +4 -4
  688. package/libtsan/sanitizer_common/sanitizer_win.cpp +1 -3
  689. package/libtsan/tsan_debugging.cpp +2 -2
  690. package/libtsan/tsan_flags.cpp +37 -0
  691. package/libtsan/tsan_flags.h +8 -0
  692. package/libtsan/tsan_flags.inc +12 -0
  693. package/libtsan/tsan_interceptors.h +9 -1
  694. package/libtsan/tsan_interceptors_mac.cpp +19 -0
  695. package/libtsan/tsan_interceptors_posix.cpp +78 -32
  696. package/libtsan/tsan_interface.h +3 -3
  697. package/libtsan/tsan_interface_ann.cpp +23 -9
  698. package/libtsan/tsan_mman.cpp +18 -4
  699. package/libtsan/tsan_platform.h +44 -7
  700. package/libtsan/tsan_platform_linux.cpp +42 -14
  701. package/libtsan/tsan_platform_mac.cpp +16 -3
  702. package/libtsan/tsan_report.h +14 -1
  703. package/libtsan/tsan_rtl.cpp +14 -0
  704. package/libtsan/tsan_rtl.h +7 -2
  705. package/libtsan/tsan_rtl_aarch64.S +3 -5
  706. package/libtsan/tsan_rtl_access.cpp +8 -3
  707. package/libtsan/tsan_rtl_amd64.S +2 -0
  708. package/libtsan/tsan_rtl_mutex.cpp +94 -49
  709. package/libtsan/tsan_rtl_report.cpp +132 -65
  710. package/libtsan/tsan_rtl_thread.cpp +31 -9
  711. package/libtsan/tsan_symbolize.cpp +1 -1
  712. package/libtsan/tsan_symbolize.h +1 -1
  713. package/libtsan/tsan_trace.h +1 -1
  714. package/libunwind/include/__libunwind_config.h +11 -2
  715. package/libunwind/include/libunwind.h +117 -11
  716. package/libunwind/include/unwind_arm_ehabi.h +4 -1
  717. package/libunwind/src/AddressSpace.hpp +40 -19
  718. package/libunwind/src/CompactUnwinder.hpp +16 -5
  719. package/libunwind/src/DwarfInstructions.hpp +24 -13
  720. package/libunwind/src/DwarfParser.hpp +60 -22
  721. package/libunwind/src/EHHeaderParser.hpp +7 -4
  722. package/libunwind/src/Registers.hpp +226 -22
  723. package/libunwind/src/Unwind-seh.cpp +6 -7
  724. package/libunwind/src/Unwind-wasm.c +7 -7
  725. package/libunwind/src/UnwindCursor.hpp +167 -49
  726. package/libunwind/src/UnwindLevel1.c +46 -17
  727. package/libunwind/src/UnwindRegistersRestore.S +46 -5
  728. package/libunwind/src/UnwindRegistersSave.S +86 -2
  729. package/libunwind/src/assembly.h +5 -1
  730. package/libunwind/src/config.h +9 -0
  731. package/libunwind/src/gcc_personality_v0.c +79 -6
  732. package/libunwind/src/libunwind.cpp +104 -4
  733. package/libunwind/src/libunwind_ext.h +7 -1
  734. package/libunwind/src/shadow_stack_unwind.h +2 -2
  735. package/lldb/pretty_printers.py +948 -0
  736. package/package.json +1 -1
  737. package/std/Build/Step/Compile.zig +18 -19
  738. package/std/Build/Step/Run.zig +13 -6
  739. package/std/Build/Step.zig +0 -3
  740. package/std/Io/Threaded.zig +3 -0
  741. package/std/Target/aarch64.zig +620 -77
  742. package/std/Target/amdgcn.zig +421 -21
  743. package/std/Target/arm.zig +40 -6
  744. package/std/Target/bpf.zig +6 -0
  745. package/std/Target/hexagon.zig +41 -6
  746. package/std/Target/loongarch.zig +18 -0
  747. package/std/Target/mips.zig +6 -0
  748. package/std/Target/nvptx.zig +58 -35
  749. package/std/Target/powerpc.zig +27 -19
  750. package/std/Target/riscv.zig +415 -177
  751. package/std/Target/sparc.zig +17 -0
  752. package/std/Target/wasm.zig +7 -0
  753. package/std/Target/x86.zig +200 -31
  754. package/std/Target/xtensa.zig +65 -0
  755. package/std/Target.zig +11 -2
  756. package/std/c.zig +7 -0
  757. package/std/debug/Dwarf.zig +14 -11
  758. package/std/debug/Pdb.zig +24 -16
  759. package/std/hash/xxhash.zig +0 -6
  760. package/std/math/log10.zig +0 -2
  761. package/std/math/modf.zig +0 -1
  762. package/std/mem.zig +1 -2
  763. package/std/os/linux/syscalls.zig +26 -1
  764. package/std/os/linux/x86.zig +2 -2
  765. package/std/os/windows.zig +130 -1
  766. package/std/simd.zig +4 -21
  767. package/std/start.zig +4 -3
  768. package/std/zig/Ast.zig +5 -7
  769. package/std/zig/AstGen.zig +20 -14
  770. package/std/zig/ErrorBundle.zig +6 -2
  771. package/std/zig/ZonGen.zig +13 -21
  772. package/std/zig/llvm/Builder.zig +2 -2
  773. package/std/zig/system/arm.zig +56 -2
  774. package/std/zig/system/windows.zig +34 -1
  775. package/std/zig/system/x86.zig +60 -16
  776. package/std/zig/system.zig +0 -10
  777. package/include/amxbf16transposeintrin.h +0 -94
  778. package/include/amxcomplextransposeintrin.h +0 -303
  779. package/include/amxfp16transposeintrin.h +0 -94
  780. package/include/amxmovrstransposeintrin.h +0 -200
  781. package/include/amxtf32transposeintrin.h +0 -105
  782. package/include/amxtransposeintrin.h +0 -248
  783. package/libc/include/hexagon-linux-any/asm/signal.h +0 -29
  784. package/libc/include/s390x-linux-any/asm/tape390.h +0 -103
  785. package/libtsan/sanitizer_common/sanitizer_coverage_interface.inc +0 -43
  786. package/std/Build/Step/CheckObject.zig +0 -2764
@@ -6,6 +6,8 @@
6
6
  //
7
7
  //===----------------------------------------------------------------------===//
8
8
 
9
+ #if !defined(__wasm__)
10
+
9
11
  #include "assembly.h"
10
12
 
11
13
  #define FROM_0_TO_15 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
@@ -16,13 +18,17 @@
16
18
 
17
19
  #if defined(_AIX)
18
20
  .toc
21
+ #elif defined(__aarch64__) && defined(__ELF__) && defined(_LIBUNWIND_EXECUTE_ONLY_CODE)
22
+ .section .text,"axy",@progbits,unique,0
19
23
  #else
20
24
  .text
21
25
  #endif
22
26
 
23
- #if !defined(__USING_SJLJ_EXCEPTIONS__) && !defined(__wasm__)
27
+ #if !defined(__USING_SJLJ_EXCEPTIONS__)
24
28
 
25
29
  #if defined(__i386__)
30
+ .att_syntax
31
+
26
32
  DEFINE_LIBUNWIND_FUNCTION(__libunwind_Registers_x86_jumpto)
27
33
  #
28
34
  # extern "C" void __libunwind_Registers_x86_jumpto(Registers_x86 *);
@@ -67,6 +73,7 @@ DEFINE_LIBUNWIND_FUNCTION(__libunwind_Registers_x86_jumpto)
67
73
  # skip gs
68
74
 
69
75
  #elif defined(__x86_64__) && !defined(__arm64ec__)
76
+ .att_syntax
70
77
 
71
78
  DEFINE_LIBUNWIND_FUNCTION(__libunwind_Registers_x86_64_jumpto)
72
79
  #
@@ -629,18 +636,35 @@ Lnovec:
629
636
 
630
637
  #elif defined(__aarch64__)
631
638
 
639
+ #ifndef __has_feature
640
+ #define __has_feature(__feature) 0
641
+ #endif
642
+
632
643
  #if defined(__ARM_FEATURE_GCS_DEFAULT)
633
644
  .arch_extension gcs
634
645
  #endif
635
646
 
636
647
  //
637
- // extern "C" void __libunwind_Registers_arm64_jumpto(Registers_arm64 *);
648
+ // extern "C" void __libunwind_Registers_arm64_jumpto(Registers_arm64 *, unsigned);
638
649
  //
639
650
  // On entry:
640
651
  // thread_state pointer is in x0
652
+ // walked_frames counter is in x1
641
653
  //
642
654
  .p2align 2
643
655
  DEFINE_LIBUNWIND_FUNCTION(__libunwind_Registers_arm64_jumpto)
656
+
657
+ #if defined(_LIBUNWIND_TRACE_RET_INJECT)
658
+ cbz w1, 1f
659
+ 0:
660
+ subs w1, w1, #1
661
+ adr x16, #8
662
+ ret x16
663
+
664
+ b.ne 0b
665
+ 1:
666
+ #endif
667
+
644
668
  // skip restore of x0,x1 for now
645
669
  ldp x2, x3, [x0, #0x010]
646
670
  ldp x4, x5, [x0, #0x020]
@@ -657,7 +681,7 @@ DEFINE_LIBUNWIND_FUNCTION(__libunwind_Registers_arm64_jumpto)
657
681
  ldp x24,x25, [x0, #0x0C0]
658
682
  ldp x26,x27, [x0, #0x0D0]
659
683
  ldp x28,x29, [x0, #0x0E0]
660
- ldr x30, [x0, #0x100] // restore pc into lr
684
+
661
685
  #if defined(__ARM_FP) && __ARM_FP != 0
662
686
  ldp d0, d1, [x0, #0x110]
663
687
  ldp d2, d3, [x0, #0x120]
@@ -681,7 +705,18 @@ DEFINE_LIBUNWIND_FUNCTION(__libunwind_Registers_arm64_jumpto)
681
705
  // context struct, because it is allocated on the stack, and an exception
682
706
  // could clobber the de-allocated portion of the stack after sp has been
683
707
  // restored.
684
- ldr x16, [x0, #0x0F8]
708
+
709
+ ldr x16, [x0, #0x0F8] // load sp into scratch
710
+ ldr lr, [x0, #0x100] // restore pc into lr
711
+
712
+ #if __has_feature(ptrauth_calls)
713
+ // The LR is signed with its address inside the register state. Time
714
+ // to resign to be a regular ROP protected signed pointer
715
+ add x1, x0, #0x100
716
+ autib lr, x1
717
+ pacib lr, x16 // signed the scratch register for sp
718
+ #endif
719
+
685
720
  ldp x0, x1, [x0, #0x000] // restore x0,x1
686
721
  mov sp,x16 // restore sp
687
722
  #if defined(__ARM_FEATURE_GCS_DEFAULT)
@@ -694,7 +729,12 @@ DEFINE_LIBUNWIND_FUNCTION(__libunwind_Registers_arm64_jumpto)
694
729
  gcspushm x30
695
730
  Lnogcs:
696
731
  #endif
732
+
733
+ #if __has_feature(ptrauth_calls)
734
+ retab
735
+ #else
697
736
  ret x30 // jump to pc
737
+ #endif
698
738
 
699
739
  #elif defined(__arm__) && !defined(__APPLE__)
700
740
 
@@ -1253,7 +1293,8 @@ DEFINE_LIBUNWIND_FUNCTION(_ZN9libunwind19Registers_loongarch6jumptoEv)
1253
1293
 
1254
1294
  #endif
1255
1295
 
1256
- #endif /* !defined(__USING_SJLJ_EXCEPTIONS__) && !defined(__wasm__) */
1296
+ #endif /* !defined(__USING_SJLJ_EXCEPTIONS__) */
1257
1297
 
1258
1298
  NO_EXEC_STACK_DIRECTIVE
1259
1299
 
1300
+ #endif /* !defined(__wasm__) */
@@ -6,6 +6,8 @@
6
6
  //
7
7
  //===----------------------------------------------------------------------===//
8
8
 
9
+ #if !defined(__wasm__)
10
+
9
11
  #include "assembly.h"
10
12
 
11
13
  #define FROM_0_TO_15 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
@@ -16,13 +18,16 @@
16
18
 
17
19
  #if defined(_AIX)
18
20
  .toc
21
+ #elif defined(__aarch64__) && defined(__ELF__) && defined(_LIBUNWIND_EXECUTE_ONLY_CODE)
22
+ .section .text,"axy",@progbits,unique,0
19
23
  #else
20
24
  .text
21
25
  #endif
22
26
 
23
- #if !defined(__USING_SJLJ_EXCEPTIONS__) && !defined(__wasm__)
27
+ #if !defined(__USING_SJLJ_EXCEPTIONS__)
24
28
 
25
29
  #if defined(__i386__)
30
+ .att_syntax
26
31
 
27
32
  #
28
33
  # extern int __unw_getcontext(unw_context_t* thread_state)
@@ -107,6 +112,7 @@ DEFINE_LIBUNWIND_FUNCTION("#__unw_getcontext")
107
112
  .text
108
113
 
109
114
  #elif defined(__x86_64__)
115
+ .att_syntax
110
116
 
111
117
  #
112
118
  # extern int __unw_getcontext(unw_context_t* thread_state)
@@ -759,6 +765,10 @@ LnoR2Fix:
759
765
 
760
766
  #elif defined(__aarch64__)
761
767
 
768
+ #ifndef __has_feature
769
+ #define __has_feature(__feature) 0
770
+ #endif
771
+
762
772
  //
763
773
  // extern int __unw_getcontext(unw_context_t* thread_state)
764
774
  //
@@ -767,6 +777,11 @@ LnoR2Fix:
767
777
  //
768
778
  .p2align 2
769
779
  DEFINE_LIBUNWIND_FUNCTION(__unw_getcontext)
780
+
781
+ #if __has_feature(ptrauth_calls)
782
+ pacibsp
783
+ #endif
784
+
770
785
  stp x0, x1, [x0, #0x000]
771
786
  stp x2, x3, [x0, #0x010]
772
787
  stp x4, x5, [x0, #0x020]
@@ -807,7 +822,74 @@ DEFINE_LIBUNWIND_FUNCTION(__unw_getcontext)
807
822
  str d31, [x0, #0x208]
808
823
  #endif
809
824
  mov x0, #0 // return UNW_ESUCCESS
825
+
826
+ #if __has_feature(ptrauth_calls)
827
+ retab
828
+ #else
829
+ ret
830
+ #endif
831
+
832
+ //
833
+ // extern "C" int64_t __libunwind_Registers_arm64_za_disable()
834
+ //
835
+ // This function implements the requirements of the __arm_za_disable ABI
836
+ // routine, except that it will not abort; it will return a non-zero value
837
+ // to signify the routine failed.
838
+ //
839
+ // Note: This function uses SME instructions. It must only be called if SME
840
+ // has been confirmed to be available.
841
+ //
842
+ // On return:
843
+ //
844
+ // A status is placed in x0. A zero value indicates success; any non-zero
845
+ // value indicates failure.
846
+ //
847
+ .p2align 2
848
+ DEFINE_LIBUNWIND_FUNCTION(__libunwind_Registers_arm64_za_disable)
849
+ .variant_pcs __libunwind_Registers_arm64_za_disable
850
+ #if __has_feature(ptrauth_calls)
851
+ pacibsp
852
+ #endif
853
+ // If TPIDR2_EL0 is null, the subroutine just disables ZA.
854
+ .inst 0xd53bd0b0 // mrs x16, TPIDR2_EL0
855
+ cbz x16, 1f
856
+
857
+ // If any of the reserved bytes in the first 16 bytes of the TPIDR2 block are
858
+ // nonzero, return a non-zero value (libunwind will then abort).
859
+ ldrh w0, [x16, #10]
860
+ cbnz w0, 2f
861
+ ldr w0, [x16, #12]
862
+ cbnz w0, 2f
863
+
864
+ // If num_za_save_slices is zero, the subroutine just disables ZA.
865
+ ldrh w0, [x16, #8]
866
+ cbz x0, 1f
867
+
868
+ // If za_save_buffer is NULL, the subroutine just disables ZA.
869
+ ldr x16, [x16]
870
+ cbz x16, 1f
871
+
872
+ // Store ZA to za_save_buffer.
873
+ mov x15, xzr
874
+ 0:
875
+ .inst 0xe1206200 // str za[w15,0], [x16]
876
+ .inst 0x04305830 // addsvl x16, x16, #1
877
+ add x15, x15, #1
878
+ cmp x0, x15
879
+ b.ne 0b
880
+ 1:
881
+ // * Set TPIDR2_EL0 to null.
882
+ .inst 0xd51bd0bf // msr TPIDR2_EL0, xzr
883
+ // * Set PSTATE.ZA to 0.
884
+ .inst 0xd503447f // smstop za
885
+ // * Return zero (success)
886
+ mov x0, xzr
887
+ 2:
888
+ #if __has_feature(ptrauth_calls)
889
+ retab
890
+ #else
810
891
  ret
892
+ #endif
811
893
 
812
894
  #elif defined(__arm__) && !defined(__APPLE__)
813
895
 
@@ -1232,6 +1314,8 @@ DEFINE_LIBUNWIND_FUNCTION(__unw_getcontext)
1232
1314
  WEAK_ALIAS(__unw_getcontext, unw_getcontext)
1233
1315
  #endif
1234
1316
 
1235
- #endif /* !defined(__USING_SJLJ_EXCEPTIONS__) && !defined(__wasm__) */
1317
+ #endif /* !defined(__USING_SJLJ_EXCEPTIONS__) */
1236
1318
 
1237
1319
  NO_EXEC_STACK_DIRECTIVE
1320
+
1321
+ #endif /* !defined(__wasm__) */
@@ -15,7 +15,7 @@
15
15
  #ifndef UNWIND_ASSEMBLY_H
16
16
  #define UNWIND_ASSEMBLY_H
17
17
 
18
- #if defined(__linux__) && defined(__CET__)
18
+ #if defined(__CET__)
19
19
  #include <cet.h>
20
20
  #define _LIBUNWIND_CET_ENDBR _CET_ENDBR
21
21
  #else
@@ -132,6 +132,10 @@
132
132
 
133
133
  #if defined(__APPLE__)
134
134
 
135
+ #if defined(__aarch64__) || defined(__arm64__) || defined(__arm64e__)
136
+ #define _LIBUNWIND_TRACE_RET_INJECT 1
137
+ #endif
138
+
135
139
  #define SYMBOL_IS_FUNC(name)
136
140
  #define HIDDEN_SYMBOL(name) .private_extern name
137
141
  #if defined(_LIBUNWIND_HIDE_SYMBOLS)
@@ -28,6 +28,9 @@
28
28
  #define _LIBUNWIND_SUPPORT_COMPACT_UNWIND 1
29
29
  #define _LIBUNWIND_SUPPORT_DWARF_UNWIND 1
30
30
  #endif
31
+ #if defined(__aarch64__) || defined(__arm64__) || defined(__arm64e__)
32
+ #define _LIBUNWIND_TRACE_RET_INJECT 1
33
+ #endif
31
34
  #elif defined(_WIN32)
32
35
  #ifdef __SEH__
33
36
  #define _LIBUNWIND_SUPPORT_SEH_UNWIND 1
@@ -61,6 +64,12 @@
61
64
  #endif
62
65
  #endif
63
66
 
67
+ #ifdef _LIBUNWIND_TRACE_RET_INJECT
68
+ #define _LIBUNWIND_TRACE_NO_INLINE __attribute__((noinline, disable_tail_calls))
69
+ #else
70
+ #define _LIBUNWIND_TRACE_NO_INLINE
71
+ #endif
72
+
64
73
  #if defined(_LIBUNWIND_HIDE_SYMBOLS)
65
74
  // The CMake file passes -fvisibility=hidden to control ELF/Mach-O visibility.
66
75
  #define _LIBUNWIND_EXPORT
@@ -31,6 +31,58 @@ EXCEPTION_DISPOSITION _GCC_specific_handler(PEXCEPTION_RECORD, void *, PCONTEXT,
31
31
  _Unwind_Personality_Fn);
32
32
  #endif
33
33
 
34
+ #ifndef __has_feature
35
+ #define __has_feature(__feature) 0
36
+ #endif
37
+
38
+ #if __has_feature(ptrauth_calls)
39
+ #include <ptrauth.h>
40
+
41
+ // `__ptrauth_restricted_intptr` is a feature of apple clang that predates
42
+ // support for direct application of `__ptrauth` to integer types. This
43
+ // guard is necessary to support compilation with those compiler.
44
+ #if __has_feature(ptrauth_restricted_intptr_qualifier)
45
+ #define __ptrauth_gcc_personality_intptr(key, addressDiscriminated, \
46
+ discriminator) \
47
+ __ptrauth_restricted_intptr(key, addressDiscriminated, discriminator)
48
+ #else
49
+ #define __ptrauth_gcc_personality_intptr(key, addressDiscriminated, \
50
+ discriminator) \
51
+ __ptrauth(key, addressDiscriminated, discriminator)
52
+ #endif
53
+ #else
54
+ #define __ptrauth_gcc_personality_intptr(...)
55
+ #endif
56
+
57
+ #define __ptrauth_gcc_personality_func_key ptrauth_key_function_pointer
58
+
59
+ // ptrauth_string_discriminator("__gcc_personality_v0'funcStart") == 0xDFEB
60
+ #define __ptrauth_gcc_personality_func_start \
61
+ __ptrauth_gcc_personality_intptr(__ptrauth_gcc_personality_func_key, 1, \
62
+ 0xDFEB)
63
+
64
+ // ptrauth_string_discriminator("__gcc_personality_v0'start") == 0x52DC
65
+ #define __ptrauth_gcc_personality_start \
66
+ __ptrauth_gcc_personality_intptr(__ptrauth_gcc_personality_func_key, 1, \
67
+ 0x52DC)
68
+
69
+ // ptrauth_string_discriminator("__gcc_personality_v0'length") == 0xFFF7
70
+ #define __ptrauth_gcc_personality_length \
71
+ __ptrauth_gcc_personality_intptr(__ptrauth_gcc_personality_func_key, 1, \
72
+ 0xFFF7)
73
+
74
+ // ptrauth_string_discriminator("__gcc_personality_v0'landingPadOffset") ==
75
+ // 0x6498
76
+ #define __ptrauth_gcc_personality_lpoffset \
77
+ __ptrauth_gcc_personality_intptr(__ptrauth_gcc_personality_func_key, 1, \
78
+ 0x6498)
79
+
80
+ // ptrauth_string_discriminator("__gcc_personality_v0'landingPad") == 0xA134
81
+ #define __ptrauth_gcc_personality_lpad_disc 0xA134
82
+ #define __ptrauth_gcc_personality_lpad \
83
+ __ptrauth_gcc_personality_intptr(__ptrauth_gcc_personality_func_key, 1, \
84
+ __ptrauth_gcc_personality_lpad_disc)
85
+
34
86
  // Pointer encodings documented at:
35
87
  // http://refspecs.freestandards.org/LSB_1.3.0/gLSB/gLSB/ehframehdr.html
36
88
 
@@ -206,7 +258,8 @@ COMPILER_RT_ABI _Unwind_Reason_Code __gcc_personality_v0(
206
258
  return continueUnwind(exceptionObject, context);
207
259
 
208
260
  uintptr_t pc = (uintptr_t)_Unwind_GetIP(context) - 1;
209
- uintptr_t funcStart = (uintptr_t)_Unwind_GetRegionStart(context);
261
+ uintptr_t __ptrauth_gcc_personality_func_start funcStart =
262
+ (uintptr_t)_Unwind_GetRegionStart(context);
210
263
  uintptr_t pcOffset = pc - funcStart;
211
264
 
212
265
  // Parse LSDA header.
@@ -225,11 +278,14 @@ COMPILER_RT_ABI _Unwind_Reason_Code __gcc_personality_v0(
225
278
  const uint8_t *callSiteTableEnd = callSiteTableStart + callSiteTableLength;
226
279
  const uint8_t *p = callSiteTableStart;
227
280
  while (p < callSiteTableEnd) {
228
- uintptr_t start = readEncodedPointer(&p, callSiteEncoding);
229
- size_t length = readEncodedPointer(&p, callSiteEncoding);
230
- size_t landingPad = readEncodedPointer(&p, callSiteEncoding);
281
+ uintptr_t __ptrauth_gcc_personality_start start =
282
+ readEncodedPointer(&p, callSiteEncoding);
283
+ size_t __ptrauth_gcc_personality_length length =
284
+ readEncodedPointer(&p, callSiteEncoding);
285
+ size_t __ptrauth_gcc_personality_lpoffset landingPadOffset =
286
+ readEncodedPointer(&p, callSiteEncoding);
231
287
  readULEB128(&p); // action value not used for C code
232
- if (landingPad == 0)
288
+ if (landingPadOffset == 0)
233
289
  continue; // no landing pad for this entry
234
290
  if ((start <= pcOffset) && (pcOffset < (start + length))) {
235
291
  // Found landing pad for the PC.
@@ -239,7 +295,24 @@ COMPILER_RT_ABI _Unwind_Reason_Code __gcc_personality_v0(
239
295
  _Unwind_SetGR(context, __builtin_eh_return_data_regno(0),
240
296
  (uintptr_t)exceptionObject);
241
297
  _Unwind_SetGR(context, __builtin_eh_return_data_regno(1), 0);
242
- _Unwind_SetIP(context, (funcStart + landingPad));
298
+ size_t __ptrauth_gcc_personality_lpad landingPad =
299
+ funcStart + landingPadOffset;
300
+ #if __has_feature(ptrauth_calls)
301
+ uintptr_t stackPointer = _Unwind_GetGR(context, -2);
302
+ const uintptr_t existingDiscriminator = ptrauth_blend_discriminator(
303
+ &landingPad, __ptrauth_gcc_personality_lpad_disc);
304
+ // newIP is authenticated as if it were qualified with a pseudo qualifier
305
+ // along the lines of:
306
+ // __ptrauth(ptrauth_key_return_address, <stackPointer>, 0)
307
+ // where the stack pointer is used in place of the strict storage
308
+ // address.
309
+ uintptr_t newIP = (uintptr_t)ptrauth_auth_and_resign(
310
+ *(void **)&landingPad, __ptrauth_gcc_personality_func_key,
311
+ existingDiscriminator, ptrauth_key_return_address, stackPointer);
312
+ _Unwind_SetIP(context, newIP);
313
+ #else
314
+ _Unwind_SetIP(context, landingPad);
315
+ #endif
243
316
  return _URC_INSTALL_CONTEXT;
244
317
  }
245
318
  }
@@ -118,14 +118,55 @@ _LIBUNWIND_HIDDEN int __unw_set_reg(unw_cursor_t *cursor, unw_regnum_t regNum,
118
118
  typedef LocalAddressSpace::pint_t pint_t;
119
119
  AbstractUnwindCursor *co = (AbstractUnwindCursor *)cursor;
120
120
  if (co->validReg(regNum)) {
121
- co->setReg(regNum, (pint_t)value);
122
121
  // special case altering IP to re-find info (being called by personality
123
122
  // function)
124
123
  if (regNum == UNW_REG_IP) {
125
124
  unw_proc_info_t info;
126
125
  // First, get the FDE for the old location and then update it.
127
126
  co->getInfo(&info);
128
- co->setInfoBasedOnIPRegister(false);
127
+
128
+ pint_t sp = (pint_t)co->getReg(UNW_REG_SP);
129
+
130
+ #if defined(_LIBUNWIND_TARGET_AARCH64_AUTHENTICATED_UNWINDING)
131
+ {
132
+ // It is only valid to set the IP within the current function. This is
133
+ // important for ptrauth, otherwise the IP cannot be correctly signed.
134
+ // The current signature of `value` is via the schema:
135
+ // __ptrauth(ptrauth_key_return_address, <<sp>>, 0)
136
+ // For this to be generally usable we manually re-sign it to the
137
+ // directly supported schema:
138
+ // __ptrauth(ptrauth_key_return_address, 1, 0)
139
+ unw_word_t
140
+ __unwind_ptrauth_restricted_intptr(ptrauth_key_return_address, 1,
141
+ 0) authenticated_value;
142
+ unw_word_t opaque_value = (uint64_t)ptrauth_auth_and_resign(
143
+ (void *)value, ptrauth_key_return_address, sp,
144
+ ptrauth_key_return_address, &authenticated_value);
145
+ memmove(reinterpret_cast<void *>(&authenticated_value),
146
+ reinterpret_cast<void *>(&opaque_value),
147
+ sizeof(authenticated_value));
148
+ if (authenticated_value < info.start_ip ||
149
+ authenticated_value > info.end_ip)
150
+ _LIBUNWIND_ABORT("PC vs frame info mismatch");
151
+
152
+ // PC should have been signed with the sp, so we verify that
153
+ // roundtripping does not fail. The `ptrauth_auth_and_resign` is
154
+ // guaranteed to trap on authentication failure even without FPAC
155
+ // feature.
156
+ pint_t pc = (pint_t)co->getReg(UNW_REG_IP);
157
+ if (ptrauth_auth_and_resign((void *)pc, ptrauth_key_return_address, sp,
158
+ ptrauth_key_return_address,
159
+ sp) != (void *)pc) {
160
+ _LIBUNWIND_LOG(
161
+ "Bad unwind with PAuth-enabled ABI (0x%zX, 0x%zX)->0x%zX\n", pc,
162
+ sp,
163
+ (pint_t)ptrauth_auth_data((void *)pc, ptrauth_key_return_address,
164
+ sp));
165
+ _LIBUNWIND_ABORT("Bad unwind with PAuth-enabled ABI");
166
+ }
167
+ }
168
+ #endif
169
+
129
170
  // If the original call expects stack adjustment, perform this now.
130
171
  // Normal frame unwinding would have included the offset already in the
131
172
  // CFA computation.
@@ -133,7 +174,11 @@ _LIBUNWIND_HIDDEN int __unw_set_reg(unw_cursor_t *cursor, unw_regnum_t regNum,
133
174
  // this should actually be - info.gp. LLVM doesn't currently support
134
175
  // any such platforms and Clang doesn't export a macro for them.
135
176
  if (info.gp)
136
- co->setReg(UNW_REG_SP, co->getReg(UNW_REG_SP) + info.gp);
177
+ co->setReg(UNW_REG_SP, sp + info.gp);
178
+ co->setReg(UNW_REG_IP, value);
179
+ co->setInfoBasedOnIPRegister(false);
180
+ } else {
181
+ co->setReg(regNum, (pint_t)value);
137
182
  }
138
183
  return UNW_ESUCCESS;
139
184
  }
@@ -205,7 +250,27 @@ _LIBUNWIND_HIDDEN int __unw_get_proc_info(unw_cursor_t *cursor,
205
250
  }
206
251
  _LIBUNWIND_WEAK_ALIAS(__unw_get_proc_info, unw_get_proc_info)
207
252
 
208
- /// Resume execution at cursor position (aka longjump).
253
+ /// Rebalance the execution flow by injecting the right amount of `ret`
254
+ /// instruction relatively to the amount of `walkedFrames` then resume execution
255
+ /// at cursor position (aka longjump).
256
+ _LIBUNWIND_HIDDEN int __unw_resume_with_frames_walked(unw_cursor_t *cursor,
257
+ unsigned walkedFrames) {
258
+ _LIBUNWIND_TRACE_API("__unw_resume(cursor=%p, walkedFrames=%u)",
259
+ static_cast<void *>(cursor), walkedFrames);
260
+ #if __has_feature(address_sanitizer) || defined(__SANITIZE_ADDRESS__)
261
+ // Inform the ASan runtime that now might be a good time to clean stuff up.
262
+ __asan_handle_no_return();
263
+ #endif
264
+ #ifdef _LIBUNWIND_TRACE_RET_INJECT
265
+ AbstractUnwindCursor *co = (AbstractUnwindCursor *)cursor;
266
+ co->setWalkedFrames(walkedFrames);
267
+ #endif
268
+ return __unw_resume(cursor);
269
+ }
270
+ _LIBUNWIND_WEAK_ALIAS(__unw_resume_with_frames_walked,
271
+ unw_resume_with_frames_walked)
272
+
273
+ /// Legacy function. Resume execution at cursor position (aka longjump).
209
274
  _LIBUNWIND_HIDDEN int __unw_resume(unw_cursor_t *cursor) {
210
275
  _LIBUNWIND_TRACE_API("__unw_resume(cursor=%p)", static_cast<void *>(cursor));
211
276
  #if __has_feature(address_sanitizer) || defined(__SANITIZE_ADDRESS__)
@@ -347,6 +412,41 @@ void __unw_remove_dynamic_eh_frame_section(unw_word_t eh_frame_start) {
347
412
  }
348
413
 
349
414
  #endif // defined(_LIBUNWIND_SUPPORT_DWARF_UNWIND)
415
+
416
+ /// Maps the UNW_* error code to a textual representation
417
+ _LIBUNWIND_HIDDEN const char *__unw_strerror(int error_code) {
418
+ switch (error_code) {
419
+ case UNW_ESUCCESS:
420
+ return "no error";
421
+ case UNW_EUNSPEC:
422
+ return "unspecified (general) error";
423
+ case UNW_ENOMEM:
424
+ return "out of memory";
425
+ case UNW_EBADREG:
426
+ return "bad register number";
427
+ case UNW_EREADONLYREG:
428
+ return "attempt to write read-only register";
429
+ case UNW_ESTOPUNWIND:
430
+ return "stop unwinding";
431
+ case UNW_EINVALIDIP:
432
+ return "invalid IP";
433
+ case UNW_EBADFRAME:
434
+ return "bad frame";
435
+ case UNW_EINVAL:
436
+ return "unsupported operation or bad value";
437
+ case UNW_EBADVERSION:
438
+ return "unwind info has unsupported version";
439
+ case UNW_ENOINFO:
440
+ return "no unwind info found";
441
+ #if defined(_LIBUNWIND_TARGET_AARCH64) && !defined(_LIBUNWIND_IS_NATIVE_ONLY)
442
+ case UNW_ECROSSRASIGNING:
443
+ return "cross unwind with return address signing";
444
+ #endif
445
+ }
446
+ return "invalid error code";
447
+ }
448
+ _LIBUNWIND_WEAK_ALIAS(__unw_strerror, unw_strerror)
449
+
350
450
  #endif // !defined(__USING_SJLJ_EXCEPTIONS__) && !defined(__wasm__)
351
451
 
352
452
  #ifdef __APPLE__
@@ -26,11 +26,16 @@ extern "C" {
26
26
  extern int __unw_getcontext(unw_context_t *);
27
27
  extern int __unw_init_local(unw_cursor_t *, unw_context_t *);
28
28
  extern int __unw_step(unw_cursor_t *);
29
+ extern int __unw_step_stage2(unw_cursor_t *);
29
30
  extern int __unw_get_reg(unw_cursor_t *, unw_regnum_t, unw_word_t *);
30
31
  extern int __unw_get_fpreg(unw_cursor_t *, unw_regnum_t, unw_fpreg_t *);
31
32
  extern int __unw_set_reg(unw_cursor_t *, unw_regnum_t, unw_word_t);
32
33
  extern int __unw_set_fpreg(unw_cursor_t *, unw_regnum_t, unw_fpreg_t);
33
- extern int __unw_resume(unw_cursor_t *);
34
+ _LIBUNWIND_TRACE_NO_INLINE
35
+ extern int __unw_resume_with_frames_walked(unw_cursor_t *, unsigned);
36
+ // `__unw_resume` is a legacy function. Use `__unw_resume_with_frames_walked` instead.
37
+ _LIBUNWIND_TRACE_NO_INLINE
38
+ extern int __unw_resume(unw_cursor_t *);
34
39
 
35
40
  #ifdef __arm__
36
41
  /* Save VFP registers in FSTMX format (instead of FSTMD). */
@@ -42,6 +47,7 @@ extern int __unw_get_proc_info(unw_cursor_t *, unw_proc_info_t *);
42
47
  extern int __unw_is_fpreg(unw_cursor_t *, unw_regnum_t);
43
48
  extern int __unw_is_signal_frame(unw_cursor_t *);
44
49
  extern int __unw_get_proc_name(unw_cursor_t *, char *, size_t, unw_word_t *);
50
+ extern const char *__unw_strerror(int);
45
51
 
46
52
  #if defined(_AIX)
47
53
  extern uintptr_t __unw_get_data_rel_base(unw_cursor_t *);
@@ -12,8 +12,8 @@
12
12
 
13
13
  #include "libunwind.h"
14
14
 
15
- // Currently, CET is implemented on Linux x86 platforms.
16
- #if defined(_LIBUNWIND_TARGET_LINUX) && defined(__CET__) && defined(__SHSTK__)
15
+ // Currently, CET is implemented on some ELF x86 platforms.
16
+ #if defined(__CET__) && defined(__SHSTK__)
17
17
  #define _LIBUNWIND_USE_CET 1
18
18
  #endif
19
19