grpc 1.56.2 → 1.58.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (696) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +549 -292
  3. data/include/grpc/event_engine/event_engine.h +22 -33
  4. data/include/grpc/event_engine/memory_allocator.h +2 -2
  5. data/include/grpc/impl/channel_arg_names.h +371 -0
  6. data/include/grpc/impl/grpc_types.h +1 -350
  7. data/include/grpc/module.modulemap +1 -0
  8. data/include/grpc/support/port_platform.h +29 -23
  9. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +1 -1
  10. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +2 -1
  11. data/src/core/ext/filters/client_channel/client_channel.cc +51 -11
  12. data/src/core/ext/filters/client_channel/dynamic_filters.h +3 -3
  13. data/src/core/ext/filters/client_channel/http_proxy.cc +6 -1
  14. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +27 -53
  15. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +23 -9
  16. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +25 -35
  17. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +79 -132
  18. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +2 -1
  19. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +4 -3
  20. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +3 -1
  21. data/src/core/ext/filters/client_channel/lb_policy/health_check_client.cc +42 -17
  22. data/src/core/ext/filters/client_channel/lb_policy/health_check_client.h +3 -5
  23. data/src/core/ext/filters/client_channel/lb_policy/health_check_client_internal.h +22 -6
  24. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +4 -2
  25. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric_internal.h +2 -0
  26. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +97 -71
  27. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +2 -16
  28. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +152 -101
  29. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.h +20 -0
  30. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +13 -34
  31. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +6 -7
  32. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +21 -79
  33. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +1 -1
  34. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +32 -20
  35. data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +12 -4
  36. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +13 -42
  37. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +3 -67
  38. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +8 -0
  39. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +31 -74
  40. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +7 -51
  41. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +22 -90
  42. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +16 -50
  43. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +12 -74
  44. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +2 -5
  45. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +102 -11
  46. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +9 -4
  47. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +4 -1
  48. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_plugin.cc +6 -0
  49. data/src/core/ext/filters/client_channel/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +107 -70
  50. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +1 -1
  51. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +10 -4
  52. data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +1 -0
  53. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +25 -13
  54. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +367 -312
  55. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +17 -1
  56. data/src/core/ext/filters/client_channel/retry_filter.cc +39 -2498
  57. data/src/core/ext/filters/client_channel/retry_filter.h +92 -1
  58. data/src/core/ext/filters/client_channel/retry_filter_legacy_call_data.cc +2052 -0
  59. data/src/core/ext/filters/client_channel/retry_filter_legacy_call_data.h +442 -0
  60. data/src/core/ext/filters/client_channel/retry_service_config.cc +1 -1
  61. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +39 -59
  62. data/src/core/ext/filters/client_channel/subchannel.cc +9 -5
  63. data/src/core/ext/filters/client_channel/subchannel.h +11 -5
  64. data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +3 -0
  65. data/src/core/ext/filters/deadline/deadline_filter.cc +1 -1
  66. data/src/core/ext/filters/http/client/http_client_filter.cc +1 -0
  67. data/src/core/ext/filters/http/client_authority_filter.cc +1 -1
  68. data/src/core/ext/filters/http/message_compress/compression_filter.cc +1 -0
  69. data/src/core/ext/filters/http/server/http_server_filter.cc +1 -1
  70. data/src/core/ext/filters/message_size/message_size_filter.cc +1 -0
  71. data/src/core/ext/filters/rbac/rbac_filter.cc +40 -111
  72. data/src/core/ext/filters/rbac/rbac_filter.h +12 -30
  73. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +4 -7
  74. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +162 -86
  75. data/src/core/ext/filters/stateful_session/stateful_session_filter.h +0 -6
  76. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +1 -0
  77. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +15 -16
  78. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +463 -519
  79. data/src/core/ext/transport/chttp2/transport/decode_huff.cc +6569 -174
  80. data/src/core/ext/transport/chttp2/transport/decode_huff.h +2278 -441
  81. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +6 -20
  82. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +4 -3
  83. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +72 -12
  84. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +7 -2
  85. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +4 -4
  86. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +3 -2
  87. data/src/core/ext/transport/chttp2/transport/internal.h +38 -61
  88. data/src/core/ext/transport/chttp2/transport/parsing.cc +31 -10
  89. data/src/core/ext/transport/chttp2/transport/ping_abuse_policy.cc +80 -0
  90. data/src/core/ext/transport/chttp2/transport/ping_abuse_policy.h +55 -0
  91. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +98 -0
  92. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.h +73 -0
  93. data/src/core/ext/transport/chttp2/transport/writing.cc +82 -91
  94. data/src/core/ext/transport/inproc/inproc_transport.cc +1 -0
  95. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +27 -6
  96. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +143 -0
  97. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +2 -9
  98. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +0 -39
  99. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +13 -8
  100. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +35 -6
  101. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +17 -13
  102. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +85 -20
  103. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +26 -7
  104. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +45 -3
  105. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +4 -3
  106. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +21 -0
  107. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +30 -6
  108. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +180 -0
  109. data/src/core/ext/upb-generated/envoy/data/accesslog/v3/accesslog.upb.c +558 -0
  110. data/src/core/ext/upb-generated/envoy/data/accesslog/v3/accesslog.upb.h +2710 -0
  111. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +30 -11
  112. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +53 -24
  113. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +30 -5
  114. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +110 -0
  115. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +41 -15
  116. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +150 -27
  117. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.c +1 -0
  118. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb.c +47 -0
  119. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb.h +93 -0
  120. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +88 -76
  121. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +5 -0
  122. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +11 -12
  123. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +0 -5
  124. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +162 -160
  125. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +129 -118
  126. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +141 -135
  127. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.c +19 -12
  128. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +38 -30
  129. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +5 -0
  130. data/src/core/ext/upbdefs-generated/envoy/data/accesslog/v3/accesslog.upbdefs.c +402 -0
  131. data/src/core/ext/upbdefs-generated/envoy/data/accesslog/v3/accesslog.upbdefs.h +111 -0
  132. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +80 -74
  133. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +63 -47
  134. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +5 -0
  135. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +315 -293
  136. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +5 -0
  137. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +29 -29
  138. data/src/core/ext/xds/xds_bootstrap_grpc.cc +33 -30
  139. data/src/core/ext/xds/xds_bootstrap_grpc.h +5 -13
  140. data/src/core/ext/xds/xds_client_grpc.cc +12 -6
  141. data/src/core/ext/xds/xds_client_grpc.h +16 -2
  142. data/src/core/ext/xds/xds_client_stats.h +10 -0
  143. data/src/core/ext/xds/xds_cluster.cc +26 -16
  144. data/src/core/ext/xds/xds_endpoint.cc +4 -7
  145. data/src/core/ext/xds/xds_health_status.cc +0 -17
  146. data/src/core/ext/xds/xds_health_status.h +5 -25
  147. data/src/core/ext/xds/xds_http_fault_filter.cc +1 -2
  148. data/src/core/ext/xds/xds_http_fault_filter.h +1 -2
  149. data/src/core/ext/xds/xds_http_filters.h +2 -4
  150. data/src/core/ext/xds/xds_http_rbac_filter.cc +3 -8
  151. data/src/core/ext/xds/xds_http_rbac_filter.h +1 -2
  152. data/src/core/ext/xds/xds_http_stateful_session_filter.cc +1 -2
  153. data/src/core/ext/xds/xds_http_stateful_session_filter.h +1 -2
  154. data/src/core/ext/xds/xds_lb_policy_registry.cc +36 -0
  155. data/src/core/ext/xds/xds_route_config.cc +4 -0
  156. data/src/core/ext/xds/xds_routing.cc +2 -2
  157. data/src/core/ext/xds/xds_transport_grpc.cc +2 -3
  158. data/src/core/lib/address_utils/parse_address.cc +63 -1
  159. data/src/core/lib/address_utils/parse_address.h +8 -0
  160. data/src/core/lib/address_utils/sockaddr_utils.cc +46 -1
  161. data/src/core/lib/address_utils/sockaddr_utils.h +2 -2
  162. data/src/core/lib/avl/avl.h +10 -173
  163. data/src/core/lib/channel/call_tracer.cc +289 -0
  164. data/src/core/lib/channel/call_tracer.h +35 -0
  165. data/src/core/lib/channel/channel_args.cc +98 -82
  166. data/src/core/lib/channel/channel_args.h +32 -17
  167. data/src/core/lib/channel/connected_channel.cc +4 -2
  168. data/src/core/lib/channel/promise_based_filter.cc +4 -1
  169. data/src/core/lib/channel/promise_based_filter.h +1 -0
  170. data/src/core/lib/compression/compression_internal.cc +8 -4
  171. data/src/core/lib/debug/stats_data.cc +93 -21
  172. data/src/core/lib/debug/stats_data.h +41 -0
  173. data/src/core/lib/debug/trace.cc +1 -4
  174. data/src/core/lib/event_engine/ares_resolver.cc +712 -0
  175. data/src/core/lib/event_engine/ares_resolver.h +150 -0
  176. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +10 -3
  177. data/src/core/lib/event_engine/cf_engine/cf_engine.h +1 -1
  178. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +2 -2
  179. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc +229 -0
  180. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.h +117 -0
  181. data/src/core/lib/event_engine/event_engine.cc +0 -12
  182. data/src/core/lib/event_engine/forkable.cc +62 -43
  183. data/src/core/lib/event_engine/forkable.h +15 -0
  184. data/src/core/lib/event_engine/grpc_polled_fd.h +73 -0
  185. data/src/core/lib/event_engine/handle_containers.h +0 -4
  186. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +4 -6
  187. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +29 -9
  188. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +10 -1
  189. data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +197 -0
  190. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +28 -14
  191. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +3 -1
  192. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +49 -2
  193. data/src/core/lib/event_engine/posix_engine/posix_engine.h +20 -13
  194. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +37 -27
  195. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +2 -0
  196. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +4 -2
  197. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +43 -2
  198. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +6 -0
  199. data/src/core/lib/event_engine/posix_engine/timer.h +10 -37
  200. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +2 -0
  201. data/src/core/lib/event_engine/tcp_socket_utils.cc +67 -7
  202. data/src/core/lib/event_engine/tcp_socket_utils.h +3 -0
  203. data/src/core/lib/event_engine/thread_pool/thread_count.cc +58 -0
  204. data/src/core/lib/event_engine/thread_pool/thread_count.h +161 -0
  205. data/src/core/lib/event_engine/thread_pool/thread_pool_factory.cc +7 -0
  206. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +122 -94
  207. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +22 -48
  208. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +12 -21
  209. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +8 -12
  210. data/src/core/lib/event_engine/windows/windows_endpoint.cc +58 -58
  211. data/src/core/lib/event_engine/windows/windows_endpoint.h +15 -12
  212. data/src/core/lib/event_engine/windows/windows_engine.cc +2 -1
  213. data/src/core/lib/event_engine/windows/windows_engine.h +8 -12
  214. data/src/core/lib/experiments/config.cc +74 -22
  215. data/src/core/lib/experiments/config.h +20 -8
  216. data/src/core/lib/experiments/experiments.cc +206 -91
  217. data/src/core/lib/experiments/experiments.h +71 -14
  218. data/src/core/lib/gprpp/dual_ref_counted.h +9 -9
  219. data/src/core/lib/gprpp/fork.cc +8 -9
  220. data/src/core/lib/gprpp/fork.h +6 -5
  221. data/src/core/lib/gprpp/if_list.h +4530 -0
  222. data/src/core/lib/gprpp/orphanable.h +3 -3
  223. data/src/core/lib/gprpp/ref_counted.h +9 -7
  224. data/src/core/lib/gprpp/ref_counted_string.cc +44 -0
  225. data/src/core/lib/gprpp/ref_counted_string.h +146 -0
  226. data/src/core/lib/gprpp/sorted_pack.h +3 -12
  227. data/src/core/lib/gprpp/status_helper.h +16 -15
  228. data/src/core/lib/gprpp/time.h +13 -1
  229. data/src/core/lib/gprpp/type_list.h +32 -0
  230. data/src/core/lib/gprpp/work_serializer.cc +36 -0
  231. data/src/core/lib/gprpp/work_serializer.h +5 -0
  232. data/src/core/lib/http/httpcli.h +6 -9
  233. data/src/core/lib/http/httpcli_security_connector.cc +1 -0
  234. data/src/core/lib/iomgr/buffer_list.cc +2 -0
  235. data/src/core/lib/iomgr/error.cc +32 -2
  236. data/src/core/lib/iomgr/error.h +9 -10
  237. data/src/core/lib/iomgr/ev_epoll1_linux.cc +5 -7
  238. data/src/core/lib/iomgr/ev_poll_posix.cc +6 -5
  239. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +7 -22
  240. data/src/core/lib/iomgr/exec_ctx.h +11 -0
  241. data/src/core/lib/iomgr/pollset.h +4 -5
  242. data/src/core/lib/iomgr/port.h +10 -0
  243. data/src/core/lib/iomgr/resolve_address.cc +13 -1
  244. data/src/core/lib/iomgr/resolve_address.h +17 -3
  245. data/src/core/lib/iomgr/sockaddr_posix.h +7 -0
  246. data/src/core/lib/iomgr/socket_utils_common_posix.cc +29 -0
  247. data/src/core/lib/iomgr/socket_utils_posix.cc +2 -0
  248. data/src/core/lib/iomgr/socket_utils_posix.h +6 -0
  249. data/src/core/lib/iomgr/tcp_client_posix.cc +4 -1
  250. data/src/core/lib/iomgr/tcp_posix.cc +24 -7
  251. data/src/core/lib/iomgr/tcp_server_posix.cc +3 -2
  252. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +5 -2
  253. data/src/core/lib/iomgr/tcp_windows.cc +1 -3
  254. data/src/core/lib/iomgr/vsock.cc +59 -0
  255. data/src/core/lib/iomgr/vsock.h +38 -0
  256. data/src/core/lib/iomgr/wakeup_fd_posix.h +3 -6
  257. data/src/core/lib/load_balancing/delegating_helper.h +115 -0
  258. data/src/core/lib/load_balancing/lb_policy.h +20 -0
  259. data/src/core/lib/load_balancing/subchannel_interface.h +6 -0
  260. data/src/core/lib/promise/detail/basic_seq.h +1 -372
  261. data/src/core/lib/promise/detail/seq_state.h +2076 -0
  262. data/src/core/lib/promise/party.h +1 -1
  263. data/src/core/lib/promise/seq.h +19 -2
  264. data/src/core/lib/promise/sleep.h +5 -10
  265. data/src/core/lib/promise/try_seq.h +34 -2
  266. data/src/core/lib/resolver/resolver_factory.h +3 -2
  267. data/src/core/lib/resolver/server_address.cc +9 -94
  268. data/src/core/lib/resolver/server_address.h +10 -64
  269. data/src/core/lib/resource_quota/api.cc +1 -0
  270. data/src/core/lib/resource_quota/arena.cc +2 -0
  271. data/src/core/lib/resource_quota/arena.h +42 -8
  272. data/src/core/lib/resource_quota/memory_quota.cc +0 -1
  273. data/src/core/lib/resource_quota/memory_quota.h +1 -1
  274. data/src/core/lib/resource_quota/resource_quota.h +1 -0
  275. data/src/core/lib/security/authorization/authorization_policy_provider.h +1 -1
  276. data/src/core/lib/security/authorization/rbac_policy.h +1 -1
  277. data/src/core/lib/security/credentials/channel_creds_registry.h +51 -27
  278. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +169 -9
  279. data/src/core/lib/security/credentials/composite/composite_credentials.cc +1 -1
  280. data/src/core/lib/security/credentials/composite/composite_credentials.h +3 -1
  281. data/src/core/lib/security/credentials/external/aws_request_signer.cc +8 -0
  282. data/src/core/lib/security/credentials/external/external_account_credentials.cc +40 -1
  283. data/src/core/lib/security/credentials/external/external_account_credentials.h +6 -0
  284. data/src/core/lib/security/credentials/fake/fake_credentials.cc +30 -38
  285. data/src/core/lib/security/credentials/fake/fake_credentials.h +28 -0
  286. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +1 -0
  287. data/src/core/lib/security/credentials/jwt/json_token.cc +17 -0
  288. data/src/core/lib/security/credentials/jwt/json_token.h +4 -0
  289. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +42 -0
  290. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +1 -0
  291. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +4 -0
  292. data/src/core/lib/security/credentials/tls/tls_credentials.cc +2 -1
  293. data/src/core/lib/security/credentials/tls/tls_credentials.h +3 -1
  294. data/src/core/lib/security/credentials/xds/xds_credentials.cc +1 -0
  295. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +1 -0
  296. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +1 -0
  297. data/src/core/lib/security/security_connector/ssl_utils.cc +1 -0
  298. data/src/core/lib/security/transport/client_auth_filter.cc +8 -5
  299. data/src/core/lib/security/transport/security_handshaker.cc +1 -0
  300. data/src/core/lib/security/transport/server_auth_filter.cc +2 -0
  301. data/src/core/lib/service_config/service_config_call_data.h +5 -0
  302. data/src/core/lib/slice/slice.h +16 -0
  303. data/src/core/lib/surface/call.cc +63 -37
  304. data/src/core/lib/surface/channel.cc +1 -0
  305. data/src/core/lib/surface/completion_queue.cc +10 -0
  306. data/src/core/lib/surface/init.cc +1 -0
  307. data/src/core/lib/surface/server.cc +67 -64
  308. data/src/core/lib/surface/server.h +1 -15
  309. data/src/core/lib/surface/version.cc +2 -2
  310. data/src/core/lib/transport/metadata_batch.cc +7 -7
  311. data/src/core/lib/transport/metadata_batch.h +86 -48
  312. data/src/core/lib/transport/parsed_metadata.h +34 -20
  313. data/src/core/lib/transport/simple_slice_based_metadata.h +9 -2
  314. data/src/core/tsi/alts/crypt/aes_gcm.cc +27 -2
  315. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +4 -6
  316. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +1 -2
  317. data/src/core/tsi/ssl_transport_security.cc +39 -7
  318. data/src/ruby/bin/math_pb.rb +24 -18
  319. data/src/ruby/ext/grpc/extconf.rb +19 -18
  320. data/src/ruby/ext/grpc/rb_call.c +62 -39
  321. data/src/ruby/ext/grpc/rb_call_credentials.c +0 -1
  322. data/src/ruby/ext/grpc/rb_channel.c +109 -84
  323. data/src/ruby/ext/grpc/rb_channel.h +1 -0
  324. data/src/ruby/ext/grpc/rb_channel_args.c +16 -2
  325. data/src/ruby/ext/grpc/rb_channel_args.h +4 -0
  326. data/src/ruby/ext/grpc/rb_channel_credentials.c +0 -1
  327. data/src/ruby/ext/grpc/rb_compression_options.c +0 -1
  328. data/src/ruby/ext/grpc/rb_event_thread.c +22 -6
  329. data/src/ruby/ext/grpc/rb_event_thread.h +1 -0
  330. data/src/ruby/ext/grpc/rb_grpc.c +192 -30
  331. data/src/ruby/ext/grpc/rb_grpc.h +8 -2
  332. data/src/ruby/ext/grpc/rb_server.c +62 -45
  333. data/src/ruby/ext/grpc/rb_server_credentials.c +0 -1
  334. data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +0 -1
  335. data/src/ruby/ext/grpc/rb_xds_server_credentials.c +0 -1
  336. data/src/ruby/lib/grpc/generic/active_call.rb +9 -14
  337. data/src/ruby/lib/grpc/generic/bidi_call.rb +2 -0
  338. data/src/ruby/lib/grpc/version.rb +1 -1
  339. data/src/ruby/pb/grpc/health/v1/health_pb.rb +24 -13
  340. data/src/ruby/pb/src/proto/grpc/testing/empty_pb.rb +24 -3
  341. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +25 -111
  342. data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +25 -2
  343. data/src/ruby/pb/test/client.rb +16 -0
  344. data/src/ruby/spec/generic/rpc_server_spec.rb +3 -3
  345. data/third_party/abseil-cpp/absl/algorithm/container.h +3 -2
  346. data/third_party/abseil-cpp/absl/base/attributes.h +58 -5
  347. data/third_party/abseil-cpp/absl/base/call_once.h +1 -1
  348. data/third_party/abseil-cpp/absl/base/casts.h +8 -8
  349. data/third_party/abseil-cpp/absl/base/config.h +89 -106
  350. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +26 -1
  351. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +2 -2
  352. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +50 -39
  353. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +2 -1
  354. data/third_party/abseil-cpp/absl/base/internal/prefetch.h +17 -18
  355. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +32 -3
  356. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +24 -4
  357. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +31 -73
  358. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +9 -8
  359. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +11 -11
  360. data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +23 -32
  361. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +2 -3
  362. data/third_party/abseil-cpp/absl/base/options.h +1 -1
  363. data/third_party/abseil-cpp/absl/base/policy_checks.h +3 -3
  364. data/third_party/abseil-cpp/absl/base/prefetch.h +198 -0
  365. data/third_party/abseil-cpp/absl/container/fixed_array.h +54 -29
  366. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +5 -1
  367. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +6 -2
  368. data/third_party/abseil-cpp/absl/container/inlined_vector.h +167 -79
  369. data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +1 -1
  370. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +3 -21
  371. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +1 -1
  372. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +46 -0
  373. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +2 -0
  374. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +85 -26
  375. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +35 -18
  376. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +70 -29
  377. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +437 -236
  378. data/third_party/abseil-cpp/absl/crc/crc32c.h +8 -1
  379. data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.cc +14 -8
  380. data/third_party/abseil-cpp/absl/crc/internal/crc.cc +4 -35
  381. data/third_party/abseil-cpp/absl/crc/internal/crc.h +2 -10
  382. data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +1 -1
  383. data/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.cc +1 -1
  384. data/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.h +4 -4
  385. data/third_party/abseil-cpp/absl/crc/internal/crc_internal.h +8 -10
  386. data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_x86_64.cc +17 -19
  387. data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +8 -8
  388. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +2 -1
  389. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +59 -23
  390. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +1 -1
  391. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +1 -1
  392. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +1 -1
  393. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +43 -19
  394. data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +3 -0
  395. data/third_party/abseil-cpp/absl/flags/commandlineflag.h +1 -1
  396. data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.cc +1 -1
  397. data/third_party/abseil-cpp/absl/flags/internal/flag.cc +2 -2
  398. data/third_party/abseil-cpp/absl/flags/internal/flag.h +16 -15
  399. data/third_party/abseil-cpp/absl/flags/internal/flag_msvc.inc +1 -1
  400. data/third_party/abseil-cpp/absl/flags/marshalling.cc +43 -2
  401. data/third_party/abseil-cpp/absl/flags/marshalling.h +5 -0
  402. data/third_party/abseil-cpp/absl/functional/any_invocable.h +9 -1
  403. data/third_party/abseil-cpp/absl/functional/bind_front.h +1 -1
  404. data/third_party/abseil-cpp/absl/functional/function_ref.h +3 -3
  405. data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +37 -24
  406. data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +19 -9
  407. data/third_party/abseil-cpp/absl/hash/hash.h +7 -4
  408. data/third_party/abseil-cpp/absl/hash/internal/hash.h +38 -15
  409. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +6 -0
  410. data/third_party/abseil-cpp/absl/meta/type_traits.h +48 -373
  411. data/third_party/abseil-cpp/absl/numeric/bits.h +4 -4
  412. data/third_party/abseil-cpp/absl/numeric/int128.cc +20 -8
  413. data/third_party/abseil-cpp/absl/numeric/int128.h +36 -39
  414. data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +0 -3
  415. data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +47 -30
  416. data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +4 -3
  417. data/third_party/abseil-cpp/absl/random/internal/generate_real.h +1 -1
  418. data/third_party/abseil-cpp/absl/random/internal/platform.h +1 -1
  419. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +4 -0
  420. data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +1 -1
  421. data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.cc +1 -1
  422. data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +1 -1
  423. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +4 -0
  424. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +12 -24
  425. data/third_party/abseil-cpp/absl/status/status.cc +11 -7
  426. data/third_party/abseil-cpp/absl/status/status.h +11 -2
  427. data/third_party/abseil-cpp/absl/status/statusor.h +22 -8
  428. data/third_party/abseil-cpp/absl/strings/ascii.cc +54 -6
  429. data/third_party/abseil-cpp/absl/strings/charconv.cc +21 -4
  430. data/third_party/abseil-cpp/absl/strings/charconv.h +2 -2
  431. data/third_party/abseil-cpp/absl/strings/cord.cc +1 -2
  432. data/third_party/abseil-cpp/absl/strings/cord.h +32 -5
  433. data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +23 -1
  434. data/third_party/abseil-cpp/absl/strings/cord_analysis.h +18 -0
  435. data/third_party/abseil-cpp/absl/strings/cord_buffer.h +2 -5
  436. data/third_party/abseil-cpp/absl/strings/escaping.cc +10 -32
  437. data/third_party/abseil-cpp/absl/strings/escaping.h +1 -1
  438. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +2 -4
  439. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +3 -3
  440. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +0 -1
  441. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +15 -13
  442. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +13 -4
  443. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +8 -0
  444. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +5 -3
  445. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.h +4 -7
  446. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +8 -0
  447. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +2 -2
  448. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +46 -20
  449. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.h +1 -34
  450. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +2 -1
  451. data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +23 -0
  452. data/third_party/abseil-cpp/absl/strings/internal/escaping.h +1 -0
  453. data/third_party/abseil-cpp/absl/strings/internal/memutil.cc +2 -77
  454. data/third_party/abseil-cpp/absl/strings/internal/memutil.h +4 -112
  455. data/third_party/abseil-cpp/absl/strings/internal/stl_type_traits.h +1 -1
  456. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +10 -31
  457. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +8 -8
  458. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +5 -20
  459. data/third_party/abseil-cpp/absl/strings/internal/str_format/constexpr_parser.h +1 -0
  460. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +1 -1
  461. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +9 -9
  462. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +56 -6
  463. data/third_party/abseil-cpp/absl/strings/match.cc +87 -0
  464. data/third_party/abseil-cpp/absl/strings/match.h +19 -0
  465. data/third_party/abseil-cpp/absl/strings/numbers.cc +154 -122
  466. data/third_party/abseil-cpp/absl/strings/numbers.h +1 -6
  467. data/third_party/abseil-cpp/absl/strings/str_cat.cc +7 -50
  468. data/third_party/abseil-cpp/absl/strings/str_cat.h +83 -15
  469. data/third_party/abseil-cpp/absl/strings/str_format.h +6 -3
  470. data/third_party/abseil-cpp/absl/strings/str_split.cc +9 -6
  471. data/third_party/abseil-cpp/absl/strings/string_view.cc +26 -4
  472. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +5 -0
  473. data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +63 -43
  474. data/third_party/abseil-cpp/absl/synchronization/internal/futex_waiter.cc +111 -0
  475. data/third_party/abseil-cpp/absl/synchronization/internal/futex_waiter.h +63 -0
  476. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +11 -7
  477. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.cc +225 -0
  478. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +122 -114
  479. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +12 -8
  480. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +10 -1
  481. data/third_party/abseil-cpp/absl/synchronization/internal/pthread_waiter.cc +167 -0
  482. data/third_party/abseil-cpp/absl/synchronization/internal/pthread_waiter.h +60 -0
  483. data/third_party/abseil-cpp/absl/synchronization/internal/sem_waiter.cc +122 -0
  484. data/third_party/abseil-cpp/absl/synchronization/internal/sem_waiter.h +65 -0
  485. data/third_party/abseil-cpp/absl/synchronization/internal/stdcpp_waiter.cc +91 -0
  486. data/third_party/abseil-cpp/absl/synchronization/internal/stdcpp_waiter.h +56 -0
  487. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +19 -113
  488. data/third_party/abseil-cpp/absl/synchronization/internal/waiter_base.cc +42 -0
  489. data/third_party/abseil-cpp/absl/synchronization/internal/waiter_base.h +90 -0
  490. data/third_party/abseil-cpp/absl/synchronization/internal/win32_waiter.cc +151 -0
  491. data/third_party/abseil-cpp/absl/synchronization/internal/win32_waiter.h +70 -0
  492. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +407 -411
  493. data/third_party/abseil-cpp/absl/synchronization/mutex.h +152 -118
  494. data/third_party/abseil-cpp/absl/time/clock.cc +6 -7
  495. data/third_party/abseil-cpp/absl/time/duration.cc +24 -26
  496. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +1 -0
  497. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +1 -1
  498. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +3 -3
  499. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.cc +8 -6
  500. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +6 -3
  501. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +4 -2
  502. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +4 -0
  503. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +322 -295
  504. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +8 -17
  505. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +51 -33
  506. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.h +7 -2
  507. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +128 -2
  508. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.h +1 -1
  509. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +5 -1
  510. data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +34 -34
  511. data/third_party/abseil-cpp/absl/time/time.cc +9 -2
  512. data/third_party/abseil-cpp/absl/time/time.h +115 -15
  513. data/third_party/abseil-cpp/absl/types/internal/optional.h +0 -52
  514. data/third_party/abseil-cpp/absl/types/internal/span.h +2 -2
  515. data/third_party/abseil-cpp/absl/types/internal/variant.h +2 -2
  516. data/third_party/abseil-cpp/absl/types/optional.h +15 -13
  517. data/third_party/abseil-cpp/absl/types/span.h +1 -2
  518. data/third_party/boringssl-with-bazel/err_data.c +554 -553
  519. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +7 -3
  520. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.c +7 -7
  521. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +5 -5
  522. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +34 -1
  523. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +11 -4
  524. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +3 -3
  525. data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +7 -8
  526. data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +7 -7
  527. data/third_party/boringssl-with-bazel/src/crypto/bio/errno.c +92 -0
  528. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +5 -49
  529. data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +18 -13
  530. data/third_party/boringssl-with-bazel/src/crypto/bio/internal.h +16 -6
  531. data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +4 -4
  532. data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +11 -2
  533. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +1 -1
  534. data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +19 -1
  535. data/third_party/boringssl-with-bazel/src/crypto/chacha/internal.h +8 -1
  536. data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +31 -192
  537. data/third_party/boringssl-with-bazel/src/crypto/conf/conf_def.h +3 -7
  538. data/third_party/boringssl-with-bazel/src/crypto/conf/internal.h +8 -0
  539. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_apple.c +3 -2
  540. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_fuchsia.c +0 -1
  541. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_linux.c +0 -2
  542. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_openbsd.c +0 -1
  543. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_sysreg.c +93 -0
  544. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_win.c +1 -1
  545. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_freebsd.c +0 -1
  546. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_linux.c +0 -2
  547. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +49 -46
  548. data/third_party/boringssl-with-bazel/src/crypto/{cpu_arm_openbsd.c → curve25519/curve25519_64_adx.c} +3 -16
  549. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_tables.h +2809 -7417
  550. data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +27 -5
  551. data/third_party/boringssl-with-bazel/src/crypto/dh_extra/dh_asn1.c +4 -0
  552. data/third_party/boringssl-with-bazel/src/crypto/dh_extra/params.c +5 -0
  553. data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +20 -0
  554. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +110 -72
  555. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_derive.c +4 -3
  556. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +24 -28
  557. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +4 -6
  558. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +23 -21
  559. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +35 -12
  560. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c +2 -4
  561. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c +3 -7
  562. data/third_party/boringssl-with-bazel/src/crypto/evp/pbkdf.c +3 -3
  563. data/third_party/boringssl-with-bazel/src/crypto/evp/print.c +7 -6
  564. data/third_party/boringssl-with-bazel/src/crypto/ex_data.c +34 -72
  565. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +1 -1
  566. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +12 -5
  567. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd.c +5 -6
  568. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +12 -6
  569. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +17 -18
  570. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery_inv.c +51 -15
  571. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.c +7 -7
  572. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/delocate.h +5 -6
  573. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/check.c +37 -8
  574. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +38 -19
  575. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/internal.h +9 -0
  576. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/builtin_curves.h +277 -0
  577. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +180 -404
  578. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +3 -3
  579. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +24 -57
  580. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/felem.c +17 -13
  581. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +33 -71
  582. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +18 -17
  583. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +5 -7
  584. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.c +15 -18
  585. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +9 -11
  586. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +24 -24
  587. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +11 -27
  588. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +8 -8
  589. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +4 -4
  590. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +9 -3
  591. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hkdf/hkdf.c +1 -1
  592. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +40 -26
  593. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +21 -7
  594. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +38 -19
  595. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +2 -29
  596. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +55 -0
  597. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +33 -52
  598. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +42 -24
  599. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/service_indicator.c +4 -7
  600. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +7 -0
  601. data/third_party/boringssl-with-bazel/src/crypto/internal.h +211 -100
  602. data/third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c +5 -4
  603. data/third_party/boringssl-with-bazel/src/crypto/mem.c +7 -8
  604. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +25 -46
  605. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +3 -3
  606. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/p5_pbev2.c +3 -3
  607. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +7 -7
  608. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +8 -5
  609. data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +1 -0
  610. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +7 -6
  611. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/forkunsafe.c +6 -12
  612. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/getentropy.c +52 -0
  613. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/{fuchsia.c → ios.c} +8 -8
  614. data/third_party/boringssl-with-bazel/src/crypto/{refcount_no_threads.c → rand_extra/trusty.c} +15 -19
  615. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +41 -19
  616. data/third_party/boringssl-with-bazel/src/crypto/{refcount_c11.c → refcount.c} +11 -17
  617. data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +152 -72
  618. data/third_party/boringssl-with-bazel/src/crypto/thread_none.c +0 -8
  619. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +6 -35
  620. data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +5 -26
  621. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +14 -18
  622. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +54 -143
  623. data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +8 -19
  624. data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +0 -3
  625. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +1 -1
  626. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +1 -1
  627. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_d2.c +1 -3
  628. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +2 -4
  629. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +2 -2
  630. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +1 -1
  631. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +8 -12
  632. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +19 -20
  633. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +11 -15
  634. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +5 -5
  635. data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +1 -1
  636. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +7 -7
  637. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +2 -3
  638. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +2 -3
  639. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +4 -6
  640. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +4 -119
  641. data/third_party/boringssl-with-bazel/src/include/openssl/asm_base.h +207 -0
  642. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +5 -0
  643. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +10 -116
  644. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +11 -1
  645. data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +0 -2
  646. data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +6 -0
  647. data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +5 -1
  648. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +4 -1
  649. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +0 -21
  650. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +28 -11
  651. data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +19 -6
  652. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +11 -7
  653. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +6 -2
  654. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +13 -14
  655. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +0 -61
  656. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +22 -20
  657. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +131 -81
  658. data/third_party/boringssl-with-bazel/src/include/openssl/stack.h +236 -213
  659. data/third_party/boringssl-with-bazel/src/include/openssl/target.h +201 -0
  660. data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +1 -29
  661. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +4 -8
  662. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +3 -2
  663. data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +9 -65
  664. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +20 -20
  665. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +1 -1
  666. data/third_party/boringssl-with-bazel/src/ssl/internal.h +4 -11
  667. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +26 -20
  668. data/third_party/boringssl-with-bazel/src/ssl/ssl_file.cc +4 -4
  669. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +37 -30
  670. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +127 -26
  671. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +2 -3
  672. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64_adx.h +691 -0
  673. data/third_party/upb/upb/collections/map.c +3 -3
  674. metadata +62 -39
  675. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.cc +0 -42
  676. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.h +0 -64
  677. data/src/core/ext/transport/chttp2/transport/stream_map.cc +0 -177
  678. data/src/core/ext/transport/chttp2/transport/stream_map.h +0 -68
  679. data/src/core/lib/promise/detail/basic_join.h +0 -197
  680. data/src/core/lib/promise/detail/switch.h +0 -1455
  681. data/src/core/lib/promise/try_join.h +0 -82
  682. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +0 -403
  683. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_freebsd.c +0 -62
  684. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm.c +0 -38
  685. data/third_party/boringssl-with-bazel/src/crypto/refcount_win.c +0 -89
  686. data/third_party/re2/util/benchmark.h +0 -156
  687. data/third_party/re2/util/flags.h +0 -26
  688. data/third_party/re2/util/malloc_counter.h +0 -19
  689. data/third_party/re2/util/pcre.cc +0 -1025
  690. data/third_party/re2/util/pcre.h +0 -681
  691. data/third_party/re2/util/test.h +0 -50
  692. data/third_party/upb/upb/mini_table.h +0 -36
  693. data/third_party/zlib/gzclose.c +0 -25
  694. data/third_party/zlib/gzlib.c +0 -639
  695. data/third_party/zlib/gzread.c +0 -650
  696. data/third_party/zlib/gzwrite.c +0 -677
