grpc 1.33.0.pre1 → 1.34.0
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 +342 -134
- data/include/grpc/grpc.h +1 -2
- data/include/grpc/grpc_security.h +149 -172
- data/include/grpc/impl/codegen/grpc_types.h +9 -2
- data/include/grpc/impl/codegen/port_platform.h +22 -55
- data/src/core/ext/filters/client_channel/client_channel.cc +11 -34
- data/src/core/ext/filters/client_channel/config_selector.h +2 -3
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +4 -1
- data/src/core/ext/filters/client_channel/health/health_check_client.h +2 -2
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy.cc +5 -1
- data/src/core/ext/filters/client_channel/lb_policy.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +80 -71
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +3 -1
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +2 -2
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +47 -17
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +2 -2
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +8 -5
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +16 -243
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +53 -17
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +809 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +20 -25
- data/src/core/ext/filters/client_channel/resolver.cc +3 -1
- data/src/core/ext/filters/client_channel/resolver.h +4 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +1 -1
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +20 -0
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +66 -7
- data/src/core/ext/filters/client_channel/resolver_registry.cc +4 -4
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +13 -25
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +1 -1
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +2 -2
- data/src/core/ext/filters/client_channel/retry_throttle.h +1 -1
- data/src/core/ext/filters/client_channel/server_address.h +0 -4
- data/src/core/ext/filters/client_channel/service_config.cc +3 -1
- data/src/core/ext/filters/client_channel/service_config.h +1 -1
- data/src/core/ext/filters/client_channel/subchannel.cc +18 -15
- data/src/core/ext/filters/client_channel/subchannel.h +2 -2
- data/src/core/ext/filters/client_channel/subchannel_interface.h +7 -15
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +6 -2
- data/src/core/ext/filters/deadline/deadline_filter.cc +83 -77
- data/src/core/ext/filters/deadline/deadline_filter.h +7 -11
- data/src/core/ext/filters/http/client/http_client_filter.cc +1 -1
- data/src/core/ext/filters/http/server/http_server_filter.cc +3 -3
- data/src/core/ext/filters/max_age/max_age_filter.cc +1 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +1 -1
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +17 -3
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +7 -7
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +4 -24
- data/src/core/ext/transport/chttp2/transport/flow_control.h +2 -2
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +12 -8
- data/src/core/ext/transport/chttp2/transport/internal.h +0 -1
- data/src/core/ext/transport/chttp2/transport/parsing.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/writing.cc +1 -2
- data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +38 -0
- data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +41 -0
- data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +254 -0
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +105 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +100 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +558 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +145 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +53 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +133 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +127 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +65 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +266 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +125 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +143 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +66 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +263 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +100 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +233 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +70 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +228 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +80 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +46 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +59 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +55 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +110 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +113 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +146 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +50 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +190 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +185 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +65 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +62 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +97 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +915 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +280 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +71 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +64 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +511 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +115 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +48 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +166 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +105 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +249 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +60 -0
- data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c +72 -0
- data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +60 -0
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +152 -0
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +60 -0
- data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +83 -0
- data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +82 -0
- data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +83 -0
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +86 -0
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c +74 -0
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +64 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +54 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +53 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +73 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +72 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +81 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +92 -0
- data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +65 -0
- data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +95 -0
- data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +34 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +59 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +54 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +47 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +40 -0
- data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +61 -0
- data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +38 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +386 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +165 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +39 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +37 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +65 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +39 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +66 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +75 -0
- data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +42 -0
- data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +70 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +33 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +49 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +43 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.c +42 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.c +62 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.c +45 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.c +49 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.c +68 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.c +51 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +307 -0
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +145 -0
- data/src/core/ext/xds/certificate_provider_factory.h +7 -5
- data/src/core/ext/xds/certificate_provider_store.cc +84 -0
- data/src/core/ext/xds/certificate_provider_store.h +65 -8
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +119 -0
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +72 -0
- data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.cc +28 -140
- data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.h +6 -4
- data/src/core/ext/xds/xds_api.cc +241 -718
- data/src/core/ext/xds/xds_api.h +50 -9
- data/src/core/ext/xds/xds_bootstrap.cc +172 -25
- data/src/core/ext/xds/xds_bootstrap.h +23 -7
- data/src/core/ext/xds/xds_certificate_provider.cc +240 -0
- data/src/core/ext/xds/xds_certificate_provider.h +74 -0
- data/src/core/ext/xds/xds_client.cc +161 -128
- data/src/core/ext/xds/xds_client.h +12 -11
- data/src/core/ext/xds/xds_client_stats.cc +41 -4
- data/src/core/ext/xds/xds_client_stats.h +2 -2
- data/src/core/lib/channel/channel_args.cc +2 -1
- data/src/core/lib/channel/channel_trace.cc +4 -2
- data/src/core/lib/channel/channelz.h +2 -2
- data/src/core/lib/channel/handshaker.h +2 -2
- data/src/core/lib/compression/compression.cc +8 -4
- data/src/core/lib/compression/compression_internal.cc +10 -5
- data/src/core/lib/compression/compression_internal.h +2 -1
- data/src/core/lib/compression/stream_compression_identity.cc +1 -3
- data/src/core/lib/debug/stats_data.cc +1 -0
- data/src/core/lib/gpr/cpu_iphone.cc +10 -2
- data/src/core/lib/gpr/log_linux.cc +17 -3
- data/src/core/lib/gpr/log_posix.cc +13 -1
- data/src/core/lib/gpr/log_windows.cc +16 -4
- data/src/core/lib/gpr/murmur_hash.cc +1 -1
- data/src/core/lib/gpr/string.cc +1 -1
- data/src/core/lib/gpr/time_precise.cc +3 -2
- data/src/core/lib/gpr/tls.h +4 -0
- data/src/core/lib/gpr/tls_msvc.h +2 -0
- data/src/core/lib/gpr/tls_stdcpp.h +48 -0
- data/src/core/lib/gpr/useful.h +5 -4
- data/src/core/lib/gprpp/dual_ref_counted.h +44 -49
- data/src/core/lib/gprpp/examine_stack.cc +43 -0
- data/src/core/lib/gprpp/examine_stack.h +46 -0
- data/src/core/lib/gprpp/fork.cc +2 -2
- data/src/core/lib/gprpp/manual_constructor.h +1 -1
- data/src/core/lib/gprpp/orphanable.h +4 -8
- data/src/core/lib/gprpp/ref_counted.h +40 -46
- data/src/core/lib/gprpp/ref_counted_ptr.h +9 -11
- data/src/core/lib/{security/authorization/mock_cel/statusor.h → gprpp/stat.h} +13 -25
- data/src/core/lib/gprpp/stat_posix.cc +49 -0
- data/src/core/lib/gprpp/stat_windows.cc +48 -0
- data/src/core/lib/gprpp/thd.h +2 -2
- data/src/core/lib/gprpp/thd_posix.cc +36 -36
- data/src/core/lib/http/parser.cc +46 -25
- data/src/core/lib/iomgr/error.cc +2 -1
- data/src/core/lib/iomgr/ev_epollex_linux.cc +8 -4
- data/src/core/lib/iomgr/exec_ctx.cc +1 -1
- data/src/core/lib/iomgr/executor/mpmcqueue.h +5 -5
- data/src/core/lib/iomgr/executor/threadpool.h +3 -3
- data/src/core/lib/iomgr/parse_address.cc +84 -6
- data/src/core/lib/iomgr/parse_address.h +20 -0
- data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +2 -1
- data/src/core/lib/iomgr/python_util.h +3 -3
- data/src/core/lib/iomgr/resolve_address_posix.cc +1 -5
- data/src/core/lib/iomgr/tcp_posix.cc +3 -2
- data/src/core/lib/iomgr/timer_custom.cc +2 -2
- data/src/core/lib/iomgr/unix_sockets_posix.cc +27 -15
- data/src/core/lib/iomgr/unix_sockets_posix.h +5 -0
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +7 -0
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +2 -2
- data/src/core/lib/json/json.h +2 -2
- data/src/core/lib/json/json_reader.cc +8 -4
- data/src/core/lib/json/json_util.h +167 -0
- data/src/core/lib/json/json_writer.cc +2 -1
- data/src/core/lib/security/authorization/mock_cel/cel_expr_builder_factory.h +3 -1
- data/src/core/lib/security/authorization/mock_cel/cel_expression.h +5 -4
- data/src/core/lib/security/authorization/mock_cel/cel_value.h +4 -0
- data/src/core/lib/security/authorization/mock_cel/evaluator_core.h +6 -6
- data/src/core/lib/security/authorization/mock_cel/flat_expr_builder.h +10 -9
- data/src/core/lib/security/context/security_context.h +3 -1
- data/src/core/lib/security/credentials/credentials.cc +1 -1
- data/src/core/lib/security/credentials/credentials.h +3 -3
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +208 -0
- data/src/core/lib/security/credentials/external/aws_request_signer.h +73 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +311 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.h +118 -0
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +136 -0
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +49 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +211 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +59 -0
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +51 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +5 -2
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +4 -3
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +5 -1
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +2 -2
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +35 -5
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +12 -8
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +78 -0
- data/src/core/lib/security/{certificate_provider.h → credentials/tls/grpc_tls_certificate_provider.h} +32 -18
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +77 -149
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +58 -187
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +16 -12
- data/src/core/lib/security/credentials/tls/tls_credentials.h +2 -2
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +2 -2
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +88 -0
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +70 -0
- data/src/core/lib/security/security_connector/load_system_roots.h +4 -0
- data/src/core/lib/security/security_connector/load_system_roots_linux.h +2 -0
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +2 -2
- data/src/core/lib/security/security_connector/security_connector.cc +1 -1
- data/src/core/lib/security/security_connector/security_connector.h +4 -2
- data/src/core/lib/security/security_connector/ssl_utils.h +4 -2
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +293 -275
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +106 -61
- data/src/core/lib/security/transport/security_handshaker.cc +1 -1
- data/src/core/lib/security/transport/server_auth_filter.cc +2 -1
- data/src/core/lib/security/util/json_util.h +1 -0
- data/src/core/lib/slice/slice.cc +7 -4
- data/src/core/lib/slice/slice_buffer.cc +2 -1
- data/src/core/lib/slice/slice_intern.cc +2 -2
- data/src/core/lib/surface/call.cc +9 -8
- data/src/core/lib/surface/completion_queue.cc +7 -6
- data/src/core/lib/surface/server.cc +4 -2
- data/src/core/lib/surface/server.h +2 -2
- data/src/core/lib/surface/validate_metadata.h +3 -0
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/authority_override.h +2 -0
- data/src/core/lib/transport/bdp_estimator.cc +1 -1
- data/src/core/lib/transport/byte_stream.h +3 -3
- data/src/core/lib/transport/connectivity_state.h +3 -3
- data/src/core/lib/transport/metadata.h +2 -2
- data/src/core/lib/transport/timeout_encoding.cc +4 -4
- data/src/core/lib/transport/transport.cc +5 -3
- data/src/core/lib/transport/transport.h +1 -1
- data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -4
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +4 -3
- data/src/core/tsi/fake_transport_security.cc +1 -0
- data/src/core/tsi/local_transport_security.cc +5 -1
- data/src/core/tsi/local_transport_security.h +6 -7
- data/src/core/tsi/ssl/session_cache/ssl_session.h +3 -0
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +4 -1
- data/src/core/tsi/ssl_transport_security.cc +14 -7
- data/src/core/tsi/ssl_transport_security.h +3 -0
- data/src/core/tsi/transport_security.cc +4 -2
- data/src/ruby/ext/grpc/extconf.rb +1 -1
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +22 -14
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +36 -24
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/third_party/abseil-cpp/absl/algorithm/container.h +59 -22
- data/third_party/abseil-cpp/absl/base/attributes.h +99 -38
- data/third_party/abseil-cpp/absl/base/call_once.h +1 -1
- data/third_party/abseil-cpp/absl/base/casts.h +9 -6
- data/third_party/abseil-cpp/absl/base/config.h +60 -17
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +428 -335
- data/third_party/abseil-cpp/absl/base/internal/bits.h +17 -16
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +5 -0
- data/third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h +398 -0
- data/third_party/abseil-cpp/absl/base/internal/invoke.h +4 -4
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +1 -1
- data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +29 -1
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +2 -2
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +7 -5
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +25 -38
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +19 -25
- data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +8 -0
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +28 -5
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.h +8 -0
- data/third_party/abseil-cpp/absl/base/internal/tsan_mutex_interface.h +3 -1
- data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +2 -2
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +3 -3
- data/third_party/abseil-cpp/absl/base/macros.h +36 -109
- data/third_party/abseil-cpp/absl/base/optimization.h +61 -1
- data/third_party/abseil-cpp/absl/base/options.h +31 -4
- data/third_party/abseil-cpp/absl/base/policy_checks.h +1 -1
- data/third_party/abseil-cpp/absl/base/thread_annotations.h +94 -39
- data/third_party/abseil-cpp/absl/container/fixed_array.h +42 -25
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +2 -1
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +33 -36
- data/third_party/abseil-cpp/absl/container/internal/common.h +6 -2
- data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +33 -8
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +49 -29
- data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +15 -0
- data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +24 -7
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +2 -1
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +35 -11
- data/third_party/abseil-cpp/absl/container/internal/have_sse.h +10 -9
- data/third_party/abseil-cpp/absl/container/internal/layout.h +7 -5
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +55 -34
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +5 -4
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +66 -16
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +4 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +13 -4
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +43 -24
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +12 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +10 -2
- data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +22 -1
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +0 -21
- data/third_party/abseil-cpp/absl/debugging/symbolize.cc +12 -1
- data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +101 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +100 -20
- data/third_party/abseil-cpp/absl/functional/bind_front.h +184 -0
- data/third_party/abseil-cpp/absl/functional/function_ref.h +1 -1
- data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +95 -0
- data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +2 -2
- data/third_party/abseil-cpp/absl/hash/hash.h +6 -5
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +73 -65
- data/third_party/abseil-cpp/absl/memory/memory.h +4 -0
- data/third_party/abseil-cpp/absl/meta/type_traits.h +2 -8
- data/third_party/abseil-cpp/absl/numeric/int128.cc +13 -27
- data/third_party/abseil-cpp/absl/numeric/int128.h +16 -15
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +51 -0
- data/third_party/abseil-cpp/absl/status/status.cc +4 -6
- data/third_party/abseil-cpp/absl/status/status.h +502 -113
- data/third_party/abseil-cpp/absl/status/status_payload_printer.cc +5 -10
- data/third_party/abseil-cpp/absl/strings/charconv.cc +2 -2
- data/third_party/abseil-cpp/absl/strings/cord.cc +91 -112
- data/third_party/abseil-cpp/absl/strings/cord.h +360 -205
- data/third_party/abseil-cpp/absl/strings/escaping.cc +9 -9
- data/third_party/abseil-cpp/absl/strings/internal/char_map.h +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +2 -2
- data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +2 -2
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +45 -23
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +222 -136
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +136 -64
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +14 -21
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +7 -14
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +31 -7
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +147 -135
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +999 -87
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +3 -3
- data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +4 -12
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +8 -6
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +13 -11
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +2 -2
- data/third_party/abseil-cpp/absl/strings/str_cat.cc +4 -4
- data/third_party/abseil-cpp/absl/strings/str_cat.h +1 -1
- data/third_party/abseil-cpp/absl/strings/str_format.h +289 -13
- data/third_party/abseil-cpp/absl/strings/str_split.cc +2 -2
- data/third_party/abseil-cpp/absl/strings/str_split.h +1 -0
- data/third_party/abseil-cpp/absl/strings/string_view.h +26 -19
- data/third_party/abseil-cpp/absl/strings/substitute.cc +5 -5
- data/third_party/abseil-cpp/absl/strings/substitute.h +32 -29
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +3 -3
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +3 -3
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +28 -28
- data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +4 -16
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +1 -1
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +8 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +2 -2
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +75 -64
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +15 -6
- data/third_party/abseil-cpp/absl/time/civil_time.cc +9 -9
- data/third_party/abseil-cpp/absl/time/clock.cc +3 -3
- data/third_party/abseil-cpp/absl/time/duration.cc +90 -59
- data/third_party/abseil-cpp/absl/time/format.cc +43 -36
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +26 -16
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +4 -2
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +136 -29
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +13 -21
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +136 -129
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +4 -5
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +8 -7
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +6 -6
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +2 -1
- data/third_party/abseil-cpp/absl/time/time.h +15 -16
- data/third_party/abseil-cpp/absl/types/internal/variant.h +4 -4
- data/third_party/abseil-cpp/absl/types/optional.h +9 -9
- data/third_party/abseil-cpp/absl/types/span.h +49 -36
- data/third_party/abseil-cpp/absl/utility/utility.h +2 -2
- data/third_party/address_sorting/include/address_sorting/address_sorting.h +2 -0
- data/third_party/boringssl-with-bazel/err_data.c +340 -336
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +173 -35
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +46 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +8 -2
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +90 -63
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +60 -60
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +179 -47
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +766 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +10 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +5 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +14 -14
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +24 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +7 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +5 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/des.h +6 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +3 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +202 -134
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +55 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +31 -23
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +435 -394
- data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +18 -5
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +35 -0
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +36 -1
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +42 -1
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +67 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +11 -14
- data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +216 -11
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +53 -11
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +133 -39
- data/third_party/upb/upb/def.c +2169 -0
- data/third_party/upb/upb/def.h +330 -0
- data/third_party/upb/upb/def.hpp +525 -0
- data/third_party/upb/upb/reflection.c +391 -0
- data/third_party/upb/upb/reflection.h +168 -0
- data/third_party/upb/upb/text_encode.c +398 -0
- data/third_party/upb/upb/text_encode.h +35 -0
- metadata +227 -37
- data/src/core/ext/filters/client_channel/lb_policy/xds/eds_drop.cc +0 -571
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.cc +0 -129
@@ -68,6 +68,7 @@ static void Unpack(uint64_t x, int *pid, int *read_fd, int *write_fd) {
|
|
68
68
|
// unimplemented.
|
69
69
|
// This is a namespace-scoped variable for correct zero-initialization.
|
70
70
|
static std::atomic<uint64_t> pid_and_fds; // initially 0, an invalid pid.
|
71
|
+
|
71
72
|
bool AddressIsReadable(const void *addr) {
|
72
73
|
absl::base_internal::ErrnoSaver errno_saver;
|
73
74
|
// We test whether a byte is readable by using write(). Normally, this would
|
@@ -86,7 +87,7 @@ bool AddressIsReadable(const void *addr) {
|
|
86
87
|
int pid;
|
87
88
|
int read_fd;
|
88
89
|
int write_fd;
|
89
|
-
uint64_t local_pid_and_fds = pid_and_fds.load(std::
|
90
|
+
uint64_t local_pid_and_fds = pid_and_fds.load(std::memory_order_acquire);
|
90
91
|
Unpack(local_pid_and_fds, &pid, &read_fd, &write_fd);
|
91
92
|
while (current_pid != pid) {
|
92
93
|
int p[2];
|
@@ -98,13 +99,13 @@ bool AddressIsReadable(const void *addr) {
|
|
98
99
|
fcntl(p[1], F_SETFD, FD_CLOEXEC);
|
99
100
|
uint64_t new_pid_and_fds = Pack(current_pid, p[0], p[1]);
|
100
101
|
if (pid_and_fds.compare_exchange_strong(
|
101
|
-
local_pid_and_fds, new_pid_and_fds, std::
|
102
|
+
local_pid_and_fds, new_pid_and_fds, std::memory_order_release,
|
102
103
|
std::memory_order_relaxed)) {
|
103
104
|
local_pid_and_fds = new_pid_and_fds; // fds exposed to other threads
|
104
105
|
} else { // fds not exposed to other threads; we can close them.
|
105
106
|
close(p[0]);
|
106
107
|
close(p[1]);
|
107
|
-
local_pid_and_fds = pid_and_fds.load(std::
|
108
|
+
local_pid_and_fds = pid_and_fds.load(std::memory_order_acquire);
|
108
109
|
}
|
109
110
|
Unpack(local_pid_and_fds, &pid, &read_fd, &write_fd);
|
110
111
|
}
|
@@ -124,7 +125,7 @@ bool AddressIsReadable(const void *addr) {
|
|
124
125
|
// If pid_and_fds contains the problematic file descriptors we just used,
|
125
126
|
// this call will forget them, and the loop will try again.
|
126
127
|
pid_and_fds.compare_exchange_strong(local_pid_and_fds, 0,
|
127
|
-
std::
|
128
|
+
std::memory_order_release,
|
128
129
|
std::memory_order_relaxed);
|
129
130
|
}
|
130
131
|
} while (errno == EBADF);
|
@@ -126,6 +126,7 @@ static const AbbrevPair kBuiltinTypeList[] = {
|
|
126
126
|
{"Dn", "std::nullptr_t", 0}, // i.e., decltype(nullptr)
|
127
127
|
{"Df", "decimal32", 0}, // IEEE 754r decimal floating point (32 bits)
|
128
128
|
{"Di", "char32_t", 0},
|
129
|
+
{"Du", "char8_t", 0},
|
129
130
|
{"Ds", "char16_t", 0},
|
130
131
|
{"Dh", "float16", 0}, // IEEE 754r half-precision float (16 bits)
|
131
132
|
{nullptr, nullptr, 0},
|
@@ -151,7 +152,7 @@ static const AbbrevPair kSubstitutionList[] = {
|
|
151
152
|
// frame, so every byte counts.
|
152
153
|
typedef struct {
|
153
154
|
int mangled_idx; // Cursor of mangled name.
|
154
|
-
int out_cur_idx; // Cursor of output
|
155
|
+
int out_cur_idx; // Cursor of output string.
|
155
156
|
int prev_name_idx; // For constructors/destructors.
|
156
157
|
signed int prev_name_length : 16; // For constructors/destructors.
|
157
158
|
signed int nest_level : 15; // For nested names.
|
@@ -172,8 +173,8 @@ static_assert(sizeof(ParseState) == 4 * sizeof(int),
|
|
172
173
|
// Only one copy of this exists for each call to Demangle, so the size of this
|
173
174
|
// struct is nearly inconsequential.
|
174
175
|
typedef struct {
|
175
|
-
const char *mangled_begin; // Beginning of input
|
176
|
-
char *out; // Beginning of output
|
176
|
+
const char *mangled_begin; // Beginning of input string.
|
177
|
+
char *out; // Beginning of output string.
|
177
178
|
int out_end_idx; // One past last allowed output character.
|
178
179
|
int recursion_depth; // For stack exhaustion prevention.
|
179
180
|
int steps; // Cap how much work we'll do, regardless of depth.
|
@@ -409,6 +410,7 @@ static bool IsFunctionCloneSuffix(const char *str) {
|
|
409
410
|
|
410
411
|
static bool EndsWith(State *state, const char chr) {
|
411
412
|
return state->parse_state.out_cur_idx > 0 &&
|
413
|
+
state->parse_state.out_cur_idx < state->out_end_idx &&
|
412
414
|
chr == state->out[state->parse_state.out_cur_idx - 1];
|
413
415
|
}
|
414
416
|
|
@@ -421,8 +423,10 @@ static void MaybeAppendWithLength(State *state, const char *const str,
|
|
421
423
|
if (str[0] == '<' && EndsWith(state, '<')) {
|
422
424
|
Append(state, " ", 1);
|
423
425
|
}
|
424
|
-
// Remember the last identifier name for ctors/dtors
|
425
|
-
|
426
|
+
// Remember the last identifier name for ctors/dtors,
|
427
|
+
// but only if we haven't yet overflown the buffer.
|
428
|
+
if (state->parse_state.out_cur_idx < state->out_end_idx &&
|
429
|
+
(IsAlpha(str[0]) || str[0] == '_')) {
|
426
430
|
state->parse_state.prev_name_idx = state->parse_state.out_cur_idx;
|
427
431
|
state->parse_state.prev_name_length = length;
|
428
432
|
}
|
@@ -962,6 +966,7 @@ static bool ParseOperatorName(State *state, int *arity) {
|
|
962
966
|
// ::= TT <type>
|
963
967
|
// ::= TI <type>
|
964
968
|
// ::= TS <type>
|
969
|
+
// ::= TH <type> # thread-local
|
965
970
|
// ::= Tc <call-offset> <call-offset> <(base) encoding>
|
966
971
|
// ::= GV <(object) name>
|
967
972
|
// ::= T <call-offset> <(base) encoding>
|
@@ -980,7 +985,7 @@ static bool ParseSpecialName(State *state) {
|
|
980
985
|
ComplexityGuard guard(state);
|
981
986
|
if (guard.IsTooComplex()) return false;
|
982
987
|
ParseState copy = state->parse_state;
|
983
|
-
if (ParseOneCharToken(state, 'T') && ParseCharClass(state, "
|
988
|
+
if (ParseOneCharToken(state, 'T') && ParseCharClass(state, "VTISH") &&
|
984
989
|
ParseType(state)) {
|
985
990
|
return true;
|
986
991
|
}
|
@@ -1077,20 +1082,28 @@ static bool ParseVOffset(State *state) {
|
|
1077
1082
|
return false;
|
1078
1083
|
}
|
1079
1084
|
|
1080
|
-
// <ctor-dtor-name> ::= C1 | C2 | C3
|
1085
|
+
// <ctor-dtor-name> ::= C1 | C2 | C3 | CI1 <base-class-type> | CI2
|
1086
|
+
// <base-class-type>
|
1081
1087
|
// ::= D0 | D1 | D2
|
1082
1088
|
// # GCC extensions: "unified" constructor/destructor. See
|
1083
|
-
// #
|
1089
|
+
// #
|
1090
|
+
// https://github.com/gcc-mirror/gcc/blob/7ad17b583c3643bd4557f29b8391ca7ef08391f5/gcc/cp/mangle.c#L1847
|
1084
1091
|
// ::= C4 | D4
|
1085
1092
|
static bool ParseCtorDtorName(State *state) {
|
1086
1093
|
ComplexityGuard guard(state);
|
1087
1094
|
if (guard.IsTooComplex()) return false;
|
1088
1095
|
ParseState copy = state->parse_state;
|
1089
|
-
if (ParseOneCharToken(state, 'C')
|
1090
|
-
|
1091
|
-
|
1092
|
-
|
1093
|
-
|
1096
|
+
if (ParseOneCharToken(state, 'C')) {
|
1097
|
+
if (ParseCharClass(state, "1234")) {
|
1098
|
+
const char *const prev_name =
|
1099
|
+
state->out + state->parse_state.prev_name_idx;
|
1100
|
+
MaybeAppendWithLength(state, prev_name,
|
1101
|
+
state->parse_state.prev_name_length);
|
1102
|
+
return true;
|
1103
|
+
} else if (ParseOneCharToken(state, 'I') && ParseCharClass(state, "12") &&
|
1104
|
+
ParseClassEnumType(state)) {
|
1105
|
+
return true;
|
1106
|
+
}
|
1094
1107
|
}
|
1095
1108
|
state->parse_state = copy;
|
1096
1109
|
|
@@ -1139,6 +1152,7 @@ static bool ParseDecltype(State *state) {
|
|
1139
1152
|
// ::= <decltype>
|
1140
1153
|
// ::= <substitution>
|
1141
1154
|
// ::= Dp <type> # pack expansion of (C++0x)
|
1155
|
+
// ::= Dv <num-elems> _ # GNU vector extension
|
1142
1156
|
//
|
1143
1157
|
static bool ParseType(State *state) {
|
1144
1158
|
ComplexityGuard guard(state);
|
@@ -1205,6 +1219,12 @@ static bool ParseType(State *state) {
|
|
1205
1219
|
return true;
|
1206
1220
|
}
|
1207
1221
|
|
1222
|
+
if (ParseTwoCharToken(state, "Dv") && ParseNumber(state, nullptr) &&
|
1223
|
+
ParseOneCharToken(state, '_')) {
|
1224
|
+
return true;
|
1225
|
+
}
|
1226
|
+
state->parse_state = copy;
|
1227
|
+
|
1208
1228
|
return false;
|
1209
1229
|
}
|
1210
1230
|
|
@@ -1253,13 +1273,42 @@ static bool ParseBuiltinType(State *state) {
|
|
1253
1273
|
return false;
|
1254
1274
|
}
|
1255
1275
|
|
1256
|
-
//
|
1276
|
+
// <exception-spec> ::= Do # non-throwing
|
1277
|
+
// exception-specification (e.g.,
|
1278
|
+
// noexcept, throw())
|
1279
|
+
// ::= DO <expression> E # computed (instantiation-dependent)
|
1280
|
+
// noexcept
|
1281
|
+
// ::= Dw <type>+ E # dynamic exception specification
|
1282
|
+
// with instantiation-dependent types
|
1283
|
+
static bool ParseExceptionSpec(State *state) {
|
1284
|
+
ComplexityGuard guard(state);
|
1285
|
+
if (guard.IsTooComplex()) return false;
|
1286
|
+
|
1287
|
+
if (ParseTwoCharToken(state, "Do")) return true;
|
1288
|
+
|
1289
|
+
ParseState copy = state->parse_state;
|
1290
|
+
if (ParseTwoCharToken(state, "DO") && ParseExpression(state) &&
|
1291
|
+
ParseOneCharToken(state, 'E')) {
|
1292
|
+
return true;
|
1293
|
+
}
|
1294
|
+
state->parse_state = copy;
|
1295
|
+
if (ParseTwoCharToken(state, "Dw") && OneOrMore(ParseType, state) &&
|
1296
|
+
ParseOneCharToken(state, 'E')) {
|
1297
|
+
return true;
|
1298
|
+
}
|
1299
|
+
state->parse_state = copy;
|
1300
|
+
|
1301
|
+
return false;
|
1302
|
+
}
|
1303
|
+
|
1304
|
+
// <function-type> ::= [exception-spec] F [Y] <bare-function-type> [O] E
|
1257
1305
|
static bool ParseFunctionType(State *state) {
|
1258
1306
|
ComplexityGuard guard(state);
|
1259
1307
|
if (guard.IsTooComplex()) return false;
|
1260
1308
|
ParseState copy = state->parse_state;
|
1261
|
-
if (ParseOneCharToken(state, 'F') &&
|
1309
|
+
if (Optional(ParseExceptionSpec(state)) && ParseOneCharToken(state, 'F') &&
|
1262
1310
|
Optional(ParseOneCharToken(state, 'Y')) && ParseBareFunctionType(state) &&
|
1311
|
+
Optional(ParseOneCharToken(state, 'O')) &&
|
1263
1312
|
ParseOneCharToken(state, 'E')) {
|
1264
1313
|
return true;
|
1265
1314
|
}
|
@@ -1887,7 +1936,8 @@ static bool Overflowed(const State *state) {
|
|
1887
1936
|
bool Demangle(const char *mangled, char *out, int out_size) {
|
1888
1937
|
State state;
|
1889
1938
|
InitState(&state, mangled, out, out_size);
|
1890
|
-
return ParseTopLevelMangledName(&state) && !Overflowed(&state)
|
1939
|
+
return ParseTopLevelMangledName(&state) && !Overflowed(&state) &&
|
1940
|
+
state.parse_state.out_cur_idx > 0;
|
1891
1941
|
}
|
1892
1942
|
|
1893
1943
|
} // namespace debugging_internal
|
@@ -74,6 +74,8 @@ static inline uintptr_t ComputeStackFrameSize(const T* low,
|
|
74
74
|
// checks (the strictness of which is controlled by the boolean parameter
|
75
75
|
// "STRICT_UNWINDING") to reduce the chance that a bad pointer is returned.
|
76
76
|
template<bool STRICT_UNWINDING, bool WITH_CONTEXT>
|
77
|
+
ABSL_ATTRIBUTE_NO_SANITIZE_ADDRESS // May read random elements from stack.
|
78
|
+
ABSL_ATTRIBUTE_NO_SANITIZE_MEMORY // May read random elements from stack.
|
77
79
|
static void **NextStackFrame(void **old_frame_pointer, const void *uc) {
|
78
80
|
void **new_frame_pointer = reinterpret_cast<void**>(*old_frame_pointer);
|
79
81
|
bool check_frame_size = true;
|
@@ -123,6 +125,8 @@ static void **NextStackFrame(void **old_frame_pointer, const void *uc) {
|
|
123
125
|
}
|
124
126
|
|
125
127
|
template <bool IS_STACK_FRAMES, bool IS_WITH_CONTEXT>
|
128
|
+
ABSL_ATTRIBUTE_NO_SANITIZE_ADDRESS // May read random elements from stack.
|
129
|
+
ABSL_ATTRIBUTE_NO_SANITIZE_MEMORY // May read random elements from stack.
|
126
130
|
static int UnwindImpl(void** result, int* sizes, int max_depth, int skip_count,
|
127
131
|
const void *ucp, int *min_dropped_frames) {
|
128
132
|
#ifdef __GNUC__
|
@@ -1,9 +1,18 @@
|
|
1
|
-
// Copyright
|
2
|
-
// All rights reserved.
|
1
|
+
// Copyright 2017 The Abseil Authors.
|
3
2
|
//
|
4
|
-
//
|
5
|
-
//
|
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
|
6
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
|
+
// This is inspired by Craig Silverstein's PowerPC stacktrace code.
|
7
16
|
|
8
17
|
#ifndef ABSL_DEBUGGING_INTERNAL_STACKTRACE_ARM_INL_H_
|
9
18
|
#define ABSL_DEBUGGING_INTERNAL_STACKTRACE_ARM_INL_H_
|
@@ -28,43 +28,62 @@
|
|
28
28
|
#define ABSL_STACKTRACE_INL_HEADER \
|
29
29
|
"absl/debugging/internal/stacktrace_win32-inl.inc"
|
30
30
|
|
31
|
+
#elif defined(__APPLE__)
|
32
|
+
// Thread local support required for UnwindImpl.
|
33
|
+
// Notes:
|
34
|
+
// * Xcode's clang did not support `thread_local` until version 8, and
|
35
|
+
// even then not for all iOS < 9.0.
|
36
|
+
// * Xcode 9.3 started disallowing `thread_local` for 32-bit iOS simulator
|
37
|
+
// targeting iOS 9.x.
|
38
|
+
// * Xcode 10 moves the deployment target check for iOS < 9.0 to link time
|
39
|
+
// making __has_feature unreliable there.
|
40
|
+
//
|
41
|
+
// Otherwise, `__has_feature` is only supported by Clang so it has be inside
|
42
|
+
// `defined(__APPLE__)` check.
|
43
|
+
#if __has_feature(cxx_thread_local) && \
|
44
|
+
!(TARGET_OS_IPHONE && __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_9_0)
|
45
|
+
#define ABSL_STACKTRACE_INL_HEADER \
|
46
|
+
"absl/debugging/internal/stacktrace_generic-inl.inc"
|
47
|
+
#endif
|
48
|
+
|
31
49
|
#elif defined(__linux__) && !defined(__ANDROID__)
|
32
50
|
|
33
|
-
#if
|
34
|
-
|
51
|
+
#if defined(NO_FRAME_POINTER) && \
|
52
|
+
(defined(__i386__) || defined(__x86_64__) || defined(__aarch64__))
|
53
|
+
// Note: The libunwind-based implementation is not available to open-source
|
54
|
+
// users.
|
35
55
|
#define ABSL_STACKTRACE_INL_HEADER \
|
36
|
-
|
37
|
-
#
|
38
|
-
#
|
39
|
-
|
40
|
-
# elif defined(__aarch64__)
|
41
|
-
#define ABSL_STACKTRACE_INL_HEADER \
|
42
|
-
"absl/debugging/internal/stacktrace_aarch64-inl.inc"
|
43
|
-
# elif defined(__arm__)
|
56
|
+
"absl/debugging/internal/stacktrace_libunwind-inl.inc"
|
57
|
+
#define STACKTRACE_USES_LIBUNWIND 1
|
58
|
+
#elif defined(NO_FRAME_POINTER) && defined(__has_include)
|
59
|
+
#if __has_include(<execinfo.h>)
|
44
60
|
// Note: When using glibc this may require -funwind-tables to function properly.
|
45
61
|
#define ABSL_STACKTRACE_INL_HEADER \
|
46
62
|
"absl/debugging/internal/stacktrace_generic-inl.inc"
|
47
|
-
#
|
63
|
+
#endif
|
64
|
+
#elif defined(__i386__) || defined(__x86_64__)
|
48
65
|
#define ABSL_STACKTRACE_INL_HEADER \
|
49
|
-
|
50
|
-
#
|
51
|
-
#else // defined(NO_FRAME_POINTER)
|
52
|
-
# if defined(__i386__) || defined(__x86_64__) || defined(__aarch64__)
|
66
|
+
"absl/debugging/internal/stacktrace_x86-inl.inc"
|
67
|
+
#elif defined(__ppc__) || defined(__PPC__)
|
53
68
|
#define ABSL_STACKTRACE_INL_HEADER \
|
54
|
-
|
55
|
-
#
|
69
|
+
"absl/debugging/internal/stacktrace_powerpc-inl.inc"
|
70
|
+
#elif defined(__aarch64__)
|
56
71
|
#define ABSL_STACKTRACE_INL_HEADER \
|
57
|
-
|
58
|
-
#
|
72
|
+
"absl/debugging/internal/stacktrace_aarch64-inl.inc"
|
73
|
+
#elif defined(__has_include)
|
74
|
+
#if __has_include(<execinfo.h>)
|
75
|
+
// Note: When using glibc this may require -funwind-tables to function properly.
|
59
76
|
#define ABSL_STACKTRACE_INL_HEADER \
|
60
|
-
|
61
|
-
#
|
62
|
-
#endif
|
77
|
+
"absl/debugging/internal/stacktrace_generic-inl.inc"
|
78
|
+
#endif
|
79
|
+
#endif
|
63
80
|
|
64
|
-
#
|
81
|
+
#endif
|
82
|
+
|
83
|
+
// Fallback to the empty implementation.
|
84
|
+
#if !defined(ABSL_STACKTRACE_INL_HEADER)
|
65
85
|
#define ABSL_STACKTRACE_INL_HEADER \
|
66
86
|
"absl/debugging/internal/stacktrace_unimplemented-inl.inc"
|
67
|
-
|
68
87
|
#endif
|
69
88
|
|
70
89
|
#endif // ABSL_DEBUGGING_INTERNAL_STACKTRACE_CONFIG_H_
|
@@ -1,7 +1,16 @@
|
|
1
|
-
// Copyright
|
2
|
-
// All rights reserved.
|
1
|
+
// Copyright 2017 The Abseil Authors.
|
3
2
|
//
|
4
|
-
//
|
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.
|
5
14
|
//
|
6
15
|
// Portable implementation - just use glibc
|
7
16
|
//
|
@@ -46,11 +46,19 @@ typedef USHORT NTAPI RtlCaptureStackBackTrace_Function(
|
|
46
46
|
OUT PVOID *backtrace,
|
47
47
|
OUT PULONG backtrace_hash);
|
48
48
|
|
49
|
+
// It is not possible to load RtlCaptureStackBackTrace at static init time in
|
50
|
+
// UWP. CaptureStackBackTrace is the public version of RtlCaptureStackBackTrace
|
51
|
+
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) && \
|
52
|
+
!WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
|
53
|
+
static RtlCaptureStackBackTrace_Function* const RtlCaptureStackBackTrace_fn =
|
54
|
+
&::CaptureStackBackTrace;
|
55
|
+
#else
|
49
56
|
// Load the function we need at static init time, where we don't have
|
50
57
|
// to worry about someone else holding the loader's lock.
|
51
58
|
static RtlCaptureStackBackTrace_Function* const RtlCaptureStackBackTrace_fn =
|
52
|
-
|
53
|
-
|
59
|
+
(RtlCaptureStackBackTrace_Function*)GetProcAddress(
|
60
|
+
GetModuleHandleA("ntdll.dll"), "RtlCaptureStackBackTrace");
|
61
|
+
#endif // WINAPI_PARTITION_APP && !WINAPI_PARTITION_DESKTOP
|
54
62
|
|
55
63
|
template <bool IS_STACK_FRAMES, bool IS_WITH_CONTEXT>
|
56
64
|
static int UnwindImpl(void** result, int* sizes, int max_depth, int skip_count,
|
@@ -18,10 +18,13 @@
|
|
18
18
|
#ifndef ABSL_DEBUGGING_INTERNAL_SYMBOLIZE_H_
|
19
19
|
#define ABSL_DEBUGGING_INTERNAL_SYMBOLIZE_H_
|
20
20
|
|
21
|
+
#ifdef __cplusplus
|
22
|
+
|
21
23
|
#include <cstddef>
|
22
24
|
#include <cstdint>
|
23
25
|
|
24
26
|
#include "absl/base/config.h"
|
27
|
+
#include "absl/strings/string_view.h"
|
25
28
|
|
26
29
|
#ifdef ABSL_INTERNAL_HAVE_ELF_SYMBOLIZE
|
27
30
|
#error ABSL_INTERNAL_HAVE_ELF_SYMBOLIZE cannot be directly set
|
@@ -45,7 +48,7 @@ namespace debugging_internal {
|
|
45
48
|
//
|
46
49
|
// This is not async-signal-safe.
|
47
50
|
bool ForEachSection(int fd,
|
48
|
-
const std::function<bool(
|
51
|
+
const std::function<bool(absl::string_view name,
|
49
52
|
const ElfW(Shdr) &)>& callback);
|
50
53
|
|
51
54
|
// Gets the section header for the given name, if it exists. Returns true on
|
@@ -59,6 +62,12 @@ ABSL_NAMESPACE_END
|
|
59
62
|
|
60
63
|
#endif // ABSL_INTERNAL_HAVE_ELF_SYMBOLIZE
|
61
64
|
|
65
|
+
#ifdef ABSL_INTERNAL_HAVE_DARWIN_SYMBOLIZE
|
66
|
+
#error ABSL_INTERNAL_HAVE_DARWIN_SYMBOLIZE cannot be directly set
|
67
|
+
#elif defined(__APPLE__)
|
68
|
+
#define ABSL_INTERNAL_HAVE_DARWIN_SYMBOLIZE 1
|
69
|
+
#endif
|
70
|
+
|
62
71
|
namespace absl {
|
63
72
|
ABSL_NAMESPACE_BEGIN
|
64
73
|
namespace debugging_internal {
|
@@ -125,4 +134,16 @@ bool GetFileMappingHint(const void** start,
|
|
125
134
|
ABSL_NAMESPACE_END
|
126
135
|
} // namespace absl
|
127
136
|
|
137
|
+
#endif // __cplusplus
|
138
|
+
|
139
|
+
#include <stdbool.h>
|
140
|
+
|
141
|
+
#ifdef __cplusplus
|
142
|
+
extern "C"
|
143
|
+
#endif // __cplusplus
|
144
|
+
|
145
|
+
bool
|
146
|
+
AbslInternalGetFileMappingHint(const void** start, const void** end,
|
147
|
+
uint64_t* offset, const char** filename);
|
148
|
+
|
128
149
|
#endif // ABSL_DEBUGGING_INTERNAL_SYMBOLIZE_H_
|
@@ -76,15 +76,6 @@ const void *VDSOSupport::Init() {
|
|
76
76
|
}
|
77
77
|
#endif // __GLIBC_PREREQ(2, 16)
|
78
78
|
if (vdso_base_.load(std::memory_order_relaxed) == kInvalidBase) {
|
79
|
-
// Valgrind zaps AT_SYSINFO_EHDR and friends from the auxv[]
|
80
|
-
// on stack, and so glibc works as if VDSO was not present.
|
81
|
-
// But going directly to kernel via /proc/self/auxv below bypasses
|
82
|
-
// Valgrind zapping. So we check for Valgrind separately.
|
83
|
-
if (RunningOnValgrind()) {
|
84
|
-
vdso_base_.store(nullptr, std::memory_order_relaxed);
|
85
|
-
getcpu_fn_.store(&GetCPUViaSyscall, std::memory_order_relaxed);
|
86
|
-
return nullptr;
|
87
|
-
}
|
88
79
|
int fd = open("/proc/self/auxv", O_RDONLY);
|
89
80
|
if (fd == -1) {
|
90
81
|
// Kernel too old to have a VDSO.
|
@@ -175,18 +166,6 @@ int GetCPU() {
|
|
175
166
|
return ret_code == 0 ? cpu : ret_code;
|
176
167
|
}
|
177
168
|
|
178
|
-
// We need to make sure VDSOSupport::Init() is called before
|
179
|
-
// InitGoogle() does any setuid or chroot calls. If VDSOSupport
|
180
|
-
// is used in any global constructor, this will happen, since
|
181
|
-
// VDSOSupport's constructor calls Init. But if not, we need to
|
182
|
-
// ensure it here, with a global constructor of our own. This
|
183
|
-
// is an allowed exception to the normal rule against non-trivial
|
184
|
-
// global constructors.
|
185
|
-
static class VDSOInitHelper {
|
186
|
-
public:
|
187
|
-
VDSOInitHelper() { VDSOSupport::Init(); }
|
188
|
-
} vdso_init_helper;
|
189
|
-
|
190
169
|
} // namespace debugging_internal
|
191
170
|
ABSL_NAMESPACE_END
|
192
171
|
} // namespace absl
|