grpc 1.42.0 → 1.43.1
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 +85 -34
- data/include/grpc/event_engine/event_engine.h +37 -13
- data/include/grpc/event_engine/internal/memory_allocator_impl.h +1 -31
- data/include/grpc/event_engine/memory_allocator.h +27 -11
- data/include/grpc/event_engine/memory_request.h +57 -0
- data/include/grpc/grpc_security.h +276 -145
- data/include/grpc/grpc_security_constants.h +1 -14
- data/include/grpc/impl/codegen/port_platform.h +7 -3
- data/src/core/ext/filters/client_channel/backend_metric.cc +6 -7
- data/src/core/ext/filters/client_channel/backend_metric.h +3 -2
- data/src/core/ext/filters/client_channel/client_channel.cc +81 -40
- data/src/core/ext/filters/client_channel/client_channel.h +5 -4
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -2
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +4 -4
- data/src/core/ext/filters/client_channel/health/health_check_client.h +1 -1
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +12 -14
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +2 -2
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +2 -3
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +27 -80
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +82 -34
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +47 -91
- data/src/core/ext/filters/client_channel/lb_policy.h +75 -59
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +2 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +8 -12
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +6 -12
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +222 -294
- data/src/core/ext/filters/client_channel/resolver_registry.cc +6 -7
- data/src/core/ext/filters/client_channel/resolver_registry.h +1 -2
- data/src/core/ext/filters/client_channel/subchannel.cc +4 -4
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +1 -1
- data/src/core/ext/filters/http/client/http_client_filter.cc +14 -30
- data/src/core/ext/filters/http/http_filters_plugin.cc +3 -5
- data/src/core/ext/filters/http/server/http_server_filter.cc +11 -28
- data/src/core/ext/filters/server_config_selector/server_config_selector.cc +67 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +70 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +265 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +32 -0
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +4 -20
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +0 -2
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +8 -5
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +11 -14
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +6 -3
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +54 -79
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +2 -3
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +9 -13
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +6 -6
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +53 -62
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +1 -2
- data/src/core/ext/transport/chttp2/transport/context_list.cc +2 -3
- data/src/core/ext/transport/chttp2/transport/context_list.h +2 -3
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +8 -8
- data/src/core/ext/transport/chttp2/transport/flow_control.h +2 -2
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +83 -19
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +33 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +66 -92
- data/src/core/ext/transport/chttp2/transport/internal.h +8 -4
- data/src/core/ext/transport/inproc/inproc_transport.cc +16 -7
- data/src/core/ext/transport/inproc/inproc_transport.h +1 -1
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +197 -165
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +41 -0
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +18 -0
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +26 -2
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +107 -82
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +188 -160
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +35 -22
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +253 -218
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +16 -5
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +36 -25
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +56 -39
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +16 -5
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +162 -128
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +51 -36
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +15 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +25 -13
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +114 -90
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +89 -71
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +17 -6
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +117 -93
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +13 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +21 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +18 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +22 -11
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +17 -6
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +41 -27
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +59 -43
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +58 -43
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +15 -4
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +73 -57
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +81 -64
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +25 -14
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +19 -7
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +63 -45
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +66 -47
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +93 -75
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +41 -28
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +503 -440
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +26 -13
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +21 -9
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +13 -2
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +35 -20
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +44 -31
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +22 -11
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +210 -181
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +7 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +5 -3
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +64 -48
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +33 -20
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +81 -65
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.c +12 -1
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +12 -1
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +75 -58
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +12 -1
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +12 -1
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +25 -13
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +12 -1
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c +12 -1
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +61 -46
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +26 -12
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +22 -10
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +17 -6
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +16 -5
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +15 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +27 -14
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +25 -13
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +20 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +30 -17
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +38 -21
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +41 -26
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/v3/http.upb.c +7 -0
- data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +17 -5
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +22 -9
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +15 -4
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +2 -0
- data/src/core/ext/upb-generated/google/api/annotations.upb.c +20 -0
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +7 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +116 -93
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +2 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/eval.upb.c +102 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/eval.upb.h +306 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/explain.upb.c +56 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/explain.upb.h +135 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +122 -98
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +2 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/value.upb.c +115 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/value.upb.h +371 -0
- data/src/core/ext/upb-generated/google/api/http.upb.c +35 -22
- data/src/core/ext/upb-generated/google/api/http.upb.h +2 -0
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +14 -3
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +2 -0
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +247 -210
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +2 -0
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +14 -3
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +2 -0
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +12 -1
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +2 -0
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +37 -23
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +2 -0
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +14 -3
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +2 -0
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +37 -18
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +2 -0
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +17 -6
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +2 -0
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +26 -14
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +2 -0
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +105 -83
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +2 -0
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +20 -8
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +2 -0
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +16 -4
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +2 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +65 -47
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +34 -36
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +26 -13
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +2 -0
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +67 -7
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +27 -0
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +27 -3
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +7 -0
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +19 -0
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +7 -0
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +27 -3
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +7 -0
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +26 -2
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +7 -0
- data/src/core/ext/upb-generated/validate/validate.upb.c +320 -251
- data/src/core/ext/upb-generated/validate/validate.upb.h +20 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +54 -9
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +17 -0
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +13 -2
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +2 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +24 -12
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +2 -0
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +19 -7
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +2 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +18 -7
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +2 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +27 -15
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +2 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +18 -7
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +2 -0
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +28 -15
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +2 -0
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +16 -5
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +2 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +2 -49
- data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +2 -2
- data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +2 -35
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +2 -41
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +2 -55
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +2 -19
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +2 -53
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +2 -15
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +2 -33
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +2 -21
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +2 -33
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +2 -13
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +2 -17
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +2 -15
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +2 -17
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +2 -19
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +2 -21
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +2 -23
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +2 -111
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +2 -15
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +2 -43
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +2 -2
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +2 -17
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +2 -17
- data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +2 -19
- data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +2 -15
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +2 -13
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +2 -19
- data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +2 -15
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +2 -2
- data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +2 -2
- data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +2 -59
- data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +2 -13
- data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +2 -23
- data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +2 -2
- data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +2 -51
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +2 -13
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +2 -7
- data/src/core/ext/xds/certificate_provider_registry.cc +1 -1
- data/src/core/ext/xds/certificate_provider_store.h +1 -1
- data/src/core/ext/xds/xds_api.cc +409 -304
- data/src/core/ext/xds/xds_api.h +3 -1
- data/src/core/ext/xds/xds_bootstrap.cc +6 -3
- data/src/core/ext/xds/xds_certificate_provider.h +1 -2
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +3 -4
- data/src/core/ext/xds/xds_client.cc +395 -291
- data/src/core/ext/xds/xds_client.h +47 -38
- data/src/core/ext/xds/xds_routing.cc +247 -0
- data/src/core/ext/xds/xds_routing.h +98 -0
- data/src/core/ext/xds/xds_server_config_fetcher.cc +975 -261
- data/src/core/lib/avl/avl.h +389 -88
- data/src/core/lib/backoff/backoff.cc +2 -2
- data/src/core/lib/channel/channel_args.cc +17 -17
- data/src/core/lib/channel/channel_args.h +11 -10
- data/src/core/lib/channel/channel_args_preconditioning.cc +47 -0
- data/src/core/lib/channel/channel_args_preconditioning.h +62 -0
- data/src/core/lib/channel/channel_stack_builder.cc +0 -2
- data/src/core/lib/channel/channel_trace.cc +6 -6
- data/src/core/lib/channel/channelz.cc +1 -1
- data/src/core/lib/compression/compression_args.cc +7 -5
- data/src/core/lib/compression/compression_args.h +6 -4
- data/src/core/lib/config/core_configuration.cc +3 -1
- data/src/core/lib/config/core_configuration.h +11 -0
- data/src/core/lib/debug/trace.h +2 -2
- data/src/core/lib/event_engine/{endpoint_config.cc → channel_args_endpoint_config.cc} +2 -1
- data/src/core/lib/event_engine/{endpoint_config_internal.h → channel_args_endpoint_config.h} +3 -3
- data/src/core/lib/event_engine/event_engine.cc +0 -13
- data/src/core/lib/event_engine/event_engine_factory.cc +49 -0
- data/src/core/lib/event_engine/event_engine_factory.h +33 -0
- data/src/core/lib/event_engine/memory_allocator.cc +70 -0
- data/src/core/lib/gpr/tls.h +6 -0
- data/src/core/lib/gprpp/cpp_impl_of.h +45 -0
- data/src/core/lib/gprpp/global_config_env.cc +7 -7
- data/src/core/lib/gprpp/global_config_env.h +2 -2
- data/src/core/lib/gprpp/manual_constructor.h +2 -3
- data/src/core/lib/gprpp/orphanable.h +1 -1
- data/src/core/lib/gprpp/ref_counted.h +1 -1
- data/src/core/lib/gprpp/ref_counted_ptr.h +2 -4
- data/src/core/lib/gprpp/status_helper.h +1 -1
- data/src/core/lib/gprpp/table.h +13 -1
- data/src/core/lib/http/httpcli.cc +30 -26
- data/src/core/lib/http/httpcli.h +14 -12
- data/src/core/lib/iomgr/buffer_list.cc +9 -9
- data/src/core/lib/iomgr/buffer_list.h +13 -13
- data/src/core/lib/iomgr/call_combiner.cc +2 -3
- data/src/core/lib/iomgr/endpoint.h +0 -1
- data/src/core/lib/iomgr/endpoint_cfstream.cc +7 -24
- data/src/core/lib/iomgr/endpoint_cfstream.h +4 -4
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +9 -11
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +5 -14
- data/src/core/lib/iomgr/event_engine/endpoint.cc +2 -3
- data/src/core/lib/iomgr/event_engine/iomgr.cc +5 -25
- data/src/core/lib/iomgr/event_engine/resolver.cc +3 -2
- data/src/core/lib/iomgr/event_engine/tcp.cc +7 -5
- data/src/core/lib/iomgr/event_engine/timer.cc +4 -3
- data/src/core/lib/iomgr/exec_ctx.h +11 -11
- data/src/core/lib/iomgr/executor.cc +12 -15
- data/src/core/lib/iomgr/executor.h +1 -1
- data/src/core/lib/iomgr/tcp_client.cc +2 -4
- data/src/core/lib/iomgr/tcp_client.h +1 -3
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +1 -9
- data/src/core/lib/iomgr/tcp_client_custom.cc +4 -10
- data/src/core/lib/iomgr/tcp_client_posix.cc +7 -23
- data/src/core/lib/iomgr/tcp_client_posix.h +3 -4
- data/src/core/lib/iomgr/tcp_client_windows.cc +1 -10
- data/src/core/lib/iomgr/tcp_custom.cc +9 -36
- data/src/core/lib/iomgr/tcp_custom.h +0 -1
- data/src/core/lib/iomgr/tcp_posix.cc +28 -33
- data/src/core/lib/iomgr/tcp_posix.h +1 -3
- data/src/core/lib/iomgr/tcp_server.cc +4 -6
- data/src/core/lib/iomgr/tcp_server.h +6 -8
- data/src/core/lib/iomgr/tcp_server_custom.cc +5 -15
- data/src/core/lib/iomgr/tcp_server_posix.cc +18 -22
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +19 -18
- data/src/core/lib/iomgr/tcp_server_windows.cc +5 -12
- data/src/core/lib/iomgr/tcp_windows.cc +2 -7
- data/src/core/lib/iomgr/tcp_windows.h +1 -2
- data/src/core/lib/iomgr/unix_sockets_posix.cc +1 -1
- data/src/core/lib/iomgr/unix_sockets_posix.h +1 -1
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +1 -1
- data/src/core/lib/iomgr/work_serializer.cc +115 -44
- data/src/core/lib/iomgr/work_serializer.h +16 -4
- data/src/core/lib/json/json_reader.cc +83 -35
- data/src/core/lib/json/json_util.cc +1 -1
- data/src/core/lib/promise/activity.cc +115 -0
- data/src/core/lib/promise/activity.h +499 -0
- data/src/core/lib/promise/context.h +86 -0
- data/src/core/lib/promise/detail/basic_seq.h +407 -0
- data/src/core/lib/promise/detail/promise_factory.h +189 -0
- data/src/core/lib/promise/detail/promise_like.h +85 -0
- data/src/core/lib/promise/detail/status.h +44 -0
- data/src/core/lib/promise/detail/switch.h +1455 -0
- data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +48 -0
- data/src/core/lib/promise/loop.h +108 -0
- data/src/core/lib/promise/map.h +88 -0
- data/src/core/lib/promise/poll.h +60 -0
- data/src/core/lib/promise/race.h +84 -0
- data/src/core/lib/promise/seq.h +71 -0
- data/src/core/lib/resource_quota/api.cc +108 -0
- data/src/core/lib/resource_quota/api.h +41 -0
- data/src/core/lib/resource_quota/memory_quota.cc +454 -0
- data/src/core/lib/resource_quota/memory_quota.h +421 -0
- data/src/core/lib/resource_quota/resource_quota.cc +33 -0
- data/src/core/lib/resource_quota/resource_quota.h +58 -0
- data/src/core/lib/resource_quota/thread_quota.cc +43 -0
- data/src/core/lib/resource_quota/thread_quota.h +57 -0
- data/src/core/lib/resource_quota/trace.cc +19 -0
- data/src/core/lib/resource_quota/trace.h +24 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +13 -19
- data/src/core/lib/security/authorization/evaluate_args.h +2 -1
- data/src/core/lib/security/authorization/sdk_server_authz_filter.cc +3 -1
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +11 -12
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +9 -10
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +3 -4
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +4 -6
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +1 -1
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +4 -6
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +18 -22
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +11 -12
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +7 -8
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +201 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +106 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +11 -90
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +19 -82
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +21 -10
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +28 -33
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +3 -3
- data/src/core/lib/security/security_connector/alts/alts_security_connector.h +2 -2
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +3 -4
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +2 -2
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +7 -7
- data/src/core/lib/security/security_connector/load_system_roots_linux.cc +1 -2
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +4 -1
- data/src/core/lib/security/security_connector/ssl_utils.cc +10 -2
- data/src/core/lib/security/security_connector/ssl_utils.h +1 -1
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +344 -195
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +64 -41
- data/src/core/lib/security/transport/security_handshaker.cc +2 -2
- data/src/core/lib/slice/percent_encoding.cc +30 -86
- data/src/core/lib/slice/percent_encoding.h +5 -11
- data/src/core/lib/slice/slice.cc +7 -7
- data/src/core/lib/slice/slice.h +341 -0
- data/src/core/lib/slice/slice_buffer.cc +4 -0
- data/src/core/lib/slice/slice_intern.cc +1 -1
- data/src/core/lib/slice/slice_refcount.h +5 -1
- data/src/core/lib/slice/slice_refcount_base.h +19 -11
- data/src/core/lib/slice/static_slice.cc +331 -483
- data/src/core/lib/slice/static_slice.h +101 -132
- data/src/core/lib/surface/builtins.cc +1 -1
- data/src/core/lib/surface/call.cc +85 -59
- data/src/core/lib/surface/channel.cc +4 -29
- data/src/core/lib/surface/channel.h +2 -12
- data/src/core/lib/surface/completion_queue.cc +2 -2
- data/src/core/lib/surface/init.cc +0 -1
- data/src/core/lib/surface/lame_client.cc +24 -17
- data/src/core/lib/surface/server.cc +22 -22
- data/src/core/lib/surface/server.h +8 -9
- data/src/core/lib/surface/validate_metadata.cc +2 -2
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +1 -1
- data/src/core/lib/transport/byte_stream.cc +4 -0
- data/src/core/lib/transport/metadata.h +4 -4
- data/src/core/lib/transport/metadata_batch.cc +5 -0
- data/src/core/lib/transport/metadata_batch.h +174 -99
- data/src/core/lib/transport/parsed_metadata.cc +35 -0
- data/src/core/lib/transport/parsed_metadata.h +180 -61
- data/src/core/lib/transport/pid_controller.cc +4 -4
- data/src/core/lib/transport/static_metadata.cc +529 -614
- data/src/core/lib/transport/static_metadata.h +0 -18
- data/src/core/lib/transport/transport.cc +4 -26
- data/src/core/lib/transport/transport.h +0 -1
- data/src/core/lib/transport/transport_op_string.cc +1 -1
- data/src/core/lib/uri/uri_parser.cc +19 -19
- data/src/core/lib/uri/uri_parser.h +2 -0
- data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -2
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -1
- data/src/core/tsi/local_transport_security.cc +15 -15
- data/src/core/tsi/ssl_transport_security.cc +30 -1
- data/src/core/tsi/ssl_transport_security.h +1 -0
- data/src/ruby/ext/grpc/extconf.rb +1 -1
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +6 -10
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +9 -15
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/third_party/abseil-cpp/absl/algorithm/container.h +101 -91
- data/third_party/abseil-cpp/absl/base/attributes.h +64 -31
- data/third_party/abseil-cpp/absl/base/config.h +67 -37
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +1 -26
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +3 -1
- data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +2 -0
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +69 -0
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +4 -4
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +16 -0
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +4 -4
- data/third_party/abseil-cpp/absl/base/options.h +1 -1
- data/third_party/abseil-cpp/absl/container/fixed_array.h +0 -5
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +105 -97
- data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +17 -15
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +18 -102
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +37 -78
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +388 -423
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +3 -2
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +14 -8
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +251 -120
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +11 -1
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +12 -11
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +6 -2
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +12 -5
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +110 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +234 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +25 -7
- data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +8 -2
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +21 -3
- data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +2 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize.cc +2 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +14 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +72 -0
- data/third_party/abseil-cpp/absl/functional/function_ref.h +4 -1
- data/third_party/abseil-cpp/absl/hash/hash.h +22 -0
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +15 -16
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +88 -37
- data/third_party/abseil-cpp/absl/hash/internal/{wyhash.cc → low_level_hash.cc} +23 -11
- data/third_party/abseil-cpp/absl/hash/internal/{wyhash.h → low_level_hash.h} +14 -12
- data/third_party/abseil-cpp/absl/memory/memory.h +1 -1
- data/third_party/abseil-cpp/absl/meta/type_traits.h +32 -2
- data/third_party/abseil-cpp/absl/numeric/int128.cc +3 -10
- data/third_party/abseil-cpp/absl/numeric/int128.h +146 -73
- data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +19 -25
- data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +73 -70
- data/third_party/abseil-cpp/absl/{base → profiling}/internal/exponential_biased.cc +4 -4
- data/third_party/abseil-cpp/absl/{base → profiling}/internal/exponential_biased.h +6 -6
- data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +230 -0
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +5 -5
- data/third_party/abseil-cpp/absl/status/status.cc +9 -17
- data/third_party/abseil-cpp/absl/status/status.h +19 -15
- data/third_party/abseil-cpp/absl/status/statusor.cc +34 -2
- data/third_party/abseil-cpp/absl/status/statusor.h +31 -21
- data/third_party/abseil-cpp/absl/strings/charconv.cc +3 -3
- data/third_party/abseil-cpp/absl/strings/charconv.h +3 -2
- data/third_party/abseil-cpp/absl/strings/cord.cc +453 -359
- data/third_party/abseil-cpp/absl/strings/cord.h +197 -70
- data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +6 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +140 -63
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +1128 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +939 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +185 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +265 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +68 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +211 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +129 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.h +50 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +7 -7
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +55 -181
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +42 -24
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +4 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.cc +96 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.h +85 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +139 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.h +131 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +445 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +298 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +87 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_update_scope.h +71 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +121 -0
- data/third_party/abseil-cpp/absl/strings/internal/resize_uninitialized.h +48 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +8 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +3 -4
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +6 -6
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +36 -18
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +62 -73
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +24 -16
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +35 -35
- data/third_party/abseil-cpp/absl/strings/numbers.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/numbers.h +34 -0
- data/third_party/abseil-cpp/absl/strings/str_cat.cc +4 -4
- data/third_party/abseil-cpp/absl/strings/str_format.h +1 -2
- data/third_party/abseil-cpp/absl/strings/string_view.cc +16 -21
- data/third_party/abseil-cpp/absl/strings/string_view.h +120 -39
- data/third_party/abseil-cpp/absl/strings/substitute.cc +2 -1
- data/third_party/abseil-cpp/absl/strings/substitute.h +99 -74
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +25 -15
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +5 -3
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +1 -1
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +3 -3
- data/third_party/abseil-cpp/absl/time/civil_time.cc +1 -3
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +93 -20
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +2 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +83 -21
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +49 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +2 -3
- data/third_party/abseil-cpp/absl/time/time.h +67 -36
- data/third_party/abseil-cpp/absl/types/bad_optional_access.h +1 -1
- data/third_party/abseil-cpp/absl/types/bad_variant_access.h +2 -2
- data/third_party/abseil-cpp/absl/types/span.h +3 -3
- data/third_party/boringssl-with-bazel/err_data.c +681 -677
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +19 -11
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +41 -30
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +59 -47
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +24 -28
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +28 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +48 -272
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +8 -6
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +3 -1
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +7 -7
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +18 -0
- data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +5 -1
- data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +59 -23
- data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +2 -18
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +8 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +216 -11
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_lib.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_node.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +21 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +971 -253
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +3 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +0 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +4 -12
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +17 -41
- data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +12 -27
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +8 -10
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +29 -55
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +3 -9
- data/third_party/boringssl-with-bazel/src/include/openssl/pool.h +7 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +24 -28
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +6 -9
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +12 -43
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +4 -3
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +4 -0
- data/third_party/upb/upb/decode.c +309 -178
- data/third_party/upb/upb/decode_fast.c +1 -1
- data/third_party/upb/upb/decode_internal.h +1 -0
- data/third_party/upb/upb/def.c +330 -85
- data/third_party/upb/upb/def.h +45 -14
- data/third_party/upb/upb/def.hpp +17 -4
- data/third_party/upb/upb/encode.c +100 -40
- data/third_party/upb/upb/msg.c +22 -9
- data/third_party/upb/upb/msg_internal.h +90 -8
- data/third_party/upb/upb/reflection.c +98 -58
- data/third_party/upb/upb/reflection.h +6 -2
- data/third_party/upb/upb/text_encode.c +3 -3
- data/third_party/upb/upb/upb.c +8 -0
- metadata +116 -56
- data/src/core/lib/avl/avl.cc +0 -306
- data/src/core/lib/gprpp/match.h +0 -73
- data/src/core/lib/gprpp/overload.h +0 -59
- data/src/core/lib/iomgr/event_engine/iomgr.h +0 -42
- data/src/core/lib/iomgr/resource_quota.cc +0 -1106
- data/src/core/lib/iomgr/resource_quota.h +0 -226
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +0 -93
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_int.h +0 -217
@@ -1617,6 +1617,7 @@ static bool ParseUnresolvedName(State *state) {
|
|
1617
1617
|
// ::= <2-ary operator-name> <expression> <expression>
|
1618
1618
|
// ::= <3-ary operator-name> <expression> <expression> <expression>
|
1619
1619
|
// ::= cl <expression>+ E
|
1620
|
+
// ::= cp <simple-id> <expression>* E # Clang-specific.
|
1620
1621
|
// ::= cv <type> <expression> # type (expression)
|
1621
1622
|
// ::= cv <type> _ <expression>* E # type (expr-list)
|
1622
1623
|
// ::= st <type>
|
@@ -1639,14 +1640,23 @@ static bool ParseExpression(State *state) {
|
|
1639
1640
|
return true;
|
1640
1641
|
}
|
1641
1642
|
|
1642
|
-
// Object/function call expression.
|
1643
1643
|
ParseState copy = state->parse_state;
|
1644
|
+
|
1645
|
+
// Object/function call expression.
|
1644
1646
|
if (ParseTwoCharToken(state, "cl") && OneOrMore(ParseExpression, state) &&
|
1645
1647
|
ParseOneCharToken(state, 'E')) {
|
1646
1648
|
return true;
|
1647
1649
|
}
|
1648
1650
|
state->parse_state = copy;
|
1649
1651
|
|
1652
|
+
// Clang-specific "cp <simple-id> <expression>* E"
|
1653
|
+
// https://clang.llvm.org/doxygen/ItaniumMangle_8cpp_source.html#l04338
|
1654
|
+
if (ParseTwoCharToken(state, "cp") && ParseSimpleId(state) &&
|
1655
|
+
ZeroOrMore(ParseExpression, state) && ParseOneCharToken(state, 'E')) {
|
1656
|
+
return true;
|
1657
|
+
}
|
1658
|
+
state->parse_state = copy;
|
1659
|
+
|
1650
1660
|
// Function-param expression (level 0).
|
1651
1661
|
if (ParseTwoCharToken(state, "fp") && Optional(ParseCVQualifiers(state)) &&
|
1652
1662
|
Optional(ParseNumber(state, nullptr)) && ParseOneCharToken(state, '_')) {
|
@@ -22,6 +22,7 @@
|
|
22
22
|
#include <string.h>
|
23
23
|
#include <cassert>
|
24
24
|
#include <cstddef>
|
25
|
+
#include "absl/base/config.h"
|
25
26
|
#include "absl/base/internal/raw_logging.h"
|
26
27
|
|
27
28
|
// From binutils/include/elf/common.h (this doesn't appear to be documented
|
@@ -43,11 +44,11 @@ namespace debugging_internal {
|
|
43
44
|
|
44
45
|
namespace {
|
45
46
|
|
46
|
-
#if
|
47
|
+
#if __SIZEOF_POINTER__ == 4
|
47
48
|
const int kElfClass = ELFCLASS32;
|
48
49
|
int ElfBind(const ElfW(Sym) *symbol) { return ELF32_ST_BIND(symbol->st_info); }
|
49
50
|
int ElfType(const ElfW(Sym) *symbol) { return ELF32_ST_TYPE(symbol->st_info); }
|
50
|
-
#elif
|
51
|
+
#elif __SIZEOF_POINTER__ == 8
|
51
52
|
const int kElfClass = ELFCLASS64;
|
52
53
|
int ElfBind(const ElfW(Sym) *symbol) { return ELF64_ST_BIND(symbol->st_info); }
|
53
54
|
int ElfType(const ElfW(Sym) *symbol) { return ELF64_ST_TYPE(symbol->st_info); }
|
@@ -175,17 +176,17 @@ void ElfMemImage::Init(const void *base) {
|
|
175
176
|
}
|
176
177
|
switch (base_as_char[EI_DATA]) {
|
177
178
|
case ELFDATA2LSB: {
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
179
|
+
#ifndef ABSL_IS_LITTLE_ENDIAN
|
180
|
+
assert(false);
|
181
|
+
return;
|
182
|
+
#endif
|
182
183
|
break;
|
183
184
|
}
|
184
185
|
case ELFDATA2MSB: {
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
186
|
+
#ifndef ABSL_IS_BIG_ENDIAN
|
187
|
+
assert(false);
|
188
|
+
return;
|
189
|
+
#endif
|
189
190
|
break;
|
190
191
|
}
|
191
192
|
default: {
|
@@ -221,7 +222,7 @@ void ElfMemImage::Init(const void *base) {
|
|
221
222
|
reinterpret_cast<ElfW(Dyn) *>(dynamic_program_header->p_vaddr +
|
222
223
|
relocation);
|
223
224
|
for (; dynamic_entry->d_tag != DT_NULL; ++dynamic_entry) {
|
224
|
-
const
|
225
|
+
const auto value = dynamic_entry->d_un.d_val + relocation;
|
225
226
|
switch (dynamic_entry->d_tag) {
|
226
227
|
case DT_HASH:
|
227
228
|
hash_ = reinterpret_cast<ElfW(Word) *>(value);
|
@@ -31,8 +31,8 @@
|
|
31
31
|
#error ABSL_HAVE_ELF_MEM_IMAGE cannot be directly set
|
32
32
|
#endif
|
33
33
|
|
34
|
-
#if defined(__ELF__) && defined(
|
35
|
-
!defined(
|
34
|
+
#if defined(__ELF__) && !defined(__native_client__) && !defined(__asmjs__) && \
|
35
|
+
!defined(__wasm__)
|
36
36
|
#define ABSL_HAVE_ELF_MEM_IMAGE 1
|
37
37
|
#endif
|
38
38
|
|
@@ -40,6 +40,10 @@
|
|
40
40
|
|
41
41
|
#include <link.h> // for ElfW
|
42
42
|
|
43
|
+
#if defined(__FreeBSD__) && !defined(ElfW)
|
44
|
+
#define ElfW(x) __ElfN(x)
|
45
|
+
#endif
|
46
|
+
|
43
47
|
namespace absl {
|
44
48
|
ABSL_NAMESPACE_BEGIN
|
45
49
|
namespace debugging_internal {
|
@@ -35,7 +35,11 @@
|
|
35
35
|
// Thread local support required for UnwindImpl.
|
36
36
|
#define ABSL_STACKTRACE_INL_HEADER \
|
37
37
|
"absl/debugging/internal/stacktrace_generic-inl.inc"
|
38
|
-
#endif
|
38
|
+
#endif // defined(ABSL_HAVE_THREAD_LOCAL)
|
39
|
+
|
40
|
+
#elif defined(__EMSCRIPTEN__)
|
41
|
+
#define ABSL_STACKTRACE_INL_HEADER \
|
42
|
+
"absl/debugging/internal/stacktrace_emscripten-inl.inc"
|
39
43
|
|
40
44
|
#elif defined(__linux__) && !defined(__ANDROID__)
|
41
45
|
|
@@ -51,7 +55,7 @@
|
|
51
55
|
// Note: When using glibc this may require -funwind-tables to function properly.
|
52
56
|
#define ABSL_STACKTRACE_INL_HEADER \
|
53
57
|
"absl/debugging/internal/stacktrace_generic-inl.inc"
|
54
|
-
#endif
|
58
|
+
#endif // __has_include(<execinfo.h>)
|
55
59
|
#elif defined(__i386__) || defined(__x86_64__)
|
56
60
|
#define ABSL_STACKTRACE_INL_HEADER \
|
57
61
|
"absl/debugging/internal/stacktrace_x86-inl.inc"
|
@@ -61,15 +65,18 @@
|
|
61
65
|
#elif defined(__aarch64__)
|
62
66
|
#define ABSL_STACKTRACE_INL_HEADER \
|
63
67
|
"absl/debugging/internal/stacktrace_aarch64-inl.inc"
|
68
|
+
#elif defined(__riscv)
|
69
|
+
#define ABSL_STACKTRACE_INL_HEADER \
|
70
|
+
"absl/debugging/internal/stacktrace_riscv-inl.inc"
|
64
71
|
#elif defined(__has_include)
|
65
72
|
#if __has_include(<execinfo.h>)
|
66
73
|
// Note: When using glibc this may require -funwind-tables to function properly.
|
67
74
|
#define ABSL_STACKTRACE_INL_HEADER \
|
68
75
|
"absl/debugging/internal/stacktrace_generic-inl.inc"
|
69
|
-
#endif
|
70
|
-
#endif
|
76
|
+
#endif // __has_include(<execinfo.h>)
|
77
|
+
#endif // defined(__has_include)
|
71
78
|
|
72
|
-
#endif
|
79
|
+
#endif // defined(__linux__) && !defined(__ANDROID__)
|
73
80
|
|
74
81
|
// Fallback to the empty implementation.
|
75
82
|
#if !defined(ABSL_STACKTRACE_INL_HEADER)
|
@@ -0,0 +1,110 @@
|
|
1
|
+
// Copyright 2017 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
|
+
// Portable implementation - just use glibc
|
16
|
+
//
|
17
|
+
// Note: The glibc implementation may cause a call to malloc.
|
18
|
+
// This can cause a deadlock in HeapProfiler.
|
19
|
+
|
20
|
+
#ifndef ABSL_DEBUGGING_INTERNAL_STACKTRACE_EMSCRIPTEN_INL_H_
|
21
|
+
#define ABSL_DEBUGGING_INTERNAL_STACKTRACE_EMSCRIPTEN_INL_H_
|
22
|
+
|
23
|
+
#include <emscripten.h>
|
24
|
+
|
25
|
+
#include <atomic>
|
26
|
+
#include <cstring>
|
27
|
+
|
28
|
+
#include "absl/base/attributes.h"
|
29
|
+
#include "absl/debugging/stacktrace.h"
|
30
|
+
|
31
|
+
extern "C" {
|
32
|
+
uintptr_t emscripten_stack_snapshot();
|
33
|
+
uint32_t emscripten_stack_unwind_buffer(uintptr_t pc, void *buffer,
|
34
|
+
uint32_t depth);
|
35
|
+
}
|
36
|
+
|
37
|
+
// Sometimes, we can try to get a stack trace from within a stack
|
38
|
+
// trace, which can cause a self-deadlock.
|
39
|
+
// Protect against such reentrant call by failing to get a stack trace.
|
40
|
+
//
|
41
|
+
// We use __thread here because the code here is extremely low level -- it is
|
42
|
+
// called while collecting stack traces from within malloc and mmap, and thus
|
43
|
+
// can not call anything which might call malloc or mmap itself.
|
44
|
+
static __thread int recursive = 0;
|
45
|
+
|
46
|
+
// The stack trace function might be invoked very early in the program's
|
47
|
+
// execution (e.g. from the very first malloc).
|
48
|
+
// As such, we suppress usage of backtrace during this early stage of execution.
|
49
|
+
static std::atomic<bool> disable_stacktraces(true); // Disabled until healthy.
|
50
|
+
// Waiting until static initializers run seems to be late enough.
|
51
|
+
// This file is included into stacktrace.cc so this will only run once.
|
52
|
+
ABSL_ATTRIBUTE_UNUSED static int stacktraces_enabler = []() {
|
53
|
+
// Check if we can even create stacktraces. If not, bail early and leave
|
54
|
+
// disable_stacktraces set as-is.
|
55
|
+
// clang-format off
|
56
|
+
if (!EM_ASM_INT({ return (typeof wasmOffsetConverter !== 'undefined'); })) {
|
57
|
+
return 0;
|
58
|
+
}
|
59
|
+
// clang-format on
|
60
|
+
disable_stacktraces.store(false, std::memory_order_relaxed);
|
61
|
+
return 0;
|
62
|
+
}();
|
63
|
+
|
64
|
+
template <bool IS_STACK_FRAMES, bool IS_WITH_CONTEXT>
|
65
|
+
static int UnwindImpl(void **result, int *sizes, int max_depth, int skip_count,
|
66
|
+
const void *ucp, int *min_dropped_frames) {
|
67
|
+
if (recursive || disable_stacktraces.load(std::memory_order_relaxed)) {
|
68
|
+
return 0;
|
69
|
+
}
|
70
|
+
++recursive;
|
71
|
+
|
72
|
+
static_cast<void>(ucp); // Unused.
|
73
|
+
constexpr int kStackLength = 64;
|
74
|
+
void *stack[kStackLength];
|
75
|
+
|
76
|
+
int size;
|
77
|
+
uintptr_t pc = emscripten_stack_snapshot();
|
78
|
+
size = emscripten_stack_unwind_buffer(pc, stack, kStackLength);
|
79
|
+
|
80
|
+
int result_count = size - skip_count;
|
81
|
+
if (result_count < 0) result_count = 0;
|
82
|
+
if (result_count > max_depth) result_count = max_depth;
|
83
|
+
for (int i = 0; i < result_count; i++) result[i] = stack[i + skip_count];
|
84
|
+
|
85
|
+
if (IS_STACK_FRAMES) {
|
86
|
+
// No implementation for finding out the stack frame sizes yet.
|
87
|
+
memset(sizes, 0, sizeof(*sizes) * result_count);
|
88
|
+
}
|
89
|
+
if (min_dropped_frames != nullptr) {
|
90
|
+
if (size - skip_count - max_depth > 0) {
|
91
|
+
*min_dropped_frames = size - skip_count - max_depth;
|
92
|
+
} else {
|
93
|
+
*min_dropped_frames = 0;
|
94
|
+
}
|
95
|
+
}
|
96
|
+
|
97
|
+
--recursive;
|
98
|
+
|
99
|
+
return result_count;
|
100
|
+
}
|
101
|
+
|
102
|
+
namespace absl {
|
103
|
+
ABSL_NAMESPACE_BEGIN
|
104
|
+
namespace debugging_internal {
|
105
|
+
bool StackTraceWorksForTest() { return true; }
|
106
|
+
} // namespace debugging_internal
|
107
|
+
ABSL_NAMESPACE_END
|
108
|
+
} // namespace absl
|
109
|
+
|
110
|
+
#endif // ABSL_DEBUGGING_INTERNAL_STACKTRACE_EMSCRIPTEN_INL_H_
|
@@ -0,0 +1,234 @@
|
|
1
|
+
// Copyright 2021 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_DEBUGGING_INTERNAL_STACKTRACE_RISCV_INL_H_
|
16
|
+
#define ABSL_DEBUGGING_INTERNAL_STACKTRACE_RISCV_INL_H_
|
17
|
+
|
18
|
+
// Generate stack trace for riscv
|
19
|
+
|
20
|
+
#include <sys/ucontext.h>
|
21
|
+
|
22
|
+
#include "absl/base/config.h"
|
23
|
+
#if defined(__linux__)
|
24
|
+
#include <sys/mman.h>
|
25
|
+
#include <ucontext.h>
|
26
|
+
#include <unistd.h>
|
27
|
+
#endif
|
28
|
+
|
29
|
+
#include <atomic>
|
30
|
+
#include <cassert>
|
31
|
+
#include <cstdint>
|
32
|
+
#include <iostream>
|
33
|
+
|
34
|
+
#include "absl/base/attributes.h"
|
35
|
+
#include "absl/debugging/internal/address_is_readable.h"
|
36
|
+
#include "absl/debugging/internal/vdso_support.h"
|
37
|
+
#include "absl/debugging/stacktrace.h"
|
38
|
+
|
39
|
+
static const uintptr_t kUnknownFrameSize = 0;
|
40
|
+
|
41
|
+
#if defined(__linux__)
|
42
|
+
// Returns the address of the VDSO __kernel_rt_sigreturn function, if present.
|
43
|
+
static const unsigned char *GetKernelRtSigreturnAddress() {
|
44
|
+
constexpr uintptr_t kImpossibleAddress = 0;
|
45
|
+
ABSL_CONST_INIT static std::atomic<uintptr_t> memoized(kImpossibleAddress);
|
46
|
+
uintptr_t address = memoized.load(std::memory_order_relaxed);
|
47
|
+
if (address != kImpossibleAddress) {
|
48
|
+
return reinterpret_cast<const unsigned char *>(address);
|
49
|
+
}
|
50
|
+
|
51
|
+
address = reinterpret_cast<uintptr_t>(nullptr);
|
52
|
+
|
53
|
+
#if ABSL_HAVE_VDSO_SUPPORT
|
54
|
+
absl::debugging_internal::VDSOSupport vdso;
|
55
|
+
if (vdso.IsPresent()) {
|
56
|
+
absl::debugging_internal::VDSOSupport::SymbolInfo symbol_info;
|
57
|
+
// Symbol versioning pulled from arch/riscv/kernel/vdso/vdso.lds at v5.10.
|
58
|
+
auto lookup = [&](int type) {
|
59
|
+
return vdso.LookupSymbol("__kernel_rt_sigreturn", "LINUX_4.15", type,
|
60
|
+
&symbol_info);
|
61
|
+
};
|
62
|
+
if ((!lookup(STT_FUNC) && !lookup(STT_NOTYPE)) ||
|
63
|
+
symbol_info.address == nullptr) {
|
64
|
+
// Unexpected: VDSO is present, yet the expected symbol is missing or
|
65
|
+
// null.
|
66
|
+
assert(false && "VDSO is present, but doesn't have expected symbol");
|
67
|
+
} else {
|
68
|
+
if (reinterpret_cast<uintptr_t>(symbol_info.address) !=
|
69
|
+
kImpossibleAddress) {
|
70
|
+
address = reinterpret_cast<uintptr_t>(symbol_info.address);
|
71
|
+
} else {
|
72
|
+
assert(false && "VDSO returned invalid address");
|
73
|
+
}
|
74
|
+
}
|
75
|
+
}
|
76
|
+
#endif
|
77
|
+
|
78
|
+
memoized.store(address, std::memory_order_relaxed);
|
79
|
+
return reinterpret_cast<const unsigned char *>(address);
|
80
|
+
}
|
81
|
+
#endif // __linux__
|
82
|
+
|
83
|
+
// Compute the size of a stack frame in [low..high). We assume that low < high.
|
84
|
+
// Return size of kUnknownFrameSize.
|
85
|
+
template <typename T>
|
86
|
+
static inline uintptr_t ComputeStackFrameSize(const T *low, const T *high) {
|
87
|
+
const char *low_char_ptr = reinterpret_cast<const char *>(low);
|
88
|
+
const char *high_char_ptr = reinterpret_cast<const char *>(high);
|
89
|
+
return low < high ? high_char_ptr - low_char_ptr : kUnknownFrameSize;
|
90
|
+
}
|
91
|
+
|
92
|
+
// Given a pointer to a stack frame, locate and return the calling stackframe,
|
93
|
+
// or return null if no stackframe can be found. Perform sanity checks (the
|
94
|
+
// strictness of which is controlled by the boolean parameter
|
95
|
+
// "STRICT_UNWINDING") to reduce the chance that a bad pointer is returned.
|
96
|
+
template <bool STRICT_UNWINDING, bool WITH_CONTEXT>
|
97
|
+
ABSL_ATTRIBUTE_NO_SANITIZE_ADDRESS // May read random elements from stack.
|
98
|
+
ABSL_ATTRIBUTE_NO_SANITIZE_MEMORY // May read random elements from stack.
|
99
|
+
static void ** NextStackFrame(void **old_frame_pointer, const void *uc) {
|
100
|
+
// .
|
101
|
+
// .
|
102
|
+
// .
|
103
|
+
// +-> +----------------+
|
104
|
+
// | | return address |
|
105
|
+
// | | previous fp |
|
106
|
+
// | | ... |
|
107
|
+
// | +----------------+ <-+
|
108
|
+
// | | return address | |
|
109
|
+
// +---|- previous fp | |
|
110
|
+
// | ... | |
|
111
|
+
// $fp ->|----------------+ |
|
112
|
+
// | return address | |
|
113
|
+
// | previous fp -|---+
|
114
|
+
// $sp ->| ... |
|
115
|
+
// +----------------+
|
116
|
+
void **new_frame_pointer = reinterpret_cast<void **>(old_frame_pointer[-2]);
|
117
|
+
bool check_frame_size = true;
|
118
|
+
|
119
|
+
#if defined(__linux__)
|
120
|
+
if (WITH_CONTEXT && uc != nullptr) {
|
121
|
+
// Check to see if next frame's return address is __kernel_rt_sigreturn.
|
122
|
+
if (old_frame_pointer[-1] == GetKernelRtSigreturnAddress()) {
|
123
|
+
const ucontext_t *ucv = static_cast<const ucontext_t *>(uc);
|
124
|
+
// old_frame_pointer is not suitable for unwinding, look at ucontext to
|
125
|
+
// discover frame pointer before signal.
|
126
|
+
//
|
127
|
+
// RISCV ELF psABI has the frame pointer at x8/fp/s0.
|
128
|
+
// -- RISCV psABI Table 18.2
|
129
|
+
void **const pre_signal_frame_pointer =
|
130
|
+
reinterpret_cast<void **>(ucv->uc_mcontext.__gregs[8]);
|
131
|
+
|
132
|
+
// Check the alleged frame pointer is actually readable. This is to
|
133
|
+
// prevent "double fault" in case we hit the first fault due to stack
|
134
|
+
// corruption.
|
135
|
+
if (!absl::debugging_internal::AddressIsReadable(
|
136
|
+
pre_signal_frame_pointer))
|
137
|
+
return nullptr;
|
138
|
+
|
139
|
+
// Alleged frame pointer is readable, use it for further unwinding.
|
140
|
+
new_frame_pointer = pre_signal_frame_pointer;
|
141
|
+
|
142
|
+
// Skip frame size check if we return from a signal. We may be using an
|
143
|
+
// alterate stack for signals.
|
144
|
+
check_frame_size = false;
|
145
|
+
}
|
146
|
+
}
|
147
|
+
#endif
|
148
|
+
|
149
|
+
// The RISCV ELF psABI mandates that the stack pointer is always 16-byte
|
150
|
+
// aligned.
|
151
|
+
// FIXME(abdulras) this doesn't hold for ILP32E which only mandates a 4-byte
|
152
|
+
// alignment.
|
153
|
+
if ((reinterpret_cast<uintptr_t>(new_frame_pointer) & 15) != 0)
|
154
|
+
return nullptr;
|
155
|
+
|
156
|
+
// Check frame size. In strict mode, we assume frames to be under 100,000
|
157
|
+
// bytes. In non-strict mode, we relax the limit to 1MB.
|
158
|
+
if (check_frame_size) {
|
159
|
+
const uintptr_t max_size = STRICT_UNWINDING ? 100000 : 1000000;
|
160
|
+
const uintptr_t frame_size =
|
161
|
+
ComputeStackFrameSize(old_frame_pointer, new_frame_pointer);
|
162
|
+
if (frame_size == kUnknownFrameSize || frame_size > max_size)
|
163
|
+
return nullptr;
|
164
|
+
}
|
165
|
+
|
166
|
+
return new_frame_pointer;
|
167
|
+
}
|
168
|
+
|
169
|
+
template <bool IS_STACK_FRAMES, bool IS_WITH_CONTEXT>
|
170
|
+
ABSL_ATTRIBUTE_NO_SANITIZE_ADDRESS // May read random elements from stack.
|
171
|
+
ABSL_ATTRIBUTE_NO_SANITIZE_MEMORY // May read random elements from stack.
|
172
|
+
static int UnwindImpl(void **result, int *sizes, int max_depth, int skip_count,
|
173
|
+
const void *ucp, int *min_dropped_frames) {
|
174
|
+
#if defined(__GNUC__)
|
175
|
+
void **frame_pointer = reinterpret_cast<void **>(__builtin_frame_address(0));
|
176
|
+
#else
|
177
|
+
#error reading stack pointer not yet supported on this platform
|
178
|
+
#endif
|
179
|
+
|
180
|
+
skip_count++; // Skip the frame for this function.
|
181
|
+
int n = 0;
|
182
|
+
|
183
|
+
// The `frame_pointer` that is computed here points to the top of the frame.
|
184
|
+
// The two words preceding the address are the return address and the previous
|
185
|
+
// frame pointer. To find a PC value associated with the current frame, we
|
186
|
+
// need to go down a level in the call chain. So we remember the return
|
187
|
+
// address of the last frame seen. This does not work for the first stack
|
188
|
+
// frame, which belongs to `UnwindImp()` but we skip the frame for
|
189
|
+
// `UnwindImp()` anyway.
|
190
|
+
void *prev_return_address = nullptr;
|
191
|
+
|
192
|
+
while (frame_pointer && n < max_depth) {
|
193
|
+
// The absl::GetStackFrames routine si called when we are in some
|
194
|
+
// informational context (the failure signal handler for example). Use the
|
195
|
+
// non-strict unwinding rules to produce a stack trace that is as complete
|
196
|
+
// as possible (even if it contains a few bogus entries in some rare cases).
|
197
|
+
void **next_frame_pointer =
|
198
|
+
NextStackFrame<!IS_STACK_FRAMES, IS_WITH_CONTEXT>(frame_pointer, ucp);
|
199
|
+
|
200
|
+
if (skip_count > 0) {
|
201
|
+
skip_count--;
|
202
|
+
} else {
|
203
|
+
result[n] = prev_return_address;
|
204
|
+
if (IS_STACK_FRAMES) {
|
205
|
+
sizes[n] = ComputeStackFrameSize(frame_pointer, next_frame_pointer);
|
206
|
+
}
|
207
|
+
n++;
|
208
|
+
}
|
209
|
+
prev_return_address = frame_pointer[-1];
|
210
|
+
frame_pointer = next_frame_pointer;
|
211
|
+
}
|
212
|
+
if (min_dropped_frames != nullptr) {
|
213
|
+
// Implementation detail: we clamp the max of frames we are willing to
|
214
|
+
// count, so as not to spend too much time in the loop below.
|
215
|
+
const int kMaxUnwind = 200;
|
216
|
+
int j = 0;
|
217
|
+
for (; frame_pointer != nullptr && j < kMaxUnwind; j++) {
|
218
|
+
frame_pointer =
|
219
|
+
NextStackFrame<!IS_STACK_FRAMES, IS_WITH_CONTEXT>(frame_pointer, ucp);
|
220
|
+
}
|
221
|
+
*min_dropped_frames = j;
|
222
|
+
}
|
223
|
+
return n;
|
224
|
+
}
|
225
|
+
|
226
|
+
namespace absl {
|
227
|
+
ABSL_NAMESPACE_BEGIN
|
228
|
+
namespace debugging_internal {
|
229
|
+
bool StackTraceWorksForTest() { return true; }
|
230
|
+
} // namespace debugging_internal
|
231
|
+
ABSL_NAMESPACE_END
|
232
|
+
} // namespace absl
|
233
|
+
|
234
|
+
#endif
|
@@ -27,6 +27,7 @@
|
|
27
27
|
|
28
28
|
#include <cassert>
|
29
29
|
#include <cstdint>
|
30
|
+
#include <limits>
|
30
31
|
|
31
32
|
#include "absl/base/macros.h"
|
32
33
|
#include "absl/base/port.h"
|
@@ -132,9 +133,8 @@ static uintptr_t GetFP(const void *vuc) {
|
|
132
133
|
const uintptr_t bp = 0;
|
133
134
|
const uintptr_t sp = 0;
|
134
135
|
#endif
|
135
|
-
// Sanity-check that the base pointer is valid.
|
136
|
-
//
|
137
|
-
// the process is compiled with --copt=-fomit-frame-pointer or
|
136
|
+
// Sanity-check that the base pointer is valid. It's possible that some
|
137
|
+
// code in the process is compiled with --copt=-fomit-frame-pointer or
|
138
138
|
// --copt=-momit-leaf-frame-pointer.
|
139
139
|
//
|
140
140
|
// TODO(bcmills): -momit-leaf-frame-pointer is currently the default
|
@@ -159,7 +159,8 @@ static uintptr_t GetFP(const void *vuc) {
|
|
159
159
|
template <bool STRICT_UNWINDING, bool WITH_CONTEXT>
|
160
160
|
ABSL_ATTRIBUTE_NO_SANITIZE_ADDRESS // May read random elements from stack.
|
161
161
|
ABSL_ATTRIBUTE_NO_SANITIZE_MEMORY // May read random elements from stack.
|
162
|
-
static void **NextStackFrame(void **old_fp, const void *uc
|
162
|
+
static void **NextStackFrame(void **old_fp, const void *uc,
|
163
|
+
size_t stack_low, size_t stack_high) {
|
163
164
|
void **new_fp = (void **)*old_fp;
|
164
165
|
|
165
166
|
#if defined(__linux__) && defined(__i386__)
|
@@ -247,7 +248,7 @@ static void **NextStackFrame(void **old_fp, const void *uc) {
|
|
247
248
|
// using an alternate signal stack.
|
248
249
|
//
|
249
250
|
// TODO(bcmills): The GetFP call should be completely unnecessary when
|
250
|
-
//
|
251
|
+
// ENABLE_COMBINED_UNWINDER is set (because we should be back in the thread's
|
251
252
|
// stack by this point), but it is empirically still needed (e.g. when the
|
252
253
|
// stack includes a call to abort). unw_get_reg returns UNW_EBADREG for some
|
253
254
|
// frames. Figure out why GetValidFrameAddr and/or libunwind isn't doing what
|
@@ -258,6 +259,18 @@ static void **NextStackFrame(void **old_fp, const void *uc) {
|
|
258
259
|
// at a greater address that the current one.
|
259
260
|
if (new_fp_u <= old_fp_u) return nullptr;
|
260
261
|
if (new_fp_u - old_fp_u > kMaxFrameBytes) return nullptr;
|
262
|
+
|
263
|
+
if (stack_low < old_fp_u && old_fp_u <= stack_high) {
|
264
|
+
// Old BP was in the expected stack region...
|
265
|
+
if (!(stack_low < new_fp_u && new_fp_u <= stack_high)) {
|
266
|
+
// ... but new BP is outside of expected stack region.
|
267
|
+
// It is most likely bogus.
|
268
|
+
return nullptr;
|
269
|
+
}
|
270
|
+
} else {
|
271
|
+
// We may be here if we are executing in a co-routine with a
|
272
|
+
// separate stack. We can't do safety checks in this case.
|
273
|
+
}
|
261
274
|
} else {
|
262
275
|
if (new_fp == nullptr) return nullptr; // skip AddressIsReadable() below
|
263
276
|
// In the non-strict mode, allow discontiguous stack frames.
|
@@ -297,13 +310,17 @@ static int UnwindImpl(void **result, int *sizes, int max_depth, int skip_count,
|
|
297
310
|
int n = 0;
|
298
311
|
void **fp = reinterpret_cast<void **>(__builtin_frame_address(0));
|
299
312
|
|
313
|
+
size_t stack_low = getpagesize(); // Assume that the first page is not stack.
|
314
|
+
size_t stack_high = std::numeric_limits<size_t>::max() - sizeof(void *);
|
315
|
+
|
300
316
|
while (fp && n < max_depth) {
|
301
317
|
if (*(fp + 1) == reinterpret_cast<void *>(0)) {
|
302
318
|
// In 64-bit code, we often see a frame that
|
303
319
|
// points to itself and has a return address of 0.
|
304
320
|
break;
|
305
321
|
}
|
306
|
-
void **next_fp = NextStackFrame<!IS_STACK_FRAMES, IS_WITH_CONTEXT>(
|
322
|
+
void **next_fp = NextStackFrame<!IS_STACK_FRAMES, IS_WITH_CONTEXT>(
|
323
|
+
fp, ucp, stack_low, stack_high);
|
307
324
|
if (skip_count > 0) {
|
308
325
|
skip_count--;
|
309
326
|
} else {
|
@@ -326,7 +343,8 @@ static int UnwindImpl(void **result, int *sizes, int max_depth, int skip_count,
|
|
326
343
|
const int kMaxUnwind = 1000;
|
327
344
|
int j = 0;
|
328
345
|
for (; fp != nullptr && j < kMaxUnwind; j++) {
|
329
|
-
fp = NextStackFrame<!IS_STACK_FRAMES, IS_WITH_CONTEXT>(fp, ucp
|
346
|
+
fp = NextStackFrame<!IS_STACK_FRAMES, IS_WITH_CONTEXT>(fp, ucp, stack_low,
|
347
|
+
stack_high);
|
330
348
|
}
|
331
349
|
*min_dropped_frames = j;
|
332
350
|
}
|
@@ -28,8 +28,8 @@
|
|
28
28
|
|
29
29
|
#ifdef ABSL_INTERNAL_HAVE_ELF_SYMBOLIZE
|
30
30
|
#error ABSL_INTERNAL_HAVE_ELF_SYMBOLIZE cannot be directly set
|
31
|
-
#elif defined(__ELF__) && defined(__GLIBC__) && !defined(__native_client__)
|
32
|
-
|
31
|
+
#elif defined(__ELF__) && defined(__GLIBC__) && !defined(__native_client__) \
|
32
|
+
&& !defined(__asmjs__) && !defined(__wasm__)
|
33
33
|
#define ABSL_INTERNAL_HAVE_ELF_SYMBOLIZE 1
|
34
34
|
|
35
35
|
#include <elf.h>
|
@@ -68,6 +68,12 @@ ABSL_NAMESPACE_END
|
|
68
68
|
#define ABSL_INTERNAL_HAVE_DARWIN_SYMBOLIZE 1
|
69
69
|
#endif
|
70
70
|
|
71
|
+
#ifdef ABSL_INTERNAL_HAVE_EMSCRIPTEN_SYMBOLIZE
|
72
|
+
#error ABSL_INTERNAL_HAVE_EMSCRIPTEN_SYMBOLIZE cannot be directly set
|
73
|
+
#elif defined(__EMSCRIPTEN__)
|
74
|
+
#define ABSL_INTERNAL_HAVE_EMSCRIPTEN_SYMBOLIZE 1
|
75
|
+
#endif
|
76
|
+
|
71
77
|
namespace absl {
|
72
78
|
ABSL_NAMESPACE_BEGIN
|
73
79
|
namespace debugging_internal {
|
@@ -20,12 +20,25 @@
|
|
20
20
|
|
21
21
|
#ifdef ABSL_HAVE_VDSO_SUPPORT // defined in vdso_support.h
|
22
22
|
|
23
|
+
#if !defined(__has_include)
|
24
|
+
#define __has_include(header) 0
|
25
|
+
#endif
|
26
|
+
|
23
27
|
#include <errno.h>
|
24
28
|
#include <fcntl.h>
|
29
|
+
#if __has_include(<syscall.h>)
|
30
|
+
#include <syscall.h>
|
31
|
+
#elif __has_include(<sys/syscall.h>)
|
25
32
|
#include <sys/syscall.h>
|
33
|
+
#endif
|
26
34
|
#include <unistd.h>
|
27
35
|
|
28
|
-
#if
|
36
|
+
#if defined(__GLIBC__) && \
|
37
|
+
(__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 16))
|
38
|
+
#define ABSL_HAVE_GETAUXVAL
|
39
|
+
#endif
|
40
|
+
|
41
|
+
#ifdef ABSL_HAVE_GETAUXVAL
|
29
42
|
#include <sys/auxv.h>
|
30
43
|
#endif
|
31
44
|
|
@@ -37,6 +50,11 @@
|
|
37
50
|
#define AT_SYSINFO_EHDR 33 // for crosstoolv10
|
38
51
|
#endif
|
39
52
|
|
53
|
+
#if defined(__FreeBSD__)
|
54
|
+
using Elf64_auxv_t = Elf64_Auxinfo;
|
55
|
+
using Elf32_auxv_t = Elf32_Auxinfo;
|
56
|
+
#endif
|
57
|
+
|
40
58
|
namespace absl {
|
41
59
|
ABSL_NAMESPACE_BEGIN
|
42
60
|
namespace debugging_internal {
|
@@ -65,7 +83,7 @@ VDSOSupport::VDSOSupport()
|
|
65
83
|
// the operation should be idempotent.
|
66
84
|
const void *VDSOSupport::Init() {
|
67
85
|
const auto kInvalidBase = debugging_internal::ElfMemImage::kInvalidBase;
|
68
|
-
#
|
86
|
+
#ifdef ABSL_HAVE_GETAUXVAL
|
69
87
|
if (vdso_base_.load(std::memory_order_relaxed) == kInvalidBase) {
|
70
88
|
errno = 0;
|
71
89
|
const void *const sysinfo_ehdr =
|
@@ -74,7 +92,7 @@ const void *VDSOSupport::Init() {
|
|
74
92
|
vdso_base_.store(sysinfo_ehdr, std::memory_order_relaxed);
|
75
93
|
}
|
76
94
|
}
|
77
|
-
#endif //
|
95
|
+
#endif // ABSL_HAVE_GETAUXVAL
|
78
96
|
if (vdso_base_.load(std::memory_order_relaxed) == kInvalidBase) {
|
79
97
|
int fd = open("/proc/self/auxv", O_RDONLY);
|
80
98
|
if (fd == -1) {
|
@@ -49,8 +49,10 @@
|
|
49
49
|
|
50
50
|
# include "absl/debugging/internal/stacktrace_aarch64-inl.inc"
|
51
51
|
# include "absl/debugging/internal/stacktrace_arm-inl.inc"
|
52
|
+
# include "absl/debugging/internal/stacktrace_emscripten-inl.inc"
|
52
53
|
# include "absl/debugging/internal/stacktrace_generic-inl.inc"
|
53
54
|
# include "absl/debugging/internal/stacktrace_powerpc-inl.inc"
|
55
|
+
# include "absl/debugging/internal/stacktrace_riscv-inl.inc"
|
54
56
|
# include "absl/debugging/internal/stacktrace_unimplemented-inl.inc"
|
55
57
|
# include "absl/debugging/internal/stacktrace_win32-inl.inc"
|
56
58
|
# include "absl/debugging/internal/stacktrace_x86-inl.inc"
|