grpc 1.80.0 → 1.81.0

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 (889) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +301 -292
  3. data/include/grpc/context_types.h +28 -0
  4. data/include/grpc/credentials.h +11 -0
  5. data/include/grpc/grpc_security_constants.h +12 -0
  6. data/include/grpc/module.modulemap +1 -0
  7. data/src/core/call/call_spine.h +29 -6
  8. data/src/core/call/client_call.cc +2 -2
  9. data/src/core/call/client_call.h +6 -0
  10. data/src/core/call/interception_chain.h +12 -1
  11. data/src/core/call/metadata_batch.h +37 -2
  12. data/src/core/call/server_call.h +4 -0
  13. data/src/core/client_channel/client_channel.cc +2 -1
  14. data/src/core/client_channel/client_channel_filter.cc +2 -2
  15. data/src/core/credentials/transport/tls/grpc_tls_credentials_options.cc +8 -0
  16. data/src/core/credentials/transport/tls/grpc_tls_credentials_options.h +9 -2
  17. data/src/core/credentials/transport/tls/ssl_utils.cc +4 -0
  18. data/src/core/credentials/transport/tls/ssl_utils.h +3 -0
  19. data/src/core/credentials/transport/tls/tls_security_connector.cc +3 -2
  20. data/src/core/ext/filters/http/client_authority_filter.cc +4 -0
  21. data/src/core/ext/filters/http/http_filters_plugin.cc +6 -0
  22. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +1 -1
  23. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +7 -0
  24. data/src/core/ext/transport/chttp2/transport/frame.cc +1 -1
  25. data/src/core/ext/transport/chttp2/transport/frame.h +1 -1
  26. data/src/core/ext/transport/chttp2/transport/frame_security.cc +3 -1
  27. data/src/core/ext/transport/chttp2/transport/header_assembler.h +8 -8
  28. data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +112 -155
  29. data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +38 -37
  30. data/src/core/ext/transport/chttp2/transport/http2_settings_promises.h +11 -1
  31. data/src/core/ext/transport/chttp2/transport/http2_transport.cc +0 -38
  32. data/src/core/ext/transport/chttp2/transport/http2_transport.h +30 -37
  33. data/src/core/ext/transport/chttp2/transport/incoming_metadata_tracker.h +74 -5
  34. data/src/core/ext/transport/chttp2/transport/internal.h +1 -0
  35. data/src/core/ext/transport/chttp2/transport/parsing.cc +4 -1
  36. data/src/core/ext/transport/chttp2/transport/security_frame.h +1 -1
  37. data/src/core/ext/transport/chttp2/transport/stream.h +29 -11
  38. data/src/core/ext/transport/chttp2/transport/transport_common.cc +3 -0
  39. data/src/core/ext/transport/chttp2/transport/writable_streams.h +2 -77
  40. data/src/core/ext/upb-gen/cel/expr/checked.upb_minitable.c +11 -93
  41. data/src/core/ext/upb-gen/cel/expr/syntax.upb_minitable.c +15 -129
  42. data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb_minitable.c +4 -30
  43. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb_minitable.c +4 -54
  44. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb_minitable.c +4 -28
  45. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb_minitable.c +15 -133
  46. data/src/core/ext/upb-gen/envoy/admin/v3/init_dump.upb_minitable.c +2 -12
  47. data/src/core/ext/upb-gen/envoy/admin/v3/listeners.upb_minitable.c +2 -12
  48. data/src/core/ext/upb-gen/envoy/admin/v3/memory.upb_minitable.c +1 -11
  49. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb_minitable.c +1 -7
  50. data/src/core/ext/upb-gen/envoy/admin/v3/mutex_stats.upb_minitable.c +1 -7
  51. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb_minitable.c +2 -46
  52. data/src/core/ext/upb-gen/envoy/admin/v3/tap.upb_minitable.c +1 -5
  53. data/src/core/ext/upb-gen/envoy/annotations/resource.upb_minitable.c +1 -5
  54. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb_minitable.c +10 -80
  55. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb_minitable.c +18 -162
  56. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb_minitable.c +2 -18
  57. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.c +16 -148
  58. data/src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb_minitable.c +1 -5
  59. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb_minitable.c +1 -35
  60. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb_minitable.c +13 -101
  61. data/src/core/ext/upb-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upb_minitable.c +1 -7
  62. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb_minitable.c +6 -48
  63. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb_minitable.c +29 -207
  64. data/src/core/ext/upb-gen/envoy/config/core/v3/cel.upb_minitable.c +1 -7
  65. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb_minitable.c +5 -59
  66. data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb_minitable.c +1 -5
  67. data/src/core/ext/upb-gen/envoy/config/core/v3/extension.upb_minitable.c +1 -5
  68. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_method_list.upb_minitable.c +2 -12
  69. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb_minitable.c +11 -111
  70. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb_minitable.c +9 -97
  71. data/src/core/ext/upb-gen/envoy/config/core/v3/http_service.upb_minitable.c +1 -7
  72. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb_minitable.c +1 -7
  73. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.c +10 -130
  74. data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb_minitable.c +4 -26
  75. data/src/core/ext/upb-gen/envoy/config/core/v3/resolver.upb_minitable.c +2 -12
  76. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_cmsg_headers.upb_minitable.c +1 -7
  77. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb_minitable.c +2 -16
  78. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb_minitable.c +2 -16
  79. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb_minitable.c +4 -28
  80. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.c +6 -64
  81. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb_minitable.c +9 -53
  82. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.c +4 -52
  83. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb_minitable.c +6 -68
  84. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.c +1 -19
  85. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb_minitable.c +1 -11
  86. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb_minitable.c +8 -52
  87. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb_minitable.c +11 -59
  88. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.c +11 -93
  89. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb_minitable.c +2 -40
  90. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.c +48 -550
  91. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb_minitable.c +3 -21
  92. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb_minitable.c +10 -80
  93. data/src/core/ext/upb-gen/envoy/config/trace/v3/datadog.upb_minitable.c +1 -7
  94. data/src/core/ext/upb-gen/envoy/config/trace/v3/dynamic_ot.upb_minitable.c +1 -5
  95. data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb_minitable.c +1 -7
  96. data/src/core/ext/upb-gen/envoy/config/trace/v3/lightstep.upb_minitable.c +1 -7
  97. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb_minitable.c +1 -11
  98. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb_minitable.c +1 -7
  99. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb_minitable.c +2 -12
  100. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb_minitable.c +1 -19
  101. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb_minitable.c +16 -182
  102. data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.c +2 -12
  103. data/src/core/ext/upb-gen/envoy/extensions/common/matching/v3/extension_matcher.upb.h +240 -0
  104. data/src/core/ext/upb-gen/envoy/extensions/common/matching/v3/extension_matcher.upb_minitable.c +78 -0
  105. data/src/core/ext/upb-gen/envoy/extensions/common/matching/v3/extension_matcher.upb_minitable.h +34 -0
  106. data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb_minitable.c +3 -23
  107. data/src/core/ext/upb-gen/envoy/extensions/filters/common/matcher/action/v3/skip_action.upb.h +73 -0
  108. data/src/core/ext/upb-gen/envoy/extensions/filters/common/matcher/action/v3/skip_action.upb_minitable.c +42 -0
  109. data/src/core/ext/upb-gen/envoy/extensions/filters/common/matcher/action/v3/skip_action.upb_minitable.h +32 -0
  110. data/src/core/ext/upb-gen/envoy/extensions/filters/http/composite/v3/composite.upb.h +431 -0
  111. data/src/core/ext/upb-gen/envoy/extensions/filters/http/composite/v3/composite.upb_minitable.c +111 -0
  112. data/src/core/ext/upb-gen/envoy/extensions/filters/http/composite/v3/composite.upb_minitable.h +38 -0
  113. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb_minitable.c +2 -30
  114. data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb_minitable.c +3 -23
  115. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.c +1 -11
  116. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb_minitable.c +2 -24
  117. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb_minitable.c +2 -14
  118. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.c +19 -187
  119. data/src/core/ext/upb-gen/envoy/extensions/grpc_service/call_credentials/access_token/v3/access_token_credentials.upb_minitable.c +1 -5
  120. 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 +1 -11
  121. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.c +3 -25
  122. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb_minitable.c +1 -5
  123. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb_minitable.c +1 -11
  124. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb_minitable.c +7 -71
  125. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.c +3 -21
  126. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb_minitable.c +6 -70
  127. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb_minitable.c +2 -10
  128. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.c +2 -26
  129. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb_minitable.c +13 -123
  130. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb_minitable.c +2 -18
  131. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb_minitable.c +5 -53
  132. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.c +2 -18
  133. data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb_minitable.c +2 -12
  134. data/src/core/ext/upb-gen/envoy/type/matcher/v3/address.upb_minitable.c +1 -5
  135. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb_minitable.c +1 -7
  136. data/src/core/ext/upb-gen/envoy/type/matcher/v3/http_inputs.upb_minitable.c +5 -25
  137. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb_minitable.c +2 -16
  138. data/src/core/ext/upb-gen/envoy/type/matcher/v3/node.upb_minitable.c +1 -7
  139. data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb_minitable.c +2 -2
  140. data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb_minitable.c +1 -5
  141. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb_minitable.c +2 -14
  142. data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb_minitable.c +2 -24
  143. data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb_minitable.c +2 -12
  144. data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb_minitable.c +3 -21
  145. data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb_minitable.c +3 -23
  146. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb_minitable.c +5 -37
  147. data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb_minitable.c +2 -12
  148. data/src/core/ext/upb-gen/envoy/type/v3/http_status.upb_minitable.c +1 -5
  149. data/src/core/ext/upb-gen/envoy/type/v3/percent.upb_minitable.c +2 -8
  150. data/src/core/ext/upb-gen/envoy/type/v3/range.upb_minitable.c +4 -16
  151. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb_minitable.c +2 -14
  152. data/src/core/ext/upb-gen/envoy/type/v3/semantic_version.upb_minitable.c +1 -7
  153. data/src/core/ext/upb-gen/envoy/type/v3/token_bucket.upb_minitable.c +1 -5
  154. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb_minitable.c +11 -91
  155. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb_minitable.c +16 -140
  156. data/src/core/ext/upb-gen/google/api/http.upb_minitable.c +3 -33
  157. data/src/core/ext/upb-gen/google/api/httpbody.upb_minitable.c +1 -7
  158. data/src/core/ext/upb-gen/google/protobuf/any.upb_minitable.c +1 -7
  159. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb.h +1 -0
  160. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.c +27 -410
  161. data/src/core/ext/upb-gen/google/protobuf/duration.upb_minitable.c +1 -7
  162. data/src/core/ext/upb-gen/google/protobuf/struct.upb_minitable.c +5 -17
  163. data/src/core/ext/upb-gen/google/protobuf/timestamp.upb_minitable.c +1 -7
  164. data/src/core/ext/upb-gen/google/protobuf/wrappers.upb_minitable.c +9 -37
  165. data/src/core/ext/upb-gen/google/rpc/status.upb_minitable.c +1 -7
  166. data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb_minitable.c +34 -310
  167. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb_minitable.c +3 -23
  168. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.c +11 -83
  169. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.c +8 -46
  170. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/service.upb_minitable.c +7 -45
  171. data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb_minitable.c +2 -18
  172. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.c +12 -108
  173. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb_minitable.c +3 -17
  174. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb_minitable.c +2 -10
  175. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb_minitable.c +7 -61
  176. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb_minitable.c +3 -25
  177. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb_minitable.c +8 -72
  178. data/src/core/ext/upb-gen/udpa/annotations/migrate.upb_minitable.c +3 -19
  179. data/src/core/ext/upb-gen/udpa/annotations/security.upb_minitable.c +1 -7
  180. data/src/core/ext/upb-gen/udpa/annotations/status.upb_minitable.c +1 -7
  181. data/src/core/ext/upb-gen/udpa/annotations/versioning.upb_minitable.c +1 -5
  182. data/src/core/ext/upb-gen/validate/validate.upb_minitable.c +54 -234
  183. data/src/core/ext/upb-gen/xds/annotations/v3/migrate.upb_minitable.c +3 -19
  184. data/src/core/ext/upb-gen/xds/annotations/v3/security.upb_minitable.c +1 -7
  185. data/src/core/ext/upb-gen/xds/annotations/v3/status.upb_minitable.c +4 -22
  186. data/src/core/ext/upb-gen/xds/annotations/v3/versioning.upb_minitable.c +1 -5
  187. data/src/core/ext/upb-gen/xds/core/v3/authority.upb_minitable.c +1 -5
  188. data/src/core/ext/upb-gen/xds/core/v3/cidr.upb_minitable.c +1 -5
  189. data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb_minitable.c +2 -14
  190. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb_minitable.c +1 -7
  191. data/src/core/ext/upb-gen/xds/core/v3/extension.upb_minitable.c +1 -5
  192. data/src/core/ext/upb-gen/xds/core/v3/resource.upb_minitable.c +1 -7
  193. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb_minitable.c +2 -18
  194. data/src/core/ext/upb-gen/xds/core/v3/resource_name.upb_minitable.c +1 -7
  195. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb_minitable.c +12 -12
  196. data/src/core/ext/upb-gen/xds/service/orca/v3/orca.upb_minitable.c +1 -7
  197. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb_minitable.c +1 -7
  198. data/src/core/ext/upb-gen/xds/type/matcher/v3/domain.upb_minitable.c +2 -10
  199. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb_minitable.c +2 -12
  200. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb_minitable.c +8 -58
  201. data/src/core/ext/upb-gen/xds/type/matcher/v3/range.upb_minitable.c +6 -30
  202. data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb_minitable.c +1 -7
  203. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb_minitable.c +2 -24
  204. data/src/core/ext/upb-gen/xds/type/v3/cel.upb_minitable.c +1 -11
  205. data/src/core/ext/upb-gen/xds/type/v3/range.upb_minitable.c +4 -16
  206. data/src/core/ext/upb-gen/xds/type/v3/typed_struct.upb_minitable.c +1 -5
  207. data/src/core/ext/upbdefs-gen/envoy/extensions/common/matching/v3/extension_matcher.upbdefs.c +110 -0
  208. data/src/core/ext/upbdefs-gen/envoy/extensions/common/matching/v3/extension_matcher.upbdefs.h +42 -0
  209. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/common/matcher/action/v3/skip_action.upbdefs.c +60 -0
  210. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/common/matcher/action/v3/skip_action.upbdefs.h +37 -0
  211. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/composite/v3/composite.upbdefs.c +138 -0
  212. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/composite/v3/composite.upbdefs.h +52 -0
  213. data/src/core/ext/upbdefs-gen/google/protobuf/descriptor.upbdefs.c +734 -731
  214. data/src/core/filter/composite/composite_filter.cc +227 -0
  215. data/src/core/filter/composite/composite_filter.h +154 -0
  216. data/src/core/filter/filter_args.h +4 -0
  217. data/src/core/handshaker/security/pipelined_secure_endpoint.cc +163 -41
  218. data/src/core/handshaker/security/pipelining_heuristic_selector.h +151 -0
  219. data/src/core/handshaker/security/secure_endpoint.cc +24 -8
  220. data/src/core/lib/channel/connected_channel.cc +13 -0
  221. data/src/core/lib/channel/promise_based_filter.h +267 -0
  222. data/src/core/lib/event_engine/cf_engine/cfsocket_listener.cc +3 -2
  223. data/src/core/lib/event_engine/extensions/blocking_dns.h +1 -1
  224. data/src/core/lib/event_engine/posix_engine/posix_interface_posix.cc +4 -0
  225. data/src/core/lib/event_engine/windows/windows_engine.cc +11 -3
  226. data/src/core/lib/experiments/experiments.cc +120 -117
  227. data/src/core/lib/experiments/experiments.h +71 -58
  228. data/src/core/lib/promise/detail/promise_factory.h +16 -5
  229. data/src/core/lib/promise/detail/promise_like.h +19 -1
  230. data/src/core/lib/promise/inter_activity_latch.h +5 -8
  231. data/src/core/lib/promise/inter_activity_pipe.h +193 -0
  232. data/src/core/lib/promise/sleep.cc +5 -9
  233. data/src/core/lib/resource_quota/arena.h +1 -1
  234. data/src/core/lib/surface/call.cc +43 -6
  235. data/src/core/lib/surface/call.h +6 -0
  236. data/src/core/lib/surface/call_utils.cc +42 -3
  237. data/src/core/lib/surface/call_utils.h +30 -11
  238. data/src/core/lib/surface/channel_stack_type.cc +8 -0
  239. data/src/core/lib/surface/channel_stack_type.h +4 -0
  240. data/src/core/lib/surface/completion_queue.cc +15 -12
  241. data/src/core/lib/surface/filter_stack_call.h +5 -0
  242. data/src/core/lib/surface/legacy_channel.cc +1 -22
  243. data/src/core/lib/surface/legacy_channel.h +1 -3
  244. data/src/core/lib/surface/version.cc +2 -2
  245. data/src/core/lib/transport/bdp_estimator.cc +6 -3
  246. data/src/core/lib/transport/promise_endpoint.h +13 -17
  247. data/src/core/load_balancing/endpoint_list.cc +0 -8
  248. data/src/core/load_balancing/pick_first/pick_first.cc +5 -14
  249. data/src/core/load_balancing/xds/cds.cc +100 -122
  250. data/src/core/load_balancing/xds/cds.h +58 -0
  251. data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -0
  252. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +1 -1
  253. data/src/core/server/server.cc +19 -35
  254. data/src/core/server/server.h +9 -17
  255. data/src/core/server/xds_server_config_fetcher.cc +0 -24
  256. data/src/core/telemetry/metrics.cc +26 -0
  257. data/src/core/transport/session_endpoint.cc +314 -0
  258. data/src/core/transport/session_endpoint.h +85 -0
  259. data/src/core/tsi/ssl_transport_security.cc +137 -100
  260. data/src/core/tsi/ssl_transport_security.h +8 -0
  261. data/src/core/tsi/ssl_transport_security_utils.cc +25 -1
  262. data/src/core/tsi/ssl_transport_security_utils.h +4 -0
  263. data/src/core/util/sorted_pack.h +69 -44
  264. data/src/core/util/string.cc +8 -0
  265. data/src/core/util/string.h +11 -0
  266. data/src/core/util/table.h +38 -102
  267. data/src/core/util/time_precise.cc +42 -1
  268. data/src/core/util/useful.h +0 -91
  269. data/src/core/util/windows/string_util.cc +4 -2
  270. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +27 -15
  271. data/src/core/xds/grpc/xds_bootstrap_grpc.cc +148 -69
  272. data/src/core/xds/grpc/xds_bootstrap_grpc.h +12 -0
  273. data/src/core/xds/grpc/xds_client_grpc.cc +1 -1
  274. data/src/core/xds/grpc/xds_cluster.cc +54 -37
  275. data/src/core/xds/grpc/xds_cluster.h +0 -1
  276. data/src/core/xds/grpc/xds_common_types.cc +59 -34
  277. data/src/core/xds/grpc/xds_common_types_parser.cc +33 -3
  278. data/src/core/xds/grpc/xds_common_types_parser.h +5 -1
  279. data/src/core/xds/grpc/xds_endpoint.cc +44 -24
  280. data/src/core/xds/grpc/xds_health_status.cc +10 -6
  281. data/src/core/xds/grpc/xds_http_composite_filter.cc +302 -0
  282. data/src/core/xds/grpc/xds_http_composite_filter.h +84 -0
  283. data/src/core/xds/grpc/xds_http_filter_registry.cc +34 -2
  284. data/src/core/xds/grpc/xds_http_filter_registry.h +4 -0
  285. data/src/core/xds/grpc/xds_http_rbac_filter.cc +21 -10
  286. data/src/core/xds/grpc/xds_listener.cc +98 -59
  287. data/src/core/xds/grpc/xds_listener_parser.cc +64 -26
  288. data/src/core/xds/grpc/xds_matcher.cc +92 -49
  289. data/src/core/xds/grpc/xds_metadata.cc +40 -7
  290. data/src/core/xds/grpc/xds_metadata.h +3 -10
  291. data/src/core/xds/grpc/xds_route_config.cc +171 -100
  292. data/src/core/xds/grpc/xds_server_grpc.cc +27 -18
  293. data/src/ruby/bin/math_pb.rb +1 -1
  294. data/src/ruby/ext/grpc/extconf.rb +1 -15
  295. data/src/ruby/ext/grpc/rb_call_credentials.c +1 -0
  296. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -0
  297. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +3 -0
  298. data/src/ruby/lib/grpc/version.rb +1 -1
  299. data/src/ruby/pb/generate_proto_ruby.sh +1 -1
  300. data/src/ruby/pb/grpc/health/v1/health_pb.rb +1 -1
  301. data/src/ruby/pb/src/proto/grpc/testing/empty_pb.rb +1 -1
  302. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +1 -1
  303. data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +1 -1
  304. data/src/ruby/spec/client_server_spec.rb +40 -0
  305. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/bn/convert.cc +47 -31
  306. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/bn/exponentiation.cc +35 -17
  307. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/bytestring/cbb.cc +8 -14
  308. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/cipher/derive_key.cc +15 -13
  309. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/cpu_arm_linux.cc +5 -28
  310. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/cpu_arm_linux.h +9 -11
  311. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/dh/dh_asn1.cc +14 -13
  312. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/dsa/dsa.cc +34 -30
  313. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/dsa/dsa_asn1.cc +35 -23
  314. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/ec/ec_asn1.cc +63 -47
  315. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/ec/hash_to_curve.cc +68 -60
  316. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/ecdsa/ecdsa_asn1.cc +17 -11
  317. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/evp/evp_asn1.cc +11 -10
  318. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/evp/evp_ctx.cc +11 -10
  319. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/evp/p_dsa_asn1.cc +6 -6
  320. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/evp/p_ec_asn1.cc +6 -6
  321. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/evp/p_ed25519_asn1.cc +6 -6
  322. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/evp/p_rsa_asn1.cc +6 -6
  323. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/evp/p_x25519_asn1.cc +6 -6
  324. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/evp/sign.cc +42 -23
  325. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/bn/div.cc.inc +79 -0
  326. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/bn/exponentiation.cc.inc +6 -5
  327. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/bn/gcd.cc.inc +80 -58
  328. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/bn/gcd_extra.cc.inc +45 -29
  329. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/bn/jacobi.cc.inc +16 -7
  330. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/bn/montgomery.cc.inc +24 -10
  331. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/bn/mul.cc.inc +34 -24
  332. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/bn/prime.cc.inc +154 -102
  333. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/bn/shift.cc.inc +8 -3
  334. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/bn/sqrt.cc.inc +78 -1
  335. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/dh/check.cc.inc +53 -35
  336. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/dh/dh.cc.inc +76 -57
  337. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/digest/digest.cc.inc +10 -4
  338. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/ec/ec.cc.inc +5 -3
  339. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/rsa/padding.cc.inc +26 -19
  340. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/rsa/rsa.cc.inc +7 -7
  341. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/rsa/rsa_impl.cc.inc +138 -117
  342. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/self_check/self_check.cc.inc +30 -22
  343. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/obj/obj.cc +8 -2
  344. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/pem/pem_lib.cc +13 -8
  345. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/pkcs7/pkcs7.cc +6 -5
  346. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/pkcs7/pkcs7_x509.cc +3 -6
  347. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/pkcs8/p5_pbev2.cc +14 -9
  348. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/pkcs8/pkcs8.cc +29 -19
  349. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/pkcs8/pkcs8_x509.cc +39 -34
  350. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/rsa/rsa_crypt.cc +22 -14
  351. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/a_sign.cc +5 -3
  352. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/asn1_gen.cc +12 -8
  353. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/v3_conf.cc +24 -16
  354. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/v3_info.cc +21 -18
  355. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x_x509.cc +57 -52
  356. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x_x509a.cc +32 -16
  357. data/third_party/boringssl-with-bazel/{src/include → include}/openssl/bytestring.h +0 -6
  358. data/third_party/boringssl-with-bazel/{src/ssl → ssl}/handoff.cc +12 -12
  359. data/third_party/boringssl-with-bazel/{src/ssl → ssl}/ssl_asn1.cc +3 -2
  360. data/third_party/upb/upb/base/string_view.h +7 -3
  361. data/third_party/upb/upb/generated_code_support.h +17 -1
  362. data/third_party/upb/upb/hash/common.c +2 -1
  363. data/third_party/upb/upb/mem/alloc.c +2 -1
  364. data/third_party/upb/upb/mem/alloc.h +25 -6
  365. data/third_party/upb/upb/mem/arena.c +225 -73
  366. data/third_party/upb/upb/mem/arena.h +56 -0
  367. data/third_party/upb/upb/mem/arena.hpp +6 -0
  368. data/third_party/upb/upb/mem/internal/arena.h +69 -56
  369. data/third_party/upb/upb/message/accessors.h +4 -0
  370. data/third_party/upb/upb/message/array.h +3 -0
  371. data/third_party/upb/upb/message/copy.c +1 -1
  372. data/third_party/upb/upb/message/internal/accessors.h +10 -0
  373. data/third_party/upb/upb/message/internal/array.h +34 -3
  374. data/third_party/upb/upb/message/internal/message.h +23 -9
  375. data/third_party/upb/upb/mini_descriptor/decode.c +127 -66
  376. data/third_party/upb/upb/mini_descriptor/decode.h +6 -2
  377. data/third_party/upb/upb/mini_descriptor/internal/encode.hpp +2 -0
  378. data/third_party/upb/upb/mini_descriptor/link.c +11 -0
  379. data/third_party/upb/upb/mini_table/extension.h +7 -0
  380. data/third_party/upb/upb/mini_table/extension_registry.c +10 -1
  381. data/third_party/upb/upb/mini_table/extension_registry.h +1 -0
  382. data/third_party/upb/upb/mini_table/internal/extension.h +10 -0
  383. data/third_party/upb/upb/mini_table/internal/field.h +1 -1
  384. data/third_party/upb/upb/mini_table/internal/message.h +69 -9
  385. data/third_party/upb/upb/mini_table/message.c +0 -38
  386. data/third_party/upb/upb/mini_table/message.h +5 -1
  387. data/third_party/upb/upb/port/def.inc +140 -111
  388. data/third_party/upb/upb/port/sanitizers.h +179 -0
  389. data/third_party/upb/upb/port/undef.inc +19 -9
  390. data/third_party/upb/upb/reflection/enum_def.c +7 -3
  391. data/third_party/upb/upb/reflection/enum_def.h +1 -0
  392. data/third_party/upb/upb/reflection/field_def.h +1 -0
  393. data/third_party/upb/upb/reflection/file_def.c +1 -1
  394. data/third_party/upb/upb/reflection/internal/upb_edition_defaults.h +1 -1
  395. data/third_party/upb/upb/reflection/message_def.c +29 -2
  396. data/third_party/upb/upb/reflection/message_def.h +2 -0
  397. data/third_party/upb/upb/text/internal/encode.c +5 -5
  398. data/third_party/upb/upb/wire/decode.c +190 -239
  399. data/third_party/upb/upb/wire/decode.h +14 -5
  400. data/third_party/upb/upb/wire/decode_fast/combinations.h +217 -0
  401. data/third_party/upb/upb/wire/decode_fast/data.h +74 -0
  402. data/third_party/upb/upb/wire/decode_fast/select.c +235 -0
  403. data/third_party/upb/upb/wire/decode_fast/select.h +66 -0
  404. data/third_party/upb/upb/wire/encode.c +332 -203
  405. data/third_party/upb/upb/wire/encode.h +3 -6
  406. data/third_party/upb/upb/wire/eps_copy_input_stream.h +64 -6
  407. data/third_party/upb/upb/wire/internal/decoder.c +43 -0
  408. data/third_party/upb/upb/wire/internal/decoder.h +73 -35
  409. data/third_party/upb/upb/wire/internal/reader.h +28 -9
  410. data/third_party/upb/upb/wire/reader.c +20 -2
  411. data/third_party/upb/upb/wire/reader.h +29 -19
  412. data/third_party/upb/upb/wire/writer.h +20 -0
  413. data/third_party/utf8_range/utf8_range.c +6 -6
  414. data/third_party/utf8_range/utf8_range_neon.inc +1 -1
  415. data/third_party/utf8_range/utf8_range_sse.inc +1 -1
  416. metadata +559 -531
  417. data/third_party/boringssl-with-bazel/src/crypto/bn/div.cc +0 -100
  418. data/third_party/boringssl-with-bazel/src/crypto/bn/sqrt.cc +0 -93
  419. data/third_party/upb/upb/wire/internal/decode_fast.c +0 -1000
  420. data/third_party/upb/upb/wire/internal/decode_fast.h +0 -152
  421. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/aes/aes.cc +0 -0
  422. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/a_bitstr.cc +0 -0
  423. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/a_bool.cc +0 -0
  424. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/a_d2i_fp.cc +0 -0
  425. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/a_dup.cc +0 -0
  426. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/a_gentm.cc +0 -0
  427. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/a_i2d_fp.cc +0 -0
  428. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/a_int.cc +0 -0
  429. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/a_mbstr.cc +0 -0
  430. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/a_object.cc +0 -0
  431. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/a_octet.cc +0 -0
  432. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/a_strex.cc +0 -0
  433. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/a_strnid.cc +0 -0
  434. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/a_time.cc +0 -0
  435. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/a_type.cc +0 -0
  436. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/a_utctm.cc +0 -0
  437. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/asn1_lib.cc +0 -0
  438. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/asn1_par.cc +0 -0
  439. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/asn_pack.cc +0 -0
  440. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/f_int.cc +0 -0
  441. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/f_string.cc +0 -0
  442. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/internal.h +0 -0
  443. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/posix_time.cc +0 -0
  444. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/tasn_dec.cc +0 -0
  445. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/tasn_enc.cc +0 -0
  446. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/tasn_fre.cc +0 -0
  447. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/tasn_new.cc +0 -0
  448. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/tasn_typ.cc +0 -0
  449. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/tasn_utl.cc +0 -0
  450. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/base64/base64.cc +0 -0
  451. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/bcm_support.h +0 -0
  452. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/bio/bio.cc +0 -0
  453. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/bio/bio_mem.cc +0 -0
  454. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/bio/connect.cc +0 -0
  455. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/bio/errno.cc +0 -0
  456. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/bio/fd.cc +0 -0
  457. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/bio/file.cc +0 -0
  458. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/bio/hexdump.cc +0 -0
  459. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/bio/internal.h +0 -0
  460. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/bio/pair.cc +0 -0
  461. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/bio/printf.cc +0 -0
  462. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/bio/socket.cc +0 -0
  463. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/bio/socket_helper.cc +0 -0
  464. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/blake2/blake2.cc +0 -0
  465. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/bn/bn_asn1.cc +0 -0
  466. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/buf/buf.cc +0 -0
  467. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/bytestring/asn1_compat.cc +0 -0
  468. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/bytestring/ber.cc +0 -0
  469. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/bytestring/cbs.cc +0 -0
  470. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/bytestring/internal.h +0 -0
  471. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/bytestring/unicode.cc +0 -0
  472. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/chacha/chacha.cc +0 -0
  473. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/chacha/internal.h +0 -0
  474. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/cipher/e_aesctrhmac.cc +0 -0
  475. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/cipher/e_aeseax.cc +0 -0
  476. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/cipher/e_aesgcmsiv.cc +0 -0
  477. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/cipher/e_chacha20poly1305.cc +0 -0
  478. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/cipher/e_des.cc +0 -0
  479. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/cipher/e_null.cc +0 -0
  480. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/cipher/e_rc2.cc +0 -0
  481. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/cipher/e_rc4.cc +0 -0
  482. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/cipher/e_tls.cc +0 -0
  483. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/cipher/get_cipher.cc +0 -0
  484. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/cipher/internal.h +0 -0
  485. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/cipher/tls_cbc.cc +0 -0
  486. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/cms/cms.cc +0 -0
  487. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/conf/conf.cc +0 -0
  488. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/conf/internal.h +0 -0
  489. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/cpu_aarch64_apple.cc +0 -0
  490. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/cpu_aarch64_fuchsia.cc +0 -0
  491. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/cpu_aarch64_linux.cc +0 -0
  492. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/cpu_aarch64_openbsd.cc +0 -0
  493. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/cpu_aarch64_sysreg.cc +0 -0
  494. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/cpu_aarch64_win.cc +0 -0
  495. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/cpu_arm_freebsd.cc +0 -0
  496. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/cpu_intel.cc +0 -0
  497. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/crypto.cc +0 -0
  498. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/curve25519/curve25519.cc +0 -0
  499. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/curve25519/curve25519_64_adx.cc +0 -0
  500. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/curve25519/curve25519_tables.h +0 -0
  501. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/curve25519/internal.h +0 -0
  502. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/curve25519/spake25519.cc +0 -0
  503. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/des/des.cc +0 -0
  504. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/des/internal.h +0 -0
  505. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/dh/params.cc +0 -0
  506. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/digest/digest_extra.cc +0 -0
  507. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/dsa/internal.h +0 -0
  508. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/ec/ec_derive.cc +0 -0
  509. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/ec/internal.h +0 -0
  510. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/ecdh/ecdh.cc +0 -0
  511. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/engine/engine.cc +0 -0
  512. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/err/err.cc +0 -0
  513. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/err/internal.h +0 -0
  514. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/evp/evp.cc +0 -0
  515. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/evp/internal.h +0 -0
  516. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/evp/p_dh.cc +0 -0
  517. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/evp/p_dh_asn1.cc +0 -0
  518. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/evp/p_ec.cc +0 -0
  519. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/evp/p_ed25519.cc +0 -0
  520. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/evp/p_hkdf.cc +0 -0
  521. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/evp/p_rsa.cc +0 -0
  522. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/evp/p_x25519.cc +0 -0
  523. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/evp/pbkdf.cc +0 -0
  524. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/evp/print.cc +0 -0
  525. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/evp/scrypt.cc +0 -0
  526. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/ex_data.cc +0 -0
  527. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/aes/aes.cc.inc +0 -0
  528. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/aes/aes_nohw.cc.inc +0 -0
  529. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/aes/cbc.cc.inc +0 -0
  530. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/aes/cfb.cc.inc +0 -0
  531. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/aes/ctr.cc.inc +0 -0
  532. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/aes/gcm.cc.inc +0 -0
  533. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/aes/gcm_nohw.cc.inc +0 -0
  534. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/aes/internal.h +0 -0
  535. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/aes/key_wrap.cc.inc +0 -0
  536. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/aes/mode_wrappers.cc.inc +0 -0
  537. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/aes/ofb.cc.inc +0 -0
  538. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/bcm.cc +0 -0
  539. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/bcm_interface.h +0 -0
  540. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/bn/add.cc.inc +0 -0
  541. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/bn/asm/x86_64-gcc.cc.inc +0 -0
  542. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/bn/bn.cc.inc +0 -0
  543. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/bn/bytes.cc.inc +0 -0
  544. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/bn/cmp.cc.inc +0 -0
  545. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/bn/ctx.cc.inc +0 -0
  546. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/bn/div_extra.cc.inc +0 -0
  547. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/bn/generic.cc.inc +0 -0
  548. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/bn/internal.h +0 -0
  549. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/bn/montgomery_inv.cc.inc +0 -0
  550. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/bn/random.cc.inc +0 -0
  551. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/bn/rsaz_exp.cc.inc +0 -0
  552. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/bn/rsaz_exp.h +0 -0
  553. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/cipher/aead.cc.inc +0 -0
  554. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/cipher/cipher.cc.inc +0 -0
  555. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/cipher/e_aes.cc.inc +0 -0
  556. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/cipher/e_aesccm.cc.inc +0 -0
  557. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/cipher/internal.h +0 -0
  558. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/cmac/cmac.cc.inc +0 -0
  559. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/delocate.h +0 -0
  560. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/dh/internal.h +0 -0
  561. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/digest/digests.cc.inc +0 -0
  562. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/digest/internal.h +0 -0
  563. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/digest/md32_common.h +0 -0
  564. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/digestsign/digestsign.cc.inc +0 -0
  565. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/ec/builtin_curves.h +0 -0
  566. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/ec/ec_key.cc.inc +0 -0
  567. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/ec/ec_montgomery.cc.inc +0 -0
  568. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/ec/felem.cc.inc +0 -0
  569. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/ec/internal.h +0 -0
  570. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/ec/oct.cc.inc +0 -0
  571. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/ec/p224-64.cc.inc +0 -0
  572. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/ec/p256-nistz-table.h +0 -0
  573. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/ec/p256-nistz.cc.inc +0 -0
  574. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/ec/p256-nistz.h +0 -0
  575. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/ec/p256.cc.inc +0 -0
  576. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/ec/p256_table.h +0 -0
  577. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/ec/scalar.cc.inc +0 -0
  578. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/ec/simple.cc.inc +0 -0
  579. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/ec/simple_mul.cc.inc +0 -0
  580. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/ec/util.cc.inc +0 -0
  581. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/ec/wnaf.cc.inc +0 -0
  582. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/ecdh/ecdh.cc.inc +0 -0
  583. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/ecdsa/ecdsa.cc.inc +0 -0
  584. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/ecdsa/internal.h +0 -0
  585. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/fips_shared_support.cc +0 -0
  586. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/hkdf/hkdf.cc.inc +0 -0
  587. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/hmac/hmac.cc.inc +0 -0
  588. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/keccak/internal.h +0 -0
  589. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/keccak/keccak.cc.inc +0 -0
  590. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/mldsa/fips_known_values.inc +0 -0
  591. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/mldsa/mldsa.cc.inc +0 -0
  592. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/mlkem/fips_known_values.inc +0 -0
  593. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/mlkem/mlkem.cc.inc +0 -0
  594. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/rand/ctrdrbg.cc.inc +0 -0
  595. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/rand/internal.h +0 -0
  596. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/rand/rand.cc.inc +0 -0
  597. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/rsa/blinding.cc.inc +0 -0
  598. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/rsa/internal.h +0 -0
  599. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/self_check/fips.cc.inc +0 -0
  600. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/service_indicator/internal.h +0 -0
  601. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/service_indicator/service_indicator.cc.inc +0 -0
  602. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/sha/internal.h +0 -0
  603. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/sha/sha1.cc.inc +0 -0
  604. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/sha/sha256.cc.inc +0 -0
  605. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/sha/sha512.cc.inc +0 -0
  606. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/slhdsa/address.h +0 -0
  607. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/slhdsa/fips_known_values.inc +0 -0
  608. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/slhdsa/fors.cc.inc +0 -0
  609. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/slhdsa/fors.h +0 -0
  610. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/slhdsa/merkle.cc.inc +0 -0
  611. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/slhdsa/merkle.h +0 -0
  612. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/slhdsa/params.h +0 -0
  613. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/slhdsa/slhdsa.cc.inc +0 -0
  614. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/slhdsa/thash.cc.inc +0 -0
  615. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/slhdsa/thash.h +0 -0
  616. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/slhdsa/wots.cc.inc +0 -0
  617. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/slhdsa/wots.h +0 -0
  618. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/tls/internal.h +0 -0
  619. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/tls/kdf.cc.inc +0 -0
  620. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fuzzer_mode.cc +0 -0
  621. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/hpke/hpke.cc +0 -0
  622. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/hrss/hrss.cc +0 -0
  623. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/hrss/internal.h +0 -0
  624. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/internal.h +0 -0
  625. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/kyber/internal.h +0 -0
  626. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/kyber/kyber.cc +0 -0
  627. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/lhash/internal.h +0 -0
  628. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/lhash/lhash.cc +0 -0
  629. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/md4/md4.cc +0 -0
  630. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/md5/internal.h +0 -0
  631. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/md5/md5.cc +0 -0
  632. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/mem.cc +0 -0
  633. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/mldsa/mldsa.cc +0 -0
  634. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/mlkem/mlkem.cc +0 -0
  635. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/obj/obj_dat.h +0 -0
  636. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/obj/obj_xref.cc +0 -0
  637. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/pem/internal.h +0 -0
  638. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/pem/pem_all.cc +0 -0
  639. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/pem/pem_info.cc +0 -0
  640. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/pem/pem_oth.cc +0 -0
  641. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/pem/pem_pk8.cc +0 -0
  642. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/pem/pem_pkey.cc +0 -0
  643. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/pem/pem_x509.cc +0 -0
  644. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/pem/pem_xaux.cc +0 -0
  645. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/pkcs7/internal.h +0 -0
  646. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/pkcs8/internal.h +0 -0
  647. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/poly1305/internal.h +0 -0
  648. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/poly1305/poly1305.cc +0 -0
  649. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/poly1305/poly1305_arm.cc +0 -0
  650. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/poly1305/poly1305_vec.cc +0 -0
  651. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/pool/internal.h +0 -0
  652. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/pool/pool.cc +0 -0
  653. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/rand/deterministic.cc +0 -0
  654. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/rand/fork_detect.cc +0 -0
  655. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/rand/forkunsafe.cc +0 -0
  656. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/rand/getentropy.cc +0 -0
  657. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/rand/getrandom_fillin.h +0 -0
  658. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/rand/internal.h +0 -0
  659. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/rand/ios.cc +0 -0
  660. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/rand/passive.cc +0 -0
  661. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/rand/rand.cc +0 -0
  662. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/rand/trusty.cc +0 -0
  663. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/rand/urandom.cc +0 -0
  664. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/rand/windows.cc +0 -0
  665. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/rc4/rc4.cc +0 -0
  666. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/refcount.cc +0 -0
  667. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/rsa/internal.h +0 -0
  668. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/rsa/rsa_asn1.cc +0 -0
  669. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/rsa/rsa_extra.cc +0 -0
  670. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/rsa/rsa_print.cc +0 -0
  671. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/sha/sha1.cc +0 -0
  672. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/sha/sha256.cc +0 -0
  673. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/sha/sha512.cc +0 -0
  674. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/siphash/siphash.cc +0 -0
  675. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/slhdsa/slhdsa.cc +0 -0
  676. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/spake2plus/internal.h +0 -0
  677. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/spake2plus/spake2plus.cc +0 -0
  678. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/stack/stack.cc +0 -0
  679. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/thread.cc +0 -0
  680. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/thread_none.cc +0 -0
  681. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/thread_pthread.cc +0 -0
  682. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/thread_win.cc +0 -0
  683. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/trust_token/internal.h +0 -0
  684. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/trust_token/pmbtoken.cc +0 -0
  685. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/trust_token/trust_token.cc +0 -0
  686. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/trust_token/voprf.cc +0 -0
  687. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/a_digest.cc +0 -0
  688. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/a_verify.cc +0 -0
  689. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/algorithm.cc +0 -0
  690. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/by_dir.cc +0 -0
  691. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/by_file.cc +0 -0
  692. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/ext_dat.h +0 -0
  693. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/i2d_pr.cc +0 -0
  694. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/internal.h +0 -0
  695. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/name_print.cc +0 -0
  696. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/policy.cc +0 -0
  697. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/rsa_pss.cc +0 -0
  698. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/t_crl.cc +0 -0
  699. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/t_req.cc +0 -0
  700. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/t_x509.cc +0 -0
  701. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/t_x509a.cc +0 -0
  702. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/v3_akey.cc +0 -0
  703. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/v3_akeya.cc +0 -0
  704. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/v3_alt.cc +0 -0
  705. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/v3_bcons.cc +0 -0
  706. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/v3_bitst.cc +0 -0
  707. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/v3_cpols.cc +0 -0
  708. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/v3_crld.cc +0 -0
  709. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/v3_enum.cc +0 -0
  710. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/v3_extku.cc +0 -0
  711. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/v3_genn.cc +0 -0
  712. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/v3_ia5.cc +0 -0
  713. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/v3_int.cc +0 -0
  714. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/v3_lib.cc +0 -0
  715. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/v3_ncons.cc +0 -0
  716. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/v3_ocsp.cc +0 -0
  717. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/v3_pcons.cc +0 -0
  718. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/v3_pmaps.cc +0 -0
  719. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/v3_prn.cc +0 -0
  720. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/v3_purp.cc +0 -0
  721. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/v3_skey.cc +0 -0
  722. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/v3_utl.cc +0 -0
  723. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x509.cc +0 -0
  724. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x509_att.cc +0 -0
  725. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x509_cmp.cc +0 -0
  726. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x509_d2.cc +0 -0
  727. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x509_def.cc +0 -0
  728. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x509_ext.cc +0 -0
  729. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x509_lu.cc +0 -0
  730. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x509_obj.cc +0 -0
  731. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x509_req.cc +0 -0
  732. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x509_set.cc +0 -0
  733. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x509_trs.cc +0 -0
  734. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x509_txt.cc +0 -0
  735. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x509_v3.cc +0 -0
  736. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x509_vfy.cc +0 -0
  737. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x509_vpm.cc +0 -0
  738. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x509cset.cc +0 -0
  739. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x509name.cc +0 -0
  740. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x509rset.cc +0 -0
  741. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x509spki.cc +0 -0
  742. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x_algor.cc +0 -0
  743. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x_all.cc +0 -0
  744. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x_attrib.cc +0 -0
  745. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x_crl.cc +0 -0
  746. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x_exten.cc +0 -0
  747. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x_name.cc +0 -0
  748. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x_pubkey.cc +0 -0
  749. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x_req.cc +0 -0
  750. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x_sig.cc +0 -0
  751. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x_spki.cc +0 -0
  752. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x_val.cc +0 -0
  753. /data/third_party/boringssl-with-bazel/{src/gen → gen}/crypto/err_data.cc +0 -0
  754. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/aead.h +0 -0
  755. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/aes.h +0 -0
  756. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/arm_arch.h +0 -0
  757. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/asm_base.h +0 -0
  758. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/asn1.h +0 -0
  759. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/asn1_mac.h +0 -0
  760. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/asn1t.h +0 -0
  761. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/base.h +0 -0
  762. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/base64.h +0 -0
  763. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/bcm_public.h +0 -0
  764. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/bio.h +0 -0
  765. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/blake2.h +0 -0
  766. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/blowfish.h +0 -0
  767. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/bn.h +0 -0
  768. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/buf.h +0 -0
  769. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/buffer.h +0 -0
  770. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/cast.h +0 -0
  771. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/chacha.h +0 -0
  772. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/cipher.h +0 -0
  773. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/cmac.h +0 -0
  774. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/cms.h +0 -0
  775. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/conf.h +0 -0
  776. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/cpu.h +0 -0
  777. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/crypto.h +0 -0
  778. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/ctrdrbg.h +0 -0
  779. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/curve25519.h +0 -0
  780. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/des.h +0 -0
  781. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/dh.h +0 -0
  782. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/digest.h +0 -0
  783. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/dsa.h +0 -0
  784. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/dtls1.h +0 -0
  785. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/e_os2.h +0 -0
  786. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/ec.h +0 -0
  787. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/ec_key.h +0 -0
  788. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/ecdh.h +0 -0
  789. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/ecdsa.h +0 -0
  790. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/engine.h +0 -0
  791. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/err.h +0 -0
  792. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/evp.h +0 -0
  793. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/evp_errors.h +0 -0
  794. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/ex_data.h +0 -0
  795. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/experimental/kyber.h +0 -0
  796. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/hkdf.h +0 -0
  797. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/hmac.h +0 -0
  798. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/hpke.h +0 -0
  799. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/hrss.h +0 -0
  800. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/is_boringssl.h +0 -0
  801. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/kdf.h +0 -0
  802. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/lhash.h +0 -0
  803. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/md4.h +0 -0
  804. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/md5.h +0 -0
  805. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/mem.h +0 -0
  806. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/mldsa.h +0 -0
  807. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/mlkem.h +0 -0
  808. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/nid.h +0 -0
  809. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/obj.h +0 -0
  810. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/obj_mac.h +0 -0
  811. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/objects.h +0 -0
  812. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/opensslconf.h +0 -0
  813. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/opensslv.h +0 -0
  814. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/ossl_typ.h +0 -0
  815. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/pem.h +0 -0
  816. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/pkcs12.h +0 -0
  817. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/pkcs7.h +0 -0
  818. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/pkcs8.h +0 -0
  819. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/poly1305.h +0 -0
  820. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/pool.h +0 -0
  821. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/posix_time.h +0 -0
  822. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/rand.h +0 -0
  823. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/rc4.h +0 -0
  824. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/ripemd.h +0 -0
  825. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/rsa.h +0 -0
  826. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/safestack.h +0 -0
  827. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/service_indicator.h +0 -0
  828. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/sha.h +0 -0
  829. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/siphash.h +0 -0
  830. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/slhdsa.h +0 -0
  831. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/span.h +0 -0
  832. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/srtp.h +0 -0
  833. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/ssl.h +0 -0
  834. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/ssl3.h +0 -0
  835. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/stack.h +0 -0
  836. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/target.h +0 -0
  837. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/thread.h +0 -0
  838. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/time.h +0 -0
  839. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/tls1.h +0 -0
  840. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/trust_token.h +0 -0
  841. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/type_check.h +0 -0
  842. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/x509.h +0 -0
  843. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/x509_vfy.h +0 -0
  844. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/x509v3.h +0 -0
  845. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/x509v3_errors.h +0 -0
  846. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/bio_ssl.cc +0 -0
  847. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/d1_both.cc +0 -0
  848. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/d1_lib.cc +0 -0
  849. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/d1_pkt.cc +0 -0
  850. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/d1_srtp.cc +0 -0
  851. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/dtls_method.cc +0 -0
  852. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/dtls_record.cc +0 -0
  853. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/encrypted_client_hello.cc +0 -0
  854. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/extensions.cc +0 -0
  855. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/handshake.cc +0 -0
  856. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/handshake_client.cc +0 -0
  857. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/handshake_server.cc +0 -0
  858. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/internal.h +0 -0
  859. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/s3_both.cc +0 -0
  860. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/s3_lib.cc +0 -0
  861. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/s3_pkt.cc +0 -0
  862. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/ssl_aead_ctx.cc +0 -0
  863. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/ssl_buffer.cc +0 -0
  864. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/ssl_cert.cc +0 -0
  865. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/ssl_cipher.cc +0 -0
  866. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/ssl_credential.cc +0 -0
  867. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/ssl_file.cc +0 -0
  868. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/ssl_key_share.cc +0 -0
  869. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/ssl_lib.cc +0 -0
  870. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/ssl_privkey.cc +0 -0
  871. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/ssl_session.cc +0 -0
  872. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/ssl_stat.cc +0 -0
  873. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/ssl_transcript.cc +0 -0
  874. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/ssl_versions.cc +0 -0
  875. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/ssl_x509.cc +0 -0
  876. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/t1_enc.cc +0 -0
  877. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/tls13_both.cc +0 -0
  878. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/tls13_client.cc +0 -0
  879. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/tls13_enc.cc +0 -0
  880. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/tls13_server.cc +0 -0
  881. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/tls_method.cc +0 -0
  882. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/tls_record.cc +0 -0
  883. /data/third_party/boringssl-with-bazel/{src/third_party → third_party}/fiat/curve25519_32.h +0 -0
  884. /data/third_party/boringssl-with-bazel/{src/third_party → third_party}/fiat/curve25519_64.h +0 -0
  885. /data/third_party/boringssl-with-bazel/{src/third_party → third_party}/fiat/curve25519_64_adx.h +0 -0
  886. /data/third_party/boringssl-with-bazel/{src/third_party → third_party}/fiat/curve25519_64_msvc.h +0 -0
  887. /data/third_party/boringssl-with-bazel/{src/third_party → third_party}/fiat/p256_32.h +0 -0
  888. /data/third_party/boringssl-with-bazel/{src/third_party → third_party}/fiat/p256_64.h +0 -0
  889. /data/third_party/boringssl-with-bazel/{src/third_party → third_party}/fiat/p256_64_msvc.h +0 -0