@@ -111,8 +111,8 @@
111
111
  //
112
112
  // LTS releases can be obtained from
113
113
  // https://github.com/abseil/abseil-cpp/releases.
114
- #define ABSL_LTS_RELEASE_VERSION 20230125
115
- #define ABSL_LTS_RELEASE_PATCH_LEVEL 3
114
+ #define ABSL_LTS_RELEASE_VERSION 20230802
115
+ #define ABSL_LTS_RELEASE_PATCH_LEVEL 0
116
116
 
117
117
  // Helper macro to convert a CPP variable to a string literal.
118
118
  #define ABSL_INTERNAL_DO_TOKEN_STR(x) #x
@@ -237,15 +237,8 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
237
237
  // ABSL_HAVE_STD_IS_TRIVIALLY_DESTRUCTIBLE
238
238
  //
239
239
  // Checks whether `std::is_trivially_destructible<T>` is supported.
240
- //
241
- // Notes: All supported compilers using libc++ support this feature, as does
242
- // gcc >= 4.8.1 using libstdc++, and Visual Studio.
243
240
  #ifdef ABSL_HAVE_STD_IS_TRIVIALLY_DESTRUCTIBLE
244
241
  #error ABSL_HAVE_STD_IS_TRIVIALLY_DESTRUCTIBLE cannot be directly set
