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
@@ -205,7 +205,8 @@ struct ObjFile {
|
|
205
205
|
|
206
206
|
// PT_LOAD program header describing executable code.
|
207
207
|
// Normally we expect just one, but SWIFT binaries have two.
|
208
|
-
|
208
|
+
// CUDA binaries have 3 (see cr/473913254 description).
|
209
|
+
std::array<ElfW(Phdr), 4> phdr;
|
209
210
|
};
|
210
211
|
|
211
212
|
// Build 4-way associative cache for symbols. Within each cache line, symbols
|
@@ -252,21 +253,21 @@ class AddrMap {
|
|
252
253
|
public:
|
253
254
|
AddrMap() : size_(0), allocated_(0), obj_(nullptr) {}
|
254
255
|
~AddrMap() { base_internal::LowLevelAlloc::Free(obj_); }
|
255
|
-
|
256
|
-
ObjFile *At(
|
256
|
+
size_t Size() const { return size_; }
|
257
|
+
ObjFile *At(size_t i) { return &obj_[i]; }
|
257
258
|
ObjFile *Add();
|
258
259
|
void Clear();
|
259
260
|
|
260
261
|
private:
|
261
|
-
|
262
|
-
|
263
|
-
ObjFile *obj_;
|
262
|
+
size_t size_; // count of valid elements (<= allocated_)
|
263
|
+
size_t allocated_; // count of allocated elements
|
264
|
+
ObjFile *obj_; // array of allocated_ elements
|
264
265
|
AddrMap(const AddrMap &) = delete;
|
265
266
|
AddrMap &operator=(const AddrMap &) = delete;
|
266
267
|
};
|
267
268
|
|
268
269
|
void AddrMap::Clear() {
|
269
|
-
for (
|
270
|
+
for (size_t i = 0; i != size_; i++) {
|
270
271
|
At(i)->~ObjFile();
|
271
272
|
}
|
272
273
|
size_ = 0;
|
@@ -274,7 +275,7 @@ void AddrMap::Clear() {
|
|
274
275
|
|
275
276
|
ObjFile *AddrMap::Add() {
|
276
277
|
if (size_ == allocated_) {
|
277
|
-
|
278
|
+
size_t new_allocated = allocated_ * 2 + 50;
|
278
279
|
ObjFile *new_obj_ =
|
279
280
|
static_cast<ObjFile *>(base_internal::LowLevelAlloc::AllocWithArena(
|
280
281
|
new_allocated * sizeof(*new_obj_), SigSafeArena()));
|
@@ -300,7 +301,7 @@ class Symbolizer {
|
|
300
301
|
|
301
302
|
private:
|
302
303
|
char *CopyString(const char *s) {
|
303
|
-
|
304
|
+
size_t len = strlen(s);
|
304
305
|
char *dst = static_cast<char *>(
|
305
306
|
base_internal::LowLevelAlloc::AllocWithArena(len + 1, SigSafeArena()));
|
306
307
|
ABSL_RAW_CHECK(dst != nullptr, "out of memory");
|
@@ -321,8 +322,8 @@ class Symbolizer {
|
|
321
322
|
FindSymbolResult GetSymbolFromObjectFile(const ObjFile &obj,
|
322
323
|
const void *const pc,
|
323
324
|
const ptrdiff_t relocation,
|
324
|
-
char *out,
|
325
|
-
char *tmp_buf,
|
325
|
+
char *out, size_t out_size,
|
326
|
+
char *tmp_buf, size_t tmp_buf_size);
|
326
327
|
const char *GetUncachedSymbol(const void *pc);
|
327
328
|
|
328
329
|
enum {
|
@@ -353,11 +354,11 @@ static std::atomic<Symbolizer *> g_cached_symbolizer;
|
|
353
354
|
|
354
355
|
} // namespace
|
355
356
|
|
356
|
-
static
|
357
|
+
static size_t SymbolizerSize() {
|
357
358
|
#if defined(__wasm__) || defined(__asmjs__)
|
358
|
-
|
359
|
+
auto pagesize = static_cast<size_t>(getpagesize());
|
359
360
|
#else
|
360
|
-
|
361
|
+
auto pagesize = static_cast<size_t>(sysconf(_SC_PAGESIZE));
|
361
362
|
#endif
|
362
363
|
return ((sizeof(Symbolizer) - 1) / pagesize + 1) * pagesize;
|
363
364
|
}
|
@@ -429,7 +430,7 @@ static ssize_t ReadPersistent(int fd, void *buf, size_t count) {
|
|
429
430
|
if (len == 0) { // Reached EOF.
|
430
431
|
break;
|
431
432
|
}
|
432
|
-
num_bytes += len;
|
433
|
+
num_bytes += static_cast<size_t>(len);
|
433
434
|
}
|
434
435
|
SAFE_ASSERT(num_bytes <= count);
|
435
436
|
return static_cast<ssize_t>(num_bytes);
|
@@ -442,8 +443,8 @@ static ssize_t ReadFromOffset(const int fd, void *buf, const size_t count,
|
|
442
443
|
const off_t offset) {
|
443
444
|
off_t off = lseek(fd, offset, SEEK_SET);
|
444
445
|
if (off == (off_t)-1) {
|
445
|
-
ABSL_RAW_LOG(WARNING, "lseek(%d, %
|
446
|
-
static_cast<
|
446
|
+
ABSL_RAW_LOG(WARNING, "lseek(%d, %jd, SEEK_SET) failed: errno=%d", fd,
|
447
|
+
static_cast<intmax_t>(offset), errno);
|
447
448
|
return -1;
|
448
449
|
}
|
449
450
|
return ReadPersistent(fd, buf, count);
|
@@ -478,29 +479,37 @@ static int FileGetElfType(const int fd) {
|
|
478
479
|
// inlined.
|
479
480
|
static ABSL_ATTRIBUTE_NOINLINE bool GetSectionHeaderByType(
|
480
481
|
const int fd, ElfW(Half) sh_num, const off_t sh_offset, ElfW(Word) type,
|
481
|
-
ElfW(Shdr) * out, char *tmp_buf,
|
482
|
+
ElfW(Shdr) * out, char *tmp_buf, size_t tmp_buf_size) {
|
482
483
|
ElfW(Shdr) *buf = reinterpret_cast<ElfW(Shdr) *>(tmp_buf);
|
483
|
-
const
|
484
|
-
const
|
484
|
+
const size_t buf_entries = tmp_buf_size / sizeof(buf[0]);
|
485
|
+
const size_t buf_bytes = buf_entries * sizeof(buf[0]);
|
485
486
|
|
486
|
-
for (
|
487
|
-
const
|
488
|
-
|
487
|
+
for (size_t i = 0; static_cast<int>(i) < sh_num;) {
|
488
|
+
const size_t num_bytes_left =
|
489
|
+
(static_cast<size_t>(sh_num) - i) * sizeof(buf[0]);
|
490
|
+
const size_t num_bytes_to_read =
|
489
491
|
(buf_bytes > num_bytes_left) ? num_bytes_left : buf_bytes;
|
490
|
-
const off_t offset = sh_offset + i * sizeof(buf[0]);
|
492
|
+
const off_t offset = sh_offset + static_cast<off_t>(i * sizeof(buf[0]));
|
491
493
|
const ssize_t len = ReadFromOffset(fd, buf, num_bytes_to_read, offset);
|
492
|
-
if (len
|
494
|
+
if (len < 0) {
|
493
495
|
ABSL_RAW_LOG(
|
494
496
|
WARNING,
|
495
|
-
"Reading %
|
497
|
+
"Reading %zu bytes from offset %ju returned %zd which is negative.",
|
498
|
+
num_bytes_to_read, static_cast<intmax_t>(offset), len);
|
499
|
+
return false;
|
500
|
+
}
|
501
|
+
if (static_cast<size_t>(len) % sizeof(buf[0]) != 0) {
|
502
|
+
ABSL_RAW_LOG(
|
503
|
+
WARNING,
|
504
|
+
"Reading %zu bytes from offset %jd returned %zd which is not a "
|
496
505
|
"multiple of %zu.",
|
497
|
-
num_bytes_to_read, static_cast<
|
506
|
+
num_bytes_to_read, static_cast<intmax_t>(offset), len,
|
498
507
|
sizeof(buf[0]));
|
499
508
|
return false;
|
500
509
|
}
|
501
|
-
const
|
510
|
+
const size_t num_headers_in_buf = static_cast<size_t>(len) / sizeof(buf[0]);
|
502
511
|
SAFE_ASSERT(num_headers_in_buf <= buf_entries);
|
503
|
-
for (
|
512
|
+
for (size_t j = 0; j < num_headers_in_buf; ++j) {
|
504
513
|
if (buf[j].sh_type == type) {
|
505
514
|
*out = buf[j];
|
506
515
|
return true;
|
@@ -524,8 +533,8 @@ bool ForEachSection(int fd,
|
|
524
533
|
}
|
525
534
|
|
526
535
|
ElfW(Shdr) shstrtab;
|
527
|
-
off_t shstrtab_offset =
|
528
|
-
|
536
|
+
off_t shstrtab_offset = static_cast<off_t>(elf_header.e_shoff) +
|
537
|
+
elf_header.e_shentsize * elf_header.e_shstrndx;
|
529
538
|
if (!ReadFromOffsetExact(fd, &shstrtab, sizeof(shstrtab), shstrtab_offset)) {
|
530
539
|
return false;
|
531
540
|
}
|
@@ -533,22 +542,23 @@ bool ForEachSection(int fd,
|
|
533
542
|
for (int i = 0; i < elf_header.e_shnum; ++i) {
|
534
543
|
ElfW(Shdr) out;
|
535
544
|
off_t section_header_offset =
|
536
|
-
(elf_header.e_shoff + elf_header.e_shentsize * i
|
545
|
+
static_cast<off_t>(elf_header.e_shoff) + elf_header.e_shentsize * i;
|
537
546
|
if (!ReadFromOffsetExact(fd, &out, sizeof(out), section_header_offset)) {
|
538
547
|
return false;
|
539
548
|
}
|
540
|
-
off_t name_offset = shstrtab.sh_offset + out.sh_name;
|
549
|
+
off_t name_offset = static_cast<off_t>(shstrtab.sh_offset) + out.sh_name;
|
541
550
|
char header_name[kMaxSectionNameLen];
|
542
551
|
ssize_t n_read =
|
543
552
|
ReadFromOffset(fd, &header_name, kMaxSectionNameLen, name_offset);
|
544
|
-
if (n_read
|
553
|
+
if (n_read < 0) {
|
545
554
|
return false;
|
546
555
|
} else if (n_read > kMaxSectionNameLen) {
|
547
556
|
// Long read?
|
548
557
|
return false;
|
549
558
|
}
|
550
559
|
|
551
|
-
absl::string_view name(header_name,
|
560
|
+
absl::string_view name(header_name,
|
561
|
+
strnlen(header_name, static_cast<size_t>(n_read)));
|
552
562
|
if (!callback(name, out)) {
|
553
563
|
break;
|
554
564
|
}
|
@@ -575,19 +585,19 @@ bool GetSectionHeaderByName(int fd, const char *name, size_t name_len,
|
|
575
585
|
}
|
576
586
|
|
577
587
|
ElfW(Shdr) shstrtab;
|
578
|
-
off_t shstrtab_offset =
|
579
|
-
|
588
|
+
off_t shstrtab_offset = static_cast<off_t>(elf_header.e_shoff) +
|
589
|
+
elf_header.e_shentsize * elf_header.e_shstrndx;
|
580
590
|
if (!ReadFromOffsetExact(fd, &shstrtab, sizeof(shstrtab), shstrtab_offset)) {
|
581
591
|
return false;
|
582
592
|
}
|
583
593
|
|
584
594
|
for (int i = 0; i < elf_header.e_shnum; ++i) {
|
585
595
|
off_t section_header_offset =
|
586
|
-
(elf_header.e_shoff + elf_header.e_shentsize * i
|
596
|
+
static_cast<off_t>(elf_header.e_shoff) + elf_header.e_shentsize * i;
|
587
597
|
if (!ReadFromOffsetExact(fd, out, sizeof(*out), section_header_offset)) {
|
588
598
|
return false;
|
589
599
|
}
|
590
|
-
off_t name_offset = shstrtab.sh_offset + out->sh_name;
|
600
|
+
off_t name_offset = static_cast<off_t>(shstrtab.sh_offset) + out->sh_name;
|
591
601
|
ssize_t n_read = ReadFromOffset(fd, &header_name, name_len, name_offset);
|
592
602
|
if (n_read < 0) {
|
593
603
|
return false;
|
@@ -645,10 +655,10 @@ static bool InSection(const void *address, const ElfW(Shdr) * section) {
|
|
645
655
|
}
|
646
656
|
|
647
657
|
static const char *ComputeOffset(const char *base, ptrdiff_t offset) {
|
648
|
-
// Note: cast to
|
658
|
+
// Note: cast to intptr_t to avoid undefined behavior when base evaluates to
|
649
659
|
// zero and offset is non-zero.
|
650
|
-
return reinterpret_cast<const char *>(
|
651
|
-
|
660
|
+
return reinterpret_cast<const char *>(reinterpret_cast<intptr_t>(base) +
|
661
|
+
offset);
|
652
662
|
}
|
653
663
|
|
654
664
|
// Read a symbol table and look for the symbol containing the
|
@@ -661,18 +671,18 @@ static const char *ComputeOffset(const char *base, ptrdiff_t offset) {
|
|
661
671
|
// To keep stack consumption low, we would like this function to not get
|
662
672
|
// inlined.
|
663
673
|
static ABSL_ATTRIBUTE_NOINLINE FindSymbolResult FindSymbol(
|
664
|
-
const void *const pc, const int fd, char *out,
|
674
|
+
const void *const pc, const int fd, char *out, size_t out_size,
|
665
675
|
ptrdiff_t relocation, const ElfW(Shdr) * strtab, const ElfW(Shdr) * symtab,
|
666
|
-
const ElfW(Shdr) * opd, char *tmp_buf,
|
676
|
+
const ElfW(Shdr) * opd, char *tmp_buf, size_t tmp_buf_size) {
|
667
677
|
if (symtab == nullptr) {
|
668
678
|
return SYMBOL_NOT_FOUND;
|
669
679
|
}
|
670
680
|
|
671
681
|
// Read multiple symbols at once to save read() calls.
|
672
682
|
ElfW(Sym) *buf = reinterpret_cast<ElfW(Sym) *>(tmp_buf);
|
673
|
-
const
|
683
|
+
const size_t buf_entries = tmp_buf_size / sizeof(buf[0]);
|
674
684
|
|
675
|
-
const
|
685
|
+
const size_t num_symbols = symtab->sh_size / symtab->sh_entsize;
|
676
686
|
|
677
687
|
// On platforms using an .opd section (PowerPC & IA64), a function symbol
|
678
688
|
// has the address of a function descriptor, which contains the real
|
@@ -687,16 +697,19 @@ static ABSL_ATTRIBUTE_NOINLINE FindSymbolResult FindSymbol(
|
|
687
697
|
ElfW(Sym) best_match;
|
688
698
|
SafeMemZero(&best_match, sizeof(best_match));
|
689
699
|
bool found_match = false;
|
690
|
-
for (
|
691
|
-
off_t offset =
|
692
|
-
|
693
|
-
const
|
694
|
-
const
|
700
|
+
for (size_t i = 0; i < num_symbols;) {
|
701
|
+
off_t offset =
|
702
|
+
static_cast<off_t>(symtab->sh_offset + i * symtab->sh_entsize);
|
703
|
+
const size_t num_remaining_symbols = num_symbols - i;
|
704
|
+
const size_t entries_in_chunk =
|
705
|
+
std::min(num_remaining_symbols, buf_entries);
|
706
|
+
const size_t bytes_in_chunk = entries_in_chunk * sizeof(buf[0]);
|
695
707
|
const ssize_t len = ReadFromOffset(fd, buf, bytes_in_chunk, offset);
|
696
|
-
SAFE_ASSERT(len
|
697
|
-
|
708
|
+
SAFE_ASSERT(len >= 0);
|
709
|
+
SAFE_ASSERT(static_cast<size_t>(len) % sizeof(buf[0]) == 0);
|
710
|
+
const size_t num_symbols_in_buf = static_cast<size_t>(len) / sizeof(buf[0]);
|
698
711
|
SAFE_ASSERT(num_symbols_in_buf <= entries_in_chunk);
|
699
|
-
for (
|
712
|
+
for (size_t j = 0; j < num_symbols_in_buf; ++j) {
|
700
713
|
const ElfW(Sym) &symbol = buf[j];
|
701
714
|
|
702
715
|
// For a DSO, a symbol address is relocated by the loading address.
|
@@ -713,7 +726,7 @@ static ABSL_ATTRIBUTE_NOINLINE FindSymbolResult FindSymbol(
|
|
713
726
|
// about what encoding is being used; we just want the real start address
|
714
727
|
// of the function.
|
715
728
|
start_address = reinterpret_cast<const char *>(
|
716
|
-
reinterpret_cast<uintptr_t>(start_address) & ~
|
729
|
+
reinterpret_cast<uintptr_t>(start_address) & ~1u);
|
717
730
|
#endif
|
718
731
|
|
719
732
|
if (deref_function_descriptor_pointer &&
|
@@ -726,7 +739,8 @@ static ABSL_ATTRIBUTE_NOINLINE FindSymbolResult FindSymbol(
|
|
726
739
|
|
727
740
|
// If pc is inside the .opd section, it points to a function descriptor.
|
728
741
|
const size_t size = pc_in_opd ? kFunctionDescriptorSize : symbol.st_size;
|
729
|
-
const void *const end_address =
|
742
|
+
const void *const end_address =
|
743
|
+
ComputeOffset(start_address, static_cast<ptrdiff_t>(size));
|
730
744
|
if (symbol.st_value != 0 && // Skip null value symbols.
|
731
745
|
symbol.st_shndx != 0 && // Skip undefined symbols.
|
732
746
|
#ifdef STT_TLS
|
@@ -744,16 +758,18 @@ static ABSL_ATTRIBUTE_NOINLINE FindSymbolResult FindSymbol(
|
|
744
758
|
}
|
745
759
|
|
746
760
|
if (found_match) {
|
747
|
-
const
|
761
|
+
const off_t off =
|
762
|
+
static_cast<off_t>(strtab->sh_offset) + best_match.st_name;
|
748
763
|
const ssize_t n_read = ReadFromOffset(fd, out, out_size, off);
|
749
764
|
if (n_read <= 0) {
|
750
765
|
// This should never happen.
|
751
766
|
ABSL_RAW_LOG(WARNING,
|
752
|
-
"Unable to read from fd %d at offset %
|
753
|
-
off, n_read);
|
767
|
+
"Unable to read from fd %d at offset %lld: n_read = %zd", fd,
|
768
|
+
static_cast<long long>(off), n_read);
|
754
769
|
return SYMBOL_NOT_FOUND;
|
755
770
|
}
|
756
|
-
ABSL_RAW_CHECK(n_read <= out_size,
|
771
|
+
ABSL_RAW_CHECK(static_cast<size_t>(n_read) <= out_size,
|
772
|
+
"ReadFromOffset read too much data.");
|
757
773
|
|
758
774
|
// strtab->sh_offset points into .strtab-like section that contains
|
759
775
|
// NUL-terminated strings: '\0foo\0barbaz\0...".
|
@@ -761,7 +777,7 @@ static ABSL_ATTRIBUTE_NOINLINE FindSymbolResult FindSymbol(
|
|
761
777
|
// sh_offset+st_name points to the start of symbol name, but we don't know
|
762
778
|
// how long the symbol is, so we try to read as much as we have space for,
|
763
779
|
// and usually over-read (i.e. there is a NUL somewhere before n_read).
|
764
|
-
if (memchr(out, '\0', n_read) == nullptr) {
|
780
|
+
if (memchr(out, '\0', static_cast<size_t>(n_read)) == nullptr) {
|
765
781
|
// Either out_size was too small (n_read == out_size and no NUL), or
|
766
782
|
// we tried to read past the EOF (n_read < out_size) and .strtab is
|
767
783
|
// corrupt (missing terminating NUL; should never happen for valid ELF).
|
@@ -779,7 +795,7 @@ static ABSL_ATTRIBUTE_NOINLINE FindSymbolResult FindSymbol(
|
|
779
795
|
// See FindSymbol() comment for description of return value.
|
780
796
|
FindSymbolResult Symbolizer::GetSymbolFromObjectFile(
|
781
797
|
const ObjFile &obj, const void *const pc, const ptrdiff_t relocation,
|
782
|
-
char *out,
|
798
|
+
char *out, size_t out_size, char *tmp_buf, size_t tmp_buf_size) {
|
783
799
|
ElfW(Shdr) symtab;
|
784
800
|
ElfW(Shdr) strtab;
|
785
801
|
ElfW(Shdr) opd;
|
@@ -802,13 +818,15 @@ FindSymbolResult Symbolizer::GetSymbolFromObjectFile(
|
|
802
818
|
// Consult a regular symbol table, then fall back to the dynamic symbol table.
|
803
819
|
for (const auto symbol_table_type : {SHT_SYMTAB, SHT_DYNSYM}) {
|
804
820
|
if (!GetSectionHeaderByType(obj.fd, obj.elf_header.e_shnum,
|
805
|
-
obj.elf_header.e_shoff,
|
821
|
+
static_cast<off_t>(obj.elf_header.e_shoff),
|
822
|
+
static_cast<ElfW(Word)>(symbol_table_type),
|
806
823
|
&symtab, tmp_buf, tmp_buf_size)) {
|
807
824
|
continue;
|
808
825
|
}
|
809
826
|
if (!ReadFromOffsetExact(
|
810
827
|
obj.fd, &strtab, sizeof(strtab),
|
811
|
-
obj.elf_header.e_shoff +
|
828
|
+
static_cast<off_t>(obj.elf_header.e_shoff +
|
829
|
+
symtab.sh_link * sizeof(symtab)))) {
|
812
830
|
continue;
|
813
831
|
}
|
814
832
|
const FindSymbolResult rc =
|
@@ -833,7 +851,7 @@ class FileDescriptor {
|
|
833
851
|
|
834
852
|
~FileDescriptor() {
|
835
853
|
if (fd_ >= 0) {
|
836
|
-
|
854
|
+
close(fd_);
|
837
855
|
}
|
838
856
|
}
|
839
857
|
|
@@ -850,7 +868,7 @@ class FileDescriptor {
|
|
850
868
|
// and snprintf().
|
851
869
|
class LineReader {
|
852
870
|
public:
|
853
|
-
explicit LineReader(int fd, char *buf,
|
871
|
+
explicit LineReader(int fd, char *buf, size_t buf_len)
|
854
872
|
: fd_(fd),
|
855
873
|
buf_len_(buf_len),
|
856
874
|
buf_(buf),
|
@@ -878,12 +896,12 @@ class LineReader {
|
|
878
896
|
bol_ = eol_ + 1; // Advance to the next line in the buffer.
|
879
897
|
SAFE_ASSERT(bol_ <= eod_); // "bol_" can point to "eod_".
|
880
898
|
if (!HasCompleteLine()) {
|
881
|
-
const
|
899
|
+
const auto incomplete_line_length = static_cast<size_t>(eod_ - bol_);
|
882
900
|
// Move the trailing incomplete line to the beginning.
|
883
901
|
memmove(buf_, bol_, incomplete_line_length);
|
884
902
|
// Read text from file and append it.
|
885
903
|
char *const append_pos = buf_ + incomplete_line_length;
|
886
|
-
const
|
904
|
+
const size_t capacity_left = buf_len_ - incomplete_line_length;
|
887
905
|
const ssize_t num_bytes =
|
888
906
|
ReadPersistent(fd_, append_pos, capacity_left);
|
889
907
|
if (num_bytes <= 0) { // EOF or error.
|
@@ -906,7 +924,8 @@ class LineReader {
|
|
906
924
|
|
907
925
|
private:
|
908
926
|
char *FindLineFeed() const {
|
909
|
-
return reinterpret_cast<char *>(
|
927
|
+
return reinterpret_cast<char *>(
|
928
|
+
memchr(bol_, '\n', static_cast<size_t>(eod_ - bol_)));
|
910
929
|
}
|
911
930
|
|
912
931
|
bool BufferIsEmpty() const { return buf_ == eod_; }
|
@@ -916,7 +935,7 @@ class LineReader {
|
|
916
935
|
}
|
917
936
|
|
918
937
|
const int fd_;
|
919
|
-
const
|
938
|
+
const size_t buf_len_;
|
920
939
|
char *const buf_;
|
921
940
|
char *bol_;
|
922
941
|
char *eol_;
|
@@ -934,7 +953,8 @@ static const char *GetHex(const char *start, const char *end,
|
|
934
953
|
int ch = *p;
|
935
954
|
if ((ch >= '0' && ch <= '9') || (ch >= 'A' && ch <= 'F') ||
|
936
955
|
(ch >= 'a' && ch <= 'f')) {
|
937
|
-
hex = (hex << 4) |
|
956
|
+
hex = (hex << 4) |
|
957
|
+
static_cast<uint64_t>(ch < 'A' ? ch - '0' : (ch & 0xF) + 9);
|
938
958
|
} else { // Encountered the first non-hex character.
|
939
959
|
break;
|
940
960
|
}
|
@@ -966,7 +986,7 @@ static bool ShouldUseMapping(const char *const flags) {
|
|
966
986
|
static ABSL_ATTRIBUTE_NOINLINE bool ReadAddrMap(
|
967
987
|
bool (*callback)(const char *filename, const void *const start_addr,
|
968
988
|
const void *const end_addr, uint64_t offset, void *arg),
|
969
|
-
void *arg, void *tmp_buf,
|
989
|
+
void *arg, void *tmp_buf, size_t tmp_buf_size) {
|
970
990
|
// Use /proc/self/task/<pid>/maps instead of /proc/self/maps. The latter
|
971
991
|
// requires kernel to stop all threads, and is significantly slower when there
|
972
992
|
// are 1000s of threads.
|
@@ -1081,10 +1101,10 @@ ObjFile *Symbolizer::FindObjFile(const void *const addr, size_t len) {
|
|
1081
1101
|
}
|
1082
1102
|
}
|
1083
1103
|
|
1084
|
-
|
1085
|
-
|
1104
|
+
size_t lo = 0;
|
1105
|
+
size_t hi = addr_map_.Size();
|
1086
1106
|
while (lo < hi) {
|
1087
|
-
|
1107
|
+
size_t mid = (lo + hi) / 2;
|
1088
1108
|
if (addr < addr_map_.At(mid)->end_addr) {
|
1089
1109
|
hi = mid;
|
1090
1110
|
} else {
|
@@ -1106,11 +1126,11 @@ ObjFile *Symbolizer::FindObjFile(const void *const addr, size_t len) {
|
|
1106
1126
|
}
|
1107
1127
|
|
1108
1128
|
void Symbolizer::ClearAddrMap() {
|
1109
|
-
for (
|
1129
|
+
for (size_t i = 0; i != addr_map_.Size(); i++) {
|
1110
1130
|
ObjFile *o = addr_map_.At(i);
|
1111
1131
|
base_internal::LowLevelAlloc::Free(o->filename);
|
1112
1132
|
if (o->fd >= 0) {
|
1113
|
-
|
1133
|
+
close(o->fd);
|
1114
1134
|
}
|
1115
1135
|
}
|
1116
1136
|
addr_map_.Clear();
|
@@ -1126,7 +1146,7 @@ bool Symbolizer::RegisterObjFile(const char *filename,
|
|
1126
1146
|
|
1127
1147
|
// Files are supposed to be added in the increasing address order. Make
|
1128
1148
|
// sure that's the case.
|
1129
|
-
|
1149
|
+
size_t addr_map_size = impl->addr_map_.Size();
|
1130
1150
|
if (addr_map_size != 0) {
|
1131
1151
|
ObjFile *old = impl->addr_map_.At(addr_map_size - 1);
|
1132
1152
|
if (old->end_addr > end_addr) {
|
@@ -1170,12 +1190,12 @@ bool Symbolizer::RegisterObjFile(const char *filename,
|
|
1170
1190
|
// where the input symbol is demangled in-place.
|
1171
1191
|
// To keep stack consumption low, we would like this function to not
|
1172
1192
|
// get inlined.
|
1173
|
-
static ABSL_ATTRIBUTE_NOINLINE void DemangleInplace(char *out,
|
1193
|
+
static ABSL_ATTRIBUTE_NOINLINE void DemangleInplace(char *out, size_t out_size,
|
1174
1194
|
char *tmp_buf,
|
1175
|
-
|
1195
|
+
size_t tmp_buf_size) {
|
1176
1196
|
if (Demangle(out, tmp_buf, tmp_buf_size)) {
|
1177
1197
|
// Demangling succeeded. Copy to out if the space allows.
|
1178
|
-
|
1198
|
+
size_t len = strlen(tmp_buf);
|
1179
1199
|
if (len + 1 <= out_size) { // +1 for '\0'.
|
1180
1200
|
SAFE_ASSERT(len < tmp_buf_size);
|
1181
1201
|
memmove(out, tmp_buf, len + 1);
|
@@ -1218,7 +1238,8 @@ const char *Symbolizer::InsertSymbolInCache(const void *const pc,
|
|
1218
1238
|
|
1219
1239
|
SymbolCacheLine *line = GetCacheLine(pc);
|
1220
1240
|
uint32_t max_age = 0;
|
1221
|
-
|
1241
|
+
size_t oldest_index = 0;
|
1242
|
+
bool found_oldest_index = false;
|
1222
1243
|
for (size_t i = 0; i < ABSL_ARRAYSIZE(line->pc); ++i) {
|
1223
1244
|
if (line->pc[i] == nullptr) {
|
1224
1245
|
AgeSymbols(line);
|
@@ -1230,11 +1251,12 @@ const char *Symbolizer::InsertSymbolInCache(const void *const pc,
|
|
1230
1251
|
if (line->age[i] >= max_age) {
|
1231
1252
|
max_age = line->age[i];
|
1232
1253
|
oldest_index = i;
|
1254
|
+
found_oldest_index = true;
|
1233
1255
|
}
|
1234
1256
|
}
|
1235
1257
|
|
1236
1258
|
AgeSymbols(line);
|
1237
|
-
ABSL_RAW_CHECK(
|
1259
|
+
ABSL_RAW_CHECK(found_oldest_index, "Corrupt cache");
|
1238
1260
|
base_internal::LowLevelAlloc::Free(line->name[oldest_index]);
|
1239
1261
|
line->pc[oldest_index] = pc;
|
1240
1262
|
line->name[oldest_index] = CopyString(name);
|
@@ -1303,7 +1325,7 @@ static bool MaybeInitializeObjFile(ObjFile *obj) {
|
|
1303
1325
|
}
|
1304
1326
|
const int phnum = obj->elf_header.e_phnum;
|
1305
1327
|
const int phentsize = obj->elf_header.e_phentsize;
|
1306
|
-
|
1328
|
+
auto phoff = static_cast<off_t>(obj->elf_header.e_phoff);
|
1307
1329
|
size_t num_executable_load_segments = 0;
|
1308
1330
|
for (int j = 0; j < phnum; j++) {
|
1309
1331
|
ElfW(Phdr) phdr;
|
@@ -1321,8 +1343,9 @@ static bool MaybeInitializeObjFile(ObjFile *obj) {
|
|
1321
1343
|
if (num_executable_load_segments < obj->phdr.size()) {
|
1322
1344
|
memcpy(&obj->phdr[num_executable_load_segments++], &phdr, sizeof(phdr));
|
1323
1345
|
} else {
|
1324
|
-
ABSL_RAW_LOG(
|
1325
|
-
|
1346
|
+
ABSL_RAW_LOG(
|
1347
|
+
WARNING, "%s: too many executable LOAD segments: %zu >= %zu",
|
1348
|
+
obj->filename, num_executable_load_segments, obj->phdr.size());
|
1326
1349
|
break;
|
1327
1350
|
}
|
1328
1351
|
}
|
@@ -1354,7 +1377,7 @@ const char *Symbolizer::GetUncachedSymbol(const void *pc) {
|
|
1354
1377
|
//
|
1355
1378
|
// For obj->offset > 0, adjust the relocation since a mapping at offset
|
1356
1379
|
// X in the file will have a start address of [true relocation]+X.
|
1357
|
-
relocation = start_addr - obj->offset;
|
1380
|
+
relocation = static_cast<ptrdiff_t>(start_addr - obj->offset);
|
1358
1381
|
|
1359
1382
|
// Note: some binaries have multiple "rx" LOAD segments. We must
|
1360
1383
|
// find the right one.
|
@@ -1529,7 +1552,7 @@ bool RegisterFileMappingHint(const void *start, const void *end, uint64_t offset
|
|
1529
1552
|
ret = false;
|
1530
1553
|
} else {
|
1531
1554
|
// TODO(ckennelly): Move this into a string copy routine.
|
1532
|
-
|
1555
|
+
size_t len = strlen(filename);
|
1533
1556
|
char *dst = static_cast<char *>(
|
1534
1557
|
base_internal::LowLevelAlloc::AllocWithArena(len + 1, SigSafeArena()));
|
1535
1558
|
ABSL_RAW_CHECK(dst != nullptr, "out of memory");
|
@@ -1585,16 +1608,17 @@ bool Symbolize(const void *pc, char *out, int out_size) {
|
|
1585
1608
|
const char *name = s->GetSymbol(pc);
|
1586
1609
|
bool ok = false;
|
1587
1610
|
if (name != nullptr && out_size > 0) {
|
1588
|
-
strncpy(out, name, out_size);
|
1611
|
+
strncpy(out, name, static_cast<size_t>(out_size));
|
1589
1612
|
ok = true;
|
1590
|
-
if (out[out_size - 1] != '\0') {
|
1613
|
+
if (out[static_cast<size_t>(out_size) - 1] != '\0') {
|
1591
1614
|
// strncpy() does not '\0' terminate when it truncates. Do so, with
|
1592
1615
|
// trailing ellipsis.
|
1593
1616
|
static constexpr char kEllipsis[] = "...";
|
1594
|
-
|
1595
|
-
std::min(
|
1596
|
-
memcpy(out + out_size - ellipsis_size - 1, kEllipsis,
|
1597
|
-
|
1617
|
+
size_t ellipsis_size =
|
1618
|
+
std::min(strlen(kEllipsis), static_cast<size_t>(out_size) - 1);
|
1619
|
+
memcpy(out + static_cast<size_t>(out_size) - ellipsis_size - 1, kEllipsis,
|
1620
|
+
ellipsis_size);
|
1621
|
+
out[static_cast<size_t>(out_size) - 1] = '\0';
|
1598
1622
|
}
|
1599
1623
|
}
|
1600
1624
|
debugging_internal::FreeSymbolizer(s);
|
@@ -65,14 +65,15 @@ bool Symbolize(const void* pc, char* out, int out_size) {
|
|
65
65
|
if (!SymFromAddr(process, reinterpret_cast<DWORD64>(pc), nullptr, symbol)) {
|
66
66
|
return false;
|
67
67
|
}
|
68
|
-
|
69
|
-
|
68
|
+
const size_t out_size_t = static_cast<size_t>(out_size);
|
69
|
+
strncpy(out, symbol->Name, out_size_t);
|
70
|
+
if (out[out_size_t - 1] != '\0') {
|
70
71
|
// strncpy() does not '\0' terminate when it truncates.
|
71
72
|
static constexpr char kEllipsis[] = "...";
|
72
|
-
|
73
|
-
std::min
|
74
|
-
memcpy(out +
|
75
|
-
out[
|
73
|
+
size_t ellipsis_size =
|
74
|
+
std::min(sizeof(kEllipsis) - 1, out_size_t - 1);
|
75
|
+
memcpy(out + out_size_t - ellipsis_size - 1, kEllipsis, ellipsis_size);
|
76
|
+
out[out_size_t - 1] = '\0';
|
76
77
|
}
|
77
78
|
return true;
|
78
79
|
}
|
@@ -26,6 +26,9 @@
|
|
26
26
|
// NOTE: `absl::AnyInvocable` is similar to the C++23 `std::move_only_function`
|
27
27
|
// abstraction, but has a slightly different API and is not designed to be a
|
28
28
|
// drop-in replacement or C++11-compatible backfill of that type.
|
29
|
+
//
|
30
|
+
// Credits to Matt Calabrese (https://github.com/mattcalabrese) for the original
|
31
|
+
// implementation.
|
29
32
|
|
30
33
|
#ifndef ABSL_FUNCTIONAL_ANY_INVOCABLE_H_
|
31
34
|
#define ABSL_FUNCTIONAL_ANY_INVOCABLE_H_
|
@@ -146,8 +149,8 @@ ABSL_NAMESPACE_BEGIN
|
|
146
149
|
// std::move(continuation)(result_of_foo);
|
147
150
|
// }
|
148
151
|
//
|
149
|
-
//
|
150
|
-
//
|
152
|
+
// Attempting to call `absl::AnyInvocable` multiple times in such a case
|
153
|
+
// results in undefined behavior.
|
151
154
|
template <class Sig>
|
152
155
|
class AnyInvocable : private internal_any_invocable::Impl<Sig> {
|
153
156
|
private:
|