@@ -42,6 +42,7 @@
42
42
  #include "upb/mini_table/message.h"
43
43
  #include "upb/wire/internal/constants.h"
44
44
  #include "upb/wire/types.h"
45
+ #include "upb/wire/writer.h"
45
46
 
46
47
  // Must be last.
47
48
  #include "upb/port/def.inc"
@@ -53,20 +54,6 @@ static const upb_MiniTable* _upb_Encoder_GetSubMiniTable(
53
54
  return *subs[field->UPB_PRIVATE(submsg_index)].UPB_PRIVATE(submsg);
54
55
  }
55
56
 
56
- #define UPB_PB_VARINT_MAX_LEN 10
57
-
58
- UPB_NOINLINE
59
- static size_t encode_varint64(uint64_t val, char* buf) {
60
- size_t i = 0;
61
- do {
62
- uint8_t byte = val & 0x7fU;
63
- val >>= 7;
64
- if (val) byte |= 0x80U;
65
- buf[i++] = byte;
66
- } while (val);
67
- return i;
68
- }
69
-
70
57
  static uint32_t encode_zz32(int32_t n) {
71
58
  return ((uint32_t)n << 1) ^ (n >> 31);
72
59
  }
@@ -78,7 +65,9 @@ typedef struct {
78
65
  upb_EncodeStatus status;
79
66
  jmp_buf err;
80
67
  upb_Arena* arena;
81
- char *buf, *ptr, *limit;
68
+ // These should only be used for arithmetic and reallocation to allow full
69
+ // aliasing analysis on the ptr argument.
70
+ const char UPB_NODEREF *buf, *limit;
82
71
  int options;
83
72
  int depth;
84
73
  _upb_mapsorter sorter;
@@ -99,11 +88,12 @@ UPB_NORETURN static void encode_err(upb_encstate* e, upb_EncodeStatus s) {
99
88
  }
100
89
 
101
90
  UPB_NOINLINE
102
- static void encode_growbuffer(upb_encstate* e, size_t bytes) {
91
+ static char* encode_growbuffer(char* ptr, upb_encstate* e, size_t bytes) {
103
92
  size_t old_size = e->limit - e->buf;
104
- size_t needed_size = bytes + (e->limit - e->ptr);
93
+ size_t needed_size = bytes + (e->limit - ptr);
105
94
  size_t new_size = upb_roundup_pow2(needed_size);
106
- char* new_buf = upb_Arena_Realloc(e->arena, e->buf, old_size, new_size);
95
+ char* new_buf =
96
+ upb_Arena_Realloc(e->arena, (void*)e->buf, old_size, new_size);
107
97
 
108
98
  if (!new_buf) encode_err(e, kUpb_EncodeStatus_OutOfMemory);
109
99
 
@@ -116,132 +106,246 @@ static void encode_growbuffer(upb_encstate* e, size_t bytes) {
116
106
 
117
107
  e->buf = new_buf;
118
108
  e->limit = new_buf + new_size;
119
- e->ptr = new_buf + new_size - needed_size;
109
+ return new_buf + new_size - needed_size;
120
110
  }
121
111
 
122
- /* Call to ensure that at least "bytes" bytes are available for writing at
123
- * e->ptr. Returns false if the bytes could not be allocated. */
112
+ /* Call to ensure that at least `bytes` bytes are available for writing at
113
+ * ptr. */
124
114
  UPB_FORCEINLINE
125
- void encode_reserve(upb_encstate* e, size_t bytes) {
126
- if ((size_t)(e->ptr - e->buf) < bytes) {
127
- encode_growbuffer(e, bytes);
128
- return;
115
+ char* encode_reserve(char* ptr, upb_encstate* e, size_t bytes) {
116
+ if ((size_t)(ptr - e->buf) < bytes) {
117
+ return encode_growbuffer(ptr, e, bytes);
129
118
  }
130
119
 
131
- e->ptr -= bytes;
120
+ return ptr - bytes;
132
121
  }
133
122
 
134
123
  /* Writes the given bytes to the buffer, handling reserve/advance. */
135
- static void encode_bytes(upb_encstate* e, const void* data, size_t len) {
136
- if (len == 0) return; /* memcpy() with zero size is UB */
137
- encode_reserve(e, len);
138
- memcpy(e->ptr, data, len);
124
+ static char* encode_bytes(char* ptr, upb_encstate* e, const void* data,
125
+ size_t len) {
126
+ if (len == 0) return ptr; /* memcpy() with zero size is UB */
127
+ ptr = encode_reserve(ptr, e, len);
128
+ memcpy(ptr, data, len);
129
+ return ptr;
139
130
  }
140
131
 
141
- static void encode_fixed64(upb_encstate* e, uint64_t val) {
132
+ static char* encode_fixed64(char* ptr, upb_encstate* e, uint64_t val) {
142
133
  val = upb_BigEndian64(val);
143
- encode_bytes(e, &val, sizeof(uint64_t));
134
+ return encode_bytes(ptr, e, &val, sizeof(uint64_t));
144
135
  }
145
136
 
146
- static void encode_fixed32(upb_encstate* e, uint32_t val) {
137
+ static char* encode_fixed32(char* ptr, upb_encstate* e, uint32_t val) {
147
138
  val = upb_BigEndian32(val);
148
- encode_bytes(e, &val, sizeof(uint32_t));
139
+ return encode_bytes(ptr, e, &val, sizeof(uint32_t));
149
140
  }
150
141
 
151
- UPB_NOINLINE
152
- static void encode_longvarint(upb_encstate* e, uint64_t val) {
153
- size_t len;
154
- char* start;
142
+ #define UPB_PB_VARINT_MAX_LEN 10
155
143
 
156
- encode_reserve(e, UPB_PB_VARINT_MAX_LEN);
157
- len = encode_varint64(val, e->ptr);
158
- start = e->ptr + UPB_PB_VARINT_MAX_LEN - len;
159
- memmove(start, e->ptr, len);
160
- e->ptr = start;
144
+ #if UPB_ARM64_ASM
145
+ // Each arm64 instruction encodes to 4 bytes, and it takes two intructions
146
+ // to process each byte of output, so we branch ahead by (4 + 4) * skip to
147
+ // avoid the remaining bytes. When BTI is on, we need to use specific
148
+ // "landing pad" instructions, so we pad those with nop to make it a power
149
+ // of 2, skipping 16 bytes at each stage instead of 8. This carries some
150
+ // overhead especially on in-order cores so they're not included unless
151
+ // building with branch protection.
152
+ #if UPB_ARM64_BTI_DEFAULT
153
+ // BTI is used with jc targets here because we don't control which register will
154
+ // be used for addr; if it's x16 or x17 a `br` is treated like a call.
155
+ #define UPB_BTI_JC "bti jc\n"
156
+ #define UPB_BTI_NOP "nop\n"
157
+ #define UPB_BTI_SHIFT_IMM "4\n"
158
+ #else
159
+ #define UPB_BTI_JC
160
+ #define UPB_BTI_NOP
161
+ #define UPB_BTI_SHIFT_IMM "3\n"
162
+ #endif
163
+ UPB_NOINLINE static char* encode_longvarint(char* ptr, upb_encstate* e,
164
+ uint64_t val) {
165
+ ptr = encode_reserve(ptr, e, UPB_PB_VARINT_MAX_LEN);
166
+ uint64_t clz;
167
+ __asm__("clz %[cnt], %[val]\n" : [cnt] "=r"(clz) : [val] "r"(val));
168
+
169
+ uint32_t skip =
170
+ UPB_PRIVATE(upb_WireWriter_VarintUnusedSizeFromLeadingZeros64)(clz);
171
+
172
+ ptr += skip;
173
+ uint64_t addr, mask;
174
+ __asm__ volatile(
175
+ // Formatter keeps merging short lines
176
+ // clang-format off
177
+ "adr %[addr], 0f\n"
178
+ "add %[addr], %[addr], %[cnt], lsl #" UPB_BTI_SHIFT_IMM
179
+ "mov %w[mask], #0x80\n"
180
+ "br %[addr]\n"
181
+ ".p2align " UPB_BTI_SHIFT_IMM
182
+ "0:\n"
183
+ // We don't need addr any more, but we've got the register for our whole
184
+ // assembly block so we'll use it as scratch to store the shift+masked
185
+ // values before storing them.
186
+ // The following stores are unsigned offset stores:
187
+ // strb Wt, [Xn, #imm]
188
+ UPB_BTI_JC
189
+ "orr %[addr], %[mask], %[val], lsr #56\n"
190
+ "strb %w[addr], [%[ptr], #8]\n"
191
+ UPB_BTI_NOP
192
+
193
+ UPB_BTI_JC
194
+ "orr %[addr], %[mask], %[val], lsr #49\n"
195
+ "strb %w[addr], [%[ptr], #7]\n"
196
+ UPB_BTI_NOP
197
+
198
+ UPB_BTI_JC
199
+ "orr %[addr], %[mask], %[val], lsr #42\n"
200
+ "strb %w[addr], [%[ptr], #6]\n"
201
+ UPB_BTI_NOP
202
+
203
+ UPB_BTI_JC
204
+ "orr %[addr], %[mask], %[val], lsr #35\n"
205
+ "strb %w[addr], [%[ptr], #5]\n"
206
+ UPB_BTI_NOP
207
+
208
+ UPB_BTI_JC
209
+ "orr %[addr], %[mask], %[val], lsr #28\n"
210
+ "strb %w[addr], [%[ptr], #4]\n"
211
+ UPB_BTI_NOP
212
+
213
+ UPB_BTI_JC
214
+ "orr %w[addr], %w[mask], %w[val], lsr #21\n"
215
+ "strb %w[addr], [%[ptr], #3]\n"
216
+ UPB_BTI_NOP
217
+
218
+ UPB_BTI_JC
219
+ "orr %w[addr], %w[mask], %w[val], lsr #14\n"
220
+ "strb %w[addr], [%[ptr], #2]\n"
221
+ UPB_BTI_NOP
222
+
223
+ UPB_BTI_JC
224
+ "orr %w[addr], %w[mask], %w[val], lsr #7\n"
225
+ "strb %w[addr], [%[ptr], #1]\n"
226
+ UPB_BTI_NOP
227
+
228
+ UPB_BTI_JC
229
+ "orr %w[addr], %w[val], #0x80\n"
230
+ "strb %w[addr], [%[ptr]]\n"
231
+ UPB_BTI_NOP
232
+
233
+ UPB_BTI_JC
234
+ // clang-format on
235
+ : [addr] "=&r"(addr), [mask] "=&r"(mask)
236
+ : [val] "r"(val), [ptr] "r"(ptr), [cnt] "r"((uint64_t)skip)
237
+ : "memory");
238
+ // Encode the final byte after the continuation bytes.
239
+ uint32_t continuations = UPB_PB_VARINT_MAX_LEN - 1 - skip;
240
+ ptr[continuations] = val >> (7 * continuations);
241
+ return ptr;
242
+ }
243
+ #undef UPB_BTI_JC
244
+ #undef UPB_BTI_NOP
245
+ #undef UPB_BTI_SHIFT_IMM
246
+ #else
247
+ UPB_NOINLINE
248
+ static char* encode_longvarint(char* ptr, upb_encstate* e, uint64_t val) {
249
+ ptr = encode_reserve(ptr, e, UPB_PB_VARINT_MAX_LEN);
250
+ size_t len = 0;
251
+ do {
252
+ uint8_t byte = val & 0x7fU;
253
+ val >>= 7;
254
+ if (val) byte |= 0x80U;
255
+ ptr[len++] = byte;
256
+ } while (val);
257
+ char* start = ptr + UPB_PB_VARINT_MAX_LEN - len;
258
+ memmove(start, ptr, len);
259
+ return start;
161
260
  }
261
+ #endif
162
262
 
163
263
  UPB_FORCEINLINE
164
- void encode_varint(upb_encstate* e, uint64_t val) {
165
- if (val < 128 && e->ptr != e->buf) {
166
- --e->ptr;
167
- *e->ptr = val;
264
+ char* encode_varint(char* ptr, upb_encstate* e, uint64_t val) {
265
+ if (val < 128 && ptr != e->buf) {
266
+ --ptr;
267
+ *ptr = val;
268
+ return ptr;
168
269
  } else {
169
- encode_longvarint(e, val);
270
+ return encode_longvarint(ptr, e, val);
170
271
  }
171
272
  }
172
273
 
173
- static void encode_double(upb_encstate* e, double d) {
274
+ static char* encode_double(char* ptr, upb_encstate* e, double d) {
174
275
  uint64_t u64;
175
276
  UPB_ASSERT(sizeof(double) == sizeof(uint64_t));
176
277
  memcpy(&u64, &d, sizeof(uint64_t));
177
- encode_fixed64(e, u64);
278
+ return encode_fixed64(ptr, e, u64);
178
279
  }
179
280
 
180
- static void encode_float(upb_encstate* e, float d) {
281
+ static char* encode_float(char* ptr, upb_encstate* e, float d) {
181
282
  uint32_t u32;
182
283
  UPB_ASSERT(sizeof(float) == sizeof(uint32_t));
183
284
  memcpy(&u32, &d, sizeof(uint32_t));
184
- encode_fixed32(e, u32);
285
+ return encode_fixed32(ptr, e, u32);
185
286
  }
186
287
 
187
- static void encode_tag(upb_encstate* e, uint32_t field_number,
188
- uint8_t wire_type) {
189
- encode_varint(e, (field_number << 3) | wire_type);
288
+ static char* encode_tag(char* ptr, upb_encstate* e, uint32_t field_number,
289
+ uint8_t wire_type) {
290
+ return encode_varint(ptr, e, (field_number << 3) | wire_type);
190
291
  }
191
292
 
192
- static void encode_fixedarray(upb_encstate* e, const upb_Array* arr,
193
- size_t elem_size, uint32_t tag) {
293
+ static char* encode_fixedarray(char* ptr, upb_encstate* e, const upb_Array* arr,
294
+ size_t elem_size, uint32_t tag) {
194
295
  size_t bytes = upb_Array_Size(arr) * elem_size;
195
296
  const char* data = upb_Array_DataPtr(arr);
196
- const char* ptr = data + bytes - elem_size;
297
+ const char* arr_ptr = data + bytes - elem_size;
197
298
 
198
299
  if (tag || !upb_IsLittleEndian()) {
199
300
  while (true) {
200
301
  if (elem_size == 4) {
201
302
  uint32_t val;
202
- memcpy(&val, ptr, sizeof(val));
303
+ memcpy(&val, arr_ptr, sizeof(val));
203
304
  val = upb_BigEndian32(val);
204
- encode_bytes(e, &val, elem_size);
305
+ ptr = encode_bytes(ptr, e, &val, elem_size);
205
306
  } else {
206
307
  UPB_ASSERT(elem_size == 8);
207
308
  uint64_t val;
208
- memcpy(&val, ptr, sizeof(val));
309
+ memcpy(&val, arr_ptr, sizeof(val));
209
310
  val = upb_BigEndian64(val);
210
- encode_bytes(e, &val, elem_size);
311
+ ptr = encode_bytes(ptr, e, &val, elem_size);
211
312
  }
212
313
 
213
- if (tag) encode_varint(e, tag);
214
- if (ptr == data) break;
215
- ptr -= elem_size;
314
+ if (tag) {
315
+ ptr = encode_varint(ptr, e, tag);
316
+ }
317
+ if (arr_ptr == data) break;
318
+ arr_ptr -= elem_size;
216
319
  }
320
+ return ptr;
217
321
  } else {
218
- encode_bytes(e, data, bytes);
322
+ return encode_bytes(ptr, e, data, bytes);
219
323
  }
220
324
  }
221
325
 
222
- static void encode_message(upb_encstate* e, const upb_Message* msg,
223
- const upb_MiniTable* m, size_t* size);
326
+ static char* encode_message(char* ptr, upb_encstate* e, const upb_Message* msg,
327
+ const upb_MiniTable* m, size_t* size);
224
328
 
225
- static void encode_TaggedMessagePtr(upb_encstate* e,
226
- upb_TaggedMessagePtr tagged,
227
- const upb_MiniTable* m, size_t* size) {
329
+ static char* encode_TaggedMessagePtr(char* ptr, upb_encstate* e,
330
+ upb_TaggedMessagePtr tagged,
331
+ const upb_MiniTable* m, size_t* size) {
228
332
  if (upb_TaggedMessagePtr_IsEmpty(tagged)) {
229
333
  m = UPB_PRIVATE(_upb_MiniTable_Empty)();
230
334
  }
231
- encode_message(e, UPB_PRIVATE(_upb_TaggedMessagePtr_GetMessage)(tagged), m,
232
- size);
335
+ return encode_message(
336
+ ptr, e, UPB_PRIVATE(_upb_TaggedMessagePtr_GetMessage)(tagged), m, size);
233
337
  }
234
338
 
235
- static void encode_scalar(upb_encstate* e, const void* _field_mem,
236
- const upb_MiniTableSubInternal* subs,
237
- const upb_MiniTableField* f) {
339
+ static char* encode_scalar(char* ptr, upb_encstate* e, const void* _field_mem,
340
+ const upb_MiniTableSubInternal* subs,
341
+ const upb_MiniTableField* f) {
238
342
  const char* field_mem = _field_mem;
239
343
  int wire_type;
240
344
 
241
345
  #define CASE(ctype, type, wtype, encodeval) \
242
346
  { \
243
347
  ctype val = *(ctype*)field_mem; \
244
- encode_##type(e, encodeval); \
348
+ ptr = encode_##type(ptr, e, encodeval); \
245
349
  wire_type = wtype; \
246
350
  break; \
247
351
  }
@@ -274,8 +378,8 @@ static void encode_scalar(upb_encstate* e, const void* _field_mem,
274
378
  case kUpb_FieldType_String:
275
379
  case kUpb_FieldType_Bytes: {
276
380
  upb_StringView view = *(upb_StringView*)field_mem;
277
- encode_bytes(e, view.data, view.size);
278
- encode_varint(e, view.size);
381
+ ptr = encode_bytes(ptr, e, view.data, view.size);
382
+ ptr = encode_varint(ptr, e, view.size);
279
383
  wire_type = kUpb_WireType_Delimited;
280
384
  break;
281
385
  }
@@ -284,11 +388,12 @@ static void encode_scalar(upb_encstate* e, const void* _field_mem,
284
388
  upb_TaggedMessagePtr submsg = *(upb_TaggedMessagePtr*)field_mem;
285
389
  const upb_MiniTable* subm = _upb_Encoder_GetSubMiniTable(subs, f);
286
390
  if (submsg == 0) {
287
- return;
391
+ return ptr;
288
392
  }
289
393
  if (--e->depth == 0) encode_err(e, kUpb_EncodeStatus_MaxDepthExceeded);
290
- encode_tag(e, upb_MiniTableField_Number(f), kUpb_WireType_EndGroup);
291
- encode_TaggedMessagePtr(e, submsg, subm, &size);
394
+ ptr = encode_tag(ptr, e, upb_MiniTableField_Number(f),
395
+ kUpb_WireType_EndGroup);
396
+ ptr = encode_TaggedMessagePtr(ptr, e, submsg, subm, &size);
292
397
  wire_type = kUpb_WireType_StartGroup;
293
398
  e->depth++;
294
399
  break;
@@ -298,11 +403,11 @@ static void encode_scalar(upb_encstate* e, const void* _field_mem,
298
403
  upb_TaggedMessagePtr submsg = *(upb_TaggedMessagePtr*)field_mem;
299
404
  const upb_MiniTable* subm = _upb_Encoder_GetSubMiniTable(subs, f);
300
405
  if (submsg == 0) {
301
- return;
406
+ return ptr;
302
407
  }
303
408
  if (--e->depth == 0) encode_err(e, kUpb_EncodeStatus_MaxDepthExceeded);
304
- encode_TaggedMessagePtr(e, submsg, subm, &size);
305
- encode_varint(e, size);
409
+ ptr = encode_TaggedMessagePtr(ptr, e, submsg, subm, &size);
410
+ ptr = encode_varint(ptr, e, size);
306
411
  wire_type = kUpb_WireType_Delimited;
307
412
  e->depth++;
308
413
  break;
@@ -312,31 +417,33 @@ static void encode_scalar(upb_encstate* e, const void* _field_mem,
312
417
  }
313
418
  #undef CASE
314
419
 
315
- encode_tag(e, upb_MiniTableField_Number(f), wire_type);
420
+ return encode_tag(ptr, e, upb_MiniTableField_Number(f), wire_type);
316
421
  }
317
422
 
318
- static void encode_array(upb_encstate* e, const upb_Message* msg,
319
- const upb_MiniTableSubInternal* subs,
320
- const upb_MiniTableField* f) {
423
+ static char* encode_array(char* ptr, upb_encstate* e, const upb_Message* msg,
424
+ const upb_MiniTableSubInternal* subs,
425
+ const upb_MiniTableField* f) {
321
426
  const upb_Array* arr = *UPB_PTR_AT(msg, f->UPB_PRIVATE(offset), upb_Array*);
322
427
  bool packed = upb_MiniTableField_IsPacked(f);
323
- size_t pre_len = e->limit - e->ptr;
428
+ size_t pre_len = e->limit - ptr;
324
429
 
325
430
  if (arr == NULL || upb_Array_Size(arr) == 0) {
326
- return;
431
+ return ptr;
327
432
  }
328
433
 
329
434
  #define VARINT_CASE(ctype, encode) \
330
435
  { \
331
436
  const ctype* start = upb_Array_DataPtr(arr); \
332
- const ctype* ptr = start + upb_Array_Size(arr); \
437
+ const ctype* arr_ptr = start + upb_Array_Size(arr); \
333
438
  uint32_t tag = \
334
439
  packed ? 0 : (f->UPB_PRIVATE(number) << 3) | kUpb_WireType_Varint; \
335
440
  do { \
336
- ptr--; \
337
- encode_varint(e, encode); \
338
- if (tag) encode_varint(e, tag); \
339
- } while (ptr != start); \
441
+ arr_ptr--; \
442
+ ptr = encode_varint(ptr, e, encode); \
443
+ if (tag) { \
444
+ ptr = encode_varint(ptr, e, tag); \
445
+ } \
446
+ } while (arr_ptr != start); \
340
447
  } \
341
448
  break;
342
449
 
@@ -344,106 +451,117 @@ static void encode_array(upb_encstate* e, const upb_Message* msg,
344
451
 
345
452
  switch (f->UPB_PRIVATE(descriptortype)) {
346
453
  case kUpb_FieldType_Double:
347
- encode_fixedarray(e, arr, sizeof(double), TAG(kUpb_WireType_64Bit));
454
+ ptr = encode_fixedarray(ptr, e, arr, sizeof(double),
455
+ TAG(kUpb_WireType_64Bit));
348
456
  break;
349
457
  case kUpb_FieldType_Float:
350
- encode_fixedarray(e, arr, sizeof(float), TAG(kUpb_WireType_32Bit));
458
+ ptr = encode_fixedarray(ptr, e, arr, sizeof(float),
459
+ TAG(kUpb_WireType_32Bit));
351
460
  break;
352
461
  case kUpb_FieldType_SFixed64:
353
462
  case kUpb_FieldType_Fixed64:
354
- encode_fixedarray(e, arr, sizeof(uint64_t), TAG(kUpb_WireType_64Bit));
463
+ ptr = encode_fixedarray(ptr, e, arr, sizeof(uint64_t),
464
+ TAG(kUpb_WireType_64Bit));
355
465
  break;
356
466
  case kUpb_FieldType_Fixed32:
357
467
  case kUpb_FieldType_SFixed32:
358
- encode_fixedarray(e, arr, sizeof(uint32_t), TAG(kUpb_WireType_32Bit));
468
+ ptr = encode_fixedarray(ptr, e, arr, sizeof(uint32_t),
469
+ TAG(kUpb_WireType_32Bit));
359
470
  break;
360
471
  case kUpb_FieldType_Int64:
361
472
  case kUpb_FieldType_UInt64:
362
- VARINT_CASE(uint64_t, *ptr);
473
+ VARINT_CASE(uint64_t, *arr_ptr);
363
474
  case kUpb_FieldType_UInt32:
364
- VARINT_CASE(uint32_t, *ptr);
475
+ VARINT_CASE(uint32_t, *arr_ptr);
365
476
  case kUpb_FieldType_Int32:
366
477
  case kUpb_FieldType_Enum:
367
- VARINT_CASE(int32_t, (int64_t)*ptr);
478
+ VARINT_CASE(int32_t, (int64_t)*arr_ptr);
368
479
  case kUpb_FieldType_Bool:
369
- VARINT_CASE(bool, *ptr);
480
+ VARINT_CASE(bool, *arr_ptr);
370
481
  case kUpb_FieldType_SInt32:
371
- VARINT_CASE(int32_t, encode_zz32(*ptr));
482
+ VARINT_CASE(int32_t, encode_zz32(*arr_ptr));
372
483
  case kUpb_FieldType_SInt64:
373
- VARINT_CASE(int64_t, encode_zz64(*ptr));
484
+ VARINT_CASE(int64_t, encode_zz64(*arr_ptr));
374
485
  case kUpb_FieldType_String:
375
486
  case kUpb_FieldType_Bytes: {
376
487
  const upb_StringView* start = upb_Array_DataPtr(arr);
377
- const upb_StringView* ptr = start + upb_Array_Size(arr);
488
+ const upb_StringView* str_ptr = start + upb_Array_Size(arr);
378
489
  do {
379
- ptr--;
380
- encode_bytes(e, ptr->data, ptr->size);
381
- encode_varint(e, ptr->size);
382
- encode_tag(e, upb_MiniTableField_Number(f), kUpb_WireType_Delimited);
383
- } while (ptr != start);
384
- return;
490
+ str_ptr--;
491
+ ptr = encode_bytes(ptr, e, str_ptr->data, str_ptr->size);
492
+ ptr = encode_varint(ptr, e, str_ptr->size);
493
+ ptr = encode_tag(ptr, e, upb_MiniTableField_Number(f),
494
+ kUpb_WireType_Delimited);
495
+ } while (str_ptr != start);
496
+ return ptr;
385
497
  }
386
498
  case kUpb_FieldType_Group: {
387
499
  const upb_TaggedMessagePtr* start = upb_Array_DataPtr(arr);
388
- const upb_TaggedMessagePtr* ptr = start + upb_Array_Size(arr);
500
+ const upb_TaggedMessagePtr* arr_ptr = start + upb_Array_Size(arr);
389
501
  const upb_MiniTable* subm = _upb_Encoder_GetSubMiniTable(subs, f);
390
502
  if (--e->depth == 0) encode_err(e, kUpb_EncodeStatus_MaxDepthExceeded);
391
503
  do {
392
504
  size_t size;
393
- ptr--;
394
- encode_tag(e, upb_MiniTableField_Number(f), kUpb_WireType_EndGroup);
395
- encode_TaggedMessagePtr(e, *ptr, subm, &size);
396
- encode_tag(e, upb_MiniTableField_Number(f), kUpb_WireType_StartGroup);
397
- } while (ptr != start);
505
+ arr_ptr--;
506
+ ptr = encode_tag(ptr, e, upb_MiniTableField_Number(f),
507
+ kUpb_WireType_EndGroup);
508
+ ptr = encode_TaggedMessagePtr(ptr, e, *arr_ptr, subm, &size);
509
+ ptr = encode_tag(ptr, e, upb_MiniTableField_Number(f),
510
+ kUpb_WireType_StartGroup);
511
+ } while (arr_ptr != start);
398
512
  e->depth++;
399
- return;
513
+ return ptr;
400
514
  }
401
515
  case kUpb_FieldType_Message: {
402
516
  const upb_TaggedMessagePtr* start = upb_Array_DataPtr(arr);
403
- const upb_TaggedMessagePtr* ptr = start + upb_Array_Size(arr);
517
+ const upb_TaggedMessagePtr* arr_ptr = start + upb_Array_Size(arr);
404
518
  const upb_MiniTable* subm = _upb_Encoder_GetSubMiniTable(subs, f);
405
519
  if (--e->depth == 0) encode_err(e, kUpb_EncodeStatus_MaxDepthExceeded);
406
520
  do {
407
521
  size_t size;
408
- ptr--;
409
- encode_TaggedMessagePtr(e, *ptr, subm, &size);
410
- encode_varint(e, size);
411
- encode_tag(e, upb_MiniTableField_Number(f), kUpb_WireType_Delimited);
412
- } while (ptr != start);
522
+ arr_ptr--;
523
+ ptr = encode_TaggedMessagePtr(ptr, e, *arr_ptr, subm, &size);
524
+ ptr = encode_varint(ptr, e, size);
525
+ ptr = encode_tag(ptr, e, upb_MiniTableField_Number(f),
526
+ kUpb_WireType_Delimited);
527
+ } while (arr_ptr != start);
413
528
  e->depth++;
414
- return;
529
+ return ptr;
415
530
  }
416
531
  }
417
532
  #undef VARINT_CASE
418
533
 
419
534
  if (packed) {
420
- encode_varint(e, e->limit - e->ptr - pre_len);
421
- encode_tag(e, upb_MiniTableField_Number(f), kUpb_WireType_Delimited);
535
+ ptr = encode_varint(ptr, e, e->limit - ptr - pre_len);
536
+ ptr = encode_tag(ptr, e, upb_MiniTableField_Number(f),
537
+ kUpb_WireType_Delimited);
422
538
  }
539
+ return ptr;
423
540
  }
424
541
 
425
- static void encode_mapentry(upb_encstate* e, uint32_t number,
426
- const upb_MiniTable* layout,
427
- const upb_MapEntry* ent) {
542
+ static char* encode_mapentry(char* ptr, upb_encstate* e, uint32_t number,
543
+ const upb_MiniTable* layout,
544
+ const upb_MapEntry* ent) {
428
545
  const upb_MiniTableField* key_field = upb_MiniTable_MapKey(layout);
429
546
  const upb_MiniTableField* val_field = upb_MiniTable_MapValue(layout);
430
- size_t pre_len = e->limit - e->ptr;
547
+ size_t pre_len = e->limit - ptr;
431
548
  size_t size;
432
- encode_scalar(e, &ent->v, layout->UPB_PRIVATE(subs), val_field);
433
- encode_scalar(e, &ent->k, layout->UPB_PRIVATE(subs), key_field);
434
- size = (e->limit - e->ptr) - pre_len;
435
- encode_varint(e, size);
436
- encode_tag(e, number, kUpb_WireType_Delimited);
549
+ ptr = encode_scalar(ptr, e, &ent->v, layout->UPB_PRIVATE(subs), val_field);
550
+ ptr = encode_scalar(ptr, e, &ent->k, layout->UPB_PRIVATE(subs), key_field);
551
+ size = (e->limit - ptr) - pre_len;
552
+ ptr = encode_varint(ptr, e, size);
553
+ ptr = encode_tag(ptr, e, number, kUpb_WireType_Delimited);
554
+ return ptr;
437
555
  }
438
556
 
439
- static void encode_map(upb_encstate* e, const upb_Message* msg,
440
- const upb_MiniTableSubInternal* subs,
441
- const upb_MiniTableField* f) {
557
+ static char* encode_map(char* ptr, upb_encstate* e, const upb_Message* msg,
558
+ const upb_MiniTableSubInternal* subs,
559
+ const upb_MiniTableField* f) {
442
560
  const upb_Map* map = *UPB_PTR_AT(msg, f->UPB_PRIVATE(offset), const upb_Map*);
443
561
  const upb_MiniTable* layout = _upb_Encoder_GetSubMiniTable(subs, f);
444
562
  UPB_ASSERT(upb_MiniTable_FieldCount(layout) == 2);
445
563
 
446
- if (!map || !upb_Map_Size(map)) return;
564
+ if (!map || !upb_Map_Size(map)) return ptr;
447
565
 
448
566
  if (e->options & kUpb_EncodeOption_Deterministic) {
449
567
  if (!map->UPB_PRIVATE(is_strtable)) {
@@ -455,7 +573,8 @@ static void encode_map(upb_encstate* e, const upb_Message* msg,
455
573
  upb_MapEntry ent;
456
574
  memcpy(&ent.k, &iter, sizeof(iter));
457
575
  _upb_map_fromvalue(value, &ent.v, map->val_size);
458
- encode_mapentry(e, upb_MiniTableField_Number(f), layout, &ent);
576
+ ptr = encode_mapentry(ptr, e, upb_MiniTableField_Number(f), layout,
577
+ &ent);
459
578
  }
460
579
  }
461
580
  }
@@ -465,7 +584,7 @@ static void encode_map(upb_encstate* e, const upb_Message* msg,
465
584
  map, &sorted);
466
585
  upb_MapEntry ent;
467
586
  while (_upb_sortedmap_next(&e->sorter, map, &sorted, &ent)) {
468
- encode_mapentry(e, upb_MiniTableField_Number(f), layout, &ent);
587
+ ptr = encode_mapentry(ptr, e, upb_MiniTableField_Number(f), layout, &ent);
469
588
  }
470
589
  _upb_mapsorter_popmap(&e->sorter, &sorted);
471
590
  } else {
@@ -477,7 +596,8 @@ static void encode_map(upb_encstate* e, const upb_Message* msg,
477
596
  upb_MapEntry ent;
478
597
  _upb_map_fromkey(strkey, &ent.k, map->key_size);
479
598
  _upb_map_fromvalue(val, &ent.v, map->val_size);
480
- encode_mapentry(e, upb_MiniTableField_Number(f), layout, &ent);
599
+ ptr =
600
+ encode_mapentry(ptr, e, upb_MiniTableField_Number(f), layout, &ent);
481
601
  }
482
602
  } else {
483
603
  intptr_t iter = UPB_INTTABLE_BEGIN;
@@ -486,13 +606,15 @@ static void encode_map(upb_encstate* e, const upb_Message* msg,
486
606
  upb_MapEntry ent;
487
607
  memcpy(&ent.k, &intkey, map->key_size);
488
608
  _upb_map_fromvalue(val, &ent.v, map->val_size);
489
- encode_mapentry(e, upb_MiniTableField_Number(f), layout, &ent);
609
+ ptr =
610
+ encode_mapentry(ptr, e, upb_MiniTableField_Number(f), layout, &ent);
490
611
  }
491
612
  }
492
613
  }
614
+ return ptr;
493
615
  }
494
616
 
495
- static bool encode_shouldencode(upb_encstate* e, const upb_Message* msg,
617
+ static bool encode_shouldencode(const upb_Message* msg,
496
618
  const upb_MiniTableField* f) {
497
619
  if (f->presence == 0) {
498
620
  // Proto3 presence or map/array.
@@ -530,43 +652,43 @@ static bool encode_shouldencode(upb_encstate* e, const upb_Message* msg,
530
652
  }
531
653
  }
532
654
 
533
- static void encode_field(upb_encstate* e, const upb_Message* msg,
534
- const upb_MiniTableSubInternal* subs,
535
- const upb_MiniTableField* field) {
655
+ static char* encode_field(char* ptr, upb_encstate* e, const upb_Message* msg,
656
+ const upb_MiniTableSubInternal* subs,
657
+ const upb_MiniTableField* field) {
536
658
  switch (UPB_PRIVATE(_upb_MiniTableField_Mode)(field)) {
537
659
  case kUpb_FieldMode_Array:
538
- encode_array(e, msg, subs, field);
539
- break;
660
+ return encode_array(ptr, e, msg, subs, field);
540
661
  case kUpb_FieldMode_Map:
541
- encode_map(e, msg, subs, field);
542
- break;
662
+ return encode_map(ptr, e, msg, subs, field);
543
663
  case kUpb_FieldMode_Scalar:
544
- encode_scalar(e, UPB_PTR_AT(msg, field->UPB_PRIVATE(offset), void), subs,
545
- field);
546
- break;
664
+ return encode_scalar(ptr, e,
665
+ UPB_PTR_AT(msg, field->UPB_PRIVATE(offset), void),
666
+ subs, field);
547
667
  default:
548
668
  UPB_UNREACHABLE();
549
669
  }
550
670
  }
551
671
 
552
- static void encode_msgset_item(upb_encstate* e,
553
- const upb_MiniTableExtension* ext,
554
- const upb_MessageValue ext_val) {
672
+ static char* encode_msgset_item(char* ptr, upb_encstate* e,
673
+ const upb_MiniTableExtension* ext,
674
+ const upb_MessageValue ext_val) {
555
675
  size_t size;
556
- encode_tag(e, kUpb_MsgSet_Item, kUpb_WireType_EndGroup);
557
- encode_message(e, ext_val.msg_val, upb_MiniTableExtension_GetSubMessage(ext),
558
- &size);
559
- encode_varint(e, size);
560
- encode_tag(e, kUpb_MsgSet_Message, kUpb_WireType_Delimited);
561
- encode_varint(e, upb_MiniTableExtension_Number(ext));
562
- encode_tag(e, kUpb_MsgSet_TypeId, kUpb_WireType_Varint);
563
- encode_tag(e, kUpb_MsgSet_Item, kUpb_WireType_StartGroup);
564
- }
565
-
566
- static void encode_ext(upb_encstate* e, const upb_MiniTableExtension* ext,
567
- upb_MessageValue ext_val, bool is_message_set) {
676
+ ptr = encode_tag(ptr, e, kUpb_MsgSet_Item, kUpb_WireType_EndGroup);
677
+ ptr = encode_message(ptr, e, ext_val.msg_val,
678
+ upb_MiniTableExtension_GetSubMessage(ext), &size);
679
+ ptr = encode_varint(ptr, e, size);
680
+ ptr = encode_tag(ptr, e, kUpb_MsgSet_Message, kUpb_WireType_Delimited);
681
+ ptr = encode_varint(ptr, e, upb_MiniTableExtension_Number(ext));
682
+ ptr = encode_tag(ptr, e, kUpb_MsgSet_TypeId, kUpb_WireType_Varint);
683
+ ptr = encode_tag(ptr, e, kUpb_MsgSet_Item, kUpb_WireType_StartGroup);
684
+ return ptr;
685
+ }
686
+
687
+ static char* encode_ext(char* ptr, upb_encstate* e,
688
+ const upb_MiniTableExtension* ext,
689
+ upb_MessageValue ext_val, bool is_message_set) {
568
690
  if (UPB_UNLIKELY(is_message_set)) {
569
- encode_msgset_item(e, ext, ext_val);
691
+ ptr = encode_msgset_item(ptr, e, ext, ext_val);
570
692
  } else {
571
693
  upb_MiniTableSubInternal sub;
572
694
  if (upb_MiniTableField_IsSubMessage(&ext->UPB_PRIVATE(field))) {
@@ -574,17 +696,18 @@ static void encode_ext(upb_encstate* e, const upb_MiniTableExtension* ext,
574
696
  } else {
575
697
  sub.UPB_PRIVATE(subenum) = ext->UPB_PRIVATE(sub).UPB_PRIVATE(subenum);
576
698
  }
577
- encode_field(e, &ext_val.UPB_PRIVATE(ext_msg_val), &sub,
578
- &ext->UPB_PRIVATE(field));
699
+ ptr = encode_field(ptr, e, &ext_val.UPB_PRIVATE(ext_msg_val), &sub,
700
+ &ext->UPB_PRIVATE(field));
579
701
  }
702
+ return ptr;
580
703
  }
581
704
 
582
- static void encode_exts(upb_encstate* e, const upb_MiniTable* m,
583
- const upb_Message* msg) {
584
- if (m->UPB_PRIVATE(ext) == kUpb_ExtMode_NonExtendable) return;
705
+ static char* encode_exts(char* ptr, upb_encstate* e, const upb_MiniTable* m,
706
+ const upb_Message* msg) {
707
+ if (m->UPB_PRIVATE(ext) == kUpb_ExtMode_NonExtendable) return ptr;
585
708
 
586
709
  upb_Message_Internal* in = UPB_PRIVATE(_upb_Message_GetInternal)(msg);
587
- if (!in) return;
710
+ if (!in) return ptr;
588
711
 
589
712
  /* Encode all extensions together. Unlike C++, we do not attempt to keep
590
713
  * these in field number order relative to normal fields or even to each
@@ -595,7 +718,7 @@ static void encode_exts(upb_encstate* e, const upb_MiniTable* m,
595
718
  if (!UPB_PRIVATE(_upb_Message_NextExtensionReverse)(msg, &ext, &ext_val,
596
719
  &iter)) {
597
720
  // Message has no extensions.
598
- return;
721
+ return ptr;
599
722
  }
600
723
 
601
724
  if (e->options & kUpb_EncodeOption_Deterministic) {
@@ -605,22 +728,23 @@ static void encode_exts(upb_encstate* e, const upb_MiniTable* m,
605
728
  }
606
729
  const upb_Extension* ext;
607
730
  while (_upb_sortedmap_nextext(&e->sorter, &sorted, &ext)) {
608
- encode_ext(e, ext->ext, ext->data,
609
- m->UPB_PRIVATE(ext) == kUpb_ExtMode_IsMessageSet);
731
+ ptr = encode_ext(ptr, e, ext->ext, ext->data,
732
+ m->UPB_PRIVATE(ext) == kUpb_ExtMode_IsMessageSet);
610
733
  }
611
734
  _upb_mapsorter_popmap(&e->sorter, &sorted);
612
735
  } else {
613
736
  do {
614
- encode_ext(e, ext, ext_val,
615
- m->UPB_PRIVATE(ext) == kUpb_ExtMode_IsMessageSet);
737
+ ptr = encode_ext(ptr, e, ext, ext_val,
738
+ m->UPB_PRIVATE(ext) == kUpb_ExtMode_IsMessageSet);
616
739
  } while (UPB_PRIVATE(_upb_Message_NextExtensionReverse)(msg, &ext, &ext_val,
617
740
  &iter));
618
741
  }
742
+ return ptr;
619
743
  }
620
744
 
621
- static void encode_message(upb_encstate* e, const upb_Message* msg,
622
- const upb_MiniTable* m, size_t* size) {
623
- size_t pre_len = e->limit - e->ptr;
745
+ static char* encode_message(char* ptr, upb_encstate* e, const upb_Message* msg,
746
+ const upb_MiniTable* m, size_t* size) {
747
+ size_t pre_len = e->limit - ptr;
624
748
 
625
749
  if (e->options & kUpb_EncodeOption_CheckRequired) {
626
750
  if (m->UPB_PRIVATE(required_count)) {
@@ -640,17 +764,17 @@ static void encode_message(upb_encstate* e, const upb_Message* msg,
640
764
  unknown_size += unknown.size;
641
765
  }
642
766
  if (unknown_size != 0) {
643
- encode_reserve(e, unknown_size);
644
- char* ptr = e->ptr;
767
+ ptr = encode_reserve(ptr, e, unknown_size);
768
+ char* tmp_ptr = ptr;
645
769
  iter = kUpb_Message_UnknownBegin;
646
770
  while (upb_Message_NextUnknown(msg, &unknown, &iter)) {
647
- memcpy(ptr, unknown.data, unknown.size);
648
- ptr += unknown.size;
771
+ memcpy(tmp_ptr, unknown.data, unknown.size);
772
+ tmp_ptr += unknown.size;
649
773
  }
650
774
  }
651
775
  }
652
776
 
653
- encode_exts(e, m, msg);
777
+ ptr = encode_exts(ptr, e, m, msg);
654
778
 
655
779
  if (upb_MiniTable_FieldCount(m)) {
656
780
  const upb_MiniTableField* f =
@@ -658,16 +782,18 @@ static void encode_message(upb_encstate* e, const upb_Message* msg,
658
782
  const upb_MiniTableField* first = &m->UPB_PRIVATE(fields)[0];
659
783
  while (f != first) {
660
784
  f--;
661
- if (encode_shouldencode(e, msg, f)) {
662
- encode_field(e, msg, m->UPB_PRIVATE(subs), f);
785
+ if (encode_shouldencode(msg, f)) {
786
+ ptr = encode_field(ptr, e, msg, m->UPB_PRIVATE(subs), f);
663
787
  }
664
788
  }
665
789
  }
666
790
 
667
- *size = (e->limit - e->ptr) - pre_len;
791
+ *size = (e->limit - ptr) - pre_len;
792
+ return ptr;
668
793
  }
669
794
 
670
- static upb_EncodeStatus upb_Encoder_Encode(upb_encstate* const encoder,
795
+ static upb_EncodeStatus upb_Encoder_Encode(char* ptr,
796
+ upb_encstate* const encoder,
671
797
  const upb_Message* const msg,
672
798
  const upb_MiniTable* const l,
673
799
  char** const buf, size_t* const size,
@@ -678,17 +804,17 @@ static upb_EncodeStatus upb_Encoder_Encode(upb_encstate* const encoder,
678
804
  // NULL on error and we still set it to non-NULL on a successful empty result.
679
805
  if (UPB_SETJMP(encoder->err) == 0) {
680
806
  size_t encoded_msg_size;
681
- encode_message(encoder, msg, l, &encoded_msg_size);
807
+ ptr = encode_message(ptr, encoder, msg, l, &encoded_msg_size);
682
808
  if (prepend_len) {
683
- encode_varint(encoder, encoded_msg_size);
809
+ ptr = encode_varint(ptr, encoder, encoded_msg_size);
684
810
  }
685
- *size = encoder->limit - encoder->ptr;
811
+ *size = encoder->limit - ptr;
686
812
  if (*size == 0) {
687
813
  static char ch;
688
814
  *buf = &ch;
689
815
  } else {
690
- UPB_ASSERT(encoder->ptr);
691
- *buf = encoder->ptr;
816
+ UPB_ASSERT(ptr);
817
+ *buf = ptr;
692
818
  }
693
819
  } else {
694
820
  UPB_ASSERT(encoder->status != kUpb_EncodeStatus_Ok);
@@ -700,6 +826,10 @@ static upb_EncodeStatus upb_Encoder_Encode(upb_encstate* const encoder,
700
826
  return encoder->status;
701
827
  }
702
828
 
829
+ static uint16_t upb_EncodeOptions_GetMaxDepth(uint32_t options) {
830
+ return options >> 16;
831
+ }
832
+
703
833
  uint16_t upb_EncodeOptions_GetEffectiveMaxDepth(uint32_t options) {
704
834
  uint16_t max_depth = upb_EncodeOptions_GetMaxDepth(options);
705
835
  return max_depth ? max_depth : kUpb_WireFormat_DefaultDepthLimit;
@@ -715,12 +845,11 @@ static upb_EncodeStatus _upb_Encode(const upb_Message* msg,
715
845
  e.arena = arena;
716
846
  e.buf = NULL;
717
847
  e.limit = NULL;
718
- e.ptr = NULL;
719
848
  e.depth = upb_EncodeOptions_GetEffectiveMaxDepth(options);
720
849
  e.options = options;
721
850
  _upb_mapsorter_init(&e.sorter);
722
851
 
723
- return upb_Encoder_Encode(&e, msg, l, buf, size, prepend_len);
852
+ return upb_Encoder_Encode(NULL, &e, msg, l, buf, size, prepend_len);
724
853
  }
725
854
 
726
855
  upb_EncodeStatus upb_Encode(const upb_Message* msg, const upb_MiniTable* l,