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.

Files changed (533) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +342 -134
  3. data/include/grpc/grpc.h +1 -2
  4. data/include/grpc/grpc_security.h +149 -172
  5. data/include/grpc/impl/codegen/grpc_types.h +9 -2
  6. data/include/grpc/impl/codegen/port_platform.h +22 -55
  7. data/src/core/ext/filters/client_channel/client_channel.cc +11 -34
  8. data/src/core/ext/filters/client_channel/config_selector.h +2 -3
  9. data/src/core/ext/filters/client_channel/health/health_check_client.cc +4 -1
  10. data/src/core/ext/filters/client_channel/health/health_check_client.h +2 -2
  11. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +1 -1
  12. data/src/core/ext/filters/client_channel/lb_policy.cc +5 -1
  13. data/src/core/ext/filters/client_channel/lb_policy.h +3 -3
  14. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +1 -1
  15. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +1 -1
  16. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +80 -71
  17. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +3 -1
  18. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +2 -2
  19. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +47 -17
  20. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +2 -2
  21. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +8 -5
  22. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +3 -3
  23. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +1 -1
  24. data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +16 -243
  25. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +53 -17
  26. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +809 -0
  27. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +20 -25
  28. data/src/core/ext/filters/client_channel/resolver.cc +3 -1
  29. data/src/core/ext/filters/client_channel/resolver.h +4 -1
  30. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +1 -1
  31. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +1 -1
  32. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +1 -1
  33. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +1 -1
  34. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +1 -1
  35. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +20 -0
  36. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +66 -7
  37. data/src/core/ext/filters/client_channel/resolver_registry.cc +4 -4
  38. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +13 -25
  39. data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +1 -1
  40. data/src/core/ext/filters/client_channel/resolving_lb_policy.h +2 -2
  41. data/src/core/ext/filters/client_channel/retry_throttle.h +1 -1
  42. data/src/core/ext/filters/client_channel/server_address.h +0 -4
  43. data/src/core/ext/filters/client_channel/service_config.cc +3 -1
  44. data/src/core/ext/filters/client_channel/service_config.h +1 -1
  45. data/src/core/ext/filters/client_channel/subchannel.cc +18 -15
  46. data/src/core/ext/filters/client_channel/subchannel.h +2 -2
  47. data/src/core/ext/filters/client_channel/subchannel_interface.h +7 -15
  48. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +6 -2
  49. data/src/core/ext/filters/deadline/deadline_filter.cc +83 -77
  50. data/src/core/ext/filters/deadline/deadline_filter.h +7 -11
  51. data/src/core/ext/filters/http/client/http_client_filter.cc +1 -1
  52. data/src/core/ext/filters/http/server/http_server_filter.cc +3 -3
  53. data/src/core/ext/filters/max_age/max_age_filter.cc +1 -1
  54. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +1 -1
  55. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +17 -3
  56. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +7 -7
  57. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +4 -24
  58. data/src/core/ext/transport/chttp2/transport/flow_control.h +2 -2
  59. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +2 -1
  60. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +12 -8
  61. data/src/core/ext/transport/chttp2/transport/internal.h +0 -1
  62. data/src/core/ext/transport/chttp2/transport/parsing.cc +2 -1
  63. data/src/core/ext/transport/chttp2/transport/writing.cc +1 -2
  64. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +38 -0
  65. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +30 -0
  66. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +41 -0
  67. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +35 -0
  68. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +254 -0
  69. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +105 -0
  70. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +100 -0
  71. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +45 -0
  72. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +558 -0
  73. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +145 -0
  74. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +53 -0
  75. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +35 -0
  76. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +133 -0
  77. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +35 -0
  78. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +127 -0
  79. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +65 -0
  80. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +56 -0
  81. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +35 -0
  82. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +266 -0
  83. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +125 -0
  84. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +143 -0
  85. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +55 -0
  86. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +56 -0
  87. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +35 -0
  88. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +66 -0
  89. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +40 -0
  90. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +263 -0
  91. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +100 -0
  92. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +233 -0
  93. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +70 -0
  94. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +56 -0
  95. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +35 -0
  96. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +228 -0
  97. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +80 -0
  98. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +46 -0
  99. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +35 -0
  100. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +59 -0
  101. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +35 -0
  102. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +55 -0
  103. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +35 -0
  104. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +110 -0
  105. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +50 -0
  106. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +113 -0
  107. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +50 -0
  108. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +146 -0
  109. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +55 -0
  110. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +50 -0
  111. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +35 -0
  112. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +190 -0
  113. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +55 -0
  114. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +185 -0
  115. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +65 -0
  116. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +62 -0
  117. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +40 -0
  118. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +97 -0
  119. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +40 -0
  120. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +915 -0
  121. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +280 -0
  122. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +71 -0
  123. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +45 -0
  124. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +64 -0
  125. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +40 -0
  126. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +511 -0
  127. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +115 -0
  128. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +48 -0
  129. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +30 -0
  130. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +166 -0
  131. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +55 -0
  132. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +105 -0
  133. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +45 -0
  134. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +249 -0
  135. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +60 -0
  136. data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c +72 -0
  137. data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.h +35 -0
  138. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +60 -0
  139. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +35 -0
  140. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +152 -0
  141. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +60 -0
  142. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +83 -0
  143. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.h +35 -0
  144. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +82 -0
  145. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.h +35 -0
  146. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +83 -0
  147. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +40 -0
  148. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +86 -0
  149. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.h +35 -0
  150. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c +74 -0
  151. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.h +35 -0
  152. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +64 -0
  153. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +40 -0
  154. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +54 -0
  155. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +35 -0
  156. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +53 -0
  157. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +35 -0
  158. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +73 -0
  159. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +45 -0
  160. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +72 -0
  161. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +40 -0
  162. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +81 -0
  163. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +45 -0
  164. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +92 -0
  165. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +65 -0
  166. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +95 -0
  167. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +55 -0
  168. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +34 -0
  169. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h +30 -0
  170. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +59 -0
  171. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +40 -0
  172. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +54 -0
  173. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +45 -0
  174. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +47 -0
  175. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +35 -0
  176. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +40 -0
  177. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +30 -0
  178. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +61 -0
  179. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +45 -0
  180. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +38 -0
  181. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +35 -0
  182. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +386 -0
  183. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +165 -0
  184. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +39 -0
  185. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +35 -0
  186. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +37 -0
  187. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +35 -0
  188. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +65 -0
  189. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +50 -0
  190. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +39 -0
  191. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +35 -0
  192. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +66 -0
  193. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +75 -0
  194. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +42 -0
  195. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +35 -0
  196. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +70 -0
  197. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +45 -0
  198. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +56 -0
  199. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +35 -0
  200. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +33 -0
  201. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +30 -0
  202. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +49 -0
  203. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +35 -0
  204. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +43 -0
  205. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +35 -0
  206. data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.c +42 -0
  207. data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.h +35 -0
  208. data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.c +62 -0
  209. data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.h +40 -0
  210. data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.c +45 -0
  211. data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.h +40 -0
  212. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.c +49 -0
  213. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.h +35 -0
  214. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.c +68 -0
  215. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.h +40 -0
  216. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.c +51 -0
  217. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.h +35 -0
  218. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +307 -0
  219. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +145 -0
  220. data/src/core/ext/xds/certificate_provider_factory.h +7 -5
  221. data/src/core/ext/xds/certificate_provider_store.cc +84 -0
  222. data/src/core/ext/xds/certificate_provider_store.h +65 -8
  223. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +119 -0
  224. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +72 -0
  225. data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.cc +28 -140
  226. data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.h +6 -4
  227. data/src/core/ext/xds/xds_api.cc +241 -718
  228. data/src/core/ext/xds/xds_api.h +50 -9
  229. data/src/core/ext/xds/xds_bootstrap.cc +172 -25
  230. data/src/core/ext/xds/xds_bootstrap.h +23 -7
  231. data/src/core/ext/xds/xds_certificate_provider.cc +240 -0
  232. data/src/core/ext/xds/xds_certificate_provider.h +74 -0
  233. data/src/core/ext/xds/xds_client.cc +161 -128
  234. data/src/core/ext/xds/xds_client.h +12 -11
  235. data/src/core/ext/xds/xds_client_stats.cc +41 -4
  236. data/src/core/ext/xds/xds_client_stats.h +2 -2
  237. data/src/core/lib/channel/channel_args.cc +2 -1
  238. data/src/core/lib/channel/channel_trace.cc +4 -2
  239. data/src/core/lib/channel/channelz.h +2 -2
  240. data/src/core/lib/channel/handshaker.h +2 -2
  241. data/src/core/lib/compression/compression.cc +8 -4
  242. data/src/core/lib/compression/compression_internal.cc +10 -5
  243. data/src/core/lib/compression/compression_internal.h +2 -1
  244. data/src/core/lib/compression/stream_compression_identity.cc +1 -3
  245. data/src/core/lib/debug/stats_data.cc +1 -0
  246. data/src/core/lib/gpr/cpu_iphone.cc +10 -2
  247. data/src/core/lib/gpr/log_linux.cc +17 -3
  248. data/src/core/lib/gpr/log_posix.cc +13 -1
  249. data/src/core/lib/gpr/log_windows.cc +16 -4
  250. data/src/core/lib/gpr/murmur_hash.cc +1 -1
  251. data/src/core/lib/gpr/string.cc +1 -1
  252. data/src/core/lib/gpr/time_precise.cc +3 -2
  253. data/src/core/lib/gpr/tls.h +4 -0
  254. data/src/core/lib/gpr/tls_msvc.h +2 -0
  255. data/src/core/lib/gpr/tls_stdcpp.h +48 -0
  256. data/src/core/lib/gpr/useful.h +5 -4
  257. data/src/core/lib/gprpp/dual_ref_counted.h +44 -49
  258. data/src/core/lib/gprpp/examine_stack.cc +43 -0
  259. data/src/core/lib/gprpp/examine_stack.h +46 -0
  260. data/src/core/lib/gprpp/fork.cc +2 -2
  261. data/src/core/lib/gprpp/manual_constructor.h +1 -1
  262. data/src/core/lib/gprpp/orphanable.h +4 -8
  263. data/src/core/lib/gprpp/ref_counted.h +40 -46
  264. data/src/core/lib/gprpp/ref_counted_ptr.h +9 -11
  265. data/src/core/lib/{security/authorization/mock_cel/statusor.h → gprpp/stat.h} +13 -25
  266. data/src/core/lib/gprpp/stat_posix.cc +49 -0
  267. data/src/core/lib/gprpp/stat_windows.cc +48 -0
  268. data/src/core/lib/gprpp/thd.h +2 -2
  269. data/src/core/lib/gprpp/thd_posix.cc +36 -36
  270. data/src/core/lib/http/parser.cc +46 -25
  271. data/src/core/lib/iomgr/error.cc +2 -1
  272. data/src/core/lib/iomgr/ev_epollex_linux.cc +8 -4
  273. data/src/core/lib/iomgr/exec_ctx.cc +1 -1
  274. data/src/core/lib/iomgr/executor/mpmcqueue.h +5 -5
  275. data/src/core/lib/iomgr/executor/threadpool.h +3 -3
  276. data/src/core/lib/iomgr/parse_address.cc +84 -6
  277. data/src/core/lib/iomgr/parse_address.h +20 -0
  278. data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +2 -1
  279. data/src/core/lib/iomgr/python_util.h +3 -3
  280. data/src/core/lib/iomgr/resolve_address_posix.cc +1 -5
  281. data/src/core/lib/iomgr/tcp_posix.cc +3 -2
  282. data/src/core/lib/iomgr/timer_custom.cc +2 -2
  283. data/src/core/lib/iomgr/unix_sockets_posix.cc +27 -15
  284. data/src/core/lib/iomgr/unix_sockets_posix.h +5 -0
  285. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +7 -0
  286. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +2 -2
  287. data/src/core/lib/json/json.h +2 -2
  288. data/src/core/lib/json/json_reader.cc +8 -4
  289. data/src/core/lib/json/json_util.h +167 -0
  290. data/src/core/lib/json/json_writer.cc +2 -1
  291. data/src/core/lib/security/authorization/mock_cel/cel_expr_builder_factory.h +3 -1
  292. data/src/core/lib/security/authorization/mock_cel/cel_expression.h +5 -4
  293. data/src/core/lib/security/authorization/mock_cel/cel_value.h +4 -0
  294. data/src/core/lib/security/authorization/mock_cel/evaluator_core.h +6 -6
  295. data/src/core/lib/security/authorization/mock_cel/flat_expr_builder.h +10 -9
  296. data/src/core/lib/security/context/security_context.h +3 -1
  297. data/src/core/lib/security/credentials/credentials.cc +1 -1
  298. data/src/core/lib/security/credentials/credentials.h +3 -3
  299. data/src/core/lib/security/credentials/external/aws_request_signer.cc +208 -0
  300. data/src/core/lib/security/credentials/external/aws_request_signer.h +73 -0
  301. data/src/core/lib/security/credentials/external/external_account_credentials.cc +311 -0
  302. data/src/core/lib/security/credentials/external/external_account_credentials.h +118 -0
  303. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +136 -0
  304. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +49 -0
  305. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +211 -0
  306. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +59 -0
  307. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +51 -0
  308. data/src/core/lib/security/credentials/jwt/json_token.cc +5 -2
  309. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +4 -3
  310. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +5 -1
  311. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +2 -2
  312. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +35 -5
  313. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +12 -8
  314. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +78 -0
  315. data/src/core/lib/security/{certificate_provider.h → credentials/tls/grpc_tls_certificate_provider.h} +32 -18
  316. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +77 -149
  317. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +58 -187
  318. data/src/core/lib/security/credentials/tls/tls_credentials.cc +16 -12
  319. data/src/core/lib/security/credentials/tls/tls_credentials.h +2 -2
  320. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +2 -2
  321. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +88 -0
  322. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +70 -0
  323. data/src/core/lib/security/security_connector/load_system_roots.h +4 -0
  324. data/src/core/lib/security/security_connector/load_system_roots_linux.h +2 -0
  325. data/src/core/lib/security/security_connector/local/local_security_connector.cc +2 -2
  326. data/src/core/lib/security/security_connector/security_connector.cc +1 -1
  327. data/src/core/lib/security/security_connector/security_connector.h +4 -2
  328. data/src/core/lib/security/security_connector/ssl_utils.h +4 -2
  329. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +293 -275
  330. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +106 -61
  331. data/src/core/lib/security/transport/security_handshaker.cc +1 -1
  332. data/src/core/lib/security/transport/server_auth_filter.cc +2 -1
  333. data/src/core/lib/security/util/json_util.h +1 -0
  334. data/src/core/lib/slice/slice.cc +7 -4
  335. data/src/core/lib/slice/slice_buffer.cc +2 -1
  336. data/src/core/lib/slice/slice_intern.cc +2 -2
  337. data/src/core/lib/surface/call.cc +9 -8
  338. data/src/core/lib/surface/completion_queue.cc +7 -6
  339. data/src/core/lib/surface/server.cc +4 -2
  340. data/src/core/lib/surface/server.h +2 -2
  341. data/src/core/lib/surface/validate_metadata.h +3 -0
  342. data/src/core/lib/surface/version.cc +2 -2
  343. data/src/core/lib/transport/authority_override.h +2 -0
  344. data/src/core/lib/transport/bdp_estimator.cc +1 -1
  345. data/src/core/lib/transport/byte_stream.h +3 -3
  346. data/src/core/lib/transport/connectivity_state.h +3 -3
  347. data/src/core/lib/transport/metadata.h +2 -2
  348. data/src/core/lib/transport/timeout_encoding.cc +4 -4
  349. data/src/core/lib/transport/transport.cc +5 -3
  350. data/src/core/lib/transport/transport.h +1 -1
  351. data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -4
  352. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +4 -3
  353. data/src/core/tsi/fake_transport_security.cc +1 -0
  354. data/src/core/tsi/local_transport_security.cc +5 -1
  355. data/src/core/tsi/local_transport_security.h +6 -7
  356. data/src/core/tsi/ssl/session_cache/ssl_session.h +3 -0
  357. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +4 -1
  358. data/src/core/tsi/ssl_transport_security.cc +14 -7
  359. data/src/core/tsi/ssl_transport_security.h +3 -0
  360. data/src/core/tsi/transport_security.cc +4 -2
  361. data/src/ruby/ext/grpc/extconf.rb +1 -1
  362. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +22 -14
  363. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +36 -24
  364. data/src/ruby/lib/grpc/version.rb +1 -1
  365. data/third_party/abseil-cpp/absl/algorithm/container.h +59 -22
  366. data/third_party/abseil-cpp/absl/base/attributes.h +99 -38
  367. data/third_party/abseil-cpp/absl/base/call_once.h +1 -1
  368. data/third_party/abseil-cpp/absl/base/casts.h +9 -6
  369. data/third_party/abseil-cpp/absl/base/config.h +60 -17
  370. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +428 -335
  371. data/third_party/abseil-cpp/absl/base/internal/bits.h +17 -16
  372. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +5 -0
  373. data/third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h +398 -0
  374. data/third_party/abseil-cpp/absl/base/internal/invoke.h +4 -4
  375. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +1 -1
  376. data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +29 -1
  377. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +2 -2
  378. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +7 -5
  379. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +25 -38
  380. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +19 -25
  381. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +8 -0
  382. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +28 -5
  383. data/third_party/abseil-cpp/absl/base/internal/sysinfo.h +8 -0
  384. data/third_party/abseil-cpp/absl/base/internal/tsan_mutex_interface.h +3 -1
  385. data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +2 -2
  386. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +3 -3
  387. data/third_party/abseil-cpp/absl/base/macros.h +36 -109
  388. data/third_party/abseil-cpp/absl/base/optimization.h +61 -1
  389. data/third_party/abseil-cpp/absl/base/options.h +31 -4
  390. data/third_party/abseil-cpp/absl/base/policy_checks.h +1 -1
  391. data/third_party/abseil-cpp/absl/base/thread_annotations.h +94 -39
  392. data/third_party/abseil-cpp/absl/container/fixed_array.h +42 -25
  393. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +2 -1
  394. data/third_party/abseil-cpp/absl/container/inlined_vector.h +33 -36
  395. data/third_party/abseil-cpp/absl/container/internal/common.h +6 -2
  396. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +33 -8
  397. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +49 -29
  398. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +15 -0
  399. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +24 -7
  400. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +2 -1
  401. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +35 -11
  402. data/third_party/abseil-cpp/absl/container/internal/have_sse.h +10 -9
  403. data/third_party/abseil-cpp/absl/container/internal/layout.h +7 -5
  404. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +55 -34
  405. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +5 -4
  406. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +66 -16
  407. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +4 -0
  408. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +13 -4
  409. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +43 -24
  410. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +12 -3
  411. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +10 -2
  412. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +22 -1
  413. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +0 -21
  414. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +12 -1
  415. data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +101 -0
  416. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +100 -20
  417. data/third_party/abseil-cpp/absl/functional/bind_front.h +184 -0
  418. data/third_party/abseil-cpp/absl/functional/function_ref.h +1 -1
  419. data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +95 -0
  420. data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +2 -2
  421. data/third_party/abseil-cpp/absl/hash/hash.h +6 -5
  422. data/third_party/abseil-cpp/absl/hash/internal/hash.h +73 -65
  423. data/third_party/abseil-cpp/absl/memory/memory.h +4 -0
  424. data/third_party/abseil-cpp/absl/meta/type_traits.h +2 -8
  425. data/third_party/abseil-cpp/absl/numeric/int128.cc +13 -27
  426. data/third_party/abseil-cpp/absl/numeric/int128.h +16 -15
  427. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +51 -0
  428. data/third_party/abseil-cpp/absl/status/status.cc +4 -6
  429. data/third_party/abseil-cpp/absl/status/status.h +502 -113
  430. data/third_party/abseil-cpp/absl/status/status_payload_printer.cc +5 -10
  431. data/third_party/abseil-cpp/absl/strings/charconv.cc +2 -2
  432. data/third_party/abseil-cpp/absl/strings/cord.cc +91 -112
  433. data/third_party/abseil-cpp/absl/strings/cord.h +360 -205
  434. data/third_party/abseil-cpp/absl/strings/escaping.cc +9 -9
  435. data/third_party/abseil-cpp/absl/strings/internal/char_map.h +1 -1
  436. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +1 -1
  437. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +2 -2
  438. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +2 -2
  439. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +45 -23
  440. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +222 -136
  441. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +136 -64
  442. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +1 -1
  443. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +14 -21
  444. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +7 -14
  445. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +31 -7
  446. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +147 -135
  447. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +999 -87
  448. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +3 -3
  449. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +4 -12
  450. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +8 -6
  451. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +13 -11
  452. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +2 -2
  453. data/third_party/abseil-cpp/absl/strings/str_cat.cc +4 -4
  454. data/third_party/abseil-cpp/absl/strings/str_cat.h +1 -1
  455. data/third_party/abseil-cpp/absl/strings/str_format.h +289 -13
  456. data/third_party/abseil-cpp/absl/strings/str_split.cc +2 -2
  457. data/third_party/abseil-cpp/absl/strings/str_split.h +1 -0
  458. data/third_party/abseil-cpp/absl/strings/string_view.h +26 -19
  459. data/third_party/abseil-cpp/absl/strings/substitute.cc +5 -5
  460. data/third_party/abseil-cpp/absl/strings/substitute.h +32 -29
  461. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +3 -3
  462. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +3 -3
  463. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +28 -28
  464. data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +4 -16
  465. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +1 -1
  466. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +8 -0
  467. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +2 -2
  468. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +75 -64
  469. data/third_party/abseil-cpp/absl/synchronization/mutex.h +15 -6
  470. data/third_party/abseil-cpp/absl/time/civil_time.cc +9 -9
  471. data/third_party/abseil-cpp/absl/time/clock.cc +3 -3
  472. data/third_party/abseil-cpp/absl/time/duration.cc +90 -59
  473. data/third_party/abseil-cpp/absl/time/format.cc +43 -36
  474. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +26 -16
  475. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +4 -2
  476. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +1 -1
  477. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +136 -29
  478. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +13 -21
  479. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +1 -1
  480. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +136 -129
  481. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +4 -5
  482. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +8 -7
  483. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +6 -6
  484. data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +2 -1
  485. data/third_party/abseil-cpp/absl/time/time.h +15 -16
  486. data/third_party/abseil-cpp/absl/types/internal/variant.h +4 -4
  487. data/third_party/abseil-cpp/absl/types/optional.h +9 -9
  488. data/third_party/abseil-cpp/absl/types/span.h +49 -36
  489. data/third_party/abseil-cpp/absl/utility/utility.h +2 -2
  490. data/third_party/address_sorting/include/address_sorting/address_sorting.h +2 -0
  491. data/third_party/boringssl-with-bazel/err_data.c +340 -336
  492. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +2 -0
  493. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +173 -35
  494. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +46 -7
  495. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +8 -2
  496. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +90 -63
  497. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +60 -60
  498. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +179 -47
  499. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +766 -0
  500. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +10 -0
  501. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +5 -3
  502. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +14 -14
  503. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +1 -1
  504. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +24 -0
  505. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +7 -5
  506. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +5 -2
  507. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +4 -0
  508. data/third_party/boringssl-with-bazel/src/include/openssl/des.h +6 -0
  509. data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +3 -0
  510. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +202 -134
  511. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +55 -1
  512. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +4 -0
  513. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +31 -23
  514. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +435 -394
  515. data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +18 -5
  516. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +35 -0
  517. data/third_party/boringssl-with-bazel/src/ssl/internal.h +36 -1
  518. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +42 -1
  519. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +67 -0
  520. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +11 -14
  521. data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +216 -11
  522. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +53 -11
  523. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +133 -39
  524. data/third_party/upb/upb/def.c +2169 -0
  525. data/third_party/upb/upb/def.h +330 -0
  526. data/third_party/upb/upb/def.hpp +525 -0
  527. data/third_party/upb/upb/reflection.c +391 -0
  528. data/third_party/upb/upb/reflection.h +168 -0
  529. data/third_party/upb/upb/text_encode.c +398 -0
  530. data/third_party/upb/upb/text_encode.h +35 -0
  531. metadata +227 -37
  532. data/src/core/ext/filters/client_channel/lb_policy/xds/eds_drop.cc +0 -571
  533. 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::memory_order_relaxed);
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::memory_order_relaxed,
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::memory_order_relaxed);
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::memory_order_relaxed,
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 std::string.
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 std::string.
176
- char *out; // Beginning of output std::string.
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
- if (IsAlpha(str[0]) || str[0] == '_') {
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, "VTIS") &&
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
- // # https://github.com/gcc-mirror/gcc/blob/7ad17b583c3643bd4557f29b8391ca7ef08391f5/gcc/cp/mangle.c#L1847
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') && ParseCharClass(state, "1234")) {
1090
- const char *const prev_name = state->out + state->parse_state.prev_name_idx;
1091
- MaybeAppendWithLength(state, prev_name,
1092
- state->parse_state.prev_name_length);
1093
- return true;
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
- // <function-type> ::= F [Y] <bare-function-type> E
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 2011 and onwards Google Inc.
2
- // All rights reserved.
1
+ // Copyright 2017 The Abseil Authors.
3
2
  //
