grpc 1.52.0 → 1.53.0.pre2
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +50 -5
- data/include/grpc/event_engine/event_engine.h +24 -2
- data/include/grpc/event_engine/slice_buffer.h +13 -1
- data/include/grpc/impl/grpc_types.h +3 -0
- data/include/grpc/support/time.h +6 -4
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +148 -0
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.h +52 -0
- data/src/core/ext/filters/backend_metrics/backend_metric_provider.h +29 -0
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +3 -3
- data/src/core/ext/filters/channel_idle/idle_filter_state.h +3 -3
- data/src/core/ext/filters/client_channel/backend_metric.h +3 -3
- data/src/core/ext/filters/client_channel/backup_poller.h +3 -3
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +1 -1
- data/src/core/ext/filters/client_channel/client_channel.cc +29 -33
- data/src/core/ext/filters/client_channel/client_channel.h +3 -3
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +3 -3
- data/src/core/ext/filters/client_channel/client_channel_factory.h +3 -3
- data/src/core/ext/filters/client_channel/client_channel_service_config.h +3 -3
- data/src/core/ext/filters/client_channel/config_selector.h +3 -3
- data/src/core/ext/filters/client_channel/connector.h +8 -4
- data/src/core/ext/filters/client_channel/dynamic_filters.h +3 -3
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +3 -3
- data/src/core/ext/filters/client_channel/health/health_check_client.h +3 -3
- data/src/core/ext/filters/client_channel/http_proxy.h +3 -3
- data/src/core/ext/filters/client_channel/lb_call_state_internal.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +14 -7
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +1 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +1 -78
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric_internal.h +117 -0
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +1 -0
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.cc +128 -0
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.h +71 -0
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +972 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +3 -6
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +12 -7
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +275 -107
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.h +10 -3
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +5 -0
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +6 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +1 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +3 -3
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +3 -3
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +1 -0
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +3 -3
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +3 -7
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +3 -3
- data/src/core/ext/filters/client_channel/retry_filter.cc +10 -13
- data/src/core/ext/filters/client_channel/retry_filter.h +3 -3
- data/src/core/ext/filters/client_channel/retry_service_config.h +3 -3
- data/src/core/ext/filters/client_channel/retry_throttle.h +3 -3
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +4 -4
- data/src/core/ext/filters/client_channel/subchannel.cc +5 -1
- data/src/core/ext/filters/client_channel/subchannel.h +3 -3
- data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +3 -3
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +3 -3
- data/src/core/ext/filters/client_channel/subchannel_stream_client.h +3 -3
- data/src/core/ext/filters/deadline/deadline_filter.cc +40 -48
- data/src/core/ext/filters/deadline/deadline_filter.h +6 -10
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +3 -3
- data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h +3 -3
- data/src/core/ext/filters/http/client/http_client_filter.cc +26 -21
- data/src/core/ext/filters/http/client/http_client_filter.h +3 -3
- data/src/core/ext/filters/http/client_authority_filter.h +3 -3
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +109 -117
- data/src/core/ext/filters/http/message_compress/compression_filter.h +17 -10
- data/src/core/ext/filters/http/server/http_server_filter.cc +25 -24
- data/src/core/ext/filters/http/server/http_server_filter.h +3 -3
- data/src/core/ext/filters/message_size/message_size_filter.cc +2 -1
- data/src/core/ext/filters/message_size/message_size_filter.h +3 -3
- data/src/core/ext/filters/rbac/rbac_filter.cc +4 -3
- data/src/core/ext/filters/rbac/rbac_filter.h +3 -3
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +3 -3
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +3 -3
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +3 -3
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +27 -37
- data/src/core/ext/filters/stateful_session/stateful_session_filter.h +5 -5
- data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +3 -3
- data/src/core/ext/transport/chttp2/alpn/alpn.h +3 -3
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +2 -7
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +3 -3
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +1 -0
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +3 -3
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +3 -3
- data/src/core/ext/transport/chttp2/transport/bin_encoder.h +3 -3
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +195 -111
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +3 -3
- data/src/core/ext/transport/chttp2/transport/context_list.h +3 -3
- data/src/core/ext/transport/chttp2/transport/decode_huff.h +3 -3
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +1 -0
- data/src/core/ext/transport/chttp2/transport/flow_control.h +3 -3
- data/src/core/ext/transport/chttp2/transport/frame.h +3 -3
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/frame_data.h +3 -3
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +3 -3
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +1 -0
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +3 -3
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +3 -3
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +1 -0
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +3 -3
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +3 -3
- data/src/core/ext/transport/chttp2/transport/hpack_constants.h +3 -3
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +3 -3
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +3 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +18 -407
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +3 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +1 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +3 -3
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +3 -3
- data/src/core/ext/transport/chttp2/transport/http_trace.h +3 -3
- data/src/core/ext/transport/chttp2/transport/huffsyms.h +3 -3
- data/src/core/ext/transport/chttp2/transport/internal.h +28 -23
- data/src/core/ext/transport/chttp2/transport/parsing.cc +111 -31
- data/src/core/ext/transport/chttp2/transport/stream_map.h +3 -3
- data/src/core/ext/transport/chttp2/transport/varint.h +3 -3
- data/src/core/ext/transport/chttp2/transport/writing.cc +9 -8
- data/src/core/ext/transport/inproc/inproc_transport.h +3 -3
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +3 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +9 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c +38 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.h +185 -0
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +7 -3
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +44 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +16 -25
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +48 -74
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +30 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +137 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +15 -12
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +83 -51
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +3 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +15 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +17 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +61 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +11 -5
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +37 -6
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +5 -3
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +24 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +5 -3
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +22 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +6 -3
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +24 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +24 -5
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +50 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +57 -16
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +254 -17
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +3 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +9 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +3 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.h +9 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +7 -6
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +21 -12
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +6 -3
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +23 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +10 -7
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +42 -12
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.c +54 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h +188 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/common/v3/common.upb.c +111 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +444 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +7 -3
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +24 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +8 -6
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +31 -9
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +5 -3
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +24 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/filter_state.upb.c +47 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/filter_state.upb.h +113 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/status_code_input.upb.c +43 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/status_code_input.upb.h +114 -0
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.h +3 -1
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.c +54 -53
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.c +34 -13
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +195 -187
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +232 -224
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +0 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +95 -75
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +94 -93
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +81 -75
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +189 -187
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +7 -3
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +71 -66
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +137 -133
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +16 -12
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +140 -133
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +81 -70
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +771 -741
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.c +16 -14
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +14 -13
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.c +20 -18
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +53 -42
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +363 -356
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +149 -145
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +16 -13
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/filter_state.upbdefs.c +48 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/filter_state.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +14 -14
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/status_code_input.upbdefs.c +40 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/status_code_input.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.c +10 -9
- data/src/core/ext/xds/certificate_provider_store.h +3 -3
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +1 -0
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +3 -3
- data/src/core/ext/xds/upb_utils.h +3 -3
- data/src/core/ext/xds/xds_api.h +3 -3
- data/src/core/ext/xds/xds_bootstrap.h +3 -3
- data/src/core/ext/xds/xds_bootstrap_grpc.cc +1 -0
- data/src/core/ext/xds/xds_bootstrap_grpc.h +3 -3
- data/src/core/ext/xds/xds_certificate_provider.h +3 -3
- data/src/core/ext/xds/xds_channel_args.h +3 -3
- data/src/core/ext/xds/xds_channel_stack_modifier.h +3 -3
- data/src/core/ext/xds/xds_client.cc +8 -3
- data/src/core/ext/xds/xds_client.h +3 -3
- data/src/core/ext/xds/xds_client_grpc.cc +0 -1
- data/src/core/ext/xds/xds_client_grpc.h +3 -3
- data/src/core/ext/xds/xds_client_stats.h +4 -3
- data/src/core/ext/xds/xds_cluster.cc +11 -7
- data/src/core/ext/xds/xds_cluster.h +6 -6
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +3 -3
- data/src/core/ext/xds/xds_common_types.cc +1 -0
- data/src/core/ext/xds/xds_common_types.h +3 -3
- data/src/core/ext/xds/xds_endpoint.cc +1 -1
- data/src/core/ext/xds/xds_endpoint.h +3 -3
- data/src/core/ext/xds/xds_health_status.h +30 -3
- data/src/core/ext/xds/xds_http_fault_filter.h +3 -3
- data/src/core/ext/xds/xds_http_filters.cc +1 -1
- data/src/core/ext/xds/xds_http_filters.h +3 -3
- data/src/core/ext/xds/xds_http_rbac_filter.h +3 -3
- data/src/core/ext/xds/xds_http_stateful_session_filter.h +3 -3
- data/src/core/ext/xds/xds_lb_policy_registry.cc +95 -0
- data/src/core/ext/xds/xds_lb_policy_registry.h +3 -3
- data/src/core/ext/xds/xds_listener.cc +1 -0
- data/src/core/ext/xds/xds_listener.h +3 -3
- data/src/core/ext/xds/xds_resource_type.h +3 -3
- data/src/core/ext/xds/xds_resource_type_impl.h +3 -3
- data/src/core/ext/xds/xds_route_config.cc +6 -0
- data/src/core/ext/xds/xds_route_config.h +3 -3
- data/src/core/ext/xds/xds_routing.h +3 -3
- data/src/core/ext/xds/xds_transport.h +3 -3
- data/src/core/ext/xds/xds_transport_grpc.h +3 -3
- data/src/core/lib/address_utils/parse_address.h +3 -3
- data/src/core/lib/address_utils/sockaddr_utils.cc +1 -0
- data/src/core/lib/address_utils/sockaddr_utils.h +3 -3
- data/src/core/lib/avl/avl.h +3 -3
- data/src/core/lib/backoff/backoff.h +3 -3
- data/src/core/lib/channel/call_finalization.h +3 -3
- data/src/core/lib/channel/call_tracer.h +3 -3
- data/src/core/lib/channel/channel_args.cc +1 -0
- data/src/core/lib/channel/channel_args.h +11 -5
- data/src/core/lib/channel/channel_args_preconditioning.h +3 -3
- data/src/core/lib/channel/channel_fwd.h +3 -3
- data/src/core/lib/channel/channel_stack.cc +1 -2
- data/src/core/lib/channel/channel_stack.h +4 -4
- data/src/core/lib/channel/channel_stack_builder.h +3 -3
- data/src/core/lib/channel/channel_stack_builder_impl.cc +14 -1
- data/src/core/lib/channel/channel_stack_builder_impl.h +3 -3
- data/src/core/lib/channel/channel_trace.h +3 -3
- data/src/core/lib/channel/channelz.h +3 -3
- data/src/core/lib/channel/channelz_registry.h +3 -3
- data/src/core/lib/channel/connected_channel.cc +883 -354
- data/src/core/lib/channel/connected_channel.h +3 -3
- data/src/core/lib/channel/context.h +7 -3
- data/src/core/lib/channel/promise_based_filter.cc +532 -260
- data/src/core/lib/channel/promise_based_filter.h +124 -44
- data/src/core/lib/channel/status_util.h +3 -3
- data/src/core/lib/compression/compression_internal.h +3 -3
- data/src/core/lib/compression/message_compress.h +3 -3
- data/src/core/lib/config/core_configuration.h +3 -3
- data/src/core/lib/debug/event_log.h +3 -3
- data/src/core/lib/debug/histogram_view.h +3 -3
- data/src/core/lib/debug/stats.h +3 -3
- data/src/core/lib/debug/stats_data.cc +66 -65
- data/src/core/lib/debug/stats_data.h +42 -33
- data/src/core/lib/debug/trace.h +4 -26
- data/src/core/lib/event_engine/channel_args_endpoint_config.cc +5 -0
- data/src/core/lib/event_engine/channel_args_endpoint_config.h +3 -3
- data/src/core/lib/event_engine/common_closures.h +3 -3
- data/src/core/lib/event_engine/default_event_engine.cc +9 -4
- data/src/core/lib/event_engine/default_event_engine.h +30 -6
- data/src/core/lib/event_engine/default_event_engine_factory.h +3 -3
- data/src/core/lib/event_engine/event_engine.cc +25 -0
- data/src/core/lib/event_engine/executor/executor.h +3 -3
- data/src/core/lib/event_engine/forkable.cc +11 -6
- data/src/core/lib/event_engine/forkable.h +3 -3
- data/src/core/lib/event_engine/handle_containers.h +10 -3
- data/src/core/lib/event_engine/poller.h +3 -3
- data/src/core/lib/event_engine/posix.h +158 -0
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +44 -16
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +14 -4
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +6 -7
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +3 -3
- data/src/core/lib/event_engine/posix_engine/event_poller.h +3 -3
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.h +3 -3
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +3 -3
- data/src/core/lib/event_engine/posix_engine/lockfree_event.h +3 -3
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +52 -55
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +46 -13
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +82 -12
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +23 -9
- data/src/core/lib/event_engine/posix_engine/posix_engine_closure.h +3 -3
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +60 -7
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +65 -14
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +0 -1
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +6 -6
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +3 -3
- data/src/core/lib/event_engine/posix_engine/timer.h +3 -3
- data/src/core/lib/event_engine/posix_engine/timer_heap.h +3 -3
- data/src/core/lib/event_engine/posix_engine/timer_manager.h +3 -3
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +3 -3
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +3 -3
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +3 -3
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +3 -3
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +3 -3
- data/src/core/lib/event_engine/resolved_address.cc +19 -0
- data/src/core/lib/event_engine/resolved_address_internal.h +34 -0
- data/src/core/lib/event_engine/shim.cc +56 -0
- data/src/core/lib/event_engine/shim.h +33 -0
- data/src/core/lib/event_engine/slice.cc +1 -1
- data/src/core/lib/event_engine/tcp_socket_utils.cc +18 -2
- data/src/core/lib/event_engine/tcp_socket_utils.h +8 -3
- data/src/core/lib/event_engine/thread_local.cc +29 -0
- data/src/core/lib/event_engine/thread_local.h +32 -0
- data/src/core/lib/event_engine/thread_pool.cc +41 -65
- data/src/core/lib/event_engine/thread_pool.h +21 -17
- data/src/core/lib/event_engine/time_util.h +3 -3
- data/src/core/lib/event_engine/trace.cc +6 -0
- data/src/core/lib/event_engine/trace.h +16 -3
- data/src/core/lib/event_engine/utils.cc +2 -2
- data/src/core/lib/event_engine/utils.h +12 -4
- data/src/core/lib/event_engine/windows/iocp.cc +24 -40
- data/src/core/lib/event_engine/windows/iocp.h +3 -3
- data/src/core/lib/event_engine/windows/win_socket.cc +56 -33
- data/src/core/lib/event_engine/windows/win_socket.h +34 -25
- data/src/core/lib/event_engine/windows/windows_endpoint.cc +331 -0
- data/src/core/lib/event_engine/windows/windows_endpoint.h +103 -0
- data/src/core/lib/event_engine/windows/windows_engine.cc +243 -20
- data/src/core/lib/event_engine/windows/windows_engine.h +62 -23
- data/src/core/lib/experiments/config.cc +16 -1
- data/src/core/lib/experiments/config.h +13 -3
- data/src/core/lib/experiments/experiments.cc +14 -8
- data/src/core/lib/experiments/experiments.h +80 -21
- data/src/core/lib/gpr/alloc.h +3 -3
- data/src/core/lib/gpr/spinlock.h +3 -3
- data/src/core/lib/gpr/string.h +3 -3
- data/src/core/lib/gpr/sync_abseil.cc +15 -7
- data/src/core/lib/gpr/time_precise.h +3 -3
- data/src/core/lib/gpr/tmpfile.h +3 -3
- data/src/core/lib/gpr/useful.h +3 -3
- data/src/core/lib/gprpp/atomic_utils.h +3 -3
- data/src/core/lib/gprpp/bitset.h +3 -3
- data/src/core/lib/gprpp/chunked_vector.h +3 -3
- data/src/core/lib/gprpp/construct_destruct.h +3 -3
- data/src/core/lib/gprpp/cpp_impl_of.h +3 -3
- data/src/core/lib/gprpp/crash.h +3 -3
- data/src/core/lib/gprpp/debug_location.h +3 -6
- data/src/core/lib/gprpp/dual_ref_counted.h +3 -3
- data/src/core/lib/gprpp/env.h +3 -3
- data/src/core/lib/gprpp/examine_stack.h +3 -3
- data/src/core/lib/gprpp/fork.cc +21 -4
- data/src/core/lib/gprpp/fork.h +7 -5
- data/src/core/lib/gprpp/global_config.h +3 -3
- data/src/core/lib/gprpp/global_config_custom.h +3 -3
- data/src/core/lib/gprpp/global_config_env.cc +1 -0
- data/src/core/lib/gprpp/global_config_env.h +3 -3
- data/src/core/lib/gprpp/global_config_generic.h +3 -3
- data/src/core/lib/gprpp/host_port.cc +2 -0
- data/src/core/lib/gprpp/host_port.h +3 -3
- data/src/core/lib/gprpp/load_file.h +3 -3
- data/src/core/lib/gprpp/manual_constructor.h +3 -3
- data/src/core/lib/gprpp/match.h +3 -3
- data/src/core/lib/gprpp/memory.h +3 -3
- data/src/core/lib/gprpp/mpscq.h +3 -3
- data/src/core/lib/gprpp/no_destruct.h +3 -3
- data/src/core/lib/gprpp/notification.h +3 -3
- data/src/core/lib/gprpp/orphanable.h +3 -3
- data/src/core/lib/gprpp/overload.h +3 -3
- data/src/core/lib/gprpp/packed_table.h +3 -3
- data/src/core/lib/gprpp/per_cpu.h +3 -3
- data/src/core/lib/gprpp/ref_counted.h +3 -3
- data/src/core/lib/gprpp/ref_counted_ptr.h +3 -3
- data/src/core/lib/gprpp/single_set_ptr.h +3 -3
- data/src/core/lib/gprpp/sorted_pack.h +3 -3
- data/src/core/lib/gprpp/stat.h +3 -3
- data/src/core/lib/gprpp/status_helper.h +3 -3
- data/src/core/lib/gprpp/strerror.cc +2 -0
- data/src/core/lib/gprpp/strerror.h +3 -3
- data/src/core/lib/gprpp/sync.h +3 -3
- data/src/core/lib/gprpp/table.h +3 -3
- data/src/core/lib/gprpp/tchar.h +3 -3
- data/src/core/lib/gprpp/thd.h +3 -3
- data/src/core/lib/gprpp/time.cc +1 -0
- data/src/core/lib/gprpp/time.h +3 -3
- data/src/core/lib/gprpp/time_averaged_stats.h +3 -3
- data/src/core/lib/gprpp/time_util.h +3 -3
- data/src/core/lib/gprpp/unique_type_name.h +3 -3
- data/src/core/lib/gprpp/validation_errors.h +3 -3
- data/src/core/lib/gprpp/work_serializer.h +3 -3
- data/src/core/lib/handshaker/proxy_mapper.h +3 -3
- data/src/core/lib/handshaker/proxy_mapper_registry.h +3 -3
- data/src/core/lib/http/format_request.cc +1 -0
- data/src/core/lib/http/format_request.h +3 -3
- data/src/core/lib/http/httpcli.cc +1 -0
- data/src/core/lib/http/httpcli.h +3 -3
- data/src/core/lib/http/httpcli_ssl_credentials.h +3 -3
- data/src/core/lib/http/parser.h +3 -3
- data/src/core/lib/iomgr/block_annotate.h +3 -3
- data/src/core/lib/iomgr/buffer_list.h +3 -3
- data/src/core/lib/iomgr/call_combiner.cc +4 -4
- data/src/core/lib/iomgr/call_combiner.h +3 -3
- data/src/core/lib/iomgr/cfstream_handle.h +3 -3
- data/src/core/lib/iomgr/closure.cc +27 -0
- data/src/core/lib/iomgr/closure.h +5 -3
- data/src/core/lib/iomgr/combiner.h +3 -3
- data/src/core/lib/iomgr/dynamic_annotations.h +3 -3
- data/src/core/lib/iomgr/endpoint.h +3 -3
- data/src/core/lib/iomgr/endpoint_cfstream.h +3 -3
- data/src/core/lib/iomgr/endpoint_pair.h +3 -3
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +10 -2
- data/src/core/lib/iomgr/error.h +3 -3
- data/src/core/lib/iomgr/error_cfstream.h +3 -3
- data/src/core/lib/iomgr/ev_apple.h +3 -3
- data/src/core/lib/iomgr/ev_epoll1_linux.h +3 -3
- data/src/core/lib/iomgr/ev_poll_posix.h +3 -3
- data/src/core/lib/iomgr/ev_posix.h +3 -3
- data/src/core/lib/iomgr/event_engine_shims/closure.cc +62 -0
- data/src/core/lib/iomgr/event_engine_shims/closure.h +39 -0
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +430 -0
- data/src/core/lib/iomgr/event_engine_shims/endpoint.h +43 -0
- data/src/core/lib/iomgr/event_engine_shims/tcp_client.cc +91 -0
- data/src/core/lib/iomgr/event_engine_shims/tcp_client.h +44 -0
- data/src/core/lib/iomgr/exec_ctx.h +3 -3
- data/src/core/lib/iomgr/executor.h +3 -3
- data/src/core/lib/iomgr/fork_posix.cc +5 -4
- data/src/core/lib/iomgr/gethostname.h +3 -3
- data/src/core/lib/iomgr/grpc_if_nametoindex.h +3 -3
- data/src/core/lib/iomgr/internal_errqueue.h +3 -3
- data/src/core/lib/iomgr/iocp_windows.h +3 -3
- data/src/core/lib/iomgr/iomgr.h +3 -3
- data/src/core/lib/iomgr/iomgr_fwd.h +3 -3
- data/src/core/lib/iomgr/iomgr_internal.h +3 -3
- data/src/core/lib/iomgr/load_file.h +3 -3
- data/src/core/lib/iomgr/lockfree_event.h +3 -3
- data/src/core/lib/iomgr/nameser.h +3 -3
- data/src/core/lib/iomgr/polling_entity.h +3 -3
- data/src/core/lib/iomgr/pollset.h +3 -3
- data/src/core/lib/iomgr/pollset_set.h +3 -3
- data/src/core/lib/iomgr/pollset_set_windows.h +3 -3
- data/src/core/lib/iomgr/pollset_windows.cc +2 -2
- data/src/core/lib/iomgr/pollset_windows.h +3 -3
- data/src/core/lib/iomgr/port.h +3 -3
- data/src/core/lib/iomgr/python_util.h +3 -3
- data/src/core/lib/iomgr/resolve_address.h +3 -3
- data/src/core/lib/iomgr/resolve_address_impl.h +3 -3
- data/src/core/lib/iomgr/resolve_address_posix.h +3 -3
- data/src/core/lib/iomgr/resolve_address_windows.h +3 -3
- data/src/core/lib/iomgr/resolved_address.h +3 -3
- data/src/core/lib/iomgr/sockaddr.h +3 -3
- data/src/core/lib/iomgr/sockaddr_posix.h +3 -3
- data/src/core/lib/iomgr/sockaddr_windows.h +3 -3
- data/src/core/lib/iomgr/socket_factory_posix.h +3 -3
- data/src/core/lib/iomgr/socket_mutator.h +3 -3
- data/src/core/lib/iomgr/socket_utils.h +3 -3
- data/src/core/lib/iomgr/socket_utils_posix.h +3 -3
- data/src/core/lib/iomgr/socket_windows.h +3 -3
- data/src/core/lib/iomgr/systemd_utils.cc +19 -19
- data/src/core/lib/iomgr/systemd_utils.h +24 -24
- data/src/core/lib/iomgr/tcp_client.h +3 -3
- data/src/core/lib/iomgr/tcp_client_posix.cc +12 -0
- data/src/core/lib/iomgr/tcp_client_posix.h +3 -3
- data/src/core/lib/iomgr/tcp_client_windows.cc +13 -1
- data/src/core/lib/iomgr/tcp_posix.cc +49 -65
- data/src/core/lib/iomgr/tcp_posix.h +3 -3
- data/src/core/lib/iomgr/tcp_server.h +3 -3
- data/src/core/lib/iomgr/tcp_server_posix.cc +219 -4
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +13 -3
- data/src/core/lib/iomgr/tcp_server_windows.cc +4 -6
- data/src/core/lib/iomgr/tcp_windows.h +3 -3
- data/src/core/lib/iomgr/timer.h +3 -3
- data/src/core/lib/iomgr/timer_generic.h +3 -3
- data/src/core/lib/iomgr/timer_heap.h +3 -3
- data/src/core/lib/iomgr/timer_manager.h +3 -3
- data/src/core/lib/iomgr/unix_sockets_posix.h +3 -3
- data/src/core/lib/iomgr/wakeup_fd_pipe.h +3 -3
- data/src/core/lib/iomgr/wakeup_fd_posix.h +3 -3
- data/src/core/lib/json/json.h +3 -3
- data/src/core/lib/json/json_args.h +3 -3
- data/src/core/lib/json/json_channel_args.h +3 -3
- data/src/core/lib/json/json_object_loader.h +3 -3
- data/src/core/lib/json/json_reader.cc +1 -0
- data/src/core/lib/json/json_util.h +3 -3
- data/src/core/lib/load_balancing/lb_policy.cc +9 -0
- data/src/core/lib/load_balancing/lb_policy.h +9 -5
- data/src/core/lib/load_balancing/lb_policy_factory.h +3 -3
- data/src/core/lib/load_balancing/lb_policy_registry.cc +1 -0
- data/src/core/lib/load_balancing/lb_policy_registry.h +3 -3
- data/src/core/lib/load_balancing/subchannel_interface.h +8 -6
- data/src/core/lib/matchers/matchers.cc +1 -0
- data/src/core/lib/matchers/matchers.h +3 -3
- data/src/core/lib/promise/activity.cc +8 -6
- data/src/core/lib/promise/activity.h +52 -66
- data/src/core/lib/promise/arena_promise.h +3 -3
- data/src/core/lib/promise/context.h +3 -3
- data/src/core/lib/promise/detail/basic_join.h +197 -0
- data/src/core/lib/promise/detail/basic_seq.h +10 -16
- data/src/core/lib/promise/detail/promise_factory.h +3 -3
- data/src/core/lib/promise/detail/promise_like.h +3 -3
- data/src/core/lib/promise/detail/status.h +3 -3
- data/src/core/lib/promise/detail/switch.h +3 -3
- data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +3 -3
- data/src/core/lib/promise/if.h +195 -0
- data/src/core/lib/promise/interceptor_list.h +308 -0
- data/src/core/lib/promise/intra_activity_waiter.h +9 -3
- data/src/core/lib/promise/latch.h +99 -5
- data/src/core/lib/promise/loop.h +4 -4
- data/src/core/lib/promise/map.h +4 -6
- data/src/core/lib/promise/pipe.h +296 -193
- data/src/core/lib/promise/poll.h +113 -14
- data/src/core/lib/promise/promise.h +4 -5
- data/src/core/lib/promise/race.h +6 -9
- data/src/core/lib/promise/seq.h +3 -3
- data/src/core/lib/promise/sleep.h +3 -3
- data/src/core/lib/promise/{pipe.cc → trace.cc} +3 -2
- data/src/core/lib/promise/trace.h +24 -0
- data/src/core/lib/promise/try_join.h +82 -0
- data/src/core/lib/promise/try_seq.h +3 -3
- data/src/core/lib/resolver/resolver.h +3 -3
- data/src/core/lib/resolver/resolver_factory.h +4 -4
- data/src/core/lib/resolver/resolver_registry.cc +15 -0
- data/src/core/lib/resolver/resolver_registry.h +3 -3
- data/src/core/lib/resolver/server_address.cc +1 -0
- data/src/core/lib/resolver/server_address.h +3 -3
- data/src/core/lib/resource_quota/api.h +3 -3
- data/src/core/lib/resource_quota/arena.cc +36 -9
- data/src/core/lib/resource_quota/arena.h +84 -22
- data/src/core/lib/resource_quota/memory_quota.h +3 -3
- data/src/core/lib/resource_quota/periodic_update.h +3 -3
- data/src/core/lib/resource_quota/resource_quota.h +3 -3
- data/src/core/lib/resource_quota/thread_quota.h +3 -3
- data/src/core/lib/resource_quota/trace.h +3 -3
- data/src/core/lib/security/authorization/authorization_engine.h +3 -3
- data/src/core/lib/security/authorization/authorization_policy_provider.h +3 -3
- data/src/core/lib/security/authorization/evaluate_args.h +3 -3
- data/src/core/lib/security/authorization/grpc_authorization_engine.h +3 -3
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +3 -3
- data/src/core/lib/security/authorization/matchers.h +3 -3
- data/src/core/lib/security/authorization/rbac_policy.cc +1 -0
- data/src/core/lib/security/authorization/rbac_policy.h +3 -3
- data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +3 -3
- data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +3 -3
- data/src/core/lib/security/context/security_context.h +3 -3
- data/src/core/lib/security/credentials/alts/alts_credentials.h +3 -3
- data/src/core/lib/security/credentials/alts/check_gcp_environment.h +3 -3
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.h +3 -3
- data/src/core/lib/security/credentials/call_creds_util.h +3 -3
- data/src/core/lib/security/credentials/channel_creds_registry.h +3 -3
- data/src/core/lib/security/credentials/composite/composite_credentials.h +3 -3
- data/src/core/lib/security/credentials/credentials.h +3 -3
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +1 -0
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +3 -3
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +1 -0
- data/src/core/lib/security/credentials/external/aws_request_signer.h +3 -3
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +1 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.h +3 -3
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +3 -3
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +1 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +3 -3
- data/src/core/lib/security/credentials/fake/fake_credentials.h +3 -3
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +3 -3
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +1 -0
- data/src/core/lib/security/credentials/iam/iam_credentials.h +3 -3
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +3 -3
- data/src/core/lib/security/credentials/jwt/json_token.h +3 -3
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +4 -3
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +3 -3
- data/src/core/lib/security/credentials/local/local_credentials.h +3 -3
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +4 -3
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +3 -3
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +3 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +3 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +3 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +3 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +3 -3
- data/src/core/lib/security/credentials/tls/tls_credentials.h +3 -3
- data/src/core/lib/security/credentials/tls/tls_utils.h +3 -3
- data/src/core/lib/security/credentials/xds/xds_credentials.h +3 -3
- data/src/core/lib/security/security_connector/alts/alts_security_connector.h +3 -3
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +1 -0
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +3 -3
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +3 -3
- data/src/core/lib/security/security_connector/load_system_roots.h +3 -3
- data/src/core/lib/security/security_connector/load_system_roots_supported.h +3 -3
- data/src/core/lib/security/security_connector/local/local_security_connector.h +3 -3
- data/src/core/lib/security/security_connector/security_connector.h +3 -3
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +1 -0
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +3 -3
- data/src/core/lib/security/security_connector/ssl_utils.h +3 -3
- data/src/core/lib/security/security_connector/ssl_utils_config.h +3 -3
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +3 -3
- data/src/core/lib/security/transport/auth_filters.h +27 -5
- data/src/core/lib/security/transport/secure_endpoint.h +3 -3
- data/src/core/lib/security/transport/security_handshaker.cc +9 -0
- data/src/core/lib/security/transport/security_handshaker.h +3 -3
- data/src/core/lib/security/transport/server_auth_filter.cc +120 -251
- data/src/core/lib/security/transport/tsi_error.h +3 -3
- data/src/core/lib/security/util/json_util.h +3 -3
- data/src/core/lib/service_config/service_config.h +3 -3
- data/src/core/lib/service_config/service_config_call_data.h +3 -3
- data/src/core/lib/service_config/service_config_impl.h +3 -3
- data/src/core/lib/service_config/service_config_parser.h +3 -3
- data/src/core/lib/slice/b64.h +3 -3
- data/src/core/lib/slice/percent_encoding.h +3 -3
- data/src/core/lib/slice/slice.cc +3 -3
- data/src/core/lib/slice/slice.h +14 -21
- data/src/core/lib/slice/slice_buffer.h +10 -4
- data/src/core/lib/slice/slice_internal.h +3 -3
- data/src/core/lib/slice/slice_refcount.cc +20 -0
- data/src/core/lib/slice/slice_refcount.h +26 -6
- data/src/core/lib/slice/slice_string_helpers.h +3 -3
- data/src/core/lib/surface/api_trace.h +3 -3
- data/src/core/lib/surface/builtins.h +3 -3
- data/src/core/lib/surface/call.cc +866 -252
- data/src/core/lib/surface/call.h +31 -3
- data/src/core/lib/surface/call_log_batch.cc +1 -0
- data/src/core/lib/surface/call_test_only.h +3 -3
- data/src/core/lib/surface/call_trace.cc +21 -11
- data/src/core/lib/surface/call_trace.h +3 -3
- data/src/core/lib/surface/channel.h +3 -3
- data/src/core/lib/surface/channel_init.h +3 -3
- data/src/core/lib/surface/channel_stack_type.h +3 -3
- data/src/core/lib/surface/completion_queue.cc +1 -0
- data/src/core/lib/surface/completion_queue.h +3 -3
- data/src/core/lib/surface/completion_queue_factory.h +3 -3
- data/src/core/lib/surface/event_string.cc +1 -0
- data/src/core/lib/surface/event_string.h +3 -3
- data/src/core/lib/surface/init.cc +1 -1
- data/src/core/lib/surface/init.h +3 -3
- data/src/core/lib/surface/init_internally.h +3 -3
- data/src/core/lib/surface/lame_client.cc +3 -1
- data/src/core/lib/surface/lame_client.h +3 -3
- data/src/core/lib/surface/server.cc +273 -27
- data/src/core/lib/surface/server.h +6 -3
- data/src/core/lib/surface/validate_metadata.h +3 -3
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.h +3 -3
- data/src/core/lib/transport/connectivity_state.h +3 -3
- data/src/core/lib/transport/error_utils.h +3 -3
- data/src/core/lib/transport/handshaker.cc +11 -0
- data/src/core/lib/transport/handshaker.h +4 -4
- data/src/core/lib/transport/handshaker_factory.h +3 -3
- data/src/core/lib/transport/handshaker_registry.h +3 -3
- data/src/core/lib/transport/http2_errors.h +3 -3
- data/src/core/lib/transport/http_connect_handshaker.h +3 -3
- data/src/core/lib/transport/metadata_batch.cc +11 -0
- data/src/core/lib/transport/metadata_batch.h +24 -3
- data/src/core/lib/transport/parsed_metadata.h +3 -3
- data/src/core/lib/transport/pid_controller.h +3 -3
- data/src/core/lib/transport/status_conversion.h +3 -3
- data/src/core/lib/transport/tcp_connect_handshaker.cc +0 -1
- data/src/core/lib/transport/tcp_connect_handshaker.h +3 -3
- data/src/core/lib/transport/timeout_encoding.h +3 -3
- data/src/core/lib/transport/transport.cc +3 -8
- data/src/core/lib/transport/transport.h +16 -8
- data/src/core/lib/transport/transport_fwd.h +3 -3
- data/src/core/lib/transport/transport_impl.h +3 -3
- data/src/core/lib/transport/transport_op_string.cc +1 -0
- data/src/core/lib/uri/uri_parser.cc +1 -1
- data/src/core/lib/uri/uri_parser.h +3 -3
- data/src/core/plugin_registry/grpc_plugin_registry.cc +5 -0
- data/src/core/tsi/alts/crypt/gsec.h +3 -3
- data/src/core/tsi/alts/frame_protector/alts_counter.h +3 -3
- data/src/core/tsi/alts/frame_protector/alts_crypter.h +3 -3
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.h +3 -3
- data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.h +3 -3
- data/src/core/tsi/alts/frame_protector/frame_handler.h +3 -3
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +3 -3
- data/src/core/tsi/alts/handshaker/alts_shared_resource.h +3 -3
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +3 -3
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +3 -3
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +3 -3
- data/src/core/tsi/alts/handshaker/transport_security_common_api.h +3 -3
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.h +3 -3
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.h +3 -3
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol.h +3 -3
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +3 -3
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.h +3 -3
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.h +3 -3
- data/src/core/tsi/fake_transport_security.h +3 -3
- data/src/core/tsi/local_transport_security.h +3 -3
- data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +1 -1
- data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +3 -3
- data/src/core/tsi/ssl/session_cache/ssl_session.h +3 -3
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +3 -3
- data/src/core/tsi/ssl_transport_security.cc +113 -24
- data/src/core/tsi/ssl_transport_security.h +5 -3
- data/src/core/tsi/ssl_transport_security_utils.h +3 -3
- data/src/core/tsi/ssl_types.h +3 -3
- data/src/core/tsi/transport_security.h +3 -3
- data/src/core/tsi/transport_security_grpc.h +3 -3
- data/src/core/tsi/transport_security_interface.h +3 -3
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/generate_proto_ruby.sh +0 -6
- data/third_party/abseil-cpp/absl/algorithm/container.h +56 -57
- data/third_party/abseil-cpp/absl/base/attributes.h +39 -19
- data/third_party/abseil-cpp/absl/base/config.h +44 -3
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.h +3 -18
- data/third_party/abseil-cpp/absl/base/internal/cycleclock_config.h +55 -0
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +2 -1
- data/third_party/abseil-cpp/absl/base/internal/inline_variable.h +3 -3
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +2 -2
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +1 -1
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +10 -6
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +23 -24
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +3 -3
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +2 -6
- data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +4 -1
- data/third_party/abseil-cpp/absl/base/internal/strerror.cc +4 -4
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +14 -10
- data/third_party/abseil-cpp/absl/base/internal/thread_annotations.h +9 -0
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +4 -0
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +3 -40
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock_config.h +62 -0
- data/third_party/abseil-cpp/absl/base/macros.h +4 -21
- data/third_party/abseil-cpp/absl/base/optimization.h +58 -6
- data/third_party/abseil-cpp/absl/base/options.h +1 -7
- data/third_party/abseil-cpp/absl/base/policy_checks.h +15 -13
- data/third_party/abseil-cpp/absl/container/fixed_array.h +7 -5
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +0 -7
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +66 -18
- data/third_party/abseil-cpp/absl/container/internal/common.h +3 -3
- data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +132 -0
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +13 -1
- data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +4 -55
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +50 -5
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +14 -46
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +110 -32
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +155 -4
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +661 -341
- data/third_party/abseil-cpp/absl/crc/crc32c.cc +99 -0
- data/third_party/abseil-cpp/absl/crc/crc32c.h +183 -0
- data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.cc +256 -0
- data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.h +57 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc.cc +468 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc.h +91 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +269 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc32c.h +39 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc32c_inline.h +72 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.cc +130 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.h +159 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_internal.h +179 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy.h +119 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_fallback.cc +75 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_x86_64.cc +434 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_non_temporal_memcpy.cc +93 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +725 -0
- data/third_party/abseil-cpp/absl/crc/internal/non_temporal_arm_intrinsics.h +79 -0
- data/third_party/abseil-cpp/absl/crc/internal/non_temporal_memcpy.h +180 -0
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +1 -1
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +67 -38
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.h +1 -1
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +12 -13
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +11 -9
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +1 -1
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +40 -85
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +5 -4
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +33 -8
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +3 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +3 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +118 -94
- data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +7 -6
- data/third_party/abseil-cpp/absl/functional/any_invocable.h +5 -2
- data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +47 -26
- data/third_party/abseil-cpp/absl/hash/internal/city.cc +10 -10
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +18 -4
- data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +3 -14
- data/third_party/abseil-cpp/absl/memory/memory.h +26 -447
- data/third_party/abseil-cpp/absl/meta/type_traits.h +104 -12
- data/third_party/abseil-cpp/absl/numeric/bits.h +2 -3
- data/third_party/abseil-cpp/absl/numeric/int128.cc +10 -8
- data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +14 -6
- data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +2 -1
- data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +1 -1
- data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +2 -23
- data/third_party/abseil-cpp/absl/random/internal/pool_urbg.cc +9 -9
- data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +2 -2
- data/third_party/abseil-cpp/absl/random/random.h +6 -6
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +1 -0
- data/third_party/abseil-cpp/absl/status/status.cc +19 -12
- data/third_party/abseil-cpp/absl/status/status.h +2 -2
- data/third_party/abseil-cpp/absl/strings/ascii.cc +5 -5
- data/third_party/abseil-cpp/absl/strings/charconv.cc +534 -96
- data/third_party/abseil-cpp/absl/strings/cord.cc +92 -40
- data/third_party/abseil-cpp/absl/strings/cord.h +71 -80
- data/third_party/abseil-cpp/absl/strings/cord_buffer.h +8 -5
- data/third_party/abseil-cpp/absl/strings/escaping.cc +73 -62
- data/third_party/abseil-cpp/absl/strings/escaping.h +24 -19
- data/third_party/abseil-cpp/absl/strings/internal/char_map.h +14 -12
- data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +4 -4
- data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +2 -2
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +326 -70
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +8 -4
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +26 -14
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +5 -5
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.cc +9 -7
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.h +5 -4
- data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.h +7 -15
- data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.h +3 -3
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +8 -5
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +7 -7
- data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +4 -4
- data/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.cc +93 -0
- data/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.h +34 -0
- data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +12 -10
- data/third_party/abseil-cpp/absl/strings/internal/escaping.h +7 -9
- data/third_party/abseil-cpp/absl/strings/internal/has_absl_stringify.h +55 -0
- data/third_party/abseil-cpp/absl/strings/internal/memutil.cc +9 -6
- data/third_party/abseil-cpp/absl/strings/internal/ostringstream.cc +14 -7
- data/third_party/abseil-cpp/absl/strings/internal/ostringstream.h +35 -10
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +113 -46
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +126 -29
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +3 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +4 -3
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +49 -287
- data/third_party/abseil-cpp/absl/strings/internal/str_format/constexpr_parser.h +351 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +2 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +215 -181
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +10 -209
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +10 -101
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +2 -1
- data/third_party/abseil-cpp/absl/strings/internal/stringify_sink.cc +28 -0
- data/third_party/abseil-cpp/absl/strings/internal/stringify_sink.h +57 -0
- data/third_party/abseil-cpp/absl/strings/numbers.cc +34 -31
- data/third_party/abseil-cpp/absl/strings/str_cat.cc +9 -6
- data/third_party/abseil-cpp/absl/strings/str_cat.h +50 -3
- data/third_party/abseil-cpp/absl/strings/str_format.h +71 -9
- data/third_party/abseil-cpp/absl/strings/string_view.cc +6 -6
- data/third_party/abseil-cpp/absl/strings/string_view.h +3 -10
- data/third_party/abseil-cpp/absl/strings/substitute.cc +8 -6
- data/third_party/abseil-cpp/absl/strings/substitute.h +46 -20
- data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +20 -17
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +37 -31
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +22 -8
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +104 -55
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +85 -46
- data/third_party/abseil-cpp/absl/synchronization/notification.cc +0 -1
- data/third_party/abseil-cpp/absl/synchronization/notification.h +0 -1
- data/third_party/abseil-cpp/absl/time/civil_time.cc +26 -0
- data/third_party/abseil-cpp/absl/time/civil_time.h +25 -0
- data/third_party/abseil-cpp/absl/time/clock.cc +17 -11
- data/third_party/abseil-cpp/absl/time/duration.cc +7 -7
- data/third_party/abseil-cpp/absl/time/format.cc +2 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +26 -5
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +7 -6
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +36 -35
- data/third_party/abseil-cpp/absl/time/time.cc +2 -2
- data/third_party/abseil-cpp/absl/time/time.h +253 -158
- data/third_party/abseil-cpp/absl/types/internal/span.h +30 -19
- data/third_party/abseil-cpp/absl/types/internal/variant.h +28 -40
- data/third_party/abseil-cpp/absl/types/span.h +29 -7
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +1 -2
- metadata +75 -10
- data/src/core/lib/event_engine/socket_notifier.h +0 -55
- data/src/core/lib/promise/for_each.h +0 -155
- data/src/core/lib/promise/map_pipe.h +0 -88
- data/src/core/lib/promise/try_concurrently.h +0 -342
@@ -0,0 +1,79 @@
|
|
1
|
+
// Copyright 2022 The Abseil Authors
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// https://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
|
15
|
+
#ifndef ABSL_CRC_INTERNAL_NON_TEMPORAL_ARM_INTRINSICS_H_
|
16
|
+
#define ABSL_CRC_INTERNAL_NON_TEMPORAL_ARM_INTRINSICS_H_
|
17
|
+
|
18
|
+
#include "absl/base/config.h"
|
19
|
+
|
20
|
+
#ifdef __aarch64__
|
21
|
+
#include <arm_neon.h>
|
22
|
+
|
23
|
+
typedef int64x2_t __m128i; /* 128-bit vector containing integers */
|
24
|
+
#define vreinterpretq_m128i_s32(x) vreinterpretq_s64_s32(x)
|
25
|
+
#define vreinterpretq_s64_m128i(x) (x)
|
26
|
+
|
27
|
+
// Guarantees that every preceding store is globally visible before any
|
28
|
+
// subsequent store.
|
29
|
+
// https://msdn.microsoft.com/en-us/library/5h2w73d1%28v=vs.90%29.aspx
|
30
|
+
static inline __attribute__((always_inline)) void _mm_sfence(void) {
|
31
|
+
__sync_synchronize();
|
32
|
+
}
|
33
|
+
|
34
|
+
// Load 128-bits of integer data from unaligned memory into dst. This intrinsic
|
35
|
+
// may perform better than _mm_loadu_si128 when the data crosses a cache line
|
36
|
+
// boundary.
|
37
|
+
//
|
38
|
+
// dst[127:0] := MEM[mem_addr+127:mem_addr]
|
39
|
+
//
|
40
|
+
// https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_lddqu_si128
|
41
|
+
#define _mm_lddqu_si128 _mm_loadu_si128
|
42
|
+
|
43
|
+
// Loads 128-bit value. :
|
44
|
+
// https://msdn.microsoft.com/zh-cn/library/f4k12ae8(v=vs.90).aspx
|
45
|
+
static inline __attribute__((always_inline)) __m128i _mm_loadu_si128(
|
46
|
+
const __m128i *p) {
|
47
|
+
return vreinterpretq_m128i_s32(vld1q_s32((const int32_t *)p));
|
48
|
+
}
|
49
|
+
|
50
|
+
// Stores the data in a to the address p without polluting the caches. If the
|
51
|
+
// cache line containing address p is already in the cache, the cache will be
|
52
|
+
// updated.
|
53
|
+
// https://msdn.microsoft.com/en-us/library/ba08y07y%28v=vs.90%29.aspx
|
54
|
+
static inline __attribute__((always_inline)) void _mm_stream_si128(__m128i *p,
|
55
|
+
__m128i a) {
|
56
|
+
#if ABSL_HAVE_BUILTIN(__builtin_nontemporal_store)
|
57
|
+
__builtin_nontemporal_store(a, p);
|
58
|
+
#else
|
59
|
+
vst1q_s64((int64_t *)p, vreinterpretq_s64_m128i(a));
|
60
|
+
#endif
|
61
|
+
}
|
62
|
+
|
63
|
+
// Sets the 16 signed 8-bit integer values.
|
64
|
+
// https://msdn.microsoft.com/en-us/library/x0cx8zd3(v=vs.90).aspx
|
65
|
+
static inline __attribute__((always_inline)) __m128i _mm_set_epi8(
|
66
|
+
signed char b15, signed char b14, signed char b13, signed char b12,
|
67
|
+
signed char b11, signed char b10, signed char b9, signed char b8,
|
68
|
+
signed char b7, signed char b6, signed char b5, signed char b4,
|
69
|
+
signed char b3, signed char b2, signed char b1, signed char b0) {
|
70
|
+
int8_t __attribute__((aligned(16)))
|
71
|
+
data[16] = {(int8_t)b0, (int8_t)b1, (int8_t)b2, (int8_t)b3,
|
72
|
+
(int8_t)b4, (int8_t)b5, (int8_t)b6, (int8_t)b7,
|
73
|
+
(int8_t)b8, (int8_t)b9, (int8_t)b10, (int8_t)b11,
|
74
|
+
(int8_t)b12, (int8_t)b13, (int8_t)b14, (int8_t)b15};
|
75
|
+
return (__m128i)vld1q_s8(data);
|
76
|
+
}
|
77
|
+
#endif // __aarch64__
|
78
|
+
|
79
|
+
#endif // ABSL_CRC_INTERNAL_NON_TEMPORAL_ARM_INTRINSICS_H_
|
@@ -0,0 +1,180 @@
|
|
1
|
+
// Copyright 2022 The Abseil Authors
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// https://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
|
15
|
+
#ifndef ABSL_CRC_INTERNAL_NON_TEMPORAL_MEMCPY_H_
|
16
|
+
#define ABSL_CRC_INTERNAL_NON_TEMPORAL_MEMCPY_H_
|
17
|
+
|
18
|
+
#ifdef _MSC_VER
|
19
|
+
#include <intrin.h>
|
20
|
+
#endif
|
21
|
+
|
22
|
+
#ifdef __SSE__
|
23
|
+
#include <xmmintrin.h>
|
24
|
+
#endif
|
25
|
+
|
26
|
+
#ifdef __SSE2__
|
27
|
+
#include <emmintrin.h>
|
28
|
+
#endif
|
29
|
+
|
30
|
+
#ifdef __SSE3__
|
31
|
+
#include <pmmintrin.h>
|
32
|
+
#endif
|
33
|
+
|
34
|
+
#ifdef __AVX__
|
35
|
+
#include <immintrin.h>
|
36
|
+
#endif
|
37
|
+
|
38
|
+
#ifdef __aarch64__
|
39
|
+
#include "absl/crc/internal/non_temporal_arm_intrinsics.h"
|
40
|
+
#endif
|
41
|
+
|
42
|
+
#include <algorithm>
|
43
|
+
#include <cassert>
|
44
|
+
#include <cstdint>
|
45
|
+
#include <cstring>
|
46
|
+
|
47
|
+
#include "absl/base/config.h"
|
48
|
+
#include "absl/base/optimization.h"
|
49
|
+
|
50
|
+
namespace absl {
|
51
|
+
ABSL_NAMESPACE_BEGIN
|
52
|
+
namespace crc_internal {
|
53
|
+
|
54
|
+
// This non-temporal memcpy does regular load and non-temporal store memory
|
55
|
+
// copy. It is compatible to both 16-byte aligned and unaligned addresses. If
|
56
|
+
// data at the destination is not immediately accessed, using non-temporal
|
57
|
+
// memcpy can save 1 DRAM load of the destination cacheline.
|
58
|
+
constexpr size_t kCacheLineSize = ABSL_CACHELINE_SIZE;
|
59
|
+
|
60
|
+
// If the objects overlap, the behavior is undefined.
|
61
|
+
inline void *non_temporal_store_memcpy(void *__restrict dst,
|
62
|
+
const void *__restrict src, size_t len) {
|
63
|
+
#if defined(__SSE3__) || defined(__aarch64__) || \
|
64
|
+
(defined(_MSC_VER) && defined(__AVX__))
|
65
|
+
// This implementation requires SSE3.
|
66
|
+
// MSVC cannot target SSE3 directly, but when MSVC targets AVX,
|
67
|
+
// SSE3 support is implied.
|
68
|
+
uint8_t *d = reinterpret_cast<uint8_t *>(dst);
|
69
|
+
const uint8_t *s = reinterpret_cast<const uint8_t *>(src);
|
70
|
+
|
71
|
+
// memcpy() the misaligned header. At the end of this if block, <d> is
|
72
|
+
// aligned to a 64-byte cacheline boundary or <len> == 0.
|
73
|
+
if (reinterpret_cast<uintptr_t>(d) & (kCacheLineSize - 1)) {
|
74
|
+
uintptr_t bytes_before_alignment_boundary =
|
75
|
+
kCacheLineSize -
|
76
|
+
(reinterpret_cast<uintptr_t>(d) & (kCacheLineSize - 1));
|
77
|
+
size_t header_len = (std::min)(bytes_before_alignment_boundary, len);
|
78
|
+
assert(bytes_before_alignment_boundary < kCacheLineSize);
|
79
|
+
memcpy(d, s, header_len);
|
80
|
+
d += header_len;
|
81
|
+
s += header_len;
|
82
|
+
len -= header_len;
|
83
|
+
}
|
84
|
+
|
85
|
+
if (len >= kCacheLineSize) {
|
86
|
+
_mm_sfence();
|
87
|
+
__m128i *dst_cacheline = reinterpret_cast<__m128i *>(d);
|
88
|
+
const __m128i *src_cacheline = reinterpret_cast<const __m128i *>(s);
|
89
|
+
constexpr int kOpsPerCacheLine = kCacheLineSize / sizeof(__m128i);
|
90
|
+
size_t loops = len / kCacheLineSize;
|
91
|
+
|
92
|
+
while (len >= kCacheLineSize) {
|
93
|
+
__m128i temp1, temp2, temp3, temp4;
|
94
|
+
temp1 = _mm_lddqu_si128(src_cacheline + 0);
|
95
|
+
temp2 = _mm_lddqu_si128(src_cacheline + 1);
|
96
|
+
temp3 = _mm_lddqu_si128(src_cacheline + 2);
|
97
|
+
temp4 = _mm_lddqu_si128(src_cacheline + 3);
|
98
|
+
_mm_stream_si128(dst_cacheline + 0, temp1);
|
99
|
+
_mm_stream_si128(dst_cacheline + 1, temp2);
|
100
|
+
_mm_stream_si128(dst_cacheline + 2, temp3);
|
101
|
+
_mm_stream_si128(dst_cacheline + 3, temp4);
|
102
|
+
src_cacheline += kOpsPerCacheLine;
|
103
|
+
dst_cacheline += kOpsPerCacheLine;
|
104
|
+
len -= kCacheLineSize;
|
105
|
+
}
|
106
|
+
d += loops * kCacheLineSize;
|
107
|
+
s += loops * kCacheLineSize;
|
108
|
+
_mm_sfence();
|
109
|
+
}
|
110
|
+
|
111
|
+
// memcpy the tail.
|
112
|
+
if (len) {
|
113
|
+
memcpy(d, s, len);
|
114
|
+
}
|
115
|
+
return dst;
|
116
|
+
#else
|
117
|
+
// Fallback to regular memcpy.
|
118
|
+
return memcpy(dst, src, len);
|
119
|
+
#endif // __SSE3__ || __aarch64__ || (_MSC_VER && __AVX__)
|
120
|
+
}
|
121
|
+
|
122
|
+
inline void *non_temporal_store_memcpy_avx(void *__restrict dst,
|
123
|
+
const void *__restrict src,
|
124
|
+
size_t len) {
|
125
|
+
#ifdef __AVX__
|
126
|
+
uint8_t *d = reinterpret_cast<uint8_t *>(dst);
|
127
|
+
const uint8_t *s = reinterpret_cast<const uint8_t *>(src);
|
128
|
+
|
129
|
+
// memcpy() the misaligned header. At the end of this if block, <d> is
|
130
|
+
// aligned to a 64-byte cacheline boundary or <len> == 0.
|
131
|
+
if (reinterpret_cast<uintptr_t>(d) & (kCacheLineSize - 1)) {
|
132
|
+
uintptr_t bytes_before_alignment_boundary =
|
133
|
+
kCacheLineSize -
|
134
|
+
(reinterpret_cast<uintptr_t>(d) & (kCacheLineSize - 1));
|
135
|
+
size_t header_len = (std::min)(bytes_before_alignment_boundary, len);
|
136
|
+
assert(bytes_before_alignment_boundary < kCacheLineSize);
|
137
|
+
memcpy(d, s, header_len);
|
138
|
+
d += header_len;
|
139
|
+
s += header_len;
|
140
|
+
len -= header_len;
|
141
|
+
}
|
142
|
+
|
143
|
+
if (len >= kCacheLineSize) {
|
144
|
+
_mm_sfence();
|
145
|
+
__m256i *dst_cacheline = reinterpret_cast<__m256i *>(d);
|
146
|
+
const __m256i *src_cacheline = reinterpret_cast<const __m256i *>(s);
|
147
|
+
constexpr int kOpsPerCacheLine = kCacheLineSize / sizeof(__m256i);
|
148
|
+
size_t loops = len / kCacheLineSize;
|
149
|
+
|
150
|
+
while (len >= kCacheLineSize) {
|
151
|
+
__m256i temp1, temp2;
|
152
|
+
temp1 = _mm256_lddqu_si256(src_cacheline + 0);
|
153
|
+
temp2 = _mm256_lddqu_si256(src_cacheline + 1);
|
154
|
+
_mm256_stream_si256(dst_cacheline + 0, temp1);
|
155
|
+
_mm256_stream_si256(dst_cacheline + 1, temp2);
|
156
|
+
src_cacheline += kOpsPerCacheLine;
|
157
|
+
dst_cacheline += kOpsPerCacheLine;
|
158
|
+
len -= kCacheLineSize;
|
159
|
+
}
|
160
|
+
d += loops * kCacheLineSize;
|
161
|
+
s += loops * kCacheLineSize;
|
162
|
+
_mm_sfence();
|
163
|
+
}
|
164
|
+
|
165
|
+
// memcpy the tail.
|
166
|
+
if (len) {
|
167
|
+
memcpy(d, s, len);
|
168
|
+
}
|
169
|
+
return dst;
|
170
|
+
#else
|
171
|
+
// Fallback to regular memcpy when AVX is not available.
|
172
|
+
return memcpy(dst, src, len);
|
173
|
+
#endif // __AVX__
|
174
|
+
}
|
175
|
+
|
176
|
+
} // namespace crc_internal
|
177
|
+
ABSL_NAMESPACE_END
|
178
|
+
} // namespace absl
|
179
|
+
|
180
|
+
#endif // ABSL_CRC_INTERNAL_NON_TEMPORAL_MEMCPY_H_
|
@@ -52,7 +52,7 @@ namespace debugging_internal {
|
|
52
52
|
bool AddressIsReadable(const void *addr) {
|
53
53
|
// Align address on 8-byte boundary. On aarch64, checking last
|
54
54
|
// byte before inaccessible page returned unexpected EFAULT.
|
55
|
-
const uintptr_t u_addr = reinterpret_cast<uintptr_t>(addr) & ~7;
|
55
|
+
const uintptr_t u_addr = reinterpret_cast<uintptr_t>(addr) & ~uintptr_t{7};
|
56
56
|
addr = reinterpret_cast<const void *>(u_addr);
|
57
57
|
|
58
58
|
// rt_sigprocmask below will succeed for this input.
|
@@ -151,12 +151,12 @@ static const AbbrevPair kSubstitutionList[] = {
|
|
151
151
|
// State needed for demangling. This struct is copied in almost every stack
|
152
152
|
// frame, so every byte counts.
|
153
153
|
typedef struct {
|
154
|
-
int mangled_idx;
|
155
|
-
int out_cur_idx;
|
156
|
-
int prev_name_idx;
|
157
|
-
|
158
|
-
signed int nest_level : 15;
|
159
|
-
unsigned int append : 1;
|
154
|
+
int mangled_idx; // Cursor of mangled name.
|
155
|
+
int out_cur_idx; // Cursor of output string.
|
156
|
+
int prev_name_idx; // For constructors/destructors.
|
157
|
+
unsigned int prev_name_length : 16; // For constructors/destructors.
|
158
|
+
signed int nest_level : 15; // For nested names.
|
159
|
+
unsigned int append : 1; // Append flag.
|
160
160
|
// Note: for some reason MSVC can't pack "bool append : 1" into the same int
|
161
161
|
// with the above two fields, so we use an int instead. Amusingly it can pack
|
162
162
|
// "signed bool" as expected, but relying on that to continue to be a legal
|
@@ -235,8 +235,8 @@ static size_t StrLen(const char *str) {
|
|
235
235
|
}
|
236
236
|
|
237
237
|
// Returns true if "str" has at least "n" characters remaining.
|
238
|
-
static bool AtLeastNumCharsRemaining(const char *str,
|
239
|
-
for (
|
238
|
+
static bool AtLeastNumCharsRemaining(const char *str, size_t n) {
|
239
|
+
for (size_t i = 0; i < n; ++i) {
|
240
240
|
if (str[i] == '\0') {
|
241
241
|
return false;
|
242
242
|
}
|
@@ -253,18 +253,20 @@ static bool StrPrefix(const char *str, const char *prefix) {
|
|
253
253
|
return prefix[i] == '\0'; // Consumed everything in "prefix".
|
254
254
|
}
|
255
255
|
|
256
|
-
static void InitState(State
|
257
|
-
|
256
|
+
static void InitState(State* state,
|
257
|
+
const char* mangled,
|
258
|
+
char* out,
|
259
|
+
size_t out_size) {
|
258
260
|
state->mangled_begin = mangled;
|
259
261
|
state->out = out;
|
260
|
-
state->out_end_idx = out_size;
|
262
|
+
state->out_end_idx = static_cast<int>(out_size);
|
261
263
|
state->recursion_depth = 0;
|
262
264
|
state->steps = 0;
|
263
265
|
|
264
266
|
state->parse_state.mangled_idx = 0;
|
265
267
|
state->parse_state.out_cur_idx = 0;
|
266
268
|
state->parse_state.prev_name_idx = 0;
|
267
|
-
state->parse_state.prev_name_length =
|
269
|
+
state->parse_state.prev_name_length = 0;
|
268
270
|
state->parse_state.nest_level = -1;
|
269
271
|
state->parse_state.append = true;
|
270
272
|
}
|
@@ -356,8 +358,8 @@ static bool ZeroOrMore(ParseFunc parse_func, State *state) {
|
|
356
358
|
// Append "str" at "out_cur_idx". If there is an overflow, out_cur_idx is
|
357
359
|
// set to out_end_idx+1. The output string is ensured to
|
358
360
|
// always terminate with '\0' as long as there is no overflow.
|
359
|
-
static void Append(State *state, const char *const str, const
|
360
|
-
for (
|
361
|
+
static void Append(State *state, const char *const str, const size_t length) {
|
362
|
+
for (size_t i = 0; i < length; ++i) {
|
361
363
|
if (state->parse_state.out_cur_idx + 1 <
|
362
364
|
state->out_end_idx) { // +1 for '\0'
|
363
365
|
state->out[state->parse_state.out_cur_idx++] = str[i];
|
@@ -420,7 +422,7 @@ static bool EndsWith(State *state, const char chr) {
|
|
420
422
|
|
421
423
|
// Append "str" with some tweaks, iff "append" state is true.
|
422
424
|
static void MaybeAppendWithLength(State *state, const char *const str,
|
423
|
-
const
|
425
|
+
const size_t length) {
|
424
426
|
if (state->parse_state.append && length > 0) {
|
425
427
|
// Append a space if the output buffer ends with '<' and "str"
|
426
428
|
// starts with '<' to avoid <<<.
|
@@ -432,14 +434,14 @@ static void MaybeAppendWithLength(State *state, const char *const str,
|
|
432
434
|
if (state->parse_state.out_cur_idx < state->out_end_idx &&
|
433
435
|
(IsAlpha(str[0]) || str[0] == '_')) {
|
434
436
|
state->parse_state.prev_name_idx = state->parse_state.out_cur_idx;
|
435
|
-
state->parse_state.prev_name_length = length;
|
437
|
+
state->parse_state.prev_name_length = static_cast<unsigned int>(length);
|
436
438
|
}
|
437
439
|
Append(state, str, length);
|
438
440
|
}
|
439
441
|
}
|
440
442
|
|
441
443
|
// Appends a positive decimal number to the output if appending is enabled.
|
442
|
-
static bool MaybeAppendDecimal(State *state,
|
444
|
+
static bool MaybeAppendDecimal(State *state, int val) {
|
443
445
|
// Max {32-64}-bit unsigned int is 20 digits.
|
444
446
|
constexpr size_t kMaxLength = 20;
|
445
447
|
char buf[kMaxLength];
|
@@ -451,12 +453,12 @@ static bool MaybeAppendDecimal(State *state, unsigned int val) {
|
|
451
453
|
// one-past-the-end and manipulate one character before the pointer.
|
452
454
|
char *p = &buf[kMaxLength];
|
453
455
|
do { // val=0 is the only input that should write a leading zero digit.
|
454
|
-
*--p = (val % 10) + '0';
|
456
|
+
*--p = static_cast<char>((val % 10) + '0');
|
455
457
|
val /= 10;
|
456
458
|
} while (p > buf && val != 0);
|
457
459
|
|
458
460
|
// 'p' landed on the last character we set. How convenient.
|
459
|
-
Append(state, p, kMaxLength - (p - buf));
|
461
|
+
Append(state, p, kMaxLength - static_cast<size_t>(p - buf));
|
460
462
|
}
|
461
463
|
|
462
464
|
return true;
|
@@ -466,7 +468,7 @@ static bool MaybeAppendDecimal(State *state, unsigned int val) {
|
|
466
468
|
// Returns true so that it can be placed in "if" conditions.
|
467
469
|
static bool MaybeAppend(State *state, const char *const str) {
|
468
470
|
if (state->parse_state.append) {
|
469
|
-
|
471
|
+
size_t length = StrLen(str);
|
470
472
|
MaybeAppendWithLength(state, str, length);
|
471
473
|
}
|
472
474
|
return true;
|
@@ -521,10 +523,10 @@ static void MaybeCancelLastSeparator(State *state) {
|
|
521
523
|
|
522
524
|
// Returns true if the identifier of the given length pointed to by
|
523
525
|
// "mangled_cur" is anonymous namespace.
|
524
|
-
static bool IdentifierIsAnonymousNamespace(State *state,
|
526
|
+
static bool IdentifierIsAnonymousNamespace(State *state, size_t length) {
|
525
527
|
// Returns true if "anon_prefix" is a proper prefix of "mangled_cur".
|
526
528
|
static const char anon_prefix[] = "_GLOBAL__N_";
|
527
|
-
return (length >
|
529
|
+
return (length > (sizeof(anon_prefix) - 1) &&
|
528
530
|
StrPrefix(RemainingInput(state), anon_prefix));
|
529
531
|
}
|
530
532
|
|
@@ -542,12 +544,13 @@ static bool ParseUnnamedTypeName(State *state);
|
|
542
544
|
static bool ParseNumber(State *state, int *number_out);
|
543
545
|
static bool ParseFloatNumber(State *state);
|
544
546
|
static bool ParseSeqId(State *state);
|
545
|
-
static bool ParseIdentifier(State *state,
|
547
|
+
static bool ParseIdentifier(State *state, size_t length);
|
546
548
|
static bool ParseOperatorName(State *state, int *arity);
|
547
549
|
static bool ParseSpecialName(State *state);
|
548
550
|
static bool ParseCallOffset(State *state);
|
549
551
|
static bool ParseNVOffset(State *state);
|
550
552
|
static bool ParseVOffset(State *state);
|
553
|
+
static bool ParseAbiTags(State *state);
|
551
554
|
static bool ParseCtorDtorName(State *state);
|
552
555
|
static bool ParseDecltype(State *state);
|
553
556
|
static bool ParseType(State *state);
|
@@ -601,7 +604,7 @@ static bool ParseSubstitution(State *state, bool accept_std);
|
|
601
604
|
//
|
602
605
|
// Reference:
|
603
606
|
// - Itanium C++ ABI
|
604
|
-
// <https://
|
607
|
+
// <https://itanium-cxx-abi.github.io/cxx-abi/abi.html#mangling>
|
605
608
|
|
606
609
|
// <mangled-name> ::= _Z <encoding>
|
607
610
|
static bool ParseMangledName(State *state) {
|
@@ -741,17 +744,42 @@ static bool ParsePrefix(State *state) {
|
|
741
744
|
return true;
|
742
745
|
}
|
743
746
|
|
744
|
-
// <unqualified-name> ::= <operator-name>
|
745
|
-
// ::= <ctor-dtor-name>
|
746
|
-
// ::= <source-name>
|
747
|
-
// ::= <local-source-name>
|
748
|
-
// ::= <unnamed-type-name>
|
747
|
+
// <unqualified-name> ::= <operator-name> [<abi-tags>]
|
748
|
+
// ::= <ctor-dtor-name> [<abi-tags>]
|
749
|
+
// ::= <source-name> [<abi-tags>]
|
750
|
+
// ::= <local-source-name> [<abi-tags>]
|
751
|
+
// ::= <unnamed-type-name> [<abi-tags>]
|
752
|
+
//
|
753
|
+
// <local-source-name> is a GCC extension; see below.
|
749
754
|
static bool ParseUnqualifiedName(State *state) {
|
750
755
|
ComplexityGuard guard(state);
|
751
756
|
if (guard.IsTooComplex()) return false;
|
752
|
-
|
753
|
-
|
754
|
-
|
757
|
+
if (ParseOperatorName(state, nullptr) || ParseCtorDtorName(state) ||
|
758
|
+
ParseSourceName(state) || ParseLocalSourceName(state) ||
|
759
|
+
ParseUnnamedTypeName(state)) {
|
760
|
+
return ParseAbiTags(state);
|
761
|
+
}
|
762
|
+
return false;
|
763
|
+
}
|
764
|
+
|
765
|
+
// <abi-tags> ::= <abi-tag> [<abi-tags>]
|
766
|
+
// <abi-tag> ::= B <source-name>
|
767
|
+
static bool ParseAbiTags(State *state) {
|
768
|
+
ComplexityGuard guard(state);
|
769
|
+
if (guard.IsTooComplex()) return false;
|
770
|
+
|
771
|
+
while (ParseOneCharToken(state, 'B')) {
|
772
|
+
ParseState copy = state->parse_state;
|
773
|
+
MaybeAppend(state, "[abi:");
|
774
|
+
|
775
|
+
if (!ParseSourceName(state)) {
|
776
|
+
state->parse_state = copy;
|
777
|
+
return false;
|
778
|
+
}
|
779
|
+
MaybeAppend(state, "]");
|
780
|
+
}
|
781
|
+
|
782
|
+
return true;
|
755
783
|
}
|
756
784
|
|
757
785
|
// <source-name> ::= <positive length number> <identifier>
|
@@ -760,7 +788,8 @@ static bool ParseSourceName(State *state) {
|
|
760
788
|
if (guard.IsTooComplex()) return false;
|
761
789
|
ParseState copy = state->parse_state;
|
762
790
|
int length = -1;
|
763
|
-
if (ParseNumber(state, &length) &&
|
791
|
+
if (ParseNumber(state, &length) &&
|
792
|
+
ParseIdentifier(state, static_cast<size_t>(length))) {
|
764
793
|
return true;
|
765
794
|
}
|
766
795
|
state->parse_state = copy;
|
@@ -838,7 +867,7 @@ static bool ParseNumber(State *state, int *number_out) {
|
|
838
867
|
uint64_t number = 0;
|
839
868
|
for (; *p != '\0'; ++p) {
|
840
869
|
if (IsDigit(*p)) {
|
841
|
-
number = number * 10 + (*p - '0');
|
870
|
+
number = number * 10 + static_cast<uint64_t>(*p - '0');
|
842
871
|
} else {
|
843
872
|
break;
|
844
873
|
}
|
@@ -853,7 +882,7 @@ static bool ParseNumber(State *state, int *number_out) {
|
|
853
882
|
state->parse_state.mangled_idx += p - RemainingInput(state);
|
854
883
|
if (number_out != nullptr) {
|
855
884
|
// Note: possibly truncate "number".
|
856
|
-
*number_out = number;
|
885
|
+
*number_out = static_cast<int>(number);
|
857
886
|
}
|
858
887
|
return true;
|
859
888
|
}
|
@@ -897,10 +926,10 @@ static bool ParseSeqId(State *state) {
|
|
897
926
|
}
|
898
927
|
|
899
928
|
// <identifier> ::= <unqualified source code identifier> (of given length)
|
900
|
-
static bool ParseIdentifier(State *state,
|
929
|
+
static bool ParseIdentifier(State *state, size_t length) {
|
901
930
|
ComplexityGuard guard(state);
|
902
931
|
if (guard.IsTooComplex()) return false;
|
903
|
-
if (
|
932
|
+
if (!AtLeastNumCharsRemaining(RemainingInput(state), length)) {
|
904
933
|
return false;
|
905
934
|
}
|
906
935
|
if (IdentifierIsAnonymousNamespace(state, length)) {
|
@@ -1947,7 +1976,7 @@ static bool Overflowed(const State *state) {
|
|
1947
1976
|
}
|
1948
1977
|
|
1949
1978
|
// The demangler entry point.
|
1950
|
-
bool Demangle(const char
|
1979
|
+
bool Demangle(const char* mangled, char* out, size_t out_size) {
|
1951
1980
|
State state;
|
1952
1981
|
InitState(&state, mangled, out, out_size);
|
1953
1982
|
return ParseTopLevelMangledName(&state) && !Overflowed(&state) &&
|
@@ -62,7 +62,7 @@ namespace debugging_internal {
|
|
62
62
|
// Demangle `mangled`. On success, return true and write the
|
63
63
|
// demangled symbol name to `out`. Otherwise, return false.
|
64
64
|
// `out` is modified even if demangling is unsuccessful.
|
65
|
-
bool Demangle(const char
|
65
|
+
bool Demangle(const char* mangled, char* out, size_t out_size);
|
66
66
|
|
67
67
|
} // namespace debugging_internal
|
68
68
|
ABSL_NAMESPACE_END
|
@@ -91,7 +91,7 @@ int ElfMemImage::GetNumSymbols() const {
|
|
91
91
|
return 0;
|
92
92
|
}
|
93
93
|
// See http://www.caldera.com/developers/gabi/latest/ch5.dynamic.html#hash
|
94
|
-
return hash_[1];
|
94
|
+
return static_cast<int>(hash_[1]);
|
95
95
|
}
|
96
96
|
|
97
97
|
const ElfW(Sym) *ElfMemImage::GetDynsym(int index) const {
|
@@ -105,11 +105,9 @@ const ElfW(Versym) *ElfMemImage::GetVersym(int index) const {
|
|
105
105
|
}
|
106
106
|
|
107
107
|
const ElfW(Phdr) *ElfMemImage::GetPhdr(int index) const {
|
108
|
-
ABSL_RAW_CHECK(index < ehdr_->e_phnum, "index out of range");
|
109
|
-
return GetTableElement<ElfW(Phdr)>(ehdr_,
|
110
|
-
|
111
|
-
ehdr_->e_phentsize,
|
112
|
-
index);
|
108
|
+
ABSL_RAW_CHECK(index >= 0 && index < ehdr_->e_phnum, "index out of range");
|
109
|
+
return GetTableElement<ElfW(Phdr)>(ehdr_, ehdr_->e_phoff, ehdr_->e_phentsize,
|
110
|
+
static_cast<size_t>(index));
|
113
111
|
}
|
114
112
|
|
115
113
|
const char *ElfMemImage::GetDynstr(ElfW(Word) offset) const {
|
@@ -159,7 +157,8 @@ void ElfMemImage::Init(const void *base) {
|
|
159
157
|
hash_ = nullptr;
|
160
158
|
strsize_ = 0;
|
161
159
|
verdefnum_ = 0;
|
162
|
-
|
160
|
+
// Sentinel: PT_LOAD .p_vaddr can't possibly be this.
|
161
|
+
link_base_ = ~ElfW(Addr){0}; // NOLINT(readability/braces)
|
163
162
|
if (!base) {
|
164
163
|
return;
|
165
164
|
}
|
@@ -218,11 +217,11 @@ void ElfMemImage::Init(const void *base) {
|
|
218
217
|
}
|
219
218
|
ptrdiff_t relocation =
|
220
219
|
base_as_char - reinterpret_cast<const char *>(link_base_);
|
221
|
-
ElfW(Dyn)
|
222
|
-
|
223
|
-
relocation);
|
220
|
+
ElfW(Dyn)* dynamic_entry = reinterpret_cast<ElfW(Dyn)*>(
|
221
|
+
static_cast<intptr_t>(dynamic_program_header->p_vaddr) + relocation);
|
224
222
|
for (; dynamic_entry->d_tag != DT_NULL; ++dynamic_entry) {
|
225
|
-
const auto value =
|
223
|
+
const auto value =
|
224
|
+
static_cast<intptr_t>(dynamic_entry->d_un.d_val) + relocation;
|
226
225
|
switch (dynamic_entry->d_tag) {
|
227
226
|
case DT_HASH:
|
228
227
|
hash_ = reinterpret_cast<ElfW(Word) *>(value);
|
@@ -240,10 +239,10 @@ void ElfMemImage::Init(const void *base) {
|
|
240
239
|
verdef_ = reinterpret_cast<ElfW(Verdef) *>(value);
|
241
240
|
break;
|
242
241
|
case DT_VERDEFNUM:
|
243
|
-
verdefnum_ = dynamic_entry->d_un.d_val;
|
242
|
+
verdefnum_ = static_cast<size_t>(dynamic_entry->d_un.d_val);
|
244
243
|
break;
|
245
244
|
case DT_STRSZ:
|
246
|
-
strsize_ = dynamic_entry->d_un.d_val;
|
245
|
+
strsize_ = static_cast<size_t>(dynamic_entry->d_un.d_val);
|
247
246
|
break;
|
248
247
|
default:
|
249
248
|
// Unrecognized entries explicitly ignored.
|
@@ -19,7 +19,7 @@
|
|
19
19
|
#include "absl/debugging/internal/vdso_support.h" // a no-op on non-elf or non-glibc systems
|
20
20
|
#include "absl/debugging/stacktrace.h"
|
21
21
|
|
22
|
-
static const
|
22
|
+
static const size_t kUnknownFrameSize = 0;
|
23
23
|
|
24
24
|
#if defined(__linux__)
|
25
25
|
// Returns the address of the VDSO __kernel_rt_sigreturn function, if present.
|
@@ -65,11 +65,12 @@ static const unsigned char* GetKernelRtSigreturnAddress() {
|
|
65
65
|
// Compute the size of a stack frame in [low..high). We assume that
|
66
66
|
// low < high. Return size of kUnknownFrameSize.
|
67
67
|
template<typename T>
|
68
|
-
static inline
|
69
|
-
|
68
|
+
static inline size_t ComputeStackFrameSize(const T* low,
|
69
|
+
const T* high) {
|
70
70
|
const char* low_char_ptr = reinterpret_cast<const char *>(low);
|
71
71
|
const char* high_char_ptr = reinterpret_cast<const char *>(high);
|
72
|
-
return low < high ? high_char_ptr - low_char_ptr
|
72
|
+
return low < high ? static_cast<size_t>(high_char_ptr - low_char_ptr)
|
73
|
+
: kUnknownFrameSize;
|
73
74
|
}
|
74
75
|
|
75
76
|
// Given a pointer to a stack frame, locate and return the calling
|
@@ -110,15 +111,15 @@ static void **NextStackFrame(void **old_frame_pointer, const void *uc) {
|
|
110
111
|
}
|
111
112
|
#endif
|
112
113
|
|
113
|
-
//
|
114
|
-
if ((reinterpret_cast<uintptr_t>(new_frame_pointer) &
|
114
|
+
// The frame pointer should be 8-byte aligned.
|
115
|
+
if ((reinterpret_cast<uintptr_t>(new_frame_pointer) & 7) != 0)
|
115
116
|
return nullptr;
|
116
117
|
|
117
118
|
// Check frame size. In strict mode, we assume frames to be under
|
118
119
|
// 100,000 bytes. In non-strict mode, we relax the limit to 1MB.
|
119
120
|
if (check_frame_size) {
|
120
|
-
const
|
121
|
-
const
|
121
|
+
const size_t max_size = STRICT_UNWINDING ? 100000 : 1000000;
|
122
|
+
const size_t frame_size =
|
122
123
|
ComputeStackFrameSize(old_frame_pointer, new_frame_pointer);
|
123
124
|
if (frame_size == kUnknownFrameSize || frame_size > max_size)
|
124
125
|
return nullptr;
|
@@ -165,7 +166,8 @@ static int UnwindImpl(void** result, int* sizes, int max_depth, int skip_count,
|
|
165
166
|
} else {
|
166
167
|
result[n] = prev_return_address;
|
167
168
|
if (IS_STACK_FRAMES) {
|
168
|
-
sizes[n] =
|
169
|
+
sizes[n] = static_cast<int>(
|
170
|
+
ComputeStackFrameSize(frame_pointer, next_frame_pointer));
|
169
171
|
}
|
170
172
|
n++;
|
171
173
|
}
|
@@ -80,7 +80,7 @@ static int UnwindImpl(void** result, int* sizes, int max_depth, int skip_count,
|
|
80
80
|
|
81
81
|
if (IS_STACK_FRAMES) {
|
82
82
|
// No implementation for finding out the stack frame sizes yet.
|
83
|
-
memset(sizes, 0, sizeof(*sizes) * result_count);
|
83
|
+
memset(sizes, 0, sizeof(*sizes) * static_cast<size_t>(result_count));
|
84
84
|
}
|
85
85
|
if (min_dropped_frames != nullptr) {
|
86
86
|
if (size - skip_count - max_depth > 0) {
|