245
- #elif defined(_LIBCPP_VERSION) || defined(_MSC_VER) || \
246
- (defined(__clang__) && __clang_major__ >= 15) || \
247
- (!defined(__clang__) && defined(__GLIBCXX__) && \
248
- ABSL_INTERNAL_HAVE_MIN_GNUC_VERSION(4, 8))
249
242
  #define ABSL_HAVE_STD_IS_TRIVIALLY_DESTRUCTIBLE 1
250
243
  #endif
251
244
 
@@ -253,36 +246,26 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
253
246
  //
254
247
  // Checks whether `std::is_trivially_default_constructible<T>` and
255
248
  // `std::is_trivially_copy_constructible<T>` are supported.
249
+ #ifdef ABSL_HAVE_STD_IS_TRIVIALLY_CONSTRUCTIBLE
250
+ #error ABSL_HAVE_STD_IS_TRIVIALLY_CONSTRUCTIBLE cannot be directly set
251
+ #else
252
+ #define ABSL_HAVE_STD_IS_TRIVIALLY_CONSTRUCTIBLE 1
253
+ #endif
256
254
 
257
255
  // ABSL_HAVE_STD_IS_TRIVIALLY_ASSIGNABLE
258
256
  //
259
257
  // Checks whether `std::is_trivially_copy_assignable<T>` is supported.
