@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.
- package/c/stdlib.zig +32 -22
- package/compiler/aro/aro/Compilation.zig +0 -3
- package/compiler/translate-c/ast.zig +5 -2
- package/compiler_rt/arm.zig +3 -3
- package/compiler_rt/trunctfhf2.zig +3 -0
- package/compiler_rt.zig +1 -22
- package/docs/wasm/markdown/Parser.zig +5 -9
- package/include/__clang_spirv_builtins.h +12 -12
- package/include/__float_float.h +176 -0
- package/include/__float_header_macro.h +12 -0
- package/include/__float_infinity_nan.h +20 -0
- package/include/amo.h +131 -0
- package/include/amxavx512intrin.h +215 -1
- package/include/amxintrin.h +0 -2
- package/include/arm_acle.h +37 -27
- package/include/arm_neon.h +218 -82
- package/include/arm_sme.h +8 -8
- package/include/arm_sve.h +4162 -3782
- package/include/avx10_2_512bf16intrin.h +19 -12
- package/include/avx10_2_512convertintrin.h +1 -1
- package/include/avx10_2_512niintrin.h +31 -31
- package/include/avx10_2_512satcvtdsintrin.h +1 -1
- package/include/avx10_2bf16intrin.h +54 -45
- package/include/avx10_2convertintrin.h +2 -2
- package/include/avx10_2copyintrin.h +1 -1
- package/include/avx10_2niintrin.h +14 -14
- package/include/avx10_2satcvtdsintrin.h +2 -2
- package/include/avx2intrin.h +275 -377
- package/include/avx512bf16intrin.h +25 -16
- package/include/avx512bitalgintrin.h +19 -30
- package/include/avx512bwintrin.h +386 -505
- package/include/avx512cdintrin.h +42 -55
- package/include/avx512dqintrin.h +132 -161
- package/include/avx512fintrin.h +1015 -1424
- package/include/avx512fp16intrin.h +112 -110
- package/include/avx512ifmaintrin.h +32 -34
- package/include/avx512ifmavlintrin.h +73 -46
- package/include/avx512vbmi2intrin.h +43 -32
- package/include/avx512vbmiintrin.h +19 -27
- package/include/avx512vbmivlintrin.h +35 -49
- package/include/avx512vlbf16intrin.h +32 -22
- package/include/avx512vlbitalgintrin.h +37 -53
- package/include/avx512vlbwintrin.h +470 -573
- package/include/avx512vlcdintrin.h +74 -102
- package/include/avx512vldqintrin.h +110 -127
- package/include/avx512vlfp16intrin.h +130 -111
- package/include/avx512vlintrin.h +945 -1299
- package/include/avx512vlvbmi2intrin.h +78 -63
- package/include/avx512vlvnniintrin.h +21 -18
- package/include/avx512vlvp2intersectintrin.h +2 -2
- package/include/avx512vnniintrin.h +10 -10
- package/include/avx512vp2intersectintrin.h +1 -2
- package/include/avx512vpopcntdqintrin.h +8 -10
- package/include/avx512vpopcntdqvlintrin.h +17 -15
- package/include/avxifmaintrin.h +16 -0
- package/include/avxintrin.h +165 -241
- package/include/avxvnniint16intrin.h +118 -99
- package/include/avxvnniint8intrin.h +56 -32
- package/include/avxvnniintrin.h +16 -8
- package/include/cpuid.h +101 -4
- package/include/emmintrin.h +168 -168
- package/include/f16cintrin.h +23 -9
- package/include/float.h +16 -155
- package/include/fma4intrin.h +98 -96
- package/include/fmaintrin.h +96 -66
- package/include/gfniintrin.h +21 -16
- package/include/hexagon_types.h +23 -20
- package/include/hvx_hexagon_protos.h +649 -860
- package/include/immintrin.h +0 -12
- package/include/intrin.h +4 -0
- package/include/lasxintrin.h +113 -0
- package/include/llvm_libc_wrappers/assert.h +3 -5
- package/include/llvm_libc_wrappers/ctype.h +3 -115
- package/include/llvm_libc_wrappers/inttypes.h +3 -5
- package/include/llvm_libc_wrappers/stdio.h +10 -38
- package/include/llvm_libc_wrappers/stdlib.h +3 -24
- package/include/llvm_libc_wrappers/string.h +2 -70
- package/include/llvm_libc_wrappers/time.h +4 -10
- package/include/mmintrin.h +188 -257
- package/include/module.modulemap +23 -4
- package/include/movrs_avx10_2_512intrin.h +2 -2
- package/include/movrs_avx10_2intrin.h +4 -4
- package/include/pmmintrin.h +12 -24
- package/include/ptrauth.h +16 -2
- package/include/riscv_mips.h +34 -0
- package/include/riscv_nds.h +89 -0
- package/include/sifive_vector.h +58 -2
- package/include/sm4evexintrin.h +2 -2
- package/include/smmintrin.h +77 -59
- package/include/spirvintrin.h +194 -0
- package/include/stddefer.h +19 -0
- package/include/tmmintrin.h +116 -147
- package/include/vaesintrin.h +1 -2
- package/include/xmmintrin.h +44 -70
- package/include/xopintrin.h +20 -10
- package/libc/include/aarch64-linux-any/asm/hwcap.h +1 -0
- package/libc/include/aarch64-linux-any/asm/unistd_64.h +1 -0
- package/libc/include/any-linux-any/asm-generic/errno.h +2 -0
- package/libc/include/any-linux-any/asm-generic/unistd.h +4 -1
- package/libc/include/any-linux-any/drm/amdgpu_drm.h +20 -6
- package/libc/include/any-linux-any/drm/amdxdna_accel.h +8 -0
- package/libc/include/any-linux-any/drm/drm_fourcc.h +6 -6
- package/libc/include/any-linux-any/drm/panfrost_drm.h +75 -1
- package/libc/include/any-linux-any/drm/panthor_drm.h +154 -3
- package/libc/include/any-linux-any/drm/rocket_accel.h +74 -24
- package/libc/include/any-linux-any/drm/xe_drm.h +89 -6
- package/libc/include/any-linux-any/linux/android/binder.h +1 -1
- package/libc/include/any-linux-any/linux/bpf.h +28 -0
- package/libc/include/any-linux-any/linux/btrfs.h +1 -0
- package/libc/include/any-linux-any/linux/btrfs_tree.h +32 -2
- package/libc/include/any-linux-any/linux/dma-buf.h +1 -0
- package/libc/include/any-linux-any/linux/dpll.h +1 -0
- package/libc/include/any-linux-any/linux/elf.h +2 -0
- package/libc/include/any-linux-any/linux/ethtool.h +21 -5
- package/libc/include/any-linux-any/linux/fs.h +1 -0
- package/libc/include/any-linux-any/linux/hyperv.h +1 -1
- package/libc/include/any-linux-any/linux/idxd.h +134 -134
- package/libc/include/any-linux-any/linux/if_alg.h +1 -1
- package/libc/include/any-linux-any/linux/if_link.h +1 -0
- package/libc/include/any-linux-any/linux/input-event-codes.h +4 -0
- package/libc/include/any-linux-any/linux/io_uring/bpf_filter.h +68 -0
- package/libc/include/any-linux-any/linux/io_uring/query.h +5 -1
- package/libc/include/any-linux-any/linux/io_uring.h +33 -2
- package/libc/include/any-linux-any/linux/iommufd.h +39 -0
- package/libc/include/any-linux-any/linux/kfd_ioctl.h +13 -3
- package/libc/include/any-linux-any/linux/kfd_sysfs.h +2 -1
- package/libc/include/any-linux-any/linux/kvm.h +30 -6
- package/libc/include/any-linux-any/linux/landlock.h +22 -8
- package/libc/include/any-linux-any/linux/magic.h +1 -0
- package/libc/include/any-linux-any/linux/mempolicy.h +3 -0
- package/libc/include/any-linux-any/linux/mount.h +11 -2
- package/libc/include/any-linux-any/linux/mptcp_pm.h +1 -1
- package/libc/include/any-linux-any/linux/mshv.h +2 -0
- package/libc/include/any-linux-any/linux/netfilter_bridge.h +5 -4
- package/libc/include/any-linux-any/linux/netfilter_ipv4.h +4 -5
- package/libc/include/any-linux-any/linux/netfilter_ipv6.h +3 -4
- package/libc/include/any-linux-any/linux/nfs.h +1 -1
- package/libc/include/any-linux-any/linux/nfsd_netlink.h +1 -0
- package/libc/include/any-linux-any/linux/nilfs2_api.h +2 -2
- package/libc/include/any-linux-any/linux/nilfs2_ondisk.h +97 -66
- package/libc/include/any-linux-any/linux/nl80211.h +104 -3
- package/libc/include/any-linux-any/linux/pci.h +7 -0
- package/libc/include/any-linux-any/linux/pci_regs.h +65 -6
- package/libc/include/any-linux-any/linux/pcitest.h +1 -0
- package/libc/include/any-linux-any/linux/perf_event.h +24 -3
- package/libc/include/any-linux-any/linux/pkt_sched.h +1 -0
- package/libc/include/any-linux-any/linux/prctl.h +30 -0
- package/libc/include/any-linux-any/linux/rseq.h +62 -5
- package/libc/include/any-linux-any/linux/shm.h +0 -1
- package/libc/include/any-linux-any/linux/stddef.h +4 -0
- package/libc/include/any-linux-any/linux/sysctl.h +1 -2
- package/libc/include/any-linux-any/linux/taskstats.h +12 -1
- package/libc/include/any-linux-any/linux/tcp.h +23 -3
- package/libc/include/any-linux-any/linux/typelimits.h +8 -0
- package/libc/include/any-linux-any/linux/ublk_cmd.h +120 -1
- package/libc/include/any-linux-any/linux/v4l2-controls.h +63 -0
- package/libc/include/any-linux-any/linux/vbox_vmmdev_types.h +2 -2
- package/libc/include/any-linux-any/linux/vduse.h +80 -5
- package/libc/include/any-linux-any/linux/version.h +3 -3
- package/libc/include/any-linux-any/linux/vfio.h +4 -0
- package/libc/include/any-linux-any/linux/videodev2.h +3 -0
- package/libc/include/any-linux-any/linux/virtio_ring.h +1 -2
- package/libc/include/any-linux-any/linux/vmclock-abi.h +20 -0
- package/libc/include/any-linux-any/rdma/bnxt_re-abi.h +16 -0
- package/libc/include/any-linux-any/rdma/ib_user_ioctl_cmds.h +16 -0
- package/libc/include/any-linux-any/rdma/mana-abi.h +3 -0
- package/libc/include/any-linux-any/scsi/scsi_bsg_ufs.h +8 -9
- package/libc/include/any-linux-any/sound/sof/tokens.h +6 -0
- package/libc/include/arc-linux-any/asm/swab.h +0 -63
- package/libc/include/arc-linux-any/asm/unistd_32.h +1 -0
- package/libc/include/arm-linux-any/asm/ptrace.h +0 -9
- package/libc/include/arm-linux-any/asm/unistd-eabi.h +1 -0
- package/libc/include/arm-linux-any/asm/unistd-oabi.h +1 -0
- package/libc/include/csky-linux-any/asm/unistd_32.h +1 -0
- package/libc/include/hexagon-linux-any/asm/unistd_32.h +1 -0
- package/libc/include/loongarch-linux-any/asm/hwcap.h +1 -0
- package/libc/include/loongarch-linux-any/asm/kvm.h +1 -0
- package/libc/include/loongarch-linux-any/asm/kvm_para.h +1 -0
- package/libc/include/loongarch-linux-any/asm/unistd_32.h +2 -0
- package/libc/include/loongarch-linux-any/asm/unistd_64.h +2 -0
- package/libc/include/m68k-linux-any/asm/unistd_32.h +1 -0
- package/libc/include/mips-linux-any/asm/errno.h +2 -0
- package/libc/include/mips-linux-any/asm/unistd_n32.h +1 -0
- package/libc/include/mips-linux-any/asm/unistd_n64.h +1 -0
- package/libc/include/mips-linux-any/asm/unistd_o32.h +1 -0
- package/libc/include/powerpc-linux-any/asm/unistd_32.h +1 -0
- package/libc/include/powerpc-linux-any/asm/unistd_64.h +1 -0
- package/libc/include/riscv-linux-any/asm/hwprobe.h +4 -0
- package/libc/include/riscv-linux-any/asm/kvm.h +3 -0
- package/libc/include/riscv-linux-any/asm/ptrace.h +37 -0
- package/libc/include/riscv-linux-any/asm/sigcontext.h +1 -0
- package/libc/include/riscv-linux-any/asm/unistd_32.h +1 -0
- package/libc/include/riscv-linux-any/asm/unistd_64.h +1 -0
- package/libc/include/s390x-linux-any/asm/unistd_64.h +1 -0
- package/libc/include/sparc-linux-any/asm/errno.h +2 -0
- package/libc/include/sparc-linux-any/asm/ioctls.h +4 -4
- package/libc/include/sparc-linux-any/asm/unistd_32.h +2 -0
- package/libc/include/sparc-linux-any/asm/unistd_64.h +2 -0
- package/libc/include/x86-linux-any/asm/auxvec.h +0 -4
- package/libc/include/x86-linux-any/asm/kvm.h +13 -8
- package/libc/include/x86-linux-any/asm/svm.h +16 -16
- package/libc/include/x86-linux-any/asm/unistd_32.h +1 -0
- package/libc/include/x86-linux-any/asm/unistd_64.h +1 -0
- package/libc/include/x86-linux-any/asm/unistd_x32.h +1 -0
- package/libc/include/xtensa-linux-any/asm/unistd_32.h +1 -0
- package/libcxx/include/__algorithm/all_of.h +11 -5
- package/libcxx/include/__algorithm/comp.h +4 -0
- package/libcxx/include/__algorithm/copy.h +28 -147
- package/libcxx/include/__algorithm/copy_backward.h +9 -24
- package/libcxx/include/__algorithm/copy_n.h +50 -16
- package/libcxx/include/__algorithm/count.h +2 -2
- package/libcxx/include/__algorithm/equal.h +43 -55
- package/libcxx/include/__algorithm/fill.h +26 -8
- package/libcxx/include/__algorithm/fill_n.h +32 -46
- package/libcxx/include/__algorithm/find.h +96 -39
- package/libcxx/include/__algorithm/find_end.h +105 -0
- package/libcxx/include/__algorithm/for_each.h +18 -24
- package/libcxx/include/__algorithm/for_each_n.h +20 -47
- package/libcxx/include/__algorithm/for_each_n_segment.h +1 -1
- package/libcxx/include/__algorithm/for_each_segment.h +26 -0
- package/libcxx/include/__algorithm/generate.h +4 -2
- package/libcxx/include/__algorithm/generate_n.h +19 -6
- package/libcxx/include/__algorithm/is_permutation.h +4 -4
- package/libcxx/include/__algorithm/iterator_operations.h +3 -0
- package/libcxx/include/__algorithm/lexicographical_compare.h +2 -2
- package/libcxx/include/__algorithm/lexicographical_compare_three_way.h +6 -6
- package/libcxx/include/__algorithm/make_heap.h +16 -4
- package/libcxx/include/__algorithm/mismatch.h +2 -2
- package/libcxx/include/__algorithm/move.h +8 -19
- package/libcxx/include/__algorithm/move_backward.h +9 -24
- package/libcxx/include/__algorithm/none_of.h +4 -4
- package/libcxx/include/__algorithm/partial_sort.h +1 -1
- package/libcxx/include/__algorithm/partial_sort_copy.h +1 -1
- package/libcxx/include/__algorithm/pstl.h +9 -9
- package/libcxx/include/__algorithm/radix_sort.h +27 -25
- package/libcxx/include/__algorithm/ranges_copy_n.h +3 -26
- package/libcxx/include/__algorithm/ranges_equal.h +17 -26
- package/libcxx/include/__algorithm/ranges_fill.h +7 -6
- package/libcxx/include/__algorithm/ranges_for_each.h +9 -1
- package/libcxx/include/__algorithm/ranges_generate_n.h +2 -6
- package/libcxx/include/__algorithm/ranges_search_n.h +2 -2
- package/libcxx/include/__algorithm/rotate.h +27 -44
- package/libcxx/include/__algorithm/search_n.h +49 -37
- package/libcxx/include/__algorithm/sift_down.h +19 -18
- package/libcxx/include/__algorithm/simd_utils.h +33 -4
- package/libcxx/include/__algorithm/specialized_algorithms.h +54 -0
- package/libcxx/include/__algorithm/stable_sort.h +1 -1
- package/libcxx/include/__assertion_handler +31 -4
- package/libcxx/include/__atomic/atomic.h +36 -60
- package/libcxx/include/__atomic/atomic_flag.h +19 -37
- package/libcxx/include/__atomic/atomic_ref.h +29 -12
- package/libcxx/include/__atomic/atomic_sync.h +127 -55
- package/libcxx/include/__atomic/atomic_sync_timed.h +144 -0
- package/libcxx/include/__atomic/atomic_waitable_traits.h +103 -0
- package/libcxx/include/__atomic/contention_t.h +27 -3
- package/libcxx/include/__atomic/floating_point_helper.h +55 -0
- package/libcxx/include/__bit/countl.h +1 -2
- package/libcxx/include/__bit/countr.h +1 -2
- package/libcxx/include/__bit/has_single_bit.h +1 -1
- package/libcxx/include/__bit/popcount.h +0 -1
- package/libcxx/include/__bit/rotate.h +15 -26
- package/libcxx/include/__bit_reference +207 -18
- package/libcxx/include/__charconv/from_chars_integral.h +1 -1
- package/libcxx/include/__charconv/from_chars_result.h +1 -1
- package/libcxx/include/__charconv/to_chars_integral.h +1 -0
- package/libcxx/include/__charconv/to_chars_result.h +1 -1
- package/libcxx/include/__charconv/traits.h +3 -24
- package/libcxx/include/__chrono/day.h +11 -0
- package/libcxx/include/__chrono/duration.h +58 -33
- package/libcxx/include/__chrono/file_clock.h +4 -2
- package/libcxx/include/__chrono/is_clock.h +72 -0
- package/libcxx/include/__chrono/leap_second.h +13 -0
- package/libcxx/include/__chrono/month.h +13 -0
- package/libcxx/include/__chrono/month_weekday.h +22 -0
- package/libcxx/include/__chrono/monthday.h +20 -0
- package/libcxx/include/__chrono/steady_clock.h +1 -1
- package/libcxx/include/__chrono/system_clock.h +3 -3
- package/libcxx/include/__chrono/time_point.h +37 -13
- package/libcxx/include/__chrono/weekday.h +25 -0
- package/libcxx/include/__chrono/year.h +11 -0
- package/libcxx/include/__chrono/year_month.h +13 -0
- package/libcxx/include/__chrono/year_month_day.h +23 -0
- package/libcxx/include/__chrono/year_month_weekday.h +26 -0
- package/libcxx/include/__chrono/zoned_time.h +16 -0
- package/libcxx/include/__compare/is_eq.h +6 -6
- package/libcxx/include/__compare/strong_order.h +12 -30
- package/libcxx/include/__compare/three_way_comparable.h +2 -2
- package/libcxx/include/__concepts/comparison_common_type.h +40 -0
- package/libcxx/include/__concepts/equality_comparable.h +2 -1
- package/libcxx/include/__condition_variable/condition_variable.h +1 -1
- package/libcxx/include/__config +63 -280
- package/libcxx/include/__configuration/abi.h +14 -24
- package/libcxx/include/__configuration/availability.h +65 -118
- package/libcxx/include/__configuration/compiler.h +6 -6
- package/libcxx/include/__configuration/experimental.h +38 -0
- package/libcxx/include/__configuration/hardening.h +215 -0
- package/libcxx/include/__configuration/language.h +3 -0
- package/libcxx/include/__configuration/platform.h +9 -16
- package/libcxx/include/__coroutine/coroutine_handle.h +9 -9
- package/libcxx/include/__coroutine/noop_coroutine_handle.h +11 -13
- package/libcxx/include/__debug_utils/strict_weak_ordering_check.h +1 -1
- package/libcxx/include/__exception/exception.h +6 -4
- package/libcxx/include/__exception/exception_ptr.h +27 -5
- package/libcxx/include/__exception/nested_exception.h +2 -2
- package/libcxx/include/__exception/operations.h +5 -5
- package/libcxx/include/__expected/bad_expected_access.h +8 -6
- package/libcxx/include/__expected/expected.h +62 -64
- package/libcxx/include/__expected/unexpected.h +4 -4
- package/libcxx/include/__filesystem/copy_options.h +4 -4
- package/libcxx/include/__filesystem/directory_entry.h +37 -33
- package/libcxx/include/__filesystem/directory_iterator.h +9 -11
- package/libcxx/include/__filesystem/directory_options.h +7 -4
- package/libcxx/include/__filesystem/file_status.h +3 -3
- package/libcxx/include/__filesystem/filesystem_error.h +9 -10
- package/libcxx/include/__filesystem/operations.h +97 -66
- package/libcxx/include/__filesystem/path.h +68 -64
- package/libcxx/include/__filesystem/path_iterator.h +1 -3
- package/libcxx/include/__filesystem/perm_options.h +4 -4
- package/libcxx/include/__filesystem/perms.h +4 -4
- package/libcxx/include/__filesystem/recursive_directory_iterator.h +9 -14
- package/libcxx/include/__filesystem/space_info.h +1 -1
- package/libcxx/include/__filesystem/u8path.h +12 -14
- package/libcxx/include/__flat_map/flat_map.h +88 -71
- package/libcxx/include/__flat_map/flat_multimap.h +251 -172
- package/libcxx/include/__flat_map/key_value_iterator.h +0 -1
- package/libcxx/include/__flat_map/utils.h +1 -0
- package/libcxx/include/__flat_set/flat_multiset.h +211 -143
- package/libcxx/include/__flat_set/flat_set.h +86 -68
- package/libcxx/include/__format/concepts.h +0 -14
- package/libcxx/include/__format/extended_grapheme_cluster_table.h +3 -2
- package/libcxx/include/__format/fmt_pair_like.h +42 -0
- package/libcxx/include/__format/format_arg.h +7 -10
- package/libcxx/include/__format/format_args.h +1 -1
- package/libcxx/include/__format/format_context.h +5 -5
- package/libcxx/include/__format/format_parse_context.h +2 -2
- package/libcxx/include/__format/formatter_output.h +30 -34
- package/libcxx/include/__format/indic_conjunct_break_table.h +3 -2
- package/libcxx/include/__format/range_default_formatter.h +2 -41
- package/libcxx/include/__format/range_format.h +71 -0
- package/libcxx/include/__format/range_formatter.h +1 -0
- package/libcxx/include/__format/width_estimation_table.h +4 -2
- package/libcxx/include/__functional/bind.h +10 -15
- package/libcxx/include/__functional/bind_back.h +1 -1
- package/libcxx/include/__functional/bind_front.h +1 -1
- package/libcxx/include/__functional/function.h +57 -75
- package/libcxx/include/__functional/hash.h +1 -10
- package/libcxx/include/__functional/identity.h +1 -1
- package/libcxx/include/__functional/is_transparent.h +8 -0
- package/libcxx/include/__functional/mem_fn.h +2 -1
- package/libcxx/include/__functional/operations.h +18 -0
- package/libcxx/include/__functional/ranges_operations.h +7 -0
- package/libcxx/include/__functional/reference_wrapper.h +7 -5
- package/libcxx/include/__functional/weak_result_type.h +14 -28
- package/libcxx/include/__fwd/ios.h +1 -1
- package/libcxx/include/__fwd/tuple.h +14 -0
- package/libcxx/include/__hash_table +371 -357
- package/libcxx/include/__ios/fpos.h +4 -4
- package/libcxx/include/__iterator/back_insert_iterator.h +1 -7
- package/libcxx/include/__iterator/bounded_iter.h +7 -8
- package/libcxx/include/__iterator/concepts.h +6 -9
- package/libcxx/include/__iterator/cpp17_iterator_concepts.h +13 -12
- package/libcxx/include/__iterator/distance.h +40 -18
- package/libcxx/include/__iterator/front_insert_iterator.h +1 -7
- package/libcxx/include/__iterator/insert_iterator.h +1 -7
- package/libcxx/include/__iterator/istream_iterator.h +6 -7
- package/libcxx/include/__iterator/istreambuf_iterator.h +6 -7
- package/libcxx/include/__iterator/iter_move.h +1 -1
- package/libcxx/include/__iterator/iterator.h +13 -0
- package/libcxx/include/__iterator/iterator_traits.h +13 -14
- package/libcxx/include/__iterator/ostream_iterator.h +1 -7
- package/libcxx/include/__iterator/ostreambuf_iterator.h +1 -7
- package/libcxx/include/__iterator/reverse_iterator.h +8 -13
- package/libcxx/include/__iterator/segmented_iterator.h +3 -8
- package/libcxx/include/__iterator/static_bounded_iter.h +3 -3
- package/libcxx/include/__iterator/wrap_iter.h +8 -6
- package/libcxx/include/__locale +3 -10
- package/libcxx/include/__locale_dir/locale_base_api/bsd_locale_fallbacks.h +0 -10
- package/libcxx/include/__locale_dir/locale_base_api.h +5 -28
- package/libcxx/include/__locale_dir/messages.h +1 -1
- package/libcxx/include/__locale_dir/money.h +2 -2
- package/libcxx/include/__locale_dir/num.h +190 -243
- package/libcxx/include/__locale_dir/pad_and_output.h +5 -6
- package/libcxx/include/__locale_dir/support/bsd_like.h +0 -20
- package/libcxx/include/__locale_dir/support/fuchsia.h +0 -7
- package/libcxx/include/__locale_dir/support/linux.h +0 -37
- package/libcxx/include/__locale_dir/support/netbsd.h +0 -2
- package/libcxx/include/__locale_dir/support/newlib.h +243 -0
- package/libcxx/include/__locale_dir/support/no_locale/characters.h +0 -4
- package/libcxx/include/__locale_dir/support/no_locale/strtonum.h +0 -9
- package/libcxx/include/__locale_dir/support/windows.h +0 -29
- package/libcxx/include/__locale_dir/time.h +3 -7
- package/libcxx/include/__math/hypot.h +1 -1
- package/libcxx/include/__math/logarithms.h +1 -1
- package/libcxx/include/__math/traits.h +80 -11
- package/libcxx/include/__mdspan/extents.h +7 -4
- package/libcxx/include/__mdspan/layout_stride.h +4 -5
- package/libcxx/include/__mdspan/mdspan.h +29 -23
- package/libcxx/include/__memory/addressof.h +7 -5
- package/libcxx/include/__memory/align.h +18 -1
- package/libcxx/include/__memory/allocate_at_least.h +15 -10
- package/libcxx/include/__memory/allocator.h +14 -26
- package/libcxx/include/__memory/allocator_traits.h +6 -4
- package/libcxx/include/__memory/compressed_pair.h +15 -9
- package/libcxx/include/__memory/construct_at.h +12 -23
- package/libcxx/include/__memory/inout_ptr.h +1 -1
- package/libcxx/include/__memory/is_sufficiently_aligned.h +1 -1
- package/libcxx/include/__memory/out_ptr.h +1 -1
- package/libcxx/include/__memory/pointer_traits.h +1 -1
- package/libcxx/include/__memory/raw_storage_iterator.h +3 -9
- package/libcxx/include/__memory/shared_count.h +9 -30
- package/libcxx/include/__memory/shared_ptr.h +100 -145
- package/libcxx/include/__memory/temp_value.h +1 -2
- package/libcxx/include/__memory/uninitialized_algorithms.h +44 -115
- package/libcxx/include/__memory/unique_ptr.h +14 -16
- package/libcxx/include/__memory/uses_allocator_construction.h +1 -0
- package/libcxx/include/__memory_resource/memory_resource.h +4 -2
- package/libcxx/include/__memory_resource/monotonic_buffer_resource.h +1 -1
- package/libcxx/include/__memory_resource/polymorphic_allocator.h +13 -8
- package/libcxx/include/__memory_resource/pool_options.h +1 -1
- package/libcxx/include/__memory_resource/synchronized_pool_resource.h +4 -2
- package/libcxx/include/__memory_resource/unsynchronized_pool_resource.h +1 -1
- package/libcxx/include/__mutex/mutex.h +2 -2
- package/libcxx/include/__mutex/once_flag.h +14 -11
- package/libcxx/include/__mutex/tag_types.h +3 -3
- package/libcxx/include/__mutex/unique_lock.h +8 -7
- package/libcxx/include/__new/align_val_t.h +6 -0
- package/libcxx/include/__new/allocate.h +1 -2
- package/libcxx/include/__new/exceptions.h +8 -2
- package/libcxx/include/__new/global_new_delete.h +4 -11
- package/libcxx/include/__new/interference_size.h +0 -4
- package/libcxx/include/__new/launder.h +3 -5
- package/libcxx/include/__new/nothrow_t.h +1 -1
- package/libcxx/include/__numeric/gcd_lcm.h +24 -34
- package/libcxx/include/__numeric/midpoint.h +9 -14
- package/libcxx/include/__numeric/pstl.h +2 -2
- package/libcxx/include/__numeric/saturation_arithmetic.h +13 -5
- package/libcxx/include/__ostream/basic_ostream.h +8 -8
- package/libcxx/include/__pstl/backends/default.h +14 -14
- package/libcxx/include/__pstl/backends/libdispatch.h +2 -2
- package/libcxx/include/__pstl/cpu_algos/find_if.h +1 -1
- package/libcxx/include/__pstl/cpu_algos/transform.h +5 -6
- package/libcxx/include/__pstl/cpu_algos/transform_reduce.h +5 -4
- package/libcxx/include/__random/binomial_distribution.h +10 -4
- package/libcxx/include/__random/mersenne_twister_engine.h +50 -154
- package/libcxx/include/__random/piecewise_constant_distribution.h +3 -2
- package/libcxx/include/__random/piecewise_linear_distribution.h +3 -2
- package/libcxx/include/__ranges/adjacent_transform_view.h +406 -0
- package/libcxx/include/__ranges/adjacent_view.h +419 -0
- package/libcxx/include/__ranges/as_rvalue_view.h +9 -9
- package/libcxx/include/__ranges/chunk_by_view.h +6 -6
- package/libcxx/include/__ranges/common_view.h +7 -7
- package/libcxx/include/__ranges/drop_view.h +8 -8
- package/libcxx/include/__ranges/drop_while_view.h +5 -5
- package/libcxx/include/__ranges/elements_of.h +49 -0
- package/libcxx/include/__ranges/empty_view.h +5 -5
- package/libcxx/include/__ranges/filter_view.h +10 -10
- package/libcxx/include/__ranges/iota_view.h +41 -22
- package/libcxx/include/__ranges/owning_view.h +15 -15
- package/libcxx/include/__ranges/ref_view.h +6 -6
- package/libcxx/include/__ranges/repeat_view.h +17 -10
- package/libcxx/include/__ranges/single_view.h +8 -8
- package/libcxx/include/__ranges/take_view.h +9 -9
- package/libcxx/include/__ranges/transform_view.h +1 -2
- package/libcxx/include/__ranges/view_interface.h +10 -10
- package/libcxx/include/__ranges/zip_transform_view.h +357 -0
- package/libcxx/include/__ranges/zip_view.h +20 -20
- package/libcxx/include/__split_buffer +612 -240
- package/libcxx/include/__stop_token/atomic_unique_lock.h +1 -1
- package/libcxx/include/__stop_token/stop_callback.h +2 -2
- package/libcxx/include/__stop_token/stop_source.h +1 -1
- package/libcxx/include/__stop_token/stop_state.h +4 -4
- package/libcxx/include/__stop_token/stop_token.h +1 -1
- package/libcxx/include/__string/char_traits.h +51 -31
- package/libcxx/include/__string/constexpr_c_functions.h +5 -5
- package/libcxx/include/__support/xlocale/__strtonum_fallback.h +0 -8
- package/libcxx/include/__system_error/error_category.h +8 -8
- package/libcxx/include/__system_error/error_code.h +5 -5
- package/libcxx/include/__system_error/error_condition.h +4 -4
- package/libcxx/include/__system_error/system_error.h +1 -1
- package/libcxx/include/__thread/id.h +1 -1
- package/libcxx/include/__thread/jthread.h +1 -1
- package/libcxx/include/__thread/poll_with_backoff.h +27 -8
- package/libcxx/include/__thread/support/c11.h +8 -8
- package/libcxx/include/__thread/support/pthread.h +8 -8
- package/libcxx/include/__thread/support/windows.h +8 -8
- package/libcxx/include/__thread/thread.h +13 -8
- package/libcxx/include/__thread/timed_backoff_policy.h +3 -2
- package/libcxx/include/__tree +849 -701
- package/libcxx/include/__tuple/sfinae_helpers.h +1 -44
- package/libcxx/include/__tuple/tuple_element.h +0 -12
- package/libcxx/include/__tuple/tuple_size.h +0 -4
- package/libcxx/include/__tuple/tuple_transform.h +45 -0
- package/libcxx/include/__type_traits/aligned_storage.h +13 -40
- package/libcxx/include/__type_traits/desugars_to.h +4 -0
- package/libcxx/include/__type_traits/invoke.h +8 -0
- package/libcxx/include/__type_traits/is_allocator.h +6 -7
- package/libcxx/include/__type_traits/is_array.h +26 -0
- package/libcxx/include/__type_traits/is_equality_comparable.h +16 -21
- package/libcxx/include/__type_traits/is_final.h +1 -1
- package/libcxx/include/__type_traits/is_floating_point.h +7 -6
- package/libcxx/include/__type_traits/is_generic_transparent_comparator.h +30 -0
- package/libcxx/include/__type_traits/is_specialization.h +2 -6
- package/libcxx/include/__type_traits/is_within_lifetime.h +29 -0
- package/libcxx/include/__type_traits/make_transparent.h +52 -0
- package/libcxx/include/__type_traits/reference_constructs_from_temporary.h +1 -7
- package/libcxx/include/__type_traits/reference_converts_from_temporary.h +1 -1
- package/libcxx/include/__utility/cmp.h +19 -7
- package/libcxx/include/__utility/default_three_way_comparator.h +70 -0
- package/libcxx/include/__utility/in_place.h +1 -1
- package/libcxx/include/__utility/integer_sequence.h +56 -41
- package/libcxx/include/__utility/lazy_synth_three_way_comparator.h +120 -0
- package/libcxx/include/__utility/pair.h +22 -25
- package/libcxx/include/__utility/scope_guard.h +2 -0
- package/libcxx/include/__utility/try_key_extraction.h +114 -0
- package/libcxx/include/__vector/vector.h +187 -160
- package/libcxx/include/__vector/vector_bool.h +76 -83
- package/libcxx/include/any +118 -155
- package/libcxx/include/array +88 -56
- package/libcxx/include/atomic +2 -0
- package/libcxx/include/barrier +20 -24
- package/libcxx/include/bitset +49 -30
- package/libcxx/include/ccomplex +3 -11
- package/libcxx/include/chrono +47 -0
- package/libcxx/include/ciso646 +3 -6
- package/libcxx/include/complex +77 -65
- package/libcxx/include/complex.h +10 -10
- package/libcxx/include/condition_variable +3 -3
- package/libcxx/include/cstdalign +3 -10
- package/libcxx/include/cstdbool +3 -10
- package/libcxx/include/ctgmath +2 -11
- package/libcxx/include/ctype.h +24 -24
- package/libcxx/include/cwchar +2 -2
- package/libcxx/include/deque +109 -225
- package/libcxx/include/errno.h +269 -269
- package/libcxx/include/exception +4 -1
- package/libcxx/include/ext/hash_map +7 -48
- package/libcxx/include/ext/hash_set +2 -8
- package/libcxx/include/fenv.h +43 -43
- package/libcxx/include/flat_map +663 -11
- package/libcxx/include/flat_set +543 -8
- package/libcxx/include/float.h +16 -16
- package/libcxx/include/forward_list +33 -53
- package/libcxx/include/fstream +57 -42
- package/libcxx/include/future +41 -51
- package/libcxx/include/initializer_list +9 -3
- package/libcxx/include/inttypes.h +16 -16
- package/libcxx/include/ios +28 -28
- package/libcxx/include/istream +19 -13
- package/libcxx/include/iterator +10 -0
- package/libcxx/include/latch +7 -5
- package/libcxx/include/limits +4 -4
- package/libcxx/include/list +61 -79
- package/libcxx/include/map +386 -274
- package/libcxx/include/math.h +19 -0
- package/libcxx/include/mdspan +1 -5
- package/libcxx/include/mutex +29 -19
- package/libcxx/include/optional +644 -149
- package/libcxx/include/print +9 -5
- package/libcxx/include/queue +39 -37
- package/libcxx/include/ranges +48 -0
- package/libcxx/include/regex +33 -31
- package/libcxx/include/scoped_allocator +16 -11
- package/libcxx/include/semaphore +15 -18
- package/libcxx/include/set +220 -192
- package/libcxx/include/shared_mutex +3 -8
- package/libcxx/include/span +53 -37
- package/libcxx/include/sstream +34 -28
- package/libcxx/include/stack +13 -15
- package/libcxx/include/stddef.h +10 -10
- package/libcxx/include/stdexcept +2 -2
- package/libcxx/include/stdio.h +20 -21
- package/libcxx/include/streambuf +59 -19
- package/libcxx/include/string +574 -573
- package/libcxx/include/string_view +113 -89
- package/libcxx/include/strstream +10 -10
- package/libcxx/include/syncstream +4 -4
- package/libcxx/include/tgmath.h +12 -12
- package/libcxx/include/tuple +242 -212
- package/libcxx/include/type_traits +8 -2
- package/libcxx/include/typeindex +5 -3
- package/libcxx/include/typeinfo +92 -89
- package/libcxx/include/unordered_map +179 -304
- package/libcxx/include/unordered_set +168 -195
- package/libcxx/include/utility +12 -0
- package/libcxx/include/valarray +106 -161
- package/libcxx/include/variant +25 -33
- package/libcxx/include/version +41 -24
- package/libcxx/include/wctype.h +29 -29
- package/libcxx/src/any.cpp +4 -0
- package/libcxx/src/atomic.cpp +365 -80
- package/libcxx/src/barrier.cpp +4 -3
- package/libcxx/src/charconv.cpp +6 -3
- package/libcxx/src/condition_variable_destructor.cpp +1 -1
- package/libcxx/src/error_category.cpp +3 -1
- package/libcxx/src/exception.cpp +2 -10
- package/libcxx/src/experimental/time_zone.cpp +1 -1
- package/libcxx/src/experimental/tzdb.cpp +4 -1
- package/libcxx/src/filesystem/error.h +4 -22
- package/libcxx/src/filesystem/format_string.h +9 -18
- package/libcxx/src/filesystem/int128_builtins.cpp +2 -0
- package/libcxx/src/filesystem/operations.cpp +2 -9
- package/libcxx/src/filesystem/path.cpp +3 -1
- package/libcxx/src/include/aligned_alloc.h +65 -0
- package/libcxx/src/include/config_elast.h +1 -1
- package/libcxx/src/include/from_chars_floating_point.h +11 -7
- package/libcxx/src/include/overridable_function.h +8 -10
- package/libcxx/src/iostream.cpp +56 -37
- package/libcxx/src/locale.cpp +213 -196
- package/libcxx/src/memory.cpp +12 -14
- package/libcxx/src/mutex_destructor.cpp +1 -1
- package/libcxx/src/new.cpp +5 -5
- package/libcxx/src/optional.cpp +4 -0
- package/libcxx/src/print.cpp +9 -1
- package/libcxx/src/random.cpp +0 -26
- package/libcxx/src/string.cpp +10 -25
- package/libcxx/src/support/runtime/exception_fallback.ipp +2 -0
- package/libcxx/src/support/runtime/exception_glibcxx.ipp +3 -0
- package/libcxx/src/support/runtime/exception_libcxxabi.ipp +6 -2
- package/libcxx/src/support/runtime/exception_libcxxrt.ipp +2 -0
- package/libcxx/src/support/runtime/exception_msvc.ipp +2 -0
- package/libcxx/src/support/runtime/exception_pointer_cxxabi.ipp +9 -10
- package/libcxx/src/support/runtime/exception_pointer_glibcxx.ipp +2 -0
- package/libcxx/src/support/runtime/exception_pointer_msvc.ipp +1 -0
- package/libcxx/src/support/runtime/exception_pointer_unimplemented.ipp +1 -0
- package/libcxx/src/support/win32/locale_win32.cpp +1 -1
- package/libcxx/src/system_error.cpp +2 -0
- package/libcxx/src/thread.cpp +1 -3
- package/libcxx/src/valarray.cpp +1 -2
- package/libcxx/src/vector.cpp +2 -2
- package/libcxxabi/include/__cxxabi_config.h +42 -23
- package/libcxxabi/src/cxa_exception.cpp +4 -2
- package/libcxxabi/src/cxa_exception.h +16 -14
- package/libcxxabi/src/cxa_personality.cpp +126 -9
- package/libcxxabi/src/cxa_thread_atexit.cpp +2 -1
- package/libcxxabi/src/demangle/DemangleConfig.h +4 -0
- package/libcxxabi/src/demangle/ItaniumDemangle.h +9 -6
- package/libcxxabi/src/demangle/Utility.h +21 -7
- package/libcxxabi/src/fallback_malloc.cpp +1 -1
- package/libcxxabi/src/private_typeinfo.cpp +6 -0
- package/libcxxabi/src/stdlib_new_delete.cpp +5 -5
- package/libtsan/LICENSE.TXT +311 -0
- package/libtsan/builtins/assembly.h +41 -8
- package/libtsan/interception/interception_win.cpp +4 -0
- package/libtsan/sanitizer_common/sanitizer_allocator_primary32.h +1 -0
- package/libtsan/sanitizer_common/sanitizer_allocator_primary64.h +18 -0
- package/libtsan/sanitizer_common/sanitizer_common.h +15 -2
- package/libtsan/sanitizer_common/sanitizer_common_interceptors.inc +30 -4
- package/libtsan/sanitizer_common/sanitizer_common_interceptors_ioctl.inc +4 -0
- package/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_aarch64.inc.S +2 -1
- package/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_i386.inc.S +2 -0
- package/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_x86_64.inc.S +2 -0
- package/libtsan/sanitizer_common/sanitizer_common_syscalls.inc +18 -0
- package/libtsan/sanitizer_common/sanitizer_file.cpp +40 -12
- package/libtsan/sanitizer_common/sanitizer_file.h +3 -0
- package/libtsan/sanitizer_common/sanitizer_flags.inc +7 -0
- package/libtsan/sanitizer_common/sanitizer_fuchsia.cpp +30 -3
- package/libtsan/sanitizer_common/sanitizer_haiku.cpp +2 -2
- package/libtsan/sanitizer_common/sanitizer_internal_defs.h +1 -1
- package/libtsan/sanitizer_common/sanitizer_libc.cpp +8 -0
- package/libtsan/sanitizer_common/sanitizer_libc.h +1 -0
- package/libtsan/sanitizer_common/sanitizer_linux.cpp +15 -7
- package/libtsan/sanitizer_common/sanitizer_linux.h +3 -3
- package/libtsan/sanitizer_common/sanitizer_linux_libcdep.cpp +1 -0
- package/libtsan/sanitizer_common/sanitizer_mac.cpp +255 -104
- package/libtsan/sanitizer_common/sanitizer_mac.h +5 -0
- package/libtsan/sanitizer_common/sanitizer_netbsd.cpp +2 -2
- package/libtsan/sanitizer_common/sanitizer_platform.h +27 -1
- package/libtsan/sanitizer_common/sanitizer_platform_interceptors.h +5 -4
- package/libtsan/sanitizer_common/sanitizer_platform_limits_posix.cpp +15 -17
- package/libtsan/sanitizer_common/sanitizer_platform_limits_posix.h +32 -6
- package/libtsan/sanitizer_common/sanitizer_posix.cpp +3 -12
- package/libtsan/sanitizer_common/sanitizer_posix.h +2 -1
- package/libtsan/sanitizer_common/sanitizer_posix_libcdep.cpp +19 -0
- package/libtsan/sanitizer_common/sanitizer_procmaps_mac.cpp +102 -37
- package/libtsan/sanitizer_common/sanitizer_redefine_builtins.h +1 -1
- package/libtsan/sanitizer_common/sanitizer_signal_interceptors.inc +40 -2
- package/libtsan/sanitizer_common/sanitizer_stoptheworld.h +1 -1
- package/libtsan/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cpp +83 -12
- package/libtsan/sanitizer_common/sanitizer_stoptheworld_mac.cpp +3 -3
- package/libtsan/sanitizer_common/sanitizer_stoptheworld_netbsd_libcdep.cpp +7 -7
- package/libtsan/sanitizer_common/sanitizer_stoptheworld_win.cpp +2 -2
- package/libtsan/sanitizer_common/sanitizer_symbolizer_internal.h +5 -1
- package/libtsan/sanitizer_common/sanitizer_symbolizer_libcdep.cpp +11 -1
- package/libtsan/sanitizer_common/sanitizer_symbolizer_mac.cpp +86 -29
- package/libtsan/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cpp +27 -16
- package/libtsan/sanitizer_common/sanitizer_thread_registry.cpp +5 -4
- package/libtsan/sanitizer_common/sanitizer_thread_registry.h +4 -4
- package/libtsan/sanitizer_common/sanitizer_win.cpp +1 -3
- package/libtsan/tsan_debugging.cpp +2 -2
- package/libtsan/tsan_flags.cpp +37 -0
- package/libtsan/tsan_flags.h +8 -0
- package/libtsan/tsan_flags.inc +12 -0
- package/libtsan/tsan_interceptors.h +9 -1
- package/libtsan/tsan_interceptors_mac.cpp +19 -0
- package/libtsan/tsan_interceptors_posix.cpp +78 -32
- package/libtsan/tsan_interface.h +3 -3
- package/libtsan/tsan_interface_ann.cpp +23 -9
- package/libtsan/tsan_mman.cpp +18 -4
- package/libtsan/tsan_platform.h +44 -7
- package/libtsan/tsan_platform_linux.cpp +42 -14
- package/libtsan/tsan_platform_mac.cpp +16 -3
- package/libtsan/tsan_report.h +14 -1
- package/libtsan/tsan_rtl.cpp +14 -0
- package/libtsan/tsan_rtl.h +7 -2
- package/libtsan/tsan_rtl_aarch64.S +3 -5
- package/libtsan/tsan_rtl_access.cpp +8 -3
- package/libtsan/tsan_rtl_amd64.S +2 -0
- package/libtsan/tsan_rtl_mutex.cpp +94 -49
- package/libtsan/tsan_rtl_report.cpp +132 -65
- package/libtsan/tsan_rtl_thread.cpp +31 -9
- package/libtsan/tsan_symbolize.cpp +1 -1
- package/libtsan/tsan_symbolize.h +1 -1
- package/libtsan/tsan_trace.h +1 -1
- package/libunwind/include/__libunwind_config.h +11 -2
- package/libunwind/include/libunwind.h +117 -11
- package/libunwind/include/unwind_arm_ehabi.h +4 -1
- package/libunwind/src/AddressSpace.hpp +40 -19
- package/libunwind/src/CompactUnwinder.hpp +16 -5
- package/libunwind/src/DwarfInstructions.hpp +24 -13
- package/libunwind/src/DwarfParser.hpp +60 -22
- package/libunwind/src/EHHeaderParser.hpp +7 -4
- package/libunwind/src/Registers.hpp +226 -22
- package/libunwind/src/Unwind-seh.cpp +6 -7
- package/libunwind/src/Unwind-wasm.c +7 -7
- package/libunwind/src/UnwindCursor.hpp +167 -49
- package/libunwind/src/UnwindLevel1.c +46 -17
- package/libunwind/src/UnwindRegistersRestore.S +46 -5
- package/libunwind/src/UnwindRegistersSave.S +86 -2
- package/libunwind/src/assembly.h +5 -1
- package/libunwind/src/config.h +9 -0
- package/libunwind/src/gcc_personality_v0.c +79 -6
- package/libunwind/src/libunwind.cpp +104 -4
- package/libunwind/src/libunwind_ext.h +7 -1
- package/libunwind/src/shadow_stack_unwind.h +2 -2
- package/lldb/pretty_printers.py +948 -0
- package/package.json +1 -1
- package/std/Build/Step/Compile.zig +18 -19
- package/std/Build/Step/Run.zig +13 -6
- package/std/Build/Step.zig +0 -3
- package/std/Io/Threaded.zig +3 -0
- package/std/Target/aarch64.zig +620 -77
- package/std/Target/amdgcn.zig +421 -21
- package/std/Target/arm.zig +40 -6
- package/std/Target/bpf.zig +6 -0
- package/std/Target/hexagon.zig +41 -6
- package/std/Target/loongarch.zig +18 -0
- package/std/Target/mips.zig +6 -0
- package/std/Target/nvptx.zig +58 -35
- package/std/Target/powerpc.zig +27 -19
- package/std/Target/riscv.zig +415 -177
- package/std/Target/sparc.zig +17 -0
- package/std/Target/wasm.zig +7 -0
- package/std/Target/x86.zig +200 -31
- package/std/Target/xtensa.zig +65 -0
- package/std/Target.zig +11 -2
- package/std/c.zig +7 -0
- package/std/debug/Dwarf.zig +14 -11
- package/std/debug/Pdb.zig +24 -16
- package/std/hash/xxhash.zig +0 -6
- package/std/math/log10.zig +0 -2
- package/std/math/modf.zig +0 -1
- package/std/mem.zig +1 -2
- package/std/os/linux/syscalls.zig +26 -1
- package/std/os/linux/x86.zig +2 -2
- package/std/os/windows.zig +130 -1
- package/std/simd.zig +4 -21
- package/std/start.zig +4 -3
- package/std/zig/Ast.zig +5 -7
- package/std/zig/AstGen.zig +20 -14
- package/std/zig/ErrorBundle.zig +6 -2
- package/std/zig/ZonGen.zig +13 -21
- package/std/zig/llvm/Builder.zig +2 -2
- package/std/zig/system/arm.zig +56 -2
- package/std/zig/system/windows.zig +34 -1
- package/std/zig/system/x86.zig +60 -16
- package/std/zig/system.zig +0 -10
- package/include/amxbf16transposeintrin.h +0 -94
- package/include/amxcomplextransposeintrin.h +0 -303
- package/include/amxfp16transposeintrin.h +0 -94
- package/include/amxmovrstransposeintrin.h +0 -200
- package/include/amxtf32transposeintrin.h +0 -105
- package/include/amxtransposeintrin.h +0 -248
- package/libc/include/hexagon-linux-any/asm/signal.h +0 -29
- package/libc/include/s390x-linux-any/asm/tape390.h +0 -103
- package/libtsan/sanitizer_common/sanitizer_coverage_interface.inc +0 -43
- package/std/Build/Step/CheckObject.zig +0 -2764
|
@@ -37,13 +37,13 @@ struct _Unwind_LandingPadContext {
|
|
|
37
37
|
// function
|
|
38
38
|
thread_local struct _Unwind_LandingPadContext __wasm_lpad_context;
|
|
39
39
|
|
|
40
|
-
/// Calls to this function
|
|
40
|
+
/// Calls to this function are in landing pads in compiler-generated user code.
|
|
41
41
|
/// In other EH schemes, stack unwinding is done by libunwind library, which
|
|
42
|
-
/// calls the personality function for each
|
|
43
|
-
///
|
|
44
|
-
/// personality function cannot be called from there. So the compiler inserts
|
|
45
|
-
///
|
|
46
|
-
///
|
|
42
|
+
/// calls the personality function for each frame it lands. On the other hand,
|
|
43
|
+
/// WebAssembly stack unwinding process is performed by a VM, and the
|
|
44
|
+
/// personality function cannot be called from there. So the compiler inserts a
|
|
45
|
+
/// call to this function in landing pads in the user code, which in turn calls
|
|
46
|
+
/// the personality function.
|
|
47
47
|
_Unwind_Reason_Code _Unwind_CallPersonality(void *exception_ptr) {
|
|
48
48
|
struct _Unwind_Exception *exception_object =
|
|
49
49
|
(struct _Unwind_Exception *)exception_ptr;
|
|
@@ -92,7 +92,7 @@ _LIBUNWIND_EXPORT void _Unwind_SetGR(struct _Unwind_Context *context, int index,
|
|
|
92
92
|
|
|
93
93
|
/// Called by personality handler to get instruction pointer.
|
|
94
94
|
_LIBUNWIND_EXPORT uintptr_t _Unwind_GetIP(struct _Unwind_Context *context) {
|
|
95
|
-
// The result will be used as
|
|
95
|
+
// The result will be used as a 1-based index after decrementing 1, so we
|
|
96
96
|
// increment 2 here
|
|
97
97
|
uintptr_t result =
|
|
98
98
|
((struct _Unwind_LandingPadContext *)context)->lpad_index + 2;
|
|
@@ -41,7 +41,8 @@
|
|
|
41
41
|
#define _LIBUNWIND_CHECK_LINUX_SIGRETURN 1
|
|
42
42
|
#endif
|
|
43
43
|
|
|
44
|
-
#if defined(_LIBUNWIND_TARGET_HAIKU) &&
|
|
44
|
+
#if defined(_LIBUNWIND_TARGET_HAIKU) && \
|
|
45
|
+
(defined(_LIBUNWIND_TARGET_I386) || defined(_LIBUNWIND_TARGET_X86_64))
|
|
45
46
|
#include <OS.h>
|
|
46
47
|
#include <signal.h>
|
|
47
48
|
#define _LIBUNWIND_CHECK_HAIKU_SIGRETURN 1
|
|
@@ -120,7 +121,9 @@ class _LIBUNWIND_HIDDEN DwarfFDECache {
|
|
|
120
121
|
typedef typename A::pint_t pint_t;
|
|
121
122
|
public:
|
|
122
123
|
static constexpr pint_t kSearchAll = static_cast<pint_t>(-1);
|
|
123
|
-
|
|
124
|
+
template <typename R>
|
|
125
|
+
static pint_t findFDE(pint_t mh, typename R::link_hardened_reg_arg_t pc);
|
|
126
|
+
|
|
124
127
|
static void add(pint_t mh, pint_t ip_start, pint_t ip_end, pint_t fde);
|
|
125
128
|
static void removeAllIn(pint_t mh);
|
|
126
129
|
static void iterateCacheEntries(void (*func)(unw_word_t ip_start,
|
|
@@ -173,7 +176,9 @@ bool DwarfFDECache<A>::_registeredForDyldUnloads = false;
|
|
|
173
176
|
#endif
|
|
174
177
|
|
|
175
178
|
template <typename A>
|
|
176
|
-
|
|
179
|
+
template <typename R>
|
|
180
|
+
typename DwarfFDECache<A>::pint_t
|
|
181
|
+
DwarfFDECache<A>::findFDE(pint_t mh, typename R::link_hardened_reg_arg_t pc) {
|
|
177
182
|
pint_t result = 0;
|
|
178
183
|
_LIBUNWIND_LOG_IF_FALSE(_lock.lock_shared());
|
|
179
184
|
for (entry *p = _buffer; p < _bufferUsed; ++p) {
|
|
@@ -471,7 +476,9 @@ public:
|
|
|
471
476
|
virtual void getInfo(unw_proc_info_t *) {
|
|
472
477
|
_LIBUNWIND_ABORT("getInfo not implemented");
|
|
473
478
|
}
|
|
474
|
-
virtual void jumpto() {
|
|
479
|
+
_LIBUNWIND_TRACE_NO_INLINE virtual void jumpto() {
|
|
480
|
+
_LIBUNWIND_ABORT("jumpto not implemented");
|
|
481
|
+
}
|
|
475
482
|
virtual bool isSignalFrame() {
|
|
476
483
|
_LIBUNWIND_ABORT("isSignalFrame not implemented");
|
|
477
484
|
}
|
|
@@ -488,6 +495,12 @@ public:
|
|
|
488
495
|
virtual void saveVFPAsX() { _LIBUNWIND_ABORT("saveVFPAsX not implemented"); }
|
|
489
496
|
#endif
|
|
490
497
|
|
|
498
|
+
#ifdef _LIBUNWIND_TRACE_RET_INJECT
|
|
499
|
+
virtual void setWalkedFrames(unsigned) {
|
|
500
|
+
_LIBUNWIND_ABORT("setWalkedFrames not implemented");
|
|
501
|
+
}
|
|
502
|
+
#endif
|
|
503
|
+
|
|
491
504
|
#ifdef _AIX
|
|
492
505
|
virtual uintptr_t getDataRelBase() {
|
|
493
506
|
_LIBUNWIND_ABORT("getDataRelBase not implemented");
|
|
@@ -964,7 +977,8 @@ public:
|
|
|
964
977
|
virtual void setFloatReg(int, unw_fpreg_t);
|
|
965
978
|
virtual int step(bool stage2 = false);
|
|
966
979
|
virtual void getInfo(unw_proc_info_t *);
|
|
967
|
-
|
|
980
|
+
_LIBUNWIND_TRACE_NO_INLINE
|
|
981
|
+
virtual void jumpto();
|
|
968
982
|
virtual bool isSignalFrame();
|
|
969
983
|
virtual bool getFunctionName(char *buf, size_t len, unw_word_t *off);
|
|
970
984
|
virtual void setInfoBasedOnIPRegister(bool isReturnAddress = false);
|
|
@@ -973,6 +987,10 @@ public:
|
|
|
973
987
|
virtual void saveVFPAsX();
|
|
974
988
|
#endif
|
|
975
989
|
|
|
990
|
+
#ifdef _LIBUNWIND_TRACE_RET_INJECT
|
|
991
|
+
virtual void setWalkedFrames(unsigned);
|
|
992
|
+
#endif
|
|
993
|
+
|
|
976
994
|
#ifdef _AIX
|
|
977
995
|
virtual uintptr_t getDataRelBase();
|
|
978
996
|
#endif
|
|
@@ -1045,19 +1063,28 @@ private:
|
|
|
1045
1063
|
#if defined(_LIBUNWIND_SUPPORT_DWARF_UNWIND)
|
|
1046
1064
|
bool getInfoFromFdeCie(const typename CFI_Parser<A>::FDE_Info &fdeInfo,
|
|
1047
1065
|
const typename CFI_Parser<A>::CIE_Info &cieInfo,
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1066
|
+
typename R::link_hardened_reg_arg_t pc,
|
|
1067
|
+
uintptr_t dso_base);
|
|
1068
|
+
bool getInfoFromDwarfSection(typename R::link_hardened_reg_arg_t pc,
|
|
1069
|
+
const UnwindInfoSections §s,
|
|
1070
|
+
uint32_t fdeSectionOffsetHint = 0);
|
|
1051
1071
|
int stepWithDwarfFDE(bool stage2) {
|
|
1072
|
+
#if defined(_LIBUNWIND_TARGET_AARCH64_AUTHENTICATED_UNWINDING)
|
|
1073
|
+
typename R::reg_t rawPC = this->getReg(UNW_REG_IP);
|
|
1074
|
+
typename R::link_reg_t pc;
|
|
1075
|
+
_registers.loadAndAuthenticateLinkRegister(rawPC, &pc);
|
|
1076
|
+
#else
|
|
1077
|
+
typename R::link_reg_t pc = this->getReg(UNW_REG_IP);
|
|
1078
|
+
#endif
|
|
1052
1079
|
return DwarfInstructions<A, R>::stepWithDwarf(
|
|
1053
|
-
_addressSpace, (pint_t)
|
|
1054
|
-
|
|
1080
|
+
_addressSpace, pc, (pint_t)_info.unwind_info, _registers,
|
|
1081
|
+
_isSignalFrame, stage2);
|
|
1055
1082
|
}
|
|
1056
1083
|
#endif
|
|
1057
1084
|
|
|
1058
1085
|
#if defined(_LIBUNWIND_SUPPORT_COMPACT_UNWIND)
|
|
1059
|
-
bool getInfoFromCompactEncodingSection(
|
|
1060
|
-
|
|
1086
|
+
bool getInfoFromCompactEncodingSection(typename R::link_hardened_reg_arg_t pc,
|
|
1087
|
+
const UnwindInfoSections §s);
|
|
1061
1088
|
int stepWithCompactEncoding(bool stage2 = false) {
|
|
1062
1089
|
#if defined(_LIBUNWIND_SUPPORT_DWARF_UNWIND)
|
|
1063
1090
|
if ( compactSaysUseDwarf() )
|
|
@@ -1344,9 +1371,12 @@ private:
|
|
|
1344
1371
|
bool _unwindInfoMissing;
|
|
1345
1372
|
bool _isSignalFrame;
|
|
1346
1373
|
#if defined(_LIBUNWIND_CHECK_LINUX_SIGRETURN) || \
|
|
1347
|
-
defined(
|
|
1374
|
+
defined(_LIBUNWIND_CHECK_HAIKU_SIGRETURN)
|
|
1348
1375
|
bool _isSigReturn = false;
|
|
1349
1376
|
#endif
|
|
1377
|
+
#ifdef _LIBUNWIND_TRACE_RET_INJECT
|
|
1378
|
+
uint32_t _walkedFrames;
|
|
1379
|
+
#endif
|
|
1350
1380
|
};
|
|
1351
1381
|
|
|
1352
1382
|
|
|
@@ -1358,13 +1388,13 @@ UnwindCursor<A, R>::UnwindCursor(unw_context_t *context, A &as)
|
|
|
1358
1388
|
"UnwindCursor<> does not fit in unw_cursor_t");
|
|
1359
1389
|
static_assert((alignof(UnwindCursor<A, R>) <= alignof(unw_cursor_t)),
|
|
1360
1390
|
"UnwindCursor<> requires more alignment than unw_cursor_t");
|
|
1361
|
-
memset(&_info, 0, sizeof(_info));
|
|
1391
|
+
memset(static_cast<void *>(&_info), 0, sizeof(_info));
|
|
1362
1392
|
}
|
|
1363
1393
|
|
|
1364
1394
|
template <typename A, typename R>
|
|
1365
1395
|
UnwindCursor<A, R>::UnwindCursor(A &as, void *)
|
|
1366
1396
|
: _addressSpace(as), _unwindInfoMissing(false), _isSignalFrame(false) {
|
|
1367
|
-
memset(&_info, 0, sizeof(_info));
|
|
1397
|
+
memset(static_cast<void *>(&_info), 0, sizeof(_info));
|
|
1368
1398
|
// FIXME
|
|
1369
1399
|
// fill in _registers from thread arg
|
|
1370
1400
|
}
|
|
@@ -1401,7 +1431,46 @@ void UnwindCursor<A, R>::setFloatReg(int regNum, unw_fpreg_t value) {
|
|
|
1401
1431
|
}
|
|
1402
1432
|
|
|
1403
1433
|
template <typename A, typename R> void UnwindCursor<A, R>::jumpto() {
|
|
1434
|
+
#ifdef _LIBUNWIND_TRACE_RET_INJECT
|
|
1435
|
+
/*
|
|
1436
|
+
|
|
1437
|
+
The value of `_walkedFrames` is computed in `unwind_phase2` and represents the
|
|
1438
|
+
number of frames walked starting `unwind_phase2` to get to the landing pad.
|
|
1439
|
+
|
|
1440
|
+
```
|
|
1441
|
+
// uc is initialized by __unw_getcontext in the parent frame.
|
|
1442
|
+
// The first stack frame walked is unwind_phase2.
|
|
1443
|
+
unsigned framesWalked = 1;
|
|
1444
|
+
```
|
|
1445
|
+
|
|
1446
|
+
To that, we need to add the number of function calls in libunwind between
|
|
1447
|
+
`unwind_phase2` & `__libunwind_Registers_arm64_jumpto` which performs the long
|
|
1448
|
+
jump, to rebalance the execution flow.
|
|
1449
|
+
|
|
1450
|
+
```
|
|
1451
|
+
frame #0: libunwind.1.dylib`__libunwind_Registers_arm64_jumpto at UnwindRegistersRestore.S:646
|
|
1452
|
+
frame #1: libunwind.1.dylib`libunwind::Registers_arm64::returnto at Registers.hpp:2291:3
|
|
1453
|
+
frame #2: libunwind.1.dylib`libunwind::UnwindCursor<libunwind::LocalAddressSpace, libunwind::Registers_arm64>::jumpto at UnwindCursor.hpp:1474:14
|
|
1454
|
+
frame #3: libunwind.1.dylib`__unw_resume at libunwind.cpp:375:7
|
|
1455
|
+
frame #4: libunwind.1.dylib`__unw_resume_with_frames_walked at libunwind.cpp:363:10
|
|
1456
|
+
frame #5: libunwind.1.dylib`unwind_phase2 at UnwindLevel1.c:328:9
|
|
1457
|
+
frame #6: libunwind.1.dylib`_Unwind_RaiseException at UnwindLevel1.c:480:10
|
|
1458
|
+
frame #7: libc++abi.dylib`__cxa_throw at cxa_exception.cpp:295:5
|
|
1459
|
+
...
|
|
1460
|
+
```
|
|
1461
|
+
|
|
1462
|
+
If we look at the backtrace from `__libunwind_Registers_arm64_jumpto`, we see
|
|
1463
|
+
there are 5 frames on the stack to reach `unwind_phase2`. However, only 4 of
|
|
1464
|
+
them will never return, since `__libunwind_Registers_arm64_jumpto` returns
|
|
1465
|
+
back to the landing pad, so we need to subtract 1 to the number of
|
|
1466
|
+
`_EXTRA_LIBUNWIND_FRAMES_WALKED`.
|
|
1467
|
+
*/
|
|
1468
|
+
|
|
1469
|
+
static constexpr size_t _EXTRA_LIBUNWIND_FRAMES_WALKED = 5 - 1;
|
|
1470
|
+
_registers.returnto(_walkedFrames + _EXTRA_LIBUNWIND_FRAMES_WALKED);
|
|
1471
|
+
#else
|
|
1404
1472
|
_registers.jumpto();
|
|
1473
|
+
#endif
|
|
1405
1474
|
}
|
|
1406
1475
|
|
|
1407
1476
|
#ifdef __arm__
|
|
@@ -1410,6 +1479,13 @@ template <typename A, typename R> void UnwindCursor<A, R>::saveVFPAsX() {
|
|
|
1410
1479
|
}
|
|
1411
1480
|
#endif
|
|
1412
1481
|
|
|
1482
|
+
#ifdef _LIBUNWIND_TRACE_RET_INJECT
|
|
1483
|
+
template <typename A, typename R>
|
|
1484
|
+
void UnwindCursor<A, R>::setWalkedFrames(unsigned walkedFrames) {
|
|
1485
|
+
_walkedFrames = walkedFrames;
|
|
1486
|
+
}
|
|
1487
|
+
#endif
|
|
1488
|
+
|
|
1413
1489
|
#ifdef _AIX
|
|
1414
1490
|
template <typename A, typename R>
|
|
1415
1491
|
uintptr_t UnwindCursor<A, R>::getDataRelBase() {
|
|
@@ -1658,11 +1734,11 @@ bool UnwindCursor<A, R>::getInfoFromEHABISection(
|
|
|
1658
1734
|
template <typename A, typename R>
|
|
1659
1735
|
bool UnwindCursor<A, R>::getInfoFromFdeCie(
|
|
1660
1736
|
const typename CFI_Parser<A>::FDE_Info &fdeInfo,
|
|
1661
|
-
const typename CFI_Parser<A>::CIE_Info &cieInfo,
|
|
1662
|
-
uintptr_t dso_base) {
|
|
1737
|
+
const typename CFI_Parser<A>::CIE_Info &cieInfo,
|
|
1738
|
+
typename R::link_hardened_reg_arg_t pc, uintptr_t dso_base) {
|
|
1663
1739
|
typename CFI_Parser<A>::PrologInfo prolog;
|
|
1664
|
-
if (CFI_Parser<A>::parseFDEInstructions(
|
|
1665
|
-
|
|
1740
|
+
if (CFI_Parser<A>::template parseFDEInstructions<R>(
|
|
1741
|
+
_addressSpace, fdeInfo, cieInfo, pc, R::getArch(), &prolog)) {
|
|
1666
1742
|
// Save off parsed FDE info
|
|
1667
1743
|
_info.start_ip = fdeInfo.pcStart;
|
|
1668
1744
|
_info.end_ip = fdeInfo.pcEnd;
|
|
@@ -1682,43 +1758,42 @@ bool UnwindCursor<A, R>::getInfoFromFdeCie(
|
|
|
1682
1758
|
}
|
|
1683
1759
|
|
|
1684
1760
|
template <typename A, typename R>
|
|
1685
|
-
bool UnwindCursor<A, R>::getInfoFromDwarfSection(
|
|
1686
|
-
|
|
1687
|
-
|
|
1761
|
+
bool UnwindCursor<A, R>::getInfoFromDwarfSection(
|
|
1762
|
+
typename R::link_hardened_reg_arg_t pc, const UnwindInfoSections §s,
|
|
1763
|
+
uint32_t fdeSectionOffsetHint) {
|
|
1688
1764
|
typename CFI_Parser<A>::FDE_Info fdeInfo;
|
|
1689
1765
|
typename CFI_Parser<A>::CIE_Info cieInfo;
|
|
1690
1766
|
bool foundFDE = false;
|
|
1691
1767
|
bool foundInCache = false;
|
|
1692
1768
|
// If compact encoding table gave offset into dwarf section, go directly there
|
|
1693
1769
|
if (fdeSectionOffsetHint != 0) {
|
|
1694
|
-
foundFDE = CFI_Parser<A>::findFDE(
|
|
1695
|
-
|
|
1696
|
-
|
|
1697
|
-
&fdeInfo, &cieInfo);
|
|
1770
|
+
foundFDE = CFI_Parser<A>::template findFDE<R>(
|
|
1771
|
+
_addressSpace, pc, sects.dwarf_section, sects.dwarf_section_length,
|
|
1772
|
+
sects.dwarf_section + fdeSectionOffsetHint, &fdeInfo, &cieInfo);
|
|
1698
1773
|
}
|
|
1699
1774
|
#if defined(_LIBUNWIND_SUPPORT_DWARF_INDEX)
|
|
1700
1775
|
if (!foundFDE && (sects.dwarf_index_section != 0)) {
|
|
1701
|
-
foundFDE = EHHeaderParser<A>::findFDE(
|
|
1776
|
+
foundFDE = EHHeaderParser<A>::template findFDE<R>(
|
|
1702
1777
|
_addressSpace, pc, sects.dwarf_index_section,
|
|
1703
1778
|
(uint32_t)sects.dwarf_index_section_length, &fdeInfo, &cieInfo);
|
|
1704
1779
|
}
|
|
1705
1780
|
#endif
|
|
1706
1781
|
if (!foundFDE) {
|
|
1707
1782
|
// otherwise, search cache of previously found FDEs.
|
|
1708
|
-
pint_t cachedFDE =
|
|
1783
|
+
pint_t cachedFDE =
|
|
1784
|
+
DwarfFDECache<A>::template findFDE<R>(sects.dso_base, pc);
|
|
1709
1785
|
if (cachedFDE != 0) {
|
|
1710
|
-
foundFDE =
|
|
1711
|
-
|
|
1712
|
-
|
|
1713
|
-
cachedFDE, &fdeInfo, &cieInfo);
|
|
1786
|
+
foundFDE = CFI_Parser<A>::template findFDE<R>(
|
|
1787
|
+
_addressSpace, pc, sects.dwarf_section, sects.dwarf_section_length,
|
|
1788
|
+
cachedFDE, &fdeInfo, &cieInfo);
|
|
1714
1789
|
foundInCache = foundFDE;
|
|
1715
1790
|
}
|
|
1716
1791
|
}
|
|
1717
1792
|
if (!foundFDE) {
|
|
1718
1793
|
// Still not found, do full scan of __eh_frame section.
|
|
1719
|
-
foundFDE = CFI_Parser<A>::findFDE(
|
|
1720
|
-
|
|
1721
|
-
|
|
1794
|
+
foundFDE = CFI_Parser<A>::template findFDE<R>(
|
|
1795
|
+
_addressSpace, pc, sects.dwarf_section, sects.dwarf_section_length, 0,
|
|
1796
|
+
&fdeInfo, &cieInfo);
|
|
1722
1797
|
}
|
|
1723
1798
|
if (foundFDE) {
|
|
1724
1799
|
if (getInfoFromFdeCie(fdeInfo, cieInfo, pc, sects.dso_base)) {
|
|
@@ -1742,8 +1817,8 @@ bool UnwindCursor<A, R>::getInfoFromDwarfSection(pint_t pc,
|
|
|
1742
1817
|
|
|
1743
1818
|
#if defined(_LIBUNWIND_SUPPORT_COMPACT_UNWIND)
|
|
1744
1819
|
template <typename A, typename R>
|
|
1745
|
-
bool UnwindCursor<A, R>::getInfoFromCompactEncodingSection(
|
|
1746
|
-
|
|
1820
|
+
bool UnwindCursor<A, R>::getInfoFromCompactEncodingSection(
|
|
1821
|
+
typename R::link_hardened_reg_arg_t pc, const UnwindInfoSections §s) {
|
|
1747
1822
|
const bool log = false;
|
|
1748
1823
|
if (log)
|
|
1749
1824
|
fprintf(stderr, "getInfoFromCompactEncodingSection(pc=0x%llX, mh=0x%llX)\n",
|
|
@@ -1974,6 +2049,16 @@ bool UnwindCursor<A, R>::getInfoFromCompactEncodingSection(pint_t pc,
|
|
|
1974
2049
|
personalityIndex * sizeof(uint32_t));
|
|
1975
2050
|
pint_t personalityPointer = sects.dso_base + (pint_t)personalityDelta;
|
|
1976
2051
|
personality = _addressSpace.getP(personalityPointer);
|
|
2052
|
+
#if defined(_LIBUNWIND_TARGET_AARCH64_AUTHENTICATED_UNWINDING)
|
|
2053
|
+
// The GOT for the personality function was signed address authenticated.
|
|
2054
|
+
// Resign it as a regular function pointer.
|
|
2055
|
+
const auto discriminator = ptrauth_blend_discriminator(
|
|
2056
|
+
&_info.handler, __ptrauth_unwind_upi_handler_disc);
|
|
2057
|
+
void *signedPtr = ptrauth_auth_and_resign(
|
|
2058
|
+
(void *)personality, ptrauth_key_function_pointer, personalityPointer,
|
|
2059
|
+
ptrauth_key_function_pointer, discriminator);
|
|
2060
|
+
personality = (__typeof(personality))signedPtr;
|
|
2061
|
+
#endif
|
|
1977
2062
|
if (log)
|
|
1978
2063
|
fprintf(stderr, "getInfoFromCompactEncodingSection(pc=0x%llX), "
|
|
1979
2064
|
"personalityDelta=0x%08X, personality=0x%08llX\n",
|
|
@@ -1987,7 +2072,11 @@ bool UnwindCursor<A, R>::getInfoFromCompactEncodingSection(pint_t pc,
|
|
|
1987
2072
|
_info.start_ip = funcStart;
|
|
1988
2073
|
_info.end_ip = funcEnd;
|
|
1989
2074
|
_info.lsda = lsda;
|
|
1990
|
-
|
|
2075
|
+
// We use memmove to copy the personality function as we have already manually
|
|
2076
|
+
// re-signed the pointer, and assigning directly will attempt to incorrectly
|
|
2077
|
+
// sign the already signed value.
|
|
2078
|
+
memmove(reinterpret_cast<void *>(&_info.handler),
|
|
2079
|
+
reinterpret_cast<void *>(&personality), sizeof(personality));
|
|
1991
2080
|
_info.gp = 0;
|
|
1992
2081
|
_info.flags = 0;
|
|
1993
2082
|
_info.format = encoding;
|
|
@@ -2640,11 +2729,19 @@ void UnwindCursor<A, R>::setInfoBasedOnIPRegister(bool isReturnAddress) {
|
|
|
2640
2729
|
_isSigReturn = false;
|
|
2641
2730
|
#endif
|
|
2642
2731
|
|
|
2643
|
-
|
|
2732
|
+
typename R::reg_t rawPC = this->getReg(UNW_REG_IP);
|
|
2733
|
+
|
|
2644
2734
|
#if defined(_LIBUNWIND_ARM_EHABI)
|
|
2645
2735
|
// Remove the thumb bit so the IP represents the actual instruction address.
|
|
2646
2736
|
// This matches the behaviour of _Unwind_GetIP on arm.
|
|
2647
|
-
|
|
2737
|
+
rawPC &= (pint_t)~0x1;
|
|
2738
|
+
#endif
|
|
2739
|
+
|
|
2740
|
+
typename R::link_reg_t pc;
|
|
2741
|
+
#if defined(_LIBUNWIND_TARGET_AARCH64_AUTHENTICATED_UNWINDING)
|
|
2742
|
+
_registers.loadAndAuthenticateLinkRegister(rawPC, &pc);
|
|
2743
|
+
#else
|
|
2744
|
+
pc = rawPC;
|
|
2648
2745
|
#endif
|
|
2649
2746
|
|
|
2650
2747
|
// Exit early if at the top of the stack.
|
|
@@ -2679,7 +2776,7 @@ void UnwindCursor<A, R>::setInfoBasedOnIPRegister(bool isReturnAddress) {
|
|
|
2679
2776
|
|
|
2680
2777
|
// Ask address space object to find unwind sections for this pc.
|
|
2681
2778
|
UnwindInfoSections sects;
|
|
2682
|
-
if (_addressSpace.findUnwindSections(pc, sects)) {
|
|
2779
|
+
if (_addressSpace.template findUnwindSections<R>(pc, sects)) {
|
|
2683
2780
|
#if defined(_LIBUNWIND_SUPPORT_COMPACT_UNWIND)
|
|
2684
2781
|
// If there is a compact unwind encoding table, look there first.
|
|
2685
2782
|
if (sects.compact_unwind_section != 0) {
|
|
@@ -2735,8 +2832,8 @@ void UnwindCursor<A, R>::setInfoBasedOnIPRegister(bool isReturnAddress) {
|
|
|
2735
2832
|
#if defined(_LIBUNWIND_SUPPORT_DWARF_UNWIND)
|
|
2736
2833
|
// There is no static unwind info for this pc. Look to see if an FDE was
|
|
2737
2834
|
// dynamically registered for it.
|
|
2738
|
-
pint_t cachedFDE =
|
|
2739
|
-
|
|
2835
|
+
pint_t cachedFDE =
|
|
2836
|
+
DwarfFDECache<A>::template findFDE<R>(DwarfFDECache<A>::kSearchAll, pc);
|
|
2740
2837
|
if (cachedFDE != 0) {
|
|
2741
2838
|
typename CFI_Parser<A>::FDE_Info fdeInfo;
|
|
2742
2839
|
typename CFI_Parser<A>::CIE_Info cieInfo;
|
|
@@ -2748,7 +2845,7 @@ void UnwindCursor<A, R>::setInfoBasedOnIPRegister(bool isReturnAddress) {
|
|
|
2748
2845
|
// Lastly, ask AddressSpace object about platform specific ways to locate
|
|
2749
2846
|
// other FDEs.
|
|
2750
2847
|
pint_t fde;
|
|
2751
|
-
if (_addressSpace.findOtherFDE(pc, fde)) {
|
|
2848
|
+
if (_addressSpace.template findOtherFDE<R>(pc, fde)) {
|
|
2752
2849
|
typename CFI_Parser<A>::FDE_Info fdeInfo;
|
|
2753
2850
|
typename CFI_Parser<A>::CIE_Info cieInfo;
|
|
2754
2851
|
if (!CFI_Parser<A>::decodeFDE(_addressSpace, fde, &fdeInfo, &cieInfo)) {
|
|
@@ -2772,6 +2869,21 @@ void UnwindCursor<A, R>::setInfoBasedOnIPRegister(bool isReturnAddress) {
|
|
|
2772
2869
|
|
|
2773
2870
|
#if defined(_LIBUNWIND_CHECK_LINUX_SIGRETURN) && \
|
|
2774
2871
|
defined(_LIBUNWIND_TARGET_AARCH64)
|
|
2872
|
+
|
|
2873
|
+
/*
|
|
2874
|
+
* The linux sigreturn restorer stub will always have the form:
|
|
2875
|
+
*
|
|
2876
|
+
* d2801168 movz x8, #0x8b
|
|
2877
|
+
* d4000001 svc #0x0
|
|
2878
|
+
*/
|
|
2879
|
+
#if defined(__AARCH64EB__)
|
|
2880
|
+
#define MOVZ_X8_8B 0x681180d2
|
|
2881
|
+
#define SVC_0 0x010000d4
|
|
2882
|
+
#else
|
|
2883
|
+
#define MOVZ_X8_8B 0xd2801168
|
|
2884
|
+
#define SVC_0 0xd4000001
|
|
2885
|
+
#endif
|
|
2886
|
+
|
|
2775
2887
|
template <typename A, typename R>
|
|
2776
2888
|
bool UnwindCursor<A, R>::setInfoForSigReturn(Registers_arm64 &) {
|
|
2777
2889
|
// Look for the sigreturn trampoline. The trampoline's body is two
|
|
@@ -2796,7 +2908,7 @@ bool UnwindCursor<A, R>::setInfoForSigReturn(Registers_arm64 &) {
|
|
|
2796
2908
|
return false;
|
|
2797
2909
|
auto *instructions = reinterpret_cast<const uint32_t *>(pc);
|
|
2798
2910
|
// Look for instructions: mov x8, #0x8b; svc #0x0
|
|
2799
|
-
if (instructions[0] !=
|
|
2911
|
+
if (instructions[0] != MOVZ_X8_8B || instructions[1] != SVC_0)
|
|
2800
2912
|
return false;
|
|
2801
2913
|
|
|
2802
2914
|
_info = {};
|
|
@@ -3188,16 +3300,22 @@ template <typename A, typename R> int UnwindCursor<A, R>::step(bool stage2) {
|
|
|
3188
3300
|
template <typename A, typename R>
|
|
3189
3301
|
void UnwindCursor<A, R>::getInfo(unw_proc_info_t *info) {
|
|
3190
3302
|
if (_unwindInfoMissing)
|
|
3191
|
-
memset(info, 0, sizeof(*info));
|
|
3303
|
+
memset(static_cast<void *>(info), 0, sizeof(*info));
|
|
3192
3304
|
else
|
|
3193
3305
|
*info = _info;
|
|
3194
3306
|
}
|
|
3195
3307
|
|
|
3196
3308
|
template <typename A, typename R>
|
|
3197
3309
|
bool UnwindCursor<A, R>::getFunctionName(char *buf, size_t bufLen,
|
|
3198
|
-
|
|
3199
|
-
|
|
3200
|
-
|
|
3310
|
+
unw_word_t *offset) {
|
|
3311
|
+
#if defined(_LIBUNWIND_TARGET_AARCH64_AUTHENTICATED_UNWINDING)
|
|
3312
|
+
typename R::reg_t rawPC = this->getReg(UNW_REG_IP);
|
|
3313
|
+
typename R::link_reg_t pc;
|
|
3314
|
+
_registers.loadAndAuthenticateLinkRegister(rawPC, &pc);
|
|
3315
|
+
#else
|
|
3316
|
+
typename R::link_reg_t pc = this->getReg(UNW_REG_IP);
|
|
3317
|
+
#endif
|
|
3318
|
+
return _addressSpace.template findFunctionName<R>(pc, buf, bufLen, offset);
|
|
3201
3319
|
}
|
|
3202
3320
|
|
|
3203
3321
|
#if defined(_LIBUNWIND_CHECK_LINUX_SIGRETURN)
|
|
@@ -48,16 +48,15 @@
|
|
|
48
48
|
// avoided when invoking the `jumpto()` function. To do this, we use inline
|
|
49
49
|
// assemblies to "goto" the `jumpto()` for these architectures.
|
|
50
50
|
#if !defined(_LIBUNWIND_USE_CET) && !defined(_LIBUNWIND_USE_GCS)
|
|
51
|
-
#define __unw_phase2_resume(cursor,
|
|
51
|
+
#define __unw_phase2_resume(cursor, payload) \
|
|
52
52
|
do { \
|
|
53
|
-
(
|
|
54
|
-
__unw_resume((cursor)); \
|
|
53
|
+
__unw_resume_with_frames_walked((cursor), (payload)); \
|
|
55
54
|
} while (0)
|
|
56
55
|
#elif defined(_LIBUNWIND_TARGET_I386)
|
|
57
56
|
#define __shstk_step_size (4)
|
|
58
|
-
#define __unw_phase2_resume(cursor,
|
|
57
|
+
#define __unw_phase2_resume(cursor, payload) \
|
|
59
58
|
do { \
|
|
60
|
-
_LIBUNWIND_POP_SHSTK_SSP((
|
|
59
|
+
_LIBUNWIND_POP_SHSTK_SSP((payload)); \
|
|
61
60
|
void *shstkRegContext = __libunwind_shstk_get_registers((cursor)); \
|
|
62
61
|
void *shstkJumpAddress = __libunwind_shstk_get_jump_target(); \
|
|
63
62
|
__asm__ volatile("push %%edi\n\t" \
|
|
@@ -67,9 +66,9 @@
|
|
|
67
66
|
} while (0)
|
|
68
67
|
#elif defined(_LIBUNWIND_TARGET_X86_64)
|
|
69
68
|
#define __shstk_step_size (8)
|
|
70
|
-
#define __unw_phase2_resume(cursor,
|
|
69
|
+
#define __unw_phase2_resume(cursor, payload) \
|
|
71
70
|
do { \
|
|
72
|
-
_LIBUNWIND_POP_SHSTK_SSP((
|
|
71
|
+
_LIBUNWIND_POP_SHSTK_SSP((payload)); \
|
|
73
72
|
void *shstkRegContext = __libunwind_shstk_get_registers((cursor)); \
|
|
74
73
|
void *shstkJumpAddress = __libunwind_shstk_get_jump_target(); \
|
|
75
74
|
__asm__ volatile("jmpq *%%rdx\n\t" ::"D"(shstkRegContext), \
|
|
@@ -77,19 +76,37 @@
|
|
|
77
76
|
} while (0)
|
|
78
77
|
#elif defined(_LIBUNWIND_TARGET_AARCH64)
|
|
79
78
|
#define __shstk_step_size (8)
|
|
80
|
-
#define __unw_phase2_resume(cursor,
|
|
79
|
+
#define __unw_phase2_resume(cursor, payload) \
|
|
81
80
|
do { \
|
|
82
|
-
_LIBUNWIND_POP_SHSTK_SSP((
|
|
81
|
+
_LIBUNWIND_POP_SHSTK_SSP((payload)); \
|
|
83
82
|
void *shstkRegContext = __libunwind_shstk_get_registers((cursor)); \
|
|
84
83
|
void *shstkJumpAddress = __libunwind_shstk_get_jump_target(); \
|
|
85
84
|
__asm__ volatile("mov x0, %0\n\t" \
|
|
85
|
+
"mov x1, #0\n\t" \
|
|
86
86
|
"br %1\n\t" \
|
|
87
87
|
: \
|
|
88
88
|
: "r"(shstkRegContext), "r"(shstkJumpAddress) \
|
|
89
|
-
: "x0");
|
|
89
|
+
: "x0", "x1"); \
|
|
90
90
|
} while (0)
|
|
91
91
|
#endif
|
|
92
92
|
|
|
93
|
+
// We need this helper function as the semantics of casting between integers and
|
|
94
|
+
// function pointers mean that we end up with a function pointer without the
|
|
95
|
+
// correct signature. Instead we assign to an integer with a matching schema,
|
|
96
|
+
// and then memmove the result into a variable of the correct type. This memmove
|
|
97
|
+
// is possible as `_Unwind_Personality_Fn` is a standard function pointer, and
|
|
98
|
+
// as such is not address diversified.
|
|
99
|
+
static _Unwind_Personality_Fn get_handler_function(unw_proc_info_t *frameInfo) {
|
|
100
|
+
uintptr_t __unwind_ptrauth_restricted_intptr(ptrauth_key_function_pointer,
|
|
101
|
+
0,
|
|
102
|
+
ptrauth_function_pointer_type_discriminator(_Unwind_Personality_Fn))
|
|
103
|
+
reauthenticatedIntegerHandler = frameInfo->handler;
|
|
104
|
+
_Unwind_Personality_Fn handler;
|
|
105
|
+
memmove(&handler, (void *)&reauthenticatedIntegerHandler,
|
|
106
|
+
sizeof(_Unwind_Personality_Fn));
|
|
107
|
+
return handler;
|
|
108
|
+
}
|
|
109
|
+
|
|
93
110
|
static _Unwind_Reason_Code
|
|
94
111
|
unwind_phase1(unw_context_t *uc, unw_cursor_t *cursor, _Unwind_Exception *exception_object) {
|
|
95
112
|
__unw_init_local(cursor, uc);
|
|
@@ -147,8 +164,7 @@ unwind_phase1(unw_context_t *uc, unw_cursor_t *cursor, _Unwind_Exception *except
|
|
|
147
164
|
// If there is a personality routine, ask it if it will want to stop at
|
|
148
165
|
// this frame.
|
|
149
166
|
if (frameInfo.handler != 0) {
|
|
150
|
-
_Unwind_Personality_Fn p =
|
|
151
|
-
(_Unwind_Personality_Fn)(uintptr_t)(frameInfo.handler);
|
|
167
|
+
_Unwind_Personality_Fn p = get_handler_function(&frameInfo);
|
|
152
168
|
_LIBUNWIND_TRACE_UNWINDING(
|
|
153
169
|
"unwind_phase1(ex_obj=%p): calling personality function %p",
|
|
154
170
|
(void *)exception_object, (void *)(uintptr_t)p);
|
|
@@ -184,11 +200,12 @@ unwind_phase1(unw_context_t *uc, unw_cursor_t *cursor, _Unwind_Exception *except
|
|
|
184
200
|
}
|
|
185
201
|
return _URC_NO_REASON;
|
|
186
202
|
}
|
|
187
|
-
extern int __unw_step_stage2(unw_cursor_t *);
|
|
188
203
|
|
|
189
204
|
#if defined(_LIBUNWIND_USE_GCS)
|
|
190
205
|
// Enable the GCS target feature to permit gcspop instructions to be used.
|
|
191
206
|
__attribute__((target("+gcs")))
|
|
207
|
+
#else
|
|
208
|
+
_LIBUNWIND_TRACE_NO_INLINE
|
|
192
209
|
#endif
|
|
193
210
|
static _Unwind_Reason_Code
|
|
194
211
|
unwind_phase2(unw_context_t *uc, unw_cursor_t *cursor,
|
|
@@ -276,8 +293,7 @@ unwind_phase2(unw_context_t *uc, unw_cursor_t *cursor,
|
|
|
276
293
|
++framesWalked;
|
|
277
294
|
// If there is a personality routine, tell it we are unwinding.
|
|
278
295
|
if (frameInfo.handler != 0) {
|
|
279
|
-
_Unwind_Personality_Fn p =
|
|
280
|
-
(_Unwind_Personality_Fn)(uintptr_t)(frameInfo.handler);
|
|
296
|
+
_Unwind_Personality_Fn p = get_handler_function(&frameInfo);
|
|
281
297
|
_Unwind_Action action = _UA_CLEANUP_PHASE;
|
|
282
298
|
if (sp == exception_object->private_2) {
|
|
283
299
|
// Tell personality this was the frame it marked in phase 1.
|
|
@@ -334,6 +350,8 @@ unwind_phase2(unw_context_t *uc, unw_cursor_t *cursor,
|
|
|
334
350
|
#if defined(_LIBUNWIND_USE_GCS)
|
|
335
351
|
// Enable the GCS target feature to permit gcspop instructions to be used.
|
|
336
352
|
__attribute__((target("+gcs")))
|
|
353
|
+
#else
|
|
354
|
+
_LIBUNWIND_TRACE_NO_INLINE
|
|
337
355
|
#endif
|
|
338
356
|
static _Unwind_Reason_Code
|
|
339
357
|
unwind_phase2_forced(unw_context_t *uc, unw_cursor_t *cursor,
|
|
@@ -394,8 +412,7 @@ unwind_phase2_forced(unw_context_t *uc, unw_cursor_t *cursor,
|
|
|
394
412
|
++framesWalked;
|
|
395
413
|
// If there is a personality routine, tell it we are unwinding.
|
|
396
414
|
if (frameInfo.handler != 0) {
|
|
397
|
-
_Unwind_Personality_Fn p =
|
|
398
|
-
(_Unwind_Personality_Fn)(intptr_t)(frameInfo.handler);
|
|
415
|
+
_Unwind_Personality_Fn p = get_handler_function(&frameInfo);
|
|
399
416
|
_LIBUNWIND_TRACE_UNWINDING(
|
|
400
417
|
"unwind_phase2_forced(ex_obj=%p): calling personality function %p",
|
|
401
418
|
(void *)exception_object, (void *)(uintptr_t)p);
|
|
@@ -597,6 +614,18 @@ _LIBUNWIND_EXPORT uintptr_t _Unwind_GetIP(struct _Unwind_Context *context) {
|
|
|
597
614
|
unw_cursor_t *cursor = (unw_cursor_t *)context;
|
|
598
615
|
unw_word_t result;
|
|
599
616
|
__unw_get_reg(cursor, UNW_REG_IP, &result);
|
|
617
|
+
|
|
618
|
+
#if defined(_LIBUNWIND_TARGET_AARCH64_AUTHENTICATED_UNWINDING)
|
|
619
|
+
// If we are in an arm64e frame, then the PC should have been signed with the
|
|
620
|
+
// sp
|
|
621
|
+
{
|
|
622
|
+
unw_word_t sp;
|
|
623
|
+
__unw_get_reg(cursor, UNW_REG_SP, &sp);
|
|
624
|
+
result = (unw_word_t)ptrauth_auth_data((void *)result,
|
|
625
|
+
ptrauth_key_return_address, sp);
|
|
626
|
+
}
|
|
627
|
+
#endif
|
|
628
|
+
|
|
600
629
|
_LIBUNWIND_TRACE_API("_Unwind_GetIP(context=%p) => 0x%" PRIxPTR,
|
|
601
630
|
(void *)context, result);
|
|
602
631
|
return (uintptr_t)result;
|