grpc 1.67.0 → 1.68.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2021) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +52 -42
  3. data/include/grpc/compression.h +1 -2
  4. data/include/grpc/credentials.h +1 -2
  5. data/include/grpc/event_engine/endpoint_config.h +2 -2
  6. data/include/grpc/event_engine/event_engine.h +6 -6
  7. data/include/grpc/event_engine/extensible.h +2 -2
  8. data/include/grpc/event_engine/internal/memory_allocator_impl.h +4 -4
  9. data/include/grpc/event_engine/memory_allocator.h +3 -4
  10. data/include/grpc/event_engine/memory_request.h +1 -2
  11. data/include/grpc/event_engine/slice.h +3 -4
  12. data/include/grpc/event_engine/slice_buffer.h +6 -7
  13. data/include/grpc/grpc.h +1 -2
  14. data/include/grpc/grpc_audit_logging.h +3 -3
  15. data/include/grpc/grpc_crl_provider.h +4 -4
  16. data/include/grpc/grpc_posix.h +1 -2
  17. data/include/grpc/grpc_security.h +1 -2
  18. data/include/grpc/impl/call.h +2 -2
  19. data/include/grpc/impl/grpc_types.h +1 -2
  20. data/include/grpc/impl/slice_type.h +1 -2
  21. data/include/grpc/passive_listener.h +2 -2
  22. data/include/grpc/support/alloc.h +1 -2
  23. data/include/grpc/support/json.h +1 -2
  24. data/include/grpc/support/log.h +1 -2
  25. data/include/grpc/support/metrics.h +7 -3
  26. data/include/grpc/support/port_platform.h +6 -1
  27. data/include/grpc/support/sync_posix.h +1 -2
  28. data/include/grpc/support/time.h +1 -2
  29. data/src/core/channelz/channel_trace.cc +5 -6
  30. data/src/core/channelz/channel_trace.h +5 -7
  31. data/src/core/channelz/channelz.cc +5 -6
  32. data/src/core/channelz/channelz.h +8 -10
  33. data/src/core/channelz/channelz_registry.cc +6 -7
  34. data/src/core/channelz/channelz_registry.h +4 -5
  35. data/src/core/client_channel/backup_poller.cc +20 -10
  36. data/src/core/client_channel/client_channel.cc +21 -17
  37. data/src/core/client_channel/client_channel.h +4 -2
  38. data/src/core/client_channel/client_channel_factory.cc +2 -2
  39. data/src/core/client_channel/client_channel_factory.h +1 -2
  40. data/src/core/client_channel/client_channel_filter.cc +24 -21
  41. data/src/core/client_channel/client_channel_filter.h +11 -11
  42. data/src/core/client_channel/client_channel_internal.h +2 -3
  43. data/src/core/client_channel/client_channel_plugin.cc +1 -3
  44. data/src/core/client_channel/client_channel_service_config.cc +2 -3
  45. data/src/core/client_channel/client_channel_service_config.h +3 -5
  46. data/src/core/client_channel/config_selector.h +4 -7
  47. data/src/core/client_channel/connector.h +3 -3
  48. data/src/core/client_channel/direct_channel.cc +1 -1
  49. data/src/core/client_channel/dynamic_filters.cc +10 -8
  50. data/src/core/client_channel/dynamic_filters.h +8 -7
  51. data/src/core/client_channel/global_subchannel_pool.cc +2 -2
  52. data/src/core/client_channel/global_subchannel_pool.h +2 -3
  53. data/src/core/client_channel/lb_metadata.h +2 -3
  54. data/src/core/client_channel/load_balanced_call_destination.cc +1 -2
  55. data/src/core/client_channel/load_balanced_call_destination.h +0 -1
  56. data/src/core/client_channel/local_subchannel_pool.cc +2 -3
  57. data/src/core/client_channel/local_subchannel_pool.h +1 -1
  58. data/src/core/client_channel/retry_filter.cc +5 -7
  59. data/src/core/client_channel/retry_filter.h +4 -7
  60. data/src/core/client_channel/retry_filter_legacy_call_data.cc +9 -11
  61. data/src/core/client_channel/retry_filter_legacy_call_data.h +9 -12
  62. data/src/core/client_channel/retry_service_config.cc +5 -7
  63. data/src/core/client_channel/retry_service_config.h +2 -4
  64. data/src/core/client_channel/retry_throttle.cc +3 -4
  65. data/src/core/client_channel/retry_throttle.h +4 -7
  66. data/src/core/client_channel/subchannel.cc +11 -14
  67. data/src/core/client_channel/subchannel.h +17 -16
  68. data/src/core/client_channel/subchannel_interface_internal.h +1 -1
  69. data/src/core/client_channel/subchannel_pool_interface.cc +1 -3
  70. data/src/core/client_channel/subchannel_pool_interface.h +2 -3
  71. data/src/core/client_channel/subchannel_stream_client.cc +6 -9
  72. data/src/core/client_channel/subchannel_stream_client.h +8 -10
  73. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +8 -8
  74. data/src/core/ext/filters/backend_metrics/backend_metric_filter.h +0 -1
  75. data/src/core/ext/filters/census/grpc_context.cc +1 -2
  76. data/src/core/ext/filters/channel_idle/idle_filter_state.cc +1 -2
  77. data/src/core/ext/filters/channel_idle/idle_filter_state.h +0 -1
  78. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +14 -16
  79. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h +6 -8
  80. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +9 -6
  81. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +1 -3
  82. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +2 -3
  83. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h +3 -6
  84. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +54 -16
  85. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +28 -13
  86. data/src/core/ext/filters/gcp_authentication/gcp_authentication_service_config_parser.cc +2 -3
  87. data/src/core/ext/filters/gcp_authentication/gcp_authentication_service_config_parser.h +1 -2
  88. data/src/core/ext/filters/http/client/http_client_filter.cc +12 -7
  89. data/src/core/ext/filters/http/client/http_client_filter.h +0 -1
  90. data/src/core/ext/filters/http/client_authority_filter.cc +6 -5
  91. data/src/core/ext/filters/http/client_authority_filter.h +0 -1
  92. data/src/core/ext/filters/http/http_filters_plugin.cc +0 -1
  93. data/src/core/ext/filters/http/message_compress/compression_filter.cc +22 -8
  94. data/src/core/ext/filters/http/message_compress/compression_filter.h +1 -4
  95. data/src/core/ext/filters/http/server/http_server_filter.cc +11 -6
  96. data/src/core/ext/filters/http/server/http_server_filter.h +0 -1
  97. data/src/core/ext/filters/message_size/message_size_filter.cc +12 -6
  98. data/src/core/ext/filters/message_size/message_size_filter.h +1 -3
  99. data/src/core/ext/filters/rbac/rbac_filter.cc +5 -5
  100. data/src/core/ext/filters/rbac/rbac_filter.h +0 -2
  101. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +14 -8
  102. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +1 -3
  103. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +10 -5
  104. data/src/core/ext/filters/stateful_session/stateful_session_filter.h +2 -4
  105. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.cc +2 -3
  106. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +2 -4
  107. data/src/core/ext/transport/chttp2/alpn/alpn.cc +1 -2
  108. data/src/core/ext/transport/chttp2/alpn/alpn.h +1 -2
  109. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +13 -15
  110. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +4 -5
  111. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +150 -89
  112. data/src/core/ext/transport/chttp2/server/chttp2_server.h +2 -2
  113. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +3 -4
  114. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +2 -3
  115. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +1 -3
  116. data/src/core/ext/transport/chttp2/transport/bin_encoder.h +1 -2
  117. data/src/core/ext/transport/chttp2/transport/call_tracer_wrapper.cc +53 -0
  118. data/src/core/ext/transport/chttp2/transport/call_tracer_wrapper.h +72 -0
  119. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +66 -88
  120. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +5 -6
  121. data/src/core/ext/transport/chttp2/transport/context_list_entry.h +1 -2
  122. data/src/core/ext/transport/chttp2/transport/decode_huff.h +2 -2
  123. data/src/core/ext/transport/chttp2/transport/flow_control.cc +1 -3
  124. data/src/core/ext/transport/chttp2/transport/flow_control.h +2 -4
  125. data/src/core/ext/transport/chttp2/transport/frame.cc +2 -4
  126. data/src/core/ext/transport/chttp2/transport/frame.h +2 -3
  127. data/src/core/ext/transport/chttp2/transport/frame_data.cc +4 -5
  128. data/src/core/ext/transport/chttp2/transport/frame_data.h +2 -4
  129. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +3 -5
  130. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +1 -2
  131. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +2 -4
  132. data/src/core/ext/transport/chttp2/transport/frame_ping.h +1 -2
  133. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +4 -5
  134. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +1 -2
  135. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +3 -5
  136. data/src/core/ext/transport/chttp2/transport/frame_settings.h +3 -4
  137. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +3 -3
  138. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +1 -2
  139. data/src/core/ext/transport/chttp2/transport/hpack_constants.h +2 -2
  140. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +5 -6
  141. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +3 -5
  142. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +2 -2
  143. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +1 -2
  144. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.cc +2 -4
  145. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +4 -6
  146. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +3 -5
  147. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +3 -5
  148. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +1 -3
  149. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +2 -4
  150. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +1 -2
  151. data/src/core/ext/transport/chttp2/transport/http2_settings.h +1 -3
  152. data/src/core/ext/transport/chttp2/transport/internal.h +12 -99
  153. data/src/core/ext/transport/chttp2/transport/parsing.cc +22 -9
  154. data/src/core/ext/transport/chttp2/transport/ping_abuse_policy.cc +3 -3
  155. data/src/core/ext/transport/chttp2/transport/ping_abuse_policy.h +3 -3
  156. data/src/core/ext/transport/chttp2/transport/ping_callbacks.cc +2 -2
  157. data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +3 -5
  158. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +4 -5
  159. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.h +2 -4
  160. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +4 -3
  161. data/src/core/ext/transport/chttp2/transport/stream_lists.h +65 -0
  162. data/src/core/ext/transport/chttp2/transport/varint.cc +2 -2
  163. data/src/core/ext/transport/chttp2/transport/varint.h +1 -2
  164. data/src/core/ext/transport/chttp2/transport/write_size_policy.cc +2 -2
  165. data/src/core/ext/transport/chttp2/transport/write_size_policy.h +2 -3
  166. data/src/core/ext/transport/chttp2/transport/writing.cc +11 -11
  167. data/src/core/ext/transport/inproc/inproc_transport.cc +5 -6
  168. data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +11 -13
  169. data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb.h +32 -1
  170. data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb_minitable.c +21 -14
  171. data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb_minitable.h +7 -1
  172. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb.h +33 -1
  173. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb_minitable.c +21 -15
  174. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb_minitable.h +6 -1
  175. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb.h +36 -1
  176. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb_minitable.c +24 -17
  177. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb_minitable.h +7 -1
  178. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb.h +134 -1
  179. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb_minitable.c +86 -65
  180. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb_minitable.h +21 -1
  181. data/src/core/ext/upb-gen/envoy/admin/v3/init_dump.upb.h +7 -1
  182. data/src/core/ext/upb-gen/envoy/admin/v3/init_dump.upb_minitable.c +7 -3
  183. data/src/core/ext/upb-gen/envoy/admin/v3/init_dump.upb_minitable.h +4 -1
  184. data/src/core/ext/upb-gen/envoy/admin/v3/listeners.upb.h +14 -1
  185. data/src/core/ext/upb-gen/envoy/admin/v3/listeners.upb_minitable.c +10 -6
  186. data/src/core/ext/upb-gen/envoy/admin/v3/listeners.upb_minitable.h +4 -1
  187. data/src/core/ext/upb-gen/envoy/admin/v3/memory.upb.h +2 -1
  188. data/src/core/ext/upb-gen/envoy/admin/v3/memory.upb_minitable.c +4 -1
  189. data/src/core/ext/upb-gen/envoy/admin/v3/memory.upb_minitable.h +3 -1
  190. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb.h +2 -1
  191. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb_minitable.c +4 -1
  192. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb_minitable.h +3 -1
  193. data/src/core/ext/upb-gen/envoy/admin/v3/mutex_stats.upb.h +2 -1
  194. data/src/core/ext/upb-gen/envoy/admin/v3/mutex_stats.upb_minitable.c +4 -1
  195. data/src/core/ext/upb-gen/envoy/admin/v3/mutex_stats.upb_minitable.h +3 -1
  196. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb.h +16 -1
  197. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb_minitable.c +14 -10
  198. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb_minitable.h +4 -1
  199. data/src/core/ext/upb-gen/envoy/admin/v3/tap.upb.h +4 -1
  200. data/src/core/ext/upb-gen/envoy/admin/v3/tap.upb_minitable.c +6 -3
  201. data/src/core/ext/upb-gen/envoy/admin/v3/tap.upb_minitable.h +3 -1
  202. data/src/core/ext/upb-gen/envoy/annotations/deprecation.upb.h +2 -1
  203. data/src/core/ext/upb-gen/envoy/annotations/deprecation.upb_minitable.c +7 -1
  204. data/src/core/ext/upb-gen/envoy/annotations/deprecation.upb_minitable.h +2 -1
  205. data/src/core/ext/upb-gen/envoy/annotations/resource.upb.h +2 -1
  206. data/src/core/ext/upb-gen/envoy/annotations/resource.upb_minitable.c +9 -5
  207. data/src/core/ext/upb-gen/envoy/annotations/resource.upb_minitable.h +3 -1
  208. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb.h +58 -1
  209. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb_minitable.c +55 -37
  210. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb_minitable.h +18 -1
  211. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb.h +180 -1
  212. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb_minitable.c +112 -87
  213. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb_minitable.h +25 -1
  214. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb.h +28 -1
  215. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb_minitable.c +19 -14
  216. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb_minitable.h +5 -1
  217. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb.h +182 -1
  218. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.c +127 -100
  219. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.h +27 -1
  220. data/src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb.h +6 -1
  221. data/src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb_minitable.c +7 -4
  222. data/src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb_minitable.h +3 -1
  223. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb.h +53 -1
  224. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb_minitable.c +29 -26
  225. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb_minitable.h +3 -1
  226. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb.h +93 -1
  227. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb_minitable.c +66 -49
  228. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb_minitable.h +17 -1
  229. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb.h +41 -1
  230. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb_minitable.c +31 -21
  231. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb_minitable.h +10 -1
  232. data/src/core/ext/upb-gen/envoy/config/core/v3/backoff.upb.h +6 -1
  233. data/src/core/ext/upb-gen/envoy/config/core/v3/backoff.upb_minitable.c +7 -4
  234. data/src/core/ext/upb-gen/envoy/config/core/v3/backoff.upb_minitable.h +3 -1
  235. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb.h +106 -1
  236. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb_minitable.c +87 -56
  237. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb_minitable.h +31 -1
  238. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb.h +43 -1
  239. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb_minitable.c +31 -22
  240. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb_minitable.h +9 -1
  241. data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb.h +4 -1
  242. data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb_minitable.c +6 -3
  243. data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb_minitable.h +3 -1
  244. data/src/core/ext/upb-gen/envoy/config/core/v3/extension.upb.h +4 -1
  245. data/src/core/ext/upb-gen/envoy/config/core/v3/extension.upb_minitable.c +6 -3
  246. data/src/core/ext/upb-gen/envoy/config/core/v3/extension.upb_minitable.h +3 -1
  247. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_method_list.upb.h +7 -1
  248. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_method_list.upb_minitable.c +7 -3
  249. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_method_list.upb_minitable.h +4 -1
  250. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb.h +68 -1
  251. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb_minitable.c +52 -36
  252. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb_minitable.h +16 -1
  253. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb.h +89 -1
  254. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb_minitable.c +50 -39
  255. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb_minitable.h +11 -1
  256. data/src/core/ext/upb-gen/envoy/config/core/v3/http_service.upb.h +9 -1
  257. data/src/core/ext/upb-gen/envoy/config/core/v3/http_service.upb_minitable.c +7 -4
  258. data/src/core/ext/upb-gen/envoy/config/core/v3/http_service.upb_minitable.h +3 -1
  259. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb.h +4 -1
  260. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb_minitable.c +6 -3
  261. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb_minitable.h +3 -1
  262. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb.h +96 -1
  263. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.c +74 -56
  264. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.h +18 -1
  265. data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb.h +4 -1
  266. data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb_minitable.c +7 -3
  267. data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb_minitable.h +4 -1
  268. data/src/core/ext/upb-gen/envoy/config/core/v3/resolver.upb.h +9 -1
  269. data/src/core/ext/upb-gen/envoy/config/core/v3/resolver.upb_minitable.c +8 -4
  270. data/src/core/ext/upb-gen/envoy/config/core/v3/resolver.upb_minitable.h +4 -1
  271. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb.h +7 -1
  272. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb_minitable.c +7 -3
  273. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb_minitable.h +4 -1
  274. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb.h +13 -1
  275. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb_minitable.c +10 -6
  276. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb_minitable.h +4 -1
  277. data/src/core/ext/upb-gen/envoy/config/core/v3/udp_socket_config.upb.h +6 -1
  278. data/src/core/ext/upb-gen/envoy/config/core/v3/udp_socket_config.upb_minitable.c +7 -4
  279. data/src/core/ext/upb-gen/envoy/config/core/v3/udp_socket_config.upb_minitable.h +3 -1
  280. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb.h +32 -1
  281. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb_minitable.c +19 -13
  282. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb_minitable.h +6 -1
  283. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb.h +45 -1
  284. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.c +34 -25
  285. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.h +9 -1
  286. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb.h +41 -1
  287. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb_minitable.c +24 -16
  288. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb_minitable.h +8 -1
  289. data/src/core/ext/upb-gen/envoy/config/listener/v3/api_listener.upb.h +4 -1
  290. data/src/core/ext/upb-gen/envoy/config/listener/v3/api_listener.upb_minitable.c +6 -3
  291. data/src/core/ext/upb-gen/envoy/config/listener/v3/api_listener.upb_minitable.h +3 -1
  292. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb.h +80 -1
  293. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.c +48 -36
  294. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.h +12 -1
  295. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb.h +63 -1
  296. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb_minitable.c +40 -31
  297. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb_minitable.h +9 -1
  298. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb.h +24 -1
  299. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.c +16 -13
  300. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.h +3 -1
  301. data/src/core/ext/upb-gen/envoy/config/listener/v3/udp_listener_config.upb.h +8 -1
  302. data/src/core/ext/upb-gen/envoy/config/listener/v3/udp_listener_config.upb_minitable.c +9 -5
  303. data/src/core/ext/upb-gen/envoy/config/listener/v3/udp_listener_config.upb_minitable.h +4 -1
  304. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb.h +6 -1
  305. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb_minitable.c +7 -4
  306. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb_minitable.h +3 -1
  307. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb.h +30 -1
  308. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb_minitable.c +28 -18
  309. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb_minitable.h +10 -1
  310. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb.h +48 -1
  311. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb_minitable.c +34 -22
  312. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb_minitable.h +12 -1
  313. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb.h +93 -1
  314. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.c +58 -45
  315. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.h +13 -1
  316. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb.h +49 -1
  317. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb_minitable.c +21 -16
  318. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb_minitable.h +5 -1
  319. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb.h +432 -1
  320. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.c +261 -201
  321. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.h +60 -1
  322. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb.h +11 -1
  323. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb_minitable.c +11 -6
  324. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb_minitable.h +5 -1
  325. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb.h +66 -1
  326. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb_minitable.c +50 -36
  327. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb_minitable.h +14 -1
  328. data/src/core/ext/upb-gen/envoy/config/trace/v3/datadog.upb.h +6 -1
  329. data/src/core/ext/upb-gen/envoy/config/trace/v3/datadog.upb_minitable.c +9 -5
  330. data/src/core/ext/upb-gen/envoy/config/trace/v3/datadog.upb_minitable.h +4 -1
  331. data/src/core/ext/upb-gen/envoy/config/trace/v3/dynamic_ot.upb.h +4 -1
  332. data/src/core/ext/upb-gen/envoy/config/trace/v3/dynamic_ot.upb_minitable.c +6 -3
  333. data/src/core/ext/upb-gen/envoy/config/trace/v3/dynamic_ot.upb_minitable.h +3 -1
  334. data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb.h +6 -1
  335. data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb_minitable.c +9 -5
  336. data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb_minitable.h +4 -1
  337. data/src/core/ext/upb-gen/envoy/config/trace/v3/lightstep.upb.h +4 -1
  338. data/src/core/ext/upb-gen/envoy/config/trace/v3/lightstep.upb_minitable.c +6 -3
  339. data/src/core/ext/upb-gen/envoy/config/trace/v3/lightstep.upb_minitable.h +3 -1
  340. data/src/core/ext/upb-gen/envoy/config/trace/v3/opencensus.upb.h +8 -1
  341. data/src/core/ext/upb-gen/envoy/config/trace/v3/opencensus.upb_minitable.c +8 -5
  342. data/src/core/ext/upb-gen/envoy/config/trace/v3/opencensus.upb_minitable.h +3 -1
  343. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb.h +13 -1
  344. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb_minitable.c +9 -6
  345. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb_minitable.h +3 -1
  346. data/src/core/ext/upb-gen/envoy/config/trace/v3/service.upb.h +4 -1
  347. data/src/core/ext/upb-gen/envoy/config/trace/v3/service.upb_minitable.c +6 -3
  348. data/src/core/ext/upb-gen/envoy/config/trace/v3/service.upb_minitable.h +3 -1
  349. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb.h +8 -1
  350. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb_minitable.c +10 -6
  351. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb_minitable.h +4 -1
  352. data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb.h +2 -1
  353. data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb_minitable.c +3 -1
  354. data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb_minitable.h +2 -1
  355. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb.h +10 -1
  356. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb_minitable.c +11 -7
  357. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb_minitable.h +4 -1
  358. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb.h +4 -1
  359. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb_minitable.c +6 -3
  360. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb_minitable.h +3 -1
  361. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb.h +99 -1
  362. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb_minitable.c +63 -45
  363. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb_minitable.h +18 -1
  364. data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +2 -1
  365. data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.c +4 -1
  366. data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.h +3 -1
  367. data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb.h +14 -1
  368. data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb_minitable.c +16 -9
  369. data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb_minitable.h +7 -1
  370. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb.h +21 -1
  371. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb_minitable.c +16 -11
  372. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb_minitable.h +5 -1
  373. data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb.h +14 -1
  374. data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb_minitable.c +15 -9
  375. data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb_minitable.h +6 -1
  376. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +12 -1
  377. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.c +12 -8
  378. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.h +4 -1
  379. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb.h +18 -1
  380. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb_minitable.c +12 -8
  381. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb_minitable.h +4 -1
  382. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +6 -1
  383. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb_minitable.c +9 -5
  384. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb_minitable.h +4 -1
  385. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +178 -1
  386. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.c +113 -90
  387. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.h +23 -1
  388. data/src/core/ext/upb-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.h +4 -1
  389. data/src/core/ext/upb-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb_minitable.c +6 -3
  390. data/src/core/ext/upb-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb_minitable.h +3 -1
  391. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h +14 -1
  392. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb_minitable.c +11 -8
  393. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb_minitable.h +3 -1
  394. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +18 -1
  395. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.c +20 -13
  396. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.h +7 -1
  397. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb.h +2 -1
  398. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb_minitable.c +4 -1
  399. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb_minitable.h +3 -1
  400. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +12 -1
  401. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb_minitable.c +10 -7
  402. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb_minitable.h +3 -1
  403. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +4 -1
  404. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb_minitable.c +6 -3
  405. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb_minitable.h +3 -1
  406. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upb.h +106 -0
  407. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upb_minitable.c +52 -0
  408. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upb_minitable.h +32 -0
  409. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +2 -1
  410. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/cert.upb_minitable.c +3 -1
  411. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/cert.upb_minitable.h +2 -1
  412. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb.h +56 -1
  413. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb_minitable.c +37 -27
  414. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb_minitable.h +10 -1
  415. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +14 -1
  416. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.c +15 -10
  417. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.h +5 -1
  418. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +74 -1
  419. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb_minitable.c +46 -37
  420. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb_minitable.h +9 -1
  421. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +9 -1
  422. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb_minitable.c +9 -5
  423. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb_minitable.h +4 -1
  424. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb.h +39 -1
  425. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.c +28 -22
  426. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.h +6 -1
  427. data/src/core/ext/upb-gen/envoy/service/discovery/v3/ads.upb.h +2 -1
  428. data/src/core/ext/upb-gen/envoy/service/discovery/v3/ads.upb_minitable.c +4 -1
  429. data/src/core/ext/upb-gen/envoy/service/discovery/v3/ads.upb_minitable.h +3 -1
  430. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb.h +83 -1
  431. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb_minitable.c +53 -37
  432. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb_minitable.h +16 -1
  433. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb.h +11 -1
  434. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb_minitable.c +10 -6
  435. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb_minitable.h +4 -1
  436. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb.h +42 -1
  437. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb_minitable.c +27 -20
  438. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb_minitable.h +7 -1
  439. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb.h +4 -1
  440. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.c +6 -3
  441. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.h +3 -1
  442. data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb.h +11 -1
  443. data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb_minitable.c +12 -6
  444. data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb_minitable.h +6 -1
  445. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb.h +4 -1
  446. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb_minitable.c +6 -3
  447. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb_minitable.h +3 -1
  448. data/src/core/ext/upb-gen/envoy/type/matcher/v3/http_inputs.upb.h +2 -1
  449. data/src/core/ext/upb-gen/envoy/type/matcher/v3/http_inputs.upb_minitable.c +8 -1
  450. data/src/core/ext/upb-gen/envoy/type/matcher/v3/http_inputs.upb_minitable.h +7 -1
  451. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb.h +9 -1
  452. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb_minitable.c +8 -4
  453. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb_minitable.h +4 -1
  454. data/src/core/ext/upb-gen/envoy/type/matcher/v3/node.upb.h +9 -1
  455. data/src/core/ext/upb-gen/envoy/type/matcher/v3/node.upb_minitable.c +7 -4
  456. data/src/core/ext/upb-gen/envoy/type/matcher/v3/node.upb_minitable.h +3 -1
  457. data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb.h +4 -1
  458. data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb_minitable.c +6 -3
  459. data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb_minitable.h +3 -1
  460. data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb.h +4 -1
  461. data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb_minitable.c +6 -3
  462. data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb_minitable.h +3 -1
  463. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb.h +8 -1
  464. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb_minitable.c +12 -7
  465. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb_minitable.h +5 -1
  466. data/src/core/ext/upb-gen/envoy/type/matcher/v3/status_code_input.upb.h +2 -1
  467. data/src/core/ext/upb-gen/envoy/type/matcher/v3/status_code_input.upb_minitable.c +5 -1
  468. data/src/core/ext/upb-gen/envoy/type/matcher/v3/status_code_input.upb_minitable.h +4 -1
  469. data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb.h +11 -1
  470. data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb_minitable.c +10 -6
  471. data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb_minitable.h +4 -1
  472. data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb.h +9 -1
  473. data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb_minitable.c +8 -4
  474. data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb_minitable.h +4 -1
  475. data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb.h +19 -1
  476. data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb_minitable.c +17 -11
  477. data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb_minitable.h +6 -1
  478. data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb.h +15 -1
  479. data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb_minitable.c +17 -8
  480. data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb_minitable.h +9 -1
  481. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb.h +14 -1
  482. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb_minitable.c +16 -9
  483. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb_minitable.h +7 -1
  484. data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb.h +6 -1
  485. data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb_minitable.c +9 -4
  486. data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb_minitable.h +5 -1
  487. data/src/core/ext/upb-gen/envoy/type/v3/http.upb.h +2 -1
  488. data/src/core/ext/upb-gen/envoy/type/v3/http.upb_minitable.c +3 -1
  489. data/src/core/ext/upb-gen/envoy/type/v3/http.upb_minitable.h +2 -1
  490. data/src/core/ext/upb-gen/envoy/type/v3/http_status.upb.h +2 -1
  491. data/src/core/ext/upb-gen/envoy/type/v3/http_status.upb_minitable.c +4 -1
  492. data/src/core/ext/upb-gen/envoy/type/v3/http_status.upb_minitable.h +3 -1
  493. data/src/core/ext/upb-gen/envoy/type/v3/percent.upb.h +2 -1
  494. data/src/core/ext/upb-gen/envoy/type/v3/percent.upb_minitable.c +5 -1
  495. data/src/core/ext/upb-gen/envoy/type/v3/percent.upb_minitable.h +4 -1
  496. data/src/core/ext/upb-gen/envoy/type/v3/range.upb.h +2 -1
  497. data/src/core/ext/upb-gen/envoy/type/v3/range.upb_minitable.c +6 -1
  498. data/src/core/ext/upb-gen/envoy/type/v3/range.upb_minitable.h +5 -1
  499. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb.h +6 -1
  500. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb_minitable.c +8 -4
  501. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb_minitable.h +4 -1
  502. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_unit.upb.h +2 -1
  503. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_unit.upb_minitable.c +3 -1
  504. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_unit.upb_minitable.h +2 -1
  505. data/src/core/ext/upb-gen/envoy/type/v3/semantic_version.upb.h +2 -1
  506. data/src/core/ext/upb-gen/envoy/type/v3/semantic_version.upb_minitable.c +4 -1
  507. data/src/core/ext/upb-gen/envoy/type/v3/semantic_version.upb_minitable.h +3 -1
  508. data/src/core/ext/upb-gen/envoy/type/v3/token_bucket.upb.h +6 -1
  509. data/src/core/ext/upb-gen/envoy/type/v3/token_bucket.upb_minitable.c +7 -4
  510. data/src/core/ext/upb-gen/envoy/type/v3/token_bucket.upb_minitable.h +3 -1
  511. data/src/core/ext/upb-gen/google/api/annotations.upb.h +2 -1
  512. data/src/core/ext/upb-gen/google/api/annotations.upb_minitable.c +4 -1
  513. data/src/core/ext/upb-gen/google/api/annotations.upb_minitable.h +2 -1
  514. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb.h +84 -1
  515. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb_minitable.c +56 -41
  516. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb_minitable.h +15 -1
  517. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb.h +82 -1
  518. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb_minitable.c +59 -41
  519. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb_minitable.h +18 -1
  520. data/src/core/ext/upb-gen/google/api/http.upb.h +14 -1
  521. data/src/core/ext/upb-gen/google/api/http.upb_minitable.c +11 -6
  522. data/src/core/ext/upb-gen/google/api/http.upb_minitable.h +5 -1
  523. data/src/core/ext/upb-gen/google/api/httpbody.upb.h +7 -1
  524. data/src/core/ext/upb-gen/google/api/httpbody.upb_minitable.c +6 -3
  525. data/src/core/ext/upb-gen/google/api/httpbody.upb_minitable.h +3 -1
  526. data/src/core/ext/upb-gen/google/protobuf/any.upb.h +2 -1
  527. data/src/core/ext/upb-gen/google/protobuf/any.upb_minitable.c +4 -1
  528. data/src/core/ext/upb-gen/google/protobuf/any.upb_minitable.h +3 -1
  529. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb.h +198 -1
  530. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.c +153 -118
  531. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.h +35 -1
  532. data/src/core/ext/upb-gen/google/protobuf/duration.upb.h +2 -1
  533. data/src/core/ext/upb-gen/google/protobuf/duration.upb_minitable.c +4 -1
  534. data/src/core/ext/upb-gen/google/protobuf/duration.upb_minitable.h +3 -1
  535. data/src/core/ext/upb-gen/google/protobuf/empty.upb.h +2 -1
  536. data/src/core/ext/upb-gen/google/protobuf/empty.upb_minitable.c +4 -1
  537. data/src/core/ext/upb-gen/google/protobuf/empty.upb_minitable.h +3 -1
  538. data/src/core/ext/upb-gen/google/protobuf/struct.upb.h +23 -1
  539. data/src/core/ext/upb-gen/google/protobuf/struct.upb_minitable.c +16 -10
  540. data/src/core/ext/upb-gen/google/protobuf/struct.upb_minitable.h +6 -1
  541. data/src/core/ext/upb-gen/google/protobuf/timestamp.upb.h +2 -1
  542. data/src/core/ext/upb-gen/google/protobuf/timestamp.upb_minitable.c +4 -1
  543. data/src/core/ext/upb-gen/google/protobuf/timestamp.upb_minitable.h +3 -1
  544. data/src/core/ext/upb-gen/google/protobuf/wrappers.upb.h +2 -1
  545. data/src/core/ext/upb-gen/google/protobuf/wrappers.upb_minitable.c +12 -1
  546. data/src/core/ext/upb-gen/google/protobuf/wrappers.upb_minitable.h +11 -1
  547. data/src/core/ext/upb-gen/google/rpc/status.upb.h +7 -1
  548. data/src/core/ext/upb-gen/google/rpc/status.upb_minitable.c +6 -3
  549. data/src/core/ext/upb-gen/google/rpc/status.upb_minitable.h +3 -1
  550. data/src/core/ext/upb-gen/opencensus/proto/trace/v1/trace_config.upb.h +8 -1
  551. data/src/core/ext/upb-gen/opencensus/proto/trace/v1/trace_config.upb_minitable.c +11 -5
  552. data/src/core/ext/upb-gen/opencensus/proto/trace/v1/trace_config.upb_minitable.h +6 -1
  553. data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb.h +10 -1
  554. data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb_minitable.c +8 -4
  555. data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb_minitable.h +4 -1
  556. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb.h +60 -1
  557. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.c +43 -29
  558. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.h +14 -1
  559. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb.h +6 -1
  560. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb_minitable.c +8 -4
  561. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb_minitable.h +4 -1
  562. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb.h +2 -1
  563. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb_minitable.c +5 -1
  564. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb_minitable.h +4 -1
  565. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb.h +26 -1
  566. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb_minitable.c +26 -15
  567. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb_minitable.h +11 -1
  568. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb.h +8 -1
  569. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb_minitable.c +8 -3
  570. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb_minitable.h +5 -1
  571. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb.h +54 -1
  572. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb_minitable.c +29 -18
  573. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb_minitable.h +11 -1
  574. data/src/core/ext/upb-gen/udpa/annotations/migrate.upb.h +2 -1
  575. data/src/core/ext/upb-gen/udpa/annotations/migrate.upb_minitable.c +17 -7
  576. data/src/core/ext/upb-gen/udpa/annotations/migrate.upb_minitable.h +5 -1
  577. data/src/core/ext/upb-gen/udpa/annotations/security.upb.h +2 -1
  578. data/src/core/ext/upb-gen/udpa/annotations/security.upb_minitable.c +9 -5
  579. data/src/core/ext/upb-gen/udpa/annotations/security.upb_minitable.h +3 -1
  580. data/src/core/ext/upb-gen/udpa/annotations/sensitive.upb.h +2 -1
  581. data/src/core/ext/upb-gen/udpa/annotations/sensitive.upb_minitable.c +4 -1
  582. data/src/core/ext/upb-gen/udpa/annotations/sensitive.upb_minitable.h +2 -1
  583. data/src/core/ext/upb-gen/udpa/annotations/status.upb.h +2 -1
  584. data/src/core/ext/upb-gen/udpa/annotations/status.upb_minitable.c +9 -5
  585. data/src/core/ext/upb-gen/udpa/annotations/status.upb_minitable.h +3 -1
  586. data/src/core/ext/upb-gen/udpa/annotations/versioning.upb.h +2 -1
  587. data/src/core/ext/upb-gen/udpa/annotations/versioning.upb_minitable.c +9 -5
  588. data/src/core/ext/upb-gen/udpa/annotations/versioning.upb_minitable.h +3 -1
  589. data/src/core/ext/upb-gen/validate/validate.upb.h +84 -1
  590. data/src/core/ext/upb-gen/validate/validate.upb_minitable.c +109 -80
  591. data/src/core/ext/upb-gen/validate/validate.upb_minitable.h +25 -1
  592. data/src/core/ext/upb-gen/xds/annotations/v3/migrate.upb.h +2 -1
  593. data/src/core/ext/upb-gen/xds/annotations/v3/migrate.upb_minitable.c +17 -7
  594. data/src/core/ext/upb-gen/xds/annotations/v3/migrate.upb_minitable.h +5 -1
  595. data/src/core/ext/upb-gen/xds/annotations/v3/security.upb.h +2 -1
  596. data/src/core/ext/upb-gen/xds/annotations/v3/security.upb_minitable.c +9 -5
  597. data/src/core/ext/upb-gen/xds/annotations/v3/security.upb_minitable.h +3 -1
  598. data/src/core/ext/upb-gen/xds/annotations/v3/sensitive.upb.h +2 -1
  599. data/src/core/ext/upb-gen/xds/annotations/v3/sensitive.upb_minitable.c +4 -1
  600. data/src/core/ext/upb-gen/xds/annotations/v3/sensitive.upb_minitable.h +2 -1
  601. data/src/core/ext/upb-gen/xds/annotations/v3/status.upb.h +2 -1
  602. data/src/core/ext/upb-gen/xds/annotations/v3/status.upb_minitable.c +17 -8
  603. data/src/core/ext/upb-gen/xds/annotations/v3/status.upb_minitable.h +6 -1
  604. data/src/core/ext/upb-gen/xds/annotations/v3/versioning.upb.h +2 -1
  605. data/src/core/ext/upb-gen/xds/annotations/v3/versioning.upb_minitable.c +9 -5
  606. data/src/core/ext/upb-gen/xds/annotations/v3/versioning.upb_minitable.h +3 -1
  607. data/src/core/ext/upb-gen/xds/core/v3/authority.upb.h +2 -1
  608. data/src/core/ext/upb-gen/xds/core/v3/authority.upb_minitable.c +4 -1
  609. data/src/core/ext/upb-gen/xds/core/v3/authority.upb_minitable.h +3 -1
  610. data/src/core/ext/upb-gen/xds/core/v3/cidr.upb.h +4 -1
  611. data/src/core/ext/upb-gen/xds/core/v3/cidr.upb_minitable.c +6 -3
  612. data/src/core/ext/upb-gen/xds/core/v3/cidr.upb_minitable.h +3 -1
  613. data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb.h +8 -1
  614. data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb_minitable.c +10 -6
  615. data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb_minitable.h +4 -1
  616. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb.h +8 -1
  617. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb_minitable.c +7 -3
  618. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb_minitable.h +4 -1
  619. data/src/core/ext/upb-gen/xds/core/v3/extension.upb.h +4 -1
  620. data/src/core/ext/upb-gen/xds/core/v3/extension.upb_minitable.c +6 -3
  621. data/src/core/ext/upb-gen/xds/core/v3/extension.upb_minitable.h +3 -1
  622. data/src/core/ext/upb-gen/xds/core/v3/resource.upb.h +6 -1
  623. data/src/core/ext/upb-gen/xds/core/v3/resource.upb_minitable.c +7 -4
  624. data/src/core/ext/upb-gen/xds/core/v3/resource.upb_minitable.h +3 -1
  625. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb.h +11 -1
  626. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb_minitable.c +10 -6
  627. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb_minitable.h +4 -1
  628. data/src/core/ext/upb-gen/xds/core/v3/resource_name.upb.h +4 -1
  629. data/src/core/ext/upb-gen/xds/core/v3/resource_name.upb_minitable.c +6 -3
  630. data/src/core/ext/upb-gen/xds/core/v3/resource_name.upb_minitable.h +3 -1
  631. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb.h +20 -1
  632. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb_minitable.c +11 -5
  633. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb_minitable.h +6 -1
  634. data/src/core/ext/upb-gen/xds/service/orca/v3/orca.upb.h +4 -1
  635. data/src/core/ext/upb-gen/xds/service/orca/v3/orca.upb_minitable.c +6 -3
  636. data/src/core/ext/upb-gen/xds/service/orca/v3/orca.upb_minitable.h +3 -1
  637. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb.h +4 -1
  638. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb_minitable.c +6 -3
  639. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb_minitable.h +3 -1
  640. data/src/core/ext/upb-gen/xds/type/matcher/v3/domain.upb.h +9 -1
  641. data/src/core/ext/upb-gen/xds/type/matcher/v3/domain.upb_minitable.c +9 -5
  642. data/src/core/ext/upb-gen/xds/type/matcher/v3/domain.upb_minitable.h +4 -1
  643. data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb.h +2 -1
  644. data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb_minitable.c +4 -1
  645. data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb_minitable.h +3 -1
  646. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb.h +14 -1
  647. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb_minitable.c +10 -6
  648. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb_minitable.h +4 -1
  649. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb.h +60 -1
  650. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb_minitable.c +45 -33
  651. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb_minitable.h +12 -1
  652. data/src/core/ext/upb-gen/xds/type/matcher/v3/range.upb.h +38 -1
  653. data/src/core/ext/upb-gen/xds/type/matcher/v3/range.upb_minitable.c +24 -16
  654. data/src/core/ext/upb-gen/xds/type/matcher/v3/range.upb_minitable.h +8 -1
  655. data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb.h +4 -1
  656. data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb_minitable.c +7 -3
  657. data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb_minitable.h +4 -1
  658. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb.h +9 -1
  659. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb_minitable.c +9 -5
  660. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb_minitable.h +4 -1
  661. data/src/core/ext/upb-gen/xds/type/v3/cel.upb.h +10 -1
  662. data/src/core/ext/upb-gen/xds/type/v3/cel.upb_minitable.c +11 -7
  663. data/src/core/ext/upb-gen/xds/type/v3/cel.upb_minitable.h +4 -1
  664. data/src/core/ext/upb-gen/xds/type/v3/range.upb.h +2 -1
  665. data/src/core/ext/upb-gen/xds/type/v3/range.upb_minitable.c +6 -1
  666. data/src/core/ext/upb-gen/xds/type/v3/range.upb_minitable.h +5 -1
  667. data/src/core/ext/upb-gen/xds/type/v3/typed_struct.upb.h +4 -1
  668. data/src/core/ext/upb-gen/xds/type/v3/typed_struct.upb_minitable.c +6 -3
  669. data/src/core/ext/upb-gen/xds/type/v3/typed_struct.upb_minitable.h +3 -1
  670. data/src/core/ext/upbdefs-gen/envoy/admin/v3/certs.upbdefs.c +2 -1
  671. data/src/core/ext/upbdefs-gen/envoy/admin/v3/certs.upbdefs.h +2 -1
  672. data/src/core/ext/upbdefs-gen/envoy/admin/v3/clusters.upbdefs.c +2 -1
  673. data/src/core/ext/upbdefs-gen/envoy/admin/v3/clusters.upbdefs.h +2 -1
  674. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump.upbdefs.c +2 -1
  675. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump.upbdefs.h +2 -1
  676. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump_shared.upbdefs.c +2 -1
  677. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump_shared.upbdefs.h +2 -1
  678. data/src/core/ext/upbdefs-gen/envoy/admin/v3/init_dump.upbdefs.c +2 -1
  679. data/src/core/ext/upbdefs-gen/envoy/admin/v3/init_dump.upbdefs.h +2 -1
  680. data/src/core/ext/upbdefs-gen/envoy/admin/v3/listeners.upbdefs.c +2 -1
  681. data/src/core/ext/upbdefs-gen/envoy/admin/v3/listeners.upbdefs.h +2 -1
  682. data/src/core/ext/upbdefs-gen/envoy/admin/v3/memory.upbdefs.c +2 -1
  683. data/src/core/ext/upbdefs-gen/envoy/admin/v3/memory.upbdefs.h +2 -1
  684. data/src/core/ext/upbdefs-gen/envoy/admin/v3/metrics.upbdefs.c +2 -1
  685. data/src/core/ext/upbdefs-gen/envoy/admin/v3/metrics.upbdefs.h +2 -1
  686. data/src/core/ext/upbdefs-gen/envoy/admin/v3/mutex_stats.upbdefs.c +2 -1
  687. data/src/core/ext/upbdefs-gen/envoy/admin/v3/mutex_stats.upbdefs.h +2 -1
  688. data/src/core/ext/upbdefs-gen/envoy/admin/v3/server_info.upbdefs.c +2 -1
  689. data/src/core/ext/upbdefs-gen/envoy/admin/v3/server_info.upbdefs.h +2 -1
  690. data/src/core/ext/upbdefs-gen/envoy/admin/v3/tap.upbdefs.c +2 -1
  691. data/src/core/ext/upbdefs-gen/envoy/admin/v3/tap.upbdefs.h +2 -1
  692. data/src/core/ext/upbdefs-gen/envoy/annotations/deprecation.upbdefs.c +2 -1
  693. data/src/core/ext/upbdefs-gen/envoy/annotations/deprecation.upbdefs.h +2 -1
  694. data/src/core/ext/upbdefs-gen/envoy/annotations/resource.upbdefs.c +2 -1
  695. data/src/core/ext/upbdefs-gen/envoy/annotations/resource.upbdefs.h +2 -1
  696. data/src/core/ext/upbdefs-gen/envoy/config/accesslog/v3/accesslog.upbdefs.c +2 -1
  697. data/src/core/ext/upbdefs-gen/envoy/config/accesslog/v3/accesslog.upbdefs.h +2 -1
  698. data/src/core/ext/upbdefs-gen/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +2 -1
  699. data/src/core/ext/upbdefs-gen/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +2 -1
  700. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +2 -1
  701. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +2 -1
  702. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/cluster.upbdefs.c +2 -1
  703. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/cluster.upbdefs.h +2 -1
  704. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/filter.upbdefs.c +2 -1
  705. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/filter.upbdefs.h +2 -1
  706. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/outlier_detection.upbdefs.c +2 -1
  707. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/outlier_detection.upbdefs.h +2 -1
  708. data/src/core/ext/upbdefs-gen/envoy/config/common/matcher/v3/matcher.upbdefs.c +2 -1
  709. data/src/core/ext/upbdefs-gen/envoy/config/common/matcher/v3/matcher.upbdefs.h +2 -1
  710. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/address.upbdefs.c +2 -1
  711. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/address.upbdefs.h +2 -1
  712. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/backoff.upbdefs.c +2 -1
  713. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/backoff.upbdefs.h +2 -1
  714. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/base.upbdefs.c +2 -1
  715. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/base.upbdefs.h +2 -1
  716. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/config_source.upbdefs.c +2 -1
  717. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/config_source.upbdefs.h +2 -1
  718. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/event_service_config.upbdefs.c +2 -1
  719. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/event_service_config.upbdefs.h +2 -1
  720. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/extension.upbdefs.c +2 -1
  721. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/extension.upbdefs.h +2 -1
  722. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_method_list.upbdefs.c +2 -1
  723. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_method_list.upbdefs.h +2 -1
  724. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_service.upbdefs.c +2 -1
  725. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_service.upbdefs.h +2 -1
  726. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/health_check.upbdefs.c +2 -1
  727. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/health_check.upbdefs.h +2 -1
  728. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_service.upbdefs.c +2 -1
  729. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_service.upbdefs.h +2 -1
  730. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_uri.upbdefs.c +2 -1
  731. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_uri.upbdefs.h +2 -1
  732. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/protocol.upbdefs.c +2 -1
  733. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/protocol.upbdefs.h +2 -1
  734. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/proxy_protocol.upbdefs.c +2 -1
  735. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/proxy_protocol.upbdefs.h +2 -1
  736. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/resolver.upbdefs.c +2 -1
  737. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/resolver.upbdefs.h +2 -1
  738. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_option.upbdefs.c +2 -1
  739. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_option.upbdefs.h +2 -1
  740. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/substitution_format_string.upbdefs.c +2 -1
  741. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/substitution_format_string.upbdefs.h +2 -1
  742. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/udp_socket_config.upbdefs.c +2 -1
  743. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/udp_socket_config.upbdefs.h +2 -1
  744. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint.upbdefs.c +2 -1
  745. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint.upbdefs.h +2 -1
  746. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +2 -1
  747. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +2 -1
  748. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/load_report.upbdefs.c +2 -1
  749. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/load_report.upbdefs.h +2 -1
  750. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/api_listener.upbdefs.c +2 -1
  751. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/api_listener.upbdefs.h +2 -1
  752. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener.upbdefs.c +2 -1
  753. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener.upbdefs.h +2 -1
  754. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener_components.upbdefs.c +2 -1
  755. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener_components.upbdefs.h +2 -1
  756. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/quic_config.upbdefs.c +2 -1
  757. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/quic_config.upbdefs.h +2 -1
  758. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/udp_listener_config.upbdefs.c +2 -1
  759. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/udp_listener_config.upbdefs.h +2 -1
  760. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/metrics_service.upbdefs.c +2 -1
  761. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/metrics_service.upbdefs.h +2 -1
  762. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/stats.upbdefs.c +2 -1
  763. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/stats.upbdefs.h +2 -1
  764. data/src/core/ext/upbdefs-gen/envoy/config/overload/v3/overload.upbdefs.c +2 -1
  765. data/src/core/ext/upbdefs-gen/envoy/config/overload/v3/overload.upbdefs.h +2 -1
  766. data/src/core/ext/upbdefs-gen/envoy/config/rbac/v3/rbac.upbdefs.c +2 -1
  767. data/src/core/ext/upbdefs-gen/envoy/config/rbac/v3/rbac.upbdefs.h +2 -1
  768. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route.upbdefs.c +2 -1
  769. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route.upbdefs.h +2 -1
  770. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route_components.upbdefs.c +2 -1
  771. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route_components.upbdefs.h +2 -1
  772. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/scoped_route.upbdefs.c +2 -1
  773. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/scoped_route.upbdefs.h +2 -1
  774. data/src/core/ext/upbdefs-gen/envoy/config/tap/v3/common.upbdefs.c +2 -1
  775. data/src/core/ext/upbdefs-gen/envoy/config/tap/v3/common.upbdefs.h +2 -1
  776. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/datadog.upbdefs.c +2 -1
  777. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/datadog.upbdefs.h +2 -1
  778. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/dynamic_ot.upbdefs.c +2 -1
  779. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/dynamic_ot.upbdefs.h +2 -1
  780. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/http_tracer.upbdefs.c +2 -1
  781. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/http_tracer.upbdefs.h +2 -1
  782. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/lightstep.upbdefs.c +2 -1
  783. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/lightstep.upbdefs.h +2 -1
  784. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opencensus.upbdefs.c +2 -1
  785. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opencensus.upbdefs.h +2 -1
  786. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opentelemetry.upbdefs.c +2 -1
  787. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opentelemetry.upbdefs.h +2 -1
  788. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/service.upbdefs.c +2 -1
  789. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/service.upbdefs.h +2 -1
  790. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/skywalking.upbdefs.c +2 -1
  791. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/skywalking.upbdefs.h +2 -1
  792. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/trace.upbdefs.c +2 -1
  793. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/trace.upbdefs.h +2 -1
  794. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/xray.upbdefs.c +2 -1
  795. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/xray.upbdefs.h +2 -1
  796. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/zipkin.upbdefs.c +2 -1
  797. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/zipkin.upbdefs.h +2 -1
  798. data/src/core/ext/upbdefs-gen/envoy/data/accesslog/v3/accesslog.upbdefs.c +2 -1
  799. data/src/core/ext/upbdefs-gen/envoy/data/accesslog/v3/accesslog.upbdefs.h +2 -1
  800. data/src/core/ext/upbdefs-gen/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +2 -1
  801. data/src/core/ext/upbdefs-gen/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +2 -1
  802. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +2 -1
  803. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +2 -1
  804. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +2 -1
  805. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +2 -1
  806. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upbdefs.c +2 -1
  807. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upbdefs.h +2 -1
  808. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +2 -1
  809. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +2 -1
  810. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/router/v3/router.upbdefs.c +2 -1
  811. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/router/v3/router.upbdefs.h +2 -1
  812. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.c +2 -1
  813. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.h +2 -1
  814. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +2 -1
  815. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +2 -1
  816. data/src/core/ext/upbdefs-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.c +2 -1
  817. data/src/core/ext/upbdefs-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.h +2 -1
  818. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upbdefs.c +53 -0
  819. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upbdefs.h +33 -0
  820. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +2 -1
  821. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +2 -1
  822. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +2 -1
  823. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +2 -1
  824. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +2 -1
  825. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +2 -1
  826. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +2 -1
  827. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +2 -1
  828. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.c +2 -1
  829. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.h +2 -1
  830. data/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.c +2 -1
  831. data/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.h +2 -1
  832. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/ads.upbdefs.c +2 -1
  833. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/ads.upbdefs.h +2 -1
  834. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/discovery.upbdefs.c +2 -1
  835. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/discovery.upbdefs.h +2 -1
  836. data/src/core/ext/upbdefs-gen/envoy/service/load_stats/v3/lrs.upbdefs.c +2 -1
  837. data/src/core/ext/upbdefs-gen/envoy/service/load_stats/v3/lrs.upbdefs.h +2 -1
  838. data/src/core/ext/upbdefs-gen/envoy/service/status/v3/csds.upbdefs.c +2 -1
  839. data/src/core/ext/upbdefs-gen/envoy/service/status/v3/csds.upbdefs.h +2 -1
  840. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/cookie.upbdefs.c +2 -1
  841. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/cookie.upbdefs.h +2 -1
  842. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/path_transformation.upbdefs.c +2 -1
  843. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/path_transformation.upbdefs.h +2 -1
  844. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/filter_state.upbdefs.c +2 -1
  845. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/filter_state.upbdefs.h +2 -1
  846. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/http_inputs.upbdefs.c +2 -1
  847. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/http_inputs.upbdefs.h +2 -1
  848. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/metadata.upbdefs.c +2 -1
  849. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/metadata.upbdefs.h +2 -1
  850. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/node.upbdefs.c +2 -1
  851. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/node.upbdefs.h +2 -1
  852. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/number.upbdefs.c +2 -1
  853. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/number.upbdefs.h +2 -1
  854. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/path.upbdefs.c +2 -1
  855. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/path.upbdefs.h +2 -1
  856. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/regex.upbdefs.c +2 -1
  857. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/regex.upbdefs.h +2 -1
  858. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/status_code_input.upbdefs.c +2 -1
  859. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/status_code_input.upbdefs.h +2 -1
  860. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/string.upbdefs.c +2 -1
  861. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/string.upbdefs.h +2 -1
  862. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/struct.upbdefs.c +2 -1
  863. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/struct.upbdefs.h +2 -1
  864. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/value.upbdefs.c +2 -1
  865. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/value.upbdefs.h +2 -1
  866. data/src/core/ext/upbdefs-gen/envoy/type/metadata/v3/metadata.upbdefs.c +2 -1
  867. data/src/core/ext/upbdefs-gen/envoy/type/metadata/v3/metadata.upbdefs.h +2 -1
  868. data/src/core/ext/upbdefs-gen/envoy/type/tracing/v3/custom_tag.upbdefs.c +2 -1
  869. data/src/core/ext/upbdefs-gen/envoy/type/tracing/v3/custom_tag.upbdefs.h +2 -1
  870. data/src/core/ext/upbdefs-gen/envoy/type/v3/hash_policy.upbdefs.c +2 -1
  871. data/src/core/ext/upbdefs-gen/envoy/type/v3/hash_policy.upbdefs.h +2 -1
  872. data/src/core/ext/upbdefs-gen/envoy/type/v3/http.upbdefs.c +2 -1
  873. data/src/core/ext/upbdefs-gen/envoy/type/v3/http.upbdefs.h +2 -1
  874. data/src/core/ext/upbdefs-gen/envoy/type/v3/http_status.upbdefs.c +2 -1
  875. data/src/core/ext/upbdefs-gen/envoy/type/v3/http_status.upbdefs.h +2 -1
  876. data/src/core/ext/upbdefs-gen/envoy/type/v3/percent.upbdefs.c +2 -1
  877. data/src/core/ext/upbdefs-gen/envoy/type/v3/percent.upbdefs.h +2 -1
  878. data/src/core/ext/upbdefs-gen/envoy/type/v3/range.upbdefs.c +2 -1
  879. data/src/core/ext/upbdefs-gen/envoy/type/v3/range.upbdefs.h +2 -1
  880. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_strategy.upbdefs.c +2 -1
  881. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_strategy.upbdefs.h +2 -1
  882. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_unit.upbdefs.c +2 -1
  883. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_unit.upbdefs.h +2 -1
  884. data/src/core/ext/upbdefs-gen/envoy/type/v3/semantic_version.upbdefs.c +2 -1
  885. data/src/core/ext/upbdefs-gen/envoy/type/v3/semantic_version.upbdefs.h +2 -1
  886. data/src/core/ext/upbdefs-gen/envoy/type/v3/token_bucket.upbdefs.c +2 -1
  887. data/src/core/ext/upbdefs-gen/envoy/type/v3/token_bucket.upbdefs.h +2 -1
  888. data/src/core/ext/upbdefs-gen/google/api/annotations.upbdefs.c +2 -1
  889. data/src/core/ext/upbdefs-gen/google/api/annotations.upbdefs.h +2 -1
  890. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/checked.upbdefs.c +2 -1
  891. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/checked.upbdefs.h +2 -1
  892. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/syntax.upbdefs.c +2 -1
  893. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/syntax.upbdefs.h +2 -1
  894. data/src/core/ext/upbdefs-gen/google/api/http.upbdefs.c +2 -1
  895. data/src/core/ext/upbdefs-gen/google/api/http.upbdefs.h +2 -1
  896. data/src/core/ext/upbdefs-gen/google/api/httpbody.upbdefs.c +2 -1
  897. data/src/core/ext/upbdefs-gen/google/api/httpbody.upbdefs.h +2 -1
  898. data/src/core/ext/upbdefs-gen/google/protobuf/any.upbdefs.c +2 -1
  899. data/src/core/ext/upbdefs-gen/google/protobuf/any.upbdefs.h +2 -1
  900. data/src/core/ext/upbdefs-gen/google/protobuf/descriptor.upbdefs.c +8 -7
  901. data/src/core/ext/upbdefs-gen/google/protobuf/descriptor.upbdefs.h +2 -1
  902. data/src/core/ext/upbdefs-gen/google/protobuf/duration.upbdefs.c +2 -1
  903. data/src/core/ext/upbdefs-gen/google/protobuf/duration.upbdefs.h +2 -1
  904. data/src/core/ext/upbdefs-gen/google/protobuf/empty.upbdefs.c +2 -1
  905. data/src/core/ext/upbdefs-gen/google/protobuf/empty.upbdefs.h +2 -1
  906. data/src/core/ext/upbdefs-gen/google/protobuf/struct.upbdefs.c +2 -1
  907. data/src/core/ext/upbdefs-gen/google/protobuf/struct.upbdefs.h +2 -1
  908. data/src/core/ext/upbdefs-gen/google/protobuf/timestamp.upbdefs.c +2 -1
  909. data/src/core/ext/upbdefs-gen/google/protobuf/timestamp.upbdefs.h +2 -1
  910. data/src/core/ext/upbdefs-gen/google/protobuf/wrappers.upbdefs.c +2 -1
  911. data/src/core/ext/upbdefs-gen/google/protobuf/wrappers.upbdefs.h +2 -1
  912. data/src/core/ext/upbdefs-gen/google/rpc/status.upbdefs.c +2 -1
  913. data/src/core/ext/upbdefs-gen/google/rpc/status.upbdefs.h +2 -1
  914. data/src/core/ext/upbdefs-gen/opencensus/proto/trace/v1/trace_config.upbdefs.c +2 -1
  915. data/src/core/ext/upbdefs-gen/opencensus/proto/trace/v1/trace_config.upbdefs.h +2 -1
  916. data/src/core/ext/upbdefs-gen/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +2 -1
  917. data/src/core/ext/upbdefs-gen/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +2 -1
  918. data/src/core/ext/upbdefs-gen/udpa/annotations/migrate.upbdefs.c +2 -1
  919. data/src/core/ext/upbdefs-gen/udpa/annotations/migrate.upbdefs.h +2 -1
  920. data/src/core/ext/upbdefs-gen/udpa/annotations/security.upbdefs.c +2 -1
  921. data/src/core/ext/upbdefs-gen/udpa/annotations/security.upbdefs.h +2 -1
  922. data/src/core/ext/upbdefs-gen/udpa/annotations/sensitive.upbdefs.c +2 -1
  923. data/src/core/ext/upbdefs-gen/udpa/annotations/sensitive.upbdefs.h +2 -1
  924. data/src/core/ext/upbdefs-gen/udpa/annotations/status.upbdefs.c +2 -1
  925. data/src/core/ext/upbdefs-gen/udpa/annotations/status.upbdefs.h +2 -1
  926. data/src/core/ext/upbdefs-gen/udpa/annotations/versioning.upbdefs.c +2 -1
  927. data/src/core/ext/upbdefs-gen/udpa/annotations/versioning.upbdefs.h +2 -1
  928. data/src/core/ext/upbdefs-gen/validate/validate.upbdefs.c +2 -1
  929. data/src/core/ext/upbdefs-gen/validate/validate.upbdefs.h +2 -1
  930. data/src/core/ext/upbdefs-gen/xds/annotations/v3/migrate.upbdefs.c +2 -1
  931. data/src/core/ext/upbdefs-gen/xds/annotations/v3/migrate.upbdefs.h +2 -1
  932. data/src/core/ext/upbdefs-gen/xds/annotations/v3/security.upbdefs.c +2 -1
  933. data/src/core/ext/upbdefs-gen/xds/annotations/v3/security.upbdefs.h +2 -1
  934. data/src/core/ext/upbdefs-gen/xds/annotations/v3/sensitive.upbdefs.c +2 -1
  935. data/src/core/ext/upbdefs-gen/xds/annotations/v3/sensitive.upbdefs.h +2 -1
  936. data/src/core/ext/upbdefs-gen/xds/annotations/v3/status.upbdefs.c +2 -1
  937. data/src/core/ext/upbdefs-gen/xds/annotations/v3/status.upbdefs.h +2 -1
  938. data/src/core/ext/upbdefs-gen/xds/annotations/v3/versioning.upbdefs.c +2 -1
  939. data/src/core/ext/upbdefs-gen/xds/annotations/v3/versioning.upbdefs.h +2 -1
  940. data/src/core/ext/upbdefs-gen/xds/core/v3/authority.upbdefs.c +2 -1
  941. data/src/core/ext/upbdefs-gen/xds/core/v3/authority.upbdefs.h +2 -1
  942. data/src/core/ext/upbdefs-gen/xds/core/v3/cidr.upbdefs.c +2 -1
  943. data/src/core/ext/upbdefs-gen/xds/core/v3/cidr.upbdefs.h +2 -1
  944. data/src/core/ext/upbdefs-gen/xds/core/v3/collection_entry.upbdefs.c +2 -1
  945. data/src/core/ext/upbdefs-gen/xds/core/v3/collection_entry.upbdefs.h +2 -1
  946. data/src/core/ext/upbdefs-gen/xds/core/v3/context_params.upbdefs.c +2 -1
  947. data/src/core/ext/upbdefs-gen/xds/core/v3/context_params.upbdefs.h +2 -1
  948. data/src/core/ext/upbdefs-gen/xds/core/v3/extension.upbdefs.c +2 -1
  949. data/src/core/ext/upbdefs-gen/xds/core/v3/extension.upbdefs.h +2 -1
  950. data/src/core/ext/upbdefs-gen/xds/core/v3/resource.upbdefs.c +2 -1
  951. data/src/core/ext/upbdefs-gen/xds/core/v3/resource.upbdefs.h +2 -1
  952. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_locator.upbdefs.c +2 -1
  953. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_locator.upbdefs.h +2 -1
  954. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_name.upbdefs.c +2 -1
  955. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_name.upbdefs.h +2 -1
  956. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/cel.upbdefs.c +2 -1
  957. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/cel.upbdefs.h +2 -1
  958. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/domain.upbdefs.c +2 -1
  959. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/domain.upbdefs.h +2 -1
  960. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/http_inputs.upbdefs.c +2 -1
  961. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/http_inputs.upbdefs.h +2 -1
  962. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/ip.upbdefs.c +2 -1
  963. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/ip.upbdefs.h +2 -1
  964. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/matcher.upbdefs.c +2 -1
  965. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/matcher.upbdefs.h +2 -1
  966. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/range.upbdefs.c +2 -1
  967. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/range.upbdefs.h +2 -1
  968. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/regex.upbdefs.c +2 -1
  969. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/regex.upbdefs.h +2 -1
  970. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/string.upbdefs.c +2 -1
  971. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/string.upbdefs.h +2 -1
  972. data/src/core/ext/upbdefs-gen/xds/type/v3/cel.upbdefs.c +2 -1
  973. data/src/core/ext/upbdefs-gen/xds/type/v3/cel.upbdefs.h +2 -1
  974. data/src/core/ext/upbdefs-gen/xds/type/v3/range.upbdefs.c +2 -1
  975. data/src/core/ext/upbdefs-gen/xds/type/v3/range.upbdefs.h +2 -1
  976. data/src/core/ext/upbdefs-gen/xds/type/v3/typed_struct.upbdefs.c +2 -1
  977. data/src/core/ext/upbdefs-gen/xds/type/v3/typed_struct.upbdefs.h +2 -1
  978. data/src/core/filter/blackboard.cc +33 -0
  979. data/src/core/filter/blackboard.h +70 -0
  980. data/src/core/handshaker/endpoint_info/endpoint_info_handshaker.cc +4 -5
  981. data/src/core/handshaker/handshaker.cc +8 -11
  982. data/src/core/handshaker/handshaker.h +8 -10
  983. data/src/core/handshaker/handshaker_registry.cc +1 -2
  984. data/src/core/handshaker/handshaker_registry.h +2 -2
  985. data/src/core/handshaker/http_connect/http_connect_handshaker.cc +7 -10
  986. data/src/core/handshaker/http_connect/http_proxy_mapper.cc +7 -9
  987. data/src/core/handshaker/http_connect/http_proxy_mapper.h +2 -3
  988. data/src/core/handshaker/http_connect/xds_http_proxy_mapper.cc +57 -0
  989. data/src/core/handshaker/http_connect/xds_http_proxy_mapper.h +46 -0
  990. data/src/core/handshaker/proxy_mapper.h +2 -3
  991. data/src/core/handshaker/proxy_mapper_registry.cc +2 -2
  992. data/src/core/handshaker/proxy_mapper_registry.h +2 -3
  993. data/src/core/handshaker/security/secure_endpoint.cc +12 -14
  994. data/src/core/handshaker/security/secure_endpoint.h +2 -3
  995. data/src/core/handshaker/security/security_handshaker.cc +14 -20
  996. data/src/core/handshaker/security/security_handshaker.h +2 -3
  997. data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +9 -10
  998. data/src/core/lib/address_utils/parse_address.cc +3 -4
  999. data/src/core/lib/address_utils/parse_address.h +2 -4
  1000. data/src/core/lib/address_utils/sockaddr_utils.cc +4 -6
  1001. data/src/core/lib/address_utils/sockaddr_utils.h +1 -3
  1002. data/src/core/lib/channel/call_finalization.h +2 -2
  1003. data/src/core/lib/channel/channel_args.cc +4 -6
  1004. data/src/core/lib/channel/channel_args.h +10 -12
  1005. data/src/core/lib/channel/channel_args_preconditioning.cc +2 -2
  1006. data/src/core/lib/channel/channel_args_preconditioning.h +3 -3
  1007. data/src/core/lib/channel/channel_stack.cc +5 -4
  1008. data/src/core/lib/channel/channel_stack.h +17 -17
  1009. data/src/core/lib/channel/channel_stack_builder.cc +2 -2
  1010. data/src/core/lib/channel/channel_stack_builder.h +3 -4
  1011. data/src/core/lib/channel/channel_stack_builder_impl.cc +5 -7
  1012. data/src/core/lib/channel/channel_stack_builder_impl.h +15 -3
  1013. data/src/core/lib/channel/connected_channel.cc +8 -10
  1014. data/src/core/lib/channel/promise_based_filter.cc +32 -23
  1015. data/src/core/lib/channel/promise_based_filter.h +43 -14
  1016. data/src/core/lib/channel/status_util.cc +1 -3
  1017. data/src/core/lib/channel/status_util.h +3 -3
  1018. data/src/core/lib/compression/compression.cc +3 -5
  1019. data/src/core/lib/compression/compression_internal.cc +5 -7
  1020. data/src/core/lib/compression/compression_internal.h +3 -5
  1021. data/src/core/lib/compression/message_compress.cc +3 -6
  1022. data/src/core/lib/config/config_vars.cc +2 -3
  1023. data/src/core/lib/config/config_vars.h +1 -2
  1024. data/src/core/lib/config/config_vars_non_generated.cc +2 -2
  1025. data/src/core/lib/config/core_configuration.cc +2 -2
  1026. data/src/core/lib/config/core_configuration.h +2 -3
  1027. data/src/core/lib/config/load_config.cc +2 -4
  1028. data/src/core/lib/config/load_config.h +1 -2
  1029. data/src/core/lib/debug/trace.cc +4 -5
  1030. data/src/core/lib/debug/trace_flags.cc +1 -2
  1031. data/src/core/lib/debug/trace_impl.h +2 -2
  1032. data/src/core/lib/event_engine/ares_resolver.cc +10 -12
  1033. data/src/core/lib/event_engine/ares_resolver.h +7 -10
  1034. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +2 -4
  1035. data/src/core/lib/event_engine/cf_engine/cf_engine.h +1 -1
  1036. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +1 -2
  1037. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +4 -6
  1038. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc +2 -3
  1039. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.h +3 -5
  1040. data/src/core/lib/event_engine/channel_args_endpoint_config.cc +3 -4
  1041. data/src/core/lib/event_engine/channel_args_endpoint_config.h +2 -3
  1042. data/src/core/lib/event_engine/common_closures.h +3 -3
  1043. data/src/core/lib/event_engine/default_event_engine.cc +6 -7
  1044. data/src/core/lib/event_engine/default_event_engine.h +3 -3
  1045. data/src/core/lib/event_engine/default_event_engine_factory.cc +2 -2
  1046. data/src/core/lib/event_engine/default_event_engine_factory.h +2 -2
  1047. data/src/core/lib/event_engine/event_engine.cc +2 -2
  1048. data/src/core/lib/event_engine/extensions/can_track_errors.h +2 -2
  1049. data/src/core/lib/event_engine/extensions/chaotic_good_extension.h +1 -2
  1050. data/src/core/lib/event_engine/extensions/supports_fd.h +20 -3
  1051. data/src/core/lib/event_engine/extensions/tcp_trace.h +0 -1
  1052. data/src/core/lib/event_engine/forkable.cc +2 -2
  1053. data/src/core/lib/event_engine/forkable.h +2 -2
  1054. data/src/core/lib/event_engine/grpc_polled_fd.h +3 -4
  1055. data/src/core/lib/event_engine/handle_containers.h +2 -3
  1056. data/src/core/lib/event_engine/memory_allocator_factory.h +3 -4
  1057. data/src/core/lib/event_engine/poller.h +2 -2
  1058. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +9 -11
  1059. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +4 -5
  1060. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +13 -16
  1061. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +4 -5
  1062. data/src/core/lib/event_engine/posix_engine/event_poller.h +3 -4
  1063. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +3 -4
  1064. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.h +2 -2
  1065. data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +4 -6
  1066. data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +2 -3
  1067. data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +1 -2
  1068. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +5 -6
  1069. data/src/core/lib/event_engine/posix_engine/lockfree_event.h +2 -3
  1070. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc +2 -3
  1071. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.h +2 -3
  1072. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +14 -16
  1073. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +8 -9
  1074. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +43 -27
  1075. data/src/core/lib/event_engine/posix_engine/posix_engine.h +16 -14
  1076. data/src/core/lib/event_engine/posix_engine/posix_engine_closure.h +3 -3
  1077. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +6 -8
  1078. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +12 -11
  1079. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +4 -6
  1080. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +1 -2
  1081. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +8 -11
  1082. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +7 -8
  1083. data/src/core/lib/event_engine/posix_engine/timer.cc +4 -4
  1084. data/src/core/lib/event_engine/posix_engine/timer.h +5 -7
  1085. data/src/core/lib/event_engine/posix_engine/timer_heap.cc +1 -2
  1086. data/src/core/lib/event_engine/posix_engine/timer_heap.h +2 -2
  1087. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +3 -4
  1088. data/src/core/lib/event_engine/posix_engine/timer_manager.h +5 -7
  1089. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +4 -6
  1090. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +3 -5
  1091. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +5 -6
  1092. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +2 -3
  1093. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +4 -5
  1094. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +2 -3
  1095. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +2 -2
  1096. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +2 -3
  1097. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +2 -2
  1098. data/src/core/lib/event_engine/query_extensions.h +2 -2
  1099. data/src/core/lib/event_engine/ref_counted_dns_resolver_interface.h +3 -5
  1100. data/src/core/lib/event_engine/resolved_address.cc +5 -4
  1101. data/src/core/lib/event_engine/slice.cc +3 -5
  1102. data/src/core/lib/event_engine/slice_buffer.cc +1 -2
  1103. data/src/core/lib/event_engine/tcp_socket_utils.cc +3 -4
  1104. data/src/core/lib/event_engine/tcp_socket_utils.h +3 -3
  1105. data/src/core/lib/event_engine/thread_pool/thread_count.cc +2 -4
  1106. data/src/core/lib/event_engine/thread_pool/thread_count.h +5 -6
  1107. data/src/core/lib/event_engine/thread_pool/thread_pool.h +2 -4
  1108. data/src/core/lib/event_engine/thread_pool/thread_pool_factory.cc +2 -3
  1109. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +8 -10
  1110. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +7 -9
  1111. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +5 -5
  1112. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +5 -5
  1113. data/src/core/lib/event_engine/time_util.cc +2 -2
  1114. data/src/core/lib/event_engine/time_util.h +1 -2
  1115. data/src/core/lib/event_engine/utils.cc +19 -5
  1116. data/src/core/lib/event_engine/utils.h +10 -4
  1117. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +4 -7
  1118. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.h +4 -6
  1119. data/src/core/lib/event_engine/windows/iocp.cc +4 -5
  1120. data/src/core/lib/event_engine/windows/iocp.h +1 -2
  1121. data/src/core/lib/event_engine/windows/native_windows_dns_resolver.cc +4 -6
  1122. data/src/core/lib/event_engine/windows/win_socket.cc +4 -5
  1123. data/src/core/lib/event_engine/windows/win_socket.h +4 -5
  1124. data/src/core/lib/event_engine/windows/windows_endpoint.cc +5 -6
  1125. data/src/core/lib/event_engine/windows/windows_engine.cc +10 -11
  1126. data/src/core/lib/event_engine/windows/windows_engine.h +7 -8
  1127. data/src/core/lib/event_engine/windows/windows_listener.cc +2 -3
  1128. data/src/core/lib/event_engine/windows/windows_listener.h +4 -5
  1129. data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +3 -3
  1130. data/src/core/lib/event_engine/work_queue/basic_work_queue.h +3 -5
  1131. data/src/core/lib/event_engine/work_queue/work_queue.h +2 -3
  1132. data/src/core/lib/experiments/config.cc +8 -11
  1133. data/src/core/lib/experiments/config.h +1 -2
  1134. data/src/core/lib/experiments/experiments.cc +65 -26
  1135. data/src/core/lib/experiments/experiments.h +28 -13
  1136. data/src/core/lib/iomgr/buffer_list.cc +3 -4
  1137. data/src/core/lib/iomgr/buffer_list.h +2 -3
  1138. data/src/core/lib/iomgr/call_combiner.cc +2 -4
  1139. data/src/core/lib/iomgr/call_combiner.h +5 -7
  1140. data/src/core/lib/iomgr/cfstream_handle.cc +2 -4
  1141. data/src/core/lib/iomgr/cfstream_handle.h +1 -1
  1142. data/src/core/lib/iomgr/closure.cc +2 -2
  1143. data/src/core/lib/iomgr/closure.h +6 -8
  1144. data/src/core/lib/iomgr/combiner.cc +4 -6
  1145. data/src/core/lib/iomgr/combiner.h +1 -2
  1146. data/src/core/lib/iomgr/endpoint.h +1 -2
  1147. data/src/core/lib/iomgr/endpoint_cfstream.cc +2 -4
  1148. data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -4
  1149. data/src/core/lib/iomgr/endpoint_pair_windows.cc +1 -2
  1150. data/src/core/lib/iomgr/error.cc +6 -8
  1151. data/src/core/lib/iomgr/error.h +6 -8
  1152. data/src/core/lib/iomgr/error_cfstream.cc +1 -3
  1153. data/src/core/lib/iomgr/ev_apple.cc +2 -3
  1154. data/src/core/lib/iomgr/ev_epoll1_linux.cc +5 -7
  1155. data/src/core/lib/iomgr/ev_poll_posix.cc +3 -5
  1156. data/src/core/lib/iomgr/ev_posix.cc +3 -5
  1157. data/src/core/lib/iomgr/ev_posix.h +1 -2
  1158. data/src/core/lib/iomgr/event_engine_shims/closure.cc +3 -4
  1159. data/src/core/lib/iomgr/event_engine_shims/closure.h +1 -2
  1160. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +10 -11
  1161. data/src/core/lib/iomgr/event_engine_shims/endpoint.h +2 -2
  1162. data/src/core/lib/iomgr/event_engine_shims/tcp_client.cc +2 -3
  1163. data/src/core/lib/iomgr/exec_ctx.cc +4 -5
  1164. data/src/core/lib/iomgr/exec_ctx.h +6 -8
  1165. data/src/core/lib/iomgr/executor.cc +6 -8
  1166. data/src/core/lib/iomgr/executor.h +1 -1
  1167. data/src/core/lib/iomgr/fork_posix.cc +5 -7
  1168. data/src/core/lib/iomgr/fork_windows.cc +2 -2
  1169. data/src/core/lib/iomgr/internal_errqueue.cc +2 -3
  1170. data/src/core/lib/iomgr/iocp_windows.cc +4 -6
  1171. data/src/core/lib/iomgr/iomgr.cc +6 -8
  1172. data/src/core/lib/iomgr/iomgr.h +1 -2
  1173. data/src/core/lib/iomgr/iomgr_internal.cc +1 -2
  1174. data/src/core/lib/iomgr/iomgr_internal.h +1 -2
  1175. data/src/core/lib/iomgr/iomgr_windows.cc +1 -2
  1176. data/src/core/lib/iomgr/lockfree_event.cc +3 -4
  1177. data/src/core/lib/iomgr/polling_entity.cc +3 -4
  1178. data/src/core/lib/iomgr/pollset_set_windows.cc +1 -2
  1179. data/src/core/lib/iomgr/pollset_windows.cc +2 -2
  1180. data/src/core/lib/iomgr/port.h +2 -2
  1181. data/src/core/lib/iomgr/resolve_address.cc +3 -4
  1182. data/src/core/lib/iomgr/resolve_address.h +4 -6
  1183. data/src/core/lib/iomgr/resolve_address_impl.h +1 -2
  1184. data/src/core/lib/iomgr/resolve_address_posix.cc +6 -7
  1185. data/src/core/lib/iomgr/resolve_address_posix.h +2 -2
  1186. data/src/core/lib/iomgr/resolve_address_windows.cc +8 -10
  1187. data/src/core/lib/iomgr/resolve_address_windows.h +2 -2
  1188. data/src/core/lib/iomgr/resolved_address.h +1 -2
  1189. data/src/core/lib/iomgr/sockaddr_utils_posix.cc +3 -5
  1190. data/src/core/lib/iomgr/socket_mutator.cc +1 -1
  1191. data/src/core/lib/iomgr/socket_mutator.h +1 -2
  1192. data/src/core/lib/iomgr/socket_utils.h +1 -2
  1193. data/src/core/lib/iomgr/socket_utils_common_posix.cc +5 -7
  1194. data/src/core/lib/iomgr/socket_utils_linux.cc +1 -1
  1195. data/src/core/lib/iomgr/socket_utils_posix.cc +4 -6
  1196. data/src/core/lib/iomgr/socket_utils_windows.cc +1 -1
  1197. data/src/core/lib/iomgr/socket_windows.cc +3 -5
  1198. data/src/core/lib/iomgr/socket_windows.h +1 -2
  1199. data/src/core/lib/iomgr/tcp_client_cfstream.cc +5 -7
  1200. data/src/core/lib/iomgr/tcp_client_posix.cc +3 -5
  1201. data/src/core/lib/iomgr/tcp_client_windows.cc +3 -5
  1202. data/src/core/lib/iomgr/tcp_posix.cc +13 -16
  1203. data/src/core/lib/iomgr/tcp_server.h +2 -2
  1204. data/src/core/lib/iomgr/tcp_server_posix.cc +9 -11
  1205. data/src/core/lib/iomgr/tcp_server_utils_posix.h +2 -3
  1206. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +3 -5
  1207. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +2 -4
  1208. data/src/core/lib/iomgr/tcp_server_windows.cc +8 -10
  1209. data/src/core/lib/iomgr/tcp_windows.cc +4 -6
  1210. data/src/core/lib/iomgr/timer.h +2 -2
  1211. data/src/core/lib/iomgr/timer_generic.cc +8 -10
  1212. data/src/core/lib/iomgr/timer_heap.cc +1 -2
  1213. data/src/core/lib/iomgr/timer_manager.cc +4 -6
  1214. data/src/core/lib/iomgr/timer_manager.h +1 -2
  1215. data/src/core/lib/iomgr/unix_sockets_posix.cc +3 -4
  1216. data/src/core/lib/iomgr/unix_sockets_posix.h +3 -4
  1217. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +0 -2
  1218. data/src/core/lib/iomgr/vsock.cc +2 -4
  1219. data/src/core/lib/iomgr/vsock.h +3 -4
  1220. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +2 -2
  1221. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +2 -3
  1222. data/src/core/lib/promise/activity.cc +2 -4
  1223. data/src/core/lib/promise/activity.h +9 -11
  1224. data/src/core/lib/promise/all_ok.h +3 -4
  1225. data/src/core/lib/promise/arena_promise.h +2 -4
  1226. data/src/core/lib/promise/cancel_callback.h +4 -4
  1227. data/src/core/lib/promise/context.h +7 -8
  1228. data/src/core/lib/promise/detail/basic_seq.h +1 -1
  1229. data/src/core/lib/promise/detail/join_state.h +4 -5
  1230. data/src/core/lib/promise/detail/promise_factory.h +6 -7
  1231. data/src/core/lib/promise/detail/promise_like.h +3 -4
  1232. data/src/core/lib/promise/detail/seq_state.h +3 -5
  1233. data/src/core/lib/promise/detail/status.h +5 -5
  1234. data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +2 -3
  1235. data/src/core/lib/promise/for_each.h +9 -10
  1236. data/src/core/lib/promise/if.h +9 -9
  1237. data/src/core/lib/promise/interceptor_list.h +3 -5
  1238. data/src/core/lib/promise/latch.h +1 -3
  1239. data/src/core/lib/promise/loop.h +4 -5
  1240. data/src/core/lib/promise/map.h +4 -5
  1241. data/src/core/lib/promise/observable.h +3 -4
  1242. data/src/core/lib/promise/party.cc +24 -16
  1243. data/src/core/lib/promise/party.h +10 -10
  1244. data/src/core/lib/promise/pipe.h +3 -5
  1245. data/src/core/lib/promise/poll.h +6 -7
  1246. data/src/core/lib/promise/prioritized_race.h +2 -2
  1247. data/src/core/lib/promise/promise.h +5 -6
  1248. data/src/core/lib/promise/race.h +4 -4
  1249. data/src/core/lib/promise/seq.h +11 -10
  1250. data/src/core/lib/promise/sleep.cc +3 -3
  1251. data/src/core/lib/promise/sleep.h +4 -5
  1252. data/src/core/lib/promise/status_flag.h +2 -3
  1253. data/src/core/lib/promise/try_join.h +5 -5
  1254. data/src/core/lib/promise/try_seq.h +10 -10
  1255. data/src/core/lib/resource_quota/api.cc +4 -6
  1256. data/src/core/lib/resource_quota/api.h +1 -2
  1257. data/src/core/lib/resource_quota/arena.cc +3 -4
  1258. data/src/core/lib/resource_quota/arena.h +4 -5
  1259. data/src/core/lib/resource_quota/connection_quota.cc +2 -2
  1260. data/src/core/lib/resource_quota/connection_quota.h +5 -6
  1261. data/src/core/lib/resource_quota/memory_quota.cc +4 -6
  1262. data/src/core/lib/resource_quota/memory_quota.h +16 -12
  1263. data/src/core/lib/resource_quota/periodic_update.cc +3 -3
  1264. data/src/core/lib/resource_quota/periodic_update.h +2 -4
  1265. data/src/core/lib/resource_quota/resource_quota.h +7 -8
  1266. data/src/core/lib/resource_quota/thread_quota.cc +2 -2
  1267. data/src/core/lib/resource_quota/thread_quota.h +5 -6
  1268. data/src/core/lib/security/authorization/audit_logging.cc +5 -6
  1269. data/src/core/lib/security/authorization/audit_logging.h +5 -6
  1270. data/src/core/lib/security/authorization/authorization_engine.h +3 -3
  1271. data/src/core/lib/security/authorization/authorization_policy_provider.h +3 -4
  1272. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +1 -1
  1273. data/src/core/lib/security/authorization/evaluate_args.cc +4 -6
  1274. data/src/core/lib/security/authorization/evaluate_args.h +3 -4
  1275. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +2 -3
  1276. data/src/core/lib/security/authorization/grpc_authorization_engine.h +2 -3
  1277. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +5 -3
  1278. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +2 -3
  1279. data/src/core/lib/security/authorization/matchers.cc +2 -4
  1280. data/src/core/lib/security/authorization/matchers.h +2 -4
  1281. data/src/core/lib/security/authorization/rbac_policy.cc +2 -2
  1282. data/src/core/lib/security/authorization/rbac_policy.h +3 -5
  1283. data/src/core/lib/security/authorization/stdout_logger.cc +4 -4
  1284. data/src/core/lib/security/authorization/stdout_logger.h +4 -4
  1285. data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +6 -7
  1286. data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +2 -2
  1287. data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +2 -3
  1288. data/src/core/lib/security/context/security_context.cc +6 -8
  1289. data/src/core/lib/security/context/security_context.h +8 -10
  1290. data/src/core/lib/security/credentials/alts/alts_credentials.cc +5 -5
  1291. data/src/core/lib/security/credentials/alts/alts_credentials.h +8 -4
  1292. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +2 -3
  1293. data/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc +1 -2
  1294. data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +1 -2
  1295. data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +3 -4
  1296. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +1 -2
  1297. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc +2 -2
  1298. data/src/core/lib/security/credentials/call_creds_util.cc +6 -5
  1299. data/src/core/lib/security/credentials/call_creds_util.h +2 -2
  1300. data/src/core/lib/security/credentials/channel_creds_registry.h +5 -6
  1301. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +9 -10
  1302. data/src/core/lib/security/credentials/composite/composite_credentials.cc +3 -4
  1303. data/src/core/lib/security/credentials/composite/composite_credentials.h +8 -9
  1304. data/src/core/lib/security/credentials/credentials.cc +1 -4
  1305. data/src/core/lib/security/credentials/credentials.h +11 -12
  1306. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +10 -12
  1307. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +7 -6
  1308. data/src/core/lib/security/credentials/external/aws_request_signer.cc +4 -5
  1309. data/src/core/lib/security/credentials/external/aws_request_signer.h +3 -3
  1310. data/src/core/lib/security/credentials/external/external_account_credentials.cc +9 -11
  1311. data/src/core/lib/security/credentials/external/external_account_credentials.h +5 -7
  1312. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +6 -7
  1313. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +6 -5
  1314. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +8 -10
  1315. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +8 -7
  1316. data/src/core/lib/security/credentials/fake/fake_credentials.cc +2 -4
  1317. data/src/core/lib/security/credentials/fake/fake_credentials.h +5 -6
  1318. data/src/core/lib/security/credentials/gcp_service_account_identity/gcp_service_account_identity_credentials.cc +5 -6
  1319. data/src/core/lib/security/credentials/gcp_service_account_identity/gcp_service_account_identity_credentials.h +7 -7
  1320. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +3 -4
  1321. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +17 -20
  1322. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +7 -5
  1323. data/src/core/lib/security/credentials/iam/iam_credentials.cc +2 -4
  1324. data/src/core/lib/security/credentials/iam/iam_credentials.h +5 -6
  1325. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +2 -2
  1326. data/src/core/lib/security/credentials/insecure/insecure_credentials.h +2 -2
  1327. data/src/core/lib/security/credentials/jwt/json_token.cc +11 -14
  1328. data/src/core/lib/security/credentials/jwt/json_token.h +1 -2
  1329. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +8 -10
  1330. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +7 -9
  1331. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +18 -21
  1332. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +2 -3
  1333. data/src/core/lib/security/credentials/local/local_credentials.cc +2 -2
  1334. data/src/core/lib/security/credentials/local/local_credentials.h +2 -2
  1335. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +14 -16
  1336. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +12 -13
  1337. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +3 -4
  1338. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +9 -11
  1339. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +4 -6
  1340. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +4 -6
  1341. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +3 -3
  1342. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +4 -5
  1343. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_match.cc +1 -3
  1344. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +79 -9
  1345. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +13 -11
  1346. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +4 -6
  1347. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +8 -9
  1348. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -5
  1349. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +1 -1
  1350. data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.cc +3 -5
  1351. data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.h +8 -10
  1352. data/src/core/lib/security/credentials/tls/tls_credentials.cc +6 -7
  1353. data/src/core/lib/security/credentials/tls/tls_credentials.h +5 -3
  1354. data/src/core/lib/security/credentials/tls/tls_utils.cc +1 -2
  1355. data/src/core/lib/security/credentials/tls/tls_utils.h +3 -3
  1356. data/src/core/lib/security/credentials/token_fetcher/token_fetcher_credentials.h +8 -9
  1357. data/src/core/lib/security/credentials/xds/xds_credentials.cc +2 -3
  1358. data/src/core/lib/security/credentials/xds/xds_credentials.h +7 -9
  1359. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +9 -11
  1360. data/src/core/lib/security/security_connector/alts/alts_security_connector.h +1 -1
  1361. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +9 -11
  1362. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +1 -1
  1363. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +4 -6
  1364. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +5 -6
  1365. data/src/core/lib/security/security_connector/load_system_roots_supported.cc +4 -6
  1366. data/src/core/lib/security/security_connector/load_system_roots_windows.cc +3 -4
  1367. data/src/core/lib/security/security_connector/local/local_security_connector.cc +17 -13
  1368. data/src/core/lib/security/security_connector/local/local_security_connector.h +1 -1
  1369. data/src/core/lib/security/security_connector/security_connector.cc +2 -4
  1370. data/src/core/lib/security/security_connector/security_connector.h +7 -8
  1371. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +6 -8
  1372. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +2 -3
  1373. data/src/core/lib/security/security_connector/ssl_utils.cc +11 -13
  1374. data/src/core/lib/security/security_connector/ssl_utils.h +6 -8
  1375. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +8 -10
  1376. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +7 -8
  1377. data/src/core/lib/security/transport/auth_filters.h +2 -3
  1378. data/src/core/lib/security/transport/client_auth_filter.cc +8 -10
  1379. data/src/core/lib/security/transport/server_auth_filter.cc +10 -11
  1380. data/src/core/lib/security/util/json_util.cc +4 -5
  1381. data/src/core/lib/slice/percent_encoding.cc +2 -4
  1382. data/src/core/lib/slice/slice.cc +4 -6
  1383. data/src/core/lib/slice/slice.h +5 -7
  1384. data/src/core/lib/slice/slice_buffer.cc +4 -6
  1385. data/src/core/lib/slice/slice_buffer.h +3 -4
  1386. data/src/core/lib/slice/slice_internal.h +3 -5
  1387. data/src/core/lib/slice/slice_refcount.h +2 -3
  1388. data/src/core/lib/slice/slice_string_helpers.h +1 -2
  1389. data/src/core/lib/surface/byte_buffer.cc +1 -2
  1390. data/src/core/lib/surface/byte_buffer_reader.cc +3 -5
  1391. data/src/core/lib/surface/call.cc +22 -24
  1392. data/src/core/lib/surface/call.h +6 -8
  1393. data/src/core/lib/surface/call_log_batch.cc +3 -5
  1394. data/src/core/lib/surface/call_test_only.h +1 -2
  1395. data/src/core/lib/surface/call_utils.cc +16 -59
  1396. data/src/core/lib/surface/call_utils.h +53 -19
  1397. data/src/core/lib/surface/channel.cc +1 -2
  1398. data/src/core/lib/surface/channel.h +11 -12
  1399. data/src/core/lib/surface/channel_create.cc +1 -2
  1400. data/src/core/lib/surface/channel_create.h +2 -3
  1401. data/src/core/lib/surface/channel_init.cc +4 -6
  1402. data/src/core/lib/surface/channel_init.h +3 -5
  1403. data/src/core/lib/surface/client_call.cc +17 -19
  1404. data/src/core/lib/surface/client_call.h +18 -18
  1405. data/src/core/lib/surface/completion_queue.cc +11 -13
  1406. data/src/core/lib/surface/completion_queue.h +3 -4
  1407. data/src/core/lib/surface/completion_queue_factory.cc +1 -2
  1408. data/src/core/lib/surface/event_string.cc +2 -2
  1409. data/src/core/lib/surface/event_string.h +2 -2
  1410. data/src/core/lib/surface/filter_stack_call.cc +18 -20
  1411. data/src/core/lib/surface/filter_stack_call.h +15 -17
  1412. data/src/core/lib/surface/init.cc +24 -6
  1413. data/src/core/lib/surface/init.h +5 -0
  1414. data/src/core/lib/surface/lame_client.cc +9 -10
  1415. data/src/core/lib/surface/lame_client.h +4 -5
  1416. data/src/core/lib/surface/legacy_channel.cc +10 -11
  1417. data/src/core/lib/surface/legacy_channel.h +6 -7
  1418. data/src/core/lib/surface/metadata_array.cc +1 -2
  1419. data/src/core/lib/surface/server_call.cc +11 -13
  1420. data/src/core/lib/surface/server_call.h +19 -19
  1421. data/src/core/lib/surface/validate_metadata.cc +3 -4
  1422. data/src/core/lib/surface/validate_metadata.h +2 -4
  1423. data/src/core/lib/surface/version.cc +2 -2
  1424. data/src/core/lib/transport/bdp_estimator.cc +1 -2
  1425. data/src/core/lib/transport/bdp_estimator.h +3 -5
  1426. data/src/core/lib/transport/call_arena_allocator.cc +2 -2
  1427. data/src/core/lib/transport/call_arena_allocator.h +2 -3
  1428. data/src/core/lib/transport/call_destination.h +1 -1
  1429. data/src/core/lib/transport/call_filters.cc +5 -117
  1430. data/src/core/lib/transport/call_filters.h +400 -33
  1431. data/src/core/lib/transport/call_final_info.cc +2 -2
  1432. data/src/core/lib/transport/call_final_info.h +2 -2
  1433. data/src/core/lib/transport/call_spine.cc +1 -2
  1434. data/src/core/lib/transport/call_spine.h +29 -12
  1435. data/src/core/lib/transport/call_state.h +145 -41
  1436. data/src/core/lib/transport/connectivity_state.cc +3 -4
  1437. data/src/core/lib/transport/connectivity_state.h +5 -6
  1438. data/src/core/lib/transport/error_utils.cc +3 -4
  1439. data/src/core/lib/transport/error_utils.h +4 -5
  1440. data/src/core/lib/transport/interception_chain.cc +3 -3
  1441. data/src/core/lib/transport/interception_chain.h +16 -7
  1442. data/src/core/lib/transport/message.cc +2 -2
  1443. data/src/core/lib/transport/message.h +5 -0
  1444. data/src/core/lib/transport/metadata_batch.cc +1 -3
  1445. data/src/core/lib/transport/metadata_batch.h +8 -10
  1446. data/src/core/lib/transport/metadata_compression_traits.h +1 -2
  1447. data/src/core/lib/transport/parsed_metadata.h +3 -5
  1448. data/src/core/lib/transport/simple_slice_based_metadata.h +1 -2
  1449. data/src/core/lib/transport/status_conversion.h +1 -1
  1450. data/src/core/lib/transport/timeout_encoding.cc +3 -3
  1451. data/src/core/lib/transport/timeout_encoding.h +2 -4
  1452. data/src/core/lib/transport/transport.cc +4 -6
  1453. data/src/core/lib/transport/transport.h +7 -9
  1454. data/src/core/lib/transport/transport_op_string.cc +4 -5
  1455. data/src/core/load_balancing/address_filtering.cc +2 -4
  1456. data/src/core/load_balancing/address_filtering.h +4 -5
  1457. data/src/core/load_balancing/backend_metric_data.h +2 -2
  1458. data/src/core/load_balancing/backend_metric_parser.cc +1 -2
  1459. data/src/core/load_balancing/backend_metric_parser.h +1 -3
  1460. data/src/core/load_balancing/child_policy_handler.cc +4 -5
  1461. data/src/core/load_balancing/child_policy_handler.h +4 -5
  1462. data/src/core/load_balancing/delegating_helper.h +6 -7
  1463. data/src/core/load_balancing/endpoint_list.cc +6 -8
  1464. data/src/core/load_balancing/endpoint_list.h +6 -8
  1465. data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +10 -4
  1466. data/src/core/load_balancing/grpclb/client_load_reporting_filter.h +1 -2
  1467. data/src/core/load_balancing/grpclb/grpclb.cc +19 -21
  1468. data/src/core/load_balancing/grpclb/grpclb_balancer_addresses.cc +1 -2
  1469. data/src/core/load_balancing/grpclb/grpclb_client_stats.cc +2 -3
  1470. data/src/core/load_balancing/grpclb/grpclb_client_stats.h +5 -7
  1471. data/src/core/load_balancing/grpclb/load_balancer_api.cc +4 -6
  1472. data/src/core/load_balancing/grpclb/load_balancer_api.h +4 -6
  1473. data/src/core/load_balancing/health_check_client.cc +20 -20
  1474. data/src/core/load_balancing/health_check_client.h +3 -3
  1475. data/src/core/load_balancing/health_check_client_internal.h +8 -9
  1476. data/src/core/load_balancing/lb_policy.h +12 -14
  1477. data/src/core/load_balancing/lb_policy_factory.h +4 -5
  1478. data/src/core/load_balancing/lb_policy_registry.cc +3 -4
  1479. data/src/core/load_balancing/lb_policy_registry.h +4 -5
  1480. data/src/core/load_balancing/oob_backend_metric.cc +14 -16
  1481. data/src/core/load_balancing/oob_backend_metric.h +3 -3
  1482. data/src/core/load_balancing/oob_backend_metric_internal.h +8 -9
  1483. data/src/core/load_balancing/outlier_detection/outlier_detection.cc +29 -24
  1484. data/src/core/load_balancing/outlier_detection/outlier_detection.h +3 -5
  1485. data/src/core/load_balancing/pick_first/pick_first.cc +17 -17
  1486. data/src/core/load_balancing/priority/priority.cc +11 -13
  1487. data/src/core/load_balancing/ring_hash/ring_hash.cc +12 -14
  1488. data/src/core/load_balancing/ring_hash/ring_hash.h +3 -4
  1489. data/src/core/load_balancing/rls/rls.cc +26 -28
  1490. data/src/core/load_balancing/round_robin/round_robin.cc +8 -14
  1491. data/src/core/load_balancing/subchannel_interface.h +13 -6
  1492. data/src/core/load_balancing/weighted_round_robin/static_stride_scheduler.cc +2 -2
  1493. data/src/core/load_balancing/weighted_round_robin/static_stride_scheduler.h +1 -2
  1494. data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +14 -18
  1495. data/src/core/load_balancing/weighted_target/weighted_target.cc +10 -12
  1496. data/src/core/load_balancing/xds/cds.cc +22 -19
  1497. data/src/core/load_balancing/xds/xds_cluster_impl.cc +41 -44
  1498. data/src/core/load_balancing/xds/xds_cluster_manager.cc +9 -11
  1499. data/src/core/load_balancing/xds/xds_override_host.cc +11 -13
  1500. data/src/core/load_balancing/xds/xds_override_host.h +3 -4
  1501. data/src/core/load_balancing/xds/xds_wrr_locality.cc +10 -11
  1502. data/src/core/plugin_registry/grpc_plugin_registry.cc +0 -6
  1503. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +2 -0
  1504. data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +11 -14
  1505. data/src/core/resolver/dns/c_ares/dns_resolver_ares.h +1 -2
  1506. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver.h +4 -6
  1507. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +2 -4
  1508. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +7 -10
  1509. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +15 -19
  1510. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +3 -6
  1511. data/src/core/resolver/dns/dns_resolver_plugin.cc +3 -4
  1512. data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +9 -11
  1513. data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.h +3 -4
  1514. data/src/core/resolver/dns/event_engine/service_config_helper.cc +3 -5
  1515. data/src/core/resolver/dns/event_engine/service_config_helper.h +2 -2
  1516. data/src/core/resolver/dns/native/dns_resolver.cc +9 -10
  1517. data/src/core/resolver/endpoint_addresses.cc +1 -3
  1518. data/src/core/resolver/endpoint_addresses.h +2 -3
  1519. data/src/core/resolver/fake/fake_resolver.cc +6 -7
  1520. data/src/core/resolver/fake/fake_resolver.h +7 -8
  1521. data/src/core/resolver/google_c2p/google_c2p_resolver.cc +10 -11
  1522. data/src/core/resolver/polling_resolver.cc +6 -8
  1523. data/src/core/resolver/polling_resolver.h +7 -8
  1524. data/src/core/resolver/resolver.h +4 -5
  1525. data/src/core/resolver/resolver_factory.h +4 -5
  1526. data/src/core/resolver/resolver_registry.cc +2 -2
  1527. data/src/core/resolver/resolver_registry.h +4 -5
  1528. data/src/core/resolver/sockaddr/sockaddr_resolver.cc +4 -5
  1529. data/src/core/resolver/xds/xds_config.cc +1 -2
  1530. data/src/core/resolver/xds/xds_config.h +1 -2
  1531. data/src/core/resolver/xds/xds_dependency_manager.cc +1 -4
  1532. data/src/core/resolver/xds/xds_dependency_manager.h +1 -2
  1533. data/src/core/resolver/xds/xds_resolver.cc +14 -16
  1534. data/src/core/resolver/xds/xds_resolver_attributes.h +2 -3
  1535. data/src/core/server/server.cc +95 -73
  1536. data/src/core/server/server.h +13 -15
  1537. data/src/core/server/server_call_tracer_filter.cc +10 -3
  1538. data/src/core/server/server_config_selector.h +5 -6
  1539. data/src/core/server/server_config_selector_filter.cc +8 -6
  1540. data/src/core/server/xds_channel_stack_modifier.cc +2 -2
  1541. data/src/core/server/xds_channel_stack_modifier.h +5 -6
  1542. data/src/core/server/xds_server_config_fetcher.cc +22 -23
  1543. data/src/core/service_config/service_config.h +3 -5
  1544. data/src/core/service_config/service_config_call_data.h +5 -6
  1545. data/src/core/service_config/service_config_channel_arg_filter.cc +7 -5
  1546. data/src/core/service_config/service_config_impl.cc +3 -5
  1547. data/src/core/service_config/service_config_impl.h +4 -6
  1548. data/src/core/service_config/service_config_parser.cc +1 -2
  1549. data/src/core/service_config/service_config_parser.h +2 -4
  1550. data/src/core/telemetry/call_tracer.cc +2 -3
  1551. data/src/core/telemetry/call_tracer.h +4 -5
  1552. data/src/core/telemetry/histogram_view.h +1 -2
  1553. data/src/core/telemetry/metrics.cc +3 -4
  1554. data/src/core/telemetry/metrics.h +6 -7
  1555. data/src/core/telemetry/stats.cc +1 -2
  1556. data/src/core/telemetry/stats.h +2 -4
  1557. data/src/core/telemetry/stats_data.cc +20 -2
  1558. data/src/core/telemetry/stats_data.h +21 -4
  1559. data/src/core/telemetry/tcp_tracer.h +1 -2
  1560. data/src/core/tsi/alts/crypt/aes_gcm.cc +5 -8
  1561. data/src/core/tsi/alts/crypt/gsec.cc +2 -3
  1562. data/src/core/tsi/alts/crypt/gsec.h +3 -4
  1563. data/src/core/tsi/alts/frame_protector/alts_counter.cc +1 -2
  1564. data/src/core/tsi/alts/frame_protector/alts_counter.h +2 -3
  1565. data/src/core/tsi/alts/frame_protector/alts_crypter.cc +1 -2
  1566. data/src/core/tsi/alts/frame_protector/alts_crypter.h +2 -3
  1567. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +4 -5
  1568. data/src/core/tsi/alts/frame_protector/alts_frame_protector.h +1 -2
  1569. data/src/core/tsi/alts/frame_protector/frame_handler.cc +4 -6
  1570. data/src/core/tsi/alts/frame_protector/frame_handler.h +1 -2
  1571. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +11 -12
  1572. data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +2 -3
  1573. data/src/core/tsi/alts/handshaker/alts_shared_resource.h +1 -1
  1574. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +19 -17
  1575. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +2 -3
  1576. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +2 -2
  1577. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +1 -1
  1578. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +3 -5
  1579. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.h +1 -2
  1580. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +2 -3
  1581. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.h +1 -2
  1582. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +3 -5
  1583. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +3 -4
  1584. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.h +1 -2
  1585. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +2 -4
  1586. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.h +1 -2
  1587. data/src/core/tsi/fake_transport_security.cc +4 -7
  1588. data/src/core/tsi/local_transport_security.cc +4 -6
  1589. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +4 -5
  1590. data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +8 -10
  1591. data/src/core/tsi/ssl/session_cache/ssl_session.h +4 -5
  1592. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +4 -5
  1593. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +7 -8
  1594. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +2 -4
  1595. data/src/core/tsi/ssl_transport_security.cc +18 -13
  1596. data/src/core/tsi/ssl_transport_security.h +4 -6
  1597. data/src/core/tsi/ssl_transport_security_utils.cc +1 -3
  1598. data/src/core/tsi/ssl_transport_security_utils.h +2 -4
  1599. data/src/core/tsi/ssl_types.h +1 -2
  1600. data/src/core/tsi/transport_security.cc +2 -3
  1601. data/src/core/tsi/transport_security.h +1 -2
  1602. data/src/core/tsi/transport_security_interface.h +1 -2
  1603. data/src/core/util/alloc.cc +2 -5
  1604. data/src/core/util/atm.cc +1 -2
  1605. data/src/core/{lib/gprpp → util}/atomic_utils.h +5 -5
  1606. data/src/core/{lib/avl → util}/avl.h +6 -7
  1607. data/src/core/{lib/backoff → util}/backoff.cc +3 -1
  1608. data/src/core/{lib/backoff → util}/backoff.h +4 -5
  1609. data/src/core/{lib/gprpp → util}/bitset.h +4 -5
  1610. data/src/core/{lib/gprpp → util}/chunked_vector.h +6 -7
  1611. data/src/core/{lib/gprpp → util}/construct_destruct.h +8 -7
  1612. data/src/core/{lib/gprpp → util}/cpp_impl_of.h +3 -3
  1613. data/src/core/{lib/gprpp → util}/crash.cc +2 -3
  1614. data/src/core/{lib/gprpp → util}/crash.h +5 -6
  1615. data/src/core/{lib/gprpp → util}/debug_location.h +5 -5
  1616. data/src/core/{lib/gprpp → util}/directory_reader.h +5 -5
  1617. data/src/core/{lib/gprpp → util}/down_cast.h +7 -7
  1618. data/src/core/{lib/gprpp → util}/dual_ref_counted.h +10 -11
  1619. data/src/core/{lib/gprpp → util}/dump_args.cc +1 -1
  1620. data/src/core/{lib/gprpp → util}/dump_args.h +12 -7
  1621. data/src/core/{lib/gprpp → util}/env.h +5 -5
  1622. data/src/core/{lib/debug → util}/event_log.cc +3 -3
  1623. data/src/core/{lib/debug → util}/event_log.h +6 -8
  1624. data/src/core/{lib/gprpp → util}/examine_stack.cc +1 -1
  1625. data/src/core/{lib/gprpp → util}/examine_stack.h +5 -5
  1626. data/src/core/{lib/gprpp → util}/fork.cc +4 -4
  1627. data/src/core/{lib/gprpp → util}/fork.h +5 -5
  1628. data/src/core/util/gcp_metadata_query.cc +8 -11
  1629. data/src/core/util/gcp_metadata_query.h +2 -3
  1630. data/src/core/{lib/iomgr → util}/gethostname.h +3 -3
  1631. data/src/core/{lib/iomgr → util}/gethostname_fallback.cc +1 -1
  1632. data/src/core/{lib/iomgr → util}/gethostname_host_name_max.cc +2 -3
  1633. data/src/core/{lib/iomgr → util}/gethostname_sysconf.cc +2 -3
  1634. data/src/core/{lib/gprpp → util}/glob.h +3 -3
  1635. data/src/core/util/gpr_time.cc +268 -0
  1636. data/src/core/{lib/iomgr → util}/grpc_if_nametoindex.h +4 -5
  1637. data/src/core/{lib/iomgr → util}/grpc_if_nametoindex_posix.cc +2 -3
  1638. data/src/core/{lib/iomgr → util}/grpc_if_nametoindex_unsupported.cc +2 -3
  1639. data/src/core/{lib/gprpp → util}/host_port.cc +2 -3
  1640. data/src/core/{lib/gprpp → util}/host_port.h +5 -5
  1641. data/src/core/util/http_client/format_request.cc +2 -5
  1642. data/src/core/util/http_client/format_request.h +1 -2
  1643. data/src/core/util/http_client/httpcli.cc +5 -8
  1644. data/src/core/util/http_client/httpcli.h +8 -11
  1645. data/src/core/util/http_client/httpcli_security_connector.cc +9 -12
  1646. data/src/core/util/http_client/httpcli_ssl_credentials.h +2 -3
  1647. data/src/core/util/http_client/parser.cc +2 -4
  1648. data/src/core/util/http_client/parser.h +1 -3
  1649. data/src/core/{lib/gprpp → util}/if_list.h +3 -3
  1650. data/src/core/util/iphone/cpu.cc +1 -2
  1651. data/src/core/util/json/json.h +1 -2
  1652. data/src/core/util/json/json_channel_args.h +0 -1
  1653. data/src/core/util/json/json_object_loader.cc +3 -4
  1654. data/src/core/util/json/json_object_loader.h +4 -5
  1655. data/src/core/util/json/json_reader.cc +2 -5
  1656. data/src/core/util/json/json_reader.h +0 -1
  1657. data/src/core/util/json/json_util.cc +4 -4
  1658. data/src/core/util/json/json_util.h +1 -2
  1659. data/src/core/util/json/json_writer.cc +0 -2
  1660. data/src/core/util/latent_see.cc +17 -8
  1661. data/src/core/util/latent_see.h +22 -4
  1662. data/src/core/util/linux/cpu.cc +4 -6
  1663. data/src/core/{lib/gprpp → util}/linux/env.cc +3 -3
  1664. data/src/core/{lib/gprpp → util}/load_file.cc +4 -5
  1665. data/src/core/{lib/gprpp → util}/load_file.h +5 -6
  1666. data/src/core/util/log.cc +9 -12
  1667. data/src/core/util/lru_cache.h +27 -9
  1668. data/src/core/{lib/gprpp → util}/manual_constructor.h +5 -6
  1669. data/src/core/{lib/gprpp → util}/match.h +6 -7
  1670. data/src/core/{lib/matchers → util}/matchers.cc +10 -3
  1671. data/src/core/{lib/matchers → util}/matchers.h +9 -5
  1672. data/src/core/{lib/gprpp → util}/memory.h +6 -6
  1673. data/src/core/{lib/gprpp → util}/mpscq.cc +1 -1
  1674. data/src/core/{lib/gprpp → util}/mpscq.h +6 -7
  1675. data/src/core/util/msys/tmpfile.cc +3 -4
  1676. data/src/core/{lib/gprpp → util}/no_destruct.h +6 -6
  1677. data/src/core/{lib/gprpp → util}/notification.h +6 -7
  1678. data/src/core/{lib/gprpp → util}/orphanable.h +9 -9
  1679. data/src/core/{lib/gprpp → util}/overload.h +5 -5
  1680. data/src/core/{lib/gprpp → util}/packed_table.h +5 -5
  1681. data/src/core/{lib/gprpp → util}/per_cpu.cc +1 -1
  1682. data/src/core/{lib/gprpp → util}/per_cpu.h +5 -6
  1683. data/src/core/util/posix/cpu.cc +3 -5
  1684. data/src/core/{lib/gprpp → util}/posix/directory_reader.cc +4 -4
  1685. data/src/core/{lib/gprpp → util}/posix/env.cc +1 -1
  1686. data/src/core/{lib/gprpp → util}/posix/stat.cc +4 -5
  1687. data/src/core/util/posix/string.cc +2 -3
  1688. data/src/core/util/posix/sync.cc +3 -5
  1689. data/src/core/{lib/gprpp → util}/posix/thd.cc +8 -11
  1690. data/src/core/util/posix/time.cc +4 -5
  1691. data/src/core/util/posix/tmpfile.cc +4 -6
  1692. data/src/core/{lib/backoff → util}/random_early_detection.cc +3 -3
  1693. data/src/core/{lib/backoff → util}/random_early_detection.h +4 -5
  1694. data/src/core/{lib/gprpp → util}/ref_counted.h +9 -10
  1695. data/src/core/{lib/gprpp → util}/ref_counted_ptr.h +6 -8
  1696. data/src/core/{lib/gprpp → util}/ref_counted_string.cc +3 -4
  1697. data/src/core/{lib/gprpp → util}/ref_counted_string.h +6 -8
  1698. data/src/core/{lib/gprpp → util}/single_set_ptr.h +5 -5
  1699. data/src/core/{lib/gprpp → util}/sorted_pack.h +6 -6
  1700. data/src/core/util/spinlock.h +1 -2
  1701. data/src/core/{lib/gprpp → util}/stat.h +4 -5
  1702. data/src/core/{lib/gprpp → util}/status_helper.cc +4 -6
  1703. data/src/core/{lib/gprpp → util}/status_helper.h +5 -7
  1704. data/src/core/{lib/gprpp → util}/strerror.cc +2 -3
  1705. data/src/core/{lib/gprpp → util}/strerror.h +5 -5
  1706. data/src/core/util/string.cc +4 -7
  1707. data/src/core/util/string.h +1 -3
  1708. data/src/core/util/sync.cc +3 -5
  1709. data/src/core/{lib/gprpp → util}/sync.h +7 -7
  1710. data/src/core/util/sync_abseil.cc +5 -7
  1711. data/src/core/{lib/gprpp → util}/table.h +5 -7
  1712. data/src/core/{lib/gprpp → util}/tchar.cc +1 -1
  1713. data/src/core/{lib/gprpp → util}/tchar.h +3 -3
  1714. data/src/core/{lib/gprpp → util}/thd.h +5 -6
  1715. data/src/core/util/time.cc +174 -204
  1716. data/src/core/{lib/gprpp → util}/time.h +14 -8
  1717. data/src/core/{lib/gprpp → util}/time_averaged_stats.cc +1 -1
  1718. data/src/core/{lib/gprpp → util}/time_averaged_stats.h +3 -3
  1719. data/src/core/util/time_precise.cc +3 -4
  1720. data/src/core/util/time_precise.h +0 -1
  1721. data/src/core/{lib/gprpp → util}/time_util.cc +3 -4
  1722. data/src/core/{lib/gprpp → util}/time_util.h +5 -5
  1723. data/src/core/util/tmpfile.h +0 -1
  1724. data/src/core/{lib/gprpp → util}/type_list.h +3 -3
  1725. data/src/core/{lib/gprpp → util}/unique_type_name.h +5 -6
  1726. data/src/core/{lib/uri/uri_parser.cc → util/uri.cc} +2 -3
  1727. data/src/core/{lib/uri/uri_parser.h → util/uri.h} +5 -5
  1728. data/src/core/{lib/gprpp → util}/uuid_v4.cc +3 -3
  1729. data/src/core/{lib/gprpp → util}/uuid_v4.h +4 -5
  1730. data/src/core/{lib/gprpp → util}/validation_errors.cc +2 -3
  1731. data/src/core/{lib/gprpp → util}/validation_errors.h +4 -5
  1732. data/src/core/util/windows/cpu.cc +1 -1
  1733. data/src/core/{lib/gprpp → util}/windows/directory_reader.cc +1 -1
  1734. data/src/core/{lib/gprpp → util}/windows/env.cc +2 -2
  1735. data/src/core/{lib/gprpp → util}/windows/stat.cc +3 -4
  1736. data/src/core/util/windows/string.cc +2 -3
  1737. data/src/core/util/windows/string_util.cc +5 -7
  1738. data/src/core/util/windows/sync.cc +2 -3
  1739. data/src/core/{lib/gprpp → util}/windows/thd.cc +6 -8
  1740. data/src/core/util/windows/time.cc +2 -4
  1741. data/src/core/util/windows/tmpfile.cc +4 -5
  1742. data/src/core/{lib/gprpp → util}/work_serializer.cc +7 -12
  1743. data/src/core/{lib/gprpp → util}/work_serializer.h +8 -9
  1744. data/src/core/{lib/gprpp → util}/xxhash_inline.h +3 -3
  1745. data/src/core/xds/grpc/certificate_provider_store.cc +2 -3
  1746. data/src/core/xds/grpc/certificate_provider_store.h +8 -9
  1747. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +3 -4
  1748. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.h +6 -7
  1749. data/src/core/xds/grpc/xds_audit_logger_registry.cc +4 -5
  1750. data/src/core/xds/grpc/xds_audit_logger_registry.h +3 -4
  1751. data/src/core/xds/grpc/xds_bootstrap_grpc.cc +4 -5
  1752. data/src/core/xds/grpc/xds_bootstrap_grpc.h +4 -4
  1753. data/src/core/xds/grpc/xds_certificate_provider.cc +2 -3
  1754. data/src/core/xds/grpc/xds_certificate_provider.h +8 -9
  1755. data/src/core/xds/grpc/xds_client_grpc.cc +63 -39
  1756. data/src/core/xds/grpc/xds_client_grpc.h +14 -8
  1757. data/src/core/xds/grpc/xds_cluster.cc +9 -4
  1758. data/src/core/xds/grpc/xds_cluster.h +30 -4
  1759. data/src/core/xds/grpc/xds_cluster_parser.cc +105 -25
  1760. data/src/core/xds/grpc/xds_cluster_parser.h +6 -2
  1761. data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +5 -7
  1762. data/src/core/xds/grpc/xds_cluster_specifier_plugin.h +5 -6
  1763. data/src/core/xds/grpc/xds_common_types.cc +1 -2
  1764. data/src/core/xds/grpc/xds_common_types.h +2 -3
  1765. data/src/core/xds/grpc/xds_common_types_parser.cc +45 -9
  1766. data/src/core/xds/grpc/xds_common_types_parser.h +8 -3
  1767. data/src/core/xds/grpc/xds_endpoint.h +7 -5
  1768. data/src/core/xds/grpc/xds_endpoint_parser.cc +45 -40
  1769. data/src/core/xds/grpc/xds_endpoint_parser.h +1 -2
  1770. data/src/core/xds/grpc/xds_health_status.h +0 -1
  1771. data/src/core/xds/grpc/xds_http_fault_filter.cc +5 -7
  1772. data/src/core/xds/grpc/xds_http_fault_filter.h +4 -5
  1773. data/src/core/xds/grpc/xds_http_filter.h +2 -3
  1774. data/src/core/xds/grpc/xds_http_filter_registry.cc +2 -3
  1775. data/src/core/xds/grpc/xds_http_filter_registry.h +2 -3
  1776. data/src/core/xds/grpc/xds_http_gcp_authn_filter.cc +3 -4
  1777. data/src/core/xds/grpc/xds_http_gcp_authn_filter.h +2 -3
  1778. data/src/core/xds/grpc/xds_http_rbac_filter.cc +42 -39
  1779. data/src/core/xds/grpc/xds_http_rbac_filter.h +4 -5
  1780. data/src/core/xds/grpc/xds_http_stateful_session_filter.cc +5 -6
  1781. data/src/core/xds/grpc/xds_http_stateful_session_filter.h +4 -5
  1782. data/src/core/xds/grpc/xds_lb_policy_registry.cc +4 -6
  1783. data/src/core/xds/grpc/xds_lb_policy_registry.h +3 -4
  1784. data/src/core/xds/grpc/xds_listener.cc +1 -2
  1785. data/src/core/xds/grpc/xds_listener.h +1 -2
  1786. data/src/core/xds/grpc/xds_listener_parser.cc +5 -8
  1787. data/src/core/xds/grpc/xds_listener_parser.h +1 -2
  1788. data/src/core/xds/grpc/xds_metadata.h +26 -3
  1789. data/src/core/xds/grpc/xds_metadata_parser.cc +51 -10
  1790. data/src/core/xds/grpc/xds_metadata_parser.h +1 -2
  1791. data/src/core/xds/grpc/xds_route_config.cc +2 -3
  1792. data/src/core/xds/grpc/xds_route_config.h +2 -3
  1793. data/src/core/xds/grpc/xds_route_config_parser.cc +10 -12
  1794. data/src/core/xds/grpc/xds_route_config_parser.h +4 -7
  1795. data/src/core/xds/grpc/xds_routing.cc +2 -4
  1796. data/src/core/xds/grpc/xds_routing.h +1 -3
  1797. data/src/core/xds/grpc/xds_server_grpc.cc +0 -1
  1798. data/src/core/xds/grpc/xds_server_grpc.h +2 -2
  1799. data/src/core/xds/grpc/xds_transport_grpc.cc +94 -49
  1800. data/src/core/xds/grpc/xds_transport_grpc.h +33 -22
  1801. data/src/core/xds/xds_client/lrs_client.cc +1292 -0
  1802. data/src/core/xds/xds_client/lrs_client.h +394 -0
  1803. data/src/core/xds/xds_client/xds_api.cc +31 -245
  1804. data/src/core/xds/xds_client/xds_api.h +13 -36
  1805. data/src/core/xds/xds_client/xds_backend_metric_propagation.cc +63 -0
  1806. data/src/core/xds/xds_client/xds_backend_metric_propagation.h +59 -0
  1807. data/src/core/xds/xds_client/xds_bootstrap.cc +2 -3
  1808. data/src/core/xds/xds_client/xds_bootstrap.h +2 -2
  1809. data/src/core/xds/xds_client/xds_client.cc +57 -595
  1810. data/src/core/xds/xds_client/xds_client.h +33 -86
  1811. data/src/core/xds/xds_client/xds_locality.h +102 -0
  1812. data/src/core/xds/xds_client/xds_metrics.h +2 -2
  1813. data/src/core/xds/xds_client/xds_resource_type.h +4 -5
  1814. data/src/core/xds/xds_client/xds_resource_type_impl.h +3 -4
  1815. data/src/core/xds/xds_client/xds_transport.h +29 -14
  1816. data/src/ruby/ext/grpc/extconf.rb +1 -1
  1817. data/src/ruby/ext/grpc/rb_byte_buffer.c +3 -3
  1818. data/src/ruby/ext/grpc/rb_call.c +5 -5
  1819. data/src/ruby/ext/grpc/rb_call_credentials.c +5 -6
  1820. data/src/ruby/ext/grpc/rb_channel.c +6 -7
  1821. data/src/ruby/ext/grpc/rb_channel_args.c +3 -3
  1822. data/src/ruby/ext/grpc/rb_channel_credentials.c +5 -6
  1823. data/src/ruby/ext/grpc/rb_channel_credentials.h +1 -2
  1824. data/src/ruby/ext/grpc/rb_completion_queue.c +3 -4
  1825. data/src/ruby/ext/grpc/rb_compression_options.c +6 -7
  1826. data/src/ruby/ext/grpc/rb_event_thread.c +4 -5
  1827. data/src/ruby/ext/grpc/rb_grpc.c +3 -4
  1828. data/src/ruby/ext/grpc/rb_grpc.h +1 -2
  1829. data/src/ruby/ext/grpc/rb_server.c +6 -6
  1830. data/src/ruby/ext/grpc/rb_server_credentials.c +3 -3
  1831. data/src/ruby/ext/grpc/rb_server_credentials.h +1 -2
  1832. data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +5 -6
  1833. data/src/ruby/ext/grpc/rb_xds_channel_credentials.h +1 -2
  1834. data/src/ruby/ext/grpc/rb_xds_server_credentials.c +4 -4
  1835. data/src/ruby/ext/grpc/rb_xds_server_credentials.h +1 -2
  1836. data/src/ruby/lib/grpc/version.rb +1 -1
  1837. data/src/ruby/spec/generic/client_stub_spec.rb +20 -20
  1838. data/third_party/abseil-cpp/absl/algorithm/container.h +57 -18
  1839. data/third_party/abseil-cpp/absl/base/attributes.h +84 -0
  1840. data/third_party/abseil-cpp/absl/base/config.h +32 -51
  1841. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +0 -16
  1842. data/third_party/abseil-cpp/absl/base/internal/nullability_impl.h +3 -1
  1843. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +13 -3
  1844. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +0 -12
  1845. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock_config.h +4 -4
  1846. data/third_party/abseil-cpp/absl/base/macros.h +48 -0
  1847. data/third_party/abseil-cpp/absl/base/no_destructor.h +35 -40
  1848. data/third_party/abseil-cpp/absl/base/nullability.h +33 -7
  1849. data/third_party/abseil-cpp/absl/base/optimization.h +11 -0
  1850. data/third_party/abseil-cpp/absl/base/options.h +1 -1
  1851. data/third_party/abseil-cpp/absl/base/prefetch.h +1 -1
  1852. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +68 -12
  1853. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +60 -6
  1854. data/third_party/abseil-cpp/absl/container/hash_container_defaults.h +45 -0
  1855. data/third_party/abseil-cpp/absl/container/inlined_vector.h +13 -0
  1856. data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +20 -11
  1857. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +15 -16
  1858. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +34 -1
  1859. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +68 -1
  1860. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +50 -0
  1861. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +22 -7
  1862. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +26 -8
  1863. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +39 -35
  1864. data/third_party/abseil-cpp/absl/container/internal/layout.h +190 -74
  1865. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +8 -6
  1866. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +334 -71
  1867. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1299 -458
  1868. data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +19 -17
  1869. data/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.cc +4 -3
  1870. data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_fallback.cc +2 -1
  1871. data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_x86_arm_combined.cc +12 -8
  1872. data/third_party/abseil-cpp/absl/crc/internal/crc_non_temporal_memcpy.cc +1 -1
  1873. data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +11 -7
  1874. data/third_party/abseil-cpp/absl/crc/internal/non_temporal_memcpy.h +18 -17
  1875. data/third_party/abseil-cpp/absl/debugging/internal/bounded_utf8_length_sequence.h +126 -0
  1876. data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.cc +258 -0
  1877. data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.h +55 -0
  1878. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +1057 -86
  1879. data/third_party/abseil-cpp/absl/debugging/internal/demangle.h +3 -0
  1880. data/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.cc +925 -0
  1881. data/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.h +42 -0
  1882. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +43 -16
  1883. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +8 -7
  1884. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +10 -7
  1885. data/third_party/abseil-cpp/absl/debugging/internal/utf8_for_code_point.cc +70 -0
  1886. data/third_party/abseil-cpp/absl/debugging/internal/utf8_for_code_point.h +47 -0
  1887. data/third_party/abseil-cpp/absl/flags/commandlineflag.h +11 -0
  1888. data/third_party/abseil-cpp/absl/flags/flag.h +2 -0
  1889. data/third_party/abseil-cpp/absl/flags/internal/flag.cc +117 -30
  1890. data/third_party/abseil-cpp/absl/flags/internal/flag.h +192 -30
  1891. data/third_party/abseil-cpp/absl/flags/reflection.cc +10 -0
  1892. data/third_party/abseil-cpp/absl/functional/any_invocable.h +13 -3
  1893. data/third_party/abseil-cpp/absl/functional/bind_front.h +3 -2
  1894. data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +7 -7
  1895. data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +9 -9
  1896. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +1 -1
  1897. data/third_party/abseil-cpp/absl/hash/internal/hash.h +13 -3
  1898. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +60 -28
  1899. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h +4 -0
  1900. data/third_party/abseil-cpp/absl/log/absl_vlog_is_on.h +3 -3
  1901. data/third_party/abseil-cpp/absl/log/globals.h +28 -15
  1902. data/third_party/abseil-cpp/absl/log/internal/check_op.cc +20 -0
  1903. data/third_party/abseil-cpp/absl/log/internal/check_op.h +63 -21
  1904. data/third_party/abseil-cpp/absl/log/internal/conditions.h +2 -2
  1905. data/third_party/abseil-cpp/absl/log/internal/log_impl.h +23 -23
  1906. data/third_party/abseil-cpp/absl/log/internal/log_message.cc +104 -47
  1907. data/third_party/abseil-cpp/absl/log/internal/log_message.h +23 -4
  1908. data/third_party/abseil-cpp/absl/log/internal/nullstream.h +1 -10
  1909. data/third_party/abseil-cpp/absl/log/internal/strip.h +36 -0
  1910. data/third_party/abseil-cpp/absl/log/log.h +5 -1
  1911. data/third_party/abseil-cpp/absl/log/log_sink.h +11 -4
  1912. data/third_party/abseil-cpp/absl/log/vlog_is_on.h +3 -3
  1913. data/third_party/abseil-cpp/absl/meta/type_traits.h +138 -42
  1914. data/third_party/abseil-cpp/absl/numeric/int128.cc +0 -3
  1915. data/third_party/abseil-cpp/absl/numeric/int128.h +35 -5
  1916. data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +14 -0
  1917. data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +18 -0
  1918. data/third_party/abseil-cpp/absl/numeric/internal/bits.h +6 -2
  1919. data/third_party/abseil-cpp/absl/random/beta_distribution.h +8 -8
  1920. data/third_party/abseil-cpp/absl/random/bit_gen_ref.h +9 -7
  1921. data/third_party/abseil-cpp/absl/random/distributions.h +11 -11
  1922. data/third_party/abseil-cpp/absl/random/seed_sequences.h +2 -0
  1923. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +61 -2
  1924. data/third_party/abseil-cpp/absl/status/status.cc +0 -4
  1925. data/third_party/abseil-cpp/absl/status/status.h +4 -4
  1926. data/third_party/abseil-cpp/absl/status/statusor.h +108 -142
  1927. data/third_party/abseil-cpp/absl/strings/ascii.cc +32 -71
  1928. data/third_party/abseil-cpp/absl/strings/cord.cc +20 -15
  1929. data/third_party/abseil-cpp/absl/strings/cord.h +68 -7
  1930. data/third_party/abseil-cpp/absl/strings/escaping.cc +96 -21
  1931. data/third_party/abseil-cpp/absl/strings/escaping.h +25 -8
  1932. data/third_party/abseil-cpp/absl/strings/has_absl_stringify.h +1 -0
  1933. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +10 -0
  1934. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +29 -9
  1935. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +2 -2
  1936. data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.cc +19 -13
  1937. data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.h +23 -13
  1938. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +24 -24
  1939. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +12 -7
  1940. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +9 -4
  1941. data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +5 -2
  1942. data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +23 -2
  1943. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +5 -1
  1944. data/third_party/abseil-cpp/absl/strings/numbers.cc +107 -333
  1945. data/third_party/abseil-cpp/absl/strings/numbers.h +12 -151
  1946. data/third_party/abseil-cpp/absl/strings/str_cat.cc +49 -142
  1947. data/third_party/abseil-cpp/absl/strings/str_cat.h +70 -85
  1948. data/third_party/abseil-cpp/absl/strings/str_format.h +1 -1
  1949. data/third_party/abseil-cpp/absl/strings/str_join.h +19 -5
  1950. data/third_party/abseil-cpp/absl/strings/str_split.h +2 -2
  1951. data/third_party/abseil-cpp/absl/strings/string_view.h +3 -2
  1952. data/third_party/abseil-cpp/absl/strings/substitute.cc +4 -0
  1953. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +11 -2
  1954. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.h +5 -0
  1955. data/third_party/abseil-cpp/absl/synchronization/mutex.h +5 -4
  1956. data/third_party/abseil-cpp/absl/time/civil_time.h +2 -2
  1957. data/third_party/abseil-cpp/absl/time/clock.cc +15 -1
  1958. data/third_party/abseil-cpp/absl/time/duration.cc +58 -53
  1959. data/third_party/abseil-cpp/absl/time/format.cc +2 -1
  1960. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +1 -1
  1961. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +0 -29
  1962. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +3 -3
  1963. data/third_party/abseil-cpp/absl/time/time.h +73 -29
  1964. data/third_party/abseil-cpp/absl/types/compare.h +505 -0
  1965. data/third_party/abseil-cpp/absl/types/internal/optional.h +2 -2
  1966. data/third_party/abseil-cpp/absl/types/internal/variant.h +55 -67
  1967. data/third_party/abseil-cpp/absl/types/optional.h +15 -18
  1968. data/third_party/abseil-cpp/absl/types/span.h +3 -2
  1969. data/third_party/abseil-cpp/absl/types/variant.h +19 -24
  1970. data/third_party/abseil-cpp/absl/utility/utility.h +3 -41
  1971. data/third_party/upb/upb/json/decode.c +20 -3
  1972. data/third_party/upb/upb/json/encode.c +2 -2
  1973. data/third_party/upb/upb/lex/round_trip.c +10 -0
  1974. data/third_party/upb/upb/mem/arena.c +12 -1
  1975. data/third_party/upb/upb/mem/arena.h +9 -0
  1976. data/third_party/upb/upb/mem/arena.hpp +5 -1
  1977. data/third_party/upb/upb/message/accessors.c +2 -4
  1978. data/third_party/upb/upb/message/accessors.h +172 -381
  1979. data/third_party/upb/upb/message/copy.c +11 -7
  1980. data/third_party/upb/upb/message/internal/accessors.h +571 -26
  1981. data/third_party/upb/upb/message/internal/extension.c +1 -0
  1982. data/third_party/upb/upb/message/internal/message.c +10 -11
  1983. data/third_party/upb/upb/message/internal/message.h +8 -7
  1984. data/third_party/upb/upb/message/merge.c +38 -0
  1985. data/third_party/upb/upb/message/merge.h +26 -0
  1986. data/third_party/upb/upb/message/message.h +6 -10
  1987. data/third_party/upb/upb/message/value.h +26 -0
  1988. data/third_party/upb/upb/mini_descriptor/decode.c +7 -2
  1989. data/third_party/upb/upb/mini_descriptor/link.c +7 -3
  1990. data/third_party/upb/upb/mini_table/extension_registry.c +18 -0
  1991. data/third_party/upb/upb/mini_table/extension_registry.h +17 -0
  1992. data/third_party/upb/upb/mini_table/internal/extension.h +9 -0
  1993. data/third_party/upb/upb/mini_table/internal/message.c +21 -1
  1994. data/third_party/upb/upb/mini_table/internal/message.h +40 -20
  1995. data/third_party/upb/upb/mini_table/internal/sub.h +5 -0
  1996. data/third_party/upb/upb/mini_table/message.h +11 -1
  1997. data/third_party/upb/upb/port/def.inc +75 -4
  1998. data/third_party/upb/upb/port/undef.inc +4 -0
  1999. data/third_party/upb/upb/reflection/def.hpp +8 -0
  2000. data/third_party/upb/upb/reflection/field_def.c +8 -5
  2001. data/third_party/upb/upb/reflection/field_def.h +1 -0
  2002. data/third_party/upb/upb/reflection/internal/upb_edition_defaults.h +1 -1
  2003. data/third_party/upb/upb/reflection/message.c +8 -3
  2004. data/third_party/upb/upb/reflection/message.h +2 -2
  2005. data/third_party/upb/upb/text/encode.c +51 -387
  2006. data/third_party/upb/upb/text/encode.h +1 -11
  2007. data/third_party/upb/upb/text/internal/encode.c +180 -0
  2008. data/third_party/upb/upb/text/internal/encode.h +240 -0
  2009. data/third_party/upb/upb/text/options.h +22 -0
  2010. data/third_party/upb/upb/wire/decode.c +71 -39
  2011. data/third_party/upb/upb/wire/decode.h +3 -0
  2012. data/third_party/upb/upb/wire/encode.c +41 -18
  2013. data/third_party/upb/upb/wire/encode.h +3 -0
  2014. data/third_party/upb/upb/wire/internal/decode_fast.c +3 -0
  2015. metadata +129 -102
  2016. data/src/core/lib/gprpp/time.cc +0 -241
  2017. data/src/core/resolver/binder/binder_resolver.cc +0 -153
  2018. data/src/core/xds/xds_client/xds_client_stats.cc +0 -164
  2019. data/src/core/xds/xds_client/xds_client_stats.h +0 -258
  2020. data/third_party/abseil-cpp/absl/strings/internal/has_absl_stringify.h +0 -44
  2021. /data/src/core/{lib/gprpp → util}/glob.cc +0 -0