260
-
261
- // Notes: Clang with libc++ supports these features, as does gcc >= 7.4 with
262
- // libstdc++, or gcc >= 8.2 with libc++, and Visual Studio (but not NVCC).
263
- #if defined(ABSL_HAVE_STD_IS_TRIVIALLY_CONSTRUCTIBLE)
264
- #error ABSL_HAVE_STD_IS_TRIVIALLY_CONSTRUCTIBLE cannot be directly set
265
- #elif defined(ABSL_HAVE_STD_IS_TRIVIALLY_ASSIGNABLE)
266
- #error ABSL_HAVE_STD_IS_TRIVIALLY_ASSIGNABLE cannot directly set
267
- #elif (defined(__clang__) && defined(_LIBCPP_VERSION)) || \
268
- (defined(__clang__) && __clang_major__ >= 15) || \
269
- (!defined(__clang__) && \
270
- ((ABSL_INTERNAL_HAVE_MIN_GNUC_VERSION(7, 4) && defined(__GLIBCXX__)) || \
271
- (ABSL_INTERNAL_HAVE_MIN_GNUC_VERSION(8, 2) && \
272
- defined(_LIBCPP_VERSION)))) || \
273
- (defined(_MSC_VER) && !defined(__NVCC__) && !defined(__clang__))
274
- #define ABSL_HAVE_STD_IS_TRIVIALLY_CONSTRUCTIBLE 1
258
+ #ifdef ABSL_HAVE_STD_IS_TRIVIALLY_ASSIGNABLE
259
+ #error ABSL_HAVE_STD_IS_TRIVIALLY_ASSIGNABLE cannot be directly set
260
+ #else
275
261
  #define ABSL_HAVE_STD_IS_TRIVIALLY_ASSIGNABLE 1
