@zigc/lib 0.17.0-dev.27 → 0.17.0-dev.296
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/fcntl.zig +6 -1
- package/c/inttypes.zig +0 -10
- package/c/math.zig +52 -112
- package/c/pthread.zig +57 -0
- package/c/search.zig +1 -27
- package/c/stdlib/drand48.zig +0 -57
- package/c/stdlib.zig +31 -121
- package/c/string.zig +20 -7
- package/c/strings.zig +0 -38
- package/c/unistd.zig +27 -26
- package/c/wchar.zig +10 -0
- package/c.zig +2 -2
- package/compiler/aro/aro/CodeGen.zig +7 -8
- package/compiler/aro/aro/Compilation.zig +17 -17
- package/compiler/aro/aro/Driver.zig +14 -13
- package/compiler/aro/aro/Parser.zig +20 -15
- package/compiler/aro/aro/Pragma.zig +3 -2
- package/compiler/aro/aro/Preprocessor.zig +9 -6
- package/compiler/aro/aro/pragmas/message.zig +3 -2
- package/compiler/aro/aro/text_literal.zig +3 -2
- package/compiler/aro/assembly_backend/x86_64.zig +4 -4
- package/compiler/build_runner.zig +2 -4
- package/compiler/reduce/Walk.zig +8 -13
- package/compiler/resinator/compile.zig +1 -1
- package/compiler/resinator/cvtres.zig +4 -4
- package/compiler/resinator/errors.zig +7 -7
- package/compiler/resinator/ico.zig +4 -4
- package/compiler/resinator/parse.zig +2 -2
- package/compiler/resinator/res.zig +1 -1
- package/compiler/std-docs.zig +1 -1
- package/compiler/test_runner.zig +1 -1
- package/compiler/translate-c/MacroTranslator.zig +1 -1
- package/compiler/translate-c/Translator.zig +6 -2
- package/compiler/translate-c/ast.zig +16 -23
- package/compiler/translate-c/main.zig +1 -1
- package/compiler_rt/addf3.zig +1 -1
- package/compiler_rt/arm.zig +3 -3
- package/compiler_rt/atomics.zig +1 -1
- package/compiler_rt/comparef.zig +3 -3
- package/compiler_rt/cos.zig +1 -3
- package/compiler_rt/count0bits.zig +1 -1
- package/compiler_rt/divdf3.zig +2 -2
- package/compiler_rt/divsf3.zig +1 -1
- package/compiler_rt/divtf3.zig +1 -1
- package/compiler_rt/divxf3.zig +1 -1
- package/compiler_rt/exp.zig +0 -2
- package/compiler_rt/exp2.zig +0 -2
- package/compiler_rt/extendf.zig +5 -5
- package/compiler_rt/fabs.zig +1 -3
- package/compiler_rt/float_from_int.zig +3 -4
- package/compiler_rt/fma.zig +0 -2
- package/compiler_rt/fmax.zig +1 -3
- package/compiler_rt/fmin.zig +1 -3
- package/compiler_rt/fmod.zig +2 -4
- package/compiler_rt/limb64.zig +3 -2
- package/compiler_rt/log.zig +0 -2
- package/compiler_rt/log10.zig +0 -2
- package/compiler_rt/log2.zig +0 -2
- package/compiler_rt/mulf3.zig +2 -2
- package/compiler_rt/rem_pio2l.zig +1 -1
- package/compiler_rt/round.zig +0 -2
- package/compiler_rt/sin.zig +1 -3
- package/compiler_rt/sincos.zig +1 -3
- package/compiler_rt/sqrt.zig +0 -2
- package/compiler_rt/ssp.zig +2 -2
- package/compiler_rt/tan.zig +1 -3
- package/compiler_rt/trunc.zig +0 -2
- package/compiler_rt/truncf.zig +3 -3
- package/compiler_rt/trunctfhf2.zig +3 -0
- package/compiler_rt.zig +5 -26
- package/docs/wasm/Walk.zig +1 -3
- package/docs/wasm/html_render.zig +1 -2
- package/docs/wasm/markdown/Parser.zig +16 -20
- package/fuzzer.zig +2 -0
- 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/libc/musl/arch/mipsn32/syscall_arch.h +35 -32
- 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/libc/hdr/errno_macros.h +3 -1
- package/libcxx/libc/hdr/stdint_proxy.h +18 -0
- package/libcxx/libc/hdr/types/wchar_t.h +23 -0
- package/libcxx/libc/hdr/wchar_overlay.h +69 -0
- package/libcxx/libc/include/llvm-libc-macros/cfloat128-macros.h +41 -0
- package/libcxx/libc/include/llvm-libc-macros/cfloat16-macros.h +20 -0
- package/libcxx/libc/include/llvm-libc-macros/wchar-macros.h +18 -0
- package/libcxx/libc/include/llvm-libc-types/cfloat128.h +11 -28
- package/libcxx/libc/include/llvm-libc-types/cfloat16.h +4 -7
- package/libcxx/libc/include/llvm-libc-types/wint_t.h +14 -0
- package/libcxx/libc/shared/libc_common.h +5 -0
- package/libcxx/libc/src/__support/CPP/bit.h +50 -12
- package/libcxx/libc/src/__support/CPP/type_traits/is_complex.h +7 -0
- package/libcxx/libc/src/__support/CPP/type_traits/is_destructible.h +2 -1
- package/libcxx/libc/src/__support/CPP/type_traits/is_unsigned.h +6 -0
- package/libcxx/libc/src/__support/CPP/utility/integer_sequence.h +10 -0
- package/libcxx/libc/src/__support/FPUtil/FPBits.h +6 -7
- package/libcxx/libc/src/__support/FPUtil/rounding_mode.h +50 -4
- package/libcxx/libc/src/__support/big_int.h +14 -14
- package/libcxx/libc/src/__support/common.h +3 -2
- package/libcxx/libc/src/__support/ctype_utils.h +19 -12
- package/libcxx/libc/src/__support/detailed_powers_of_ten.h +1 -2
- package/libcxx/libc/src/__support/high_precision_decimal.h +33 -14
- package/libcxx/libc/src/__support/libc_assert.h +2 -0
- package/libcxx/libc/src/__support/macros/attributes.h +44 -1
- package/libcxx/libc/src/__support/macros/config.h +23 -0
- package/libcxx/libc/src/__support/macros/null_check.h +1 -2
- package/libcxx/libc/src/__support/macros/optimization.h +3 -0
- package/libcxx/libc/src/__support/macros/properties/architectures.h +5 -1
- package/libcxx/libc/src/__support/macros/properties/compiler.h +8 -3
- package/libcxx/libc/src/__support/macros/properties/cpu_features.h +17 -1
- package/libcxx/libc/src/__support/macros/properties/types.h +2 -3
- package/libcxx/libc/src/__support/macros/sanitizer.h +0 -10
- package/libcxx/libc/src/__support/math_extras.h +20 -4
- package/libcxx/libc/src/__support/str_to_float.h +98 -125
- package/libcxx/libc/src/__support/str_to_integer.h +39 -27
- package/libcxx/libc/src/__support/wctype_utils.h +588 -0
- 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 +42 -20
- package/libunwind/src/CompactUnwinder.hpp +16 -5
- package/libunwind/src/DwarfInstructions.hpp +24 -13
- package/libunwind/src/DwarfParser.hpp +62 -23
- 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/Cache/Path.zig +1 -1
- package/std/Build/Cache.zig +6 -6
- package/std/Build/Step/Compile.zig +18 -20
- package/std/Build/Step/ConfigHeader.zig +1 -1
- package/std/Build/Step/Run.zig +15 -8
- package/std/Build/Step.zig +3 -7
- package/std/Build/Watch/FsEvents.zig +1 -1
- package/std/Build/WebServer.zig +2 -2
- package/std/Build/abi.zig +1 -1
- package/std/Build.zig +0 -3
- package/std/Io/Dir.zig +9 -4
- package/std/Io/Dispatch.zig +8 -18
- package/std/Io/File/Writer.zig +8 -6
- package/std/Io/File.zig +0 -9
- package/std/Io/Kqueue.zig +3 -3
- package/std/Io/Reader.zig +8 -14
- package/std/Io/Semaphore.zig +112 -17
- package/std/Io/Terminal.zig +1 -1
- package/std/Io/Threaded.zig +183 -46
- package/std/Io/Uring.zig +18 -20
- package/std/Io/Writer.zig +10 -7
- package/std/Io/net/HostName.zig +11 -6
- package/std/Io/net.zig +11 -11
- package/std/Io.zig +104 -38
- package/std/Random/ChaCha.zig +2 -2
- package/std/Random/benchmark.zig +2 -2
- package/std/Random.zig +6 -6
- package/std/SemanticVersion.zig +1 -1
- package/std/Target/Query.zig +2 -2
- 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 +67 -14
- package/std/Thread.zig +5 -2
- package/std/array_hash_map.zig +103 -57
- package/std/array_list.zig +10 -31
- package/std/base64.zig +5 -5
- package/std/bit_set.zig +86 -69
- package/std/c/haiku.zig +3 -0
- package/std/c/serenity.zig +1 -6
- package/std/c.zig +123 -32
- package/std/compress/flate/Decompress.zig +3 -4
- package/std/compress/zstd/Decompress.zig +7 -9
- package/std/crypto/25519/curve25519.zig +2 -2
- package/std/crypto/25519/edwards25519.zig +3 -3
- package/std/crypto/25519/ristretto255.zig +2 -2
- package/std/crypto/25519/scalar.zig +6 -6
- package/std/crypto/25519/x25519.zig +1 -1
- package/std/crypto/Certificate.zig +14 -2
- package/std/crypto/Sha1.zig +1 -1
- package/std/crypto/aegis.zig +45 -39
- package/std/crypto/aes_ccm.zig +22 -22
- package/std/crypto/aes_gcm.zig +10 -12
- package/std/crypto/aes_ocb.zig +9 -9
- package/std/crypto/argon2.zig +15 -15
- package/std/crypto/ascon.zig +75 -33
- package/std/crypto/bcrypt.zig +20 -10
- package/std/crypto/benchmark.zig +7 -7
- package/std/crypto/blake2.zig +100 -64
- package/std/crypto/cbc_mac.zig +1 -1
- package/std/crypto/chacha20.zig +10 -10
- package/std/crypto/cmac.zig +3 -3
- package/std/crypto/codecs/asn1/Oid.zig +12 -1
- package/std/crypto/codecs/asn1/der/Encoder.zig +1 -1
- package/std/crypto/codecs/asn1.zig +1 -1
- package/std/crypto/codecs/base64_hex_ct.zig +3 -5
- package/std/crypto/ecdsa.zig +9 -9
- package/std/crypto/ff.zig +4 -5
- package/std/crypto/ghash_polyval.zig +4 -4
- package/std/crypto/hkdf.zig +1 -1
- package/std/crypto/isap.zig +3 -3
- package/std/crypto/kangarootwelve.zig +1 -1
- package/std/crypto/keccak_p.zig +8 -8
- package/std/crypto/md5.zig +1 -1
- package/std/crypto/ml_dsa.zig +39 -39
- package/std/crypto/ml_kem.zig +12 -34
- package/std/crypto/modes.zig +2 -2
- package/std/crypto/pbkdf2.zig +1 -1
- package/std/crypto/pcurves/common.zig +4 -5
- package/std/crypto/pcurves/p256/scalar.zig +3 -3
- package/std/crypto/pcurves/p384/scalar.zig +2 -2
- package/std/crypto/pcurves/secp256k1/scalar.zig +3 -3
- package/std/crypto/pcurves/tests/p256.zig +5 -5
- package/std/crypto/pcurves/tests/p384.zig +5 -5
- package/std/crypto/pcurves/tests/secp256k1.zig +3 -3
- package/std/crypto/salsa20.zig +8 -8
- package/std/crypto/sha2.zig +2 -2
- package/std/crypto/sha3.zig +2 -2
- package/std/crypto/siphash.zig +1 -1
- package/std/crypto/timing_safe.zig +10 -9
- package/std/crypto/tls/Client.zig +89 -13
- package/std/crypto/tls.zig +1 -1
- package/std/crypto.zig +4 -3
- package/std/debug/Dwarf.zig +15 -12
- package/std/debug/Pdb.zig +25 -17
- package/std/debug.zig +14 -8
- package/std/deque.zig +1 -1
- package/std/elf.zig +1 -1
- package/std/enums.zig +8 -8
- package/std/fmt/parse_float/decimal.zig +1 -1
- package/std/fmt/parse_float.zig +1 -1
- package/std/fmt.zig +14 -10
- package/std/fs/path.zig +7 -5
- package/std/hash/Adler32.zig +3 -3
- package/std/hash/benchmark.zig +2 -2
- package/std/hash/wyhash.zig +2 -2
- package/std/hash/xxhash.zig +0 -6
- package/std/hash_map.zig +20 -1
- package/std/heap/BufferFirstAllocator.zig +165 -0
- package/std/heap/debug_allocator.zig +2 -2
- package/std/heap/memory_pool.zig +34 -197
- package/std/heap.zig +2 -133
- package/std/http/Client.zig +21 -24
- package/std/http.zig +4 -5
- package/std/json/Scanner.zig +2 -2
- package/std/json/static.zig +2 -2
- package/std/{builtin.zig → lang.zig} +5 -1
- package/std/leb128.zig +2 -2
- package/std/math/big/int.zig +5 -5
- package/std/math/big.zig +4 -4
- package/std/math/copysign.zig +1 -1
- package/std/math/float.zig +62 -0
- package/std/math/frexp.zig +4 -4
- package/std/math/ilogb.zig +1 -1
- package/std/math/isfinite.zig +1 -1
- package/std/math/isinf.zig +1 -1
- package/std/math/isnan.zig +1 -2
- package/std/math/isnormal.zig +2 -2
- package/std/math/iszero.zig +2 -2
- package/std/math/ldexp.zig +2 -2
- package/std/math/log10.zig +0 -2
- package/std/math/modf.zig +1 -2
- package/std/math/nextafter.zig +3 -4
- package/std/math/pow.zig +1 -1
- package/std/math/powi.zig +2 -3
- package/std/math/signbit.zig +0 -1
- package/std/math.zig +21 -26
- package/std/mem/Allocator.zig +0 -6
- package/std/mem.zig +31 -31
- package/std/meta/trailer_flags.zig +1 -1
- package/std/meta.zig +4 -36
- package/std/multi_array_list.zig +24 -0
- package/std/os/emscripten.zig +7 -6
- package/std/os/linux/IoUring.zig +2 -0
- package/std/os/linux/aarch64.zig +41 -12
- package/std/os/linux/arc.zig +41 -12
- package/std/os/linux/arm.zig +41 -12
- package/std/os/linux/bpf.zig +6 -0
- package/std/os/linux/hexagon.zig +33 -11
- package/std/os/linux/ioctl.zig +2 -2
- package/std/os/linux/loongarch32.zig +41 -13
- package/std/os/linux/loongarch64.zig +41 -12
- package/std/os/linux/m68k.zig +41 -13
- package/std/os/linux/mips.zig +67 -36
- package/std/os/linux/mips64.zig +60 -29
- package/std/os/linux/mipsn32.zig +60 -29
- package/std/os/linux/or1k.zig +41 -12
- package/std/os/linux/powerpc.zig +41 -12
- package/std/os/linux/powerpc64.zig +41 -12
- package/std/os/linux/riscv32.zig +41 -12
- package/std/os/linux/riscv64.zig +41 -12
- package/std/os/linux/s390x.zig +44 -7
- package/std/os/linux/sparc64.zig +83 -52
- package/std/os/linux/syscalls.zig +26 -1
- package/std/os/linux/thumb.zig +52 -36
- package/std/os/linux/x32.zig +41 -12
- package/std/os/linux/x86.zig +44 -15
- package/std/os/linux/x86_64.zig +41 -12
- package/std/os/linux.zig +416 -450
- package/std/os/plan9.zig +1 -1
- package/std/os/uefi/hii.zig +1 -1
- package/std/os/uefi/tables/boot_services.zig +9 -8
- package/std/os/uefi/tables/runtime_services.zig +1 -1
- package/std/os/windows.zig +130 -1
- package/std/os.zig +41 -0
- package/std/posix.zig +1 -1
- package/std/process/Environ.zig +1 -1
- package/std/process.zig +5 -4
- package/std/simd.zig +4 -21
- package/std/sort.zig +3 -3
- package/std/start.zig +17 -4
- package/std/std.zig +8 -1
- package/std/tar/Writer.zig +39 -33
- package/std/tar.zig +8 -4
- package/std/testing.zig +2 -2
- package/std/unicode.zig +13 -8
- package/std/zig/Ast/Render.zig +6 -30
- package/std/zig/Ast.zig +12 -37
- package/std/zig/AstGen.zig +175 -332
- package/std/zig/AstRlAnnotate.zig +1 -22
- package/std/zig/AstSmith.zig +5 -11
- package/std/zig/BuiltinFn.zig +0 -32
- package/std/zig/ErrorBundle.zig +6 -2
- package/std/zig/LibCDirs.zig +15 -6
- package/std/zig/LibCInstallation.zig +34 -12
- package/std/zig/Parse.zig +11 -76
- package/std/zig/TokenSmith.zig +0 -6
- package/std/zig/WindowsSdk.zig +18 -18
- package/std/zig/Zir.zig +65 -132
- package/std/zig/ZonGen.zig +19 -27
- package/std/zig/llvm/Builder.zig +39 -33
- package/std/zig/llvm/bitcode_writer.zig +3 -3
- package/std/zig/llvm/ir.zig +8 -8
- 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/std/zig/target.zig +1 -4
- package/std/zig/tokenizer.zig +4 -43
- package/std/zig.zig +3 -14
- package/std/zip.zig +5 -5
- package/std/zon/parse.zig +1 -1
- package/zig.h +340 -1
- package/compiler_rt/long_double.zig +0 -37
- 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/libc/mingw/math/lrintl.c +0 -18
- package/libc/mingw/math/rintl.c +0 -16
- package/libc/mingw/winpthreads/spinlock.c +0 -82
- package/libc/musl/src/linux/tee.c +0 -8
- package/libc/musl/src/math/i386/lrintl.c +0 -8
- package/libc/musl/src/math/i386/rintl.c +0 -7
- package/libc/musl/src/math/lrintl.c +0 -36
- package/libc/musl/src/math/rintl.c +0 -29
- package/libc/musl/src/math/s390x/rintl.c +0 -15
- package/libc/musl/src/math/x32/lrintl.s +0 -7
- package/libc/musl/src/math/x32/rintl.s +0 -6
- package/libc/musl/src/math/x86_64/lrintl.c +0 -8
- package/libc/musl/src/math/x86_64/rintl.c +0 -7
- package/libc/musl/src/string/strdup.c +0 -10
- package/libc/musl/src/string/strndup.c +0 -12
- package/libc/musl/src/string/wcsdup.c +0 -10
- package/libc/musl/src/thread/pthread_spin_destroy.c +0 -6
- package/libc/musl/src/thread/pthread_spin_init.c +0 -6
- package/libc/musl/src/thread/pthread_spin_lock.c +0 -8
- package/libc/musl/src/thread/pthread_spin_trylock.c +0 -7
- package/libc/musl/src/thread/pthread_spin_unlock.c +0 -7
- package/libc/musl/src/unistd/dup2.c +0 -20
- package/libc/musl/src/unistd/dup3.c +0 -26
- package/libc/wasi/thread-stub/pthread_spin_lock.c +0 -8
- package/libc/wasi/thread-stub/pthread_spin_trylock.c +0 -8
- package/libc/wasi/thread-stub/pthread_spin_unlock.c +0 -7
- package/libtsan/sanitizer_common/sanitizer_coverage_interface.inc +0 -43
- package/std/Build/Step/CheckObject.zig +0 -2764
- /package/std/{builtin → lang}/assembly.zig +0 -0
|
@@ -22,6 +22,11 @@
|
|
|
22
22
|
# endif
|
|
23
23
|
# include <stdio.h>
|
|
24
24
|
|
|
25
|
+
// Start searching for available memory region past PAGEZERO, which is
|
|
26
|
+
// 4KB on 32-bit and 4GB on 64-bit.
|
|
27
|
+
# define GAP_SEARCH_START_ADDRESS \
|
|
28
|
+
((SANITIZER_WORDSIZE == 32) ? 0x000000001000 : 0x000100000000)
|
|
29
|
+
|
|
25
30
|
# include "sanitizer_common.h"
|
|
26
31
|
# include "sanitizer_file.h"
|
|
27
32
|
# include "sanitizer_flags.h"
|
|
@@ -58,9 +63,11 @@ extern char ***_NSGetArgv(void);
|
|
|
58
63
|
# include <dlfcn.h> // for dladdr()
|
|
59
64
|
# include <errno.h>
|
|
60
65
|
# include <fcntl.h>
|
|
66
|
+
# include <inttypes.h>
|
|
61
67
|
# include <libkern/OSAtomic.h>
|
|
62
68
|
# include <mach-o/dyld.h>
|
|
63
69
|
# include <mach/mach.h>
|
|
70
|
+
# include <mach/mach_error.h>
|
|
64
71
|
# include <mach/mach_time.h>
|
|
65
72
|
# include <mach/vm_statistics.h>
|
|
66
73
|
# include <malloc/malloc.h>
|
|
@@ -96,8 +103,16 @@ extern "C" {
|
|
|
96
103
|
natural_t *nesting_depth,
|
|
97
104
|
vm_region_recurse_info_t info,
|
|
98
105
|
mach_msg_type_number_t *infoCnt);
|
|
106
|
+
|
|
107
|
+
extern const void* _dyld_get_shared_cache_range(size_t* length);
|
|
99
108
|
}
|
|
100
109
|
|
|
110
|
+
# if !SANITIZER_GO
|
|
111
|
+
// Weak symbol no-op when TSan is not linked
|
|
112
|
+
SANITIZER_WEAK_ATTRIBUTE extern void __tsan_set_in_internal_write_call(
|
|
113
|
+
bool value) {}
|
|
114
|
+
# endif
|
|
115
|
+
|
|
101
116
|
namespace __sanitizer {
|
|
102
117
|
|
|
103
118
|
#include "sanitizer_syscall_generic.inc"
|
|
@@ -168,7 +183,15 @@ uptr internal_read(fd_t fd, void *buf, uptr count) {
|
|
|
168
183
|
}
|
|
169
184
|
|
|
170
185
|
uptr internal_write(fd_t fd, const void *buf, uptr count) {
|
|
186
|
+
# if SANITIZER_GO
|
|
171
187
|
return write(fd, buf, count);
|
|
188
|
+
# else
|
|
189
|
+
// We need to disable interceptors when writing in TSan
|
|
190
|
+
__tsan_set_in_internal_write_call(true);
|
|
191
|
+
uptr res = write(fd, buf, count);
|
|
192
|
+
__tsan_set_in_internal_write_call(false);
|
|
193
|
+
return res;
|
|
194
|
+
# endif
|
|
172
195
|
}
|
|
173
196
|
|
|
174
197
|
uptr internal_stat(const char *path, void *buf) {
|
|
@@ -258,53 +281,43 @@ int internal_sysctlbyname(const char *sname, void *oldp, uptr *oldlenp,
|
|
|
258
281
|
(size_t)newlen);
|
|
259
282
|
}
|
|
260
283
|
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
284
|
+
bool internal_spawn(const char* argv[], const char* envp[], pid_t* pid,
|
|
285
|
+
fd_t fd_stdin, fd_t fd_stdout) {
|
|
286
|
+
// NOTE: Caller ensures that fd_stdin and fd_stdout are not 0, 1, or 2, since
|
|
287
|
+
// this can break communication.
|
|
288
|
+
//
|
|
289
|
+
// NOTE: Caller is responsible for closing fd_stdin after the process has
|
|
290
|
+
// died.
|
|
265
291
|
|
|
292
|
+
int res;
|
|
266
293
|
auto fd_closer = at_scope_exit([&] {
|
|
267
|
-
|
|
268
|
-
|
|
294
|
+
// NOTE: We intentionally do not close fd_stdin since this can
|
|
295
|
+
// cause us to receive a fatal SIGPIPE if the process dies.
|
|
296
|
+
internal_close(fd_stdout);
|
|
269
297
|
});
|
|
270
298
|
|
|
271
|
-
// We need a new pseudoterminal to avoid buffering problems. The 'atos' tool
|
|
272
|
-
// in particular detects when it's talking to a pipe and forgets to flush the
|
|
273
|
-
// output stream after sending a response.
|
|
274
|
-
primary_fd = posix_openpt(O_RDWR);
|
|
275
|
-
if (primary_fd == kInvalidFd)
|
|
276
|
-
return kInvalidFd;
|
|
277
|
-
|
|
278
|
-
int res = grantpt(primary_fd) || unlockpt(primary_fd);
|
|
279
|
-
if (res != 0) return kInvalidFd;
|
|
280
|
-
|
|
281
|
-
// Use TIOCPTYGNAME instead of ptsname() to avoid threading problems.
|
|
282
|
-
char secondary_pty_name[128];
|
|
283
|
-
res = ioctl(primary_fd, TIOCPTYGNAME, secondary_pty_name);
|
|
284
|
-
if (res == -1) return kInvalidFd;
|
|
285
|
-
|
|
286
|
-
secondary_fd = internal_open(secondary_pty_name, O_RDWR);
|
|
287
|
-
if (secondary_fd == kInvalidFd)
|
|
288
|
-
return kInvalidFd;
|
|
289
|
-
|
|
290
299
|
// File descriptor actions
|
|
291
300
|
posix_spawn_file_actions_t acts;
|
|
292
301
|
res = posix_spawn_file_actions_init(&acts);
|
|
293
|
-
if (res != 0)
|
|
302
|
+
if (res != 0)
|
|
303
|
+
return false;
|
|
294
304
|
|
|
295
305
|
auto acts_cleanup = at_scope_exit([&] {
|
|
296
306
|
posix_spawn_file_actions_destroy(&acts);
|
|
297
307
|
});
|
|
298
308
|
|
|
299
|
-
res = posix_spawn_file_actions_adddup2(&acts,
|
|
300
|
-
posix_spawn_file_actions_adddup2(&acts,
|
|
301
|
-
posix_spawn_file_actions_addclose(&acts,
|
|
302
|
-
|
|
309
|
+
res = posix_spawn_file_actions_adddup2(&acts, fd_stdin, STDIN_FILENO) ||
|
|
310
|
+
posix_spawn_file_actions_adddup2(&acts, fd_stdout, STDOUT_FILENO) ||
|
|
311
|
+
posix_spawn_file_actions_addclose(&acts, fd_stdin) ||
|
|
312
|
+
posix_spawn_file_actions_addclose(&acts, fd_stdout);
|
|
313
|
+
if (res != 0)
|
|
314
|
+
return false;
|
|
303
315
|
|
|
304
316
|
// Spawn attributes
|
|
305
317
|
posix_spawnattr_t attrs;
|
|
306
318
|
res = posix_spawnattr_init(&attrs);
|
|
307
|
-
if (res != 0)
|
|
319
|
+
if (res != 0)
|
|
320
|
+
return false;
|
|
308
321
|
|
|
309
322
|
auto attrs_cleanup = at_scope_exit([&] {
|
|
310
323
|
posix_spawnattr_destroy(&attrs);
|
|
@@ -313,50 +326,17 @@ static fd_t internal_spawn_impl(const char *argv[], const char *envp[],
|
|
|
313
326
|
// In the spawned process, close all file descriptors that are not explicitly
|
|
314
327
|
// described by the file actions object. This is Darwin-specific extension.
|
|
315
328
|
res = posix_spawnattr_setflags(&attrs, POSIX_SPAWN_CLOEXEC_DEFAULT);
|
|
316
|
-
if (res != 0)
|
|
329
|
+
if (res != 0)
|
|
330
|
+
return false;
|
|
317
331
|
|
|
318
332
|
// posix_spawn
|
|
319
333
|
char **argv_casted = const_cast<char **>(argv);
|
|
320
334
|
char **envp_casted = const_cast<char **>(envp);
|
|
321
335
|
res = posix_spawn(pid, argv[0], &acts, &attrs, argv_casted, envp_casted);
|
|
322
|
-
if (res != 0)
|
|
323
|
-
|
|
324
|
-
// Disable echo in the new terminal, disable CR.
|
|
325
|
-
struct termios termflags;
|
|
326
|
-
tcgetattr(primary_fd, &termflags);
|
|
327
|
-
termflags.c_oflag &= ~ONLCR;
|
|
328
|
-
termflags.c_lflag &= ~ECHO;
|
|
329
|
-
tcsetattr(primary_fd, TCSANOW, &termflags);
|
|
330
|
-
|
|
331
|
-
// On success, do not close primary_fd on scope exit.
|
|
332
|
-
fd_t fd = primary_fd;
|
|
333
|
-
primary_fd = kInvalidFd;
|
|
334
|
-
|
|
335
|
-
return fd;
|
|
336
|
-
}
|
|
337
|
-
|
|
338
|
-
fd_t internal_spawn(const char *argv[], const char *envp[], pid_t *pid) {
|
|
339
|
-
// The client program may close its stdin and/or stdout and/or stderr thus
|
|
340
|
-
// allowing open/posix_openpt to reuse file descriptors 0, 1 or 2. In this
|
|
341
|
-
// case the communication is broken if either the parent or the child tries to
|
|
342
|
-
// close or duplicate these descriptors. We temporarily reserve these
|
|
343
|
-
// descriptors here to prevent this.
|
|
344
|
-
fd_t low_fds[3];
|
|
345
|
-
size_t count = 0;
|
|
346
|
-
|
|
347
|
-
for (; count < 3; count++) {
|
|
348
|
-
low_fds[count] = posix_openpt(O_RDWR);
|
|
349
|
-
if (low_fds[count] >= STDERR_FILENO)
|
|
350
|
-
break;
|
|
351
|
-
}
|
|
352
|
-
|
|
353
|
-
fd_t fd = internal_spawn_impl(argv, envp, pid);
|
|
354
|
-
|
|
355
|
-
for (; count > 0; count--) {
|
|
356
|
-
internal_close(low_fds[count]);
|
|
357
|
-
}
|
|
336
|
+
if (res != 0)
|
|
337
|
+
return false;
|
|
358
338
|
|
|
359
|
-
return
|
|
339
|
+
return true;
|
|
360
340
|
}
|
|
361
341
|
|
|
362
342
|
uptr internal_rename(const char *oldpath, const char *newpath) {
|
|
@@ -394,8 +374,8 @@ bool DirExists(const char *path) {
|
|
|
394
374
|
return S_ISDIR(st.st_mode);
|
|
395
375
|
}
|
|
396
376
|
|
|
397
|
-
|
|
398
|
-
|
|
377
|
+
ThreadID GetTid() {
|
|
378
|
+
ThreadID tid;
|
|
399
379
|
pthread_threadid_np(nullptr, &tid);
|
|
400
380
|
return tid;
|
|
401
381
|
}
|
|
@@ -769,11 +749,17 @@ void internal_join_thread(void *th) { pthread_join((pthread_t)th, 0); }
|
|
|
769
749
|
static Mutex syslog_lock;
|
|
770
750
|
# endif
|
|
771
751
|
|
|
752
|
+
# if SANITIZER_DRIVERKIT
|
|
753
|
+
# define SANITIZER_OS_LOG os_log
|
|
754
|
+
# else
|
|
755
|
+
# define SANITIZER_OS_LOG os_log_error
|
|
756
|
+
# endif
|
|
757
|
+
|
|
772
758
|
void WriteOneLineToSyslog(const char *s) {
|
|
773
759
|
#if !SANITIZER_GO
|
|
774
760
|
syslog_lock.CheckLocked();
|
|
775
761
|
if (GetMacosAlignedVersion() >= MacosVersion(10, 12)) {
|
|
776
|
-
|
|
762
|
+
SANITIZER_OS_LOG(OS_LOG_DEFAULT, "%{public}s", s);
|
|
777
763
|
} else {
|
|
778
764
|
#pragma clang diagnostic push
|
|
779
765
|
// as_log is deprecated.
|
|
@@ -837,22 +823,22 @@ void LogMessageOnPrintf(const char *str) {
|
|
|
837
823
|
|
|
838
824
|
void LogFullErrorReport(const char *buffer) {
|
|
839
825
|
# if !SANITIZER_GO
|
|
840
|
-
//
|
|
826
|
+
// When logging with os_log_error this will make it into the crash log.
|
|
841
827
|
if (internal_strncmp(SanitizerToolName, "AddressSanitizer",
|
|
842
828
|
sizeof("AddressSanitizer") - 1) == 0)
|
|
843
|
-
|
|
829
|
+
SANITIZER_OS_LOG(OS_LOG_DEFAULT, "Address Sanitizer reported a failure.");
|
|
844
830
|
else if (internal_strncmp(SanitizerToolName, "UndefinedBehaviorSanitizer",
|
|
845
831
|
sizeof("UndefinedBehaviorSanitizer") - 1) == 0)
|
|
846
|
-
|
|
847
|
-
|
|
832
|
+
SANITIZER_OS_LOG(OS_LOG_DEFAULT,
|
|
833
|
+
"Undefined Behavior Sanitizer reported a failure.");
|
|
848
834
|
else if (internal_strncmp(SanitizerToolName, "ThreadSanitizer",
|
|
849
835
|
sizeof("ThreadSanitizer") - 1) == 0)
|
|
850
|
-
|
|
836
|
+
SANITIZER_OS_LOG(OS_LOG_DEFAULT, "Thread Sanitizer reported a failure.");
|
|
851
837
|
else
|
|
852
|
-
|
|
838
|
+
SANITIZER_OS_LOG(OS_LOG_DEFAULT, "Sanitizer tool reported a failure.");
|
|
853
839
|
|
|
854
840
|
if (common_flags()->log_to_syslog)
|
|
855
|
-
|
|
841
|
+
SANITIZER_OS_LOG(OS_LOG_DEFAULT, "Consult syslog for more information.");
|
|
856
842
|
|
|
857
843
|
// Log to syslog.
|
|
858
844
|
// The logging on OS X may call pthread_create so we need the threading
|
|
@@ -933,7 +919,17 @@ static void DisableMmapExcGuardExceptions() {
|
|
|
933
919
|
RTLD_DEFAULT, "task_set_exc_guard_behavior");
|
|
934
920
|
if (set_behavior == nullptr) return;
|
|
935
921
|
const task_exc_guard_behavior_t task_exc_guard_none = 0;
|
|
936
|
-
set_behavior(mach_task_self(), task_exc_guard_none);
|
|
922
|
+
kern_return_t res = set_behavior(mach_task_self(), task_exc_guard_none);
|
|
923
|
+
if (res != KERN_SUCCESS) {
|
|
924
|
+
Report(
|
|
925
|
+
"WARN: task_set_exc_guard_behavior returned %d (%s), "
|
|
926
|
+
"mmap may fail unexpectedly.\n",
|
|
927
|
+
res, mach_error_string(res));
|
|
928
|
+
if (res == KERN_DENIED)
|
|
929
|
+
Report(
|
|
930
|
+
"HINT: Check that task_set_exc_guard_behavior is allowed by "
|
|
931
|
+
"sandbox.\n");
|
|
932
|
+
}
|
|
937
933
|
}
|
|
938
934
|
|
|
939
935
|
static void VerifyInterceptorsWorking();
|
|
@@ -1100,6 +1096,67 @@ static void StripEnv() {
|
|
|
1100
1096
|
}
|
|
1101
1097
|
#endif // SANITIZER_GO
|
|
1102
1098
|
|
|
1099
|
+
// Prints out a consolidated memory map: contiguous regions
|
|
1100
|
+
// are merged together.
|
|
1101
|
+
static void PrintVmmap() {
|
|
1102
|
+
const mach_vm_address_t max_vm_address = GetMaxVirtualAddress() + 1;
|
|
1103
|
+
mach_vm_address_t address = GAP_SEARCH_START_ADDRESS;
|
|
1104
|
+
kern_return_t kr = KERN_SUCCESS;
|
|
1105
|
+
|
|
1106
|
+
Report("Memory map:\n");
|
|
1107
|
+
mach_vm_address_t last = 0;
|
|
1108
|
+
mach_vm_address_t lastsz = 0;
|
|
1109
|
+
|
|
1110
|
+
while (1) {
|
|
1111
|
+
mach_vm_size_t vmsize = 0;
|
|
1112
|
+
natural_t depth = 0;
|
|
1113
|
+
vm_region_submap_short_info_data_64_t vminfo;
|
|
1114
|
+
mach_msg_type_number_t count = VM_REGION_SUBMAP_SHORT_INFO_COUNT_64;
|
|
1115
|
+
kr = mach_vm_region_recurse(mach_task_self(), &address, &vmsize, &depth,
|
|
1116
|
+
(vm_region_info_t)&vminfo, &count);
|
|
1117
|
+
|
|
1118
|
+
if (kr == KERN_DENIED) {
|
|
1119
|
+
Report(
|
|
1120
|
+
"ERROR: mach_vm_region_recurse got KERN_DENIED when printing memory "
|
|
1121
|
+
"map.\n");
|
|
1122
|
+
Report(
|
|
1123
|
+
"HINT: Check whether mach_vm_region_recurse is allowed by "
|
|
1124
|
+
"sandbox.\n");
|
|
1125
|
+
}
|
|
1126
|
+
|
|
1127
|
+
if (kr == KERN_SUCCESS && address < max_vm_address) {
|
|
1128
|
+
if (last + lastsz == address) {
|
|
1129
|
+
// This region is contiguous with the last; merge together.
|
|
1130
|
+
lastsz += vmsize;
|
|
1131
|
+
} else {
|
|
1132
|
+
if (lastsz)
|
|
1133
|
+
Printf("|| `[%p, %p]` || size=0x%016" PRIx64 " ||\n", (void*)last,
|
|
1134
|
+
(void*)(last + lastsz), lastsz);
|
|
1135
|
+
|
|
1136
|
+
last = address;
|
|
1137
|
+
lastsz = vmsize;
|
|
1138
|
+
}
|
|
1139
|
+
address += vmsize;
|
|
1140
|
+
} else {
|
|
1141
|
+
// We've reached the end of the memory map. Print the last remaining
|
|
1142
|
+
// region, if there is one.
|
|
1143
|
+
if (lastsz)
|
|
1144
|
+
Printf("|| `[%p, %p]` || size=0x%016" PRIx64 " ||\n", (void*)last,
|
|
1145
|
+
(void*)(last + lastsz), lastsz);
|
|
1146
|
+
|
|
1147
|
+
break;
|
|
1148
|
+
}
|
|
1149
|
+
}
|
|
1150
|
+
}
|
|
1151
|
+
|
|
1152
|
+
static void ReportShadowAllocFail(uptr shadow_size_bytes, uptr alignment) {
|
|
1153
|
+
Report(
|
|
1154
|
+
"FATAL: Failed to allocate shadow memory. Tried to allocate %p bytes "
|
|
1155
|
+
"(alignment=%p).\n",
|
|
1156
|
+
(void*)shadow_size_bytes, (void*)alignment);
|
|
1157
|
+
PrintVmmap();
|
|
1158
|
+
}
|
|
1159
|
+
|
|
1103
1160
|
char **GetArgv() {
|
|
1104
1161
|
return *_NSGetArgv();
|
|
1105
1162
|
}
|
|
@@ -1207,10 +1264,11 @@ uptr MapDynamicShadow(uptr shadow_size_bytes, uptr shadow_scale,
|
|
|
1207
1264
|
if (new_max_vm < max_occupied_addr) {
|
|
1208
1265
|
Report("Unable to find a memory range for dynamic shadow.\n");
|
|
1209
1266
|
Report(
|
|
1210
|
-
"
|
|
1211
|
-
"
|
|
1212
|
-
(void
|
|
1213
|
-
(void
|
|
1267
|
+
"\tspace_size = %p\n\tlargest_gap_found = %p\n\tmax_occupied_addr "
|
|
1268
|
+
"= %p\n\tnew_max_vm = %p\n",
|
|
1269
|
+
(void*)space_size, (void*)largest_gap_found, (void*)max_occupied_addr,
|
|
1270
|
+
(void*)new_max_vm);
|
|
1271
|
+
ReportShadowAllocFail(shadow_size_bytes, alignment);
|
|
1214
1272
|
CHECK(0 && "cannot place shadow");
|
|
1215
1273
|
}
|
|
1216
1274
|
RestrictMemoryToMaxAddress(new_max_vm);
|
|
@@ -1221,6 +1279,7 @@ uptr MapDynamicShadow(uptr shadow_size_bytes, uptr shadow_scale,
|
|
|
1221
1279
|
nullptr, nullptr);
|
|
1222
1280
|
if (shadow_start == 0) {
|
|
1223
1281
|
Report("Unable to find a memory range after restricting VM.\n");
|
|
1282
|
+
ReportShadowAllocFail(shadow_size_bytes, alignment);
|
|
1224
1283
|
CHECK(0 && "cannot place shadow after restricting vm");
|
|
1225
1284
|
}
|
|
1226
1285
|
}
|
|
@@ -1229,6 +1288,25 @@ uptr MapDynamicShadow(uptr shadow_size_bytes, uptr shadow_scale,
|
|
|
1229
1288
|
return shadow_start;
|
|
1230
1289
|
}
|
|
1231
1290
|
|
|
1291
|
+
// Returns a list of ranges which must be covered by shadow memory,
|
|
1292
|
+
// and cannot overlap with any fixed mappings made by a sanitizer.
|
|
1293
|
+
// This can ensure that the sanitizer runtime does not map over
|
|
1294
|
+
// platform-reserved regions.
|
|
1295
|
+
void GetAppReservedRanges(InternalMmapVector<ReservedRange>& ranges) {
|
|
1296
|
+
ranges.clear();
|
|
1297
|
+
|
|
1298
|
+
# if SANITIZER_OSX
|
|
1299
|
+
// On macOS, the first 512GB are platform-reserved (some of which
|
|
1300
|
+
// may also be available to applications).
|
|
1301
|
+
ranges.push_back({0x1000UL, 0x8000000000UL});
|
|
1302
|
+
# endif
|
|
1303
|
+
|
|
1304
|
+
VReport(2, "App ranges:\n");
|
|
1305
|
+
for (auto& [range_start, range_end] : ranges) {
|
|
1306
|
+
VReport(2, " [%p, %p]\n", range_start, range_end);
|
|
1307
|
+
}
|
|
1308
|
+
}
|
|
1309
|
+
|
|
1232
1310
|
uptr MapDynamicShadowAndAliases(uptr shadow_size, uptr alias_size,
|
|
1233
1311
|
uptr num_aliases, uptr ring_buffer_size) {
|
|
1234
1312
|
CHECK(false && "HWASan aliasing is unimplemented on Mac");
|
|
@@ -1236,40 +1314,61 @@ uptr MapDynamicShadowAndAliases(uptr shadow_size, uptr alias_size,
|
|
|
1236
1314
|
}
|
|
1237
1315
|
|
|
1238
1316
|
uptr FindAvailableMemoryRange(uptr size, uptr alignment, uptr left_padding,
|
|
1239
|
-
uptr
|
|
1240
|
-
uptr
|
|
1241
|
-
typedef vm_region_submap_short_info_data_64_t RegionInfo;
|
|
1242
|
-
enum { kRegionInfoSize = VM_REGION_SUBMAP_SHORT_INFO_COUNT_64 };
|
|
1243
|
-
// Start searching for available memory region past PAGEZERO, which is
|
|
1244
|
-
// 4KB on 32-bit and 4GB on 64-bit.
|
|
1245
|
-
mach_vm_address_t start_address =
|
|
1246
|
-
(SANITIZER_WORDSIZE == 32) ? 0x000000001000 : 0x000100000000;
|
|
1247
|
-
|
|
1317
|
+
uptr* largest_gap_found,
|
|
1318
|
+
uptr* max_occupied_addr) {
|
|
1248
1319
|
const mach_vm_address_t max_vm_address = GetMaxVirtualAddress() + 1;
|
|
1249
|
-
mach_vm_address_t address =
|
|
1250
|
-
mach_vm_address_t free_begin =
|
|
1320
|
+
mach_vm_address_t address = GAP_SEARCH_START_ADDRESS;
|
|
1321
|
+
mach_vm_address_t free_begin = GAP_SEARCH_START_ADDRESS;
|
|
1322
|
+
|
|
1323
|
+
// Restrict the search to be after any reserved ranges
|
|
1324
|
+
InternalMmapVector<ReservedRange> app_ranges;
|
|
1325
|
+
GetAppReservedRanges(app_ranges);
|
|
1326
|
+
|
|
1327
|
+
for (auto& [range_start, range_end] : app_ranges) {
|
|
1328
|
+
address = Max(address, (mach_vm_address_t)range_end);
|
|
1329
|
+
free_begin = Max(free_begin, (mach_vm_address_t)range_end);
|
|
1330
|
+
}
|
|
1331
|
+
|
|
1251
1332
|
kern_return_t kr = KERN_SUCCESS;
|
|
1252
1333
|
if (largest_gap_found) *largest_gap_found = 0;
|
|
1253
1334
|
if (max_occupied_addr) *max_occupied_addr = 0;
|
|
1254
1335
|
while (kr == KERN_SUCCESS) {
|
|
1255
1336
|
mach_vm_size_t vmsize = 0;
|
|
1256
1337
|
natural_t depth = 0;
|
|
1257
|
-
|
|
1258
|
-
mach_msg_type_number_t count =
|
|
1338
|
+
vm_region_submap_short_info_data_64_t vminfo;
|
|
1339
|
+
mach_msg_type_number_t count = VM_REGION_SUBMAP_SHORT_INFO_COUNT_64;
|
|
1259
1340
|
kr = mach_vm_region_recurse(mach_task_self(), &address, &vmsize, &depth,
|
|
1260
1341
|
(vm_region_info_t)&vminfo, &count);
|
|
1261
1342
|
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1343
|
+
if (kr == KERN_SUCCESS) {
|
|
1344
|
+
// There are cases where going beyond the processes' max vm does
|
|
1345
|
+
// not return KERN_INVALID_ADDRESS so we check for going beyond that
|
|
1346
|
+
// max address as well.
|
|
1347
|
+
if (address > max_vm_address) {
|
|
1348
|
+
address = max_vm_address;
|
|
1349
|
+
kr = -1; // break after this iteration.
|
|
1350
|
+
}
|
|
1351
|
+
|
|
1352
|
+
if (max_occupied_addr)
|
|
1353
|
+
*max_occupied_addr = address + vmsize;
|
|
1354
|
+
} else if (kr == KERN_INVALID_ADDRESS) {
|
|
1266
1355
|
// No more regions beyond "address", consider the gap at the end of VM.
|
|
1267
1356
|
address = max_vm_address;
|
|
1268
|
-
|
|
1269
|
-
|
|
1357
|
+
|
|
1358
|
+
// We will break after this iteration anyway since kr != KERN_SUCCESS
|
|
1359
|
+
} else if (kr == KERN_DENIED) {
|
|
1360
|
+
Report("ERROR: Unable to find a memory range for dynamic shadow.\n");
|
|
1361
|
+
Report("HINT: Ensure mach_vm_region_recurse is allowed under sandbox.\n");
|
|
1362
|
+
Die();
|
|
1270
1363
|
} else {
|
|
1271
|
-
|
|
1364
|
+
Report(
|
|
1365
|
+
"WARNING: mach_vm_region_recurse returned unexpected code %d (%s)\n",
|
|
1366
|
+
kr, mach_error_string(kr));
|
|
1367
|
+
DCHECK(false && "mach_vm_region_recurse returned unexpected code");
|
|
1368
|
+
break; // address is not valid unless KERN_SUCCESS, therefore we must not
|
|
1369
|
+
// use it.
|
|
1272
1370
|
}
|
|
1371
|
+
|
|
1273
1372
|
if (free_begin != address) {
|
|
1274
1373
|
// We found a free region [free_begin..address-1].
|
|
1275
1374
|
uptr gap_start = RoundUpTo((uptr)free_begin + left_padding, alignment);
|
|
@@ -1292,6 +1391,58 @@ uptr FindAvailableMemoryRange(uptr size, uptr alignment, uptr left_padding,
|
|
|
1292
1391
|
return 0;
|
|
1293
1392
|
}
|
|
1294
1393
|
|
|
1394
|
+
// This function (when used during initialization when there is
|
|
1395
|
+
// only a single thread), can be used to verify that a range
|
|
1396
|
+
// of memory hasn't already been mapped, and won't be mapped
|
|
1397
|
+
// later in the shared cache.
|
|
1398
|
+
//
|
|
1399
|
+
// If the syscall mach_vm_region_recurse fails (due to sandbox),
|
|
1400
|
+
// we assume that the memory is not mapped so that execution can continue.
|
|
1401
|
+
//
|
|
1402
|
+
// NOTE: range_end is inclusive
|
|
1403
|
+
//
|
|
1404
|
+
// WARNING: This function must NOT allocate memory, since it is
|
|
1405
|
+
// used in InitializeShadowMemory between where we search for
|
|
1406
|
+
// space for shadow and where we actually allocate it.
|
|
1407
|
+
bool MemoryRangeIsAvailable(uptr range_start, uptr range_end) {
|
|
1408
|
+
mach_vm_size_t vmsize = 0;
|
|
1409
|
+
natural_t depth = 0;
|
|
1410
|
+
vm_region_submap_short_info_data_64_t vminfo;
|
|
1411
|
+
mach_msg_type_number_t count = VM_REGION_SUBMAP_SHORT_INFO_COUNT_64;
|
|
1412
|
+
mach_vm_address_t address = range_start;
|
|
1413
|
+
|
|
1414
|
+
// First, check if the range is already mapped.
|
|
1415
|
+
kern_return_t kr =
|
|
1416
|
+
mach_vm_region_recurse(mach_task_self(), &address, &vmsize, &depth,
|
|
1417
|
+
(vm_region_info_t)&vminfo, &count);
|
|
1418
|
+
|
|
1419
|
+
if (kr == KERN_DENIED) {
|
|
1420
|
+
Report(
|
|
1421
|
+
"WARN: mach_vm_region_recurse returned KERN_DENIED when checking "
|
|
1422
|
+
"whether an address is mapped.\n");
|
|
1423
|
+
Report("HINT: Is mach_vm_region_recurse allowed by sandbox?\n");
|
|
1424
|
+
}
|
|
1425
|
+
|
|
1426
|
+
if (kr == KERN_SUCCESS && !IntervalsAreSeparate(address, address + vmsize - 1,
|
|
1427
|
+
range_start, range_end)) {
|
|
1428
|
+
// Overlaps with already-mapped memory
|
|
1429
|
+
return false;
|
|
1430
|
+
}
|
|
1431
|
+
|
|
1432
|
+
size_t cacheLength;
|
|
1433
|
+
uptr cacheStart = (uptr)_dyld_get_shared_cache_range(&cacheLength);
|
|
1434
|
+
|
|
1435
|
+
if (cacheStart &&
|
|
1436
|
+
!IntervalsAreSeparate(cacheStart, cacheStart + cacheLength - 1,
|
|
1437
|
+
range_start, range_end)) {
|
|
1438
|
+
// Overlaps with shared cache region
|
|
1439
|
+
return false;
|
|
1440
|
+
}
|
|
1441
|
+
|
|
1442
|
+
// We believe this address is available.
|
|
1443
|
+
return true;
|
|
1444
|
+
}
|
|
1445
|
+
|
|
1295
1446
|
// FIXME implement on this platform.
|
|
1296
1447
|
void GetMemoryProfile(fill_profile_f cb, uptr *stats) {}
|
|
1297
1448
|
|
|
@@ -58,8 +58,13 @@ struct DarwinKernelVersion : VersionBase<DarwinKernelVersion> {
|
|
|
58
58
|
DarwinKernelVersion(u16 major, u16 minor) : VersionBase(major, minor) {}
|
|
59
59
|
};
|
|
60
60
|
|
|
61
|
+
struct ReservedRange {
|
|
62
|
+
uptr beg, end;
|
|
63
|
+
};
|
|
64
|
+
|
|
61
65
|
MacosVersion GetMacosAlignedVersion();
|
|
62
66
|
DarwinKernelVersion GetDarwinKernelVersion();
|
|
67
|
+
void GetAppReservedRanges(InternalMmapVector<ReservedRange>& ranges);
|
|
63
68
|
|
|
64
69
|
char **GetEnviron();
|
|
65
70
|
|
|
@@ -229,12 +229,12 @@ uptr internal_execve(const char *filename, char *const argv[],
|
|
|
229
229
|
return _sys_execve(filename, argv, envp);
|
|
230
230
|
}
|
|
231
231
|
|
|
232
|
-
|
|
232
|
+
ThreadID GetTid() {
|
|
233
233
|
DEFINE__REAL(int, _lwp_self);
|
|
234
234
|
return _REAL(_lwp_self);
|
|
235
235
|
}
|
|
236
236
|
|
|
237
|
-
int TgKill(pid_t pid,
|
|
237
|
+
int TgKill(pid_t pid, ThreadID tid, int sig) {
|
|
238
238
|
DEFINE__REAL(int, _lwp_kill, int a, int b);
|
|
239
239
|
(void)pid;
|
|
240
240
|
return _REAL(_lwp_kill, tid, sig);
|
|
@@ -319,7 +319,11 @@
|
|
|
319
319
|
#endif
|
|
320
320
|
|
|
321
321
|
// The first address that can be returned by mmap.
|
|
322
|
-
#
|
|
322
|
+
#if SANITIZER_AIX && SANITIZER_WORDSIZE == 64
|
|
323
|
+
# define SANITIZER_MMAP_BEGIN 0x0a00'0000'0000'0000ULL
|
|
324
|
+
#else
|
|
325
|
+
# define SANITIZER_MMAP_BEGIN 0
|
|
326
|
+
#endif
|
|
323
327
|
|
|
324
328
|
// The range of addresses which can be returned my mmap.
|
|
325
329
|
// FIXME: this value should be different on different platforms. Larger values
|
|
@@ -482,4 +486,26 @@
|
|
|
482
486
|
# define SANITIZER_START_BACKGROUND_THREAD_IN_ASAN_INTERNAL 0
|
|
483
487
|
#endif
|
|
484
488
|
|
|
489
|
+
#if SANITIZER_LINUX
|
|
490
|
+
# if SANITIZER_GLIBC
|
|
491
|
+
// Workaround for
|
|
492
|
+
// glibc/commit/3d3572f59059e2b19b8541ea648a6172136ec42e
|
|
493
|
+
// Linux: Keep termios ioctl constants strictly internal
|
|
494
|
+
# if __GLIBC_PREREQ(2, 41)
|
|
495
|
+
# define SANITIZER_TERMIOS_IOCTL_CONSTANTS 0
|
|
496
|
+
# else
|
|
497
|
+
# define SANITIZER_TERMIOS_IOCTL_CONSTANTS 1
|
|
498
|
+
# endif
|
|
499
|
+
# else
|
|
500
|
+
# define SANITIZER_TERMIOS_IOCTL_CONSTANTS 1
|
|
501
|
+
# endif
|
|
502
|
+
#endif
|
|
503
|
+
|
|
504
|
+
#if SANITIZER_APPLE && SANITIZER_WORDSIZE == 64
|
|
505
|
+
// MTE uses the lower half of the top byte.
|
|
506
|
+
# define STRIP_MTE_TAG(addr) ((addr) & ~((uptr)0x0f << 56))
|
|
507
|
+
#else
|
|
508
|
+
# define STRIP_MTE_TAG(addr) (addr)
|
|
509
|
+
#endif
|
|
510
|
+
|
|
485
511
|
#endif // SANITIZER_PLATFORM_H
|
|
@@ -167,7 +167,7 @@ SANITIZER_WEAK_IMPORT void *aligned_alloc(__sanitizer::usize __alignment,
|
|
|
167
167
|
|
|
168
168
|
#define SANITIZER_INTERCEPT_STRLEN SI_NOT_FUCHSIA
|
|
169
169
|
#define SANITIZER_INTERCEPT_STRNLEN (SI_NOT_MAC && SI_NOT_FUCHSIA)
|
|
170
|
-
#define SANITIZER_INTERCEPT_STRCMP
|
|
170
|
+
#define SANITIZER_INTERCEPT_STRCMP SI_NOT_FUCHSIA
|
|
171
171
|
#define SANITIZER_INTERCEPT_STRSTR SI_NOT_FUCHSIA
|
|
172
172
|
#define SANITIZER_INTERCEPT_STRCASESTR (SI_POSIX && SI_NOT_AIX)
|
|
173
173
|
#define SANITIZER_INTERCEPT_STRTOK SI_NOT_FUCHSIA
|
|
@@ -179,8 +179,8 @@ SANITIZER_WEAK_IMPORT void *aligned_alloc(__sanitizer::usize __alignment,
|
|
|
179
179
|
#define SANITIZER_INTERCEPT_TEXTDOMAIN SI_LINUX_NOT_ANDROID || SI_SOLARIS
|
|
180
180
|
#define SANITIZER_INTERCEPT_STRCASECMP SI_POSIX
|
|
181
181
|
#define SANITIZER_INTERCEPT_MEMSET 1
|
|
182
|
-
#define SANITIZER_INTERCEPT_MEMMOVE
|
|
183
|
-
#define SANITIZER_INTERCEPT_MEMCPY
|
|
182
|
+
#define SANITIZER_INTERCEPT_MEMMOVE 1
|
|
183
|
+
#define SANITIZER_INTERCEPT_MEMCPY 1
|
|
184
184
|
#define SANITIZER_INTERCEPT_MEMCMP SI_NOT_FUCHSIA
|
|
185
185
|
#define SANITIZER_INTERCEPT_BCMP \
|
|
186
186
|
SANITIZER_INTERCEPT_MEMCMP && \
|
|
@@ -551,7 +551,8 @@ SANITIZER_WEAK_IMPORT void *aligned_alloc(__sanitizer::usize __alignment,
|
|
|
551
551
|
#define SANITIZER_INTERCEPT_MALLOC_USABLE_SIZE (!SI_MAC && !SI_NETBSD)
|
|
552
552
|
#define SANITIZER_INTERCEPT_MCHECK_MPROBE SI_LINUX_NOT_ANDROID
|
|
553
553
|
#define SANITIZER_INTERCEPT_WCSLEN 1
|
|
554
|
-
#define
|
|
554
|
+
#define SANITIZER_INTERCEPT_WCSNLEN 1
|
|
555
|
+
#define SANITIZER_INTERCEPT_WCSCAT (SI_POSIX || SI_WINDOWS)
|
|
555
556
|
#define SANITIZER_INTERCEPT_WCSDUP SI_POSIX
|
|
556
557
|
#define SANITIZER_INTERCEPT_SIGNAL_AND_SIGACTION (!SI_WINDOWS && SI_NOT_FUCHSIA)
|
|
557
558
|
#define SANITIZER_INTERCEPT_BSD_SIGNAL SI_ANDROID
|