@@ -14,18 +14,19 @@
14
14
 
15
15
  // For reference check out:
16
16
  // https://itanium-cxx-abi.github.io/cxx-abi/abi.html#mangling
17
- //
18
- // Note that we only have partial C++11 support yet.
19
17
 
20
18
  #include "absl/debugging/internal/demangle.h"
21
19
 
20
+ #include <cstddef>
22
21
  #include <cstdint>
23
22
  #include <cstdio>
24
23
  #include <cstdlib>
24
+ #include <cstring>
25
25
  #include <limits>
26
26
  #include <string>
27
27
 
28
28
  #include "absl/base/config.h"
29
+ #include "absl/debugging/internal/demangle_rust.h"
29
30
 
30
31
  #if ABSL_INTERNAL_HAS_CXA_DEMANGLE
31
32
  #include <cxxabi.h>
@@ -44,14 +45,16 @@ typedef struct {
44
45
 
45
46
  // List of operators from Itanium C++ ABI.
46
47
  static const AbbrevPair kOperatorList[] = {
47
- // New has special syntax (not currently supported).
48
+ // New has special syntax.
48
49
  {"nw", "new", 0},
49
50
  {"na", "new[]", 0},
50
51
 
51
- // Works except that the 'gs' prefix is not supported.
52
+ // Special-cased elsewhere to support the optional gs prefix.
52
53
  {"dl", "delete", 1},
53
54
  {"da", "delete[]", 1},
54
55
 
56
+ {"aw", "co_await", 1},
57
+
55
58
  {"ps", "+", 1}, // "positive"
56
59
  {"ng", "-", 1}, // "negative"
57
60
  {"ad", "&", 1}, // "address-of"
@@ -79,6 +82,7 @@ static const AbbrevPair kOperatorList[] = {
79
82
  {"rs", ">>", 2},
80
83
  {"lS", "<<=", 2},
81
84
  {"rS", ">>=", 2},
85
+ {"ss", "<=>", 2},
82
86
  {"eq", "==", 2},
83
87
  {"ne", "!=", 2},
84
88
  {"lt", "<", 2},
@@ -98,6 +102,7 @@ static const AbbrevPair kOperatorList[] = {
98
102
  {"qu", "?", 3},
99
103
  {"st", "sizeof", 0}, // Special syntax
100
104
  {"sz", "sizeof", 1}, // Not a real operator name, but used in expressions.
105
+ {"sZ", "sizeof...", 0}, // Special syntax
101
106
  {nullptr, nullptr, 0},
102
107
  };
103
108
 
@@ -187,9 +192,50 @@ typedef struct {
187
192
  int recursion_depth; // For stack exhaustion prevention.
188
193
  int steps; // Cap how much work we'll do, regardless of depth.
189
194
  ParseState parse_state; // Backtrackable state copied for most frames.
195
+
196
+ // Conditionally compiled support for marking the position of the first
197
+ // construct Demangle couldn't parse. This preprocessor symbol is intended
198
+ // for use by Abseil demangler maintainers only; its behavior is not part of
199
+ // Abseil's public interface.
200
+ #ifdef ABSL_INTERNAL_DEMANGLE_RECORDS_HIGH_WATER_MARK
201
+ int high_water_mark; // Input position where parsing failed.
202
+ bool too_complex; // True if any guard.IsTooComplex() call returned true.
203
+ #endif
190
204
  } State;
191
205
 
192
206
  namespace {
207
+
208
+ #ifdef ABSL_INTERNAL_DEMANGLE_RECORDS_HIGH_WATER_MARK
209
+ void UpdateHighWaterMark(State *state) {
210
+ if (state->high_water_mark < state->parse_state.mangled_idx) {
211
+ state->high_water_mark = state->parse_state.mangled_idx;
212
+ }
213
+ }
214
+
215
+ void ReportHighWaterMark(State *state) {
216
+ // Write out the mangled name with the trouble point marked, provided that the
217
+ // output buffer is large enough and the mangled name did not hit a complexity
218
+ // limit (in which case the high water mark wouldn't point out an unparsable
219
+ // construct, only the point where a budget ran out).
220
+ const size_t input_length = std::strlen(state->mangled_begin);
221
+ if (input_length + 6 > static_cast<size_t>(state->out_end_idx) ||
222
+ state->too_complex) {
223
+ if (state->out_end_idx > 0) state->out[0] = '\0';
224
+ return;
225
+ }
226
+ const size_t high_water_mark = static_cast<size_t>(state->high_water_mark);
227
+ std::memcpy(state->out, state->mangled_begin, high_water_mark);
228
+ std::memcpy(state->out + high_water_mark, "--!--", 5);
229
+ std::memcpy(state->out + high_water_mark + 5,
230
+ state->mangled_begin + high_water_mark,
231
+ input_length - high_water_mark);
232
+ state->out[input_length + 5] = '\0';
233
+ }
234
+ #else
235
+ void UpdateHighWaterMark(State *) {}
236
+ void ReportHighWaterMark(State *) {}
237
+ #endif
238
+
193
239
  // Prevent deep recursion / stack exhaustion.
194
240
  // Also prevent unbounded handling of complex inputs.
195
241
  class ComplexityGuard {
@@ -201,7 +247,7 @@ class ComplexityGuard {
201
247
  ~ComplexityGuard() { --state_->recursion_depth; }
202
248
 
203
249
  // 256 levels of recursion seems like a reasonable upper limit on depth.
204
- // 128 is not enough to demagle synthetic tests from demangle_unittest.txt:
250
+ // 128 is not enough to demangle synthetic tests from demangle_unittest.txt:
205
251
  // "_ZaaZZZZ..." and "_ZaaZcvZcvZ..."
206
252
  static constexpr int kRecursionDepthLimit = 256;
207
253
 
@@ -222,8 +268,14 @@ class ComplexityGuard {
222
268
  static constexpr int kParseStepsLimit = 1 << 17;
223
269
 
224
270
  bool IsTooComplex() const {
225
- return state_->recursion_depth > kRecursionDepthLimit ||
226
- state_->steps > kParseStepsLimit;
271
+ if (state_->recursion_depth > kRecursionDepthLimit ||
272
+ state_->steps > kParseStepsLimit) {
273
+ #ifdef ABSL_INTERNAL_DEMANGLE_RECORDS_HIGH_WATER_MARK
274
+ state_->too_complex = true;
275
+ #endif
276
+ return true;
277
+ }
278
+ return false;
227
279
  }
228
280
 
229
281
  private:
@@ -270,6 +322,10 @@ static void InitState(State* state,
270
322
  state->out_end_idx = static_cast<int>(out_size);
271
323
  state->recursion_depth = 0;
272
324
  state->steps = 0;
325
+ #ifdef ABSL_INTERNAL_DEMANGLE_RECORDS_HIGH_WATER_MARK
326
+ state->high_water_mark = 0;
327
+ state->too_complex = false;
328
+ #endif
273
329
 
274
330
  state->parse_state.mangled_idx = 0;
275
331
  state->parse_state.out_cur_idx = 0;
@@ -291,13 +347,14 @@ static bool ParseOneCharToken(State *state, const char one_char_token) {
291
347
  if (guard.IsTooComplex()) return false;
292
348
  if (RemainingInput(state)[0] == one_char_token) {
293
349
  ++state->parse_state.mangled_idx;
350
+ UpdateHighWaterMark(state);
294
351
  return true;
295
352
  }
296
353
  return false;
297
354
  }
298
355
 
299
- // Returns true and advances "mangled_cur" if we find "two_char_token"
300
- // at "mangled_cur" position. It is assumed that "two_char_token" does
356
+ // Returns true and advances "mangled_idx" if we find "two_char_token"
357
+ // at "mangled_idx" position. It is assumed that "two_char_token" does
301
358
  // not contain '\0'.
302
359
  static bool ParseTwoCharToken(State *state, const char *two_char_token) {
303
360
  ComplexityGuard guard(state);
@@ -305,11 +362,45 @@ static bool ParseTwoCharToken(State *state, const char *two_char_token) {
305
362
  if (RemainingInput(state)[0] == two_char_token[0] &&
306
363
  RemainingInput(state)[1] == two_char_token[1]) {
307
364
  state->parse_state.mangled_idx += 2;
365
+ UpdateHighWaterMark(state);
308
366
  return true;
309
367
  }
310
368
  return false;
311
369
  }
312
370
 
371
+ // Returns true and advances "mangled_idx" if we find "three_char_token"
372
+ // at "mangled_idx" position. It is assumed that "three_char_token" does
373
+ // not contain '\0'.
374
+ static bool ParseThreeCharToken(State *state, const char *three_char_token) {
375
+ ComplexityGuard guard(state);
376
+ if (guard.IsTooComplex()) return false;
377
+ if (RemainingInput(state)[0] == three_char_token[0] &&
378
+ RemainingInput(state)[1] == three_char_token[1] &&
379
+ RemainingInput(state)[2] == three_char_token[2]) {
380
+ state->parse_state.mangled_idx += 3;
381
+ UpdateHighWaterMark(state);
382
+ return true;
383
+ }
384
+ return false;
385
+ }
386
+
387
+ // Returns true and advances "mangled_idx" if we find a copy of the
388
+ // NUL-terminated string "long_token" at "mangled_idx" position.
389
+ static bool ParseLongToken(State *state, const char *long_token) {
390
+ ComplexityGuard guard(state);
391
+ if (guard.IsTooComplex()) return false;
392
+ int i = 0;
393
+ for (; long_token[i] != '\0'; ++i) {
394
+ // Note that we cannot run off the end of the NUL-terminated input here.
395
+ // Inside the loop body, long_token[i] is known to be different from NUL.
396
+ // So if we read the NUL on the end of the input here, we return at once.
397
+ if (RemainingInput(state)[i] != long_token[i]) return false;
398
+ }
399
+ state->parse_state.mangled_idx += i;
400
+ UpdateHighWaterMark(state);
401
+ return true;
402
+ }
403
+
313
404
  // Returns true and advances "mangled_cur" if we find any character in
314
405
  // "char_class" at "mangled_cur" position.
315
406
  static bool ParseCharClass(State *state, const char *char_class) {
@@ -322,6 +413,7 @@ static bool ParseCharClass(State *state, const char *char_class) {
322
413
  for (; *p != '\0'; ++p) {
323
414
  if (RemainingInput(state)[0] == *p) {
324
415
  ++state->parse_state.mangled_idx;
416
+ UpdateHighWaterMark(state);
325
417
  return true;
326
418
  }
327
419
  }
@@ -554,6 +646,7 @@ static bool ParseFloatNumber(State *state);
554
646
  static bool ParseSeqId(State *state);
555
647
  static bool ParseIdentifier(State *state, size_t length);
556
648
  static bool ParseOperatorName(State *state, int *arity);
649
+ static bool ParseConversionOperatorType(State *state);
557
650
  static bool ParseSpecialName(State *state);
558
651
  static bool ParseCallOffset(State *state);
559
652
  static bool ParseNVOffset(State *state);
@@ -563,21 +656,33 @@ static bool ParseCtorDtorName(State *state);
563
656
  static bool ParseDecltype(State *state);
564
657
  static bool ParseType(State *state);
565
658
  static bool ParseCVQualifiers(State *state);
659
+ static bool ParseExtendedQualifier(State *state);
566
660
  static bool ParseBuiltinType(State *state);
661
+ static bool ParseVendorExtendedType(State *state);
567
662
  static bool ParseFunctionType(State *state);
568
663
  static bool ParseBareFunctionType(State *state);
664
+ static bool ParseOverloadAttribute(State *state);
569
665
  static bool ParseClassEnumType(State *state);
570
666
  static bool ParseArrayType(State *state);
571
667
  static bool ParsePointerToMemberType(State *state);
572
668
  static bool ParseTemplateParam(State *state);
669
+ static bool ParseTemplateParamDecl(State *state);
573
670
  static bool ParseTemplateTemplateParam(State *state);
574
671
  static bool ParseTemplateArgs(State *state);
575
672
  static bool ParseTemplateArg(State *state);
576
673
  static bool ParseBaseUnresolvedName(State *state);
577
674
  static bool ParseUnresolvedName(State *state);
675
+ static bool ParseUnresolvedQualifierLevel(State *state);
676
+ static bool ParseUnionSelector(State* state);
677
+ static bool ParseFunctionParam(State* state);
678
+ static bool ParseBracedExpression(State *state);
578
679
  static bool ParseExpression(State *state);
680
+ static bool ParseInitializer(State *state);
579
681
  static bool ParseExprPrimary(State *state);
580
- static bool ParseExprCastValue(State *state);
682
+ static bool ParseExprCastValueAndTrailingE(State *state);
683
+ static bool ParseQRequiresClauseExpr(State *state);
684
+ static bool ParseRequirement(State *state);
685
+ static bool ParseTypeConstraint(State *state);
581
686
  static bool ParseLocalName(State *state);
582
687
  static bool ParseLocalNameSuffix(State *state);
583
688
  static bool ParseDiscriminator(State *state);
@@ -622,22 +727,34 @@ static bool ParseMangledName(State *state) {
622
727
  }
623
728
 
624
729
  // <encoding> ::= <(function) name> <bare-function-type>
730
+ // [`Q` <requires-clause expr>]
625
731
  // ::= <(data) name>
626
732
  // ::= <special-name>
733
+ //
734
+ // NOTE: Based on http://shortn/_Hoq9qG83rx
627
735
  static bool ParseEncoding(State *state) {
628
736
  ComplexityGuard guard(state);
629
737
  if (guard.IsTooComplex()) return false;
630
- // Implementing the first two productions together as <name>
631
- // [<bare-function-type>] avoids exponential blowup of backtracking.
738
+ // Since the first two productions both start with <name>, attempt
739
+ // to parse it only once to avoid exponential blowup of backtracking.
632
740
  //
633
- // Since Optional(...) can't fail, there's no need to copy the state for
634
- // backtracking.
635
- if (ParseName(state) && Optional(ParseBareFunctionType(state))) {
741
+ // We're careful about exponential blowup because <encoding> recursively
742
+ // appears in other productions downstream of its first two productions,
743
+ // which means that every call to `ParseName` would possibly indirectly
744
+ // result in two calls to `ParseName` etc.
745
+ if (ParseName(state)) {
746
+ if (!ParseBareFunctionType(state)) {
747
+ return true; // <(data) name>
748
+ }
749
+
750
+ // Parsed: <(function) name> <bare-function-type>
751
+ // Pending: [`Q` <requires-clause expr>]
752
+ ParseQRequiresClauseExpr(state); // restores state on failure
636
753
  return true;
637
754
  }
638
755
 
639
756
  if (ParseSpecialName(state)) {
640
- return true;
757
+ return true; // <special-name>
641
758
  }
642
759
  return false;
643
760
  }
@@ -723,19 +840,26 @@ static bool ParseNestedName(State *state) {
723
840
  // <prefix> ::= <prefix> <unqualified-name>
724
841
  // ::= <template-prefix> <template-args>
725
842
  // ::= <template-param>
843
+ // ::= <decltype>
726
844
  // ::= <substitution>
727
845
  // ::= # empty
728
846
  // <template-prefix> ::= <prefix> <(template) unqualified-name>
729
847
  // ::= <template-param>
730
848
  // ::= <substitution>
849
+ // ::= <vendor-extended-type>
731
850
  static bool ParsePrefix(State *state) {
732
851
  ComplexityGuard guard(state);
733
852
  if (guard.IsTooComplex()) return false;
734
853
  bool has_something = false;
735
854
  while (true) {
736
855
  MaybeAppendSeparator(state);
737
- if (ParseTemplateParam(state) ||
856
+ if (ParseTemplateParam(state) || ParseDecltype(state) ||
738
857
  ParseSubstitution(state, /*accept_std=*/true) ||
858
+ // Although the official grammar does not mention it, nested-names
859
+ // shaped like Nu14__some_builtinIiE6memberE occur in practice, and it
860
+ // is not clear what else a compiler is supposed to do when a
861
+ // vendor-extended type has named members.
862
+ ParseVendorExtendedType(state) ||
739
863
  ParseUnscopedName(state) ||
740
864
  (ParseOneCharToken(state, 'M') && ParseUnnamedTypeName(state))) {
741
865
  has_something = true;
@@ -757,8 +881,14 @@ static bool ParsePrefix(State *state) {
757
881
  // ::= <source-name> [<abi-tags>]
758
882
  // ::= <local-source-name> [<abi-tags>]
759
883
  // ::= <unnamed-type-name> [<abi-tags>]
884
+ // ::= DC <source-name>+ E # C++17 structured binding
885
+ // ::= F <source-name> # C++20 constrained friend
886
+ // ::= F <operator-name> # C++20 constrained friend
760
887
  //
761
888
  // <local-source-name> is a GCC extension; see below.
889
+ //
890
+ // For the F notation for constrained friends, see
891
+ // https://github.com/itanium-cxx-abi/cxx-abi/issues/24#issuecomment-1491130332.
762
892
  static bool ParseUnqualifiedName(State *state) {
763
893
  ComplexityGuard guard(state);
764
894
  if (guard.IsTooComplex()) return false;
@@ -767,6 +897,23 @@ static bool ParseUnqualifiedName(State *state) {
767
897
  ParseUnnamedTypeName(state)) {
768
898
  return ParseAbiTags(state);
769
899
  }
900
+
901
+ // DC <source-name>+ E
902
+ ParseState copy = state->parse_state;
903
+ if (ParseTwoCharToken(state, "DC") && OneOrMore(ParseSourceName, state) &&
904
+ ParseOneCharToken(state, 'E')) {
905
+ return true;
906
+ }
907
+ state->parse_state = copy;
908
+
909
+ // F <source-name>
910
+ // F <operator-name>
911
+ if (ParseOneCharToken(state, 'F') && MaybeAppend(state, "friend ") &&
912
+ (ParseSourceName(state) || ParseOperatorName(state, nullptr))) {
913
+ return true;
914
+ }
915
+ state->parse_state = copy;
916
+
770
917
  return false;
771
918
  }
772
919
 
@@ -824,7 +971,11 @@ static bool ParseLocalSourceName(State *state) {
824
971
  // <unnamed-type-name> ::= Ut [<(nonnegative) number>] _
825
972
  // ::= <closure-type-name>
826
973
  // <closure-type-name> ::= Ul <lambda-sig> E [<(nonnegative) number>] _
827
- // <lambda-sig> ::= <(parameter) type>+
974
+ // <lambda-sig> ::= <template-param-decl>* <(parameter) type>+
975
+ //
976
+ // For <template-param-decl>* in <lambda-sig> see:
977
+ //
978
+ // https://github.com/itanium-cxx-abi/cxx-abi/issues/31
828
979
  static bool ParseUnnamedTypeName(State *state) {
829
980
  ComplexityGuard guard(state);
830
981
  if (guard.IsTooComplex()) return false;
@@ -847,6 +998,7 @@ static bool ParseUnnamedTypeName(State *state) {
847
998
  // Closure type.
848
999
  which = -1;
849
1000
  if (ParseTwoCharToken(state, "Ul") && DisableAppend(state) &&
1001
+ ZeroOrMore(ParseTemplateParamDecl, state) &&
850
1002
  OneOrMore(ParseType, state) && RestoreAppend(state, copy.append) &&
851
1003
  ParseOneCharToken(state, 'E') && Optional(ParseNumber(state, &which)) &&
852
1004
  which <= std::numeric_limits<int>::max() - 2 && // Don't overflow.
@@ -888,6 +1040,7 @@ static bool ParseNumber(State *state, int *number_out) {
888
1040
  }
889
1041
  if (p != RemainingInput(state)) { // Conversion succeeded.
890
1042
  state->parse_state.mangled_idx += p - RemainingInput(state);
1043
+ UpdateHighWaterMark(state);
891
1044
  if (number_out != nullptr) {
892
1045
  // Note: possibly truncate "number".
893
1046
  *number_out = static_cast<int>(number);
@@ -910,6 +1063,7 @@ static bool ParseFloatNumber(State *state) {
910
1063
  }
911
1064
  if (p != RemainingInput(state)) { // Conversion succeeded.
912
1065
  state->parse_state.mangled_idx += p - RemainingInput(state);
1066
+ UpdateHighWaterMark(state);
913
1067
  return true;
914
1068
  }
915
1069
  return false;
@@ -928,6 +1082,7 @@ static bool ParseSeqId(State *state) {
928
1082
  }
929
1083
  if (p != RemainingInput(state)) { // Conversion succeeded.
930
1084
  state->parse_state.mangled_idx += p - RemainingInput(state);
1085
+ UpdateHighWaterMark(state);
931
1086
  return true;
932
1087
  }
933
1088
  return false;
@@ -946,11 +1101,13 @@ static bool ParseIdentifier(State *state, size_t length) {
946
1101
  MaybeAppendWithLength(state, RemainingInput(state), length);
947
1102
  }
948
1103
  state->parse_state.mangled_idx += length;
1104
+ UpdateHighWaterMark(state);
949
1105
  return true;
950
1106
  }
951
1107
 
952
1108
  // <operator-name> ::= nw, and other two letters cases
953
1109
  // ::= cv <type> # (cast)
1110
+ // ::= li <source-name> # C++11 user-defined literal
954
1111
  // ::= v <digit> <source-name> # vendor extended operator
955
1112
  static bool ParseOperatorName(State *state, int *arity) {
956
1113
  ComplexityGuard guard(state);
@@ -961,7 +1118,7 @@ static bool ParseOperatorName(State *state, int *arity) {
961
1118
  // First check with "cv" (cast) case.
962
1119
  ParseState copy = state->parse_state;
963
1120
  if (ParseTwoCharToken(state, "cv") && MaybeAppend(state, "operator ") &&
964
- EnterNestedName(state) && ParseType(state) &&
1121
+ EnterNestedName(state) && ParseConversionOperatorType(state) &&
965
1122
  LeaveNestedName(state, copy.nest_level)) {
966
1123
  if (arity != nullptr) {
967
1124
  *arity = 1;
@@ -970,6 +1127,13 @@ static bool ParseOperatorName(State *state, int *arity) {
970
1127
  }
971
1128
  state->parse_state = copy;
972
1129
 
1130
+ // Then user-defined literals.
1131
+ if (ParseTwoCharToken(state, "li") && MaybeAppend(state, "operator\"\" ") &&
1132
+ ParseSourceName(state)) {
1133
+ return true;
1134
+ }
1135
+ state->parse_state = copy;
1136
+
973
1137
  // Then vendor extended operators.
974
1138
  if (ParseOneCharToken(state, 'v') && ParseDigit(state, arity) &&
975
1139
  ParseSourceName(state)) {
@@ -997,36 +1161,120 @@ static bool ParseOperatorName(State *state, int *arity) {
997
1161
  }
998
1162
  MaybeAppend(state, p->real_name);
999
1163
  state->parse_state.mangled_idx += 2;
1164
+ UpdateHighWaterMark(state);
1000
1165
  return true;
1001
1166
  }
1002
1167
  }
1003
1168
  return false;
1004
1169
  }
1005
1170
 
1171
+ // <operator-name> ::= cv <type> # (cast)
1172
+ //
1173
+ // The name of a conversion operator is the one place where cv-qualifiers, *, &,
1174
+ // and other simple type combinators are expected to appear in our stripped-down
1175
+ // demangling (elsewhere they appear in function signatures or template
1176
+ // arguments, which we omit from the output). We make reasonable efforts to
1177
+ // render simple cases accurately.
1178
+ static bool ParseConversionOperatorType(State *state) {
1179
+ ComplexityGuard guard(state);
1180
+ if (guard.IsTooComplex()) return false;
1181
+ ParseState copy = state->parse_state;
1182
+
1183
+ // Scan pointers, const, and other easy mangling prefixes with postfix
1184
+ // demanglings. Remember the range of input for later rescanning.
1185
+ //
1186
+ // See `ParseType` and the `switch` below for the meaning of each char.
1187
+ const char* begin_simple_prefixes = RemainingInput(state);
1188
+ while (ParseCharClass(state, "OPRCGrVK")) {}
1189
+ const char* end_simple_prefixes = RemainingInput(state);
1190
+
1191
+ // Emit the base type first.
1192
+ if (!ParseType(state)) {
1193
+ state->parse_state = copy;
1194
+ return false;
1195
+ }
1196
+
1197
+ // Then rescan the easy type combinators in reverse order to emit their
1198
+ // demanglings in the expected output order.
1199
+ while (begin_simple_prefixes != end_simple_prefixes) {
1200
+ switch (*--end_simple_prefixes) {
1201
+ case 'P':
1202
+ MaybeAppend(state, "*");
1203
+ break;
1204
+ case 'R':
1205
+ MaybeAppend(state, "&");
1206
+ break;
1207
+ case 'O':
1208
+ MaybeAppend(state, "&&");
1209
+ break;
1210
+ case 'C':
1211
+ MaybeAppend(state, " _Complex");
1212
+ break;
1213
+ case 'G':
1214
+ MaybeAppend(state, " _Imaginary");
1215
+ break;
1216
+ case 'r':
1217
+ MaybeAppend(state, " restrict");
1218
+ break;
1219
+ case 'V':
1220
+ MaybeAppend(state, " volatile");
1221
+ break;
1222
+ case 'K':
1223
+ MaybeAppend(state, " const");
1224
+ break;
1225
+ }
1226
+ }
1227
+ return true;
1228
+ }
1229
+
1006
1230
  // <special-name> ::= TV <type>
1007
1231
  // ::= TT <type>
1008
1232
  // ::= TI <type>
1009
1233
  // ::= TS <type>
1010
- // ::= TH <type> # thread-local
1234
+ // ::= TW <name> # thread-local wrapper
1235
+ // ::= TH <name> # thread-local initialization
1011
1236
  // ::= Tc <call-offset> <call-offset> <(base) encoding>
1012
1237
  // ::= GV <(object) name>
1238
+ // ::= GR <(object) name> [<seq-id>] _
1013
1239
  // ::= T <call-offset> <(base) encoding>
1240
+ // ::= GTt <encoding> # transaction-safe entry point
1241
+ // ::= TA <template-arg> # nontype template parameter object
1014
1242
  // G++ extensions:
1015
1243
  // ::= TC <type> <(offset) number> _ <(base) type>
1016
1244
  // ::= TF <type>
1017
1245
  // ::= TJ <type>
1018
- // ::= GR <name>
1246
+ // ::= GR <name> # without final _, perhaps an earlier form?
1019
1247
  // ::= GA <encoding>
1020
1248
  // ::= Th <call-offset> <(base) encoding>
1021
1249
  // ::= Tv <call-offset> <(base) encoding>
1022
1250
  //
1023
- // Note: we don't care much about them since they don't appear in
1024
- // stack traces. The are special data.
1251
+ // Note: Most of these are special data, not functions that occur in stack
1252
+ // traces. Exceptions are TW and TH, which denote functions supporting the
1253
+ // thread_local feature. For these see:
1254
+ //
1255
+ // https://maskray.me/blog/2021-02-14-all-about-thread-local-storage
1256
+ //
1257
+ // For TA see https://github.com/itanium-cxx-abi/cxx-abi/issues/63.
1025
1258
  static bool ParseSpecialName(State *state) {
1026
1259
  ComplexityGuard guard(state);
1027
1260
  if (guard.IsTooComplex()) return false;
1028
1261
  ParseState copy = state->parse_state;
1029
- if (ParseOneCharToken(state, 'T') && ParseCharClass(state, "VTISH") &&
1262
+
1263
+ if (ParseTwoCharToken(state, "TW")) {
1264
+ MaybeAppend(state, "thread-local wrapper routine for ");
1265
+ if (ParseName(state)) return true;
1266
+ state->parse_state = copy;
1267
+ return false;
1268
+ }
1269
+
1270
+ if (ParseTwoCharToken(state, "TH")) {
1271
+ MaybeAppend(state, "thread-local initialization routine for ");
1272
+ if (ParseName(state)) return true;
1273
+ state->parse_state = copy;
1274
+ return false;
1275
+ }
1276
+
1277
+ if (ParseOneCharToken(state, 'T') && ParseCharClass(state, "VTIS") &&
1030
1278
  ParseType(state)) {
1031
1279
  return true;
1032
1280
  }
@@ -1064,21 +1312,51 @@ static bool ParseSpecialName(State *state) {
1064
1312
  }
1065
1313
  state->parse_state = copy;
1066
1314
 
1067
- if (ParseTwoCharToken(state, "GR") && ParseName(state)) {
1315
+ // <special-name> ::= GR <(object) name> [<seq-id>] _ # modern standard
1316
+ // ::= GR <(object) name> # also recognized
1317
+ if (ParseTwoCharToken(state, "GR")) {
1318
+ MaybeAppend(state, "reference temporary for ");
1319
+ if (!ParseName(state)) {
1320
+ state->parse_state = copy;
1321
+ return false;
1322
+ }
1323
+ const bool has_seq_id = ParseSeqId(state);
1324
+ const bool has_underscore = ParseOneCharToken(state, '_');
1325
+ if (has_seq_id && !has_underscore) {
1326
+ state->parse_state = copy;
1327
+ return false;
1328
+ }
1068
1329
  return true;
1069
1330
  }
1070
- state->parse_state = copy;
1071
1331
 
1072
1332
  if (ParseTwoCharToken(state, "GA") && ParseEncoding(state)) {
1073
1333
  return true;
1074
1334
  }
1075
1335
  state->parse_state = copy;
1076
1336
 
1337
+ if (ParseThreeCharToken(state, "GTt") &&
1338
+ MaybeAppend(state, "transaction clone for ") && ParseEncoding(state)) {
1339
+ return true;
1340
+ }
1341
+ state->parse_state = copy;
1342
+
1077
1343
  if (ParseOneCharToken(state, 'T') && ParseCharClass(state, "hv") &&
1078
1344
  ParseCallOffset(state) && ParseEncoding(state)) {
1079
1345
  return true;
1080
1346
  }
1081
1347
  state->parse_state = copy;
1348
+
1349
+ if (ParseTwoCharToken(state, "TA")) {
1350
+ bool append = state->parse_state.append;
1351
+ DisableAppend(state);
1352
+ if (ParseTemplateArg(state)) {
1353
+ RestoreAppend(state, append);
1354
+ MaybeAppend(state, "template parameter object");
1355
+ return true;
1356
+ }
1357
+ }
1358
+ state->parse_state = copy;
1359
+
1082
1360
  return false;
1083
1361
  }
1084
1362
 
@@ -1182,7 +1460,6 @@ static bool ParseDecltype(State *state) {
1182
1460
  // ::= O <type> # rvalue reference-to (C++0x)
1183
1461
  // ::= C <type> # complex pair (C 2000)
1184
1462
  // ::= G <type> # imaginary (C 2000)
1185
- // ::= U <source-name> <type> # vendor extended type qualifier
1186
1463
  // ::= <builtin-type>
1187
1464
  // ::= <function-type>
1188
1465
  // ::= <class-enum-type> # note: just an alias for <name>
@@ -1193,7 +1470,9 @@ static bool ParseDecltype(State *state) {
1193
1470
  // ::= <decltype>
1194
1471
  // ::= <substitution>
1195
1472
  // ::= Dp <type> # pack expansion of (C++0x)
1196
- // ::= Dv <num-elems> _ # GNU vector extension
1473
+ // ::= Dv <(elements) number> _ <type> # GNU vector extension
1474
+ // ::= Dv <(bytes) expression> _ <type>
1475
+ // ::= Dk <type-constraint> # constrained auto
1197
1476
  //
1198
1477
  static bool ParseType(State *state) {
1199
1478
  ComplexityGuard guard(state);
@@ -1236,12 +1515,6 @@ static bool ParseType(State *state) {
1236
1515
  }
1237
1516
  state->parse_state = copy;
1238
1517
 
1239
- if (ParseOneCharToken(state, 'U') && ParseSourceName(state) &&
1240
- ParseType(state)) {
1241
- return true;
1242
- }
1243
- state->parse_state = copy;
1244
-
1245
1518
  if (ParseBuiltinType(state) || ParseFunctionType(state) ||
1246
1519
  ParseClassEnumType(state) || ParseArrayType(state) ||
1247
1520
  ParsePointerToMemberType(state) || ParseDecltype(state) ||
@@ -1260,54 +1533,160 @@ static bool ParseType(State *state) {
1260
1533
  return true;
1261
1534
  }
1262
1535
 
1536
+ // GNU vector extension Dv <number> _ <type>
1263
1537
  if (ParseTwoCharToken(state, "Dv") && ParseNumber(state, nullptr) &&
1264
- ParseOneCharToken(state, '_')) {
1538
+ ParseOneCharToken(state, '_') && ParseType(state)) {
1265
1539
  return true;
1266
1540
  }
1267
1541
  state->parse_state = copy;
1268
1542
 
1269
- return false;
1543
+ // GNU vector extension Dv <expression> _ <type>
1544
+ if (ParseTwoCharToken(state, "Dv") && ParseExpression(state) &&
1545
+ ParseOneCharToken(state, '_') && ParseType(state)) {
1546
+ return true;
1547
+ }
1548
+ state->parse_state = copy;
1549
+
1550
+ if (ParseTwoCharToken(state, "Dk") && ParseTypeConstraint(state)) {
1551
+ return true;
1552
+ }
1553
+ state->parse_state = copy;
1554
+
1555
+ // For this notation see CXXNameMangler::mangleType in Clang's source code.
1556
+ // The relevant logic and its comment "not clear how to mangle this!" date
1557
+ // from 2011, so it may be with us awhile.
1558
+ return ParseLongToken(state, "_SUBSTPACK_");
1270
1559
  }
1271
1560
 
1561
+ // <qualifiers> ::= <extended-qualifier>* <CV-qualifiers>
1272
1562
  // <CV-qualifiers> ::= [r] [V] [K]
1563
+ //
1273
1564
  // We don't allow empty <CV-qualifiers> to avoid infinite loop in
1274
1565
  // ParseType().
1275
1566
  static bool ParseCVQualifiers(State *state) {
1276
1567
  ComplexityGuard guard(state);
1277
1568
  if (guard.IsTooComplex()) return false;
1278
1569
  int num_cv_qualifiers = 0;
1570
+ while (ParseExtendedQualifier(state)) ++num_cv_qualifiers;
1279
1571
  num_cv_qualifiers += ParseOneCharToken(state, 'r');
1280
1572
  num_cv_qualifiers += ParseOneCharToken(state, 'V');
1281
1573
  num_cv_qualifiers += ParseOneCharToken(state, 'K');
1282
1574
  return num_cv_qualifiers > 0;
1283
1575
  }
1284
1576
 
1577
+ // <extended-qualifier> ::= U <source-name> [<template-args>]
1578
+ static bool ParseExtendedQualifier(State *state) {
1579
+ ComplexityGuard guard(state);
1580
+ if (guard.IsTooComplex()) return false;
1581
+ ParseState copy = state->parse_state;
1582
+
1583
+ if (!ParseOneCharToken(state, 'U')) return false;
1584
+
1585
+ bool append = state->parse_state.append;
1586
+ DisableAppend(state);
1587
+ if (!ParseSourceName(state)) {
1588
+ state->parse_state = copy;
1589
+ return false;
1590
+ }
1591
+ Optional(ParseTemplateArgs(state));
1592
+ RestoreAppend(state, append);
1593
+ return true;
1594
+ }
1595
+
1285
1596
  // <builtin-type> ::= v, etc. # single-character builtin types
1286
- // ::= u <source-name>
1597
+ // ::= <vendor-extended-type>
1287
1598
  // ::= Dd, etc. # two-character builtin types
1599
+ // ::= DB (<number> | <expression>) _ # _BitInt(N)
1600
+ // ::= DU (<number> | <expression>) _ # unsigned _BitInt(N)
1601
+ // ::= DF <number> _ # _FloatN (N bits)
1602
+ // ::= DF <number> x # _FloatNx
1603
+ // ::= DF16b # std::bfloat16_t
1288
1604
  //
1289
1605
  // Not supported:
1290
- // ::= DF <number> _ # _FloatN (N bits)
1291
- //
1606
+ // ::= [DS] DA <fixed-point-size>
1607
+ // ::= [DS] DR <fixed-point-size>
1608
+ // because real implementations of N1169 fixed-point are scant.
1292
1609
  static bool ParseBuiltinType(State *state) {
1293
1610
  ComplexityGuard guard(state);
1294
1611
  if (guard.IsTooComplex()) return false;
1295
- const AbbrevPair *p;
1296
- for (p = kBuiltinTypeList; p->abbrev != nullptr; ++p) {
1612
+ ParseState copy = state->parse_state;
1613
+
1614
+ // DB (<number> | <expression>) _ # _BitInt(N)
1615
+ // DU (<number> | <expression>) _ # unsigned _BitInt(N)
1616
+ if (ParseTwoCharToken(state, "DB") ||
1617
+ (ParseTwoCharToken(state, "DU") && MaybeAppend(state, "unsigned "))) {
1618
+ bool append = state->parse_state.append;
1619
+ DisableAppend(state);
1620
+ int number = -1;
1621
+ if (!ParseNumber(state, &number) && !ParseExpression(state)) {
1622
+ state->parse_state = copy;
1623
+ return false;
1624
+ }
1625
+ RestoreAppend(state, append);
1626
+
1627
+ if (!ParseOneCharToken(state, '_')) {
1628
+ state->parse_state = copy;
1629
+ return false;
1630
+ }
1631
+
1632
+ MaybeAppend(state, "_BitInt(");
1633
+ if (number >= 0) {
1634
+ MaybeAppendDecimal(state, number);
1635
+ } else {
1636
+ MaybeAppend(state, "?"); // the best we can do for dependent sizes
1637
+ }
1638
+ MaybeAppend(state, ")");
1639
+ return true;
1640
+ }
1641
+
1642
+ // DF <number> _ # _FloatN
1643
+ // DF <number> x # _FloatNx
1644
+ // DF16b # std::bfloat16_t
1645
+ if (ParseTwoCharToken(state, "DF")) {
1646
+ if (ParseThreeCharToken(state, "16b")) {
1647
+ MaybeAppend(state, "std::bfloat16_t");
1648
+ return true;
1649
+ }
1650
+ int number = 0;
1651
+ if (!ParseNumber(state, &number)) {
1652
+ state->parse_state = copy;
1653
+ return false;
1654
+ }
1655
+ MaybeAppend(state, "_Float");
1656
+ MaybeAppendDecimal(state, number);
1657
+ if (ParseOneCharToken(state, 'x')) {
1658
+ MaybeAppend(state, "x");
1659
+ return true;
1660
+ }
1661
+ if (ParseOneCharToken(state, '_')) return true;
1662
+ state->parse_state = copy;
1663
+ return false;
1664
+ }
1665
+
1666
+ for (const AbbrevPair *p = kBuiltinTypeList; p->abbrev != nullptr; ++p) {
1297
1667
  // Guaranteed only 1- or 2-character strings in kBuiltinTypeList.
1298
1668
  if (p->abbrev[1] == '\0') {
1299
1669
  if (ParseOneCharToken(state, p->abbrev[0])) {
1300
1670
  MaybeAppend(state, p->real_name);
1301
- return true;
1671
+ return true; // ::= v, etc. # single-character builtin types
1302
1672
  }
1303
1673
  } else if (p->abbrev[2] == '\0' && ParseTwoCharToken(state, p->abbrev)) {
1304
1674
  MaybeAppend(state, p->real_name);
1305
- return true;
1675
+ return true; // ::= Dd, etc. # two-character builtin types
1306
1676
  }
1307
1677
  }
1308
1678
 
1679
+ return ParseVendorExtendedType(state);
1680
+ }
1681
+
1682
+ // <vendor-extended-type> ::= u <source-name> [<template-args>]
1683
+ static bool ParseVendorExtendedType(State *state) {
1684
+ ComplexityGuard guard(state);
1685
+ if (guard.IsTooComplex()) return false;
1686
+
1309
1687
  ParseState copy = state->parse_state;
1310
- if (ParseOneCharToken(state, 'u') && ParseSourceName(state)) {
1688
+ if (ParseOneCharToken(state, 'u') && ParseSourceName(state) &&
1689
+ Optional(ParseTemplateArgs(state))) {
1311
1690
  return true;
1312
1691
  }
1313
1692
  state->parse_state = copy;
@@ -1342,28 +1721,44 @@ static bool ParseExceptionSpec(State *state) {
1342
1721
  return false;
1343
1722
  }
1344
1723
 
1345
- // <function-type> ::= [exception-spec] F [Y] <bare-function-type> [O] E
1724
+ // <function-type> ::=
1725
+ // [exception-spec] [Dx] F [Y] <bare-function-type> [<ref-qualifier>] E
1726
+ //
1727
+ // <ref-qualifier> ::= R | O
1346
1728
  static bool ParseFunctionType(State *state) {
1347
1729
  ComplexityGuard guard(state);
1348
1730
  if (guard.IsTooComplex()) return false;
1349
1731
  ParseState copy = state->parse_state;
1350
- if (Optional(ParseExceptionSpec(state)) && ParseOneCharToken(state, 'F') &&
1351
- Optional(ParseOneCharToken(state, 'Y')) && ParseBareFunctionType(state) &&
1352
- Optional(ParseOneCharToken(state, 'O')) &&
1353
- ParseOneCharToken(state, 'E')) {
1354
- return true;
1732
+ Optional(ParseExceptionSpec(state));
1733
+ Optional(ParseTwoCharToken(state, "Dx"));
1734
+ if (!ParseOneCharToken(state, 'F')) {
1735
+ state->parse_state = copy;
1736
+ return false;
1355
1737
  }
1356
- state->parse_state = copy;
1357
- return false;
1738
+ Optional(ParseOneCharToken(state, 'Y'));
1739
+ if (!ParseBareFunctionType(state)) {
1740
+ state->parse_state = copy;
1741
+ return false;
1742
+ }
1743
+ Optional(ParseCharClass(state, "RO"));
1744
+ if (!ParseOneCharToken(state, 'E')) {
1745
+ state->parse_state = copy;
1746
+ return false;
1747
+ }
1748
+ return true;
1358
1749
  }
1359
1750
 
1360
- // <bare-function-type> ::= <(signature) type>+
1751
+ // <bare-function-type> ::= <overload-attribute>* <(signature) type>+
1752
+ //
1753
+ // The <overload-attribute>* prefix is nonstandard; see the comment on
1754
+ // ParseOverloadAttribute.
1361
1755
  static bool ParseBareFunctionType(State *state) {
1362
1756
  ComplexityGuard guard(state);
1363
1757
  if (guard.IsTooComplex()) return false;
1364
1758
  ParseState copy = state->parse_state;
1365
1759
  DisableAppend(state);
1366
- if (OneOrMore(ParseType, state)) {
1760
+ if (ZeroOrMore(ParseOverloadAttribute, state) &&
1761
+ OneOrMore(ParseType, state)) {
1367
1762
  RestoreAppend(state, copy.append);
1368
1763
  MaybeAppend(state, "()");
1369
1764
  return true;
@@ -1372,11 +1767,43 @@ static bool ParseBareFunctionType(State *state) {
1372
1767
  return false;
1373
1768
  }
1374
1769
 
1770
+ // <overload-attribute> ::= Ua <name>
1771
+ //
1772
+ // The nonstandard <overload-attribute> production is sufficient to accept the
1773
+ // current implementation of __attribute__((enable_if(condition, "message")))
1774
+ // and future attributes of a similar shape. See
1775
+ // https://clang.llvm.org/docs/AttributeReference.html#enable-if and the
1776
+ // definition of CXXNameMangler::mangleFunctionEncodingBareType in Clang's
1777
+ // source code.
1778
+ static bool ParseOverloadAttribute(State *state) {
1779
+ ComplexityGuard guard(state);
1780
+ if (guard.IsTooComplex()) return false;
1781
+ ParseState copy = state->parse_state;
1782
+ if (ParseTwoCharToken(state, "Ua") && ParseName(state)) {
1783
+ return true;
1784
+ }
1785
+ state->parse_state = copy;
1786
+ return false;
1787
+ }
1788
+
1375
1789
  // <class-enum-type> ::= <name>
1790
+ // ::= Ts <name> # struct Name or class Name
1791
+ // ::= Tu <name> # union Name
1792
+ // ::= Te <name> # enum Name
1793
+ //
1794
+ // See http://shortn/_W3YrltiEd0.
1376
1795
  static bool ParseClassEnumType(State *state) {
1377
1796
  ComplexityGuard guard(state);
1378
1797
  if (guard.IsTooComplex()) return false;
1379
- return ParseName(state);
1798
+ ParseState copy = state->parse_state;
1799
+ if (Optional(ParseTwoCharToken(state, "Ts") ||
1800
+ ParseTwoCharToken(state, "Tu") ||
1801
+ ParseTwoCharToken(state, "Te")) &&
1802
+ ParseName(state)) {
1803
+ return true;
1804
+ }
1805
+ state->parse_state = copy;
1806
+ return false;
1380
1807
  }
1381
1808
 
1382
1809
  // <array-type> ::= A <(positive dimension) number> _ <(element) type>
@@ -1413,21 +1840,83 @@ static bool ParsePointerToMemberType(State *state) {
1413
1840
 
1414
1841
  // <template-param> ::= T_
1415
1842
  // ::= T <parameter-2 non-negative number> _
1843
+ // ::= TL <level-1> __
1844
+ // ::= TL <level-1> _ <parameter-2 non-negative number> _
1416
1845
  static bool ParseTemplateParam(State *state) {
1417
1846
  ComplexityGuard guard(state);
1418
1847
  if (guard.IsTooComplex()) return false;
1419
1848
  if (ParseTwoCharToken(state, "T_")) {
1420
1849
  MaybeAppend(state, "?"); // We don't support template substitutions.
1421
- return true;
1850
+ return true; // ::= T_
1422
1851
  }
1423
1852
 
1424
1853
  ParseState copy = state->parse_state;
1425
1854
  if (ParseOneCharToken(state, 'T') && ParseNumber(state, nullptr) &&
1426
1855
  ParseOneCharToken(state, '_')) {
1427
1856
  MaybeAppend(state, "?"); // We don't support template substitutions.
1857
+ return true; // ::= T <parameter-2 non-negative number> _
1858
+ }
1859
+ state->parse_state = copy;
1860
+
1861
+ if (ParseTwoCharToken(state, "TL") && ParseNumber(state, nullptr)) {
1862
+ if (ParseTwoCharToken(state, "__")) {
1863
+ MaybeAppend(state, "?"); // We don't support template substitutions.
1864
+ return true; // ::= TL <level-1> __
1865
+ }
1866
+
1867
+ if (ParseOneCharToken(state, '_') && ParseNumber(state, nullptr) &&
1868
+ ParseOneCharToken(state, '_')) {
1869
+ MaybeAppend(state, "?"); // We don't support template substitutions.
1870
+ return true; // ::= TL <level-1> _ <parameter-2 non-negative number> _
1871
+ }
1872
+ }
1873
+ state->parse_state = copy;
1874
+ return false;
1875
+ }
1876
+
1877
+ // <template-param-decl>
1878
+ // ::= Ty # template type parameter
1879
+ // ::= Tk <concept name> [<template-args>] # constrained type parameter
1880
+ // ::= Tn <type> # template non-type parameter
1881
+ // ::= Tt <template-param-decl>* E # template template parameter
1882
+ // ::= Tp <template-param-decl> # template parameter pack
1883
+ //
1884
+ // NOTE: <concept name> is just a <name>: http://shortn/_MqJVyr0fc1
1885
+ // TODO(b/324066279): Implement optional suffix for `Tt`:
1886
+ // [Q <requires-clause expr>]
1887
+ static bool ParseTemplateParamDecl(State *state) {
1888
+ ComplexityGuard guard(state);
1889
+ if (guard.IsTooComplex()) return false;
1890
+ ParseState copy = state->parse_state;
1891
+
1892
+ if (ParseTwoCharToken(state, "Ty")) {
1893
+ return true;
1894
+ }
1895
+ state->parse_state = copy;
1896
+
1897
+ if (ParseTwoCharToken(state, "Tk") && ParseName(state) &&
1898
+ Optional(ParseTemplateArgs(state))) {
1899
+ return true;
1900
+ }
1901
+ state->parse_state = copy;
1902
+
1903
+ if (ParseTwoCharToken(state, "Tn") && ParseType(state)) {
1428
1904
  return true;
1429
1905
  }
1430
1906
  state->parse_state = copy;
1907
+
1908
+ if (ParseTwoCharToken(state, "Tt") &&
1909
+ ZeroOrMore(ParseTemplateParamDecl, state) &&
1910
+ ParseOneCharToken(state, 'E')) {
1911
+ return true;
1912
+ }
1913
+ state->parse_state = copy;
1914
+
1915
+ if (ParseTwoCharToken(state, "Tp") && ParseTemplateParamDecl(state)) {
1916
+ return true;
1917
+ }
1918
+ state->parse_state = copy;
1919
+
1431
1920
  return false;
1432
1921
  }
1433
1922
 
@@ -1441,13 +1930,14 @@ static bool ParseTemplateTemplateParam(State *state) {
1441
1930
  ParseSubstitution(state, /*accept_std=*/false));
1442
1931
  }
1443
1932
 
1444
- // <template-args> ::= I <template-arg>+ E
1933
+ // <template-args> ::= I <template-arg>+ [Q <requires-clause expr>] E
1445
1934
  static bool ParseTemplateArgs(State *state) {
1446
1935
  ComplexityGuard guard(state);
1447
1936
  if (guard.IsTooComplex()) return false;
1448
1937
  ParseState copy = state->parse_state;
1449
1938
  DisableAppend(state);
1450
1939
  if (ParseOneCharToken(state, 'I') && OneOrMore(ParseTemplateArg, state) &&
1940
+ Optional(ParseQRequiresClauseExpr(state)) &&
1451
1941
  ParseOneCharToken(state, 'E')) {
1452
1942
  RestoreAppend(state, copy.append);
1453
1943
  MaybeAppend(state, "<>");
@@ -1457,7 +1947,8 @@ static bool ParseTemplateArgs(State *state) {
1457
1947
  return false;
1458
1948
  }
1459
1949
 
1460
- // <template-arg> ::= <type>
1950
+ // <template-arg> ::= <template-param-decl> <template-arg>
1951
+ // ::= <type>
1461
1952
  // ::= <expr-primary>
1462
1953
  // ::= J <template-arg>* E # argument pack
1463
1954
  // ::= X <expression> E
@@ -1541,7 +2032,7 @@ static bool ParseTemplateArg(State *state) {
1541
2032
  // ::= L <source-name> [<template-args>] [<expr-cast-value> E]
1542
2033
  if (ParseLocalSourceName(state) && Optional(ParseTemplateArgs(state))) {
1543
2034
  copy = state->parse_state;
1544
- if (ParseExprCastValue(state) && ParseOneCharToken(state, 'E')) {
2035
+ if (ParseExprCastValueAndTrailingE(state)) {
1545
2036
  return true;
1546
2037
  }
1547
2038
  state->parse_state = copy;
@@ -1560,6 +2051,12 @@ static bool ParseTemplateArg(State *state) {
1560
2051
  return true;
1561
2052
  }
1562
2053
  state->parse_state = copy;
2054
+
2055
+ if (ParseTemplateParamDecl(state) && ParseTemplateArg(state)) {
2056
+ return true;
2057
+ }
2058
+ state->parse_state = copy;
2059
+
1563
2060
  return false;
1564
2061
  }
1565
2062
 
@@ -1614,6 +2111,13 @@ static bool ParseBaseUnresolvedName(State *state) {
1614
2111
  // <base-unresolved-name>
1615
2112
  // ::= [gs] sr <unresolved-qualifier-level>+ E
1616
2113
  // <base-unresolved-name>
2114
+ // ::= sr St <simple-id> <simple-id> # nonstandard
2115
+ //
2116
+ // The last case is not part of the official grammar but has been observed in
2117
+ // real-world examples that the GNU demangler (but not the LLVM demangler) is
2118
+ // able to decode; see demangle_test.cc for one such symbol name. The shape
2119
+ // sr St <simple-id> <simple-id> was inferred by closed-box testing of the GNU
2120
+ // demangler.
1617
2121
  static bool ParseUnresolvedName(State *state) {
1618
2122
  ComplexityGuard guard(state);
1619
2123
  if (guard.IsTooComplex()) return false;
@@ -1633,7 +2137,7 @@ static bool ParseUnresolvedName(State *state) {
1633
2137
 
1634
2138
  if (ParseTwoCharToken(state, "sr") && ParseOneCharToken(state, 'N') &&
1635
2139
  ParseUnresolvedType(state) &&
1636
- OneOrMore(/* <unresolved-qualifier-level> ::= */ ParseSimpleId, state) &&
2140
+ OneOrMore(ParseUnresolvedQualifierLevel, state) &&
1637
2141
  ParseOneCharToken(state, 'E') && ParseBaseUnresolvedName(state)) {
1638
2142
  return true;
1639
2143
  }
@@ -1641,35 +2145,160 @@ static bool ParseUnresolvedName(State *state) {
1641
2145
 
1642
2146
  if (Optional(ParseTwoCharToken(state, "gs")) &&
1643
2147
  ParseTwoCharToken(state, "sr") &&
1644
- OneOrMore(/* <unresolved-qualifier-level> ::= */ ParseSimpleId, state) &&
2148
+ OneOrMore(ParseUnresolvedQualifierLevel, state) &&
1645
2149
  ParseOneCharToken(state, 'E') && ParseBaseUnresolvedName(state)) {
1646
2150
  return true;
1647
2151
  }
1648
2152
  state->parse_state = copy;
1649
2153
 
2154
+ if (ParseTwoCharToken(state, "sr") && ParseTwoCharToken(state, "St") &&
2155
+ ParseSimpleId(state) && ParseSimpleId(state)) {
2156
+ return true;
2157
+ }
2158
+ state->parse_state = copy;
2159
+
1650
2160
  return false;
1651
2161
  }
1652
2162
 
2163
+ // <unresolved-qualifier-level> ::= <simple-id>
2164
+ // ::= <substitution> <template-args>
2165
+ //
2166
+ // The production <substitution> <template-args> is nonstandard but is observed
2167
+ // in practice. An upstream discussion on the best shape of <unresolved-name>
2168
+ // has not converged:
2169
+ //
2170
+ // https://github.com/itanium-cxx-abi/cxx-abi/issues/38
2171
+ static bool ParseUnresolvedQualifierLevel(State *state) {
2172
+ ComplexityGuard guard(state);
2173
+ if (guard.IsTooComplex()) return false;
2174
+
2175
+ if (ParseSimpleId(state)) return true;
2176
+
2177
+ ParseState copy = state->parse_state;
2178
+ if (ParseSubstitution(state, /*accept_std=*/false) &&
2179
+ ParseTemplateArgs(state)) {
2180
+ return true;
2181
+ }
2182
+ state->parse_state = copy;
2183
+ return false;
2184
+ }
2185
+
2186
+ // <union-selector> ::= _ [<number>]
2187
+ //
2188
+ // https://github.com/itanium-cxx-abi/cxx-abi/issues/47
2189
+ static bool ParseUnionSelector(State *state) {
2190
+ return ParseOneCharToken(state, '_') && Optional(ParseNumber(state, nullptr));
2191
+ }
2192
+
2193
+ // <function-param> ::= fp <(top-level) CV-qualifiers> _
2194
+ // ::= fp <(top-level) CV-qualifiers> <number> _
2195
+ // ::= fL <number> p <(top-level) CV-qualifiers> _
2196
+ // ::= fL <number> p <(top-level) CV-qualifiers> <number> _
2197
+ // ::= fpT # this
2198
+ static bool ParseFunctionParam(State *state) {
2199
+ ComplexityGuard guard(state);
2200
+ if (guard.IsTooComplex()) return false;
2201
+
2202
+ ParseState copy = state->parse_state;
2203
+
2204
+ // Function-param expression (level 0).
2205
+ if (ParseTwoCharToken(state, "fp") && Optional(ParseCVQualifiers(state)) &&
2206
+ Optional(ParseNumber(state, nullptr)) && ParseOneCharToken(state, '_')) {
2207
+ return true;
2208
+ }
2209
+ state->parse_state = copy;
2210
+
2211
+ // Function-param expression (level 1+).
2212
+ if (ParseTwoCharToken(state, "fL") && Optional(ParseNumber(state, nullptr)) &&
2213
+ ParseOneCharToken(state, 'p') && Optional(ParseCVQualifiers(state)) &&
2214
+ Optional(ParseNumber(state, nullptr)) && ParseOneCharToken(state, '_')) {
2215
+ return true;
2216
+ }
2217
+ state->parse_state = copy;
2218
+
2219
+ return ParseThreeCharToken(state, "fpT");
2220
+ }
2221
+
2222
+ // <braced-expression> ::= <expression>
2223
+ // ::= di <field source-name> <braced-expression>
2224
+ // ::= dx <index expression> <braced-expression>
2225
+ // ::= dX <expression> <expression> <braced-expression>
2226
+ static bool ParseBracedExpression(State *state) {
2227
+ ComplexityGuard guard(state);
2228
+ if (guard.IsTooComplex()) return false;
2229
+
2230
+ ParseState copy = state->parse_state;
2231
+
2232
+ if (ParseTwoCharToken(state, "di") && ParseSourceName(state) &&
2233
+ ParseBracedExpression(state)) {
2234
+ return true;
2235
+ }
2236
+ state->parse_state = copy;
2237
+
2238
+ if (ParseTwoCharToken(state, "dx") && ParseExpression(state) &&
2239
+ ParseBracedExpression(state)) {
2240
+ return true;
2241
+ }
2242
+ state->parse_state = copy;
2243
+
2244
+ if (ParseTwoCharToken(state, "dX") &&
2245
+ ParseExpression(state) && ParseExpression(state) &&
2246
+ ParseBracedExpression(state)) {
2247
+ return true;
2248
+ }
2249
+ state->parse_state = copy;
2250
+
2251
+ return ParseExpression(state);
2252
+ }
2253
+
1653
2254
  // <expression> ::= <1-ary operator-name> <expression>
1654
2255
  // ::= <2-ary operator-name> <expression> <expression>
1655
2256
  // ::= <3-ary operator-name> <expression> <expression> <expression>
2257
+ // ::= pp_ <expression> # ++e; pp <expression> is e++
2258
+ // ::= mm_ <expression> # --e; mm <expression> is e--
1656
2259
  // ::= cl <expression>+ E
1657
2260
  // ::= cp <simple-id> <expression>* E # Clang-specific.
2261
+ // ::= so <type> <expression> [<number>] <union-selector>* [p] E
1658
2262
  // ::= cv <type> <expression> # type (expression)
1659
2263
  // ::= cv <type> _ <expression>* E # type (expr-list)
2264
+ // ::= tl <type> <braced-expression>* E
2265
+ // ::= il <braced-expression>* E
2266
+ // ::= [gs] nw <expression>* _ <type> E
2267
+ // ::= [gs] nw <expression>* _ <type> <initializer>
2268
+ // ::= [gs] na <expression>* _ <type> E
2269
+ // ::= [gs] na <expression>* _ <type> <initializer>
2270
+ // ::= [gs] dl <expression>
2271
+ // ::= [gs] da <expression>
2272
+ // ::= dc <type> <expression>
2273
+ // ::= sc <type> <expression>
2274
+ // ::= cc <type> <expression>
2275
+ // ::= rc <type> <expression>
2276
+ // ::= ti <type>
2277
+ // ::= te <expression>
1660
2278
  // ::= st <type>
2279
+ // ::= at <type>
2280
+ // ::= az <expression>
2281
+ // ::= nx <expression>
1661
2282
  // ::= <template-param>
1662
2283
  // ::= <function-param>
2284
+ // ::= sZ <template-param>
2285
+ // ::= sZ <function-param>
2286
+ // ::= sP <template-arg>* E
1663
2287
  // ::= <expr-primary>
1664
2288
  // ::= dt <expression> <unresolved-name> # expr.name
1665
2289
  // ::= pt <expression> <unresolved-name> # expr->name
1666
2290
  // ::= sp <expression> # argument pack expansion
2291
+ // ::= fl <binary operator-name> <expression>
2292
+ // ::= fr <binary operator-name> <expression>
2293
+ // ::= fL <binary operator-name> <expression> <expression>
2294
+ // ::= fR <binary operator-name> <expression> <expression>
2295
+ // ::= tw <expression>
2296
+ // ::= tr
1667
2297
  // ::= sr <type> <unqualified-name> <template-args>
1668
2298
  // ::= sr <type> <unqualified-name>
1669
- // <function-param> ::= fp <(top-level) CV-qualifiers> _
1670
- // ::= fp <(top-level) CV-qualifiers> <number> _
1671
- // ::= fL <number> p <(top-level) CV-qualifiers> _
1672
- // ::= fL <number> p <(top-level) CV-qualifiers> <number> _
2299
+ // ::= u <source-name> <template-arg>* E # vendor extension
2300
+ // ::= rq <requirement>+ E
2301
+ // ::= rQ <bare-function-type> _ <requirement>+ E
1673
2302
  static bool ParseExpression(State *state) {
1674
2303
  ComplexityGuard guard(state);
1675
2304
  if (guard.IsTooComplex()) return false;
@@ -1686,6 +2315,15 @@ static bool ParseExpression(State *state) {
1686
2315
  }
1687
2316
  state->parse_state = copy;
1688
2317
 
2318
+ // Preincrement and predecrement. Postincrement and postdecrement are handled
2319
+ // by the operator-name logic later on.
2320
+ if ((ParseThreeCharToken(state, "pp_") ||
2321
+ ParseThreeCharToken(state, "mm_")) &&
2322
+ ParseExpression(state)) {
2323
+ return true;
2324
+ }
2325
+ state->parse_state = copy;
2326
+
1689
2327
  // Clang-specific "cp <simple-id> <expression>* E"
1690
2328
  // https://clang.llvm.org/doxygen/ItaniumMangle_8cpp_source.html#l04338
1691
2329
  if (ParseTwoCharToken(state, "cp") && ParseSimpleId(state) &&
@@ -1694,17 +2332,65 @@ static bool ParseExpression(State *state) {
1694
2332
  }
1695
2333
  state->parse_state = copy;
1696
2334
 
1697
- // Function-param expression (level 0).
1698
- if (ParseTwoCharToken(state, "fp") && Optional(ParseCVQualifiers(state)) &&
1699
- Optional(ParseNumber(state, nullptr)) && ParseOneCharToken(state, '_')) {
2335
+ // <expression> ::= so <type> <expression> [<number>] <union-selector>* [p] E
2336
+ //
2337
+ // https://github.com/itanium-cxx-abi/cxx-abi/issues/47
2338
+ if (ParseTwoCharToken(state, "so") && ParseType(state) &&
2339
+ ParseExpression(state) && Optional(ParseNumber(state, nullptr)) &&
2340
+ ZeroOrMore(ParseUnionSelector, state) &&
2341
+ Optional(ParseOneCharToken(state, 'p')) &&
2342
+ ParseOneCharToken(state, 'E')) {
1700
2343
  return true;
1701
2344
  }
1702
2345
  state->parse_state = copy;
1703
2346
 
1704
- // Function-param expression (level 1+).
1705
- if (ParseTwoCharToken(state, "fL") && Optional(ParseNumber(state, nullptr)) &&
1706
- ParseOneCharToken(state, 'p') && Optional(ParseCVQualifiers(state)) &&
1707
- Optional(ParseNumber(state, nullptr)) && ParseOneCharToken(state, '_')) {
2347
+ // <expression> ::= <function-param>
2348
+ if (ParseFunctionParam(state)) return true;
2349
+ state->parse_state = copy;
2350
+
2351
+ // <expression> ::= tl <type> <braced-expression>* E
2352
+ if (ParseTwoCharToken(state, "tl") && ParseType(state) &&
2353
+ ZeroOrMore(ParseBracedExpression, state) &&
2354
+ ParseOneCharToken(state, 'E')) {
2355
+ return true;
2356
+ }
2357
+ state->parse_state = copy;
2358
+
2359
+ // <expression> ::= il <braced-expression>* E
2360
+ if (ParseTwoCharToken(state, "il") &&
2361
+ ZeroOrMore(ParseBracedExpression, state) &&
2362
+ ParseOneCharToken(state, 'E')) {
2363
+ return true;
2364
+ }
2365
+ state->parse_state = copy;
2366
+
2367
+ // <expression> ::= [gs] nw <expression>* _ <type> E
2368
+ // ::= [gs] nw <expression>* _ <type> <initializer>
2369
+ // ::= [gs] na <expression>* _ <type> E
2370
+ // ::= [gs] na <expression>* _ <type> <initializer>
2371
+ if (Optional(ParseTwoCharToken(state, "gs")) &&
2372
+ (ParseTwoCharToken(state, "nw") || ParseTwoCharToken(state, "na")) &&
2373
+ ZeroOrMore(ParseExpression, state) && ParseOneCharToken(state, '_') &&
2374
+ ParseType(state) &&
2375
+ (ParseOneCharToken(state, 'E') || ParseInitializer(state))) {
2376
+ return true;
2377
+ }
2378
+ state->parse_state = copy;
2379
+
2380
+ // <expression> ::= [gs] dl <expression>
2381
+ // ::= [gs] da <expression>
2382
+ if (Optional(ParseTwoCharToken(state, "gs")) &&
2383
+ (ParseTwoCharToken(state, "dl") || ParseTwoCharToken(state, "da")) &&
2384
+ ParseExpression(state)) {
2385
+ return true;
2386
+ }
2387
+ state->parse_state = copy;
2388
+
2389
+ // dynamic_cast, static_cast, const_cast, reinterpret_cast.
2390
+ //
2391
+ // <expression> ::= (dc | sc | cc | rc) <type> <expression>
2392
+ if (ParseCharClass(state, "dscr") && ParseOneCharToken(state, 'c') &&
2393
+ ParseType(state) && ParseExpression(state)) {
1708
2394
  return true;
1709
2395
  }
1710
2396
  state->parse_state = copy;
@@ -1746,15 +2432,96 @@ static bool ParseExpression(State *state) {
1746
2432
  }
1747
2433
  state->parse_state = copy;
1748
2434
 
2435
+ // typeid(type)
2436
+ if (ParseTwoCharToken(state, "ti") && ParseType(state)) {
2437
+ return true;
2438
+ }
2439
+ state->parse_state = copy;
2440
+
2441
+ // typeid(expression)
2442
+ if (ParseTwoCharToken(state, "te") && ParseExpression(state)) {
2443
+ return true;
2444
+ }
2445
+ state->parse_state = copy;
2446
+
1749
2447
  // sizeof type
1750
2448
  if (ParseTwoCharToken(state, "st") && ParseType(state)) {
1751
2449
  return true;
1752
2450
  }
1753
2451
  state->parse_state = copy;
1754
2452
 
2453
+ // alignof(type)
2454
+ if (ParseTwoCharToken(state, "at") && ParseType(state)) {
2455
+ return true;
2456
+ }
2457
+ state->parse_state = copy;
2458
+
2459
+ // alignof(expression), a GNU extension
2460
+ if (ParseTwoCharToken(state, "az") && ParseExpression(state)) {
2461
+ return true;
2462
+ }
2463
+ state->parse_state = copy;
2464
+
2465
+ // noexcept(expression) appearing as an expression in a dependent signature
2466
+ if (ParseTwoCharToken(state, "nx") && ParseExpression(state)) {
2467
+ return true;
2468
+ }
2469
+ state->parse_state = copy;
2470
+
2471
+ // sizeof...(pack)
2472
+ //
2473
+ // <expression> ::= sZ <template-param>
2474
+ // ::= sZ <function-param>
2475
+ if (ParseTwoCharToken(state, "sZ") &&
2476
+ (ParseFunctionParam(state) || ParseTemplateParam(state))) {
2477
+ return true;
2478
+ }
2479
+ state->parse_state = copy;
2480
+
2481
+ // sizeof...(pack) captured from an alias template
2482
+ //
2483
+ // <expression> ::= sP <template-arg>* E
2484
+ if (ParseTwoCharToken(state, "sP") && ZeroOrMore(ParseTemplateArg, state) &&
2485
+ ParseOneCharToken(state, 'E')) {
2486
+ return true;
2487
+ }
2488
+ state->parse_state = copy;
2489
+
2490
+ // Unary folds (... op pack) and (pack op ...).
2491
+ //
2492
+ // <expression> ::= fl <binary operator-name> <expression>
2493
+ // ::= fr <binary operator-name> <expression>
2494
+ if ((ParseTwoCharToken(state, "fl") || ParseTwoCharToken(state, "fr")) &&
2495
+ ParseOperatorName(state, nullptr) && ParseExpression(state)) {
2496
+ return true;
2497
+ }
2498
+ state->parse_state = copy;
2499
+
2500
+ // Binary folds (init op ... op pack) and (pack op ... op init).
2501
+ //
2502
+ // <expression> ::= fL <binary operator-name> <expression> <expression>
2503
+ // ::= fR <binary operator-name> <expression> <expression>
2504
+ if ((ParseTwoCharToken(state, "fL") || ParseTwoCharToken(state, "fR")) &&
2505
+ ParseOperatorName(state, nullptr) && ParseExpression(state) &&
2506
+ ParseExpression(state)) {
2507
+ return true;
2508
+ }
2509
+ state->parse_state = copy;
2510
+
2511
+ // tw <expression>: throw e
2512
+ if (ParseTwoCharToken(state, "tw") && ParseExpression(state)) {
2513
+ return true;
2514
+ }
2515
+ state->parse_state = copy;
2516
+
2517
+ // tr: throw (rethrows an exception from the handler that caught it)
2518
+ if (ParseTwoCharToken(state, "tr")) return true;
2519
+
1755
2520
  // Object and pointer member access expressions.
2521
+ //
2522
+ // <expression> ::= (dt | pt) <expression> <unresolved-name>
1756
2523
  if ((ParseTwoCharToken(state, "dt") || ParseTwoCharToken(state, "pt")) &&
1757
- ParseExpression(state) && ParseType(state)) {
2524
+ ParseExpression(state) && ParseUnresolvedName(state)) {
1758
2525
  return true;
1759
2526
  }
1760
2527
  state->parse_state = copy;
@@ -1774,9 +2541,61 @@ static bool ParseExpression(State *state) {
1774
2541
  }
1775
2542
  state->parse_state = copy;
1776
2543
 
2544
+ // Vendor extended expressions
2545
+ if (ParseOneCharToken(state, 'u') && ParseSourceName(state) &&
2546
+ ZeroOrMore(ParseTemplateArg, state) && ParseOneCharToken(state, 'E')) {
2547
+ return true;
2548
+ }
2549
+ state->parse_state = copy;
2550
+
2551
+ // <expression> ::= rq <requirement>+ E
2552
+ //
2553
+ // https://github.com/itanium-cxx-abi/cxx-abi/issues/24
2554
+ if (ParseTwoCharToken(state, "rq") && OneOrMore(ParseRequirement, state) &&
2555
+ ParseOneCharToken(state, 'E')) {
2556
+ return true;
2557
+ }
2558
+ state->parse_state = copy;
2559
+
2560
+ // <expression> ::= rQ <bare-function-type> _ <requirement>+ E
2561
+ //
2562
+ // https://github.com/itanium-cxx-abi/cxx-abi/issues/24
2563
+ if (ParseTwoCharToken(state, "rQ") && ParseBareFunctionType(state) &&
2564
+ ParseOneCharToken(state, '_') && OneOrMore(ParseRequirement, state) &&
2565
+ ParseOneCharToken(state, 'E')) {
2566
+ return true;
2567
+ }
2568
+ state->parse_state = copy;
2569
+
1777
2570
  return ParseUnresolvedName(state);
1778
2571
  }
1779
2572
 
2573
+ // <initializer> ::= pi <expression>* E
2574
+ // ::= il <braced-expression>* E
2575
+ //
2576
+ // The il ... E form is not in the ABI spec but is seen in practice for
2577
+ // braced-init-lists in new-expressions, which are standard syntax from C++11
2578
+ // on.
2579
+ static bool ParseInitializer(State *state) {
2580
+ ComplexityGuard guard(state);
2581
+ if (guard.IsTooComplex()) return false;
2582
+ ParseState copy = state->parse_state;
2583
+
2584
+ if (ParseTwoCharToken(state, "pi") && ZeroOrMore(ParseExpression, state) &&
2585
+ ParseOneCharToken(state, 'E')) {
2586
+ return true;
2587
+ }
2588
+ state->parse_state = copy;
2589
+
2590
+ if (ParseTwoCharToken(state, "il") &&
2591
+ ZeroOrMore(ParseBracedExpression, state) &&
2592
+ ParseOneCharToken(state, 'E')) {
2593
+ return true;
2594
+ }
2595
+ state->parse_state = copy;
2596
+ return false;
2597
+ }
2598
+
1780
2599
  // <expr-primary> ::= L <type> <(value) number> E
1781
2600
  // ::= L <type> <(value) float> E
1782
2601
  // ::= L <mangled-name> E
@@ -1819,10 +2638,35 @@ static bool ParseExprPrimary(State *state) {
1819
2638
  return false;
1820
2639
  }
1821
2640
 
1822
- // The merged cast production.
1823
- if (ParseOneCharToken(state, 'L') && ParseType(state) &&
1824
- ParseExprCastValue(state)) {
1825
- return true;
2641
+ if (ParseOneCharToken(state, 'L')) {
2642
+ // There are two special cases in which a literal may or must contain a type
2643
+ // without a value. The first is that both LDnE and LDn0E are valid
2644
+ // encodings of nullptr, used in different situations. Recognize LDnE here,
2645
+ // leaving LDn0E to be recognized by the general logic afterward.
2646
+ if (ParseThreeCharToken(state, "DnE")) return true;
2647
+
2648
+ // The second special case is a string literal, currently mangled in C++98
2649
+ // style as LA<length + 1>_KcE. This is inadequate to support C++11 and
2650
+ // later versions, and the discussion of this problem has not converged.
2651
+ //
2652
+ // https://github.com/itanium-cxx-abi/cxx-abi/issues/64
2653
+ //
2654
+ // For now the bare-type mangling is what's used in practice, so we
2655
+ // recognize this form and only this form if an array type appears here.
2656
+ // Someday we'll probably have to accept a new form of value mangling in
2657
+ // LA...E constructs. (Note also that C++20 allows a wide range of
2658
+ // class-type objects as template arguments, so someday their values will be
2659
+ // mangled and we'll have to recognize them here too.)
2660
+ if (RemainingInput(state)[0] == 'A' /* an array type follows */) {
2661
+ if (ParseType(state) && ParseOneCharToken(state, 'E')) return true;
2662
+ state->parse_state = copy;
2663
+ return false;
2664
+ }
2665
+
2666
+ // The merged cast production.
2667
+ if (ParseType(state) && ParseExprCastValueAndTrailingE(state)) {
2668
+ return true;
2669
+ }
1826
2670
  }
1827
2671
  state->parse_state = copy;
1828
2672
 
@@ -1836,7 +2680,7 @@ static bool ParseExprPrimary(State *state) {
1836
2680
  }
1837
2681
 
1838
2682
  // <number> or <float>, followed by 'E', as described above ParseExprPrimary.
1839
- static bool ParseExprCastValue(State *state) {
2683
+ static bool ParseExprCastValueAndTrailingE(State *state) {
1840
2684
  ComplexityGuard guard(state);
1841
2685
  if (guard.IsTooComplex()) return false;
1842
2686
  // We have to be able to backtrack after accepting a number because we could
@@ -1848,39 +2692,148 @@ static bool ParseExprCastValue(State *state) {
1848
2692
  }
1849
2693
  state->parse_state = copy;
1850
2694
 
1851
- if (ParseFloatNumber(state) && ParseOneCharToken(state, 'E')) {
2695
+ if (ParseFloatNumber(state)) {
2696
+ // <float> for ordinary floating-point types
2697
+ if (ParseOneCharToken(state, 'E')) return true;
2698
+
2699
+ // <float> _ <float> for complex floating-point types
2700
+ if (ParseOneCharToken(state, '_') && ParseFloatNumber(state) &&
2701
+ ParseOneCharToken(state, 'E')) {
2702
+ return true;
2703
+ }
2704
+ }
2705
+ state->parse_state = copy;
2706
+
2707
+ return false;
2708
+ }
2709
+
2710
+ // Parses `Q <requires-clause expr>`.
2711
+ // If parsing fails, applies backtracking to `state`.
2712
+ //
2713
+ // This function covers two symbols instead of one for convenience,
2714
+ // because in LLVM's Itanium ABI mangling grammar, <requires-clause expr>
2715
+ // always appears after Q.
2716
+ //
2717
+ // Does not emit the parsed `requires` clause to simplify the implementation.
2718
+ // In other words, these two functions' mangled names will demangle identically:
2719
+ //
2720
+ // template <typename T>
2721
+ // int foo(T) requires IsIntegral<T>;
2722
+ //
2723
+ // vs.
2724
+ //
2725
+ // template <typename T>
2726
+ // int foo(T);
2727
+ static bool ParseQRequiresClauseExpr(State *state) {
2728
+ ComplexityGuard guard(state);
2729
+ if (guard.IsTooComplex()) return false;
2730
+ ParseState copy = state->parse_state;
2731
+ DisableAppend(state);
2732
+
2733
+ // <requires-clause expr> is just an <expression>: http://shortn/_9E1Ul0rIM8
2734
+ if (ParseOneCharToken(state, 'Q') && ParseExpression(state)) {
2735
+ RestoreAppend(state, copy.append);
2736
+ return true;
2737
+ }
2738
+
2739
+ // also restores append
2740
+ state->parse_state = copy;
2741
+ return false;
2742
+ }
2743
+
2744
+ // <requirement> ::= X <expression> [N] [R <type-constraint>]
2745
+ // <requirement> ::= T <type>
2746
+ // <requirement> ::= Q <constraint-expression>
2747
+ //
2748
+ // <constraint-expression> ::= <expression>
2749
+ //
2750
+ // https://github.com/itanium-cxx-abi/cxx-abi/issues/24
2751
+ static bool ParseRequirement(State *state) {
2752
+ ComplexityGuard guard(state);
2753
+ if (guard.IsTooComplex()) return false;
2754
+
2755
+ ParseState copy = state->parse_state;
2756
+
2757
+ if (ParseOneCharToken(state, 'X') && ParseExpression(state) &&
2758
+ Optional(ParseOneCharToken(state, 'N')) &&
2759
+ // This logic backtracks cleanly if we eat an R but a valid type doesn't
2760
+ // follow it.
2761
+ (!ParseOneCharToken(state, 'R') || ParseTypeConstraint(state))) {
1852
2762
  return true;
1853
2763
  }
1854
2764
  state->parse_state = copy;
1855
2765
 
2766
+ if (ParseOneCharToken(state, 'T') && ParseType(state)) return true;
2767
+ state->parse_state = copy;
2768
+
2769
+ if (ParseOneCharToken(state, 'Q') && ParseExpression(state)) return true;
2770
+ state->parse_state = copy;
2771
+
1856
2772
  return false;
1857
2773
  }
1858
2774
 
2775
+ // <type-constraint> ::= <name>
2776
+ static bool ParseTypeConstraint(State *state) {
2777
+ return ParseName(state);
2778
+ }
2779
+
1859
2780
  // <local-name> ::= Z <(function) encoding> E <(entity) name> [<discriminator>]
1860
2781
  // ::= Z <(function) encoding> E s [<discriminator>]
2782
+ // ::= Z <(function) encoding> E d [<(parameter) number>] _ <name>
1861
2783
  //
1862
2784
  // Parsing a common prefix of these two productions together avoids an
1863
2785
  // exponential blowup of backtracking. Parse like:
1864
2786
  // <local-name> := Z <encoding> E <local-name-suffix>
1865
2787
  // <local-name-suffix> ::= s [<discriminator>]
2788
+ // ::= d [<(parameter) number>] _ <name>
1866
2789
  // ::= <name> [<discriminator>]
1867
2790
 
1868
2791
  static bool ParseLocalNameSuffix(State *state) {
1869
2792
  ComplexityGuard guard(state);
1870
2793
  if (guard.IsTooComplex()) return false;
2794
+ ParseState copy = state->parse_state;
2795
+
2796
+ // <local-name-suffix> ::= d [<(parameter) number>] _ <name>
2797
+ if (ParseOneCharToken(state, 'd') &&
2798
+ (IsDigit(RemainingInput(state)[0]) || RemainingInput(state)[0] == '_')) {
2799
+ int number = -1;
2800
+ Optional(ParseNumber(state, &number));
2801
+ if (number < -1 || number > 2147483645) {
2802
+ // Work around overflow cases. We do not expect these outside of a fuzzer
2803
+ // or other source of adversarial input. If we do detect overflow here,
2804
+ // we'll print {default arg#1}.
2805
+ number = -1;
2806
+ }
2807
+ number += 2;
2808
+
2809
+ // The ::{default arg#1}:: infix must be rendered before the lambda itself,
2810
+ // so print this before parsing the rest of the <local-name-suffix>.
2811
+ MaybeAppend(state, "::{default arg#");
2812
+ MaybeAppendDecimal(state, number);
2813
+ MaybeAppend(state, "}::");
2814
+ if (ParseOneCharToken(state, '_') && ParseName(state)) return true;
2815
+
2816
+ // On late parse failure, roll back not only the input but also the output,
2817
+ // whose trailing NUL was overwritten.
2818
+ state->parse_state = copy;
2819
+ if (state->parse_state.append) {
2820
+ state->out[state->parse_state.out_cur_idx] = '\0';
2821
+ }
2822
+ return false;
2823
+ }
2824
+ state->parse_state = copy;
1871
2825
 
2826
+ // <local-name-suffix> ::= <name> [<discriminator>]
1872
2827
  if (MaybeAppend(state, "::") && ParseName(state) &&
1873
2828
  Optional(ParseDiscriminator(state))) {
1874
2829
  return true;
1875
2830
  }
1876
-
1877
- // Since we're not going to overwrite the above "::" by re-parsing the
1878
- // <encoding> (whose trailing '\0' byte was in the byte now holding the
1879
- // first ':'), we have to rollback the "::" if the <name> parse failed.
2831
+ state->parse_state = copy;
1880
2832
  if (state->parse_state.append) {
1881
- state->out[state->parse_state.out_cur_idx - 2] = '\0';
2833
+ state->out[state->parse_state.out_cur_idx] = '\0';
1882
2834
  }
1883
2835
 
2836
+ // <local-name-suffix> ::= s [<discriminator>]
1884
2837
  return ParseOneCharToken(state, 's') && Optional(ParseDiscriminator(state));
1885
2838
  }
1886
2839
 
@@ -1896,12 +2849,22 @@ static bool ParseLocalName(State *state) {
1896
2849
  return false;
1897
2850
  }
1898
2851
 
1899
- // <discriminator> := _ <(non-negative) number>
2852
+ // <discriminator> := _ <digit>
2853
+ // := __ <number (>= 10)> _
1900
2854
  static bool ParseDiscriminator(State *state) {
1901
2855
  ComplexityGuard guard(state);
1902
2856
  if (guard.IsTooComplex()) return false;
1903
2857
  ParseState copy = state->parse_state;
1904
- if (ParseOneCharToken(state, '_') && ParseNumber(state, nullptr)) {
2858
+
2859
+ // Both forms start with _ so parse that first.
2860
+ if (!ParseOneCharToken(state, '_')) return false;
2861
+
2862
+ // <digit>
2863
+ if (ParseDigit(state, nullptr)) return true;
2864
+
2865
+ // _ <number> _
2866
+ if (ParseOneCharToken(state, '_') && ParseNumber(state, nullptr) &&
2867
+ ParseOneCharToken(state, '_')) {
1905
2868
  return true;
1906
2869
  }
1907
2870
  state->parse_state = copy;
@@ -1947,6 +2910,7 @@ static bool ParseSubstitution(State *state, bool accept_std) {
1947
2910
  MaybeAppend(state, p->real_name);
1948
2911
  }
1949
2912
  ++state->parse_state.mangled_idx;
2913
+ UpdateHighWaterMark(state);
1950
2914
  return true;
1951
2915
  }
1952
2916
  }
@@ -1972,10 +2936,13 @@ static bool ParseTopLevelMangledName(State *state) {
1972
2936
  MaybeAppend(state, RemainingInput(state));
1973
2937
  return true;
1974
2938
  }
2939
+ ReportHighWaterMark(state);
1975
2940
  return false; // Unconsumed suffix.
1976
2941
  }
1977
2942
  return true;
1978
2943
  }
2944
+
2945
+ ReportHighWaterMark(state);
1979
2946
  return false;
1980
2947
  }
1981
2948
 
@@ -1985,6 +2952,10 @@ static bool Overflowed(const State *state) {
1985
2952
 
1986
2953
  // The demangler entry point.
1987
2954
  bool Demangle(const char* mangled, char* out, size_t out_size) {
2955
+ if (mangled[0] == '_' && mangled[1] == 'R') {
2956
+ return DemangleRustSymbolEncoding(mangled, out, out_size);
2957
+ }
2958
+
1988
2959
  State state;
1989
2960
  InitState(&state, mangled, out, out_size);
1990
2961
  return ParseTopLevelMangledName(&state) && !Overflowed(&state) &&