276
262
  #endif
277
263
 
278
264
  // ABSL_HAVE_STD_IS_TRIVIALLY_COPYABLE
279
265
  //
280
266
  // Checks whether `std::is_trivially_copyable<T>` is supported.
281
- //
282
- // Notes: Clang 15+ with libc++ supports these features, GCC hasn't been tested.
283
- #if defined(ABSL_HAVE_STD_IS_TRIVIALLY_COPYABLE)
267
+ #ifdef ABSL_HAVE_STD_IS_TRIVIALLY_COPYABLE
284
268
  #error ABSL_HAVE_STD_IS_TRIVIALLY_COPYABLE cannot be directly set
285
- #elif defined(__clang__) && (__clang_major__ >= 15)
286
269
  #define ABSL_HAVE_STD_IS_TRIVIALLY_COPYABLE 1
287
270
  #endif
288
271
 
@@ -429,7 +412,7 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
429
412
  defined(__asmjs__) || defined(__wasm__) || defined(__Fuchsia__) || \
430
413
  defined(__sun) || defined(__ASYLO__) || defined(__myriad2__) || \
431
414
  defined(__HAIKU__) || defined(__OpenBSD__) || defined(__NetBSD__) || \
432
- defined(__QNX__)
415
+ defined(__QNX__) || defined(__VXWORKS__) || defined(__hexagon__)
433
416
  #define ABSL_HAVE_MMAP 1
434
417
  #endif
435
418
 
@@ -441,7 +424,7 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
441
424
  #error ABSL_HAVE_PTHREAD_GETSCHEDPARAM cannot be directly set
442
425
  #elif defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__) || \
443
426
  defined(_AIX) || defined(__ros__) || defined(__OpenBSD__) || \
444
- defined(__NetBSD__)
427
+ defined(__NetBSD__) || defined(__VXWORKS__)
445
428
  #define ABSL_HAVE_PTHREAD_GETSCHEDPARAM 1
446
429
  #endif
447
430
 
@@ -460,7 +443,8 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
460
443
  // POSIX.1-2001.
461
444
  #ifdef ABSL_HAVE_SCHED_YIELD
462
445
  #error ABSL_HAVE_SCHED_YIELD cannot be directly set
463
- #elif defined(__linux__) || defined(__ros__) || defined(__native_client__)
446
+ #elif defined(__linux__) || defined(__ros__) || defined(__native_client__) || \
447
+ defined(__VXWORKS__)
464
448
  #define ABSL_HAVE_SCHED_YIELD 1
465
449
  #endif
466
450
 
@@ -475,7 +459,7 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
475
459
  // platforms.
476
460
  #ifdef ABSL_HAVE_SEMAPHORE_H
477
461
  #error ABSL_HAVE_SEMAPHORE_H cannot be directly set
478
- #elif defined(__linux__) || defined(__ros__)
462
+ #elif defined(__linux__) || defined(__ros__) || defined(__VXWORKS__)
479
463
  #define ABSL_HAVE_SEMAPHORE_H 1
480
464
  #endif
481
465
 
@@ -503,6 +487,8 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
503
487
  #elif defined(__Fuchsia__)
504
488
  // Signals don't exist on fuchsia.
505
489
  #elif defined(__native_client__)
490
+ // Signals don't exist on hexagon/QuRT
491
+ #elif defined(__hexagon__)
506
492
  #else
507
493
  // other standard libraries
508
494
  #define ABSL_HAVE_ALARM 1
@@ -536,41 +522,29 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
536
522
  #error "absl endian detection needs to be set up for your compiler"
537
523
  #endif
538
524
 
539
- // macOS < 10.13 and iOS < 11 don't let you use <any>, <optional>, or <variant>
540
- // even though the headers exist and are publicly noted to work, because the
541
- // libc++ shared library shipped on the system doesn't have the requisite
542
- // exported symbols. See https://github.com/abseil/abseil-cpp/issues/207 and
525
+ // macOS < 10.13 and iOS < 12 don't support <any>, <optional>, or <variant>
526
+ // because the libc++ shared library shipped on the system doesn't have the
527
+ // requisite exported symbols. See
528
+ // https://github.com/abseil/abseil-cpp/issues/207 and
543
529
  // https://developer.apple.com/documentation/xcode_release_notes/xcode_10_release_notes
544
530
  //
545
531
  // libc++ spells out the availability requirements in the file
546
532
  // llvm-project/libcxx/include/__config via the #define
547
- // _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS.
548
- //
549
- // Unfortunately, Apple initially mis-stated the requirements as macOS < 10.14
550
- // and iOS < 12 in the libc++ headers. This was corrected by
533
+ // _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS. The set of versions has been
534
+ // modified a few times, via
551
535
  // https://github.com/llvm/llvm-project/commit/7fb40e1569dd66292b647f4501b85517e9247953
552
- // which subsequently made it into the XCode 12.5 release. We need to match the
553
- // old (incorrect) conditions when built with old XCode, but can use the
554
- // corrected earlier versions with new XCode.
555
- #if defined(__APPLE__) && defined(_LIBCPP_VERSION) && \
556
- ((_LIBCPP_VERSION >= 11000 && /* XCode 12.5 or later: */ \
557
- ((defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && \
558
- __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 101300) || \
559
- (defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && \
560
- __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ < 110000) || \
561
- (defined(__ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__) && \
562
- __ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__ < 40000) || \
563
- (defined(__ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__) && \
564
- __ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__ < 110000))) || \
565
- (_LIBCPP_VERSION < 11000 && /* Pre-XCode 12.5: */ \
566
- ((defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && \
567
- __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 101400) || \
568
- (defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && \
569
- __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ < 120000) || \
570
- (defined(__ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__) && \
571
- __ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__ < 50000) || \
572
- (defined(__ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__) && \
573
- __ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__ < 120000))))
536
+ // and
537
+ // https://github.com/llvm/llvm-project/commit/0bc451e7e137c4ccadcd3377250874f641ca514a
538
+ // The second has the actually correct versions, thus, is what we copy here.
539
+ #if defined(__APPLE__) && \
540
+ ((defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && \
541
+ __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 101300) || \
542
+ (defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && \
543
+ __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ < 120000) || \
544
+ (defined(__ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__) && \
545
+ __ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__ < 50000) || \
546
+ (defined(__ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__) && \
547
+ __ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__ < 120000))
574
548
  #define ABSL_INTERNAL_APPLE_CXX17_TYPES_UNAVAILABLE 1
