@zigc/lib 0.17.0-dev.135 → 0.17.0-dev.224
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/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/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 +16 -8
- package/std/c.zig +7 -0
- package/std/crypto/ml_kem.zig +0 -15
- 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 +1 -2
- package/std/mem.zig +1 -2
- 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/std/zig/target.zig +1 -2
- package/std/zon/parse.zig +1 -1
- 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/libtsan/sanitizer_common/sanitizer_coverage_interface.inc +0 -43
- package/std/Build/Step/CheckObject.zig +0 -2764
|
@@ -143,6 +143,12 @@ struct sanitizer_kernel_sockaddr {
|
|
|
143
143
|
char sa_data[14];
|
|
144
144
|
};
|
|
145
145
|
|
|
146
|
+
struct sanitizer_kernel_open_how {
|
|
147
|
+
u64 flags;
|
|
148
|
+
u64 mode;
|
|
149
|
+
u64 resolve;
|
|
150
|
+
};
|
|
151
|
+
|
|
146
152
|
// Real sigset size is always passed as a syscall argument.
|
|
147
153
|
// Declare it "void" to catch sizeof(kernel_sigset_t).
|
|
148
154
|
typedef void kernel_sigset_t;
|
|
@@ -2843,6 +2849,18 @@ PRE_SYSCALL(openat)(long dfd, const void *filename, long flags, long mode) {
|
|
|
2843
2849
|
POST_SYSCALL(openat)
|
|
2844
2850
|
(long res, long dfd, const void *filename, long flags, long mode) {}
|
|
2845
2851
|
|
|
2852
|
+
PRE_SYSCALL(openat2)(long dfd, const void* filename,
|
|
2853
|
+
const sanitizer_kernel_open_how* how, uptr howlen) {
|
|
2854
|
+
if (filename)
|
|
2855
|
+
PRE_READ(filename, __sanitizer::internal_strlen((const char*)filename) + 1);
|
|
2856
|
+
|
|
2857
|
+
if (how)
|
|
2858
|
+
PRE_READ(how, howlen);
|
|
2859
|
+
}
|
|
2860
|
+
|
|
2861
|
+
POST_SYSCALL(openat2)(long res, long dfd, const void* filename,
|
|
2862
|
+
const sanitizer_kernel_open_how* how, uptr howlen) {}
|
|
2863
|
+
|
|
2846
2864
|
PRE_SYSCALL(newfstatat)
|
|
2847
2865
|
(long dfd, const void *filename, void *statbuf, long flag) {
|
|
2848
2866
|
if (filename)
|
|
@@ -36,9 +36,17 @@ void RawWrite(const char *buffer) {
|
|
|
36
36
|
|
|
37
37
|
void ReportFile::ReopenIfNecessary() {
|
|
38
38
|
mu->CheckLocked();
|
|
39
|
-
if (fd == kStdoutFd || fd == kStderrFd) return;
|
|
40
|
-
|
|
41
39
|
uptr pid = internal_getpid();
|
|
40
|
+
if (fallbackToStderrActive && fd_pid != pid) {
|
|
41
|
+
// If fallbackToStderrActive is set then we fellback to stderr. If this is a
|
|
42
|
+
// new process, mark fd as invalid so we attempt to open again.
|
|
43
|
+
CHECK_EQ(fd, kStderrFd);
|
|
44
|
+
fd = kInvalidFd;
|
|
45
|
+
fallbackToStderrActive = false;
|
|
46
|
+
}
|
|
47
|
+
if (fd == kStdoutFd || fd == kStderrFd)
|
|
48
|
+
return;
|
|
49
|
+
|
|
42
50
|
// If in tracer, use the parent's file.
|
|
43
51
|
if (pid == stoptheworld_tracer_pid)
|
|
44
52
|
pid = stoptheworld_tracer_ppid;
|
|
@@ -48,8 +56,7 @@ void ReportFile::ReopenIfNecessary() {
|
|
|
48
56
|
// process, close it now.
|
|
49
57
|
if (fd_pid == pid)
|
|
50
58
|
return;
|
|
51
|
-
|
|
52
|
-
CloseFile(fd);
|
|
59
|
+
CloseFile(fd);
|
|
53
60
|
}
|
|
54
61
|
|
|
55
62
|
const char *exe_name = GetProcessName();
|
|
@@ -65,18 +72,24 @@ void ReportFile::ReopenIfNecessary() {
|
|
|
65
72
|
error_t err;
|
|
66
73
|
fd = OpenFile(full_path, WrOnly, &err);
|
|
67
74
|
if (fd == kInvalidFd) {
|
|
68
|
-
|
|
75
|
+
bool fallback = common_flags()->log_fallback_to_stderr;
|
|
76
|
+
const char *ErrorMsgPrefix =
|
|
77
|
+
fallback ? "WARNING: Can't open file, falling back to stderr: "
|
|
78
|
+
: "ERROR: Can't open file: ";
|
|
69
79
|
WriteToFile(kStderrFd, ErrorMsgPrefix, internal_strlen(ErrorMsgPrefix));
|
|
70
80
|
WriteToFile(kStderrFd, full_path, internal_strlen(full_path));
|
|
71
81
|
char errmsg[100];
|
|
72
82
|
internal_snprintf(errmsg, sizeof(errmsg), " (reason: %d)\n", err);
|
|
73
83
|
WriteToFile(kStderrFd, errmsg, internal_strlen(errmsg));
|
|
74
|
-
|
|
84
|
+
if (!fallback)
|
|
85
|
+
Die();
|
|
86
|
+
fallbackToStderrActive = true;
|
|
87
|
+
fd = kStderrFd;
|
|
75
88
|
}
|
|
76
89
|
fd_pid = pid;
|
|
77
90
|
}
|
|
78
91
|
|
|
79
|
-
static void RecursiveCreateParentDirs(char *path) {
|
|
92
|
+
static void RecursiveCreateParentDirs(char *path, fd_t &fd) {
|
|
80
93
|
if (path[0] == '\0')
|
|
81
94
|
return;
|
|
82
95
|
for (int i = 1; path[i] != '\0'; ++i) {
|
|
@@ -85,12 +98,19 @@ static void RecursiveCreateParentDirs(char *path) {
|
|
|
85
98
|
continue;
|
|
86
99
|
path[i] = '\0';
|
|
87
100
|
if (!DirExists(path) && !CreateDir(path)) {
|
|
88
|
-
|
|
101
|
+
bool fallback = common_flags()->log_fallback_to_stderr;
|
|
102
|
+
const char *ErrorMsgPrefix =
|
|
103
|
+
fallback ? "WARNING: Can't create directory, falling back to stderr: "
|
|
104
|
+
: "ERROR: Can't create directory: ";
|
|
89
105
|
WriteToFile(kStderrFd, ErrorMsgPrefix, internal_strlen(ErrorMsgPrefix));
|
|
90
106
|
WriteToFile(kStderrFd, path, internal_strlen(path));
|
|
91
107
|
const char *ErrorMsgSuffix = "\n";
|
|
92
108
|
WriteToFile(kStderrFd, ErrorMsgSuffix, internal_strlen(ErrorMsgSuffix));
|
|
93
|
-
|
|
109
|
+
if (!fallback)
|
|
110
|
+
Die();
|
|
111
|
+
path[i] = save;
|
|
112
|
+
fd = kStderrFd;
|
|
113
|
+
return;
|
|
94
114
|
}
|
|
95
115
|
path[i] = save;
|
|
96
116
|
}
|
|
@@ -108,6 +128,9 @@ static void ParseAndSetPath(const char *pattern, char *dest,
|
|
|
108
128
|
CHECK(dest);
|
|
109
129
|
CHECK_GE(dest_size, 1);
|
|
110
130
|
dest[0] = '\0';
|
|
131
|
+
// Return empty string if empty string was passed
|
|
132
|
+
if (internal_strlen(pattern) == 0)
|
|
133
|
+
return;
|
|
111
134
|
uptr next_substr_start_idx = 0;
|
|
112
135
|
for (uptr i = 0; i < internal_strlen(pattern) - 1; i++) {
|
|
113
136
|
if (pattern[i] != '%')
|
|
@@ -161,12 +184,17 @@ void ReportFile::SetReportPath(const char *path) {
|
|
|
161
184
|
if (path) {
|
|
162
185
|
uptr len = internal_strlen(path);
|
|
163
186
|
if (len > sizeof(path_prefix) - 100) {
|
|
164
|
-
|
|
187
|
+
bool fallback = common_flags()->log_fallback_to_stderr;
|
|
188
|
+
const char *message =
|
|
189
|
+
fallback ? "WARNING: Path is too long, falling back to stderr: "
|
|
190
|
+
: "ERROR: Path is too long: ";
|
|
165
191
|
WriteToFile(kStderrFd, message, internal_strlen(message));
|
|
166
192
|
WriteToFile(kStderrFd, path, 8);
|
|
167
193
|
message = "...\n";
|
|
168
194
|
WriteToFile(kStderrFd, message, internal_strlen(message));
|
|
169
|
-
|
|
195
|
+
if (!fallback)
|
|
196
|
+
Die();
|
|
197
|
+
path = "stderr";
|
|
170
198
|
}
|
|
171
199
|
}
|
|
172
200
|
|
|
@@ -180,7 +208,7 @@ void ReportFile::SetReportPath(const char *path) {
|
|
|
180
208
|
fd = kStdoutFd;
|
|
181
209
|
} else {
|
|
182
210
|
ParseAndSetPath(path, path_prefix, kMaxPathLength);
|
|
183
|
-
RecursiveCreateParentDirs(path_prefix);
|
|
211
|
+
RecursiveCreateParentDirs(path_prefix, fd);
|
|
184
212
|
}
|
|
185
213
|
}
|
|
186
214
|
|
|
@@ -43,6 +43,9 @@ struct ReportFile {
|
|
|
43
43
|
// PID of the process that opened fd. If a fork() occurs,
|
|
44
44
|
// the PID of child will be different from fd_pid.
|
|
45
45
|
uptr fd_pid;
|
|
46
|
+
// Set to true if the last attempt to open the logfile failed, perhaps due to
|
|
47
|
+
// permission errors
|
|
48
|
+
bool fallbackToStderrActive = false;
|
|
46
49
|
|
|
47
50
|
private:
|
|
48
51
|
void ReopenIfNecessary();
|
|
@@ -65,6 +65,8 @@ COMMON_FLAG(
|
|
|
65
65
|
bool, log_to_syslog, (bool)SANITIZER_ANDROID || (bool)SANITIZER_APPLE,
|
|
66
66
|
"Write all sanitizer output to syslog in addition to other means of "
|
|
67
67
|
"logging.")
|
|
68
|
+
COMMON_FLAG(bool, log_fallback_to_stderr, false,
|
|
69
|
+
"When set, fallback to stderr if we are unable to open log path.")
|
|
68
70
|
COMMON_FLAG(
|
|
69
71
|
int, verbosity, 0,
|
|
70
72
|
"Verbosity level (0 - silent, 1 - a bit of output, 2+ - more output).")
|
|
@@ -111,6 +113,11 @@ COMMON_FLAG(HandleSignalMode, handle_sigfpe, kHandleSignalYes,
|
|
|
111
113
|
COMMON_FLAG(bool, allow_user_segv_handler, true,
|
|
112
114
|
"Deprecated. True has no effect, use handle_sigbus=1. If false, "
|
|
113
115
|
"handle_*=1 will be upgraded to handle_*=2.")
|
|
116
|
+
COMMON_FLAG(bool, cloak_sanitizer_signal_handlers, false,
|
|
117
|
+
"If set, signal/sigaction will pretend that sanitizers did not "
|
|
118
|
+
"preinstall any signal handlers. If the user subsequently installs "
|
|
119
|
+
"a signal handler, this will disable cloaking for the respective "
|
|
120
|
+
"signal.")
|
|
114
121
|
COMMON_FLAG(bool, use_sigaltstack, true,
|
|
115
122
|
"If set, uses alternate stack for signal handling.")
|
|
116
123
|
COMMON_FLAG(bool, detect_deadlocks, true,
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
#include "sanitizer_fuchsia.h"
|
|
15
15
|
#if SANITIZER_FUCHSIA
|
|
16
16
|
|
|
17
|
+
# include <limits.h>
|
|
17
18
|
# include <pthread.h>
|
|
18
19
|
# include <stdlib.h>
|
|
19
20
|
# include <unistd.h>
|
|
@@ -68,7 +69,7 @@ int internal_dlinfo(void *handle, int request, void *p) { UNIMPLEMENTED(); }
|
|
|
68
69
|
|
|
69
70
|
uptr GetThreadSelf() { return reinterpret_cast<uptr>(thrd_current()); }
|
|
70
71
|
|
|
71
|
-
|
|
72
|
+
ThreadID GetTid() { return GetThreadSelf(); }
|
|
72
73
|
|
|
73
74
|
void Abort() { abort(); }
|
|
74
75
|
|
|
@@ -117,11 +118,37 @@ uptr GetMmapGranularity() { return _zx_system_get_page_size(); }
|
|
|
117
118
|
|
|
118
119
|
sanitizer_shadow_bounds_t ShadowBounds;
|
|
119
120
|
|
|
121
|
+
// Any sanitizer that utilizes shadow should explicitly call whenever it's
|
|
122
|
+
// appropriate for that sanitizer to reference shadow bounds. For ASan, this is
|
|
123
|
+
// done in `InitializeShadowMemory` and for HWASan, this is done in
|
|
124
|
+
// `InitShadow`.
|
|
120
125
|
void InitShadowBounds() { ShadowBounds = __sanitizer_shadow_bounds(); }
|
|
121
126
|
|
|
127
|
+
// TODO(leonardchan): It's not immediately clear from a user perspective if
|
|
128
|
+
// `GetMaxUserVirtualAddress` should be called exatly once on runtime startup
|
|
129
|
+
// or can be called multiple times. Currently it looks like most instances of
|
|
130
|
+
// `GetMaxUserVirtualAddress` are meant to be called once, but if someone
|
|
131
|
+
// decides to call this multiple times in the future, we should have a separate
|
|
132
|
+
// function that's ok to call multiple times. Ideally we would just invoke this
|
|
133
|
+
// syscall once. Also for Fuchsia, this syscall technically gets invoked twice
|
|
134
|
+
// since `__sanitizer_shadow_bounds` also invokes this syscall under the hood.
|
|
122
135
|
uptr GetMaxUserVirtualAddress() {
|
|
123
|
-
|
|
124
|
-
|
|
136
|
+
zx_info_vmar_t info;
|
|
137
|
+
zx_status_t status = _zx_object_get_info(_zx_vmar_root_self(), ZX_INFO_VMAR,
|
|
138
|
+
&info, sizeof(info), NULL, NULL);
|
|
139
|
+
CHECK_EQ(status, ZX_OK);
|
|
140
|
+
|
|
141
|
+
// Find the top of the accessible address space.
|
|
142
|
+
uintptr_t top = info.base + info.len;
|
|
143
|
+
|
|
144
|
+
// Round it up to a power-of-two size. There may be some pages at
|
|
145
|
+
// the top that can't actually be mapped, but for purposes of the
|
|
146
|
+
// the shadow, we'll pretend they could be.
|
|
147
|
+
int bit = (sizeof(uintptr_t) * CHAR_BIT) - __builtin_clzl(top);
|
|
148
|
+
if (top != (uintptr_t)1 << bit)
|
|
149
|
+
top = (uintptr_t)1 << (bit + 1);
|
|
150
|
+
|
|
151
|
+
return top - 1;
|
|
125
152
|
}
|
|
126
153
|
|
|
127
154
|
uptr GetMaxVirtualAddress() { return GetMaxUserVirtualAddress(); }
|
|
@@ -231,12 +231,12 @@ uptr internal_execve(const char *filename, char *const argv[],
|
|
|
231
231
|
}
|
|
232
232
|
|
|
233
233
|
# if 0
|
|
234
|
-
|
|
234
|
+
ThreadID GetTid() {
|
|
235
235
|
DEFINE__REAL(int, _lwp_self);
|
|
236
236
|
return _REAL(_lwp_self);
|
|
237
237
|
}
|
|
238
238
|
|
|
239
|
-
int TgKill(pid_t pid,
|
|
239
|
+
int TgKill(pid_t pid, ThreadID tid, int sig) {
|
|
240
240
|
DEFINE__REAL(int, _lwp_kill, int a, int b);
|
|
241
241
|
(void)pid;
|
|
242
242
|
return _REAL(_lwp_kill, tid, sig);
|
|
@@ -190,6 +190,14 @@ uptr internal_strlcat(char *dst, const char *src, uptr maxlen) {
|
|
|
190
190
|
return dstlen + srclen;
|
|
191
191
|
}
|
|
192
192
|
|
|
193
|
+
char* internal_strcat(char* dst, const char* src) {
|
|
194
|
+
uptr len = internal_strlen(dst);
|
|
195
|
+
uptr i;
|
|
196
|
+
for (i = 0; src[i]; i++) dst[len + i] = src[i];
|
|
197
|
+
dst[len + i] = 0;
|
|
198
|
+
return dst;
|
|
199
|
+
}
|
|
200
|
+
|
|
193
201
|
char *internal_strncat(char *dst, const char *src, uptr n) {
|
|
194
202
|
uptr len = internal_strlen(dst);
|
|
195
203
|
uptr i;
|
|
@@ -59,6 +59,7 @@ char *internal_strdup(const char *s);
|
|
|
59
59
|
uptr internal_strlen(const char *s);
|
|
60
60
|
uptr internal_strlcat(char *dst, const char *src, uptr maxlen);
|
|
61
61
|
char *internal_strncat(char *dst, const char *src, uptr n);
|
|
62
|
+
char* internal_strcat(char* dst, const char* src);
|
|
62
63
|
int internal_strncmp(const char *s1, const char *s2, uptr n);
|
|
63
64
|
uptr internal_strlcpy(char *dst, const char *src, uptr maxlen);
|
|
64
65
|
char *internal_strncpy(char *dst, const char *src, uptr n);
|
|
@@ -635,7 +635,7 @@ bool DirExists(const char *path) {
|
|
|
635
635
|
}
|
|
636
636
|
|
|
637
637
|
# if !SANITIZER_NETBSD
|
|
638
|
-
|
|
638
|
+
ThreadID GetTid() {
|
|
639
639
|
# if SANITIZER_FREEBSD
|
|
640
640
|
long Tid;
|
|
641
641
|
thr_self(&Tid);
|
|
@@ -649,7 +649,7 @@ tid_t GetTid() {
|
|
|
649
649
|
# endif
|
|
650
650
|
}
|
|
651
651
|
|
|
652
|
-
int TgKill(pid_t pid,
|
|
652
|
+
int TgKill(pid_t pid, ThreadID tid, int sig) {
|
|
653
653
|
# if SANITIZER_LINUX
|
|
654
654
|
return internal_syscall(SYSCALL(tgkill), pid, tid, sig);
|
|
655
655
|
# elif SANITIZER_FREEBSD
|
|
@@ -1091,7 +1091,7 @@ ThreadLister::ThreadLister(pid_t pid) : buffer_(4096) {
|
|
|
1091
1091
|
}
|
|
1092
1092
|
|
|
1093
1093
|
ThreadLister::Result ThreadLister::ListThreads(
|
|
1094
|
-
InternalMmapVector<
|
|
1094
|
+
InternalMmapVector<ThreadID> *threads) {
|
|
1095
1095
|
int descriptor = internal_open(task_path_.data(), O_RDONLY | O_DIRECTORY);
|
|
1096
1096
|
if (internal_iserror(descriptor)) {
|
|
1097
1097
|
Report("Can't open %s for reading.\n", task_path_.data());
|
|
@@ -1146,7 +1146,7 @@ ThreadLister::Result ThreadLister::ListThreads(
|
|
|
1146
1146
|
}
|
|
1147
1147
|
}
|
|
1148
1148
|
|
|
1149
|
-
const char *ThreadLister::LoadStatus(
|
|
1149
|
+
const char *ThreadLister::LoadStatus(ThreadID tid) {
|
|
1150
1150
|
status_path_.clear();
|
|
1151
1151
|
status_path_.AppendF("%s/%llu/status", task_path_.data(), tid);
|
|
1152
1152
|
auto cleanup = at_scope_exit([&] {
|
|
@@ -1159,7 +1159,7 @@ const char *ThreadLister::LoadStatus(tid_t tid) {
|
|
|
1159
1159
|
return buffer_.data();
|
|
1160
1160
|
}
|
|
1161
1161
|
|
|
1162
|
-
bool ThreadLister::IsAlive(
|
|
1162
|
+
bool ThreadLister::IsAlive(ThreadID tid) {
|
|
1163
1163
|
// /proc/%d/task/%d/status uses same call to detect alive threads as
|
|
1164
1164
|
// proc_task_readdir. See task_state implementation in Linux.
|
|
1165
1165
|
static const char kPrefix[] = "\nPPid:";
|
|
@@ -1289,7 +1289,7 @@ uptr GetPageSize() {
|
|
|
1289
1289
|
|
|
1290
1290
|
uptr ReadBinaryName(/*out*/ char *buf, uptr buf_len) {
|
|
1291
1291
|
# if SANITIZER_HAIKU
|
|
1292
|
-
|
|
1292
|
+
int32 cookie = 0;
|
|
1293
1293
|
image_info info;
|
|
1294
1294
|
const char *argv0 = "<UNKNOWN>";
|
|
1295
1295
|
while (get_next_image_info(B_CURRENT_TEAM, &cookie, &info) == B_OK) {
|
|
@@ -1989,7 +1989,10 @@ SignalContext::WriteFlag SignalContext::GetWriteFlag() const {
|
|
|
1989
1989
|
# elif SANITIZER_NETBSD
|
|
1990
1990
|
uptr err = ucontext->uc_mcontext.__gregs[_REG_ERR];
|
|
1991
1991
|
# elif SANITIZER_HAIKU
|
|
1992
|
-
uptr err = ucontext->uc_mcontext.r13;
|
|
1992
|
+
uptr err = 0; // FIXME: ucontext->uc_mcontext.r13;
|
|
1993
|
+
// The err register was added on the main branch and not
|
|
1994
|
+
// available with the current release. To be reverted later.
|
|
1995
|
+
// https://github.com/haiku/haiku/commit/11adda21aa4e6b24f71a496868a44d7607bc3764
|
|
1993
1996
|
# elif SANITIZER_SOLARIS && defined(__i386__)
|
|
1994
1997
|
const int Err = 13;
|
|
1995
1998
|
uptr err = ucontext->uc_mcontext.gregs[Err];
|
|
@@ -2619,6 +2622,11 @@ static void GetPcSpBp(void *context, uptr *pc, uptr *sp, uptr *bp) {
|
|
|
2619
2622
|
*pc = ucontext->uc_mcontext.mc_eip;
|
|
2620
2623
|
*bp = ucontext->uc_mcontext.mc_ebp;
|
|
2621
2624
|
*sp = ucontext->uc_mcontext.mc_esp;
|
|
2625
|
+
# elif SANITIZER_HAIKU
|
|
2626
|
+
ucontext_t *ucontext = (ucontext_t *)context;
|
|
2627
|
+
*pc = ucontext->uc_mcontext.eip;
|
|
2628
|
+
*bp = ucontext->uc_mcontext.ebp;
|
|
2629
|
+
*sp = ucontext->uc_mcontext.esp;
|
|
2622
2630
|
# else
|
|
2623
2631
|
ucontext_t *ucontext = (ucontext_t *)context;
|
|
2624
2632
|
# if SANITIZER_SOLARIS
|
|
@@ -108,11 +108,11 @@ class ThreadLister {
|
|
|
108
108
|
Incomplete,
|
|
109
109
|
Ok,
|
|
110
110
|
};
|
|
111
|
-
Result ListThreads(InternalMmapVector<
|
|
112
|
-
const char *LoadStatus(
|
|
111
|
+
Result ListThreads(InternalMmapVector<ThreadID> *threads);
|
|
112
|
+
const char *LoadStatus(ThreadID tid);
|
|
113
113
|
|
|
114
114
|
private:
|
|
115
|
-
bool IsAlive(
|
|
115
|
+
bool IsAlive(ThreadID tid);
|
|
116
116
|
|
|
117
117
|
InternalScopedString task_path_;
|
|
118
118
|
InternalScopedString status_path_;
|