4
- // Author: Doug Kwan
5
- // This is inspired by Craig Silverstein's PowerPC stacktrace code.
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 !defined(NO_FRAME_POINTER)
34
- # if defined(__i386__) || defined(__x86_64__)
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
- "absl/debugging/internal/stacktrace_x86-inl.inc"
37
- # elif defined(__ppc__) || defined(__PPC__)
38
- #define ABSL_STACKTRACE_INL_HEADER \
39
- "absl/debugging/internal/stacktrace_powerpc-inl.inc"
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
- # else
63
+ #endif
64
+ #elif defined(__i386__) || defined(__x86_64__)
48
65
  #define ABSL_STACKTRACE_INL_HEADER \
49
- "absl/debugging/internal/stacktrace_unimplemented-inl.inc"
50
- # endif
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
- "absl/debugging/internal/stacktrace_generic-inl.inc"
55
- # elif defined(__ppc__) || defined(__PPC__)
69
+ "absl/debugging/internal/stacktrace_powerpc-inl.inc"
70
+ #elif defined(__aarch64__)
56
71
  #define ABSL_STACKTRACE_INL_HEADER \
57
- "absl/debugging/internal/stacktrace_generic-inl.inc"
58
- # else
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
- "absl/debugging/internal/stacktrace_unimplemented-inl.inc"
61
- # endif
62
- #endif // NO_FRAME_POINTER
77
+ "absl/debugging/internal/stacktrace_generic-inl.inc"
78
+ #endif
79
+ #endif
63
80
 
64
- #else
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 2000 - 2007 Google Inc.
2
- // All rights reserved.
1
+ // Copyright 2017 The Abseil Authors.
3
2
  //
4
- // Author: Sanjay Ghemawat
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
- (RtlCaptureStackBackTrace_Function*)
53
- GetProcAddress(GetModuleHandleA("ntdll.dll"), "RtlCaptureStackBackTrace");
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(const std::string& name,
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