575
549
  #else
576
550
  #define ABSL_INTERNAL_APPLE_CXX17_TYPES_UNAVAILABLE 0
@@ -578,73 +552,44 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
578
552
 
579
553
  // ABSL_HAVE_STD_ANY
580
554
  //
581
- // Checks whether C++17 std::any is available by checking whether <any> exists.
555
+ // Checks whether C++17 std::any is available.
582
556
  #ifdef ABSL_HAVE_STD_ANY
583
557
  #error "ABSL_HAVE_STD_ANY cannot be directly set."
584
- #endif
585
-
586
- #ifdef __has_include
587
- #if __has_include(<any>) && defined(__cplusplus) && __cplusplus >= 201703L && \
558
+ #elif defined(ABSL_INTERNAL_CPLUSPLUS_LANG) && \
559
+ ABSL_INTERNAL_CPLUSPLUS_LANG >= 201703L && \
588
560
  !ABSL_INTERNAL_APPLE_CXX17_TYPES_UNAVAILABLE
589
561
  #define ABSL_HAVE_STD_ANY 1
590
562
  #endif
591
- #endif
592
563
 
593
564
  // ABSL_HAVE_STD_OPTIONAL
594
565
  //
595
566
  // Checks whether C++17 std::optional is available.
596
567
  #ifdef ABSL_HAVE_STD_OPTIONAL
597
568
  #error "ABSL_HAVE_STD_OPTIONAL cannot be directly set."
598
- #endif
599
-
600
- #ifdef __has_include
601
- #if __has_include(<optional>) && defined(__cplusplus) && \
602
- __cplusplus >= 201703L && !ABSL_INTERNAL_APPLE_CXX17_TYPES_UNAVAILABLE
569
+ #elif defined(ABSL_INTERNAL_CPLUSPLUS_LANG) && \
570
+ ABSL_INTERNAL_CPLUSPLUS_LANG >= 201703L && \
571
+ !ABSL_INTERNAL_APPLE_CXX17_TYPES_UNAVAILABLE
603
572
  #define ABSL_HAVE_STD_OPTIONAL 1
604
573
  #endif
605
- #endif
606
574
 
607
575
  // ABSL_HAVE_STD_VARIANT
608
576
  //
609
577
  // Checks whether C++17 std::variant is available.
610
578
  #ifdef ABSL_HAVE_STD_VARIANT
611
579
  #error "ABSL_HAVE_STD_VARIANT cannot be directly set."
612
- #endif
613
-
614
- #ifdef __has_include
615
- #if __has_include(<variant>) && defined(__cplusplus) && \
616
- __cplusplus >= 201703L && !ABSL_INTERNAL_APPLE_CXX17_TYPES_UNAVAILABLE
580
+ #elif defined(ABSL_INTERNAL_CPLUSPLUS_LANG) && \
581
+ ABSL_INTERNAL_CPLUSPLUS_LANG >= 201703L && \
582
+ !ABSL_INTERNAL_APPLE_CXX17_TYPES_UNAVAILABLE
617
583
  #define ABSL_HAVE_STD_VARIANT 1
618
584
  #endif
619
- #endif
620
585
 
621
586
  // ABSL_HAVE_STD_STRING_VIEW
622
587
  //
623
588
  // Checks whether C++17 std::string_view is available.
624
589
  #ifdef ABSL_HAVE_STD_STRING_VIEW
625
590
  #error "ABSL_HAVE_STD_STRING_VIEW cannot be directly set."
626
- #endif
627
-
628
- #ifdef __has_include
629
- #if __has_include(<string_view>) && defined(__cplusplus) && \
630
- __cplusplus >= 201703L
631
- #define ABSL_HAVE_STD_STRING_VIEW 1
632
- #endif
633
- #endif
634
-
635
- // For MSVC, `__has_include` is supported in VS 2017 15.3, which is later than
636
- // the support for <optional>, <any>, <string_view>, <variant>. So we use
637
- // _MSC_VER to check whether we have VS 2017 RTM (when <optional>, <any>,
638
- // <string_view>, <variant> is implemented) or higher. Also, `__cplusplus` is
639
- // not correctly set by MSVC, so we use `_MSVC_LANG` to check the language
640
- // version.
641
- // TODO(zhangxy): fix tests before enabling aliasing for `std::any`.
642
- #if defined(_MSC_VER) && _MSC_VER >= 1910 && \
643
- ((defined(_MSVC_LANG) && _MSVC_LANG > 201402) || \
644
- (defined(__cplusplus) && __cplusplus > 201402))
645
- // #define ABSL_HAVE_STD_ANY 1
646
- #define ABSL_HAVE_STD_OPTIONAL 1
647
- #define ABSL_HAVE_STD_VARIANT 1
591
+ #elif defined(ABSL_INTERNAL_CPLUSPLUS_LANG) && \
592
+ ABSL_INTERNAL_CPLUSPLUS_LANG >= 201703L
648
593
  #define ABSL_HAVE_STD_STRING_VIEW 1
649
594
  #endif
650
595
 
@@ -816,6 +761,20 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
816
761
  #define ABSL_HAVE_HWADDRESS_SANITIZER 1
817
762
  #endif
818
763
 
764
+ // ABSL_HAVE_DATAFLOW_SANITIZER
765
+ //
766
+ // Dataflow Sanitizer (or DFSAN) is a generalised dynamic data flow analysis.
767
+ #ifdef ABSL_HAVE_DATAFLOW_SANITIZER
768
+ #error "ABSL_HAVE_DATAFLOW_SANITIZER cannot be directly set."
769
+ #elif defined(DATAFLOW_SANITIZER)
770
+ // GCC provides no method for detecting the presence of the standalone
771
+ // DataFlowSanitizer (-fsanitize=dataflow), so GCC users of -fsanitize=dataflow
772
+ // should also use -DDATAFLOW_SANITIZER.
773
+ #define ABSL_HAVE_DATAFLOW_SANITIZER 1
774
+ #elif ABSL_HAVE_FEATURE(dataflow_sanitizer)
775
+ #define ABSL_HAVE_DATAFLOW_SANITIZER 1
776
+ #endif
777
+
819
778
  // ABSL_HAVE_LEAK_SANITIZER
820
779
  //
821
780
  // LeakSanitizer (or lsan) is a detector of memory leaks.
@@ -830,7 +789,7 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
830
789
  #ifdef ABSL_HAVE_LEAK_SANITIZER
831
790
  #error "ABSL_HAVE_LEAK_SANITIZER cannot be directly set."
832
791
  #elif defined(LEAK_SANITIZER)
833
- // GCC provides no method for detecting the presense of the standalone
792
+ // GCC provides no method for detecting the presence of the standalone
834
793
  // LeakSanitizer (-fsanitize=leak), so GCC users of -fsanitize=leak should also
835
794
  // use -DLEAK_SANITIZER.
836
795
  #define ABSL_HAVE_LEAK_SANITIZER 1
@@ -878,7 +837,9 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
878
837
  // RTTI support.
879
838
  #ifdef ABSL_INTERNAL_HAS_RTTI
880
839
  #error ABSL_INTERNAL_HAS_RTTI cannot be directly set
881
- #elif !defined(__GNUC__) || defined(__GXX_RTTI)
840
+ #elif (defined(__GNUC__) && defined(__GXX_RTTI)) || \
841
+ (defined(_MSC_VER) && defined(_CPPRTTI)) || \
842
+ (!defined(__GNUC__) && !defined(_MSC_VER))
882
843
  #define ABSL_INTERNAL_HAS_RTTI 1
883
844
  #endif // !defined(__GNUC__) || defined(__GXX_RTTI)
884
845
 
@@ -889,7 +850,8 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
889
850
  #error ABSL_INTERNAL_HAVE_SSE cannot be directly set
890
851
  #elif defined(__SSE__)
891
852
  #define ABSL_INTERNAL_HAVE_SSE 1
892
- #elif defined(_M_X64) || (defined(_M_IX86_FP) && _M_IX86_FP >= 1)
853
+ #elif (defined(_M_X64) || (defined(_M_IX86_FP) && _M_IX86_FP >= 1)) && \
854
+ !defined(_M_ARM64EC)
893
855
  // MSVC only defines _M_IX86_FP for x86 32-bit code, and _M_IX86_FP >= 1
894
856
  // indicates that at least SSE was targeted with the /arch:SSE option.
895
857
  // All x86-64 processors support SSE, so support can be assumed.
@@ -904,7 +866,8 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
904
866
  #error ABSL_INTERNAL_HAVE_SSE2 cannot be directly set
905
867
  #elif defined(__SSE2__)
906
868
  #define ABSL_INTERNAL_HAVE_SSE2 1
907
- #elif defined(_M_X64) || (defined(_M_IX86_FP) && _M_IX86_FP >= 2)
869
+ #elif (defined(_M_X64) || (defined(_M_IX86_FP) && _M_IX86_FP >= 2)) && \
870
+ !defined(_M_ARM64EC)
908
871
  // MSVC only defines _M_IX86_FP for x86 32-bit code, and _M_IX86_FP >= 2
909
872
  // indicates that at least SSE2 was targeted with the /arch:SSE2 option.
910
873
  // All x86-64 processors support SSE2, so support can be assumed.
@@ -951,4 +914,24 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
951
914
  #define ABSL_HAVE_CONSTANT_EVALUATED 1
