@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
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
//
|
|
7
7
|
//===----------------------------------------------------------------------===//
|
|
8
8
|
|
|
9
|
+
#if !defined(__wasm__)
|
|
10
|
+
|
|
9
11
|
#include "assembly.h"
|
|
10
12
|
|
|
11
13
|
#define FROM_0_TO_15 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
|
|
@@ -16,13 +18,17 @@
|
|
|
16
18
|
|
|
17
19
|
#if defined(_AIX)
|
|
18
20
|
.toc
|
|
21
|
+
#elif defined(__aarch64__) && defined(__ELF__) && defined(_LIBUNWIND_EXECUTE_ONLY_CODE)
|
|
22
|
+
.section .text,"axy",@progbits,unique,0
|
|
19
23
|
#else
|
|
20
24
|
.text
|
|
21
25
|
#endif
|
|
22
26
|
|
|
23
|
-
#if !defined(__USING_SJLJ_EXCEPTIONS__)
|
|
27
|
+
#if !defined(__USING_SJLJ_EXCEPTIONS__)
|
|
24
28
|
|
|
25
29
|
#if defined(__i386__)
|
|
30
|
+
.att_syntax
|
|
31
|
+
|
|
26
32
|
DEFINE_LIBUNWIND_FUNCTION(__libunwind_Registers_x86_jumpto)
|
|
27
33
|
#
|
|
28
34
|
# extern "C" void __libunwind_Registers_x86_jumpto(Registers_x86 *);
|
|
@@ -67,6 +73,7 @@ DEFINE_LIBUNWIND_FUNCTION(__libunwind_Registers_x86_jumpto)
|
|
|
67
73
|
# skip gs
|
|
68
74
|
|
|
69
75
|
#elif defined(__x86_64__) && !defined(__arm64ec__)
|
|
76
|
+
.att_syntax
|
|
70
77
|
|
|
71
78
|
DEFINE_LIBUNWIND_FUNCTION(__libunwind_Registers_x86_64_jumpto)
|
|
72
79
|
#
|
|
@@ -629,18 +636,35 @@ Lnovec:
|
|
|
629
636
|
|
|
630
637
|
#elif defined(__aarch64__)
|
|
631
638
|
|
|
639
|
+
#ifndef __has_feature
|
|
640
|
+
#define __has_feature(__feature) 0
|
|
641
|
+
#endif
|
|
642
|
+
|
|
632
643
|
#if defined(__ARM_FEATURE_GCS_DEFAULT)
|
|
633
644
|
.arch_extension gcs
|
|
634
645
|
#endif
|
|
635
646
|
|
|
636
647
|
//
|
|
637
|
-
// extern "C" void __libunwind_Registers_arm64_jumpto(Registers_arm64
|
|
648
|
+
// extern "C" void __libunwind_Registers_arm64_jumpto(Registers_arm64 *, unsigned);
|
|
638
649
|
//
|
|
639
650
|
// On entry:
|
|
640
651
|
// thread_state pointer is in x0
|
|
652
|
+
// walked_frames counter is in x1
|
|
641
653
|
//
|
|
642
654
|
.p2align 2
|
|
643
655
|
DEFINE_LIBUNWIND_FUNCTION(__libunwind_Registers_arm64_jumpto)
|
|
656
|
+
|
|
657
|
+
#if defined(_LIBUNWIND_TRACE_RET_INJECT)
|
|
658
|
+
cbz w1, 1f
|
|
659
|
+
0:
|
|
660
|
+
subs w1, w1, #1
|
|
661
|
+
adr x16, #8
|
|
662
|
+
ret x16
|
|
663
|
+
|
|
664
|
+
b.ne 0b
|
|
665
|
+
1:
|
|
666
|
+
#endif
|
|
667
|
+
|
|
644
668
|
// skip restore of x0,x1 for now
|
|
645
669
|
ldp x2, x3, [x0, #0x010]
|
|
646
670
|
ldp x4, x5, [x0, #0x020]
|
|
@@ -657,7 +681,7 @@ DEFINE_LIBUNWIND_FUNCTION(__libunwind_Registers_arm64_jumpto)
|
|
|
657
681
|
ldp x24,x25, [x0, #0x0C0]
|
|
658
682
|
ldp x26,x27, [x0, #0x0D0]
|
|
659
683
|
ldp x28,x29, [x0, #0x0E0]
|
|
660
|
-
|
|
684
|
+
|
|
661
685
|
#if defined(__ARM_FP) && __ARM_FP != 0
|
|
662
686
|
ldp d0, d1, [x0, #0x110]
|
|
663
687
|
ldp d2, d3, [x0, #0x120]
|
|
@@ -681,7 +705,18 @@ DEFINE_LIBUNWIND_FUNCTION(__libunwind_Registers_arm64_jumpto)
|
|
|
681
705
|
// context struct, because it is allocated on the stack, and an exception
|
|
682
706
|
// could clobber the de-allocated portion of the stack after sp has been
|
|
683
707
|
// restored.
|
|
684
|
-
|
|
708
|
+
|
|
709
|
+
ldr x16, [x0, #0x0F8] // load sp into scratch
|
|
710
|
+
ldr lr, [x0, #0x100] // restore pc into lr
|
|
711
|
+
|
|
712
|
+
#if __has_feature(ptrauth_calls)
|
|
713
|
+
// The LR is signed with its address inside the register state. Time
|
|
714
|
+
// to resign to be a regular ROP protected signed pointer
|
|
715
|
+
add x1, x0, #0x100
|
|
716
|
+
autib lr, x1
|
|
717
|
+
pacib lr, x16 // signed the scratch register for sp
|
|
718
|
+
#endif
|
|
719
|
+
|
|
685
720
|
ldp x0, x1, [x0, #0x000] // restore x0,x1
|
|
686
721
|
mov sp,x16 // restore sp
|
|
687
722
|
#if defined(__ARM_FEATURE_GCS_DEFAULT)
|
|
@@ -694,7 +729,12 @@ DEFINE_LIBUNWIND_FUNCTION(__libunwind_Registers_arm64_jumpto)
|
|
|
694
729
|
gcspushm x30
|
|
695
730
|
Lnogcs:
|
|
696
731
|
#endif
|
|
732
|
+
|
|
733
|
+
#if __has_feature(ptrauth_calls)
|
|
734
|
+
retab
|
|
735
|
+
#else
|
|
697
736
|
ret x30 // jump to pc
|
|
737
|
+
#endif
|
|
698
738
|
|
|
699
739
|
#elif defined(__arm__) && !defined(__APPLE__)
|
|
700
740
|
|
|
@@ -1253,7 +1293,8 @@ DEFINE_LIBUNWIND_FUNCTION(_ZN9libunwind19Registers_loongarch6jumptoEv)
|
|
|
1253
1293
|
|
|
1254
1294
|
#endif
|
|
1255
1295
|
|
|
1256
|
-
#endif /* !defined(__USING_SJLJ_EXCEPTIONS__)
|
|
1296
|
+
#endif /* !defined(__USING_SJLJ_EXCEPTIONS__) */
|
|
1257
1297
|
|
|
1258
1298
|
NO_EXEC_STACK_DIRECTIVE
|
|
1259
1299
|
|
|
1300
|
+
#endif /* !defined(__wasm__) */
|
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
//
|
|
7
7
|
//===----------------------------------------------------------------------===//
|
|
8
8
|
|
|
9
|
+
#if !defined(__wasm__)
|
|
10
|
+
|
|
9
11
|
#include "assembly.h"
|
|
10
12
|
|
|
11
13
|
#define FROM_0_TO_15 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
|
|
@@ -16,13 +18,16 @@
|
|
|
16
18
|
|
|
17
19
|
#if defined(_AIX)
|
|
18
20
|
.toc
|
|
21
|
+
#elif defined(__aarch64__) && defined(__ELF__) && defined(_LIBUNWIND_EXECUTE_ONLY_CODE)
|
|
22
|
+
.section .text,"axy",@progbits,unique,0
|
|
19
23
|
#else
|
|
20
24
|
.text
|
|
21
25
|
#endif
|
|
22
26
|
|
|
23
|
-
#if !defined(__USING_SJLJ_EXCEPTIONS__)
|
|
27
|
+
#if !defined(__USING_SJLJ_EXCEPTIONS__)
|
|
24
28
|
|
|
25
29
|
#if defined(__i386__)
|
|
30
|
+
.att_syntax
|
|
26
31
|
|
|
27
32
|
#
|
|
28
33
|
# extern int __unw_getcontext(unw_context_t* thread_state)
|
|
@@ -107,6 +112,7 @@ DEFINE_LIBUNWIND_FUNCTION("#__unw_getcontext")
|
|
|
107
112
|
.text
|
|
108
113
|
|
|
109
114
|
#elif defined(__x86_64__)
|
|
115
|
+
.att_syntax
|
|
110
116
|
|
|
111
117
|
#
|
|
112
118
|
# extern int __unw_getcontext(unw_context_t* thread_state)
|
|
@@ -759,6 +765,10 @@ LnoR2Fix:
|
|
|
759
765
|
|
|
760
766
|
#elif defined(__aarch64__)
|
|
761
767
|
|
|
768
|
+
#ifndef __has_feature
|
|
769
|
+
#define __has_feature(__feature) 0
|
|
770
|
+
#endif
|
|
771
|
+
|
|
762
772
|
//
|
|
763
773
|
// extern int __unw_getcontext(unw_context_t* thread_state)
|
|
764
774
|
//
|
|
@@ -767,6 +777,11 @@ LnoR2Fix:
|
|
|
767
777
|
//
|
|
768
778
|
.p2align 2
|
|
769
779
|
DEFINE_LIBUNWIND_FUNCTION(__unw_getcontext)
|
|
780
|
+
|
|
781
|
+
#if __has_feature(ptrauth_calls)
|
|
782
|
+
pacibsp
|
|
783
|
+
#endif
|
|
784
|
+
|
|
770
785
|
stp x0, x1, [x0, #0x000]
|
|
771
786
|
stp x2, x3, [x0, #0x010]
|
|
772
787
|
stp x4, x5, [x0, #0x020]
|
|
@@ -807,7 +822,74 @@ DEFINE_LIBUNWIND_FUNCTION(__unw_getcontext)
|
|
|
807
822
|
str d31, [x0, #0x208]
|
|
808
823
|
#endif
|
|
809
824
|
mov x0, #0 // return UNW_ESUCCESS
|
|
825
|
+
|
|
826
|
+
#if __has_feature(ptrauth_calls)
|
|
827
|
+
retab
|
|
828
|
+
#else
|
|
829
|
+
ret
|
|
830
|
+
#endif
|
|
831
|
+
|
|
832
|
+
//
|
|
833
|
+
// extern "C" int64_t __libunwind_Registers_arm64_za_disable()
|
|
834
|
+
//
|
|
835
|
+
// This function implements the requirements of the __arm_za_disable ABI
|
|
836
|
+
// routine, except that it will not abort; it will return a non-zero value
|
|
837
|
+
// to signify the routine failed.
|
|
838
|
+
//
|
|
839
|
+
// Note: This function uses SME instructions. It must only be called if SME
|
|
840
|
+
// has been confirmed to be available.
|
|
841
|
+
//
|
|
842
|
+
// On return:
|
|
843
|
+
//
|
|
844
|
+
// A status is placed in x0. A zero value indicates success; any non-zero
|
|
845
|
+
// value indicates failure.
|
|
846
|
+
//
|
|
847
|
+
.p2align 2
|
|
848
|
+
DEFINE_LIBUNWIND_FUNCTION(__libunwind_Registers_arm64_za_disable)
|
|
849
|
+
.variant_pcs __libunwind_Registers_arm64_za_disable
|
|
850
|
+
#if __has_feature(ptrauth_calls)
|
|
851
|
+
pacibsp
|
|
852
|
+
#endif
|
|
853
|
+
// If TPIDR2_EL0 is null, the subroutine just disables ZA.
|
|
854
|
+
.inst 0xd53bd0b0 // mrs x16, TPIDR2_EL0
|
|
855
|
+
cbz x16, 1f
|
|
856
|
+
|
|
857
|
+
// If any of the reserved bytes in the first 16 bytes of the TPIDR2 block are
|
|
858
|
+
// nonzero, return a non-zero value (libunwind will then abort).
|
|
859
|
+
ldrh w0, [x16, #10]
|
|
860
|
+
cbnz w0, 2f
|
|
861
|
+
ldr w0, [x16, #12]
|
|
862
|
+
cbnz w0, 2f
|
|
863
|
+
|
|
864
|
+
// If num_za_save_slices is zero, the subroutine just disables ZA.
|
|
865
|
+
ldrh w0, [x16, #8]
|
|
866
|
+
cbz x0, 1f
|
|
867
|
+
|
|
868
|
+
// If za_save_buffer is NULL, the subroutine just disables ZA.
|
|
869
|
+
ldr x16, [x16]
|
|
870
|
+
cbz x16, 1f
|
|
871
|
+
|
|
872
|
+
// Store ZA to za_save_buffer.
|
|
873
|
+
mov x15, xzr
|
|
874
|
+
0:
|
|
875
|
+
.inst 0xe1206200 // str za[w15,0], [x16]
|
|
876
|
+
.inst 0x04305830 // addsvl x16, x16, #1
|
|
877
|
+
add x15, x15, #1
|
|
878
|
+
cmp x0, x15
|
|
879
|
+
b.ne 0b
|
|
880
|
+
1:
|
|
881
|
+
// * Set TPIDR2_EL0 to null.
|
|
882
|
+
.inst 0xd51bd0bf // msr TPIDR2_EL0, xzr
|
|
883
|
+
// * Set PSTATE.ZA to 0.
|
|
884
|
+
.inst 0xd503447f // smstop za
|
|
885
|
+
// * Return zero (success)
|
|
886
|
+
mov x0, xzr
|
|
887
|
+
2:
|
|
888
|
+
#if __has_feature(ptrauth_calls)
|
|
889
|
+
retab
|
|
890
|
+
#else
|
|
810
891
|
ret
|
|
892
|
+
#endif
|
|
811
893
|
|
|
812
894
|
#elif defined(__arm__) && !defined(__APPLE__)
|
|
813
895
|
|
|
@@ -1232,6 +1314,8 @@ DEFINE_LIBUNWIND_FUNCTION(__unw_getcontext)
|
|
|
1232
1314
|
WEAK_ALIAS(__unw_getcontext, unw_getcontext)
|
|
1233
1315
|
#endif
|
|
1234
1316
|
|
|
1235
|
-
#endif /* !defined(__USING_SJLJ_EXCEPTIONS__)
|
|
1317
|
+
#endif /* !defined(__USING_SJLJ_EXCEPTIONS__) */
|
|
1236
1318
|
|
|
1237
1319
|
NO_EXEC_STACK_DIRECTIVE
|
|
1320
|
+
|
|
1321
|
+
#endif /* !defined(__wasm__) */
|
package/libunwind/src/assembly.h
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
#ifndef UNWIND_ASSEMBLY_H
|
|
16
16
|
#define UNWIND_ASSEMBLY_H
|
|
17
17
|
|
|
18
|
-
#if defined(
|
|
18
|
+
#if defined(__CET__)
|
|
19
19
|
#include <cet.h>
|
|
20
20
|
#define _LIBUNWIND_CET_ENDBR _CET_ENDBR
|
|
21
21
|
#else
|
|
@@ -132,6 +132,10 @@
|
|
|
132
132
|
|
|
133
133
|
#if defined(__APPLE__)
|
|
134
134
|
|
|
135
|
+
#if defined(__aarch64__) || defined(__arm64__) || defined(__arm64e__)
|
|
136
|
+
#define _LIBUNWIND_TRACE_RET_INJECT 1
|
|
137
|
+
#endif
|
|
138
|
+
|
|
135
139
|
#define SYMBOL_IS_FUNC(name)
|
|
136
140
|
#define HIDDEN_SYMBOL(name) .private_extern name
|
|
137
141
|
#if defined(_LIBUNWIND_HIDE_SYMBOLS)
|
package/libunwind/src/config.h
CHANGED
|
@@ -28,6 +28,9 @@
|
|
|
28
28
|
#define _LIBUNWIND_SUPPORT_COMPACT_UNWIND 1
|
|
29
29
|
#define _LIBUNWIND_SUPPORT_DWARF_UNWIND 1
|
|
30
30
|
#endif
|
|
31
|
+
#if defined(__aarch64__) || defined(__arm64__) || defined(__arm64e__)
|
|
32
|
+
#define _LIBUNWIND_TRACE_RET_INJECT 1
|
|
33
|
+
#endif
|
|
31
34
|
#elif defined(_WIN32)
|
|
32
35
|
#ifdef __SEH__
|
|
33
36
|
#define _LIBUNWIND_SUPPORT_SEH_UNWIND 1
|
|
@@ -61,6 +64,12 @@
|
|
|
61
64
|
#endif
|
|
62
65
|
#endif
|
|
63
66
|
|
|
67
|
+
#ifdef _LIBUNWIND_TRACE_RET_INJECT
|
|
68
|
+
#define _LIBUNWIND_TRACE_NO_INLINE __attribute__((noinline, disable_tail_calls))
|
|
69
|
+
#else
|
|
70
|
+
#define _LIBUNWIND_TRACE_NO_INLINE
|
|
71
|
+
#endif
|
|
72
|
+
|
|
64
73
|
#if defined(_LIBUNWIND_HIDE_SYMBOLS)
|
|
65
74
|
// The CMake file passes -fvisibility=hidden to control ELF/Mach-O visibility.
|
|
66
75
|
#define _LIBUNWIND_EXPORT
|
|
@@ -31,6 +31,58 @@ EXCEPTION_DISPOSITION _GCC_specific_handler(PEXCEPTION_RECORD, void *, PCONTEXT,
|
|
|
31
31
|
_Unwind_Personality_Fn);
|
|
32
32
|
#endif
|
|
33
33
|
|
|
34
|
+
#ifndef __has_feature
|
|
35
|
+
#define __has_feature(__feature) 0
|
|
36
|
+
#endif
|
|
37
|
+
|
|
38
|
+
#if __has_feature(ptrauth_calls)
|
|
39
|
+
#include <ptrauth.h>
|
|
40
|
+
|
|
41
|
+
// `__ptrauth_restricted_intptr` is a feature of apple clang that predates
|
|
42
|
+
// support for direct application of `__ptrauth` to integer types. This
|
|
43
|
+
// guard is necessary to support compilation with those compiler.
|
|
44
|
+
#if __has_feature(ptrauth_restricted_intptr_qualifier)
|
|
45
|
+
#define __ptrauth_gcc_personality_intptr(key, addressDiscriminated, \
|
|
46
|
+
discriminator) \
|
|
47
|
+
__ptrauth_restricted_intptr(key, addressDiscriminated, discriminator)
|
|
48
|
+
#else
|
|
49
|
+
#define __ptrauth_gcc_personality_intptr(key, addressDiscriminated, \
|
|
50
|
+
discriminator) \
|
|
51
|
+
__ptrauth(key, addressDiscriminated, discriminator)
|
|
52
|
+
#endif
|
|
53
|
+
#else
|
|
54
|
+
#define __ptrauth_gcc_personality_intptr(...)
|
|
55
|
+
#endif
|
|
56
|
+
|
|
57
|
+
#define __ptrauth_gcc_personality_func_key ptrauth_key_function_pointer
|
|
58
|
+
|
|
59
|
+
// ptrauth_string_discriminator("__gcc_personality_v0'funcStart") == 0xDFEB
|
|
60
|
+
#define __ptrauth_gcc_personality_func_start \
|
|
61
|
+
__ptrauth_gcc_personality_intptr(__ptrauth_gcc_personality_func_key, 1, \
|
|
62
|
+
0xDFEB)
|
|
63
|
+
|
|
64
|
+
// ptrauth_string_discriminator("__gcc_personality_v0'start") == 0x52DC
|
|
65
|
+
#define __ptrauth_gcc_personality_start \
|
|
66
|
+
__ptrauth_gcc_personality_intptr(__ptrauth_gcc_personality_func_key, 1, \
|
|
67
|
+
0x52DC)
|
|
68
|
+
|
|
69
|
+
// ptrauth_string_discriminator("__gcc_personality_v0'length") == 0xFFF7
|
|
70
|
+
#define __ptrauth_gcc_personality_length \
|
|
71
|
+
__ptrauth_gcc_personality_intptr(__ptrauth_gcc_personality_func_key, 1, \
|
|
72
|
+
0xFFF7)
|
|
73
|
+
|
|
74
|
+
// ptrauth_string_discriminator("__gcc_personality_v0'landingPadOffset") ==
|
|
75
|
+
// 0x6498
|
|
76
|
+
#define __ptrauth_gcc_personality_lpoffset \
|
|
77
|
+
__ptrauth_gcc_personality_intptr(__ptrauth_gcc_personality_func_key, 1, \
|
|
78
|
+
0x6498)
|
|
79
|
+
|
|
80
|
+
// ptrauth_string_discriminator("__gcc_personality_v0'landingPad") == 0xA134
|
|
81
|
+
#define __ptrauth_gcc_personality_lpad_disc 0xA134
|
|
82
|
+
#define __ptrauth_gcc_personality_lpad \
|
|
83
|
+
__ptrauth_gcc_personality_intptr(__ptrauth_gcc_personality_func_key, 1, \
|
|
84
|
+
__ptrauth_gcc_personality_lpad_disc)
|
|
85
|
+
|
|
34
86
|
// Pointer encodings documented at:
|
|
35
87
|
// http://refspecs.freestandards.org/LSB_1.3.0/gLSB/gLSB/ehframehdr.html
|
|
36
88
|
|
|
@@ -206,7 +258,8 @@ COMPILER_RT_ABI _Unwind_Reason_Code __gcc_personality_v0(
|
|
|
206
258
|
return continueUnwind(exceptionObject, context);
|
|
207
259
|
|
|
208
260
|
uintptr_t pc = (uintptr_t)_Unwind_GetIP(context) - 1;
|
|
209
|
-
uintptr_t funcStart =
|
|
261
|
+
uintptr_t __ptrauth_gcc_personality_func_start funcStart =
|
|
262
|
+
(uintptr_t)_Unwind_GetRegionStart(context);
|
|
210
263
|
uintptr_t pcOffset = pc - funcStart;
|
|
211
264
|
|
|
212
265
|
// Parse LSDA header.
|
|
@@ -225,11 +278,14 @@ COMPILER_RT_ABI _Unwind_Reason_Code __gcc_personality_v0(
|
|
|
225
278
|
const uint8_t *callSiteTableEnd = callSiteTableStart + callSiteTableLength;
|
|
226
279
|
const uint8_t *p = callSiteTableStart;
|
|
227
280
|
while (p < callSiteTableEnd) {
|
|
228
|
-
uintptr_t start =
|
|
229
|
-
|
|
230
|
-
size_t
|
|
281
|
+
uintptr_t __ptrauth_gcc_personality_start start =
|
|
282
|
+
readEncodedPointer(&p, callSiteEncoding);
|
|
283
|
+
size_t __ptrauth_gcc_personality_length length =
|
|
284
|
+
readEncodedPointer(&p, callSiteEncoding);
|
|
285
|
+
size_t __ptrauth_gcc_personality_lpoffset landingPadOffset =
|
|
286
|
+
readEncodedPointer(&p, callSiteEncoding);
|
|
231
287
|
readULEB128(&p); // action value not used for C code
|
|
232
|
-
if (
|
|
288
|
+
if (landingPadOffset == 0)
|
|
233
289
|
continue; // no landing pad for this entry
|
|
234
290
|
if ((start <= pcOffset) && (pcOffset < (start + length))) {
|
|
235
291
|
// Found landing pad for the PC.
|
|
@@ -239,7 +295,24 @@ COMPILER_RT_ABI _Unwind_Reason_Code __gcc_personality_v0(
|
|
|
239
295
|
_Unwind_SetGR(context, __builtin_eh_return_data_regno(0),
|
|
240
296
|
(uintptr_t)exceptionObject);
|
|
241
297
|
_Unwind_SetGR(context, __builtin_eh_return_data_regno(1), 0);
|
|
242
|
-
|
|
298
|
+
size_t __ptrauth_gcc_personality_lpad landingPad =
|
|
299
|
+
funcStart + landingPadOffset;
|
|
300
|
+
#if __has_feature(ptrauth_calls)
|
|
301
|
+
uintptr_t stackPointer = _Unwind_GetGR(context, -2);
|
|
302
|
+
const uintptr_t existingDiscriminator = ptrauth_blend_discriminator(
|
|
303
|
+
&landingPad, __ptrauth_gcc_personality_lpad_disc);
|
|
304
|
+
// newIP is authenticated as if it were qualified with a pseudo qualifier
|
|
305
|
+
// along the lines of:
|
|
306
|
+
// __ptrauth(ptrauth_key_return_address, <stackPointer>, 0)
|
|
307
|
+
// where the stack pointer is used in place of the strict storage
|
|
308
|
+
// address.
|
|
309
|
+
uintptr_t newIP = (uintptr_t)ptrauth_auth_and_resign(
|
|
310
|
+
*(void **)&landingPad, __ptrauth_gcc_personality_func_key,
|
|
311
|
+
existingDiscriminator, ptrauth_key_return_address, stackPointer);
|
|
312
|
+
_Unwind_SetIP(context, newIP);
|
|
313
|
+
#else
|
|
314
|
+
_Unwind_SetIP(context, landingPad);
|
|
315
|
+
#endif
|
|
243
316
|
return _URC_INSTALL_CONTEXT;
|
|
244
317
|
}
|
|
245
318
|
}
|
|
@@ -118,14 +118,55 @@ _LIBUNWIND_HIDDEN int __unw_set_reg(unw_cursor_t *cursor, unw_regnum_t regNum,
|
|
|
118
118
|
typedef LocalAddressSpace::pint_t pint_t;
|
|
119
119
|
AbstractUnwindCursor *co = (AbstractUnwindCursor *)cursor;
|
|
120
120
|
if (co->validReg(regNum)) {
|
|
121
|
-
co->setReg(regNum, (pint_t)value);
|
|
122
121
|
// special case altering IP to re-find info (being called by personality
|
|
123
122
|
// function)
|
|
124
123
|
if (regNum == UNW_REG_IP) {
|
|
125
124
|
unw_proc_info_t info;
|
|
126
125
|
// First, get the FDE for the old location and then update it.
|
|
127
126
|
co->getInfo(&info);
|
|
128
|
-
|
|
127
|
+
|
|
128
|
+
pint_t sp = (pint_t)co->getReg(UNW_REG_SP);
|
|
129
|
+
|
|
130
|
+
#if defined(_LIBUNWIND_TARGET_AARCH64_AUTHENTICATED_UNWINDING)
|
|
131
|
+
{
|
|
132
|
+
// It is only valid to set the IP within the current function. This is
|
|
133
|
+
// important for ptrauth, otherwise the IP cannot be correctly signed.
|
|
134
|
+
// The current signature of `value` is via the schema:
|
|
135
|
+
// __ptrauth(ptrauth_key_return_address, <<sp>>, 0)
|
|
136
|
+
// For this to be generally usable we manually re-sign it to the
|
|
137
|
+
// directly supported schema:
|
|
138
|
+
// __ptrauth(ptrauth_key_return_address, 1, 0)
|
|
139
|
+
unw_word_t
|
|
140
|
+
__unwind_ptrauth_restricted_intptr(ptrauth_key_return_address, 1,
|
|
141
|
+
0) authenticated_value;
|
|
142
|
+
unw_word_t opaque_value = (uint64_t)ptrauth_auth_and_resign(
|
|
143
|
+
(void *)value, ptrauth_key_return_address, sp,
|
|
144
|
+
ptrauth_key_return_address, &authenticated_value);
|
|
145
|
+
memmove(reinterpret_cast<void *>(&authenticated_value),
|
|
146
|
+
reinterpret_cast<void *>(&opaque_value),
|
|
147
|
+
sizeof(authenticated_value));
|
|
148
|
+
if (authenticated_value < info.start_ip ||
|
|
149
|
+
authenticated_value > info.end_ip)
|
|
150
|
+
_LIBUNWIND_ABORT("PC vs frame info mismatch");
|
|
151
|
+
|
|
152
|
+
// PC should have been signed with the sp, so we verify that
|
|
153
|
+
// roundtripping does not fail. The `ptrauth_auth_and_resign` is
|
|
154
|
+
// guaranteed to trap on authentication failure even without FPAC
|
|
155
|
+
// feature.
|
|
156
|
+
pint_t pc = (pint_t)co->getReg(UNW_REG_IP);
|
|
157
|
+
if (ptrauth_auth_and_resign((void *)pc, ptrauth_key_return_address, sp,
|
|
158
|
+
ptrauth_key_return_address,
|
|
159
|
+
sp) != (void *)pc) {
|
|
160
|
+
_LIBUNWIND_LOG(
|
|
161
|
+
"Bad unwind with PAuth-enabled ABI (0x%zX, 0x%zX)->0x%zX\n", pc,
|
|
162
|
+
sp,
|
|
163
|
+
(pint_t)ptrauth_auth_data((void *)pc, ptrauth_key_return_address,
|
|
164
|
+
sp));
|
|
165
|
+
_LIBUNWIND_ABORT("Bad unwind with PAuth-enabled ABI");
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
#endif
|
|
169
|
+
|
|
129
170
|
// If the original call expects stack adjustment, perform this now.
|
|
130
171
|
// Normal frame unwinding would have included the offset already in the
|
|
131
172
|
// CFA computation.
|
|
@@ -133,7 +174,11 @@ _LIBUNWIND_HIDDEN int __unw_set_reg(unw_cursor_t *cursor, unw_regnum_t regNum,
|
|
|
133
174
|
// this should actually be - info.gp. LLVM doesn't currently support
|
|
134
175
|
// any such platforms and Clang doesn't export a macro for them.
|
|
135
176
|
if (info.gp)
|
|
136
|
-
co->setReg(UNW_REG_SP,
|
|
177
|
+
co->setReg(UNW_REG_SP, sp + info.gp);
|
|
178
|
+
co->setReg(UNW_REG_IP, value);
|
|
179
|
+
co->setInfoBasedOnIPRegister(false);
|
|
180
|
+
} else {
|
|
181
|
+
co->setReg(regNum, (pint_t)value);
|
|
137
182
|
}
|
|
138
183
|
return UNW_ESUCCESS;
|
|
139
184
|
}
|
|
@@ -205,7 +250,27 @@ _LIBUNWIND_HIDDEN int __unw_get_proc_info(unw_cursor_t *cursor,
|
|
|
205
250
|
}
|
|
206
251
|
_LIBUNWIND_WEAK_ALIAS(__unw_get_proc_info, unw_get_proc_info)
|
|
207
252
|
|
|
208
|
-
///
|
|
253
|
+
/// Rebalance the execution flow by injecting the right amount of `ret`
|
|
254
|
+
/// instruction relatively to the amount of `walkedFrames` then resume execution
|
|
255
|
+
/// at cursor position (aka longjump).
|
|
256
|
+
_LIBUNWIND_HIDDEN int __unw_resume_with_frames_walked(unw_cursor_t *cursor,
|
|
257
|
+
unsigned walkedFrames) {
|
|
258
|
+
_LIBUNWIND_TRACE_API("__unw_resume(cursor=%p, walkedFrames=%u)",
|
|
259
|
+
static_cast<void *>(cursor), walkedFrames);
|
|
260
|
+
#if __has_feature(address_sanitizer) || defined(__SANITIZE_ADDRESS__)
|
|
261
|
+
// Inform the ASan runtime that now might be a good time to clean stuff up.
|
|
262
|
+
__asan_handle_no_return();
|
|
263
|
+
#endif
|
|
264
|
+
#ifdef _LIBUNWIND_TRACE_RET_INJECT
|
|
265
|
+
AbstractUnwindCursor *co = (AbstractUnwindCursor *)cursor;
|
|
266
|
+
co->setWalkedFrames(walkedFrames);
|
|
267
|
+
#endif
|
|
268
|
+
return __unw_resume(cursor);
|
|
269
|
+
}
|
|
270
|
+
_LIBUNWIND_WEAK_ALIAS(__unw_resume_with_frames_walked,
|
|
271
|
+
unw_resume_with_frames_walked)
|
|
272
|
+
|
|
273
|
+
/// Legacy function. Resume execution at cursor position (aka longjump).
|
|
209
274
|
_LIBUNWIND_HIDDEN int __unw_resume(unw_cursor_t *cursor) {
|
|
210
275
|
_LIBUNWIND_TRACE_API("__unw_resume(cursor=%p)", static_cast<void *>(cursor));
|
|
211
276
|
#if __has_feature(address_sanitizer) || defined(__SANITIZE_ADDRESS__)
|
|
@@ -347,6 +412,41 @@ void __unw_remove_dynamic_eh_frame_section(unw_word_t eh_frame_start) {
|
|
|
347
412
|
}
|
|
348
413
|
|
|
349
414
|
#endif // defined(_LIBUNWIND_SUPPORT_DWARF_UNWIND)
|
|
415
|
+
|
|
416
|
+
/// Maps the UNW_* error code to a textual representation
|
|
417
|
+
_LIBUNWIND_HIDDEN const char *__unw_strerror(int error_code) {
|
|
418
|
+
switch (error_code) {
|
|
419
|
+
case UNW_ESUCCESS:
|
|
420
|
+
return "no error";
|
|
421
|
+
case UNW_EUNSPEC:
|
|
422
|
+
return "unspecified (general) error";
|
|
423
|
+
case UNW_ENOMEM:
|
|
424
|
+
return "out of memory";
|
|
425
|
+
case UNW_EBADREG:
|
|
426
|
+
return "bad register number";
|
|
427
|
+
case UNW_EREADONLYREG:
|
|
428
|
+
return "attempt to write read-only register";
|
|
429
|
+
case UNW_ESTOPUNWIND:
|
|
430
|
+
return "stop unwinding";
|
|
431
|
+
case UNW_EINVALIDIP:
|
|
432
|
+
return "invalid IP";
|
|
433
|
+
case UNW_EBADFRAME:
|
|
434
|
+
return "bad frame";
|
|
435
|
+
case UNW_EINVAL:
|
|
436
|
+
return "unsupported operation or bad value";
|
|
437
|
+
case UNW_EBADVERSION:
|
|
438
|
+
return "unwind info has unsupported version";
|
|
439
|
+
case UNW_ENOINFO:
|
|
440
|
+
return "no unwind info found";
|
|
441
|
+
#if defined(_LIBUNWIND_TARGET_AARCH64) && !defined(_LIBUNWIND_IS_NATIVE_ONLY)
|
|
442
|
+
case UNW_ECROSSRASIGNING:
|
|
443
|
+
return "cross unwind with return address signing";
|
|
444
|
+
#endif
|
|
445
|
+
}
|
|
446
|
+
return "invalid error code";
|
|
447
|
+
}
|
|
448
|
+
_LIBUNWIND_WEAK_ALIAS(__unw_strerror, unw_strerror)
|
|
449
|
+
|
|
350
450
|
#endif // !defined(__USING_SJLJ_EXCEPTIONS__) && !defined(__wasm__)
|
|
351
451
|
|
|
352
452
|
#ifdef __APPLE__
|
|
@@ -26,11 +26,16 @@ extern "C" {
|
|
|
26
26
|
extern int __unw_getcontext(unw_context_t *);
|
|
27
27
|
extern int __unw_init_local(unw_cursor_t *, unw_context_t *);
|
|
28
28
|
extern int __unw_step(unw_cursor_t *);
|
|
29
|
+
extern int __unw_step_stage2(unw_cursor_t *);
|
|
29
30
|
extern int __unw_get_reg(unw_cursor_t *, unw_regnum_t, unw_word_t *);
|
|
30
31
|
extern int __unw_get_fpreg(unw_cursor_t *, unw_regnum_t, unw_fpreg_t *);
|
|
31
32
|
extern int __unw_set_reg(unw_cursor_t *, unw_regnum_t, unw_word_t);
|
|
32
33
|
extern int __unw_set_fpreg(unw_cursor_t *, unw_regnum_t, unw_fpreg_t);
|
|
33
|
-
|
|
34
|
+
_LIBUNWIND_TRACE_NO_INLINE
|
|
35
|
+
extern int __unw_resume_with_frames_walked(unw_cursor_t *, unsigned);
|
|
36
|
+
// `__unw_resume` is a legacy function. Use `__unw_resume_with_frames_walked` instead.
|
|
37
|
+
_LIBUNWIND_TRACE_NO_INLINE
|
|
38
|
+
extern int __unw_resume(unw_cursor_t *);
|
|
34
39
|
|
|
35
40
|
#ifdef __arm__
|
|
36
41
|
/* Save VFP registers in FSTMX format (instead of FSTMD). */
|
|
@@ -42,6 +47,7 @@ extern int __unw_get_proc_info(unw_cursor_t *, unw_proc_info_t *);
|
|
|
42
47
|
extern int __unw_is_fpreg(unw_cursor_t *, unw_regnum_t);
|
|
43
48
|
extern int __unw_is_signal_frame(unw_cursor_t *);
|
|
44
49
|
extern int __unw_get_proc_name(unw_cursor_t *, char *, size_t, unw_word_t *);
|
|
50
|
+
extern const char *__unw_strerror(int);
|
|
45
51
|
|
|
46
52
|
#if defined(_AIX)
|
|
47
53
|
extern uintptr_t __unw_get_data_rel_base(unw_cursor_t *);
|
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
|
|
13
13
|
#include "libunwind.h"
|
|
14
14
|
|
|
15
|
-
// Currently, CET is implemented on
|
|
16
|
-
#if defined(
|
|
15
|
+
// Currently, CET is implemented on some ELF x86 platforms.
|
|
16
|
+
#if defined(__CET__) && defined(__SHSTK__)
|
|
17
17
|
#define _LIBUNWIND_USE_CET 1
|
|
18
18
|
#endif
|
|
19
19
|
|