grpc 1.56.2 → 1.58.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Makefile +549 -292
- data/include/grpc/event_engine/event_engine.h +22 -33
- data/include/grpc/event_engine/memory_allocator.h +2 -2
- data/include/grpc/impl/channel_arg_names.h +371 -0
- data/include/grpc/impl/grpc_types.h +1 -350
- data/include/grpc/module.modulemap +1 -0
- data/include/grpc/support/port_platform.h +29 -23
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +1 -1
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +2 -1
- data/src/core/ext/filters/client_channel/client_channel.cc +51 -11
- data/src/core/ext/filters/client_channel/dynamic_filters.h +3 -3
- data/src/core/ext/filters/client_channel/http_proxy.cc +6 -1
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +27 -53
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +23 -9
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +25 -35
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +79 -132
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +2 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +4 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +3 -1
- data/src/core/ext/filters/client_channel/lb_policy/health_check_client.cc +42 -17
- data/src/core/ext/filters/client_channel/lb_policy/health_check_client.h +3 -5
- data/src/core/ext/filters/client_channel/lb_policy/health_check_client_internal.h +22 -6
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +4 -2
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric_internal.h +2 -0
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +97 -71
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +2 -16
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +152 -101
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.h +20 -0
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +13 -34
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +6 -7
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +21 -79
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +32 -20
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +12 -4
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +13 -42
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +3 -67
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +8 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +31 -74
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +7 -51
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +22 -90
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +16 -50
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +12 -74
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +2 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +102 -11
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +9 -4
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +4 -1
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_plugin.cc +6 -0
- data/src/core/ext/filters/client_channel/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +107 -70
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +10 -4
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +1 -0
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +25 -13
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +367 -312
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +17 -1
- data/src/core/ext/filters/client_channel/retry_filter.cc +39 -2498
- data/src/core/ext/filters/client_channel/retry_filter.h +92 -1
- data/src/core/ext/filters/client_channel/retry_filter_legacy_call_data.cc +2052 -0
- data/src/core/ext/filters/client_channel/retry_filter_legacy_call_data.h +442 -0
- data/src/core/ext/filters/client_channel/retry_service_config.cc +1 -1
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +39 -59
- data/src/core/ext/filters/client_channel/subchannel.cc +9 -5
- data/src/core/ext/filters/client_channel/subchannel.h +11 -5
- data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +3 -0
- data/src/core/ext/filters/deadline/deadline_filter.cc +1 -1
- data/src/core/ext/filters/http/client/http_client_filter.cc +1 -0
- data/src/core/ext/filters/http/client_authority_filter.cc +1 -1
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +1 -0
- data/src/core/ext/filters/http/server/http_server_filter.cc +1 -1
- data/src/core/ext/filters/message_size/message_size_filter.cc +1 -0
- data/src/core/ext/filters/rbac/rbac_filter.cc +40 -111
- data/src/core/ext/filters/rbac/rbac_filter.h +12 -30
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +4 -7
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +162 -86
- data/src/core/ext/filters/stateful_session/stateful_session_filter.h +0 -6
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +1 -0
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +15 -16
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +463 -519
- data/src/core/ext/transport/chttp2/transport/decode_huff.cc +6569 -174
- data/src/core/ext/transport/chttp2/transport/decode_huff.h +2278 -441
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +6 -20
- data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +4 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +72 -12
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +7 -2
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +4 -4
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +3 -2
- data/src/core/ext/transport/chttp2/transport/internal.h +38 -61
- data/src/core/ext/transport/chttp2/transport/parsing.cc +31 -10
- data/src/core/ext/transport/chttp2/transport/ping_abuse_policy.cc +80 -0
- data/src/core/ext/transport/chttp2/transport/ping_abuse_policy.h +55 -0
- data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +98 -0
- data/src/core/ext/transport/chttp2/transport/ping_rate_policy.h +73 -0
- data/src/core/ext/transport/chttp2/transport/writing.cc +82 -91
- data/src/core/ext/transport/inproc/inproc_transport.cc +1 -0
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +27 -6
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +143 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +2 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +0 -39
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +13 -8
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +35 -6
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +17 -13
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +85 -20
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +26 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +45 -3
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +4 -3
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +21 -0
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +30 -6
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +180 -0
- data/src/core/ext/upb-generated/envoy/data/accesslog/v3/accesslog.upb.c +558 -0
- data/src/core/ext/upb-generated/envoy/data/accesslog/v3/accesslog.upb.h +2710 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +30 -11
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +53 -24
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +30 -5
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +110 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +41 -15
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +150 -27
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb.c +47 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb.h +93 -0
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +88 -76
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +11 -12
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +0 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +162 -160
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +129 -118
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +141 -135
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.c +19 -12
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +38 -30
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/data/accesslog/v3/accesslog.upbdefs.c +402 -0
- data/src/core/ext/upbdefs-generated/envoy/data/accesslog/v3/accesslog.upbdefs.h +111 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +80 -74
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +63 -47
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +315 -293
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +29 -29
- data/src/core/ext/xds/xds_bootstrap_grpc.cc +33 -30
- data/src/core/ext/xds/xds_bootstrap_grpc.h +5 -13
- data/src/core/ext/xds/xds_client_grpc.cc +12 -6
- data/src/core/ext/xds/xds_client_grpc.h +16 -2
- data/src/core/ext/xds/xds_client_stats.h +10 -0
- data/src/core/ext/xds/xds_cluster.cc +26 -16
- data/src/core/ext/xds/xds_endpoint.cc +4 -7
- data/src/core/ext/xds/xds_health_status.cc +0 -17
- data/src/core/ext/xds/xds_health_status.h +5 -25
- data/src/core/ext/xds/xds_http_fault_filter.cc +1 -2
- data/src/core/ext/xds/xds_http_fault_filter.h +1 -2
- data/src/core/ext/xds/xds_http_filters.h +2 -4
- data/src/core/ext/xds/xds_http_rbac_filter.cc +3 -8
- data/src/core/ext/xds/xds_http_rbac_filter.h +1 -2
- data/src/core/ext/xds/xds_http_stateful_session_filter.cc +1 -2
- data/src/core/ext/xds/xds_http_stateful_session_filter.h +1 -2
- data/src/core/ext/xds/xds_lb_policy_registry.cc +36 -0
- data/src/core/ext/xds/xds_route_config.cc +4 -0
- data/src/core/ext/xds/xds_routing.cc +2 -2
- data/src/core/ext/xds/xds_transport_grpc.cc +2 -3
- data/src/core/lib/address_utils/parse_address.cc +63 -1
- data/src/core/lib/address_utils/parse_address.h +8 -0
- data/src/core/lib/address_utils/sockaddr_utils.cc +46 -1
- data/src/core/lib/address_utils/sockaddr_utils.h +2 -2
- data/src/core/lib/avl/avl.h +10 -173
- data/src/core/lib/channel/call_tracer.cc +289 -0
- data/src/core/lib/channel/call_tracer.h +35 -0
- data/src/core/lib/channel/channel_args.cc +98 -82
- data/src/core/lib/channel/channel_args.h +32 -17
- data/src/core/lib/channel/connected_channel.cc +4 -2
- data/src/core/lib/channel/promise_based_filter.cc +4 -1
- data/src/core/lib/channel/promise_based_filter.h +1 -0
- data/src/core/lib/compression/compression_internal.cc +8 -4
- data/src/core/lib/debug/stats_data.cc +93 -21
- data/src/core/lib/debug/stats_data.h +41 -0
- data/src/core/lib/debug/trace.cc +1 -4
- data/src/core/lib/event_engine/ares_resolver.cc +712 -0
- data/src/core/lib/event_engine/ares_resolver.h +150 -0
- data/src/core/lib/event_engine/cf_engine/cf_engine.cc +10 -3
- data/src/core/lib/event_engine/cf_engine/cf_engine.h +1 -1
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +2 -2
- data/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc +229 -0
- data/src/core/lib/event_engine/cf_engine/dns_service_resolver.h +117 -0
- data/src/core/lib/event_engine/event_engine.cc +0 -12
- data/src/core/lib/event_engine/forkable.cc +62 -43
- data/src/core/lib/event_engine/forkable.h +15 -0
- data/src/core/lib/event_engine/grpc_polled_fd.h +73 -0
- data/src/core/lib/event_engine/handle_containers.h +0 -4
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +4 -6
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +29 -9
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +10 -1
- data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +197 -0
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +28 -14
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +3 -1
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +49 -2
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +20 -13
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +37 -27
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +2 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +4 -2
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +43 -2
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +6 -0
- data/src/core/lib/event_engine/posix_engine/timer.h +10 -37
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +2 -0
- data/src/core/lib/event_engine/tcp_socket_utils.cc +67 -7
- data/src/core/lib/event_engine/tcp_socket_utils.h +3 -0
- data/src/core/lib/event_engine/thread_pool/thread_count.cc +58 -0
- data/src/core/lib/event_engine/thread_pool/thread_count.h +161 -0
- data/src/core/lib/event_engine/thread_pool/thread_pool_factory.cc +7 -0
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +122 -94
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +22 -48
- data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +12 -21
- data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +8 -12
- data/src/core/lib/event_engine/windows/windows_endpoint.cc +58 -58
- data/src/core/lib/event_engine/windows/windows_endpoint.h +15 -12
- data/src/core/lib/event_engine/windows/windows_engine.cc +2 -1
- data/src/core/lib/event_engine/windows/windows_engine.h +8 -12
- data/src/core/lib/experiments/config.cc +74 -22
- data/src/core/lib/experiments/config.h +20 -8
- data/src/core/lib/experiments/experiments.cc +206 -91
- data/src/core/lib/experiments/experiments.h +71 -14
- data/src/core/lib/gprpp/dual_ref_counted.h +9 -9
- data/src/core/lib/gprpp/fork.cc +8 -9
- data/src/core/lib/gprpp/fork.h +6 -5
- data/src/core/lib/gprpp/if_list.h +4530 -0
- data/src/core/lib/gprpp/orphanable.h +3 -3
- data/src/core/lib/gprpp/ref_counted.h +9 -7
- data/src/core/lib/gprpp/ref_counted_string.cc +44 -0
- data/src/core/lib/gprpp/ref_counted_string.h +146 -0
- data/src/core/lib/gprpp/sorted_pack.h +3 -12
- data/src/core/lib/gprpp/status_helper.h +16 -15
- data/src/core/lib/gprpp/time.h +13 -1
- data/src/core/lib/gprpp/type_list.h +32 -0
- data/src/core/lib/gprpp/work_serializer.cc +36 -0
- data/src/core/lib/gprpp/work_serializer.h +5 -0
- data/src/core/lib/http/httpcli.h +6 -9
- data/src/core/lib/http/httpcli_security_connector.cc +1 -0
- data/src/core/lib/iomgr/buffer_list.cc +2 -0
- data/src/core/lib/iomgr/error.cc +32 -2
- data/src/core/lib/iomgr/error.h +9 -10
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +5 -7
- data/src/core/lib/iomgr/ev_poll_posix.cc +6 -5
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +7 -22
- data/src/core/lib/iomgr/exec_ctx.h +11 -0
- data/src/core/lib/iomgr/pollset.h +4 -5
- data/src/core/lib/iomgr/port.h +10 -0
- data/src/core/lib/iomgr/resolve_address.cc +13 -1
- data/src/core/lib/iomgr/resolve_address.h +17 -3
- data/src/core/lib/iomgr/sockaddr_posix.h +7 -0
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +29 -0
- data/src/core/lib/iomgr/socket_utils_posix.cc +2 -0
- data/src/core/lib/iomgr/socket_utils_posix.h +6 -0
- data/src/core/lib/iomgr/tcp_client_posix.cc +4 -1
- data/src/core/lib/iomgr/tcp_posix.cc +24 -7
- data/src/core/lib/iomgr/tcp_server_posix.cc +3 -2
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +5 -2
- data/src/core/lib/iomgr/tcp_windows.cc +1 -3
- data/src/core/lib/iomgr/vsock.cc +59 -0
- data/src/core/lib/iomgr/vsock.h +38 -0
- data/src/core/lib/iomgr/wakeup_fd_posix.h +3 -6
- data/src/core/lib/load_balancing/delegating_helper.h +115 -0
- data/src/core/lib/load_balancing/lb_policy.h +20 -0
- data/src/core/lib/load_balancing/subchannel_interface.h +6 -0
- data/src/core/lib/promise/detail/basic_seq.h +1 -372
- data/src/core/lib/promise/detail/seq_state.h +2076 -0
- data/src/core/lib/promise/party.h +1 -1
- data/src/core/lib/promise/seq.h +19 -2
- data/src/core/lib/promise/sleep.h +5 -10
- data/src/core/lib/promise/try_seq.h +34 -2
- data/src/core/lib/resolver/resolver_factory.h +3 -2
- data/src/core/lib/resolver/server_address.cc +9 -94
- data/src/core/lib/resolver/server_address.h +10 -64
- data/src/core/lib/resource_quota/api.cc +1 -0
- data/src/core/lib/resource_quota/arena.cc +2 -0
- data/src/core/lib/resource_quota/arena.h +42 -8
- data/src/core/lib/resource_quota/memory_quota.cc +0 -1
- data/src/core/lib/resource_quota/memory_quota.h +1 -1
- data/src/core/lib/resource_quota/resource_quota.h +1 -0
- data/src/core/lib/security/authorization/authorization_policy_provider.h +1 -1
- data/src/core/lib/security/authorization/rbac_policy.h +1 -1
- data/src/core/lib/security/credentials/channel_creds_registry.h +51 -27
- data/src/core/lib/security/credentials/channel_creds_registry_init.cc +169 -9
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +1 -1
- data/src/core/lib/security/credentials/composite/composite_credentials.h +3 -1
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +8 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +40 -1
- data/src/core/lib/security/credentials/external/external_account_credentials.h +6 -0
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +30 -38
- data/src/core/lib/security/credentials/fake/fake_credentials.h +28 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +1 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +17 -0
- data/src/core/lib/security/credentials/jwt/json_token.h +4 -0
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +42 -0
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +1 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +4 -0
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +2 -1
- data/src/core/lib/security/credentials/tls/tls_credentials.h +3 -1
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +1 -0
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +1 -0
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +1 -0
- data/src/core/lib/security/security_connector/ssl_utils.cc +1 -0
- data/src/core/lib/security/transport/client_auth_filter.cc +8 -5
- data/src/core/lib/security/transport/security_handshaker.cc +1 -0
- data/src/core/lib/security/transport/server_auth_filter.cc +2 -0
- data/src/core/lib/service_config/service_config_call_data.h +5 -0
- data/src/core/lib/slice/slice.h +16 -0
- data/src/core/lib/surface/call.cc +63 -37
- data/src/core/lib/surface/channel.cc +1 -0
- data/src/core/lib/surface/completion_queue.cc +10 -0
- data/src/core/lib/surface/init.cc +1 -0
- data/src/core/lib/surface/server.cc +67 -64
- data/src/core/lib/surface/server.h +1 -15
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/metadata_batch.cc +7 -7
- data/src/core/lib/transport/metadata_batch.h +86 -48
- data/src/core/lib/transport/parsed_metadata.h +34 -20
- data/src/core/lib/transport/simple_slice_based_metadata.h +9 -2
- data/src/core/tsi/alts/crypt/aes_gcm.cc +27 -2
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +4 -6
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +1 -2
- data/src/core/tsi/ssl_transport_security.cc +39 -7
- data/src/ruby/bin/math_pb.rb +24 -18
- data/src/ruby/ext/grpc/extconf.rb +19 -18
- data/src/ruby/ext/grpc/rb_call.c +62 -39
- data/src/ruby/ext/grpc/rb_call_credentials.c +0 -1
- data/src/ruby/ext/grpc/rb_channel.c +109 -84
- data/src/ruby/ext/grpc/rb_channel.h +1 -0
- data/src/ruby/ext/grpc/rb_channel_args.c +16 -2
- data/src/ruby/ext/grpc/rb_channel_args.h +4 -0
- data/src/ruby/ext/grpc/rb_channel_credentials.c +0 -1
- data/src/ruby/ext/grpc/rb_compression_options.c +0 -1
- data/src/ruby/ext/grpc/rb_event_thread.c +22 -6
- data/src/ruby/ext/grpc/rb_event_thread.h +1 -0
- data/src/ruby/ext/grpc/rb_grpc.c +192 -30
- data/src/ruby/ext/grpc/rb_grpc.h +8 -2
- data/src/ruby/ext/grpc/rb_server.c +62 -45
- data/src/ruby/ext/grpc/rb_server_credentials.c +0 -1
- data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +0 -1
- data/src/ruby/ext/grpc/rb_xds_server_credentials.c +0 -1
- data/src/ruby/lib/grpc/generic/active_call.rb +9 -14
- data/src/ruby/lib/grpc/generic/bidi_call.rb +2 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/grpc/health/v1/health_pb.rb +24 -13
- data/src/ruby/pb/src/proto/grpc/testing/empty_pb.rb +24 -3
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +25 -111
- data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +25 -2
- data/src/ruby/pb/test/client.rb +16 -0
- data/src/ruby/spec/generic/rpc_server_spec.rb +3 -3
- data/third_party/abseil-cpp/absl/algorithm/container.h +3 -2
- data/third_party/abseil-cpp/absl/base/attributes.h +58 -5
- data/third_party/abseil-cpp/absl/base/call_once.h +1 -1
- data/third_party/abseil-cpp/absl/base/casts.h +8 -8
- data/third_party/abseil-cpp/absl/base/config.h +89 -106
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +26 -1
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +2 -2
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +50 -39
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +2 -1
- data/third_party/abseil-cpp/absl/base/internal/prefetch.h +17 -18
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +32 -3
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +24 -4
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +31 -73
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +9 -8
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +11 -11
- data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +23 -32
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +2 -3
- data/third_party/abseil-cpp/absl/base/options.h +1 -1
- data/third_party/abseil-cpp/absl/base/policy_checks.h +3 -3
- data/third_party/abseil-cpp/absl/base/prefetch.h +198 -0
- data/third_party/abseil-cpp/absl/container/fixed_array.h +54 -29
- data/third_party/abseil-cpp/absl/container/flat_hash_map.h +5 -1
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +6 -2
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +167 -79
- data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +1 -1
- data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +3 -21
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +1 -1
- data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +46 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +2 -0
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +85 -26
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +35 -18
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +70 -29
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +437 -236
- data/third_party/abseil-cpp/absl/crc/crc32c.h +8 -1
- data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.cc +14 -8
- data/third_party/abseil-cpp/absl/crc/internal/crc.cc +4 -35
- data/third_party/abseil-cpp/absl/crc/internal/crc.h +2 -10
- data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +1 -1
- data/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.cc +1 -1
- data/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.h +4 -4
- data/third_party/abseil-cpp/absl/crc/internal/crc_internal.h +8 -10
- data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_x86_64.cc +17 -19
- data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +8 -8
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +2 -1
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +59 -23
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +1 -1
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +1 -1
- data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +1 -1
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +43 -19
- data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +3 -0
- data/third_party/abseil-cpp/absl/flags/commandlineflag.h +1 -1
- data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.cc +1 -1
- data/third_party/abseil-cpp/absl/flags/internal/flag.cc +2 -2
- data/third_party/abseil-cpp/absl/flags/internal/flag.h +16 -15
- data/third_party/abseil-cpp/absl/flags/internal/flag_msvc.inc +1 -1
- data/third_party/abseil-cpp/absl/flags/marshalling.cc +43 -2
- data/third_party/abseil-cpp/absl/flags/marshalling.h +5 -0
- data/third_party/abseil-cpp/absl/functional/any_invocable.h +9 -1
- data/third_party/abseil-cpp/absl/functional/bind_front.h +1 -1
- data/third_party/abseil-cpp/absl/functional/function_ref.h +3 -3
- data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +37 -24
- data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +19 -9
- data/third_party/abseil-cpp/absl/hash/hash.h +7 -4
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +38 -15
- data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +6 -0
- data/third_party/abseil-cpp/absl/meta/type_traits.h +48 -373
- data/third_party/abseil-cpp/absl/numeric/bits.h +4 -4
- data/third_party/abseil-cpp/absl/numeric/int128.cc +20 -8
- data/third_party/abseil-cpp/absl/numeric/int128.h +36 -39
- data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +0 -3
- data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +47 -30
- data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +4 -3
- data/third_party/abseil-cpp/absl/random/internal/generate_real.h +1 -1
- data/third_party/abseil-cpp/absl/random/internal/platform.h +1 -1
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +4 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +1 -1
- data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.cc +1 -1
- data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +1 -1
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +4 -0
- data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +12 -24
- data/third_party/abseil-cpp/absl/status/status.cc +11 -7
- data/third_party/abseil-cpp/absl/status/status.h +11 -2
- data/third_party/abseil-cpp/absl/status/statusor.h +22 -8
- data/third_party/abseil-cpp/absl/strings/ascii.cc +54 -6
- data/third_party/abseil-cpp/absl/strings/charconv.cc +21 -4
- data/third_party/abseil-cpp/absl/strings/charconv.h +2 -2
- data/third_party/abseil-cpp/absl/strings/cord.cc +1 -2
- data/third_party/abseil-cpp/absl/strings/cord.h +32 -5
- data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +23 -1
- data/third_party/abseil-cpp/absl/strings/cord_analysis.h +18 -0
- data/third_party/abseil-cpp/absl/strings/cord_buffer.h +2 -5
- data/third_party/abseil-cpp/absl/strings/escaping.cc +10 -32
- data/third_party/abseil-cpp/absl/strings/escaping.h +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +2 -4
- data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +3 -3
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +0 -1
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +15 -13
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +13 -4
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +8 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +5 -3
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.h +4 -7
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +8 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +2 -2
- data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +46 -20
- data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.h +1 -34
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +2 -1
- data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +23 -0
- data/third_party/abseil-cpp/absl/strings/internal/escaping.h +1 -0
- data/third_party/abseil-cpp/absl/strings/internal/memutil.cc +2 -77
- data/third_party/abseil-cpp/absl/strings/internal/memutil.h +4 -112
- data/third_party/abseil-cpp/absl/strings/internal/stl_type_traits.h +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +10 -31
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +8 -8
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +5 -20
- data/third_party/abseil-cpp/absl/strings/internal/str_format/constexpr_parser.h +1 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +9 -9
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +56 -6
- data/third_party/abseil-cpp/absl/strings/match.cc +87 -0
- data/third_party/abseil-cpp/absl/strings/match.h +19 -0
- data/third_party/abseil-cpp/absl/strings/numbers.cc +154 -122
- data/third_party/abseil-cpp/absl/strings/numbers.h +1 -6
- data/third_party/abseil-cpp/absl/strings/str_cat.cc +7 -50
- data/third_party/abseil-cpp/absl/strings/str_cat.h +83 -15
- data/third_party/abseil-cpp/absl/strings/str_format.h +6 -3
- data/third_party/abseil-cpp/absl/strings/str_split.cc +9 -6
- data/third_party/abseil-cpp/absl/strings/string_view.cc +26 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +5 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +63 -43
- data/third_party/abseil-cpp/absl/synchronization/internal/futex_waiter.cc +111 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/futex_waiter.h +63 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +11 -7
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.cc +225 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +122 -114
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +12 -8
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +10 -1
- data/third_party/abseil-cpp/absl/synchronization/internal/pthread_waiter.cc +167 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/pthread_waiter.h +60 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/sem_waiter.cc +122 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/sem_waiter.h +65 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/stdcpp_waiter.cc +91 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/stdcpp_waiter.h +56 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +19 -113
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter_base.cc +42 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter_base.h +90 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/win32_waiter.cc +151 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/win32_waiter.h +70 -0
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +407 -411
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +152 -118
- data/third_party/abseil-cpp/absl/time/clock.cc +6 -7
- data/third_party/abseil-cpp/absl/time/duration.cc +24 -26
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +1 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +3 -3
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.cc +8 -6
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +6 -3
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +4 -2
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +4 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +322 -295
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +8 -17
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +51 -33
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.h +7 -2
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +128 -2
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.h +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +5 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +34 -34
- data/third_party/abseil-cpp/absl/time/time.cc +9 -2
- data/third_party/abseil-cpp/absl/time/time.h +115 -15
- data/third_party/abseil-cpp/absl/types/internal/optional.h +0 -52
- data/third_party/abseil-cpp/absl/types/internal/span.h +2 -2
- data/third_party/abseil-cpp/absl/types/internal/variant.h +2 -2
- data/third_party/abseil-cpp/absl/types/optional.h +15 -13
- data/third_party/abseil-cpp/absl/types/span.h +1 -2
- data/third_party/boringssl-with-bazel/err_data.c +554 -553
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +7 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.c +7 -7
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +34 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +11 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +7 -8
- data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +7 -7
- data/third_party/boringssl-with-bazel/src/crypto/bio/errno.c +92 -0
- data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +5 -49
- data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +18 -13
- data/third_party/boringssl-with-bazel/src/crypto/bio/internal.h +16 -6
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +11 -2
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +19 -1
- data/third_party/boringssl-with-bazel/src/crypto/chacha/internal.h +8 -1
- data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +31 -192
- data/third_party/boringssl-with-bazel/src/crypto/conf/conf_def.h +3 -7
- data/third_party/boringssl-with-bazel/src/crypto/conf/internal.h +8 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_apple.c +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_fuchsia.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_linux.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_openbsd.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_sysreg.c +93 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_win.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_freebsd.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_linux.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +49 -46
- data/third_party/boringssl-with-bazel/src/crypto/{cpu_arm_openbsd.c → curve25519/curve25519_64_adx.c} +3 -16
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_tables.h +2809 -7417
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +27 -5
- data/third_party/boringssl-with-bazel/src/crypto/dh_extra/dh_asn1.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/dh_extra/params.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +20 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +110 -72
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_derive.c +4 -3
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +24 -28
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +4 -6
- data/third_party/boringssl-with-bazel/src/crypto/err/err.c +23 -21
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +35 -12
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c +3 -7
- data/third_party/boringssl-with-bazel/src/crypto/evp/pbkdf.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/evp/print.c +7 -6
- data/third_party/boringssl-with-bazel/src/crypto/ex_data.c +34 -72
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +12 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd.c +5 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +12 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +17 -18
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery_inv.c +51 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.c +7 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/delocate.h +5 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/check.c +37 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +38 -19
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/internal.h +9 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/builtin_curves.h +277 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +180 -404
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +24 -57
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/felem.c +17 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +33 -71
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +18 -17
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +5 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.c +15 -18
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +9 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +24 -24
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +11 -27
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +8 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +9 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hkdf/hkdf.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +40 -26
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +21 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +38 -19
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +2 -29
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +55 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +33 -52
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +42 -24
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/service_indicator.c +4 -7
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +7 -0
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +211 -100
- data/third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c +5 -4
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +7 -8
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +25 -46
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/p5_pbev2.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +7 -7
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +8 -5
- data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +7 -6
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/forkunsafe.c +6 -12
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/getentropy.c +52 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/{fuchsia.c → ios.c} +8 -8
- data/third_party/boringssl-with-bazel/src/crypto/{refcount_no_threads.c → rand_extra/trusty.c} +15 -19
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +41 -19
- data/third_party/boringssl-with-bazel/src/crypto/{refcount_c11.c → refcount.c} +11 -17
- data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +152 -72
- data/third_party/boringssl-with-bazel/src/crypto/thread_none.c +0 -8
- data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +6 -35
- data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +5 -26
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +14 -18
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +54 -143
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +8 -19
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +0 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_d2.c +1 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +8 -12
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +19 -20
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +11 -15
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +7 -7
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +2 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +2 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +4 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +4 -119
- data/third_party/boringssl-with-bazel/src/include/openssl/asm_base.h +207 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +5 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +10 -116
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +11 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +0 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +6 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +5 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +4 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +0 -21
- data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +28 -11
- data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +19 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +11 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +6 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +13 -14
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +0 -61
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +22 -20
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +131 -81
- data/third_party/boringssl-with-bazel/src/include/openssl/stack.h +236 -213
- data/third_party/boringssl-with-bazel/src/include/openssl/target.h +201 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +1 -29
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +4 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +3 -2
- data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +9 -65
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +20 -20
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +4 -11
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +26 -20
- data/third_party/boringssl-with-bazel/src/ssl/ssl_file.cc +4 -4
- data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +37 -30
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +127 -26
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +2 -3
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64_adx.h +691 -0
- data/third_party/upb/upb/collections/map.c +3 -3
- metadata +62 -39
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.cc +0 -42
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.h +0 -64
- data/src/core/ext/transport/chttp2/transport/stream_map.cc +0 -177
- data/src/core/ext/transport/chttp2/transport/stream_map.h +0 -68
- data/src/core/lib/promise/detail/basic_join.h +0 -197
- data/src/core/lib/promise/detail/switch.h +0 -1455
- data/src/core/lib/promise/try_join.h +0 -82
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +0 -403
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_freebsd.c +0 -62
- data/third_party/boringssl-with-bazel/src/crypto/cpu_arm.c +0 -38
- data/third_party/boringssl-with-bazel/src/crypto/refcount_win.c +0 -89
- data/third_party/re2/util/benchmark.h +0 -156
- data/third_party/re2/util/flags.h +0 -26
- data/third_party/re2/util/malloc_counter.h +0 -19
- data/third_party/re2/util/pcre.cc +0 -1025
- data/third_party/re2/util/pcre.h +0 -681
- data/third_party/re2/util/test.h +0 -50
- data/third_party/upb/upb/mini_table.h +0 -36
- data/third_party/zlib/gzclose.c +0 -25
- data/third_party/zlib/gzlib.c +0 -639
- data/third_party/zlib/gzread.c +0 -650
- data/third_party/zlib/gzwrite.c +0 -677
@@ -29,6 +29,7 @@
|
|
29
29
|
#include <ostream>
|
30
30
|
|
31
31
|
#include "absl/crc/internal/crc32c_inline.h"
|
32
|
+
#include "absl/strings/str_format.h"
|
32
33
|
#include "absl/strings/string_view.h"
|
33
34
|
|
34
35
|
namespace absl {
|
@@ -61,10 +62,16 @@ class crc32c_t final {
|
|
61
62
|
|
62
63
|
friend bool operator!=(crc32c_t lhs, crc32c_t rhs) { return !(lhs == rhs); }
|
63
64
|
|
65
|
+
template <typename Sink>
|
66
|
+
friend void AbslStringify(Sink& sink, crc32c_t crc) {
|
67
|
+
absl::Format(&sink, "%08x", static_cast<uint32_t>(crc));
|
68
|
+
}
|
69
|
+
|
64
70
|
private:
|
65
71
|
uint32_t crc_;
|
66
72
|
};
|
67
73
|
|
74
|
+
|
68
75
|
namespace crc_internal {
|
69
76
|
// Non-inline code path for `absl::ExtendCrc32c()`. Do not call directly.
|
70
77
|
// Call `absl::ExtendCrc32c()` (defined below) instead.
|
@@ -174,7 +181,7 @@ crc32c_t RemoveCrc32cSuffix(crc32c_t full_string_crc, crc32c_t suffix_crc,
|
|
174
181
|
//
|
175
182
|
// Streams the CRC32C value `crc` to the stream `os`.
|
176
183
|
inline std::ostream& operator<<(std::ostream& os, crc32c_t crc) {
|
177
|
-
return os << static_cast<uint32_t>(crc);
|
184
|
+
return os << absl::StreamFormat("%08x", static_cast<uint32_t>(crc));
|
178
185
|
}
|
179
186
|
|
180
187
|
ABSL_NAMESPACE_END
|
@@ -28,15 +28,12 @@
|
|
28
28
|
#include <intrin.h>
|
29
29
|
#endif
|
30
30
|
|
31
|
-
namespace absl {
|
32
|
-
ABSL_NAMESPACE_BEGIN
|
33
|
-
namespace crc_internal {
|
34
|
-
|
35
31
|
#if defined(__x86_64__) || defined(_M_X64)
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
32
|
+
#if ABSL_HAVE_BUILTIN(__cpuid)
|
33
|
+
// MSVC-equivalent __cpuid intrinsic declaration for clang-like compilers
|
34
|
+
// for non-Windows build environments.
|
35
|
+
extern void __cpuid(int[4], int);
|
36
|
+
#elif !defined(_WIN32) && !defined(_WIN64)
|
40
37
|
// MSVC defines this function for us.
|
41
38
|
// https://learn.microsoft.com/en-us/cpp/intrinsics/cpuid-cpuidex
|
42
39
|
static void __cpuid(int cpu_info[4], int info_type) {
|
@@ -46,6 +43,15 @@ static void __cpuid(int cpu_info[4], int info_type) {
|
|
46
43
|
: "a"(info_type), "c"(0));
|
47
44
|
}
|
48
45
|
#endif // !defined(_WIN32) && !defined(_WIN64)
|
46
|
+
#endif // defined(__x86_64__) || defined(_M_X64)
|
47
|
+
|
48
|
+
namespace absl {
|
49
|
+
ABSL_NAMESPACE_BEGIN
|
50
|
+
namespace crc_internal {
|
51
|
+
|
52
|
+
#if defined(__x86_64__) || defined(_M_X64)
|
53
|
+
|
54
|
+
namespace {
|
49
55
|
|
50
56
|
enum class Vendor {
|
51
57
|
kUnknown,
|
@@ -44,8 +44,8 @@
|
|
44
44
|
#include <cstdint>
|
45
45
|
|
46
46
|
#include "absl/base/internal/endian.h"
|
47
|
-
#include "absl/base/internal/prefetch.h"
|
48
47
|
#include "absl/base/internal/raw_logging.h"
|
48
|
+
#include "absl/base/prefetch.h"
|
49
49
|
#include "absl/crc/internal/crc_internal.h"
|
50
50
|
|
51
51
|
namespace absl {
|
@@ -176,9 +176,6 @@ CRCImpl* CRCImpl::NewInternal() {
|
|
176
176
|
return result;
|
177
177
|
}
|
178
178
|
|
179
|
-
// The CRC of the empty string is always the CRC polynomial itself.
|
180
|
-
void CRCImpl::Empty(uint32_t* crc) const { *crc = kCrc32cPoly; }
|
181
|
-
|
182
179
|
// The 32-bit implementation
|
183
180
|
|
184
181
|
void CRC32::InitTables() {
|
@@ -261,7 +258,7 @@ void CRC32::Extend(uint32_t* crc, const void* bytes, size_t length) const {
|
|
261
258
|
const uint8_t* e = p + length;
|
262
259
|
uint32_t l = *crc;
|
263
260
|
|
264
|
-
auto step_one_byte = [this, &p, &l]
|
261
|
+
auto step_one_byte = [this, &p, &l]() {
|
265
262
|
int c = (l & 0xff) ^ *p++;
|
266
263
|
l = this->table0_[c] ^ (l >> 8);
|
267
264
|
};
|
@@ -309,7 +306,7 @@ void CRC32::Extend(uint32_t* crc, const void* bytes, size_t length) const {
|
|
309
306
|
|
310
307
|
// Process kStride interleaved swaths through the data in parallel.
|
311
308
|
while ((e - p) > kPrefetchHorizon) {
|
312
|
-
|
309
|
+
PrefetchToLocalCacheNta(
|
313
310
|
reinterpret_cast<const void*>(p + kPrefetchHorizon));
|
314
311
|
// Process 64 bytes at a time
|
315
312
|
step_stride();
|
@@ -359,7 +356,7 @@ void CRC32::Extend(uint32_t* crc, const void* bytes, size_t length) const {
|
|
359
356
|
|
360
357
|
void CRC32::ExtendByZeroesImpl(uint32_t* crc, size_t length,
|
361
358
|
const uint32_t zeroes_table[256],
|
362
|
-
const uint32_t poly_table[256])
|
359
|
+
const uint32_t poly_table[256]) {
|
363
360
|
if (length != 0) {
|
364
361
|
uint32_t l = *crc;
|
365
362
|
// For each ZEROES_BASE_LG bits in length
|
@@ -435,34 +432,6 @@ CRC* CRC::Crc32c() {
|
|
435
432
|
return singleton;
|
436
433
|
}
|
437
434
|
|
438
|
-
// This Concat implementation works for arbitrary polynomials.
|
439
|
-
void CRC::Concat(uint32_t* px, uint32_t y, size_t ylen) {
|
440
|
-
// https://en.wikipedia.org/wiki/Mathematics_of_cyclic_redundancy_checks
|
441
|
-
// The CRC of a message M is the remainder of polynomial divison modulo G,
|
442
|
-
// where the coefficient arithmetic is performed modulo 2 (so +/- are XOR):
|
443
|
-
// R(x) = M(x) x**n (mod G)
|
444
|
-
// (n is the degree of G)
|
445
|
-
// In practice, we use an initial value A and a bitmask B to get
|
446
|
-
// R = (A ^ B)x**|M| ^ Mx**n ^ B (mod G)
|
447
|
-
// If M is the concatenation of two strings S and T, and Z is the string of
|
448
|
-
// len(T) 0s, then the remainder CRC(ST) can be expressed as:
|
449
|
-
// R = (A ^ B)x**|ST| ^ STx**n ^ B
|
450
|
-
// = (A ^ B)x**|SZ| ^ SZx**n ^ B ^ Tx**n
|
451
|
-
// = CRC(SZ) ^ Tx**n
|
452
|
-
// CRC(Z) = (A ^ B)x**|T| ^ B
|
453
|
-
// CRC(T) = (A ^ B)x**|T| ^ Tx**n ^ B
|
454
|
-
// So R = CRC(SZ) ^ CRC(Z) ^ CRC(T)
|
455
|
-
//
|
456
|
-
// And further, since CRC(SZ) = Extend(CRC(S), Z),
|
457
|
-
// CRC(SZ) ^ CRC(Z) = Extend(CRC(S) ^ CRC(''), Z).
|
458
|
-
uint32_t z;
|
459
|
-
uint32_t t;
|
460
|
-
Empty(&z);
|
461
|
-
t = *px ^ z;
|
462
|
-
ExtendByZeroes(&t, ylen);
|
463
|
-
*px = t ^ y;
|
464
|
-
}
|
465
|
-
|
466
435
|
} // namespace crc_internal
|
467
436
|
ABSL_NAMESPACE_END
|
468
437
|
} // namespace absl
|
@@ -40,9 +40,6 @@ class CRC {
|
|
40
40
|
public:
|
41
41
|
virtual ~CRC();
|
42
42
|
|
43
|
-
// Place the CRC of the empty string in "*crc"
|
44
|
-
virtual void Empty(uint32_t* crc) const = 0;
|
45
|
-
|
46
43
|
// If "*crc" is the CRC of bytestring A, place the CRC of
|
47
44
|
// the bytestring formed from the concatenation of A and the "length"
|
48
45
|
// bytes at "bytes" into "*crc".
|
@@ -53,22 +50,17 @@ class CRC {
|
|
53
50
|
// points to an array of "length" zero bytes.
|
54
51
|
virtual void ExtendByZeroes(uint32_t* crc, size_t length) const = 0;
|
55
52
|
|
56
|
-
// Inverse
|
53
|
+
// Inverse operation of ExtendByZeroes. If `crc` is the CRC value of a string
|
57
54
|
// ending in `length` zero bytes, this returns a CRC value of that string
|
58
55
|
// with those zero bytes removed.
|
59
56
|
virtual void UnextendByZeroes(uint32_t* crc, size_t length) const = 0;
|
60
57
|
|
61
|
-
// If *px is the CRC (as defined by *crc) of some string X,
|
62
|
-
// and y is the CRC of some string Y that is ylen bytes long, set
|
63
|
-
// *px to the CRC of the concatenation of X followed by Y.
|
64
|
-
virtual void Concat(uint32_t* px, uint32_t y, size_t ylen);
|
65
|
-
|
66
58
|
// Apply a non-linear transformation to "*crc" so that
|
67
59
|
// it is safe to CRC the result with the same polynomial without
|
68
60
|
// any reduction of error-detection ability in the outer CRC.
|
69
61
|
// Unscramble() performs the inverse transformation.
|
70
62
|
// It is strongly recommended that CRCs be scrambled before storage or
|
71
|
-
// transmission, and unscrambled at the other end before
|
63
|
+
// transmission, and unscrambled at the other end before further manipulation.
|
72
64
|
virtual void Scramble(uint32_t* crc) const = 0;
|
73
65
|
virtual void Unscramble(uint32_t* crc) const = 0;
|
74
66
|
|
@@ -33,7 +33,7 @@
|
|
33
33
|
#include <x86intrin.h>
|
34
34
|
#define ABSL_CRC_INTERNAL_HAVE_X86_SIMD
|
35
35
|
|
36
|
-
#elif defined(_MSC_VER) && defined(__AVX__)
|
36
|
+
#elif defined(_MSC_VER) && !defined(__clang__) && defined(__AVX__)
|
37
37
|
|
38
38
|
// MSVC AVX (/arch:AVX) implies SSE 4.2 and PCLMULQDQ.
|
39
39
|
#include <intrin.h>
|
@@ -71,9 +71,9 @@ class CrcCordState {
|
|
71
71
|
struct Rep {
|
72
72
|
// `removed_prefix` is the crc and length of any prefix that has been
|
73
73
|
// removed from the Cord (for example, by calling
|
74
|
-
// `CrcCord::RemovePrefix()`). To get the
|
75
|
-
// this value must be subtracted from `prefix_crc`. See `Checksum()`
|
76
|
-
// example.
|
74
|
+
// `CrcCord::RemovePrefix()`). To get the checksum of any prefix of the
|
75
|
+
// cord, this value must be subtracted from `prefix_crc`. See `Checksum()`
|
76
|
+
// for an example.
|
77
77
|
//
|
78
78
|
// CrcCordState is said to be "normalized" if removed_prefix.length == 0.
|
79
79
|
PrefixCrc removed_prefix;
|
@@ -109,7 +109,7 @@ class CrcCordState {
|
|
109
109
|
// Returns true if the chunked CRC32C cached is normalized.
|
110
110
|
bool IsNormalized() const { return rep().removed_prefix.length == 0; }
|
111
111
|
|
112
|
-
// Normalizes the chunked CRC32C checksum cache by
|
112
|
+
// Normalizes the chunked CRC32C checksum cache by subtracting any removed
|
113
113
|
// prefix from the chunks.
|
114
114
|
void Normalize();
|
115
115
|
|
@@ -60,18 +60,16 @@ constexpr uint64_t kScrambleHi = (static_cast<uint64_t>(0x4f1bbcdcU) << 32) |
|
|
60
60
|
constexpr uint64_t kScrambleLo = (static_cast<uint64_t>(0xf9ce6030U) << 32) |
|
61
61
|
static_cast<uint64_t>(0x2e76e41bU);
|
62
62
|
|
63
|
-
class CRCImpl : public CRC { //
|
63
|
+
class CRCImpl : public CRC { // Implementation of the abstract class CRC
|
64
64
|
public:
|
65
65
|
using Uint32By256 = uint32_t[256];
|
66
66
|
|
67
|
-
CRCImpl()
|
67
|
+
CRCImpl() = default;
|
68
68
|
~CRCImpl() override = default;
|
69
69
|
|
70
70
|
// The internal version of CRC::New().
|
71
71
|
static CRCImpl* NewInternal();
|
72
72
|
|
73
|
-
void Empty(uint32_t* crc) const override;
|
74
|
-
|
75
73
|
// Fill in a table for updating a CRC by one word of 'word_size' bytes
|
76
74
|
// [last_lo, last_hi] contains the answer if the last bit in the word
|
77
75
|
// is set.
|
@@ -96,8 +94,8 @@ class CRCImpl : public CRC { // Implemention of the abstract class CRC
|
|
96
94
|
// This is the 32-bit implementation. It handles all sizes from 8 to 32.
|
97
95
|
class CRC32 : public CRCImpl {
|
98
96
|
public:
|
99
|
-
CRC32()
|
100
|
-
~CRC32() override
|
97
|
+
CRC32() = default;
|
98
|
+
~CRC32() override = default;
|
101
99
|
|
102
100
|
void Extend(uint32_t* crc, const void* bytes, size_t length) const override;
|
103
101
|
void ExtendByZeroes(uint32_t* crc, size_t length) const override;
|
@@ -111,16 +109,16 @@ class CRC32 : public CRCImpl {
|
|
111
109
|
// Common implementation guts for ExtendByZeroes and UnextendByZeroes().
|
112
110
|
//
|
113
111
|
// zeroes_table is a table as returned by FillZeroesTable(), containing
|
114
|
-
// polynomials representing CRCs of strings-of-zeros of various
|
112
|
+
// polynomials representing CRCs of strings-of-zeros of various lengths,
|
115
113
|
// and which can be combined by polynomial multiplication. poly_table is
|
116
114
|
// a table of CRC byte extension values. These tables are determined by
|
117
115
|
// the generator polynomial.
|
118
116
|
//
|
119
117
|
// These will be set to reverse_zeroes_ and reverse_table0_ for Unextend, and
|
120
118
|
// CRC32::zeroes_ and CRC32::table0_ for Extend.
|
121
|
-
void ExtendByZeroesImpl(uint32_t* crc, size_t length,
|
122
|
-
|
123
|
-
|
119
|
+
static void ExtendByZeroesImpl(uint32_t* crc, size_t length,
|
120
|
+
const uint32_t zeroes_table[256],
|
121
|
+
const uint32_t poly_table[256]);
|
124
122
|
|
125
123
|
uint32_t table0_[256]; // table of byte extensions
|
126
124
|
uint32_t zeroes_[256]; // table of zero extensions
|
@@ -52,8 +52,8 @@
|
|
52
52
|
#include <type_traits>
|
53
53
|
|
54
54
|
#include "absl/base/dynamic_annotations.h"
|
55
|
-
#include "absl/base/internal/prefetch.h"
|
56
55
|
#include "absl/base/optimization.h"
|
56
|
+
#include "absl/base/prefetch.h"
|
57
57
|
#include "absl/crc/crc32c.h"
|
58
58
|
#include "absl/crc/internal/cpu_detect.h"
|
59
59
|
#include "absl/crc/internal/crc_memcpy.h"
|
@@ -242,10 +242,8 @@ crc32c_t AcceleratedCrcMemcpyEngine<vec_regions, int_regions>::Compute(
|
|
242
242
|
while (copy_rounds > kBlocksPerCacheLine) {
|
243
243
|
// Prefetch kPrefetchAhead bytes ahead of each pointer.
|
244
244
|
for (size_t i = 0; i < kRegions; i++) {
|
245
|
-
absl::
|
246
|
-
|
247
|
-
absl::base_internal::PrefetchT0(dst_bytes + kPrefetchAhead +
|
248
|
-
region_size * i);
|
245
|
+
absl::PrefetchToLocalCache(src_bytes + kPrefetchAhead + region_size * i);
|
246
|
+
absl::PrefetchToLocalCache(dst_bytes + kPrefetchAhead + region_size * i);
|
249
247
|
}
|
250
248
|
|
251
249
|
// Load and store data, computing CRC on the way.
|
@@ -359,18 +357,18 @@ CrcMemcpy::ArchSpecificEngines CrcMemcpy::GetArchSpecificEngines() {
|
|
359
357
|
case CpuType::kIntelHaswell:
|
360
358
|
case CpuType::kIntelIvybridge:
|
361
359
|
return {
|
362
|
-
|
363
|
-
|
360
|
+
/*.temporal=*/new FallbackCrcMemcpyEngine(),
|
361
|
+
/*.non_temporal=*/new CrcNonTemporalMemcpyAVXEngine(),
|
364
362
|
};
|
365
363
|
// INTEL_SANDYBRIDGE performs better with SSE than AVX.
|
366
364
|
case CpuType::kIntelSandybridge:
|
367
365
|
return {
|
368
|
-
|
369
|
-
|
366
|
+
/*.temporal=*/new FallbackCrcMemcpyEngine(),
|
367
|
+
/*.non_temporal=*/new CrcNonTemporalMemcpyEngine(),
|
370
368
|
};
|
371
369
|
default:
|
372
|
-
return {
|
373
|
-
|
370
|
+
return {/*.temporal=*/new FallbackCrcMemcpyEngine(),
|
371
|
+
/*.non_temporal=*/new FallbackCrcMemcpyEngine()};
|
374
372
|
}
|
375
373
|
#else
|
376
374
|
// Get the underlying architecture.
|
@@ -388,8 +386,8 @@ CrcMemcpy::ArchSpecificEngines CrcMemcpy::GetArchSpecificEngines() {
|
|
388
386
|
case CpuType::kAmdRome:
|
389
387
|
case CpuType::kAmdNaples:
|
390
388
|
return {
|
391
|
-
|
392
|
-
|
389
|
+
/*.temporal=*/new AcceleratedCrcMemcpyEngine<1, 2>(),
|
390
|
+
/*.non_temporal=*/new CrcNonTemporalMemcpyAVXEngine(),
|
393
391
|
};
|
394
392
|
// PCLMULQDQ is slow and we don't have wide enough issue width to take
|
395
393
|
// advantage of it. For an unknown architecture, don't risk using CLMULs.
|
@@ -400,18 +398,18 @@ CrcMemcpy::ArchSpecificEngines CrcMemcpy::GetArchSpecificEngines() {
|
|
400
398
|
case CpuType::kIntelHaswell:
|
401
399
|
case CpuType::kIntelIvybridge:
|
402
400
|
return {
|
403
|
-
|
404
|
-
|
401
|
+
/*.temporal=*/new AcceleratedCrcMemcpyEngine<3, 0>(),
|
402
|
+
/*.non_temporal=*/new CrcNonTemporalMemcpyAVXEngine(),
|
405
403
|
};
|
406
404
|
// INTEL_SANDYBRIDGE performs better with SSE than AVX.
|
407
405
|
case CpuType::kIntelSandybridge:
|
408
406
|
return {
|
409
|
-
|
410
|
-
|
407
|
+
/*.temporal=*/new AcceleratedCrcMemcpyEngine<3, 0>(),
|
408
|
+
/*.non_temporal=*/new CrcNonTemporalMemcpyEngine(),
|
411
409
|
};
|
412
410
|
default:
|
413
|
-
return {
|
414
|
-
|
411
|
+
return {/*.temporal=*/new FallbackCrcMemcpyEngine(),
|
412
|
+
/*.non_temporal=*/new FallbackCrcMemcpyEngine()};
|
415
413
|
}
|
416
414
|
#endif // UNDEFINED_BEHAVIOR_SANITIZER
|
417
415
|
}
|
@@ -21,7 +21,7 @@
|
|
21
21
|
#include "absl/base/config.h"
|
22
22
|
#include "absl/base/dynamic_annotations.h"
|
23
23
|
#include "absl/base/internal/endian.h"
|
24
|
-
#include "absl/base/
|
24
|
+
#include "absl/base/prefetch.h"
|
25
25
|
#include "absl/crc/internal/cpu_detect.h"
|
26
26
|
#include "absl/crc/internal/crc.h"
|
27
27
|
#include "absl/crc/internal/crc32_x86_arm_combined_simd.h"
|
@@ -429,11 +429,11 @@ class CRC32AcceleratedX86ARMCombinedMultipleStreams
|
|
429
429
|
ABSL_INTERNAL_STEP8BY3(l64, l641, l642, p, p1, p2);
|
430
430
|
ABSL_INTERNAL_STEP8BY3(l64, l641, l642, p, p1, p2);
|
431
431
|
ABSL_INTERNAL_STEP8BY3(l64, l641, l642, p, p1, p2);
|
432
|
-
|
432
|
+
PrefetchToLocalCache(
|
433
433
|
reinterpret_cast<const char*>(p + kPrefetchHorizonMedium));
|
434
|
-
|
434
|
+
PrefetchToLocalCache(
|
435
435
|
reinterpret_cast<const char*>(p1 + kPrefetchHorizonMedium));
|
436
|
-
|
436
|
+
PrefetchToLocalCache(
|
437
437
|
reinterpret_cast<const char*>(p2 + kPrefetchHorizonMedium));
|
438
438
|
}
|
439
439
|
// Don't run crc on last 8 bytes.
|
@@ -515,14 +515,14 @@ class CRC32AcceleratedX86ARMCombinedMultipleStreams
|
|
515
515
|
}
|
516
516
|
|
517
517
|
for (size_t i = 1; i < bs; i++) {
|
518
|
-
// Prefetch data for next
|
518
|
+
// Prefetch data for next iterations.
|
519
519
|
for (size_t j = 0; j < num_crc_streams; j++) {
|
520
|
-
|
520
|
+
PrefetchToLocalCache(
|
521
521
|
reinterpret_cast<const char*>(crc_streams[j] + kPrefetchHorizon));
|
522
522
|
}
|
523
523
|
for (size_t j = 0; j < num_pclmul_streams; j++) {
|
524
|
-
|
525
|
-
|
524
|
+
PrefetchToLocalCache(reinterpret_cast<const char*>(pclmul_streams[j] +
|
525
|
+
kPrefetchHorizon));
|
526
526
|
}
|
527
527
|
|
528
528
|
// We process each stream in 64 byte blocks. This can be written as
|
@@ -33,7 +33,8 @@
|
|
33
33
|
|
34
34
|
#if defined(__ELF__) && !defined(__OpenBSD__) && !defined(__QNX__) && \
|
35
35
|
!defined(__native_client__) && !defined(__asmjs__) && \
|
36
|
-
!defined(__wasm__) && !defined(__HAIKU__)
|
36
|
+
!defined(__wasm__) && !defined(__HAIKU__) && !defined(__sun) && \
|
37
|
+
!defined(__VXWORKS__) && !defined(__hexagon__)
|
37
38
|
#define ABSL_HAVE_ELF_MEM_IMAGE 1
|
38
39
|
#endif
|
39
40
|
|
@@ -13,6 +13,7 @@
|
|
13
13
|
#include <cassert>
|
14
14
|
#include <cstdint>
|
15
15
|
#include <iostream>
|
16
|
+
#include <limits>
|
16
17
|
|
17
18
|
#include "absl/base/attributes.h"
|
18
19
|
#include "absl/debugging/internal/address_is_readable.h"
|
@@ -20,6 +21,10 @@
|
|
20
21
|
#include "absl/debugging/stacktrace.h"
|
21
22
|
|
22
23
|
static const size_t kUnknownFrameSize = 0;
|
24
|
+
// Stack end to use when we don't know the actual stack end
|
25
|
+
// (effectively just the end of address space).
|
26
|
+
constexpr uintptr_t kUnknownStackEnd =
|
27
|
+
std::numeric_limits<size_t>::max() - sizeof(void *);
|
23
28
|
|
24
29
|
#if defined(__linux__)
|
25
30
|
// Returns the address of the VDSO __kernel_rt_sigreturn function, if present.
|
@@ -79,8 +84,9 @@ static inline size_t ComputeStackFrameSize(const T* low,
|
|
79
84
|
// "STRICT_UNWINDING") to reduce the chance that a bad pointer is returned.
|
80
85
|
template<bool STRICT_UNWINDING, bool WITH_CONTEXT>
|
81
86
|
ABSL_ATTRIBUTE_NO_SANITIZE_ADDRESS // May read random elements from stack.
|
82
|
-
ABSL_ATTRIBUTE_NO_SANITIZE_MEMORY
|
83
|
-
static void **NextStackFrame(void **old_frame_pointer, const void *uc
|
87
|
+
ABSL_ATTRIBUTE_NO_SANITIZE_MEMORY // May read random elements from stack.
|
88
|
+
static void **NextStackFrame(void **old_frame_pointer, const void *uc,
|
89
|
+
size_t stack_low, size_t stack_high) {
|
84
90
|
void **new_frame_pointer = reinterpret_cast<void**>(*old_frame_pointer);
|
85
91
|
bool check_frame_size = true;
|
86
92
|
|
@@ -94,16 +100,21 @@ static void **NextStackFrame(void **old_frame_pointer, const void *uc) {
|
|
94
100
|
void **const pre_signal_frame_pointer =
|
95
101
|
reinterpret_cast<void **>(ucv->uc_mcontext.regs[29]);
|
96
102
|
|
103
|
+
// The most recent signal always needs special handling to find the frame
|
104
|
+
// pointer, but a nested signal does not. If pre_signal_frame_pointer is
|
105
|
+
// earlier in the stack than the old_frame_pointer, then use it. If it is
|
106
|
+
// later, then we have already unwound through it and it needs no special
|
107
|
+
// handling.
|
108
|
+
if (pre_signal_frame_pointer >= old_frame_pointer) {
|
109
|
+
new_frame_pointer = pre_signal_frame_pointer;
|
110
|
+
}
|
97
111
|
// Check that alleged frame pointer is actually readable. This is to
|
98
112
|
// prevent "double fault" in case we hit the first fault due to e.g.
|
99
113
|
// stack corruption.
|
100
114
|
if (!absl::debugging_internal::AddressIsReadable(
|
101
|
-
|
115
|
+
new_frame_pointer))
|
102
116
|
return nullptr;
|
103
117
|
|
104
|
-
// Alleged frame pointer is readable, use it for further unwinding.
|
105
|
-
new_frame_pointer = pre_signal_frame_pointer;
|
106
|
-
|
107
118
|
// Skip frame size check if we return from a signal. We may be using a
|
108
119
|
// an alternate stack for signals.
|
109
120
|
check_frame_size = false;
|
@@ -121,8 +132,26 @@ static void **NextStackFrame(void **old_frame_pointer, const void *uc) {
|
|
121
132
|
const size_t max_size = STRICT_UNWINDING ? 100000 : 1000000;
|
122
133
|
const size_t frame_size =
|
123
134
|
ComputeStackFrameSize(old_frame_pointer, new_frame_pointer);
|
124
|
-
if (frame_size == kUnknownFrameSize
|
125
|
-
|
135
|
+
if (frame_size == kUnknownFrameSize)
|
136
|
+
return nullptr;
|
137
|
+
// A very large frame may mean corrupt memory or an erroneous frame
|
138
|
+
// pointer. But also maybe just a plain-old large frame. Assume that if the
|
139
|
+
// frame is within the known stack, then it is valid.
|
140
|
+
if (frame_size > max_size) {
|
141
|
+
if (stack_high < kUnknownStackEnd &&
|
142
|
+
static_cast<size_t>(getpagesize()) < stack_low) {
|
143
|
+
const uintptr_t new_fp_u =
|
144
|
+
reinterpret_cast<uintptr_t>(new_frame_pointer);
|
145
|
+
// Stack bounds are known.
|
146
|
+
if (!(stack_low < new_fp_u && new_fp_u <= stack_high)) {
|
147
|
+
// new_frame_pointer is not within the known stack.
|
148
|
+
return nullptr;
|
149
|
+
}
|
150
|
+
} else {
|
151
|
+
// Stack bounds are unknown, prefer truncated stack to possible crash.
|
152
|
+
return nullptr;
|
153
|
+
}
|
154
|
+
}
|
126
155
|
}
|
127
156
|
|
128
157
|
return new_frame_pointer;
|
@@ -138,42 +167,49 @@ static int UnwindImpl(void** result, int* sizes, int max_depth, int skip_count,
|
|
138
167
|
#else
|
139
168
|
# error reading stack point not yet supported on this platform.
|
140
169
|
#endif
|
141
|
-
|
142
170
|
skip_count++; // Skip the frame for this function.
|
143
171
|
int n = 0;
|
144
172
|
|
173
|
+
// Assume that the first page is not stack.
|
174
|
+
size_t stack_low = static_cast<size_t>(getpagesize());
|
175
|
+
size_t stack_high = kUnknownStackEnd;
|
176
|
+
|
145
177
|
// The frame pointer points to low address of a frame. The first 64-bit
|
146
178
|
// word of a frame points to the next frame up the call chain, which normally
|
147
179
|
// is just after the high address of the current frame. The second word of
|
148
|
-
// a frame contains return
|
180
|
+
// a frame contains return address of to the caller. To find a pc value
|
149
181
|
// associated with the current frame, we need to go down a level in the call
|
150
182
|
// chain. So we remember return the address of the last frame seen. This
|
151
183
|
// does not work for the first stack frame, which belongs to UnwindImp() but
|
152
184
|
// we skip the frame for UnwindImp() anyway.
|
153
185
|
void* prev_return_address = nullptr;
|
186
|
+
// The nth frame size is the difference between the nth frame pointer and the
|
187
|
+
// the frame pointer below it in the call chain. There is no frame below the
|
188
|
+
// leaf frame, but this function is the leaf anyway, and we skip it.
|
189
|
+
void** prev_frame_pointer = nullptr;
|
154
190
|
|
155
|
-
|
156
|
-
// The absl::GetStackFrames routine is called when we are in some
|
157
|
-
// informational context (the failure signal handler for example).
|
158
|
-
// Use the non-strict unwinding rules to produce a stack trace
|
159
|
-
// that is as complete as possible (even if it contains a few bogus
|
160
|
-
// entries in some rare cases).
|
161
|
-
void **next_frame_pointer =
|
162
|
-
NextStackFrame<!IS_STACK_FRAMES, IS_WITH_CONTEXT>(frame_pointer, ucp);
|
163
|
-
|
191
|
+
while (frame_pointer && n < max_depth) {
|
164
192
|
if (skip_count > 0) {
|
165
193
|
skip_count--;
|
166
194
|
} else {
|
167
195
|
result[n] = prev_return_address;
|
168
196
|
if (IS_STACK_FRAMES) {
|
169
197
|
sizes[n] = static_cast<int>(
|
170
|
-
ComputeStackFrameSize(
|
198
|
+
ComputeStackFrameSize(prev_frame_pointer, frame_pointer));
|
171
199
|
}
|
172
200
|
n++;
|
173
201
|
}
|
174
202
|
prev_return_address = frame_pointer[1];
|
175
|
-
|
203
|
+
prev_frame_pointer = frame_pointer;
|
204
|
+
// The absl::GetStackFrames routine is called when we are in some
|
205
|
+
// informational context (the failure signal handler for example).
|
206
|
+
// Use the non-strict unwinding rules to produce a stack trace
|
207
|
+
// that is as complete as possible (even if it contains a few bogus
|
208
|
+
// entries in some rare cases).
|
209
|
+
frame_pointer = NextStackFrame<!IS_STACK_FRAMES, IS_WITH_CONTEXT>(
|
210
|
+
frame_pointer, ucp, stack_low, stack_high);
|
176
211
|
}
|
212
|
+
|
177
213
|
if (min_dropped_frames != nullptr) {
|
178
214
|
// Implementation detail: we clamp the max of frames we are willing to
|
179
215
|
// count, so as not to spend too much time in the loop below.
|
@@ -185,8 +221,8 @@ static int UnwindImpl(void** result, int* sizes, int max_depth, int skip_count,
|
|
185
221
|
} else {
|
186
222
|
num_dropped_frames++;
|
187
223
|
}
|
188
|
-
frame_pointer =
|
189
|
-
|
224
|
+
frame_pointer = NextStackFrame<!IS_STACK_FRAMES, IS_WITH_CONTEXT>(
|
225
|
+
frame_pointer, ucp, stack_low, stack_high);
|
190
226
|
}
|
191
227
|
*min_dropped_frames = num_dropped_frames;
|
192
228
|
}
|
@@ -57,7 +57,7 @@ static inline void *StacktracePowerPCGetLR(void **sp) {
|
|
57
57
|
// This check is in case the compiler doesn't define _CALL_SYSV.
|
58
58
|
return *(sp+1);
|
59
59
|
#else
|
60
|
-
#error Need to specify the PPC ABI for your
|
60
|
+
#error Need to specify the PPC ABI for your architecture.
|
61
61
|
#endif
|
62
62
|
}
|
63
63
|
|
@@ -40,7 +40,7 @@ using absl::debugging_internal::AddressIsReadable;
|
|
40
40
|
|
41
41
|
#if defined(__linux__) && defined(__i386__)
|
42
42
|
// Count "push %reg" instructions in VDSO __kernel_vsyscall(),
|
43
|
-
//
|
43
|
+
// preceding "syscall" or "sysenter".
|
44
44
|
// If __kernel_vsyscall uses frame pointer, answer 0.
|
45
45
|
//
|
46
46
|
// kMaxBytes tells how many instruction bytes of __kernel_vsyscall
|
@@ -115,7 +115,7 @@ bool RemoveSymbolDecorator(int ticket);
|
|
115
115
|
|
116
116
|
// Remove all installed decorators. Returns true if successful, false if
|
117
117
|
// symbolization is currently in progress.
|
118
|
-
bool RemoveAllSymbolDecorators(
|
118
|
+
bool RemoveAllSymbolDecorators();
|
119
119
|
|
120
120
|
// Registers an address range to a file mapping.
|
121
121
|
//
|