952
915
  #endif
953
916
 
917
+ // ABSL_INTERNAL_EMSCRIPTEN_VERSION combines Emscripten's three version macros
918
+ // into an integer that can be compared against.
919
+ #ifdef ABSL_INTERNAL_EMSCRIPTEN_VERSION
920
+ #error ABSL_INTERNAL_EMSCRIPTEN_VERSION cannot be directly set
921
+ #endif
922
+ #ifdef __EMSCRIPTEN__
923
+ #include <emscripten/version.h>
924
+ #ifdef __EMSCRIPTEN_major__
925
+ #if __EMSCRIPTEN_minor__ >= 1000
926
+ #error __EMSCRIPTEN_minor__ is too big to fit in ABSL_INTERNAL_EMSCRIPTEN_VERSION
927
+ #endif
928
+ #if __EMSCRIPTEN_tiny__ >= 1000
929
+ #error __EMSCRIPTEN_tiny__ is too big to fit in ABSL_INTERNAL_EMSCRIPTEN_VERSION
930
+ #endif
931
+ #define ABSL_INTERNAL_EMSCRIPTEN_VERSION \
932
+ ((__EMSCRIPTEN_major__)*1000000 + (__EMSCRIPTEN_minor__)*1000 + \
933
+ (__EMSCRIPTEN_tiny__))
934
+ #endif
935
+ #endif
936
+
954
937
  #endif // ABSL_BASE_CONFIG_H_
@@ -46,6 +46,7 @@
46
46
  #define ABSL_BASE_DYNAMIC_ANNOTATIONS_H_
47
47
 
48
48
  #include <stddef.h>
49
+ #include <stdint.h>
49
50
 
50
51
  #include "absl/base/attributes.h"
51
52
  #include "absl/base/config.h"
@@ -53,6 +54,10 @@
53
54
  #include "absl/base/macros.h"
54
55
  #endif
55
56
 
57
+ #ifdef ABSL_HAVE_HWADDRESS_SANITIZER
58
+ #include <sanitizer/hwasan_interface.h>
59
+ #endif
60
+
56
61
  // TODO(rogeeff): Remove after the backward compatibility period.
57
62
  #include "absl/base/internal/dynamic_annotations.h" // IWYU pragma: export
58
63
 
@@ -111,7 +116,7 @@
111
116
 
112
117
  #if ABSL_INTERNAL_RACE_ANNOTATIONS_ENABLED == 1
113
118
  // Some of the symbols used in this section (e.g. AnnotateBenignRaceSized) are
114
- // defined by the compiler-based santizer implementation, not by the Abseil
119
+ // defined by the compiler-based sanitizer implementation, not by the Abseil
115
120
  // library. Therefore they do not use ABSL_INTERNAL_C_SYMBOL.
116
121
 
117
122
  // -------------------------------------------------------------
@@ -456,6 +461,26 @@ ABSL_NAMESPACE_END
456
461
 
457
462
  #endif // ABSL_HAVE_ADDRESS_SANITIZER
458
463
 
464
+ // -------------------------------------------------------------------------
465
+ // HWAddress sanitizer annotations
466
+
467
+ #ifdef __cplusplus
468
+ namespace absl {
469
+ #ifdef ABSL_HAVE_HWADDRESS_SANITIZER
470
+ // Under HWASAN changes the tag of the pointer.
471
+ template <typename T>
472
+ T* HwasanTagPointer(T* ptr, uintptr_t tag) {
473
+ return reinterpret_cast<T*>(__hwasan_tag_pointer(ptr, tag));
474
+ }
475
+ #else
476
+ template <typename T>
477
+ T* HwasanTagPointer(T* ptr, uintptr_t) {
478
+ return ptr;
479
+ }
480
+ #endif
481
+ } // namespace absl
482
+ #endif
483
+
459
484
  // -------------------------------------------------------------------------
460
485
  // Undefine the macros intended only for this file.
461
486
 
@@ -72,7 +72,7 @@ namespace base_internal {
72
72
  // Platform specific logic extracted from
73
73
  // https://chromium.googlesource.com/linux-syscall-support/+/master/linux_syscall_support.h
74
74
  inline void* DirectMmap(void* start, size_t length, int prot, int flags, int fd,
75
- off64_t offset) noexcept {
75
+ off_t offset) noexcept {
76
76
  #if defined(__i386__) || defined(__ARM_ARCH_3__) || defined(__ARM_EABI__) || \
77
77
  defined(__m68k__) || defined(__sh__) || \
78
78
  (defined(__hppa__) && !defined(__LP64__)) || \
@@ -102,7 +102,7 @@ inline void* DirectMmap(void* start, size_t length, int prot, int flags, int fd,
102
102
  #else
103
103
  return reinterpret_cast<void*>(
104
104
  syscall(SYS_mmap2, start, length, prot, flags, fd,
105
- static_cast<off_t>(offset / pagesize)));
105
+ static_cast<unsigned long>(offset / pagesize))); // NOLINT
106
106
  #endif
107
107
  #elif defined(__s390x__)
108
108
  // On s390x, mmap() arguments are passed in memory.
@@ -42,25 +42,25 @@
42
42
  #include <windows.h>
43
43
  #endif
44
44
 
45
+ #ifdef __linux__
46
+ #include <sys/prctl.h>
47
+ #endif
48
+
45
49
  #include <string.h>
50
+
46
51
  #include <algorithm>
47
52
  #include <atomic>
48
53
  #include <cerrno>
49
54
  #include <cstddef>
50
- #include <new> // for placement-new
55
+ #include <new> // for placement-new
51
56
 
52
57
  #include "absl/base/dynamic_annotations.h"
53
58
  #include "absl/base/internal/raw_logging.h"
54
59
  #include "absl/base/internal/spinlock.h"
55
60
 
56
- // MAP_ANONYMOUS
57
- #if defined(__APPLE__)
58
- // For mmap, Linux defines both MAP_ANONYMOUS and MAP_ANON and says MAP_ANON is
59
- // deprecated. In Darwin, MAP_ANON is all there is.
60
- #if !defined MAP_ANONYMOUS
61
+ #if defined(MAP_ANON) && !defined(MAP_ANONYMOUS)
61
62
  #define MAP_ANONYMOUS MAP_ANON
62
- #endif // !MAP_ANONYMOUS
63
- #endif // __APPLE__
63
+ #endif
64
64
 
65
65
  namespace absl {
66
66
  ABSL_NAMESPACE_BEGIN
@@ -122,7 +122,7 @@ static int IntLog2(size_t size, size_t base) {
122
122
  static int Random(uint32_t *state) {
123
123
  uint32_t r = *state;
124
124
  int result = 1;
125
- while ((((r = r*1103515245 + 12345) >> 30) & 1) == 0) {
125
+ while ((((r = r * 1103515245 + 12345) >> 30) & 1) == 0) {
126
126
  result++;
127
127
  }
128
128
  *state = r;
@@ -144,7 +144,7 @@ static int LLA_SkiplistLevels(size_t size, size_t base, uint32_t *random) {
144
144
  size_t max_fit = (size - offsetof(AllocList, next)) / sizeof(AllocList *);
145
145
  int level = IntLog2(size, base) + (random != nullptr ? Random(random) : 1);
146
146
  if (static_cast<size_t>(level) > max_fit) level = static_cast<int>(max_fit);
147
- if (level > kMaxLevel-1) level = kMaxLevel - 1;
147
+ if (level > kMaxLevel - 1) level = kMaxLevel - 1;
148
148
  ABSL_RAW_CHECK(level >= 1, "block not big enough for even one level");
149
149
  return level;
150
150
  }
@@ -153,8 +153,8 @@ static int LLA_SkiplistLevels(size_t size, size_t base, uint32_t *random) {
153
153
  // For 0 <= i < head->levels, set prev[i] to "no_greater", where no_greater
154
154
  // points to the last element at level i in the AllocList less than *e, or is
155
155
  // head if no such element exists.
156
- static AllocList *LLA_SkiplistSearch(AllocList *head,
157
- AllocList *e, AllocList **prev) {
156
+ static AllocList *LLA_SkiplistSearch(AllocList *head, AllocList *e,
157
+ AllocList **prev) {
158
158
  AllocList *p = head;
159
159
  for (int level = head->levels - 1; level >= 0; level--) {
160
160
  for (AllocList *n; (n = p->next[level]) != nullptr && n < e; p = n) {
@@ -190,7 +190,7 @@ static void LLA_SkiplistDelete(AllocList *head, AllocList *e,
190
190
  prev[i]->next[i] = e->next[i];
191
191
  }
192
192
  while (head->levels > 0 && head->next[head->levels - 1] == nullptr) {
193
- head->levels--; // reduce head->levels if level unused
193
+ head->levels--; // reduce head->levels if level unused
194
194
  }
195
195
  }
196
196
 
@@ -249,9 +249,9 @@ void CreateGlobalArenas() {
249
249
 
250
250
  // Returns a global arena that does not call into hooks. Used by NewArena()
251
251
  // when kCallMallocHook is not set.
252
- LowLevelAlloc::Arena* UnhookedArena() {
252
+ LowLevelAlloc::Arena *UnhookedArena() {
253
253
  base_internal::LowLevelCallOnce(&create_globals_once, CreateGlobalArenas);
254
- return reinterpret_cast<LowLevelAlloc::Arena*>(&unhooked_arena_storage);
254
+ return reinterpret_cast<LowLevelAlloc::Arena *>(&unhooked_arena_storage);
255
255
  }
256
256
 
257
257
  #ifndef ABSL_LOW_LEVEL_ALLOC_ASYNC_SIGNAL_SAFE_MISSING
@@ -269,7 +269,7 @@ LowLevelAlloc::Arena *UnhookedAsyncSigSafeArena() {
269
269
  // Returns the default arena, as used by LowLevelAlloc::Alloc() and friends.
270
270
  LowLevelAlloc::Arena *LowLevelAlloc::DefaultArena() {
271
271
  base_internal::LowLevelCallOnce(&create_globals_once, CreateGlobalArenas);
272
- return reinterpret_cast<LowLevelAlloc::Arena*>(&default_arena_storage);
272
+ return reinterpret_cast<LowLevelAlloc::Arena *>(&default_arena_storage);
273
273
  }
274
274
 
275
275
  // magic numbers to identify allocated and unallocated blocks
@@ -356,8 +356,7 @@ LowLevelAlloc::Arena::Arena(uint32_t flags_value)
356
356
  min_size(2 * round_up),
357
357
  random(0) {
358
358
  freelist.header.size = 0;
359
- freelist.header.magic =
360
- Magic(kMagicUnallocated, &freelist.header);
359
+ freelist.header.magic = Magic(kMagicUnallocated, &freelist.header);
361
360
  freelist.header.arena = this;
362
361
  freelist.levels = 0;
363
362
  memset(freelist.next, 0, sizeof(freelist.next));
@@ -375,7 +374,7 @@ LowLevelAlloc::Arena *LowLevelAlloc::NewArena(uint32_t flags) {
375
374
  meta_data_arena = UnhookedArena();
376
375
  }
377
376
  Arena *result =
378
- new (AllocWithArena(sizeof (*result), meta_data_arena)) Arena(flags);
377
+ new (AllocWithArena(sizeof(*result), meta_data_arena)) Arena(flags);
379
378
  return result;
380
379
  }
381
380
 
@@ -480,8 +479,8 @@ static void Coalesce(AllocList *a) {
480
479
  AllocList *prev[kMaxLevel];
481
480
  LLA_SkiplistDelete(&arena->freelist, n, prev);
482
481
  LLA_SkiplistDelete(&arena->freelist, a, prev);
483
- a->levels = LLA_SkiplistLevels(a->header.size, arena->min_size,
484
- &arena->random);
482
+ a->levels =
483
+ LLA_SkiplistLevels(a->header.size, arena->min_size, &arena->random);
485
484
  LLA_SkiplistInsert(&arena->freelist, a, prev);
486
485
  }
487
486
  }
@@ -489,27 +488,27 @@ static void Coalesce(AllocList *a) {
489
488
  // Adds block at location "v" to the free list
490
489
  // L >= arena->mu
491
490
  static void AddToFreelist(void *v, LowLevelAlloc::Arena *arena) {
492
- AllocList *f = reinterpret_cast<AllocList *>(
493
- reinterpret_cast<char *>(v) - sizeof (f->header));
491
+ AllocList *f = reinterpret_cast<AllocList *>(reinterpret_cast<char *>(v) -
492
+ sizeof(f->header));
494
493
  ABSL_RAW_CHECK(f->header.magic == Magic(kMagicAllocated, &f->header),
495
494
  "bad magic number in AddToFreelist()");
496
495
  ABSL_RAW_CHECK(f->header.arena == arena,
497
496
  "bad arena pointer in AddToFreelist()");
498
- f->levels = LLA_SkiplistLevels(f->header.size, arena->min_size,
499
- &arena->random);
497
+ f->levels =
498
+ LLA_SkiplistLevels(f->header.size, arena->min_size, &arena->random);
500
499
  AllocList *prev[kMaxLevel];
501
500
  LLA_SkiplistInsert(&arena->freelist, f, prev);
502
501
  f->header.magic = Magic(kMagicUnallocated, &f->header);
503
- Coalesce(f); // maybe coalesce with successor
504
- Coalesce(prev[0]); // maybe coalesce with predecessor
502
+ Coalesce(f); // maybe coalesce with successor
503
+ Coalesce(prev[0]); // maybe coalesce with predecessor
505
504
  }
506
505
 
507
506
  // Frees storage allocated by LowLevelAlloc::Alloc().
508
507
  // L < arena->mu
509
508
  void LowLevelAlloc::Free(void *v) {
510
509
  if (v != nullptr) {
511
- AllocList *f = reinterpret_cast<AllocList *>(
512
- reinterpret_cast<char *>(v) - sizeof (f->header));
510
+ AllocList *f = reinterpret_cast<AllocList *>(reinterpret_cast<char *>(v) -
511
+ sizeof(f->header));
513
512
  LowLevelAlloc::Arena *arena = f->header.arena;
514
513
  ArenaLock section(arena);
515
514
  AddToFreelist(v, arena);
@@ -524,21 +523,21 @@ void LowLevelAlloc::Free(void *v) {
524
523
  static void *DoAllocWithArena(size_t request, LowLevelAlloc::Arena *arena) {
525
524
  void *result = nullptr;
526
525
  if (request != 0) {
527
- AllocList *s; // will point to region that satisfies request
526
+ AllocList *s; // will point to region that satisfies request
528
527
  ArenaLock section(arena);
529
528
  // round up with header
530
- size_t req_rnd = RoundUp(CheckedAdd(request, sizeof (s->header)),
531
- arena->round_up);
532
- for (;;) { // loop until we find a suitable region
529
+ size_t req_rnd =
530
+ RoundUp(CheckedAdd(request, sizeof(s->header)), arena->round_up);
531
+ for (;;) { // loop until we find a suitable region
533
532
  // find the minimum levels that a block of this size must have
534
533
  int i = LLA_SkiplistLevels(req_rnd, arena->min_size, nullptr) - 1;
535
- if (i < arena->freelist.levels) { // potential blocks exist
534
+ if (i < arena->freelist.levels) { // potential blocks exist
536
535
  AllocList *before = &arena->freelist; // predecessor of s
537
536
  while ((s = Next(i, before, arena)) != nullptr &&
538
537
  s->header.size < req_rnd) {
539
538
  before = s;
540
539
  }
541
- if (s != nullptr) { // we found a region
540
+ if (s != nullptr) { // we found a region
542
541
  break;
543
542
  }
544
543
  }
@@ -550,7 +549,7 @@ static void *DoAllocWithArena(size_t request, LowLevelAlloc::Arena *arena) {
550
549
  size_t new_pages_size = RoundUp(req_rnd, arena->pagesize * 16);
551
550
  void *new_pages;
552
551
  #ifdef _WIN32
553
- new_pages = VirtualAlloc(0, new_pages_size,
552
+ new_pages = VirtualAlloc(nullptr, new_pages_size,
554
553
  MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);
555
554
  ABSL_RAW_CHECK(new_pages != nullptr, "VirtualAlloc failed");
556
555
  #else
@@ -570,6 +569,18 @@ static void *DoAllocWithArena(size_t request, LowLevelAlloc::Arena *arena) {
570
569
  ABSL_RAW_LOG(FATAL, "mmap error: %d", errno);
571
570
  }
572
571
 
572
+ #ifdef __linux__
573
+ #if defined(PR_SET_VMA) && defined(PR_SET_VMA_ANON_NAME)
574
+ // Attempt to name the allocated address range in /proc/$PID/smaps on
575
+ // Linux.
576
+ //
577
+ // This invocation of prctl() may fail if the Linux kernel was not
578
+ // configured with the CONFIG_ANON_VMA_NAME option. This is OK since
579
+ // the naming of arenas is primarily a debugging aid.
580
+ prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, new_pages, new_pages_size,
581
+ "absl");
582
+ #endif
583
+ #endif // __linux__
573
584
  #endif // _WIN32
574
585
  arena->mu.Lock();
575
586
  s = reinterpret_cast<AllocList *>(new_pages);
@@ -580,12 +591,12 @@ static void *DoAllocWithArena(size_t request, LowLevelAlloc::Arena *arena) {
580
591
  AddToFreelist(&s->levels, arena); // insert new region into free list
581
592
  }
582
593
  AllocList *prev[kMaxLevel];
583
- LLA_SkiplistDelete(&arena->freelist, s, prev); // remove from free list
594
+ LLA_SkiplistDelete(&arena->freelist, s, prev); // remove from free list
584
595
  // s points to the first free region that's big enough
585
596
  if (CheckedAdd(req_rnd, arena->min_size) <= s->header.size) {
586
597
  // big enough to split
587
- AllocList *n = reinterpret_cast<AllocList *>
588
- (req_rnd + reinterpret_cast<char *>(s));
598
+ AllocList *n =
599
+ reinterpret_cast<AllocList *>(req_rnd + reinterpret_cast<char *>(s));
589
600
  n->header.size = s->header.size - req_rnd;
590
601
  n->header.magic = Magic(kMagicAllocated, &n->header);
591
602
  n->header.arena = arena;
@@ -46,7 +46,8 @@
46
46
  // for more information.
47
47
  #ifdef ABSL_LOW_LEVEL_ALLOC_ASYNC_SIGNAL_SAFE_MISSING
48
48
  #error ABSL_LOW_LEVEL_ALLOC_ASYNC_SIGNAL_SAFE_MISSING cannot be directly set
49
- #elif defined(_WIN32) || defined(__asmjs__) || defined(__wasm__)
49
+ #elif defined(_WIN32) || defined(__asmjs__) || defined(__wasm__) || \
50
+ defined(__hexagon__)
50
51
  #define ABSL_LOW_LEVEL_ALLOC_ASYNC_SIGNAL_SAFE_MISSING 1
51
52
  #endif
52
53